You've already forked joplin
mirror of
https://github.com/laurent22/joplin.git
synced 2025-08-27 20:29:45 +02:00
Compare commits
111 Commits
android-v1
...
android-v1
Author | SHA1 | Date | |
---|---|---|---|
|
3fdcd3aaa6 | ||
|
0629cb394c | ||
|
f58b7563e6 | ||
|
d434723244 | ||
|
fca8f71f4a | ||
|
023170548f | ||
|
d75adc3740 | ||
|
0bf3531f51 | ||
|
c9f40ea23f | ||
|
c8755839be | ||
|
c3e696db5a | ||
|
a0134005b7 | ||
|
b66d90bbcc | ||
|
41edf5b2da | ||
|
c484c88715 | ||
|
4a0fb124a7 | ||
|
ebbaa5177b | ||
|
5d1dc224ca | ||
|
3626714403 | ||
|
3884ada760 | ||
|
16788d1437 | ||
|
b1908756d4 | ||
|
ccf5271584 | ||
|
df3e6a6219 | ||
|
f43ec71d9a | ||
|
32dab88054 | ||
|
1b5868a7c5 | ||
|
72712e71eb | ||
|
ec29f791ba | ||
|
40c2e59394 | ||
|
98cbb237b5 | ||
|
826dda5a75 | ||
|
6dc5a816e5 | ||
|
1700b29f7d | ||
|
7a6966405c | ||
|
9cb576889f | ||
|
047846a552 | ||
|
99fb578db4 | ||
|
7114228fd6 | ||
|
8d4d438136 | ||
|
420ac8359c | ||
|
fe7691d786 | ||
|
db4f35b936 | ||
|
72aabf71f3 | ||
|
d145ce1876 | ||
|
ab6f02a949 | ||
|
1339414443 | ||
|
732ca53b70 | ||
|
fa749d6d2a | ||
|
6e69343bb6 | ||
|
520454affb | ||
|
734514b6d8 | ||
|
ceb252b9ad | ||
|
f121245e40 | ||
|
215a1e0240 | ||
|
8ed36d7a29 | ||
|
2b33df2955 | ||
|
5c283e4508 | ||
|
c94ee5d99a | ||
|
4a258a2427 | ||
|
330ef6f7e6 | ||
|
4a579393f3 | ||
|
1091795a3a | ||
|
b5fc206202 | ||
|
794fb6a122 | ||
|
ec7cccf573 | ||
|
e94a1cac1c | ||
|
76ff0b9c11 | ||
|
fb01c64133 | ||
|
1dbeff1908 | ||
|
4f2d316db4 | ||
|
4851fd1ab3 | ||
|
ac8ddb1166 | ||
|
b61150457c | ||
|
3e948146cd | ||
|
8492a7ee26 | ||
|
0e57baf5b9 | ||
|
05f65c326a | ||
|
491714cde6 | ||
|
34c1096307 | ||
|
ebe3ddcd21 | ||
|
ca5ac9696b | ||
|
fdfbb84d37 | ||
|
740aba90ea | ||
|
eab9ff175c | ||
|
5b295d5f6f | ||
|
0be8cdf760 | ||
|
545940f545 | ||
|
d58f39823a | ||
|
f9fb1b8a81 | ||
|
56ded0062a | ||
|
83b29d7c51 | ||
|
1ec0746263 | ||
|
568d11bddf | ||
|
97b25ac99d | ||
|
7f1d3d8a5d | ||
|
fde201fbe9 | ||
|
694a1b4ede | ||
|
20d126b39d | ||
|
8ca9c3092a | ||
|
d2771029a3 | ||
|
4128c53fcf | ||
|
a14410b28c | ||
|
d1f8520e6e | ||
|
d76746b8e4 | ||
|
89d173b460 | ||
|
81aba8b8b0 | ||
|
9e076bf194 | ||
|
74a797b410 | ||
|
f48697572d | ||
|
e61e8b7b94 |
@@ -110,6 +110,9 @@ packages/app-cli/tests/models_Note.js.map
|
||||
packages/app-cli/tests/models_Setting.d.ts
|
||||
packages/app-cli/tests/models_Setting.js
|
||||
packages/app-cli/tests/models_Setting.js.map
|
||||
packages/app-cli/tests/services/plugins/api/JoplinSettings.d.ts
|
||||
packages/app-cli/tests/services/plugins/api/JoplinSettings.js
|
||||
packages/app-cli/tests/services/plugins/api/JoplinSettings.js.map
|
||||
packages/app-cli/tests/services/plugins/api/JoplinViewMenuItem.d.ts
|
||||
packages/app-cli/tests/services/plugins/api/JoplinViewMenuItem.js
|
||||
packages/app-cli/tests/services/plugins/api/JoplinViewMenuItem.js.map
|
||||
@@ -155,6 +158,9 @@ packages/app-cli/tests/support/plugins/content_script/api/types.js.map
|
||||
packages/app-cli/tests/support/plugins/content_script/src/index.d.ts
|
||||
packages/app-cli/tests/support/plugins/content_script/src/index.js
|
||||
packages/app-cli/tests/support/plugins/content_script/src/index.js.map
|
||||
packages/app-cli/tests/support/plugins/content_script/src/markdownItTestPlugin.d.ts
|
||||
packages/app-cli/tests/support/plugins/content_script/src/markdownItTestPlugin.js
|
||||
packages/app-cli/tests/support/plugins/content_script/src/markdownItTestPlugin.js.map
|
||||
packages/app-cli/tests/support/plugins/dialog/api/index.d.ts
|
||||
packages/app-cli/tests/support/plugins/dialog/api/index.js
|
||||
packages/app-cli/tests/support/plugins/dialog/api/index.js.map
|
||||
@@ -323,9 +329,18 @@ packages/app-desktop/gui/ConfigScreen/ConfigScreen.js.map
|
||||
packages/app-desktop/gui/ConfigScreen/SideBar.d.ts
|
||||
packages/app-desktop/gui/ConfigScreen/SideBar.js
|
||||
packages/app-desktop/gui/ConfigScreen/SideBar.js.map
|
||||
packages/app-desktop/gui/ConfigScreen/controls/PluginsStates.d.ts
|
||||
packages/app-desktop/gui/ConfigScreen/controls/PluginsStates.js
|
||||
packages/app-desktop/gui/ConfigScreen/controls/PluginsStates.js.map
|
||||
packages/app-desktop/gui/ConfigScreen/controls/plugins/PluginBox.d.ts
|
||||
packages/app-desktop/gui/ConfigScreen/controls/plugins/PluginBox.js
|
||||
packages/app-desktop/gui/ConfigScreen/controls/plugins/PluginBox.js.map
|
||||
packages/app-desktop/gui/ConfigScreen/controls/plugins/PluginsStates.d.ts
|
||||
packages/app-desktop/gui/ConfigScreen/controls/plugins/PluginsStates.js
|
||||
packages/app-desktop/gui/ConfigScreen/controls/plugins/PluginsStates.js.map
|
||||
packages/app-desktop/gui/ConfigScreen/controls/plugins/SearchPlugins.d.ts
|
||||
packages/app-desktop/gui/ConfigScreen/controls/plugins/SearchPlugins.js
|
||||
packages/app-desktop/gui/ConfigScreen/controls/plugins/SearchPlugins.js.map
|
||||
packages/app-desktop/gui/ConfigScreen/controls/plugins/useOnInstallHandler.d.ts
|
||||
packages/app-desktop/gui/ConfigScreen/controls/plugins/useOnInstallHandler.js
|
||||
packages/app-desktop/gui/ConfigScreen/controls/plugins/useOnInstallHandler.js.map
|
||||
packages/app-desktop/gui/DropboxLoginScreen.d.ts
|
||||
packages/app-desktop/gui/DropboxLoginScreen.js
|
||||
packages/app-desktop/gui/DropboxLoginScreen.js.map
|
||||
@@ -653,9 +668,6 @@ packages/app-desktop/gui/Root_UpgradeSyncTarget.js.map
|
||||
packages/app-desktop/gui/SearchBar/SearchBar.d.ts
|
||||
packages/app-desktop/gui/SearchBar/SearchBar.js
|
||||
packages/app-desktop/gui/SearchBar/SearchBar.js.map
|
||||
packages/app-desktop/gui/SearchBar/styles/index.d.ts
|
||||
packages/app-desktop/gui/SearchBar/styles/index.js
|
||||
packages/app-desktop/gui/SearchBar/styles/index.js.map
|
||||
packages/app-desktop/gui/ShareNoteDialog.d.ts
|
||||
packages/app-desktop/gui/ShareNoteDialog.js
|
||||
packages/app-desktop/gui/ShareNoteDialog.js.map
|
||||
@@ -704,6 +716,9 @@ packages/app-desktop/gui/hooks/usePrevious.js.map
|
||||
packages/app-desktop/gui/hooks/usePropsDebugger.d.ts
|
||||
packages/app-desktop/gui/hooks/usePropsDebugger.js
|
||||
packages/app-desktop/gui/hooks/usePropsDebugger.js.map
|
||||
packages/app-desktop/gui/lib/SearchInput/SearchInput.d.ts
|
||||
packages/app-desktop/gui/lib/SearchInput/SearchInput.js
|
||||
packages/app-desktop/gui/lib/SearchInput/SearchInput.js.map
|
||||
packages/app-desktop/gui/lib/ToggleButton/ToggleButton.d.ts
|
||||
packages/app-desktop/gui/lib/ToggleButton/ToggleButton.js
|
||||
packages/app-desktop/gui/lib/ToggleButton/ToggleButton.js.map
|
||||
@@ -803,6 +818,9 @@ packages/app-mobile/components/screens/Note.js.map
|
||||
packages/app-mobile/components/screens/UpgradeSyncTargetScreen.d.ts
|
||||
packages/app-mobile/components/screens/UpgradeSyncTargetScreen.js
|
||||
packages/app-mobile/components/screens/UpgradeSyncTargetScreen.js.map
|
||||
packages/app-mobile/root.d.ts
|
||||
packages/app-mobile/root.js
|
||||
packages/app-mobile/root.js.map
|
||||
packages/app-mobile/services/AlarmServiceDriver.android.d.ts
|
||||
packages/app-mobile/services/AlarmServiceDriver.android.js
|
||||
packages/app-mobile/services/AlarmServiceDriver.android.js.map
|
||||
@@ -1115,6 +1133,9 @@ packages/lib/services/plugins/Plugin.js.map
|
||||
packages/lib/services/plugins/PluginService.d.ts
|
||||
packages/lib/services/plugins/PluginService.js
|
||||
packages/lib/services/plugins/PluginService.js.map
|
||||
packages/lib/services/plugins/RepositoryApi.d.ts
|
||||
packages/lib/services/plugins/RepositoryApi.js
|
||||
packages/lib/services/plugins/RepositoryApi.js.map
|
||||
packages/lib/services/plugins/ToolbarButtonController.d.ts
|
||||
packages/lib/services/plugins/ToolbarButtonController.js
|
||||
packages/lib/services/plugins/ToolbarButtonController.js.map
|
||||
@@ -1199,6 +1220,12 @@ packages/lib/services/plugins/utils/mapEventHandlersToIds.js.map
|
||||
packages/lib/services/plugins/utils/types.d.ts
|
||||
packages/lib/services/plugins/utils/types.js
|
||||
packages/lib/services/plugins/utils/types.js.map
|
||||
packages/lib/services/plugins/utils/validatePluginId.d.ts
|
||||
packages/lib/services/plugins/utils/validatePluginId.js
|
||||
packages/lib/services/plugins/utils/validatePluginId.js.map
|
||||
packages/lib/services/plugins/utils/validatePluginId.test.d.ts
|
||||
packages/lib/services/plugins/utils/validatePluginId.test.js
|
||||
packages/lib/services/plugins/utils/validatePluginId.test.js.map
|
||||
packages/lib/services/rest/Api.d.ts
|
||||
packages/lib/services/rest/Api.js
|
||||
packages/lib/services/rest/Api.js.map
|
||||
@@ -1328,6 +1355,15 @@ packages/lib/uuid.js.map
|
||||
packages/lib/versionInfo.d.ts
|
||||
packages/lib/versionInfo.js
|
||||
packages/lib/versionInfo.js.map
|
||||
packages/plugins/ToggleSideBars/api/index.d.ts
|
||||
packages/plugins/ToggleSideBars/api/index.js
|
||||
packages/plugins/ToggleSideBars/api/index.js.map
|
||||
packages/plugins/ToggleSideBars/api/types.d.ts
|
||||
packages/plugins/ToggleSideBars/api/types.js
|
||||
packages/plugins/ToggleSideBars/api/types.js.map
|
||||
packages/plugins/ToggleSideBars/src/index.d.ts
|
||||
packages/plugins/ToggleSideBars/src/index.js
|
||||
packages/plugins/ToggleSideBars/src/index.js.map
|
||||
packages/renderer/HtmlToHtml.d.ts
|
||||
packages/renderer/HtmlToHtml.js
|
||||
packages/renderer/HtmlToHtml.js.map
|
||||
@@ -1385,6 +1421,12 @@ packages/renderer/MdToHtml/rules/mermaid.js.map
|
||||
packages/renderer/MdToHtml/rules/sanitize_html.d.ts
|
||||
packages/renderer/MdToHtml/rules/sanitize_html.js
|
||||
packages/renderer/MdToHtml/rules/sanitize_html.js.map
|
||||
packages/renderer/MdToHtml/setupLinkify.d.ts
|
||||
packages/renderer/MdToHtml/setupLinkify.js
|
||||
packages/renderer/MdToHtml/setupLinkify.js.map
|
||||
packages/renderer/MdToHtml/validateLinks.d.ts
|
||||
packages/renderer/MdToHtml/validateLinks.js
|
||||
packages/renderer/MdToHtml/validateLinks.js.map
|
||||
packages/renderer/htmlUtils.d.ts
|
||||
packages/renderer/htmlUtils.js
|
||||
packages/renderer/htmlUtils.js.map
|
||||
@@ -1457,6 +1499,9 @@ packages/server/src/controllers/index/HomeController.js.map
|
||||
packages/server/src/controllers/index/LoginController.d.ts
|
||||
packages/server/src/controllers/index/LoginController.js
|
||||
packages/server/src/controllers/index/LoginController.js.map
|
||||
packages/server/src/controllers/index/NotificationController.d.ts
|
||||
packages/server/src/controllers/index/NotificationController.js
|
||||
packages/server/src/controllers/index/NotificationController.js.map
|
||||
packages/server/src/controllers/index/ProfileController.d.ts
|
||||
packages/server/src/controllers/index/ProfileController.js
|
||||
packages/server/src/controllers/index/ProfileController.js.map
|
||||
@@ -1466,9 +1511,21 @@ packages/server/src/controllers/index/UserController.js.map
|
||||
packages/server/src/db.d.ts
|
||||
packages/server/src/db.js
|
||||
packages/server/src/db.js.map
|
||||
packages/server/src/middleware/notificationHandler.d.ts
|
||||
packages/server/src/middleware/notificationHandler.js
|
||||
packages/server/src/middleware/notificationHandler.js.map
|
||||
packages/server/src/middleware/ownerHandler.d.ts
|
||||
packages/server/src/middleware/ownerHandler.js
|
||||
packages/server/src/middleware/ownerHandler.js.map
|
||||
packages/server/src/middleware/routeHandler.d.ts
|
||||
packages/server/src/middleware/routeHandler.js
|
||||
packages/server/src/middleware/routeHandler.js.map
|
||||
packages/server/src/migrations/20190913171451_create.d.ts
|
||||
packages/server/src/migrations/20190913171451_create.js
|
||||
packages/server/src/migrations/20190913171451_create.js.map
|
||||
packages/server/src/migrations/20203012152842_notifications.d.ts
|
||||
packages/server/src/migrations/20203012152842_notifications.js
|
||||
packages/server/src/migrations/20203012152842_notifications.js.map
|
||||
packages/server/src/models/ApiClientModel.d.ts
|
||||
packages/server/src/models/ApiClientModel.js
|
||||
packages/server/src/models/ApiClientModel.js.map
|
||||
@@ -1487,6 +1544,12 @@ packages/server/src/models/FileModel.js.map
|
||||
packages/server/src/models/FileModel.test.d.ts
|
||||
packages/server/src/models/FileModel.test.js
|
||||
packages/server/src/models/FileModel.test.js.map
|
||||
packages/server/src/models/NotificationModel.d.ts
|
||||
packages/server/src/models/NotificationModel.js
|
||||
packages/server/src/models/NotificationModel.js.map
|
||||
packages/server/src/models/NotificationModel.test.d.ts
|
||||
packages/server/src/models/NotificationModel.test.js
|
||||
packages/server/src/models/NotificationModel.test.js.map
|
||||
packages/server/src/models/PermissionModel.d.ts
|
||||
packages/server/src/models/PermissionModel.js
|
||||
packages/server/src/models/PermissionModel.js.map
|
||||
@@ -1532,6 +1595,9 @@ packages/server/src/routes/index/login.js.map
|
||||
packages/server/src/routes/index/logout.d.ts
|
||||
packages/server/src/routes/index/logout.js
|
||||
packages/server/src/routes/index/logout.js.map
|
||||
packages/server/src/routes/index/notifications.d.ts
|
||||
packages/server/src/routes/index/notifications.js
|
||||
packages/server/src/routes/index/notifications.js.map
|
||||
packages/server/src/routes/index/profile.d.ts
|
||||
packages/server/src/routes/index/profile.js
|
||||
packages/server/src/routes/index/profile.js.map
|
||||
@@ -1610,4 +1676,10 @@ packages/server/src/utils/urlUtils.js.map
|
||||
packages/server/src/utils/uuidgen.d.ts
|
||||
packages/server/src/utils/uuidgen.js
|
||||
packages/server/src/utils/uuidgen.js.map
|
||||
packages/tools/build-plugin-repository.d.ts
|
||||
packages/tools/build-plugin-repository.js
|
||||
packages/tools/build-plugin-repository.js.map
|
||||
packages/tools/release-server.d.ts
|
||||
packages/tools/release-server.js
|
||||
packages/tools/release-server.js.map
|
||||
# AUTO-GENERATED - EXCLUDED TYPESCRIPT BUILD
|
||||
|
@@ -65,7 +65,12 @@ module.exports = {
|
||||
'no-var': ['error'],
|
||||
'no-new-func': ['error'],
|
||||
'import/prefer-default-export': ['error'],
|
||||
'import/first': ['error'],
|
||||
|
||||
// This rule should not be enabled since it matters in what order
|
||||
// imports are done, in particular in relation to the shim.setReact
|
||||
// call, which should be done first, but this rule might move it down.
|
||||
// 'import/first': ['error'],
|
||||
|
||||
'no-array-constructor': ['error'],
|
||||
'radix': ['error'],
|
||||
|
||||
|
84
.gitignore
vendored
84
.gitignore
vendored
@@ -99,6 +99,9 @@ packages/app-cli/tests/models_Note.js.map
|
||||
packages/app-cli/tests/models_Setting.d.ts
|
||||
packages/app-cli/tests/models_Setting.js
|
||||
packages/app-cli/tests/models_Setting.js.map
|
||||
packages/app-cli/tests/services/plugins/api/JoplinSettings.d.ts
|
||||
packages/app-cli/tests/services/plugins/api/JoplinSettings.js
|
||||
packages/app-cli/tests/services/plugins/api/JoplinSettings.js.map
|
||||
packages/app-cli/tests/services/plugins/api/JoplinViewMenuItem.d.ts
|
||||
packages/app-cli/tests/services/plugins/api/JoplinViewMenuItem.js
|
||||
packages/app-cli/tests/services/plugins/api/JoplinViewMenuItem.js.map
|
||||
@@ -144,6 +147,9 @@ packages/app-cli/tests/support/plugins/content_script/api/types.js.map
|
||||
packages/app-cli/tests/support/plugins/content_script/src/index.d.ts
|
||||
packages/app-cli/tests/support/plugins/content_script/src/index.js
|
||||
packages/app-cli/tests/support/plugins/content_script/src/index.js.map
|
||||
packages/app-cli/tests/support/plugins/content_script/src/markdownItTestPlugin.d.ts
|
||||
packages/app-cli/tests/support/plugins/content_script/src/markdownItTestPlugin.js
|
||||
packages/app-cli/tests/support/plugins/content_script/src/markdownItTestPlugin.js.map
|
||||
packages/app-cli/tests/support/plugins/dialog/api/index.d.ts
|
||||
packages/app-cli/tests/support/plugins/dialog/api/index.js
|
||||
packages/app-cli/tests/support/plugins/dialog/api/index.js.map
|
||||
@@ -312,9 +318,18 @@ packages/app-desktop/gui/ConfigScreen/ConfigScreen.js.map
|
||||
packages/app-desktop/gui/ConfigScreen/SideBar.d.ts
|
||||
packages/app-desktop/gui/ConfigScreen/SideBar.js
|
||||
packages/app-desktop/gui/ConfigScreen/SideBar.js.map
|
||||
packages/app-desktop/gui/ConfigScreen/controls/PluginsStates.d.ts
|
||||
packages/app-desktop/gui/ConfigScreen/controls/PluginsStates.js
|
||||
packages/app-desktop/gui/ConfigScreen/controls/PluginsStates.js.map
|
||||
packages/app-desktop/gui/ConfigScreen/controls/plugins/PluginBox.d.ts
|
||||
packages/app-desktop/gui/ConfigScreen/controls/plugins/PluginBox.js
|
||||
packages/app-desktop/gui/ConfigScreen/controls/plugins/PluginBox.js.map
|
||||
packages/app-desktop/gui/ConfigScreen/controls/plugins/PluginsStates.d.ts
|
||||
packages/app-desktop/gui/ConfigScreen/controls/plugins/PluginsStates.js
|
||||
packages/app-desktop/gui/ConfigScreen/controls/plugins/PluginsStates.js.map
|
||||
packages/app-desktop/gui/ConfigScreen/controls/plugins/SearchPlugins.d.ts
|
||||
packages/app-desktop/gui/ConfigScreen/controls/plugins/SearchPlugins.js
|
||||
packages/app-desktop/gui/ConfigScreen/controls/plugins/SearchPlugins.js.map
|
||||
packages/app-desktop/gui/ConfigScreen/controls/plugins/useOnInstallHandler.d.ts
|
||||
packages/app-desktop/gui/ConfigScreen/controls/plugins/useOnInstallHandler.js
|
||||
packages/app-desktop/gui/ConfigScreen/controls/plugins/useOnInstallHandler.js.map
|
||||
packages/app-desktop/gui/DropboxLoginScreen.d.ts
|
||||
packages/app-desktop/gui/DropboxLoginScreen.js
|
||||
packages/app-desktop/gui/DropboxLoginScreen.js.map
|
||||
@@ -642,9 +657,6 @@ packages/app-desktop/gui/Root_UpgradeSyncTarget.js.map
|
||||
packages/app-desktop/gui/SearchBar/SearchBar.d.ts
|
||||
packages/app-desktop/gui/SearchBar/SearchBar.js
|
||||
packages/app-desktop/gui/SearchBar/SearchBar.js.map
|
||||
packages/app-desktop/gui/SearchBar/styles/index.d.ts
|
||||
packages/app-desktop/gui/SearchBar/styles/index.js
|
||||
packages/app-desktop/gui/SearchBar/styles/index.js.map
|
||||
packages/app-desktop/gui/ShareNoteDialog.d.ts
|
||||
packages/app-desktop/gui/ShareNoteDialog.js
|
||||
packages/app-desktop/gui/ShareNoteDialog.js.map
|
||||
@@ -693,6 +705,9 @@ packages/app-desktop/gui/hooks/usePrevious.js.map
|
||||
packages/app-desktop/gui/hooks/usePropsDebugger.d.ts
|
||||
packages/app-desktop/gui/hooks/usePropsDebugger.js
|
||||
packages/app-desktop/gui/hooks/usePropsDebugger.js.map
|
||||
packages/app-desktop/gui/lib/SearchInput/SearchInput.d.ts
|
||||
packages/app-desktop/gui/lib/SearchInput/SearchInput.js
|
||||
packages/app-desktop/gui/lib/SearchInput/SearchInput.js.map
|
||||
packages/app-desktop/gui/lib/ToggleButton/ToggleButton.d.ts
|
||||
packages/app-desktop/gui/lib/ToggleButton/ToggleButton.js
|
||||
packages/app-desktop/gui/lib/ToggleButton/ToggleButton.js.map
|
||||
@@ -792,6 +807,9 @@ packages/app-mobile/components/screens/Note.js.map
|
||||
packages/app-mobile/components/screens/UpgradeSyncTargetScreen.d.ts
|
||||
packages/app-mobile/components/screens/UpgradeSyncTargetScreen.js
|
||||
packages/app-mobile/components/screens/UpgradeSyncTargetScreen.js.map
|
||||
packages/app-mobile/root.d.ts
|
||||
packages/app-mobile/root.js
|
||||
packages/app-mobile/root.js.map
|
||||
packages/app-mobile/services/AlarmServiceDriver.android.d.ts
|
||||
packages/app-mobile/services/AlarmServiceDriver.android.js
|
||||
packages/app-mobile/services/AlarmServiceDriver.android.js.map
|
||||
@@ -1104,6 +1122,9 @@ packages/lib/services/plugins/Plugin.js.map
|
||||
packages/lib/services/plugins/PluginService.d.ts
|
||||
packages/lib/services/plugins/PluginService.js
|
||||
packages/lib/services/plugins/PluginService.js.map
|
||||
packages/lib/services/plugins/RepositoryApi.d.ts
|
||||
packages/lib/services/plugins/RepositoryApi.js
|
||||
packages/lib/services/plugins/RepositoryApi.js.map
|
||||
packages/lib/services/plugins/ToolbarButtonController.d.ts
|
||||
packages/lib/services/plugins/ToolbarButtonController.js
|
||||
packages/lib/services/plugins/ToolbarButtonController.js.map
|
||||
@@ -1188,6 +1209,12 @@ packages/lib/services/plugins/utils/mapEventHandlersToIds.js.map
|
||||
packages/lib/services/plugins/utils/types.d.ts
|
||||
packages/lib/services/plugins/utils/types.js
|
||||
packages/lib/services/plugins/utils/types.js.map
|
||||
packages/lib/services/plugins/utils/validatePluginId.d.ts
|
||||
packages/lib/services/plugins/utils/validatePluginId.js
|
||||
packages/lib/services/plugins/utils/validatePluginId.js.map
|
||||
packages/lib/services/plugins/utils/validatePluginId.test.d.ts
|
||||
packages/lib/services/plugins/utils/validatePluginId.test.js
|
||||
packages/lib/services/plugins/utils/validatePluginId.test.js.map
|
||||
packages/lib/services/rest/Api.d.ts
|
||||
packages/lib/services/rest/Api.js
|
||||
packages/lib/services/rest/Api.js.map
|
||||
@@ -1317,6 +1344,15 @@ packages/lib/uuid.js.map
|
||||
packages/lib/versionInfo.d.ts
|
||||
packages/lib/versionInfo.js
|
||||
packages/lib/versionInfo.js.map
|
||||
packages/plugins/ToggleSideBars/api/index.d.ts
|
||||
packages/plugins/ToggleSideBars/api/index.js
|
||||
packages/plugins/ToggleSideBars/api/index.js.map
|
||||
packages/plugins/ToggleSideBars/api/types.d.ts
|
||||
packages/plugins/ToggleSideBars/api/types.js
|
||||
packages/plugins/ToggleSideBars/api/types.js.map
|
||||
packages/plugins/ToggleSideBars/src/index.d.ts
|
||||
packages/plugins/ToggleSideBars/src/index.js
|
||||
packages/plugins/ToggleSideBars/src/index.js.map
|
||||
packages/renderer/HtmlToHtml.d.ts
|
||||
packages/renderer/HtmlToHtml.js
|
||||
packages/renderer/HtmlToHtml.js.map
|
||||
@@ -1374,6 +1410,12 @@ packages/renderer/MdToHtml/rules/mermaid.js.map
|
||||
packages/renderer/MdToHtml/rules/sanitize_html.d.ts
|
||||
packages/renderer/MdToHtml/rules/sanitize_html.js
|
||||
packages/renderer/MdToHtml/rules/sanitize_html.js.map
|
||||
packages/renderer/MdToHtml/setupLinkify.d.ts
|
||||
packages/renderer/MdToHtml/setupLinkify.js
|
||||
packages/renderer/MdToHtml/setupLinkify.js.map
|
||||
packages/renderer/MdToHtml/validateLinks.d.ts
|
||||
packages/renderer/MdToHtml/validateLinks.js
|
||||
packages/renderer/MdToHtml/validateLinks.js.map
|
||||
packages/renderer/htmlUtils.d.ts
|
||||
packages/renderer/htmlUtils.js
|
||||
packages/renderer/htmlUtils.js.map
|
||||
@@ -1446,6 +1488,9 @@ packages/server/src/controllers/index/HomeController.js.map
|
||||
packages/server/src/controllers/index/LoginController.d.ts
|
||||
packages/server/src/controllers/index/LoginController.js
|
||||
packages/server/src/controllers/index/LoginController.js.map
|
||||
packages/server/src/controllers/index/NotificationController.d.ts
|
||||
packages/server/src/controllers/index/NotificationController.js
|
||||
packages/server/src/controllers/index/NotificationController.js.map
|
||||
packages/server/src/controllers/index/ProfileController.d.ts
|
||||
packages/server/src/controllers/index/ProfileController.js
|
||||
packages/server/src/controllers/index/ProfileController.js.map
|
||||
@@ -1455,9 +1500,21 @@ packages/server/src/controllers/index/UserController.js.map
|
||||
packages/server/src/db.d.ts
|
||||
packages/server/src/db.js
|
||||
packages/server/src/db.js.map
|
||||
packages/server/src/middleware/notificationHandler.d.ts
|
||||
packages/server/src/middleware/notificationHandler.js
|
||||
packages/server/src/middleware/notificationHandler.js.map
|
||||
packages/server/src/middleware/ownerHandler.d.ts
|
||||
packages/server/src/middleware/ownerHandler.js
|
||||
packages/server/src/middleware/ownerHandler.js.map
|
||||
packages/server/src/middleware/routeHandler.d.ts
|
||||
packages/server/src/middleware/routeHandler.js
|
||||
packages/server/src/middleware/routeHandler.js.map
|
||||
packages/server/src/migrations/20190913171451_create.d.ts
|
||||
packages/server/src/migrations/20190913171451_create.js
|
||||
packages/server/src/migrations/20190913171451_create.js.map
|
||||
packages/server/src/migrations/20203012152842_notifications.d.ts
|
||||
packages/server/src/migrations/20203012152842_notifications.js
|
||||
packages/server/src/migrations/20203012152842_notifications.js.map
|
||||
packages/server/src/models/ApiClientModel.d.ts
|
||||
packages/server/src/models/ApiClientModel.js
|
||||
packages/server/src/models/ApiClientModel.js.map
|
||||
@@ -1476,6 +1533,12 @@ packages/server/src/models/FileModel.js.map
|
||||
packages/server/src/models/FileModel.test.d.ts
|
||||
packages/server/src/models/FileModel.test.js
|
||||
packages/server/src/models/FileModel.test.js.map
|
||||
packages/server/src/models/NotificationModel.d.ts
|
||||
packages/server/src/models/NotificationModel.js
|
||||
packages/server/src/models/NotificationModel.js.map
|
||||
packages/server/src/models/NotificationModel.test.d.ts
|
||||
packages/server/src/models/NotificationModel.test.js
|
||||
packages/server/src/models/NotificationModel.test.js.map
|
||||
packages/server/src/models/PermissionModel.d.ts
|
||||
packages/server/src/models/PermissionModel.js
|
||||
packages/server/src/models/PermissionModel.js.map
|
||||
@@ -1521,6 +1584,9 @@ packages/server/src/routes/index/login.js.map
|
||||
packages/server/src/routes/index/logout.d.ts
|
||||
packages/server/src/routes/index/logout.js
|
||||
packages/server/src/routes/index/logout.js.map
|
||||
packages/server/src/routes/index/notifications.d.ts
|
||||
packages/server/src/routes/index/notifications.js
|
||||
packages/server/src/routes/index/notifications.js.map
|
||||
packages/server/src/routes/index/profile.d.ts
|
||||
packages/server/src/routes/index/profile.js
|
||||
packages/server/src/routes/index/profile.js.map
|
||||
@@ -1599,4 +1665,10 @@ packages/server/src/utils/urlUtils.js.map
|
||||
packages/server/src/utils/uuidgen.d.ts
|
||||
packages/server/src/utils/uuidgen.js
|
||||
packages/server/src/utils/uuidgen.js.map
|
||||
packages/tools/build-plugin-repository.d.ts
|
||||
packages/tools/build-plugin-repository.js
|
||||
packages/tools/build-plugin-repository.js.map
|
||||
packages/tools/release-server.d.ts
|
||||
packages/tools/release-server.js
|
||||
packages/tools/release-server.js.map
|
||||
# AUTO-GENERATED - EXCLUDED TYPESCRIPT BUILD
|
||||
|
37
README.md
37
README.md
@@ -18,11 +18,17 @@ Three types of applications are available: for the **desktop** (Windows, macOS a
|
||||
|
||||
## Desktop applications
|
||||
|
||||
Operating System | Download | Alternative
|
||||
---|---|---
|
||||
Windows (32 and 64-bit) | <a href='https://github.com/laurent22/joplin/releases/download/v1.5.11/Joplin-Setup-1.5.11.exe'><img alt='Get it on Windows' width="134px" src='https://joplinapp.org/images/BadgeWindows.png'/></a> | Or get the <a href='https://github.com/laurent22/joplin/releases/download/v1.5.11/JoplinPortable.exe'>Portable version</a><br><br>The [portable application](https://en.wikipedia.org/wiki/Portable_application) allows installing the software on a portable device such as a USB key. Simply copy the file JoplinPortable.exe in any directory on that USB key ; the application will then create a directory called "JoplinProfile" next to the executable file.
|
||||
macOS | <a href='https://github.com/laurent22/joplin/releases/download/v1.5.11/Joplin-1.5.11.dmg'><img alt='Get it on macOS' width="134px" src='https://joplinapp.org/images/BadgeMacOS.png'/></a> | -
|
||||
Linux | <a href='https://github.com/laurent22/joplin/releases/download/v1.5.11/Joplin-1.5.11.AppImage'><img alt='Get it on Linux' width="134px" src='https://joplinapp.org/images/BadgeLinux.png'/></a> | The recommended way is to use the following installation script as it will handle the desktop icon too:<br><br> `wget -O - https://raw.githubusercontent.com/laurent22/joplin/dev/Joplin_install_and_update.sh \| bash`
|
||||
Operating System | Download
|
||||
---|---
|
||||
Windows (32 and 64-bit) | <a href='https://github.com/laurent22/joplin/releases/download/v1.5.11/Joplin-Setup-1.5.11.exe'><img alt='Get it on Windows' width="134px" src='https://joplinapp.org/images/BadgeWindows.png'/></a>
|
||||
macOS | <a href='https://github.com/laurent22/joplin/releases/download/v1.5.11/Joplin-1.5.11.dmg'><img alt='Get it on macOS' width="134px" src='https://joplinapp.org/images/BadgeMacOS.png'/></a>
|
||||
Linux | <a href='https://github.com/laurent22/joplin/releases/download/v1.5.11/Joplin-1.5.11.AppImage'><img alt='Get it on Linux' width="134px" src='https://joplinapp.org/images/BadgeLinux.png'/></a>
|
||||
|
||||
**On Windows**, you may also use the <a href='https://github.com/laurent22/joplin/releases/download/v1.5.11/JoplinPortable.exe'>Portable version</a>. The [portable application](https://en.wikipedia.org/wiki/Portable_application) allows installing the software on a portable device such as a USB key. Simply copy the file JoplinPortable.exe in any directory on that USB key ; the application will then create a directory called "JoplinProfile" next to the executable file.
|
||||
|
||||
**On Linux**, the recommended way is to use the following installation script as it will handle the desktop icon too:
|
||||
|
||||
<pre><code style="word-break: break-all">wget -O - https://raw.githubusercontent.com/laurent22/joplin/dev/Joplin_install_and_update.sh | bash</code></pre>
|
||||
|
||||
## Mobile applications
|
||||
|
||||
@@ -109,6 +115,8 @@ The Web Clipper is a browser extension that allows you to save web pages and scr
|
||||
- [Sync Lock spec](https://github.com/laurent22/joplin/blob/dev/readme/spec/sync_lock.md)
|
||||
- [Plugin Architecture spec](https://github.com/laurent22/joplin/blob/dev/readme/spec/plugins.md)
|
||||
- [Search Sorting spec](https://github.com/laurent22/joplin/blob/dev/readme/spec/search_sorting.md)
|
||||
- [Server: File URL Format](https://github.com/laurent22/joplin/blob/dev/readme/spec/server_file_url_format.md)
|
||||
- [Server: Delta Sync](https://github.com/laurent22/joplin/blob/dev/readme/spec/server_delta_sync.md)
|
||||
|
||||
- Google Summer of Code 2020
|
||||
|
||||
@@ -227,6 +235,7 @@ WebDAV-compatible services that are known to work with Joplin:
|
||||
- [OwnCloud](https://owncloud.org/)
|
||||
- [Seafile](https://www.seafile.com/)
|
||||
- [Stack](https://www.transip.nl/stack/)
|
||||
- [Synology WebDAV Server](https://www.synology.com/en-us/dsm/packages/WebDAVServer)
|
||||
- [WebDAV Nav](https://www.schimera.com/products/webdav-nav-server/), a macOS server.
|
||||
- [Zimbra](https://www.zimbra.com/)
|
||||
|
||||
@@ -444,15 +453,15 @@ Current translations:
|
||||
 | Croatian (Hrvatska) | [hr_HR](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/hr_HR.po) | [Hrvoje Mandić](mailto:trbuhom@net.hr) | 26%
|
||||
 | Czech (Česká republika) | [cs_CZ](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/cs_CZ.po) | [Lukas Helebrandt](mailto:lukas@aiya.cz) | 93%
|
||||
 | Dansk (Danmark) | [da_DK](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/da_DK.po) | Mustafa Al-Dailemi (dailemi@hotmail.com)Language-Team: | 77%
|
||||
 | Deutsch (Deutschland) | [de_DE](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/de_DE.po) | [Ettore Atalan](mailto:atalanttore@users.noreply.github.com) | 96%
|
||||
 | Deutsch (Deutschland) | [de_DE](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/de_DE.po) | [Ettore Atalan](mailto:atalanttore@users.noreply.github.com) | 95%
|
||||
 | Eesti Keel (Eesti) | [et_EE](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/et_EE.po) | | 61%
|
||||
 | English (United Kingdom) | [en_GB](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/en_GB.po) | | 100%
|
||||
 | English (United States of America) | [en_US](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/en_US.po) | | 100%
|
||||
 | Español (España) | [es_ES](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/es_ES.po) | [Mario Campo](mailto:mario.campo@gmail.com) | 93%
|
||||
 | Español (España) | [es_ES](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/es_ES.po) | [Mario Campo](mailto:mario.campo@gmail.com) | 99%
|
||||
 | Esperanto | [eo](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/eo.po) | Marton Paulo | 35%
|
||||
 | Finnish (Suomi) | [fi_FI](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/fi_FI.po) | | 94%
|
||||
 | Français (France) | [fr_FR](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/fr_FR.po) | Laurent Cozic | 93%
|
||||
 | Galician (España) | [gl_ES](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/gl_ES.po) | [Marcos Lans](mailto:marcoslansgarza@gmail.com) | 41%
|
||||
 | Français (France) | [fr_FR](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/fr_FR.po) | Laurent Cozic | 99%
|
||||
 | Galician (España) | [gl_ES](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/gl_ES.po) | [Marcos Lans](mailto:marcoslansgarza@gmail.com) | 40%
|
||||
 | Indonesian (Indonesia) | [id_ID](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/id_ID.po) | [Fathy AR](mailto:16875937+fathyar@users.noreply.github.com) | 85%
|
||||
 | Italiano (Italia) | [it_IT](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/it_IT.po) | [Alessandro Bernardello](mailto:mailfilledwithspam@gmail.com) | 96%
|
||||
 | Nederlands (België, Belgique, Belgien) | [nl_BE](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/nl_BE.po) | | 32%
|
||||
@@ -467,14 +476,14 @@ Current translations:
|
||||
 | Svenska | [sv](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/sv.po) | [Jonatan Nyberg](mailto:jonatan@autistici.org) | 66%
|
||||
 | Thai (ประเทศไทย) | [th_TH](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/th_TH.po) | | 49%
|
||||
 | Tiếng Việt | [vi](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/vi.po) | | 79%
|
||||
 | Türkçe (Türkiye) | [tr_TR](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/tr_TR.po) | [Arda Kılıçdağı](mailto:arda@kilicdagi.com) | 92%
|
||||
 | Türkçe (Türkiye) | [tr_TR](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/tr_TR.po) | [Arda Kılıçdağı](mailto:arda@kilicdagi.com) | 99%
|
||||
 | Ελληνικά (Ελλάδα) | [el_GR](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/el_GR.po) | [Harris Arvanitis](mailto:xaris@tuta.io) | 89%
|
||||
 | Русский (Россия) | [ru_RU](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ru_RU.po) | [Sergey Segeda](mailto:thesermanarm@gmail.com) | 96%
|
||||
 | српски језик (Србија) | [sr_RS](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/sr_RS.po) | | 67%
|
||||
 | 中文 (简体) | [zh_CN](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/zh_CN.po) | [WhiredPlanck](mailto:fungdaat31@outlook.com) | 97%
|
||||
 | 中文 (繁體) | [zh_TW](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/zh_TW.po) | [Yaoze Ye](mailto:yaozeye@yahoo.co.jp) | 89%
|
||||
 | 日本語 (日本) | [ja_JP](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ja_JP.po) | [genneko](mailto:genneko217@gmail.com) | 97%
|
||||
 | 한국어 | [ko](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ko.po) | [Ji-Hyeon Gim](mailto:potatogim@potatogim.net) | 97%
|
||||
 | 中文 (简体) | [zh_CN](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/zh_CN.po) | [WhiredPlanck](mailto:fungdaat31@outlook.com) | 99%
|
||||
 | 中文 (繁體) | [zh_TW](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/zh_TW.po) | [Yaoze Ye](mailto:yaozeye@yahoo.co.jp) | 95%
|
||||
 | 日本語 (日本) | [ja_JP](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ja_JP.po) | [genneko](mailto:genneko217@gmail.com) | 96%
|
||||
 | 한국어 | [ko](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ko.po) | [Ji-Hyeon Gim](mailto:potatogim@potatogim.net) | 96%
|
||||
<!-- LOCALE-TABLE-AUTO-GENERATED -->
|
||||
|
||||
# Contributors
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/get_started/plugins.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/get_started/plugins.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -470,7 +472,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/get_started/plugins.md
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/overview.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/overview.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -462,7 +464,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/overview.md
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/references/development_m
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/references/development_m
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -441,7 +443,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/references/development_m
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
File diff suppressed because one or more lines are too long
@@ -150,17 +150,20 @@
|
||||
</aside>
|
||||
<div class="tsd-comment tsd-typography">
|
||||
<div class="lead">
|
||||
<p>Registers a new content script. Unlike regular plugin code, which
|
||||
runs in a separate process, content scripts run within the main
|
||||
process code and thus allow improved performances and more
|
||||
customisations in specific cases. It can be used for example to load
|
||||
a Markdown or editor plugin.</p>
|
||||
<p>Registers a new content script. Unlike regular plugin code, which runs in
|
||||
a separate process, content scripts run within the main process code and
|
||||
thus allow improved performances and more customisations in specific
|
||||
cases. It can be used for example to load a Markdown or editor plugin.</p>
|
||||
</div>
|
||||
<p>Note that registering a content script in itself will do nothing -
|
||||
it will only be loaded in specific cases by the relevant app modules
|
||||
(eg. the Markdown renderer or the code editor). So it is not a way
|
||||
to inject and run arbitrary code in the app, which for safety and
|
||||
performance reasons is not supported.</p>
|
||||
<p>Note that registering a content script in itself will do nothing - it
|
||||
will only be loaded in specific cases by the relevant app modules (eg.
|
||||
the Markdown renderer or the code editor). So it is not a way to inject
|
||||
and run arbitrary code in the app, which for safety and performance
|
||||
reasons is not supported.</p>
|
||||
<p>The plugin generator provides a way to build any content script you might
|
||||
want to package as well as its dependencies. See the <a href="https://github.com/laurent22/joplin/blob/dev/packages/generator-joplin/README.md">Plugin Generator
|
||||
doc</a>
|
||||
for more information.</p>
|
||||
<ul>
|
||||
<li><a href="https://github.com/laurent22/joplin/tree/dev/packages/app-cli/tests/support/plugins/content_script">View the renderer demo plugin</a></li>
|
||||
<li><a href="https://github.com/laurent22/joplin/tree/dev/packages/app-cli/tests/support/plugins/codemirror_content_script">View the editor demo plugin</a></li>
|
||||
|
@@ -117,6 +117,7 @@
|
||||
<section class="tsd-index-section ">
|
||||
<h3>Methods</h3>
|
||||
<ul class="tsd-index-list">
|
||||
<li class="tsd-kind-method tsd-parent-kind-class"><a href="joplinviewsdialogs.html#addscript" class="tsd-kind-icon">add<wbr>Script</a></li>
|
||||
<li class="tsd-kind-method tsd-parent-kind-class"><a href="joplinviewsdialogs.html#create" class="tsd-kind-icon">create</a></li>
|
||||
<li class="tsd-kind-method tsd-parent-kind-class"><a href="joplinviewsdialogs.html#open" class="tsd-kind-icon">open</a></li>
|
||||
<li class="tsd-kind-method tsd-parent-kind-class"><a href="joplinviewsdialogs.html#setbuttons" class="tsd-kind-icon">set<wbr>Buttons</a></li>
|
||||
@@ -131,6 +132,38 @@
|
||||
</section>
|
||||
<section class="tsd-panel-group tsd-member-group ">
|
||||
<h2>Methods</h2>
|
||||
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
|
||||
<a name="addscript" class="tsd-anchor"></a>
|
||||
<h3>add<wbr>Script</h3>
|
||||
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
|
||||
<li class="tsd-signature tsd-kind-icon">add<wbr>Script<span class="tsd-signature-symbol">(</span>handle<span class="tsd-signature-symbol">: </span><a href="../globals.html#viewhandle" class="tsd-signature-type">ViewHandle</a>, scriptPath<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></li>
|
||||
</ul>
|
||||
<ul class="tsd-descriptions">
|
||||
<li class="tsd-description">
|
||||
<aside class="tsd-sources">
|
||||
</aside>
|
||||
<div class="tsd-comment tsd-typography">
|
||||
<div class="lead">
|
||||
<p>Adds and loads a new JS or CSS files into the dialog.</p>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="tsd-parameters-title">Parameters</h4>
|
||||
<ul class="tsd-parameters">
|
||||
<li>
|
||||
<h5>handle: <a href="../globals.html#viewhandle" class="tsd-signature-type">ViewHandle</a></h5>
|
||||
</li>
|
||||
<li>
|
||||
<h5>scriptPath: <span class="tsd-signature-type">string</span></h5>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- JOPLINCHANGE
|
||||
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></h4>
|
||||
|
||||
|
||||
-->
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
|
||||
<a name="create" class="tsd-anchor"></a>
|
||||
<h3>create</h3>
|
||||
@@ -304,6 +337,9 @@
|
||||
<li class=" tsd-kind-constructor tsd-parent-kind-class">
|
||||
<a href="joplinviewsdialogs.html#constructor" class="tsd-kind-icon">constructor</a>
|
||||
</li>
|
||||
<li class=" tsd-kind-method tsd-parent-kind-class">
|
||||
<a href="joplinviewsdialogs.html#addscript" class="tsd-kind-icon">add<wbr>Script</a>
|
||||
</li>
|
||||
<li class=" tsd-kind-method tsd-parent-kind-class">
|
||||
<a href="joplinviewsdialogs.html#create" class="tsd-kind-icon">create</a>
|
||||
</li>
|
||||
|
@@ -99,8 +99,11 @@
|
||||
<ul class="tsd-index-list">
|
||||
<li class="tsd-kind-method tsd-parent-kind-class"><a href="joplinviewspanels.html#addscript" class="tsd-kind-icon">add<wbr>Script</a></li>
|
||||
<li class="tsd-kind-method tsd-parent-kind-class"><a href="joplinviewspanels.html#create" class="tsd-kind-icon">create</a></li>
|
||||
<li class="tsd-kind-method tsd-parent-kind-class"><a href="joplinviewspanels.html#hide" class="tsd-kind-icon">hide</a></li>
|
||||
<li class="tsd-kind-method tsd-parent-kind-class"><a href="joplinviewspanels.html#onmessage" class="tsd-kind-icon">on<wbr>Message</a></li>
|
||||
<li class="tsd-kind-method tsd-parent-kind-class"><a href="joplinviewspanels.html#sethtml" class="tsd-kind-icon">set<wbr>Html</a></li>
|
||||
<li class="tsd-kind-method tsd-parent-kind-class"><a href="joplinviewspanels.html#show" class="tsd-kind-icon">show</a></li>
|
||||
<li class="tsd-kind-method tsd-parent-kind-class"><a href="joplinviewspanels.html#visible" class="tsd-kind-icon">visible</a></li>
|
||||
</ul>
|
||||
</section>
|
||||
</div>
|
||||
@@ -167,6 +170,35 @@
|
||||
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol"><</span><a href="../globals.html#viewhandle" class="tsd-signature-type">ViewHandle</a><span class="tsd-signature-symbol">></span></h4>
|
||||
|
||||
|
||||
-->
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
|
||||
<a name="hide" class="tsd-anchor"></a>
|
||||
<h3>hide</h3>
|
||||
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
|
||||
<li class="tsd-signature tsd-kind-icon">hide<span class="tsd-signature-symbol">(</span>handle<span class="tsd-signature-symbol">: </span><a href="../globals.html#viewhandle" class="tsd-signature-type">ViewHandle</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></li>
|
||||
</ul>
|
||||
<ul class="tsd-descriptions">
|
||||
<li class="tsd-description">
|
||||
<aside class="tsd-sources">
|
||||
</aside>
|
||||
<div class="tsd-comment tsd-typography">
|
||||
<div class="lead">
|
||||
<p>Hides the panel</p>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="tsd-parameters-title">Parameters</h4>
|
||||
<ul class="tsd-parameters">
|
||||
<li>
|
||||
<h5>handle: <a href="../globals.html#viewhandle" class="tsd-signature-type">ViewHandle</a></h5>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- JOPLINCHANGE
|
||||
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></h4>
|
||||
|
||||
|
||||
-->
|
||||
</li>
|
||||
</ul>
|
||||
@@ -231,6 +263,67 @@
|
||||
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">></span></h4>
|
||||
|
||||
|
||||
-->
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
|
||||
<a name="show" class="tsd-anchor"></a>
|
||||
<h3>show</h3>
|
||||
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
|
||||
<li class="tsd-signature tsd-kind-icon">show<span class="tsd-signature-symbol">(</span>handle<span class="tsd-signature-symbol">: </span><a href="../globals.html#viewhandle" class="tsd-signature-type">ViewHandle</a>, show<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></li>
|
||||
</ul>
|
||||
<ul class="tsd-descriptions">
|
||||
<li class="tsd-description">
|
||||
<aside class="tsd-sources">
|
||||
</aside>
|
||||
<div class="tsd-comment tsd-typography">
|
||||
<div class="lead">
|
||||
<p>Shows the panel</p>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="tsd-parameters-title">Parameters</h4>
|
||||
<ul class="tsd-parameters">
|
||||
<li>
|
||||
<h5>handle: <a href="../globals.html#viewhandle" class="tsd-signature-type">ViewHandle</a></h5>
|
||||
</li>
|
||||
<li>
|
||||
<h5><span class="tsd-flag ts-flagDefault value">Default value</span> show: <span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol"> = true</span></h5>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- JOPLINCHANGE
|
||||
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></h4>
|
||||
|
||||
|
||||
-->
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
|
||||
<a name="visible" class="tsd-anchor"></a>
|
||||
<h3>visible</h3>
|
||||
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
|
||||
<li class="tsd-signature tsd-kind-icon">visible<span class="tsd-signature-symbol">(</span>handle<span class="tsd-signature-symbol">: </span><a href="../globals.html#viewhandle" class="tsd-signature-type">ViewHandle</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">></span></li>
|
||||
</ul>
|
||||
<ul class="tsd-descriptions">
|
||||
<li class="tsd-description">
|
||||
<aside class="tsd-sources">
|
||||
</aside>
|
||||
<div class="tsd-comment tsd-typography">
|
||||
<div class="lead">
|
||||
<p>Tells whether the panel is visible or not</p>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="tsd-parameters-title">Parameters</h4>
|
||||
<ul class="tsd-parameters">
|
||||
<li>
|
||||
<h5>handle: <a href="../globals.html#viewhandle" class="tsd-signature-type">ViewHandle</a></h5>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- JOPLINCHANGE
|
||||
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">></span></h4>
|
||||
|
||||
|
||||
-->
|
||||
</li>
|
||||
</ul>
|
||||
@@ -263,12 +356,21 @@
|
||||
<li class=" tsd-kind-method tsd-parent-kind-class">
|
||||
<a href="joplinviewspanels.html#create" class="tsd-kind-icon">create</a>
|
||||
</li>
|
||||
<li class=" tsd-kind-method tsd-parent-kind-class">
|
||||
<a href="joplinviewspanels.html#hide" class="tsd-kind-icon">hide</a>
|
||||
</li>
|
||||
<li class=" tsd-kind-method tsd-parent-kind-class">
|
||||
<a href="joplinviewspanels.html#onmessage" class="tsd-kind-icon">on<wbr>Message</a>
|
||||
</li>
|
||||
<li class=" tsd-kind-method tsd-parent-kind-class">
|
||||
<a href="joplinviewspanels.html#sethtml" class="tsd-kind-icon">set<wbr>Html</a>
|
||||
</li>
|
||||
<li class=" tsd-kind-method tsd-parent-kind-class">
|
||||
<a href="joplinviewspanels.html#show" class="tsd-kind-icon">show</a>
|
||||
</li>
|
||||
<li class=" tsd-kind-method tsd-parent-kind-class">
|
||||
<a href="joplinviewspanels.html#visible" class="tsd-kind-icon">visible</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/references/plugin_loadin
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/references/plugin_loadin
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -447,7 +449,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/references/plugin_loadin
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/references/plugin_manife
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/references/plugin_manife
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -405,6 +407,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/references/plugin_manife
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Type</th>
|
||||
<th>Required?</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
@@ -412,42 +415,55 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/references/plugin_manife
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>manifest_version</code></td>
|
||||
<td>number</td>
|
||||
<td><strong>Yes</strong></td>
|
||||
<td>For now should always be "1".</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>name</code></td>
|
||||
<td>string</td>
|
||||
<td><strong>Yes</strong></td>
|
||||
<td>Name of the plugin. Should be a user-friendly string, as it will be displayed in the UI.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>version</code></td>
|
||||
<td>string</td>
|
||||
<td><strong>Yes</strong></td>
|
||||
<td>Version number such as "1.0.0".</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>app_min_version</code></td>
|
||||
<td>string</td>
|
||||
<td><strong>Yes</strong></td>
|
||||
<td>Minimum version of Joplin that the plugin is compatible with. In general it should be whatever version you are using to develop the plugin.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>description</code></td>
|
||||
<td>string</td>
|
||||
<td>No</td>
|
||||
<td>Detailed description of the plugin.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>author</code></td>
|
||||
<td>string</td>
|
||||
<td>No</td>
|
||||
<td>Plugin author name.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>homepage_url</code></td>
|
||||
<td>string</td>
|
||||
<td>No</td>
|
||||
<td>Homepage URL of the plugin. It can also be, for example, a link to a GitHub repository.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>content_scripts</code></td>
|
||||
<td>string[]</td>
|
||||
<td>No</td>
|
||||
<td>List of <a href="https://github.com/laurent22/joplin/blob/dev/packages/generator-joplin/README.md#content-scripts">content scripts</a> used by the plugin.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Here's a complete example:</p>
|
||||
<h2>Manifest example<a name="manifest-example" href="#manifest-example" class="heading-anchor">🔗</a></h2>
|
||||
<pre><code class="language-json">{
|
||||
"manifest_version": 1,
|
||||
"name": "Joplin Simple Plugin",
|
||||
@@ -497,7 +513,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/references/plugin_manife
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/references/rest_api.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/references/rest_api.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -1070,7 +1072,7 @@ async function fetchAllNotes() {
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/tutorials/toc_plugin.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/tutorials/toc_plugin.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -712,7 +714,7 @@ document.addEventListener('click', event => {
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20180621-182112.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20180621-182112.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -445,7 +447,7 @@ published_at: 2018-06-21T17:21:12.000+00:00</p>
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20180906-111039.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20180906-111039.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -446,7 +448,7 @@ published_at: 2018-09-06T10:10:39.000+00:00</p>
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20180916-210431.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20180916-210431.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -445,7 +447,7 @@ published_at: 2018-09-16T20:04:31.000+00:00</p>
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20180929-121053.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20180929-121053.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -445,7 +447,7 @@ published_at: 2018-09-29T11:10:53.000+00:00</p>
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20181004-091123.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20181004-091123.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -447,7 +449,7 @@ published_at: 2018-10-04T08:11:23.000+00:00</p>
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20181101-174335.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20181101-174335.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -450,7 +452,7 @@ published_at: 2018-11-01T17:43:35.000+00:00</p>
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20181213-173459.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20181213-173459.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -448,7 +450,7 @@ published_at: 2018-12-13T17:34:59.000+00:00</p>
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190130-230218.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190130-230218.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -448,7 +450,7 @@ published_at: 2019-01-30T23:02:18.000+00:00</p>
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190404-074157.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190404-074157.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -447,7 +449,7 @@ published_at: 2019-04-04T06:41:57.000+00:00</p>
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190424-112410.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190424-112410.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -447,7 +449,7 @@ published_at: 2019-04-24T10:24:10.000+00:00</p>
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190523-231026.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190523-231026.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -457,7 +459,7 @@ published_at: 2019-05-23T22:10:26.000+00:00</p>
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190611-000711.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190611-000711.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -447,7 +449,7 @@ published_at: 2019-06-10T23:07:11.000+00:00</p>
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190613-202613.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190613-202613.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -447,7 +449,7 @@ published_at: 2019-06-13T19:26:13.000+00:00</p>
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190814-225957.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190814-225957.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -456,7 +458,7 @@ published_at: 2019-08-14T21:59:57.000+00:00</p>
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190925-000254.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190925-000254.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -461,7 +463,7 @@ published_at: 2019-09-24T23:02:54.000+00:00</p>
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190929-152834.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190929-152834.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -454,7 +456,7 @@ published_at: 2019-09-29T14:28:34.000+00:00</p>
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20191012-233121.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20191012-233121.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -454,7 +456,7 @@ published_at: 2019-10-12T22:31:21.000+00:00</p>
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20191014-165136.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20191014-165136.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -446,7 +448,7 @@ published_at: 2019-10-14T15:51:36.000+00:00</p>
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20191101-131852.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20191101-131852.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -450,7 +452,7 @@ published_at: 2019-11-01T13:18:52.000+00:00</p>
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20191117-183855.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20191117-183855.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -455,7 +457,7 @@ published_at: 2019-11-17T18:38:55.000+00:00</p>
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20191118-072700.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20191118-072700.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -453,7 +455,7 @@ published_at: 2019-11-18T07:27:00.000+00:00</p>
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20200220-190804.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20200220-190804.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -445,7 +447,7 @@ published_at: 2020-02-20T19:08:04.000+00:00</p>
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20200301-125055.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20200301-125055.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -461,7 +463,7 @@ published_at: 2020-03-01T12:50:55.000+00:00</p>
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20200314-001555.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20200314-001555.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -455,7 +457,7 @@ published_at: 2020-03-14T00:15:55.000+00:00</p>
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20200406-224254.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20200406-224254.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -473,7 +475,7 @@ published_at: 2020-04-06T21:42:54.000+00:00</p>
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/build_troubleshooting.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/build_troubleshooting.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -473,7 +475,7 @@ pod install
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/changelog.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/changelog.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -1955,7 +1957,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/changelog.md
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/changelog_cli.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/changelog_cli.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -687,7 +689,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/changelog_cli.md
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/clipper.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/clipper.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -471,7 +473,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/clipper.md
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/conflict.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/conflict.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -447,7 +449,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/conflict.md
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/debugging.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/debugging.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -493,7 +495,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/debugging.md
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/desktop.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/desktop.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -441,7 +443,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/desktop.md
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/donate.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/donate.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -474,7 +476,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/donate.md
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/e2ee.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/e2ee.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -459,7 +461,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/e2ee.md
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/faq.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/faq.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -413,7 +415,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/faq.md
|
||||
<p>More info there: <a href="https://github.com/electron-userland/electron-builder/issues/4057">https://github.com/electron-userland/electron-builder/issues/4057</a></p>
|
||||
<h2>How can I pass arguments to the Linux installation script?<a name="how-can-i-pass-arguments-to-the-linux-installation-script" href="#how-can-i-pass-arguments-to-the-linux-installation-script" class="heading-anchor">🔗</a></h2>
|
||||
<p>You can pass <a href="https://github.com/laurent22/joplin/blob/dev/Joplin_install_and_update.sh#L37">arguments</a> to the installation script by using this command.</p>
|
||||
<p><code>wget -O - https://raw.githubusercontent.com/laurent22/joplin/dev/Joplin_install_and_update.sh \| bash -s -- --argument1 --argument2</code></p>
|
||||
<pre><code style="word-break: break-all">wget -O - https://raw.githubusercontent.com/laurent22/joplin/dev/Joplin_install_and_update.sh | bash -s -- --argument1 --argument2</code></pre>
|
||||
<h2>How can I edit my note in an external text editor?<a name="how-can-i-edit-my-note-in-an-external-text-editor" href="#how-can-i-edit-my-note-in-an-external-text-editor" class="heading-anchor">🔗</a></h2>
|
||||
<p>The editor command (may include arguments) defines which editor will be used to open a note. If none is provided it will try to auto-detect the default editor. If this does nothing or you want to change it for Joplin, you need to configure it in the Preferences -> Text editor command.</p>
|
||||
<p>Some example configurations are: (comments after #)</p>
|
||||
@@ -526,7 +528,7 @@ on this server.</p>
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/gsoc2020/ideas.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/gsoc2020/ideas.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -544,7 +546,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/gsoc2020/ideas.md
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/gsoc2020/index.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/gsoc2020/index.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -543,7 +545,7 @@ There could be exceptional reason to accept proposal what cannot be finished ove
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/gsod2020/ideas.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/gsod2020/ideas.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -469,7 +471,7 @@ Task is to find a toolset to structure them and make the knowledge buried in the
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/gsod2020/index.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/gsod2020/index.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -529,7 +531,7 @@ The procedure reflects some of the lessons learnt in the GSOC 2020 campaign, so
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/README.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/README.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -414,27 +416,26 @@ https://github.com/laurent22/joplin/blob/dev/README.md
|
||||
<tr>
|
||||
<th>Operating System</th>
|
||||
<th>Download</th>
|
||||
<th>Alternative</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Windows (32 and 64-bit)</td>
|
||||
<td><a href='https://github.com/laurent22/joplin/releases/download/v1.5.11/Joplin-Setup-1.5.11.exe'><img alt='Get it on Windows' width="134px" src='https://joplinapp.org/images/BadgeWindows.png'/></a></td>
|
||||
<td>Or get the <a href='https://github.com/laurent22/joplin/releases/download/v1.5.11/JoplinPortable.exe'>Portable version</a><br><br>The <a href="https://en.wikipedia.org/wiki/Portable_application">portable application</a> allows installing the software on a portable device such as a USB key. Simply copy the file JoplinPortable.exe in any directory on that USB key ; the application will then create a directory called "JoplinProfile" next to the executable file.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>macOS</td>
|
||||
<td><a href='https://github.com/laurent22/joplin/releases/download/v1.5.11/Joplin-1.5.11.dmg'><img alt='Get it on macOS' width="134px" src='https://joplinapp.org/images/BadgeMacOS.png'/></a></td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Linux</td>
|
||||
<td><a href='https://github.com/laurent22/joplin/releases/download/v1.5.11/Joplin-1.5.11.AppImage'><img alt='Get it on Linux' width="134px" src='https://joplinapp.org/images/BadgeLinux.png'/></a></td>
|
||||
<td>The recommended way is to use the following installation script as it will handle the desktop icon too:<br><br> <code>wget -O - https://raw.githubusercontent.com/laurent22/joplin/dev/Joplin_install_and_update.sh | bash</code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><strong>On Windows</strong>, you may also use the <a href='https://github.com/laurent22/joplin/releases/download/v1.5.11/JoplinPortable.exe'>Portable version</a>. The <a href="https://en.wikipedia.org/wiki/Portable_application">portable application</a> allows installing the software on a portable device such as a USB key. Simply copy the file JoplinPortable.exe in any directory on that USB key ; the application will then create a directory called "JoplinProfile" next to the executable file.</p>
|
||||
<p><strong>On Linux</strong>, the recommended way is to use the following installation script as it will handle the desktop icon too:</p>
|
||||
<pre><code style="word-break: break-all">wget -O - https://raw.githubusercontent.com/laurent22/joplin/dev/Joplin_install_and_update.sh | bash</code></pre>
|
||||
<h2>Mobile applications<a name="mobile-applications" href="#mobile-applications" class="heading-anchor">🔗</a></h2>
|
||||
<table>
|
||||
<thead>
|
||||
@@ -927,35 +928,35 @@ Eg. <code>:search -- "-tag:tag1"</code>.</p>
|
||||
<td>Arabic</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ar.po">ar</a></td>
|
||||
<td><a href="mailto:fi_ahmed_bacha@esi.dz">أحمد باشا إبراهيم</a></td>
|
||||
<td>77%</td>
|
||||
<td>75%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/es/basque_country.png" alt=""></td>
|
||||
<td>Basque</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/eu.po">eu</a></td>
|
||||
<td>juan.abasolo@ehu.eus</td>
|
||||
<td>33%</td>
|
||||
<td>32%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/country-4x3/ba.png" alt=""></td>
|
||||
<td>Bosnian (Bosna i Hercegovina)</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/bs_BA.po">bs_BA</a></td>
|
||||
<td><a href="mailto:dervis.t@pm.me">Derviš T.</a></td>
|
||||
<td>79%</td>
|
||||
<td>77%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/country-4x3/bg.png" alt=""></td>
|
||||
<td>Bulgarian (България)</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/bg_BG.po">bg_BG</a></td>
|
||||
<td></td>
|
||||
<td>64%</td>
|
||||
<td>62%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/es/catalonia.png" alt=""></td>
|
||||
<td>Catalan</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ca.po">ca</a></td>
|
||||
<td>jmontane, 2019</td>
|
||||
<td>92%</td>
|
||||
<td>89%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/country-4x3/hr.png" alt=""></td>
|
||||
@@ -969,28 +970,28 @@ Eg. <code>:search -- "-tag:tag1"</code>.</p>
|
||||
<td>Czech (Česká republika)</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/cs_CZ.po">cs_CZ</a></td>
|
||||
<td><a href="mailto:lukas@aiya.cz">Lukas Helebrandt</a></td>
|
||||
<td>96%</td>
|
||||
<td>93%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/country-4x3/dk.png" alt=""></td>
|
||||
<td>Dansk (Danmark)</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/da_DK.po">da_DK</a></td>
|
||||
<td>Mustafa Al-Dailemi (<a href="mailto:dailemi@hotmail.com">dailemi@hotmail.com</a>)Language-Team:</td>
|
||||
<td>79%</td>
|
||||
<td>77%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/country-4x3/de.png" alt=""></td>
|
||||
<td>Deutsch (Deutschland)</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/de_DE.po">de_DE</a></td>
|
||||
<td><a href="mailto:atalanttore@users.noreply.github.com">Ettore Atalan</a></td>
|
||||
<td>96%</td>
|
||||
<td>95%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/country-4x3/ee.png" alt=""></td>
|
||||
<td>Eesti Keel (Eesti)</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/et_EE.po">et_EE</a></td>
|
||||
<td></td>
|
||||
<td>63%</td>
|
||||
<td>61%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/country-4x3/gb.png" alt=""></td>
|
||||
@@ -1011,189 +1012,189 @@ Eg. <code>:search -- "-tag:tag1"</code>.</p>
|
||||
<td>Español (España)</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/es_ES.po">es_ES</a></td>
|
||||
<td><a href="mailto:mario.campo@gmail.com">Mario Campo</a></td>
|
||||
<td>96%</td>
|
||||
<td>99%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/esperanto.png" alt=""></td>
|
||||
<td>Esperanto</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/eo.po">eo</a></td>
|
||||
<td>Marton Paulo</td>
|
||||
<td>36%</td>
|
||||
<td>35%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/country-4x3/fi.png" alt=""></td>
|
||||
<td>Finnish (Suomi)</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/fi_FI.po">fi_FI</a></td>
|
||||
<td></td>
|
||||
<td>97%</td>
|
||||
<td>94%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/country-4x3/fr.png" alt=""></td>
|
||||
<td>Français (France)</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/fr_FR.po">fr_FR</a></td>
|
||||
<td>Laurent Cozic</td>
|
||||
<td>96%</td>
|
||||
<td>99%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/es/galicia.png" alt=""></td>
|
||||
<td>Galician (España)</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/gl_ES.po">gl_ES</a></td>
|
||||
<td><a href="mailto:marcoslansgarza@gmail.com">Marcos Lans</a></td>
|
||||
<td>42%</td>
|
||||
<td>40%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/country-4x3/id.png" alt=""></td>
|
||||
<td>Indonesian (Indonesia)</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/id_ID.po">id_ID</a></td>
|
||||
<td><a href="mailto:16875937+fathyar@users.noreply.github.com">Fathy AR</a></td>
|
||||
<td>88%</td>
|
||||
<td>85%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/country-4x3/it.png" alt=""></td>
|
||||
<td>Italiano (Italia)</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/it_IT.po">it_IT</a></td>
|
||||
<td><a href="mailto:mailfilledwithspam@gmail.com">Alessandro Bernardello</a></td>
|
||||
<td>97%</td>
|
||||
<td>96%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/country-4x3/be.png" alt=""></td>
|
||||
<td>Nederlands (België, Belgique, Belgien)</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/nl_BE.po">nl_BE</a></td>
|
||||
<td></td>
|
||||
<td>33%</td>
|
||||
<td>32%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/country-4x3/nl.png" alt=""></td>
|
||||
<td>Nederlands (Nederland)</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/nl_NL.po">nl_NL</a></td>
|
||||
<td><a href="mailto:metbril@users.noreply.github.com">MetBril</a></td>
|
||||
<td>96%</td>
|
||||
<td>93%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/country-4x3/no.png" alt=""></td>
|
||||
<td>Norwegian (Norge, Noreg)</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/nb_NO.po">nb_NO</a></td>
|
||||
<td><a href="mailto:code@mxe.no">Mats Estensen</a></td>
|
||||
<td>85%</td>
|
||||
<td>82%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/country-4x3/ir.png" alt=""></td>
|
||||
<td>Persian</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/fa.po">fa</a></td>
|
||||
<td><a href="mailto:kourox@protonmail.com">Kourosh Firoozbakht</a></td>
|
||||
<td>79%</td>
|
||||
<td>77%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/country-4x3/pl.png" alt=""></td>
|
||||
<td>Polski (Polska)</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/pl_PL.po">pl_PL</a></td>
|
||||
<td></td>
|
||||
<td>95%</td>
|
||||
<td>92%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/country-4x3/br.png" alt=""></td>
|
||||
<td>Português (Brasil)</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/pt_BR.po">pt_BR</a></td>
|
||||
<td><a href="mailto:rnbastos@gmail.com">Renato Nunes Bastos</a></td>
|
||||
<td>93%</td>
|
||||
<td>91%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/country-4x3/pt.png" alt=""></td>
|
||||
<td>Português (Portugal)</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/pt_PT.po">pt_PT</a></td>
|
||||
<td><a href="mailto:jduar@protonmail.com">João Duarte</a></td>
|
||||
<td>95%</td>
|
||||
<td>92%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/country-4x3/ro.png" alt=""></td>
|
||||
<td>Română</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ro.po">ro</a></td>
|
||||
<td><a href="mailto:cristi.duluta@gmail.com">Cristi Duluta</a></td>
|
||||
<td>74%</td>
|
||||
<td>72%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/country-4x3/si.png" alt=""></td>
|
||||
<td>Slovenian (Slovenija)</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/sl_SI.po">sl_SI</a></td>
|
||||
<td></td>
|
||||
<td>41%</td>
|
||||
<td>40%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/country-4x3/se.png" alt=""></td>
|
||||
<td>Svenska</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/sv.po">sv</a></td>
|
||||
<td><a href="mailto:jonatan@autistici.org">Jonatan Nyberg</a></td>
|
||||
<td>68%</td>
|
||||
<td>66%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/country-4x3/th.png" alt=""></td>
|
||||
<td>Thai (ประเทศไทย)</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/th_TH.po">th_TH</a></td>
|
||||
<td></td>
|
||||
<td>50%</td>
|
||||
<td>49%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/country-4x3/vi.png" alt=""></td>
|
||||
<td>Tiếng Việt</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/vi.po">vi</a></td>
|
||||
<td></td>
|
||||
<td>82%</td>
|
||||
<td>79%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/country-4x3/tr.png" alt=""></td>
|
||||
<td>Türkçe (Türkiye)</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/tr_TR.po">tr_TR</a></td>
|
||||
<td><a href="mailto:arda@kilicdagi.com">Arda Kılıçdağı</a></td>
|
||||
<td>94%</td>
|
||||
<td>99%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/country-4x3/gr.png" alt=""></td>
|
||||
<td>Ελληνικά (Ελλάδα)</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/el_GR.po">el_GR</a></td>
|
||||
<td><a href="mailto:xaris@tuta.io">Harris Arvanitis</a></td>
|
||||
<td>92%</td>
|
||||
<td>89%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/country-4x3/ru.png" alt=""></td>
|
||||
<td>Русский (Россия)</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ru_RU.po">ru_RU</a></td>
|
||||
<td><a href="mailto:thesermanarm@gmail.com">Sergey Segeda</a></td>
|
||||
<td>92%</td>
|
||||
<td>96%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/country-4x3/rs.png" alt=""></td>
|
||||
<td>српски језик (Србија)</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/sr_RS.po">sr_RS</a></td>
|
||||
<td></td>
|
||||
<td>69%</td>
|
||||
<td>67%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/country-4x3/cn.png" alt=""></td>
|
||||
<td>中文 (简体)</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/zh_CN.po">zh_CN</a></td>
|
||||
<td><a href="mailto:fungdaat31@outlook.com">WhiredPlanck</a></td>
|
||||
<td>97%</td>
|
||||
<td>99%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/country-4x3/tw.png" alt=""></td>
|
||||
<td>中文 (繁體)</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/zh_TW.po">zh_TW</a></td>
|
||||
<td><a href="mailto:yaozeye@yahoo.co.jp">Yaoze Ye</a></td>
|
||||
<td>91%</td>
|
||||
<td>95%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/country-4x3/jp.png" alt=""></td>
|
||||
<td>日本語 (日本)</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ja_JP.po">ja_JP</a></td>
|
||||
<td><a href="mailto:genneko217@gmail.com">genneko</a></td>
|
||||
<td>97%</td>
|
||||
<td>96%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://joplinapp.org/images/flags/country-4x3/kr.png" alt=""></td>
|
||||
<td>한국어</td>
|
||||
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ko.po">ko</a></td>
|
||||
<td><a href="mailto:potatogim@potatogim.net">Ji-Hyeon Gim</a></td>
|
||||
<td>97%</td>
|
||||
<td>96%</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -1587,7 +1588,7 @@ Eg. <code>:search -- "-tag:tag1"</code>.</p>
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/markdown.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/markdown.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -764,7 +766,7 @@ graph TD;
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/mobile.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/mobile.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -440,7 +442,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/mobile.md
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/nextcloud_app.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/nextcloud_app.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -479,7 +481,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/nextcloud_app.md
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/plugins.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/plugins.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -442,7 +444,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/plugins.md
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/prereleases.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/prereleases.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -443,7 +445,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/prereleases.md
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/privacy.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/privacy.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -442,7 +444,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/privacy.md
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/rich_text_editor.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/rich_text_editor.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -414,6 +416,9 @@ https://github.com/laurent22/joplin/blob/dev/readme/rich_text_editor.md
|
||||
<li>
|
||||
<p>Tables must have a header, because this is a requirement in Markdown. When you create a table, it will let you create it without a header, but under the hood it will add an empty one. And next time you open the note, this empty header will be present.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>All items in a list must be of the same type, so for example all checkboxes, or all bullet points. If you require two different types, you should create two different lists separated by an horizontal rule or similar.</p>
|
||||
</li>
|
||||
</ul>
|
||||
<p>Those are the known limitations but if you notice any other issue not listed here, please let us know <a href="https://discourse.joplinapp.org/">in the forum</a>.</p>
|
||||
|
||||
@@ -455,7 +460,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/rich_text_editor.md
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/spec/e2ee.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/spec/e2ee.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -534,7 +536,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/spec/e2ee.md
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/spec/history.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/spec/history.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -466,7 +468,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/spec/history.md
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/spec/plugins.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/spec/plugins.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -504,7 +506,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/spec/plugins.md
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/spec/search_sorting.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/spec/search_sorting.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -461,7 +463,7 @@ This time-based weight decays logarithmically, becoming less of a factor than BM
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
523
docs/spec/server_delta_sync/index.html
Normal file
523
docs/spec/server_delta_sync/index.html
Normal file
@@ -0,0 +1,523 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
|
||||
<!--
|
||||
|
||||
!!! WARNING !!!
|
||||
|
||||
This file was auto-generated from readme/spec/server_delta_sync.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/spec/server_delta_sync.md
|
||||
|
||||
-->
|
||||
|
||||
<head>
|
||||
<title>Joplin Server delta sync | Joplin</title>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="stylesheet" href="https://joplinapp.org/css/bootstrap.min.css">
|
||||
<link rel="shortcut icon" type="image/x-icon" href="https://joplinapp.org/favicon.ico">
|
||||
<!-- <link rel="stylesheet" href="https://joplinapp.org/css/fontawesome-all.min.css"> -->
|
||||
<link rel="stylesheet" href="https://joplinapp.org/css/fork-awesome.min.css">
|
||||
<script src="https://joplinapp.org/js/jquery-3.2.1.slim.min.js"></script>
|
||||
<style>
|
||||
body {
|
||||
background-color: #F1F1F1;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.root {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
a[href^="mailto:"] {
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
table {
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
td, th {
|
||||
padding: .8em;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
|
||||
.page-markdown table pre,
|
||||
.page-markdown table blockquote {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.page-markdown table pre,
|
||||
.page-markdown table blockquote {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.page-markdown table pre {
|
||||
background-color: rgba(0,0,0,0);
|
||||
border: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
h1, h2 {
|
||||
border-bottom: 1px solid #eaecef;
|
||||
padding-bottom: 0.3em;
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
||||
font-weight: 600;
|
||||
font-size: 2em;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
h2 {
|
||||
font-size: 1.6em;
|
||||
}
|
||||
h3 {
|
||||
font-size: 1.3em;
|
||||
}
|
||||
code {
|
||||
color: black;
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
}
|
||||
pre {
|
||||
font-size: .85em;
|
||||
}
|
||||
blockquote {
|
||||
font-size: 1em;
|
||||
color: #555;
|
||||
};
|
||||
#toc ul {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
#toc > ul > li {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
#toc {
|
||||
padding-bottom: 1em;
|
||||
}
|
||||
.title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.title-icon {
|
||||
display: flex;
|
||||
height: 1em;
|
||||
}
|
||||
.title-text {
|
||||
display: flex;
|
||||
font-weight: normal;
|
||||
margin-bottom: .2em;
|
||||
margin-left: .5em;
|
||||
}
|
||||
.sub-title {
|
||||
font-weight: normal;
|
||||
}
|
||||
.container {
|
||||
background-color: white;
|
||||
padding: 0;
|
||||
box-shadow: 0 10px 20px #888888;
|
||||
}
|
||||
table.screenshots {
|
||||
margin-top: 2em;
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
table.screenshots th {
|
||||
height: 3em;
|
||||
text-align: center;
|
||||
}
|
||||
table.screenshots th,
|
||||
table.screenshots td {
|
||||
border: 1px solid #C2C2C2;
|
||||
}
|
||||
img[align="left"] {
|
||||
margin-right: 10px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.mobile-screenshot {
|
||||
height: 40em;
|
||||
padding: 1em;
|
||||
}
|
||||
.cli-screenshot-wrapper {
|
||||
background-color: black;
|
||||
vertical-align: top;
|
||||
padding: 1em 2em 1em 1em;
|
||||
}
|
||||
.cli-screenshot {
|
||||
font-family: "Monaco", "Inconsolata", "CONSOLAS", "Deja Vu Sans Mono", "Droid Sans Mono", "Andale Mono", monospace;
|
||||
background-color: black;
|
||||
color: white;
|
||||
border: none;
|
||||
}
|
||||
.cli-screenshot .prompt {
|
||||
color: #48C2F0;
|
||||
}
|
||||
.top-screenshot {
|
||||
margin-top: 2em;
|
||||
text-align: center;
|
||||
}
|
||||
.header {
|
||||
position: relative;
|
||||
padding-left: 2em;
|
||||
padding-right: 2em;
|
||||
padding-top: 1em;
|
||||
padding-bottom: 1em;
|
||||
color: white;
|
||||
background-color: #2B2B3D;
|
||||
}
|
||||
.header a h1 {
|
||||
color: white;
|
||||
}
|
||||
.header a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.content {
|
||||
padding-left: 2em;
|
||||
padding-right: 2em;
|
||||
padding-bottom: 2em;
|
||||
padding-top: 2em;
|
||||
}
|
||||
.forkme {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top:0;
|
||||
}
|
||||
.nav-wrapper {
|
||||
position: relative;
|
||||
width: inherit;
|
||||
}
|
||||
.nav {
|
||||
background-color: black;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
}
|
||||
.nav.sticky {
|
||||
position:fixed;
|
||||
top: 0;
|
||||
width: inherit;
|
||||
box-shadow: 0 0 10px #000000;
|
||||
}
|
||||
.nav a {
|
||||
color: white;
|
||||
display: inline-block;
|
||||
padding: .6em .9em .6em .9em;
|
||||
}
|
||||
.nav ul {
|
||||
padding-left: 2em;
|
||||
margin-bottom: 0;
|
||||
display: table-cell;
|
||||
display: flex;
|
||||
width: 100%;
|
||||
}
|
||||
.nav ul li {
|
||||
display: inline-block;
|
||||
padding: 0;
|
||||
}
|
||||
.nav li.selected {
|
||||
background-color: #222;
|
||||
font-weight: bold;
|
||||
}
|
||||
.nav-right {
|
||||
display: flex;
|
||||
text-align: right;
|
||||
vertical-align: middle;
|
||||
line-height: 0;
|
||||
margin-right: 10px;
|
||||
}
|
||||
.nav-right .share-btn {
|
||||
display: none;
|
||||
}
|
||||
.nav-right .small-share-btn {
|
||||
display: none;
|
||||
}
|
||||
.footer {
|
||||
padding: 2em;
|
||||
border-top: 1px solid #d4d4d4;
|
||||
margin-top: 2em;
|
||||
color: gray;
|
||||
font-size: .9em;
|
||||
}
|
||||
a.heading-anchor {
|
||||
display: inline-block;
|
||||
opacity: 0;
|
||||
width: 1.3em;
|
||||
font-size: 0.7em;
|
||||
margin-left: 0.4em;
|
||||
line-height: 1em;
|
||||
text-decoration: none;
|
||||
transition: opacity 0.3s;
|
||||
}
|
||||
a.heading-anchor:hover,
|
||||
h1:hover a.heading-anchor,
|
||||
h2:hover a.heading-anchor,
|
||||
h3:hover a.heading-anchor,
|
||||
h4:hover a.heading-anchor,
|
||||
h5:hover a.heading-anchor,
|
||||
h6:hover a.heading-anchor {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
@media (min-width: 992px) {
|
||||
.content{
|
||||
display: flex;
|
||||
}
|
||||
|
||||
#toc{
|
||||
display: block!important;
|
||||
align-self: flex-start;
|
||||
width: 300px;
|
||||
position: sticky; top: 20px; left: 0;
|
||||
}
|
||||
|
||||
.main{
|
||||
width: calc(100% - 300px);
|
||||
}
|
||||
}
|
||||
|
||||
.bottom-links {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
border-top: 1px solid #d4d4d4;
|
||||
margin-top: 30px;
|
||||
padding-top: 25px;
|
||||
}
|
||||
|
||||
@media all and (min-width: 400px) {
|
||||
.nav-right .share-btn {
|
||||
display: inline-block;
|
||||
}
|
||||
.nav-right .small-share-btn {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="container root page-server_delta_sync">
|
||||
|
||||
<div class="header">
|
||||
<a class="forkme" href="https://github.com/laurent22/joplin"><img src="https://joplinapp.org/images/ForkMe.png"/></a>
|
||||
<a href="https://joplinapp.org"><h1 class="title"><img class="title-icon" src="https://joplinapp.org/images/Icon512.png"><span class="title-text">Joplin</span></h1></a>
|
||||
<p class="sub-title">An open source note taking and to-do application with synchronisation capabilities</p>
|
||||
</div>
|
||||
|
||||
<div class="nav-wrapper">
|
||||
<div class="nav">
|
||||
<ul>
|
||||
<li class=""><a href="https://joplinapp.org/" title="Home"><i class="fa fa-home"></i></a></li>
|
||||
<li><a href="https://discourse.joplinapp.org" title="Forum">Forum</a></li>
|
||||
<li><a class="help" href="#" title="Menu">Menu</a></li>
|
||||
<!-- <li><a class="gsod" href="https://joplinapp.org/gsod2020/" title="Google Season of Docs 2020">GSoD 2020</a></li> -->
|
||||
</ul>
|
||||
<div class="nav-right">
|
||||
<!--
|
||||
<iframe class="share-btn" src="https://www.facebook.com/plugins/share_button.php?href=http%3A%2F%2Fjoplinapp.org&layout=button&size=small&mobile_iframe=true&width=60&height=20&appId" width="60" height="20" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowTransparency="true"></iframe>
|
||||
<iframe class="share-btn" src="https://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fjoplinapp.org" width="62" height="20" title="Tweet" style="border: 0; overflow: hidden;"></iframe>
|
||||
-->
|
||||
<iframe class="share-btn share-btn-github" src="https://ghbtns.com/github-btn.html?user=laurent22&repo=joplin&type=star&count=true" frameborder="0" scrolling="0" width="100px" height="20px"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<div id="toc"><ul>
|
||||
<li>
|
||||
<p>Applications</p>
|
||||
<ul>
|
||||
<li><a href="https://joplinapp.org/desktop/">Desktop application</a></li>
|
||||
<li><a href="https://joplinapp.org/mobile/">Mobile applications</a></li>
|
||||
<li><a href="https://joplinapp.org/terminal/">Terminal application</a></li>
|
||||
<li><a href="https://joplinapp.org/clipper/">Web Clipper</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p>Support</p>
|
||||
<ul>
|
||||
<li><a href="https://discourse.joplinapp.org">Joplin Forum</a></li>
|
||||
<li><a href="https://joplinapp.org/markdown/">Markdown Guide</a></li>
|
||||
<li><a href="https://joplinapp.org/e2ee/">How to enable end-to-end encryption</a></li>
|
||||
<li><a href="https://joplinapp.org/conflict/">What is a conflict?</a></li>
|
||||
<li><a href="https://joplinapp.org/debugging/">How to enable debug mode</a></li>
|
||||
<li><a href="https://joplinapp.org/rich_text_editor/">About the Rich Text editor limitations</a></li>
|
||||
<li><a href="https://joplinapp.org/faq/">FAQ</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p>Joplin API - Get Started</p>
|
||||
<ul>
|
||||
<li><a href="https://joplinapp.org/api/overview/">Joplin API Overview</a></li>
|
||||
<li><a href="https://joplinapp.org/api/get_started/plugins/">Plugin development</a></li>
|
||||
<li><a href="https://joplinapp.org/api/tutorials/toc_plugin/">Plugin tutorial</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p>Joplin API - References</p>
|
||||
<ul>
|
||||
<li><a href="https://joplinapp.org/api/references/plugin_api/classes/joplin.html">Plugin API</a></li>
|
||||
<li><a href="https://joplinapp.org/api/references/rest_api/">Data API</a></li>
|
||||
<li><a href="https://joplinapp.org/api/references/plugin_manifest/">Plugin manifest</a></li>
|
||||
<li><a href="https://joplinapp.org/api/references/plugin_loading_rules/">Plugin loading rules</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p>Development</p>
|
||||
<ul>
|
||||
<li><a href="https://github.com/laurent22/joplin/blob/dev/BUILD.md">How to build the apps</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/e2ee/">End-to-end encryption spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/history/">Note History spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p>Google Summer of Code 2020</p>
|
||||
<ul>
|
||||
<li><a href="https://joplinapp.org/gsoc2020/index/">Google Summer of Code 2020</a></li>
|
||||
<li><a href="https://joplinapp.org/gsoc2020/ideas/">Project Ideas</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p>About</p>
|
||||
<ul>
|
||||
<li><a href="https://joplinapp.org/changelog/">Changelog (Desktop App)</a></li>
|
||||
<li><a href="https://joplinapp.org/changelog_cli/">Changelog (CLI App)</a></li>
|
||||
<li><a href="https://joplinapp.org/stats/">Stats</a></li>
|
||||
<li><a href="https://joplinapp.org/donate/">Donate</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="main">
|
||||
<h1>Joplin Server delta sync<a name="joplin-server-delta-sync" href="#joplin-server-delta-sync" class="heading-anchor">🔗</a></h1>
|
||||
<p>This documentation is meant to provide a high level overview of delta sync API. Exact technical details might change over time and would be documented separately in an API doc.</p>
|
||||
<p>Delta sync provides an API end point that gives a list of the latest change events since a particular point. At a high level, it works like so:</p>
|
||||
<ul>
|
||||
<li>
|
||||
<p>User calls <code>/api/files/delta</code> and get a list of the latest changes on the sync target. They also get a <code>cursor</code> object that can be used to check for the latest changes at a later time. A <code>cursor</code> essentially represents a point in time.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Later on, they call <code>/api/file/delta?cursor=CURSOR</code>, with the cursor they previously got, and they will get the latest events since that cursor. They will also get a new cursor, which they would use again to get the following events, and so on.</p>
|
||||
</li>
|
||||
</ul>
|
||||
<p>The events are tied to a particular parent ID - in other words it's only possible to list the changes associated with a particular directory (non-recursive). For now, this is sufficient for the purpose of Joplin synchronisation, but later on it might be possible to get the changes in a recursive way.</p>
|
||||
<h2>What is a change event<a name="what-is-a-change-event" href="#what-is-a-change-event" class="heading-anchor">🔗</a></h2>
|
||||
<p>An event can be "create", "update" or "detete" and is associated with a given file. The client uses this info to apply the change locally - creating, updating or deleting the file as needed.</p>
|
||||
<p>Attached to the event, is also a copy of the file metadata, so the client doesn't need to a do a second request to fetch it.</p>
|
||||
<p>Internally, the event also stores the file name and parent ID. This is used when an item is deleted since in that case the item ID only would not be sufficient to know where the item was initally stored.</p>
|
||||
<h2>Event compression<a name="event-compression" href="#event-compression" class="heading-anchor">🔗</a></h2>
|
||||
<p>To reduce the data being transferred, the API compresses the events by removing redundant ones. For example, multiple updates are compressed into one, since the client only need to know that the item has been updated at least once. The following rules are currently applied to compress the events:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Event sequence</th>
|
||||
<th>Result</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>update - update</td>
|
||||
<td>update</td>
|
||||
<td>If an item is updated twice or more, we only send one update event back</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>create - update</td>
|
||||
<td>create</td>
|
||||
<td>If an item has been created then modified, we only send one create event, with the latest version of the file</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>create - delete</td>
|
||||
<td>NOOP</td>
|
||||
<td>If an item has been created, then deleted, we don't send anything back. For the client, this file has never existed.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>update - delete</td>
|
||||
<td>delete</td>
|
||||
<td>If an item is updated multiple times, then deleted, we only send a "delete" event back.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Compression works at a page-level so depending on how many items are requested via the <code>limit</code> parameters, different compression will apply.</p>
|
||||
<p>Due to this compression, the <code>limit</code> query parameter is only advisory. There's no guarantee that exactly <code>limit</code> items will be returned as some items might have been removed after compression. There's however a guarantee that no more than <code>limit</code> items will be returned.</p>
|
||||
<h2>Delete event limitation<a name="delete-event-limitation" href="#delete-event-limitation" class="heading-anchor">🔗</a></h2>
|
||||
<p>There's currently a known limitation regarding delete events. When looking at a particular event page, the server might find that a "create" or "update" event is associated with a non-existing file, which would have been deleted. In that case, the server will send back a "delete" event. When looking at following pages, the server will eventually process the actual "delete" event for that item - and send again a "delete" event for it.</p>
|
||||
<p>This is a known issue and to solve it would require looking ahead in event pages, which would slow down the process. It means it's expected that a client might receive a "delete" event for a file, even though it has no such file or has already deleted it. In that case, the processing for that "delete" event should be a noop, not an error.</p>
|
||||
<h2>ResyncRequired error<a name="resyncrequired-error" href="#resyncrequired-error" class="heading-anchor">🔗</a></h2>
|
||||
<p>In some cases, in particular when a delta cursor has expired or is invalid, the server might throw an error with a "resyncRequired" error code. In that case, the client should discard their cursor and sync the complete data again from the beginning.</p>
|
||||
<p>This error should be rare - currently it would only happen if the cursor is invalid. Later on, it will also happen when old events have been deleted after x months. So a client that has not synced in a long time might see this error. The error code could also be used to solve server-side errors in some rare cases.</p>
|
||||
<p>When syncing from the start, there will be many "create" events for files that are already there locally. In that case, they should just be skipped.</p>
|
||||
<h2>Regarding the deletion of old change events<a name="regarding-the-deletion-of-old-change-events" href="#regarding-the-deletion-of-old-change-events" class="heading-anchor">🔗</a></h2>
|
||||
<p>Keeping all change events permanently would represent a lot of data, however it might be necessary. Without it, it won't be possible for a client to know what file has been deleted and thus a client that has not synced for a long time will keep its files permanently.</p>
|
||||
<p>So most likely we'll always keep the change events. However, we could compress the old ones to just "create" and "delete" events. All "update" events are not needed. And for a file that has been deleted, we don't need to keep the "create" event.</p>
|
||||
<p>The client would then follow this logic:</p>
|
||||
<ul>
|
||||
<li>For "create" events:
|
||||
<ul>
|
||||
<li>If the file is present locally, update it with the version from the server.</li>
|
||||
<li>If the file is not present, create it using the version from the server.</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>For "delete" events:
|
||||
<ul>
|
||||
<li>If the file is present, delete it.</li>
|
||||
<li>If it is not, skip the event (not an error).</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<p>It might seem we could derive the "create" events simply by looking at the files in the directory - all files that are there would implicitely have a "create" event. The issue however is that it's not possible to reliably iterate over the files in a folder, because they might change in the meantime. The change events on the other hand provide an ID that can be used reliably to iterate over changes, and to resume at any time.</p>
|
||||
|
||||
<div class="bottom-links">
|
||||
<a href="https://github.com/laurent22/joplin/blob/dev/readme/spec/server_delta_sync.md">
|
||||
<i class="fa fa-github"></i> Improve this doc
|
||||
</a>
|
||||
</div>
|
||||
<script>
|
||||
function stickyHeader() {
|
||||
return; // Disabled
|
||||
|
||||
if ($(window).scrollTop() > 179) {
|
||||
$('.nav').addClass('sticky');
|
||||
} else {
|
||||
$('.nav').removeClass('sticky');
|
||||
}
|
||||
}
|
||||
|
||||
$('#toc').hide();
|
||||
|
||||
$('.help').click(function(event) {
|
||||
event.preventDefault();
|
||||
$('#toc').show();
|
||||
});
|
||||
|
||||
$(window).scroll(function() {
|
||||
stickyHeader();
|
||||
});
|
||||
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
||||
ga('create', 'UA-103586105-1', 'auto');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
||||
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
469
docs/spec/server_file_url_format/index.html
Normal file
469
docs/spec/server_file_url_format/index.html
Normal file
@@ -0,0 +1,469 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
|
||||
<!--
|
||||
|
||||
!!! WARNING !!!
|
||||
|
||||
This file was auto-generated from readme/spec/server_file_url_format.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/spec/server_file_url_format.md
|
||||
|
||||
-->
|
||||
|
||||
<head>
|
||||
<title>Structure of file URLs in Joplin Server | Joplin</title>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="stylesheet" href="https://joplinapp.org/css/bootstrap.min.css">
|
||||
<link rel="shortcut icon" type="image/x-icon" href="https://joplinapp.org/favicon.ico">
|
||||
<!-- <link rel="stylesheet" href="https://joplinapp.org/css/fontawesome-all.min.css"> -->
|
||||
<link rel="stylesheet" href="https://joplinapp.org/css/fork-awesome.min.css">
|
||||
<script src="https://joplinapp.org/js/jquery-3.2.1.slim.min.js"></script>
|
||||
<style>
|
||||
body {
|
||||
background-color: #F1F1F1;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.root {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
a[href^="mailto:"] {
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
table {
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
td, th {
|
||||
padding: .8em;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
|
||||
.page-markdown table pre,
|
||||
.page-markdown table blockquote {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.page-markdown table pre,
|
||||
.page-markdown table blockquote {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.page-markdown table pre {
|
||||
background-color: rgba(0,0,0,0);
|
||||
border: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
h1, h2 {
|
||||
border-bottom: 1px solid #eaecef;
|
||||
padding-bottom: 0.3em;
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
||||
font-weight: 600;
|
||||
font-size: 2em;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
h2 {
|
||||
font-size: 1.6em;
|
||||
}
|
||||
h3 {
|
||||
font-size: 1.3em;
|
||||
}
|
||||
code {
|
||||
color: black;
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
}
|
||||
pre {
|
||||
font-size: .85em;
|
||||
}
|
||||
blockquote {
|
||||
font-size: 1em;
|
||||
color: #555;
|
||||
};
|
||||
#toc ul {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
#toc > ul > li {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
#toc {
|
||||
padding-bottom: 1em;
|
||||
}
|
||||
.title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.title-icon {
|
||||
display: flex;
|
||||
height: 1em;
|
||||
}
|
||||
.title-text {
|
||||
display: flex;
|
||||
font-weight: normal;
|
||||
margin-bottom: .2em;
|
||||
margin-left: .5em;
|
||||
}
|
||||
.sub-title {
|
||||
font-weight: normal;
|
||||
}
|
||||
.container {
|
||||
background-color: white;
|
||||
padding: 0;
|
||||
box-shadow: 0 10px 20px #888888;
|
||||
}
|
||||
table.screenshots {
|
||||
margin-top: 2em;
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
table.screenshots th {
|
||||
height: 3em;
|
||||
text-align: center;
|
||||
}
|
||||
table.screenshots th,
|
||||
table.screenshots td {
|
||||
border: 1px solid #C2C2C2;
|
||||
}
|
||||
img[align="left"] {
|
||||
margin-right: 10px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.mobile-screenshot {
|
||||
height: 40em;
|
||||
padding: 1em;
|
||||
}
|
||||
.cli-screenshot-wrapper {
|
||||
background-color: black;
|
||||
vertical-align: top;
|
||||
padding: 1em 2em 1em 1em;
|
||||
}
|
||||
.cli-screenshot {
|
||||
font-family: "Monaco", "Inconsolata", "CONSOLAS", "Deja Vu Sans Mono", "Droid Sans Mono", "Andale Mono", monospace;
|
||||
background-color: black;
|
||||
color: white;
|
||||
border: none;
|
||||
}
|
||||
.cli-screenshot .prompt {
|
||||
color: #48C2F0;
|
||||
}
|
||||
.top-screenshot {
|
||||
margin-top: 2em;
|
||||
text-align: center;
|
||||
}
|
||||
.header {
|
||||
position: relative;
|
||||
padding-left: 2em;
|
||||
padding-right: 2em;
|
||||
padding-top: 1em;
|
||||
padding-bottom: 1em;
|
||||
color: white;
|
||||
background-color: #2B2B3D;
|
||||
}
|
||||
.header a h1 {
|
||||
color: white;
|
||||
}
|
||||
.header a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.content {
|
||||
padding-left: 2em;
|
||||
padding-right: 2em;
|
||||
padding-bottom: 2em;
|
||||
padding-top: 2em;
|
||||
}
|
||||
.forkme {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top:0;
|
||||
}
|
||||
.nav-wrapper {
|
||||
position: relative;
|
||||
width: inherit;
|
||||
}
|
||||
.nav {
|
||||
background-color: black;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
}
|
||||
.nav.sticky {
|
||||
position:fixed;
|
||||
top: 0;
|
||||
width: inherit;
|
||||
box-shadow: 0 0 10px #000000;
|
||||
}
|
||||
.nav a {
|
||||
color: white;
|
||||
display: inline-block;
|
||||
padding: .6em .9em .6em .9em;
|
||||
}
|
||||
.nav ul {
|
||||
padding-left: 2em;
|
||||
margin-bottom: 0;
|
||||
display: table-cell;
|
||||
display: flex;
|
||||
width: 100%;
|
||||
}
|
||||
.nav ul li {
|
||||
display: inline-block;
|
||||
padding: 0;
|
||||
}
|
||||
.nav li.selected {
|
||||
background-color: #222;
|
||||
font-weight: bold;
|
||||
}
|
||||
.nav-right {
|
||||
display: flex;
|
||||
text-align: right;
|
||||
vertical-align: middle;
|
||||
line-height: 0;
|
||||
margin-right: 10px;
|
||||
}
|
||||
.nav-right .share-btn {
|
||||
display: none;
|
||||
}
|
||||
.nav-right .small-share-btn {
|
||||
display: none;
|
||||
}
|
||||
.footer {
|
||||
padding: 2em;
|
||||
border-top: 1px solid #d4d4d4;
|
||||
margin-top: 2em;
|
||||
color: gray;
|
||||
font-size: .9em;
|
||||
}
|
||||
a.heading-anchor {
|
||||
display: inline-block;
|
||||
opacity: 0;
|
||||
width: 1.3em;
|
||||
font-size: 0.7em;
|
||||
margin-left: 0.4em;
|
||||
line-height: 1em;
|
||||
text-decoration: none;
|
||||
transition: opacity 0.3s;
|
||||
}
|
||||
a.heading-anchor:hover,
|
||||
h1:hover a.heading-anchor,
|
||||
h2:hover a.heading-anchor,
|
||||
h3:hover a.heading-anchor,
|
||||
h4:hover a.heading-anchor,
|
||||
h5:hover a.heading-anchor,
|
||||
h6:hover a.heading-anchor {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
@media (min-width: 992px) {
|
||||
.content{
|
||||
display: flex;
|
||||
}
|
||||
|
||||
#toc{
|
||||
display: block!important;
|
||||
align-self: flex-start;
|
||||
width: 300px;
|
||||
position: sticky; top: 20px; left: 0;
|
||||
}
|
||||
|
||||
.main{
|
||||
width: calc(100% - 300px);
|
||||
}
|
||||
}
|
||||
|
||||
.bottom-links {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
border-top: 1px solid #d4d4d4;
|
||||
margin-top: 30px;
|
||||
padding-top: 25px;
|
||||
}
|
||||
|
||||
@media all and (min-width: 400px) {
|
||||
.nav-right .share-btn {
|
||||
display: inline-block;
|
||||
}
|
||||
.nav-right .small-share-btn {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="container root page-server_file_url_format">
|
||||
|
||||
<div class="header">
|
||||
<a class="forkme" href="https://github.com/laurent22/joplin"><img src="https://joplinapp.org/images/ForkMe.png"/></a>
|
||||
<a href="https://joplinapp.org"><h1 class="title"><img class="title-icon" src="https://joplinapp.org/images/Icon512.png"><span class="title-text">Joplin</span></h1></a>
|
||||
<p class="sub-title">An open source note taking and to-do application with synchronisation capabilities</p>
|
||||
</div>
|
||||
|
||||
<div class="nav-wrapper">
|
||||
<div class="nav">
|
||||
<ul>
|
||||
<li class=""><a href="https://joplinapp.org/" title="Home"><i class="fa fa-home"></i></a></li>
|
||||
<li><a href="https://discourse.joplinapp.org" title="Forum">Forum</a></li>
|
||||
<li><a class="help" href="#" title="Menu">Menu</a></li>
|
||||
<!-- <li><a class="gsod" href="https://joplinapp.org/gsod2020/" title="Google Season of Docs 2020">GSoD 2020</a></li> -->
|
||||
</ul>
|
||||
<div class="nav-right">
|
||||
<!--
|
||||
<iframe class="share-btn" src="https://www.facebook.com/plugins/share_button.php?href=http%3A%2F%2Fjoplinapp.org&layout=button&size=small&mobile_iframe=true&width=60&height=20&appId" width="60" height="20" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowTransparency="true"></iframe>
|
||||
<iframe class="share-btn" src="https://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fjoplinapp.org" width="62" height="20" title="Tweet" style="border: 0; overflow: hidden;"></iframe>
|
||||
-->
|
||||
<iframe class="share-btn share-btn-github" src="https://ghbtns.com/github-btn.html?user=laurent22&repo=joplin&type=star&count=true" frameborder="0" scrolling="0" width="100px" height="20px"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<div id="toc"><ul>
|
||||
<li>
|
||||
<p>Applications</p>
|
||||
<ul>
|
||||
<li><a href="https://joplinapp.org/desktop/">Desktop application</a></li>
|
||||
<li><a href="https://joplinapp.org/mobile/">Mobile applications</a></li>
|
||||
<li><a href="https://joplinapp.org/terminal/">Terminal application</a></li>
|
||||
<li><a href="https://joplinapp.org/clipper/">Web Clipper</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p>Support</p>
|
||||
<ul>
|
||||
<li><a href="https://discourse.joplinapp.org">Joplin Forum</a></li>
|
||||
<li><a href="https://joplinapp.org/markdown/">Markdown Guide</a></li>
|
||||
<li><a href="https://joplinapp.org/e2ee/">How to enable end-to-end encryption</a></li>
|
||||
<li><a href="https://joplinapp.org/conflict/">What is a conflict?</a></li>
|
||||
<li><a href="https://joplinapp.org/debugging/">How to enable debug mode</a></li>
|
||||
<li><a href="https://joplinapp.org/rich_text_editor/">About the Rich Text editor limitations</a></li>
|
||||
<li><a href="https://joplinapp.org/faq/">FAQ</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p>Joplin API - Get Started</p>
|
||||
<ul>
|
||||
<li><a href="https://joplinapp.org/api/overview/">Joplin API Overview</a></li>
|
||||
<li><a href="https://joplinapp.org/api/get_started/plugins/">Plugin development</a></li>
|
||||
<li><a href="https://joplinapp.org/api/tutorials/toc_plugin/">Plugin tutorial</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p>Joplin API - References</p>
|
||||
<ul>
|
||||
<li><a href="https://joplinapp.org/api/references/plugin_api/classes/joplin.html">Plugin API</a></li>
|
||||
<li><a href="https://joplinapp.org/api/references/rest_api/">Data API</a></li>
|
||||
<li><a href="https://joplinapp.org/api/references/plugin_manifest/">Plugin manifest</a></li>
|
||||
<li><a href="https://joplinapp.org/api/references/plugin_loading_rules/">Plugin loading rules</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p>Development</p>
|
||||
<ul>
|
||||
<li><a href="https://github.com/laurent22/joplin/blob/dev/BUILD.md">How to build the apps</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/e2ee/">End-to-end encryption spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/history/">Note History spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p>Google Summer of Code 2020</p>
|
||||
<ul>
|
||||
<li><a href="https://joplinapp.org/gsoc2020/index/">Google Summer of Code 2020</a></li>
|
||||
<li><a href="https://joplinapp.org/gsoc2020/ideas/">Project Ideas</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p>About</p>
|
||||
<ul>
|
||||
<li><a href="https://joplinapp.org/changelog/">Changelog (Desktop App)</a></li>
|
||||
<li><a href="https://joplinapp.org/changelog_cli/">Changelog (CLI App)</a></li>
|
||||
<li><a href="https://joplinapp.org/stats/">Stats</a></li>
|
||||
<li><a href="https://joplinapp.org/donate/">Donate</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="main">
|
||||
<h1>Structure of file URLs in Joplin Server<a name="structure-of-file-urls-in-joplin-server" href="#structure-of-file-urls-in-joplin-server" class="heading-anchor">🔗</a></h1>
|
||||
<p>To identify a file, Joplin Server supports two types of URLs:</p>
|
||||
<h2>Access by ID<a name="access-by-id" href="#access-by-id" class="heading-anchor">🔗</a></h2>
|
||||
<p><strong>Format:</strong> <code>BASE_URL/files/FILE_ID</code></p>
|
||||
<p>This is the simplest way and it matches how other API items are accessed by ID.</p>
|
||||
<p>For example: <code>https://example.com/api/files/5c7e0f3f54434ba</code></p>
|
||||
<h2>Access by full path<a name="access-by-full-path" href="#access-by-full-path" class="heading-anchor">🔗</a></h2>
|
||||
<p><strong>Format:</strong> <code>BASE_URL/files/SPECIAL_DIR:/path/to/file/:</code></p>
|
||||
<p>This is to access a file by its full path. In this case, the path must be prefixed by <code>SPECIAL_DIR</code>, which can only be <code>root</code> at the moment. Then to differentiate the path from URL segments, it needs to be wrapped in colons <code>:</code>.</p>
|
||||
<p>For example, to access the metadata of file <code>/my/file.txt</code></p>
|
||||
<p><code>https://example.com/api/files/root:/my/file.txt:</code></p>
|
||||
<p>To access its content:</p>
|
||||
<p><code>https://example.com/api/files/root:/my/file.txt:/content</code></p>
|
||||
<p>To access the root only (for example to list its content):</p>
|
||||
<p><code>https://example.com/api/files/root:/:</code></p>
|
||||
<p>Which can also be written as:</p>
|
||||
<p><code>https://example.com/api/files/root</code></p>
|
||||
<h2>Difference between API and web app end points<a name="difference-between-api-and-web-app-end-points" href="#difference-between-api-and-web-app-end-points" class="heading-anchor">🔗</a></h2>
|
||||
<p>The API and web app end points are consistent in the way they access files, except that in one case the URLs will start with <code>/api</code> and the other with just <code>/</code>. For example, this would access the same file:</p>
|
||||
<ul>
|
||||
<li>API: <code>https://example.com/api/files/root:/my/file.txt:</code></li>
|
||||
<li>Web: <code>https://example.com/files/root:/my/file.txt:</code></li>
|
||||
</ul>
|
||||
|
||||
<div class="bottom-links">
|
||||
<a href="https://github.com/laurent22/joplin/blob/dev/readme/spec/server_file_url_format.md">
|
||||
<i class="fa fa-github"></i> Improve this doc
|
||||
</a>
|
||||
</div>
|
||||
<script>
|
||||
function stickyHeader() {
|
||||
return; // Disabled
|
||||
|
||||
if ($(window).scrollTop() > 179) {
|
||||
$('.nav').addClass('sticky');
|
||||
} else {
|
||||
$('.nav').removeClass('sticky');
|
||||
}
|
||||
}
|
||||
|
||||
$('#toc').hide();
|
||||
|
||||
$('.help').click(function(event) {
|
||||
event.preventDefault();
|
||||
$('#toc').show();
|
||||
});
|
||||
|
||||
$(window).scroll(function() {
|
||||
stickyHeader();
|
||||
});
|
||||
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
||||
ga('create', 'UA-103586105-1', 'auto');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
||||
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/spec/sync_lock.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/spec/sync_lock.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -498,7 +500,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/spec/sync_lock.md
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/stats.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/stats.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -1447,7 +1449,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/stats.md
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/terminal.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/terminal.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -1117,7 +1119,7 @@ version
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/welcome/1_welcome_to_joplin.
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/welcome/1_welcome_to_joplin.
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -486,7 +488,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/welcome/1_welcome_to_joplin.
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/welcome/2_importing_and_expo
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/welcome/2_importing_and_expo
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -446,7 +448,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/welcome/2_importing_and_expo
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/welcome/3_synchronising_your
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/welcome/3_synchronising_your
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -450,7 +452,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/welcome/3_synchronising_your
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/welcome/4_tips.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/welcome/4_tips.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -503,7 +505,7 @@ $$</p>
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/welcome/5_privacy.md
|
||||
background-color: #eee;
|
||||
border: 1px solid #ccc;
|
||||
font-size: .85em;
|
||||
word-break: break-all;
|
||||
/* word-break: break-all; */
|
||||
}
|
||||
pre code {
|
||||
border: none;
|
||||
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/welcome/5_privacy.md
|
||||
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
|
||||
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -470,7 +472,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/welcome/5_privacy.md
|
||||
</div></div>
|
||||
|
||||
<div class="footer">
|
||||
Copyright (C) 2016-2020 Laurent Cozic
|
||||
Copyright (C) 2016-2021 Laurent Cozic
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -1,5 +1,15 @@
|
||||
module.exports = {
|
||||
'**/*.ts?(x)': () => 'npm run tsc',
|
||||
// Don't compile when committing as it will process all TS files in the
|
||||
// monorepo, which is too slow. Errors should be checked during development
|
||||
// using `npm run watch`.
|
||||
//
|
||||
// Or if we add this back, we could do something like this:
|
||||
// https://stackoverflow.com/a/44748041/561309
|
||||
//
|
||||
// The script would check where the TS file is located, then use the right
|
||||
// tsconfig.json file along with the tsconfig override.
|
||||
//
|
||||
// '**/*.ts?(x)': () => 'npm run tsc',
|
||||
'*.{js,jsx,ts,tsx}': [
|
||||
'npm run linter-precommit',
|
||||
'git add',
|
||||
|
21
package.json
21
package.json
@@ -7,35 +7,31 @@
|
||||
},
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
"addPackageCli": "lerna add --scope joplin",
|
||||
"addPackageCliD": "lerna add --scope joplin -D",
|
||||
"addPackageDesktop": "lerna add --scope @joplin/app-desktop",
|
||||
"addPackageDesktopD": "lerna add --scope @joplin/app-desktop -D",
|
||||
"addPackageMobile": "lerna add --scope @joplin/app-mobile",
|
||||
"addPackageMobileD": "lerna add --scope @joplin/app-mobile -D",
|
||||
"bootstrap": "lerna bootstrap --no-ci",
|
||||
"bootstrapIgnoreScripts": "lerna bootstrap --ignore-scripts --no-ci",
|
||||
"build": "lerna run build && npm run tsc",
|
||||
"buildApiDoc": "npm start --prefix=packages/app-cli -- apidoc ../../readme/api/references/rest_api.md",
|
||||
"buildDoc": "./packages/tools/build-all.sh",
|
||||
"buildPluginDoc": "typedoc --name 'Joplin Plugin API Documentation' --mode file -theme './Assets/PluginDocTheme/' --readme './Assets/PluginDocTheme/index.md' --excludeNotExported --excludeExternals --excludePrivate --excludeProtected --out docs/api/references/plugin_api packages/lib/services/plugins/api/",
|
||||
"buildTranslations": "npm run tsc && node packages/tools/build-translation.js",
|
||||
"buildTranslationsNoTsc": "node packages/tools/build-translation.js",
|
||||
"buildWebsite": "npm run buildApiDoc && node ./packages/tools/build-website.js && npm run buildPluginDoc",
|
||||
"clean": "lerna clean -y && lerna run clean",
|
||||
"circularDependencyCheck": "npx madge --warning --circular --extensions js ./",
|
||||
"clean": "lerna clean -y && lerna run clean",
|
||||
"generateDatabaseTypes": "node packages/tools/generate-database-types",
|
||||
"linkChecker": "linkchecker https://joplinapp.org",
|
||||
"linter-ci": "./node_modules/.bin/eslint --resolve-plugins-relative-to . --quiet --ext .js --ext .jsx --ext .ts --ext .tsx",
|
||||
"linter-precommit": "./node_modules/.bin/eslint --resolve-plugins-relative-to . --fix --ext .js --ext .jsx --ext .ts --ext .tsx",
|
||||
"linter": "./node_modules/.bin/eslint --resolve-plugins-relative-to . --fix --quiet --ext .js --ext .jsx --ext .ts --ext .tsx",
|
||||
"bootstrap": "lerna bootstrap --no-ci",
|
||||
"bootstrapIgnoreScripts": "lerna bootstrap --ignore-scripts --no-ci",
|
||||
"postinstall": "npm run bootstrap --no-ci && npm run build",
|
||||
"build": "lerna run build && npm run tsc",
|
||||
"publishAll": "git pull && lerna version --yes --no-private --no-git-tag-version && gulp completePublishAll",
|
||||
"releaseAndroid": "node packages/tools/release-android.js",
|
||||
"releaseAndroidClean": "node packages/tools/release-android.js",
|
||||
"releaseAndroid": "export PATH=\"/usr/local/opt/openjdk@11/bin:$PATH\" && node packages/tools/release-android.js",
|
||||
"releaseCli": "node packages/tools/release-cli.js",
|
||||
"releaseClipper": "node packages/tools/release-clipper.js",
|
||||
"releaseDesktop": "node packages/tools/release-electron.js",
|
||||
"releasePluginGenerator": "node packages/tools/release-plugin-generator.js",
|
||||
"releaseServer": "node packages/tools/release-server.js",
|
||||
"setupNewRelease": "node ./packages/tools/setupNewRelease",
|
||||
"test-ci": "lerna run test-ci --stream",
|
||||
"test": "lerna run test --stream",
|
||||
@@ -43,8 +39,7 @@
|
||||
"updateIgnored": "gulp updateIgnoredTypeScriptBuild",
|
||||
"updatePluginTypes": "./packages/generator-joplin/updateTypes.sh",
|
||||
"watch": "lerna run watch --stream --parallel",
|
||||
"i": "lerna add --no-bootstrap --scope",
|
||||
"server-start-dev": "docker-compose --file docker-compose.server-dev.yml up"
|
||||
"i": "lerna add --no-bootstrap --scope"
|
||||
},
|
||||
"husky": {
|
||||
"hooks": {
|
||||
|
@@ -54,5 +54,5 @@ module.exports = {
|
||||
|
||||
testEnvironment: 'node',
|
||||
setupFilesAfterEnv: [`${__dirname}/jest.setup.js`],
|
||||
slowTestThreshold: 20,
|
||||
slowTestThreshold: 40,
|
||||
};
|
||||
|
@@ -147,27 +147,86 @@ describe('MdToHtml', function() {
|
||||
expect(result.html.trim()).toBe('<div id="rendered-md"><p>just <strong>testing</strong></p>\n</div>');
|
||||
}));
|
||||
|
||||
// it('should render links correctly', (async () => {
|
||||
// const mdToHtml = newTestMdToHtml();
|
||||
it('should render links correctly', (async () => {
|
||||
const testCases = [
|
||||
// 0: input
|
||||
// 1: output with linkify = off
|
||||
// 2: output with linkify = on
|
||||
[
|
||||
'https://example.com',
|
||||
'https://example.com',
|
||||
'<a data-from-md title=\'https://example.com\' href=\'https://example.com\'>https://example.com</a>',
|
||||
],
|
||||
[
|
||||
'file://C:\\AUTOEXEC.BAT',
|
||||
'file://C:\\AUTOEXEC.BAT',
|
||||
'<a data-from-md title=\'file://C:%5CAUTOEXEC.BAT\' href=\'file://C:%5CAUTOEXEC.BAT\'>file://C:\\AUTOEXEC.BAT</a>',
|
||||
],
|
||||
[
|
||||
'example.com',
|
||||
'example.com',
|
||||
'example.com',
|
||||
],
|
||||
[
|
||||
'oo.ps',
|
||||
'oo.ps',
|
||||
'oo.ps',
|
||||
],
|
||||
[
|
||||
'test@example.com',
|
||||
'test@example.com',
|
||||
'test@example.com',
|
||||
],
|
||||
[
|
||||
'<https://example.com>',
|
||||
'<a data-from-md title=\'https://example.com\' href=\'https://example.com\'>https://example.com</a>',
|
||||
'<a data-from-md title=\'https://example.com\' href=\'https://example.com\'>https://example.com</a>',
|
||||
],
|
||||
[
|
||||
'[ok](https://example.com)',
|
||||
'<a data-from-md title=\'https://example.com\' href=\'https://example.com\'>ok</a>',
|
||||
'<a data-from-md title=\'https://example.com\' href=\'https://example.com\'>ok</a>',
|
||||
],
|
||||
[
|
||||
'[bla.pdf](file:///Users/tessus/Downloads/bla.pdf)',
|
||||
'<a data-from-md title=\'file:///Users/tessus/Downloads/bla.pdf\' href=\'file:///Users/tessus/Downloads/bla.pdf\'>bla.pdf</a>',
|
||||
'<a data-from-md title=\'file:///Users/tessus/Downloads/bla.pdf\' href=\'file:///Users/tessus/Downloads/bla.pdf\'>bla.pdf</a>',
|
||||
],
|
||||
];
|
||||
|
||||
// const testCases = [
|
||||
// // None of these should result in a link
|
||||
// ['https://example.com', 'https://example.com'],
|
||||
// ['file://C:\\AUTOEXEC.BAT', 'file://C:\\AUTOEXEC.BAT'],
|
||||
// ['example.com', 'example.com'],
|
||||
// ['oo.ps', 'oo.ps'],
|
||||
// ['test@example.com', 'test@example.com'],
|
||||
const mdToHtmlLinkifyOn = newTestMdToHtml({
|
||||
pluginOptions: {
|
||||
linkify: { enabled: true },
|
||||
},
|
||||
});
|
||||
|
||||
// // Those should be converted to links
|
||||
// ['<https://example.com>', '<a data-from-md title=\'https://example.com\' href=\'https://example.com\'>https://example.com</a>'],
|
||||
// ['[ok](https://example.com)', '<a data-from-md title=\'https://example.com\' href=\'https://example.com\'>ok</a>'],
|
||||
// ];
|
||||
const mdToHtmlLinkifyOff = newTestMdToHtml({
|
||||
pluginOptions: {
|
||||
linkify: { enabled: false },
|
||||
},
|
||||
});
|
||||
|
||||
// for (const testCase of testCases) {
|
||||
// const [input, expected] = testCase;
|
||||
// const actual = await mdToHtml.render(input, null, { bodyOnly: true, plainResourceRendering: true });
|
||||
// expect(actual.html).toBe(expected);
|
||||
// }
|
||||
// }));
|
||||
for (const testCase of testCases) {
|
||||
const [input, expectedLinkifyOff, expectedLinkifyOn] = testCase;
|
||||
|
||||
{
|
||||
const actual = await mdToHtmlLinkifyOn.render(input, null, {
|
||||
bodyOnly: true,
|
||||
plainResourceRendering: true,
|
||||
});
|
||||
|
||||
expect(actual.html).toBe(expectedLinkifyOn);
|
||||
}
|
||||
|
||||
{
|
||||
const actual = await mdToHtmlLinkifyOff.render(input, null, {
|
||||
bodyOnly: true,
|
||||
plainResourceRendering: true,
|
||||
});
|
||||
|
||||
expect(actual.html).toBe(expectedLinkifyOff);
|
||||
}
|
||||
}
|
||||
}));
|
||||
|
||||
});
|
||||
|
@@ -1,4 +1,6 @@
|
||||
This is visible
|
||||
This too<div style="display: none;">This is hidden
|
||||
and this sub-tag **too**
|
||||
</div>This is visible again
|
||||
</div>
|
||||
|
||||
This is visible again
|
@@ -9,3 +9,9 @@
|
||||
<div><span style="font-weight: bold;">singleline bold text with span style font-weight: bold; and with trailing space </span>next to normal text.</div><div><br/></div>
|
||||
<div><span style="font-weight: bold;">singleline bold text with span style font-weight: bold;</span><span style="font-weight: bold;"> next to more bold text with span style font-weight: bold; and with leading space.</span></div><div><br/></div>
|
||||
<div><span style="font-weight: bold;">singleline bold text with span style font-weight: bold; and with trailing space </span><span style="font-weight: bold;">next to more bold text with span style font-weight: bold;.</span></div>
|
||||
|
||||
<div><span style="font-weight:bold;">bold no space</span></div>
|
||||
<div><span style="font-weight:700;">bold 700</span></div>
|
||||
<div><span style="font-weight:800;">bold 800</span></div>
|
||||
<div><span style="font-weight:900;">bold 900</span></div>
|
||||
<div><span style="font-weight:500;">not bold</span></div>
|
||||
|
@@ -12,4 +12,10 @@
|
||||
|
||||
**singleline bold text with span style font-weight: bold;**** next to more bold text with span style font-weight: bold; and with leading space.**
|
||||
|
||||
**singleline bold text with span style font-weight: bold; and with trailing space ****next to more bold text with span style font-weight: bold;.**
|
||||
**singleline bold text with span style font-weight: bold; and with trailing space ****next to more bold text with span style font-weight: bold;.**
|
||||
|
||||
**bold no space**
|
||||
**bold 700**
|
||||
**bold 800**
|
||||
**bold 900**
|
||||
not bold
|
@@ -271,4 +271,48 @@ describe('models_Note', function() {
|
||||
expect(result).toBe(`[](:/${note1.id})`);
|
||||
}));
|
||||
|
||||
it('should perform natural sorting', (async () => {
|
||||
const folder1 = await Folder.save({});
|
||||
|
||||
const sortedNotes = await Note.previews(folder1.id, {
|
||||
fields: ['id', 'title'],
|
||||
order: [{ by: 'title', dir: 'ASC' }],
|
||||
});
|
||||
expect(sortedNotes.length).toBe(0);
|
||||
|
||||
const note0 = await Note.save({ title: 'A3', parent_id: folder1.id, is_todo: false });
|
||||
const note1 = await Note.save({ title: 'A20', parent_id: folder1.id, is_todo: false });
|
||||
const note2 = await Note.save({ title: 'A100', parent_id: folder1.id, is_todo: false });
|
||||
const note3 = await Note.save({ title: 'égalité', parent_id: folder1.id, is_todo: false });
|
||||
const note4 = await Note.save({ title: 'z', parent_id: folder1.id, is_todo: false });
|
||||
|
||||
const sortedNotes2 = await Note.previews(folder1.id, {
|
||||
fields: ['id', 'title'],
|
||||
order: [{ by: 'title', dir: 'ASC' }],
|
||||
});
|
||||
expect(sortedNotes2.length).toBe(5);
|
||||
expect(sortedNotes2[0].id).toBe(note0.id);
|
||||
expect(sortedNotes2[1].id).toBe(note1.id);
|
||||
expect(sortedNotes2[2].id).toBe(note2.id);
|
||||
expect(sortedNotes2[3].id).toBe(note3.id);
|
||||
expect(sortedNotes2[4].id).toBe(note4.id);
|
||||
|
||||
const todo3 = Note.changeNoteType(note3, 'todo');
|
||||
const todo4 = Note.changeNoteType(note4, 'todo');
|
||||
await Note.save(todo3);
|
||||
await Note.save(todo4);
|
||||
|
||||
const sortedNotes3 = await Note.previews(folder1.id, {
|
||||
fields: ['id', 'title'],
|
||||
order: [{ by: 'title', dir: 'ASC' }],
|
||||
uncompletedTodosOnTop: true,
|
||||
});
|
||||
expect(sortedNotes3.length).toBe(5);
|
||||
expect(sortedNotes3[0].id).toBe(note3.id);
|
||||
expect(sortedNotes3[1].id).toBe(note4.id);
|
||||
expect(sortedNotes3[2].id).toBe(note0.id);
|
||||
expect(sortedNotes3[3].id).toBe(note1.id);
|
||||
expect(sortedNotes3[4].id).toBe(note2.id);
|
||||
}));
|
||||
|
||||
});
|
||||
|
@@ -66,14 +66,14 @@ describe('pathUtils', function() {
|
||||
|
||||
it('should create correct fileURL syntax', (async () => {
|
||||
const testCases_win32 = [
|
||||
['C:\\handle\\space test', 'file:///C:/handle/space+test'],
|
||||
['C:\\handle\\space test', 'file:///C:/handle/space%20test'],
|
||||
['C:\\escapeplus\\+', 'file:///C:/escapeplus/%2B'],
|
||||
['C:\\handle\\single quote\'', 'file:///C:/handle/single+quote%27'],
|
||||
['C:\\handle\\single quote\'', 'file:///C:/handle/single%20quote%27'],
|
||||
];
|
||||
const testCases_unixlike = [
|
||||
['/handle/space test', 'file:///handle/space+test'],
|
||||
['/handle/space test', 'file:///handle/space%20test'],
|
||||
['/escapeplus/+', 'file:///escapeplus/%2B'],
|
||||
['/handle/single quote\'', 'file:///handle/single+quote%27'],
|
||||
['/handle/single quote\'', 'file:///handle/single%20quote%27'],
|
||||
];
|
||||
|
||||
for (let i = 0; i < testCases_win32.length; i++) {
|
||||
|
@@ -0,0 +1,69 @@
|
||||
import Setting from '@joplin/lib/models/Setting';
|
||||
import PluginService from '@joplin/lib/services/plugins/PluginService';
|
||||
const { waitForFolderCount, newPluginService, newPluginScript, setupDatabaseAndSynchronizer, switchClient, afterEachCleanUp } = require('../../../test-utils');
|
||||
const Folder = require('@joplin/lib/models/Folder');
|
||||
|
||||
describe('JoplinSettings', () => {
|
||||
|
||||
beforeEach(async (done) => {
|
||||
await setupDatabaseAndSynchronizer(1);
|
||||
await switchClient(1);
|
||||
done();
|
||||
});
|
||||
|
||||
afterEach(async () => {
|
||||
await afterEachCleanUp();
|
||||
});
|
||||
|
||||
test('should listen to setting change event', async () => {
|
||||
const service = new newPluginService() as PluginService;
|
||||
|
||||
const pluginScript = newPluginScript(`
|
||||
joplin.plugins.register({
|
||||
onStart: async function() {
|
||||
await joplin.settings.registerSetting('myCustomSetting1', {
|
||||
value: 1,
|
||||
type: 1,
|
||||
public: true,
|
||||
label: 'My Custom Setting 1',
|
||||
});
|
||||
|
||||
await joplin.settings.registerSetting('myCustomSetting2', {
|
||||
value: 2,
|
||||
type: 1,
|
||||
public: true,
|
||||
label: 'My Custom Setting 2',
|
||||
});
|
||||
|
||||
joplin.settings.onChange((event) => {
|
||||
joplin.data.post(['folders'], null, { title: JSON.stringify(event.keys) });
|
||||
});
|
||||
},
|
||||
});
|
||||
`);
|
||||
|
||||
const plugin = await service.loadPluginFromJsBundle('', pluginScript);
|
||||
await service.runPlugin(plugin);
|
||||
|
||||
Setting.setValue('plugin-org.joplinapp.plugins.PluginTest.myCustomSetting1', 111);
|
||||
Setting.setValue('plugin-org.joplinapp.plugins.PluginTest.myCustomSetting2', 222);
|
||||
|
||||
// Also change a global setting, to verify that the plugin doesn't get
|
||||
// notifications for non-plugin related events.
|
||||
Setting.setValue('locale', 'fr_FR');
|
||||
|
||||
Setting.emitScheduledChangeEvent();
|
||||
|
||||
await waitForFolderCount(1);
|
||||
|
||||
const folder = (await Folder.all())[0];
|
||||
|
||||
const settingNames: string[] = JSON.parse(folder.title);
|
||||
settingNames.sort();
|
||||
|
||||
expect(settingNames.join(',')).toBe('myCustomSetting1,myCustomSetting2');
|
||||
|
||||
await service.destroy();
|
||||
});
|
||||
|
||||
});
|
@@ -1,3 +1,4 @@
|
||||
import Setting from '@joplin/lib/models/Setting';
|
||||
import PluginService from '@joplin/lib/services/plugins/PluginService';
|
||||
|
||||
const { newPluginService, newPluginScript, setupDatabaseAndSynchronizer, switchClient, afterEachCleanUp } = require('../../../test-utils');
|
||||
@@ -49,4 +50,26 @@ describe('JoplinWorkspace', () => {
|
||||
await service.destroy();
|
||||
});
|
||||
|
||||
test('should return the selected folder', async () => {
|
||||
const service = new newPluginService() as PluginService;
|
||||
|
||||
const pluginScript = newPluginScript(`
|
||||
joplin.plugins.register({
|
||||
onStart: async function() {
|
||||
const folder = await joplin.workspace.selectedFolder();
|
||||
await joplin.data.put(['folders', folder.id], null, { title: "changedtitle" });
|
||||
},
|
||||
});
|
||||
`);
|
||||
|
||||
const folder = await Folder.save({ title: 'folder' });
|
||||
Setting.setValue('activeFolderId', folder.id);
|
||||
|
||||
const plugin = await service.loadPluginFromJsBundle('', pluginScript);
|
||||
await service.runPlugin(plugin);
|
||||
|
||||
const modFolder = await Folder.load(folder.id);
|
||||
expect(modFolder.title).toBe('changedtitle');
|
||||
});
|
||||
|
||||
});
|
||||
|
@@ -171,7 +171,7 @@ describe('services_PluginService', function() {
|
||||
|
||||
const contentScriptPath = `${tempDir}/markdownItTestPlugin.js`;
|
||||
const contentScriptCssPath = `${tempDir}/markdownItTestPlugin.css`;
|
||||
await shim.fsDriver().copy(`${testPluginDir}/content_script/src/markdownItTestPlugin.js`, contentScriptPath);
|
||||
await shim.fsDriver().copy(`${testPluginDir}/markdownItTestPlugin.js`, contentScriptPath);
|
||||
await shim.fsDriver().copy(`${testPluginDir}/content_script/src/markdownItTestPlugin.css`, contentScriptCssPath);
|
||||
|
||||
const service = newPluginService();
|
||||
|
@@ -2,7 +2,7 @@ import { PaginationOrderDir } from '@joplin/lib/models/utils/types';
|
||||
import Api, { RequestMethod } from '@joplin/lib/services/rest/Api';
|
||||
import shim from '@joplin/lib/shim';
|
||||
|
||||
const { setupDatabaseAndSynchronizer, switchClient, checkThrowAsync, db } = require('./test-utils.js');
|
||||
const { setupDatabaseAndSynchronizer, switchClient, checkThrowAsync, db, msleep } = require('./test-utils.js');
|
||||
const Folder = require('@joplin/lib/models/Folder');
|
||||
const Resource = require('@joplin/lib/models/Resource');
|
||||
const Note = require('@joplin/lib/models/Note');
|
||||
@@ -11,14 +11,6 @@ const NoteTag = require('@joplin/lib/models/NoteTag');
|
||||
const ResourceService = require('@joplin/lib/services/ResourceService').default;
|
||||
const SearchEngine = require('@joplin/lib/services/searchengine/SearchEngine');
|
||||
|
||||
async function msleep(ms: number) {
|
||||
return new Promise((resolve) => {
|
||||
shim.setTimeout(() => {
|
||||
resolve();
|
||||
}, ms);
|
||||
});
|
||||
}
|
||||
|
||||
const createFolderForPagination = async (num: number, time: number) => {
|
||||
await Folder.save({
|
||||
title: `folder${num}`,
|
||||
|
@@ -1,3 +1,7 @@
|
||||
dist/*
|
||||
dist/
|
||||
node_modules/
|
||||
publish/
|
||||
|
||||
|
||||
dist/*
|
||||
*.jpl
|
||||
|
@@ -0,0 +1,10 @@
|
||||
*.md
|
||||
!README.md
|
||||
/*.jpl
|
||||
/api
|
||||
/src
|
||||
/dist
|
||||
tsconfig.json
|
||||
webpack.config.js
|
||||
|
||||
|
@@ -0,0 +1,72 @@
|
||||
# generator-joplin
|
||||
|
||||
Scaffolds out a new Joplin plugin
|
||||
|
||||
## Installation
|
||||
|
||||
First, install [Yeoman](http://yeoman.io) and generator-joplin using [npm](https://www.npmjs.com/) (we assume you have pre-installed [node.js](https://nodejs.org/)).
|
||||
|
||||
```bash
|
||||
npm install -g yo
|
||||
npm install -g generator-joplin
|
||||
```
|
||||
|
||||
Then generate your new project:
|
||||
|
||||
```bash
|
||||
yo joplin
|
||||
```
|
||||
|
||||
## Development
|
||||
|
||||
To test the generator for development purposes, follow the instructions there: https://yeoman.io/authoring/#running-the-generator
|
||||
This is a template to create a new Joplin plugin.
|
||||
|
||||
## Structure
|
||||
|
||||
The main two files you will want to look at are:
|
||||
|
||||
- `/src/index.ts`, which contains the entry point for the plugin source code.
|
||||
- `/src/manifest.json`, which is the plugin manifest. It contains information such as the plugin a name, version, etc.
|
||||
|
||||
The file `/plugin.config.json` could also be useful if you intend to use [external scripts](#external-script-files), such as content scripts or webview scripts.
|
||||
|
||||
## Building the plugin
|
||||
|
||||
The plugin is built using Webpack, which creates the compiled code in `/dist`. A JPL archive will also be created at the root, which can use to distribute the plugin.
|
||||
|
||||
To build the plugin, simply run `npm run dist`.
|
||||
|
||||
The project is setup to use TypeScript, although you can change the configuration to use plain JavaScript.
|
||||
|
||||
## Publishing the plugin
|
||||
|
||||
To publish the plugin, add it to npmjs.com by running `npm publish`. Later on, a script will pick up your plugin and add it automatically to the Joplin plugin repository as long as the package satisfies these conditions:
|
||||
|
||||
- In `package.json`, the name starts with "joplin-plugin-". For example, "joplin-plugin-toc".
|
||||
- In `package.json`, the keywords include "joplin-plugin".
|
||||
- In the `publish/` directory, there should be a .jpl and .json file (which are built by `npm run dist`)
|
||||
|
||||
In general all this is done automatically by the plugin generator, which will set the name and keywords of package.json, and will put the right files in the "publish" directory. But if something doesn't work and your plugin doesn't appear in the repository, double-check the above conditions.
|
||||
|
||||
## Updating the plugin framework
|
||||
|
||||
To update the plugin framework, run `npm run update`.
|
||||
|
||||
In general this command tries to do the right thing - in particular it's going to merge the changes in package.json and .gitignore instead of overwriting. It will also leave "/src" as well as README.md untouched.
|
||||
|
||||
The file that may cause problem is "webpack.config.js" because it's going to be overwritten. For that reason, if you want to change it, consider creating a separate JavaScript file and include it in webpack.config.js. That way, when you update, you only have to restore the line that include your file.
|
||||
|
||||
## External script files
|
||||
|
||||
By default, the compiler (webpack) is going to compile `src/index.ts` only (as well as any file it imports), and any other file will simply be copied to the plugin package. In some cases this is sufficient, however if you have [content scripts](https://joplinapp.org/api/references/plugin_api/classes/joplinplugins.html#registercontentscript) or [webview scripts](https://joplinapp.org/api/references/plugin_api/classes/joplinviewspanels.html#addscript) you might want to compile them too, in particular in these two cases:
|
||||
|
||||
- The script is a TypeScript file - in which case it has to be compiled to JavaScript.
|
||||
|
||||
- The script requires modules you've added to package.json. In that case, the script, whether JS or TS, must be compiled so that the dependencies are bundled with the JPL file.
|
||||
|
||||
To get such an external script file to compile, you need to add it to the `extraScripts` array in `plugin.config.json`. The path you add should be relative to /src. For example, if you have a file in "/src/webviews/index.ts", the path should be set to "webviews/index.ts". Once compiled, the file will always be named with a .js extension. So you will get "webviews/index.js" in the plugin package, and that's the path you should use to reference the file.
|
||||
|
||||
## License
|
||||
|
||||
MIT © Laurent Cozic
|
@@ -20,17 +20,21 @@ export default class JoplinPlugins {
|
||||
*/
|
||||
register(script: Script): Promise<void>;
|
||||
/**
|
||||
* Registers a new content script. Unlike regular plugin code, which
|
||||
* runs in a separate process, content scripts run within the main
|
||||
* process code and thus allow improved performances and more
|
||||
* customisations in specific cases. It can be used for example to load
|
||||
* a Markdown or editor plugin.
|
||||
* Registers a new content script. Unlike regular plugin code, which runs in
|
||||
* a separate process, content scripts run within the main process code and
|
||||
* thus allow improved performances and more customisations in specific
|
||||
* cases. It can be used for example to load a Markdown or editor plugin.
|
||||
*
|
||||
* Note that registering a content script in itself will do nothing -
|
||||
* it will only be loaded in specific cases by the relevant app modules
|
||||
* (eg. the Markdown renderer or the code editor). So it is not a way
|
||||
* to inject and run arbitrary code in the app, which for safety and
|
||||
* performance reasons is not supported.
|
||||
* Note that registering a content script in itself will do nothing - it
|
||||
* will only be loaded in specific cases by the relevant app modules (eg.
|
||||
* the Markdown renderer or the code editor). So it is not a way to inject
|
||||
* and run arbitrary code in the app, which for safety and performance
|
||||
* reasons is not supported.
|
||||
*
|
||||
* The plugin generator provides a way to build any content script you might
|
||||
* want to package as well as its dependencies. See the [Plugin Generator
|
||||
* doc](https://github.com/laurent22/joplin/blob/dev/packages/generator-joplin/README.md)
|
||||
* for more information.
|
||||
*
|
||||
* * [View the renderer demo plugin](https://github.com/laurent22/joplin/tree/dev/packages/app-cli/tests/support/plugins/content_script)
|
||||
* * [View the editor demo plugin](https://github.com/laurent22/joplin/tree/dev/packages/app-cli/tests/support/plugins/codemirror_content_script)
|
||||
|
@@ -47,6 +47,10 @@ export default class JoplinViewsDialogs {
|
||||
* Sets the dialog HTML content
|
||||
*/
|
||||
setHtml(handle: ViewHandle, html: string): Promise<string>;
|
||||
/**
|
||||
* Adds and loads a new JS or CSS files into the dialog.
|
||||
*/
|
||||
addScript(handle: ViewHandle, scriptPath: string): Promise<void>;
|
||||
/**
|
||||
* Sets the dialog buttons.
|
||||
*/
|
||||
|
@@ -30,4 +30,16 @@ export default class JoplinViewsPanels {
|
||||
* Called when a message is sent from the webview (using postMessage).
|
||||
*/
|
||||
onMessage(handle: ViewHandle, callback: Function): Promise<void>;
|
||||
/**
|
||||
* Shows the panel
|
||||
*/
|
||||
show(handle: ViewHandle, show?: boolean): Promise<void>;
|
||||
/**
|
||||
* Hides the panel
|
||||
*/
|
||||
hide(handle: ViewHandle): Promise<void>;
|
||||
/**
|
||||
* Tells whether the panel is visible or not
|
||||
*/
|
||||
visible(handle: ViewHandle): Promise<boolean>;
|
||||
}
|
||||
|
@@ -1,3 +1,4 @@
|
||||
import { FolderEntity } from '../../database/types';
|
||||
import { Disposable } from './types';
|
||||
declare enum ItemChangeEventType {
|
||||
Create = 1,
|
||||
@@ -53,6 +54,13 @@ export default class JoplinWorkspace {
|
||||
* Gets the currently selected note
|
||||
*/
|
||||
selectedNote(): Promise<any>;
|
||||
/**
|
||||
* Gets the currently selected folder. In some cases, for example during
|
||||
* search or when viewing a tag, no folder is actually selected in the user
|
||||
* interface. In that case, that function would return the last selected
|
||||
* folder.
|
||||
*/
|
||||
selectedFolder(): Promise<FolderEntity>;
|
||||
/**
|
||||
* Gets the IDs of the selected notes (can be zero, one, or many). Use the data API to retrieve information about these notes.
|
||||
*/
|
||||
|
@@ -701,14 +701,39 @@
|
||||
"dev": true
|
||||
},
|
||||
"chalk": {
|
||||
"version": "2.4.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
|
||||
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
|
||||
"integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ansi-styles": "^3.2.1",
|
||||
"escape-string-regexp": "^1.0.5",
|
||||
"supports-color": "^5.3.0"
|
||||
"ansi-styles": "^4.1.0",
|
||||
"supports-color": "^7.1.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"ansi-styles": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
||||
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"color-convert": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"color-convert": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
||||
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"color-name": "~1.1.4"
|
||||
}
|
||||
},
|
||||
"color-name": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
||||
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"chokidar": {
|
||||
@@ -3442,12 +3467,20 @@
|
||||
}
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "5.5.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
|
||||
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
||||
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"has-flag": "^3.0.0"
|
||||
"has-flag": "^4.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"has-flag": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
||||
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"tapable": {
|
||||
@@ -3749,6 +3782,17 @@
|
||||
"semver": "^6.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"chalk": {
|
||||
"version": "2.4.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
|
||||
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ansi-styles": "^3.2.1",
|
||||
"escape-string-regexp": "^1.0.5",
|
||||
"supports-color": "^5.3.0"
|
||||
}
|
||||
},
|
||||
"json5": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
|
||||
@@ -3768,6 +3812,15 @@
|
||||
"emojis-list": "^3.0.0",
|
||||
"json5": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "5.5.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
|
||||
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"has-flag": "^3.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -4395,6 +4448,28 @@
|
||||
"yargs": "^13.3.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"chalk": {
|
||||
"version": "2.4.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
|
||||
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ansi-styles": "^3.2.1",
|
||||
"escape-string-regexp": "^1.0.5",
|
||||
"supports-color": "^5.3.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"supports-color": {
|
||||
"version": "5.5.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
|
||||
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"has-flag": "^3.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"json5": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
|
||||
|
@@ -4,9 +4,12 @@
|
||||
"description": "",
|
||||
"scripts": {
|
||||
"dist": "webpack",
|
||||
"postinstall": "npm run dist"
|
||||
"prepare": "npm run dist",
|
||||
"update": "npm install -g generator-joplin && yo joplin --update"
|
||||
},
|
||||
"keywords": {},
|
||||
"keywords": [
|
||||
"joplin-plugin"
|
||||
],
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@types/node": "^14.0.14",
|
||||
@@ -18,6 +21,7 @@
|
||||
"ts-loader": "^7.0.5",
|
||||
"typescript": "^3.9.3",
|
||||
"webpack": "^4.43.0",
|
||||
"webpack-cli": "^3.3.11"
|
||||
"webpack-cli": "^3.3.11",
|
||||
"chalk": "^4.1.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"extraScripts": []
|
||||
}
|
@@ -1,5 +1,6 @@
|
||||
import joplin from 'api';
|
||||
import { ContentScriptType } from 'api/types';
|
||||
import { MenuItemLocation } from 'api/types';
|
||||
|
||||
joplin.plugins.register({
|
||||
onStart: async function() {
|
||||
@@ -9,5 +10,15 @@ joplin.plugins.register({
|
||||
'matchHighlighter',
|
||||
'./joplinMatchHighlighter.js'
|
||||
);
|
||||
|
||||
await joplin.commands.register({
|
||||
name: 'editor.printSomething',
|
||||
label: 'Print some random string',
|
||||
execute: async () => {
|
||||
alert('mathMode.printSomething not implemented by Editor yet');
|
||||
},
|
||||
});
|
||||
|
||||
await joplin.views.menuItems.create('printSomethingButton', 'editor.printSomething', MenuItemLocation.Tools, { accelerator: 'Ctrl+Alt+Shift+U' });
|
||||
},
|
||||
});
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user