Compare commits

...

1868 Commits

Author SHA1 Message Date
zadam
3a83d58b25 release 0.61.6-beta 2023-09-06 23:57:29 +02:00
zadam
6fa9d996e8 ckeditor 39.0.2 2023-09-06 23:23:42 +02:00
siriusXT
1ea3d238e0 Fix right click bookmark bug
(cherry picked from commit 92e43bc051)
2023-09-06 23:11:51 +02:00
zadam
eb273b7dbb lib upgrades 2023-09-06 23:11:02 +02:00
zadam
d2263c68f8 provide note dates in the frontend API, fixes #4232 2023-09-06 22:54:31 +02:00
zadam
97d8b19868 add missing API docs 2023-09-06 09:23:13 +02:00
zadam
2bc7da91a6 add createLink() returns jsDoc, #4235 2023-09-06 09:20:32 +02:00
zadam
2b4cbb5f6b fix clipperInbox handling for new note creation, closes #4219 2023-09-05 23:24:01 +02:00
zadam
7b662b04ff fix orderby with multiple labels, closes #4220 2023-09-05 23:00:08 +02:00
zadam
f8e4a665bd fixed search parser tests 2023-09-05 22:48:20 +02:00
zadam
f9a27dd90c add imageStyle alignBlockLeft, alignBlockRight, fixes #4215 2023-09-05 22:16:45 +02:00
zadam
641985737f fix FNote.getContent() #4210 2023-09-05 22:02:26 +02:00
zadam
121e4ba2ea fix displaying 1 / 0 in find widget 2023-09-05 21:00:24 +02:00
zadam
01474ecd2d sync fixes 2023-09-05 00:30:09 +02:00
zadam
82e4e28e7b fix 2023-09-04 23:57:42 +02:00
zadam
886ee0dbcb fix sync exception 2023-08-31 00:14:35 +02:00
zadam
6f7fbacca1 add "api.runOnFrontend()" to the backend script API 2023-08-30 23:18:16 +02:00
vaifix
8da5b90aea Fix bug: Calendar display incorrect tooltips.
(cherry picked from commit 58fe3a62af)
2023-08-30 00:20:42 +02:00
zadam
e7d57bc08f Merge remote-tracking branch 'origin/beta' into beta
# Conflicts:
#	package-lock.json
2023-08-30 00:11:52 +02:00
zadam
041758766a allow specifying date created in the ETAPI, #4199 2023-08-30 00:11:32 +02:00
zadam
f2a510e4c5 cleanup of old migrations, since upgrading to 0.61 is possible only from 0.60. 2023-08-18 15:56:38 +02:00
zadam
4717242dc7 force migration to 0.60 first before 0.61 #4132 2023-08-18 15:55:59 +02:00
zadam
c1865f8564 small refactor 2023-08-17 09:09:06 +02:00
zadam
515c5411a6 release 0.61.5-beta 2023-08-16 23:02:15 +02:00
zadam
3f7a5504c7 prettier config 2023-08-16 20:31:14 +02:00
zadam
8c7c37cf98 updates 2023-08-16 20:12:22 +02:00
zadam
c0f48c0e99 mermaid 10.3.1 2023-08-15 10:30:30 +02:00
zadam
abedf2bba4 fix pasting into ckeditor, upgrade to v39.0.1 2023-08-15 10:25:23 +02:00
zadam
bb0137b2fd fix displaying options / book on firefox, closes #4165 2023-08-15 10:25:23 +02:00
zadam
6c54c7d17d save enex images as attachment, fixes #4163 2023-08-15 10:25:23 +02:00
zadam
90255ac55b release 0.61.4-beta 2023-08-10 23:49:37 +02:00
zadam
e741c2826c release 0.61.4-beta 2023-08-10 23:48:27 +02:00
zadam
026992db78 release 0.61.4-beta 2023-08-10 23:46:42 +02:00
zadam
33780c1e17 fix note tooltip code rendering 2023-08-10 13:50:25 +02:00
zadam
ede9c43f67 API docs 2023-08-10 13:40:26 +02:00
zadam
5c12ac4eee fix CKEditor crashing 2023-08-10 13:40:15 +02:00
zadam
522518cf0d disambiguous query 2023-08-09 23:12:31 +02:00
zadam
1d869d25c2 fix #clipperInbox, closes #4153 2023-08-09 23:00:42 +02:00
zadam
a9cdd93cb4 added options to disable auto-opening of promoted attributes and edited notes ribbon tabs, closes #4151 2023-08-09 22:50:41 +02:00
zadam
4240da349d add shared info to mobile layout, closes #4147 2023-08-09 00:02:45 +02:00
zadam
c257bc07a8 clipper now creates notes with image attachments instead of image notes 2023-08-09 00:01:31 +02:00
zadam
00eaa16985 clipper now creates notes with image attachments instead of image notes 2023-08-08 23:42:47 +02:00
zadam
fefb059564 clipper now creates notes with image attachments instead of image notes 2023-08-08 23:07:59 +02:00
zadam
9166765ced fix include note sizing when in readonly mode, closes #4135 2023-08-08 22:56:45 +02:00
zadam
6ae7661603 note path validation 2023-08-02 23:23:31 +02:00
zadam
30e75056bd release 0.61.3-beta 2023-07-31 23:03:45 +02:00
zadam
530e56dcb5 fixed comment 2023-07-31 22:59:47 +02:00
zadam
63675bfbae make migration 223 NOOP 2023-07-30 21:54:01 +02:00
zadam
696ce38083 ckeditor 38.1.1 2023-07-30 00:32:16 +02:00
zadam
12014b9f4d sync fixes and refactorings 2023-07-29 23:35:08 +02:00
zadam
e8b52f9e6c sync fixes and refactorings 2023-07-29 23:25:02 +02:00
zadam
04b125afc0 sync fixes and refactorings 2023-07-29 21:59:20 +02:00
zadam
2a7fe85020 VACUUM database after migration 2023-07-28 16:22:10 +02:00
zadam
119050e355 fix migration 2023-07-28 16:13:31 +02:00
zadam
72122d0f95 fix blobIds - they shouldn't contain + and / characters 2023-07-28 15:55:26 +02:00
zadam
bd22863bb7 release 0.61.2-beta 2023-07-28 00:06:23 +02:00
zadam
ce3834eb9e blob erasure is not synced, need to clean them up before each content hash check 2023-07-27 23:57:12 +02:00
zadam
8edb5428e5 small sync fixes and refactorings 2023-07-27 23:22:08 +02:00
zadam
527718eff7 add indices on blobId 2023-07-27 21:40:47 +02:00
zadam
5b0f487f3f handle ERR_* errors gracefully 2023-07-27 14:50:18 +02:00
zadam
a3fa8341ba handle ERR_CONNECTION_RESET gracefully 2023-07-27 10:55:34 +02:00
zadam
04813743e2 fix zooming speed, closes #4121 2023-07-25 22:33:35 +02:00
zadam
ddf75cd5e5 note tooltip displays the whole note with scrollbar, other behavior changes. closes #4120 2023-07-25 22:27:15 +02:00
zadam
d0e5ad5b7e release 0.61.1-beta 2023-07-24 23:47:57 +02:00
zadam
b4631e927c Merge remote-tracking branch 'origin/master' 2023-07-24 23:47:27 +02:00
zadam
b7bc843a37 fix demo document statistics, closes #4117 2023-07-24 23:46:02 +02:00
zadam
98d65f8767 Merge pull request #4114 from SiriusXT/master
Fix bugs in highlights,v0.61.0-beta
2023-07-24 22:58:20 +02:00
zadam
0599891ec0 Merge pull request #4001 from dymani/reopen-in-place
Reopen recently closed tab/split in place
2023-07-24 22:52:14 +02:00
zadam
cc06701565 swiftshader deletion is no longer needed 2023-07-24 22:33:36 +02:00
SnnBcd xt
40683985cd Fix bugs in highlights 2023-07-22 19:13:03 +00:00
zadam
074e13a889 release 0.61.0-beta 2023-07-22 17:51:08 +02:00
zadam
98b0baefe2 Merge remote-tracking branch 'origin/master' into next61
# Conflicts:
#	src/public/app/widgets/buttons/note_actions.js
2023-07-22 17:49:29 +02:00
zadam
3aad0ebc95 Merge remote-tracking branch 'origin/next61' into next61 2023-07-22 17:48:17 +02:00
zadam
479d720a6e upgrades 2023-07-22 17:48:09 +02:00
zadam
e4892c9888 fixed order of multi-valued promoted attributes, closes #4105 2023-07-20 23:22:31 +02:00
zadam
f8c9178c5d fix migration 2023-07-18 23:23:52 +02:00
zadam
83049c95c3 defensive copies of owned attrs 2023-07-17 22:56:36 +02:00
zadam
bc8f531b33 fix a bug which caused immedate deletion of created attributes 2023-07-17 22:53:54 +02:00
zadam
23278f54cb force refresh before activating the attribute detail dialog, fixes #4077 2023-07-17 22:41:37 +02:00
zadam
18801fb3e1 more filtering of note actions based on note type 2023-07-17 22:32:07 +02:00
zadam
dc0a0dcf09 Merge pull request #4098 from AndrewPluzhnikov/fix-search-in-text
Disable Search in note button in global search context.
2023-07-17 22:30:49 +02:00
zadam
04c306b360 support combination of shared and cloned in the note tree, fixes #4097 2023-07-17 22:26:41 +02:00
zadam
d6a4f1db13 share tree should include branch prefixes, fixes #4096 2023-07-17 22:19:03 +02:00
zadam
84c4b368c8 updated better-sqlite binaries for node 18/electron 25 2023-07-17 21:39:25 +02:00
Andrew Pluzhnikov
4307f25205 Disable Search in note button in global search context.
This button doesn't actually do anything in the global search window, so
it should be greyed out/disabled.
2023-07-16 10:40:34 -07:00
zadam
48f03f7a1b API docs 2023-07-15 12:07:45 +02:00
zadam
9d24499fef upgrade excalidraw to 0.15.2 2023-07-15 12:01:09 +02:00
zadam
df97b269a7 autocomplete upgrade to 0.38.1 2023-07-15 11:45:18 +02:00
zadam
ee6fb98a0d jquery 3.7.0 2023-07-15 11:41:36 +02:00
zadam
13e30e5855 dayjs frontend update 2023-07-15 11:38:01 +02:00
zadam
5ab2ec0f13 little fixes for the datetime promoted attr 2023-07-15 11:29:29 +02:00
zadam
8465d7fa68 Merge remote-tracking branch 'origin/master' into next61 2023-07-15 11:27:42 +02:00
zadam
d153fc7ba5 Merge pull request #4090 from harishkumarc/datetime-attribute
added date and time attribute capability
2023-07-15 11:26:53 +02:00
zadam
1a7c2d4c32 fix hiding toc with multiple splits, closes #4093 2023-07-15 11:19:05 +02:00
zadam
b3381a3b53 reimplemented triggering search from URL, fixes #385 2023-07-15 10:59:30 +02:00
zadam
ac0d61e9b4 add mindmap mermaid example to demo document 2023-07-15 10:44:38 +02:00
zadam
b13a6ced19 cleanup 2023-07-15 10:33:29 +02:00
zadam
b61aab06b5 nodejs upgrade 2023-07-15 10:32:26 +02:00
zadam
64b86b2666 use marked instead of commonmark to convert MD to HTML, which supports e.g. tables, closes #2026 2023-07-15 10:31:50 +02:00
zadam
27e6fa9526 Merge branch 'stable' into next61 2023-07-15 10:10:29 +02:00
zadam
3d31742285 fix FNote.isHiddenCompletely() which returned false for _hidden 2023-07-15 09:50:07 +02:00
zadam
2b2f4fbc07 comment 2023-07-15 09:48:30 +02:00
zadam
513bf252cd don't display export for backend log note, fixes #4076 2023-07-15 09:35:03 +02:00
zadam
f591e954f3 capitalization of options titles 2023-07-15 09:26:18 +02:00
zadam
59de1925a9 decreased padding 2023-07-14 22:14:07 +02:00
zadam
6c1011341c add help button to attachment detail as well 2023-07-14 22:02:30 +02:00
zadam
906082a6b2 add help button to attachment list 2023-07-14 21:59:43 +02:00
zadam
30bcd1764a check the attachment after upload 2023-07-14 21:28:32 +02:00
zadam
cea54aecad check the attachment after conversion 2023-07-14 21:18:56 +02:00
zadam
ff6f2a4d44 zoom for the attachment images 2023-07-14 21:08:00 +02:00
zadam
5f6fded833 zoom for the attachment images 2023-07-14 21:06:15 +02:00
zadam
fed5f1a7d2 fix content renderer for mermaid 2023-07-14 20:03:28 +02:00
zadam
a06ee1ced1 added new mermaid diagram examples to the demo document 2023-07-14 20:00:53 +02:00
zadam
332b92791e upgrade mermaid to 10.2.4 2023-07-14 19:56:37 +02:00
zadam
d4a9461460 force graph upgrade 2023-07-14 19:45:10 +02:00
zadam
2dac6ab281 DB migration should convert only "perfect candidates" to attachments 2023-07-14 18:24:15 +02:00
zadam
4d00404f55 more actions triggering new tab should respect current hoisting 2023-07-14 18:15:31 +02:00
zadam
3adab07ddb common style for options number inputs 2023-07-14 18:05:19 +02:00
zadam
3d0c3652ce file note should reload after uploading new revision 2023-07-14 17:55:28 +02:00
zadam
c3f5bb5518 image note should reload after uploading new revision 2023-07-14 17:52:35 +02:00
zadam
b2d460d5c1 update demo document with images converted to attachments 2023-07-14 17:06:38 +02:00
zadam
d475346a09 renamed attachment's parentId to more fitting ownerId 2023-07-14 17:01:56 +02:00
zadam
ca41806bc2 import and export fixes 2023-07-13 23:54:47 +02:00
zadam
a748710b01 make file attachments accessible in revisions dialog 2023-07-10 20:30:04 +02:00
zadam
ac9a4b3afc fixes in etapi tests 2023-07-10 19:10:07 +02:00
zadam
b7f0fd2db3 Merge branch 'master' into next61
# Conflicts:
#	package-lock.json
#	src/public/app/services/note_content_renderer.js
#	src/public/app/widgets/note_tree.js
#	src/routes/routes.js
#	src/services/consistency_checks.js
#	src/services/notes.js
#	src/services/task_context.js
2023-07-10 18:20:36 +02:00
harishkumarchellappa
7d6c847d47 added date and time attribute capability 2023-07-10 17:24:34 +05:30
zadam
6ec6d66f17 Merge pull request #4084 from AndrewPluzhnikov/fix-868
Implement saving of global search string.
2023-07-09 23:52:36 +02:00
zadam
977089cc28 Merge pull request #4083 from viperdc/patch-1
Update docker_healthcheck.js
2023-07-09 23:47:55 +02:00
zadam
c3f8975166 small refactorings of clipper code 2023-07-09 22:58:34 +02:00
zadam
639f80b603 Merge pull request #4075 from manto89/feature/add-clippings-existing
Feature/add clippings existing url
2023-07-09 22:43:34 +02:00
Andrew Pluzhnikov
927da84d3b Implement saving of global search string.
This implements point 1 of issue 868.

After performing a search, when returning to the global search tab the
previous search term is now retained and preselected, making it easier
to repeat the same search or modify it.
2023-07-06 20:26:55 -07:00
viperdc
b8c9943deb Update docker_healthcheck.js
Correcting ini location for HTTPS health-check bypass.
2023-07-06 19:02:51 -04:00
manto89
bb6ab0fe45 Fix clipping html with parser when using web-clipper 2023-07-02 12:52:16 +02:00
manto89
0c86dece5f Fix clipType searching for web-clipper 2023-07-02 12:51:23 +02:00
zadam
b7b0bd80ed padding of right pane 2023-06-30 23:01:57 +02:00
zadam
f06207207b fix styling for videos 2023-06-30 16:36:03 +02:00
zadam
068684101f remove the option to show CKEditor banner 2023-06-30 15:58:42 +02:00
zadam
f78d96a3d4 refactoring of server and suppressing error during conversion of attachment into note 2023-06-30 15:44:30 +02:00
zadam
a0d958bf12 refactor uploading files 2023-06-30 15:25:45 +02:00
zadam
0802b81807 improved error logging in frontend 2023-06-30 12:14:58 +02:00
zadam
192e399cb5 typos 2023-06-30 11:18:34 +02:00
zadam
fc564f6aed fix eslint validation 2023-06-30 00:02:25 +02:00
zadam
eb34f9c64f small refactorings and fixes 2023-06-29 23:32:19 +02:00
zadam
48029cea7c small refactorings 2023-06-29 22:10:13 +02:00
zadam
f4ec4e58c7 fixed image styles 2023-06-29 21:30:26 +02:00
zadam
faa402fcda API docs 2023-06-29 20:54:58 +02:00
zadam
788841d256 fix mentions 2023-06-29 12:19:01 +02:00
zadam
b7c37fdf58 cleanup 2023-06-29 11:44:28 +02:00
zadam
a46c5a2243 use isLabelTruthy() for most binary labels 2023-06-29 00:14:12 +02:00
zadam
430f2975f8 make "excludeFromNoteMap" overridable with note.isLabelTruthy(), #4058 2023-06-29 00:04:30 +02:00
zadam
dd8226ff4c comment 2023-06-28 21:33:09 +02:00
zadam
807b442c7a fix froca update of erased blob 2023-06-28 21:28:41 +02:00
zadam
a452e4add5 sync fixes 2023-06-28 21:05:31 +02:00
zadam
48b30b985e attachment upload 2023-06-28 20:53:55 +02:00
zadam
05d2f4fe96 Merge branch 'stable' 2023-06-27 23:15:20 +02:00
zadam
85a75fc186 getOwnedAttributes() should not make a copy, consistent with similar methods 2023-06-27 23:03:17 +02:00
zadam
ddda4d9867 fix constructing result note path in the jump to note dialog, closes #4054 2023-06-27 22:57:13 +02:00
zadam
42c8059ae1 Merge pull request #4057 from dymani/master
Fix closing parenthesis
2023-06-27 21:38:36 +02:00
dymani
0f4eb8ff4c fix closing parenthesis 2023-06-28 02:31:17 +08:00
zadam
8ee537e2eb API comments 2023-06-27 00:14:13 +02:00
zadam
8eb091445b Merge pull request #4032 from mechanarchy/patch-1
Ignore SQL comments in query console
2023-06-26 23:05:42 +02:00
mechanarchy
1fc23c948e Fix SQL comment handling 2023-06-23 09:06:14 +10:00
zadam
cb2b97635a centering icons in note book vertically 2023-06-22 23:34:05 +02:00
zadam
8fb42e4517 Merge pull request #4049 from SiriusXT/master
Fix bugs in toc and improve related codes
2023-06-22 22:34:47 +02:00
zadam
edae1a5d1c Merge pull request #4050 from kianmeng/fix-typos
Fix typos
2023-06-22 22:33:09 +02:00
zadam
08398a1417 fix search scripts, closes #4048 2023-06-22 22:30:26 +02:00
Kian-Meng Ang
712304bbc6 Fix typos
Found via `codespell -S ./libraries,./package-lock.json -L tabel,tabels,uptodate,isnt,edn,falsy`
2023-06-23 00:27:04 +08:00
SiriusXT
afb893c157 Fix bugs in toc and improve related codes 2023-06-22 15:38:36 +08:00
manto89
ebccd48013 Don't search note by url if url begins with 'about:' 2023-06-21 18:06:28 +02:00
manto89
54065672aa Normalize behaviour with the other create method for web-clipper 2023-06-21 16:10:06 +02:00
manto89
8394ce8002 Change method when adding a new note.
Add reference to new backend method
2023-06-21 13:09:49 +02:00
zadam
176784834f simple formatter for source view of text HTML notes 2023-06-20 23:59:36 +02:00
zadam
a47004bb4e shift migrations after upmerge 2023-06-20 23:32:31 +02:00
zadam
995f1c9fc4 Merge branch 'stable' into next61
# Conflicts:
#	src/etapi/etapi.openapi.yaml
#	src/etapi/notes.js
#	src/public/app/widgets/type_widgets/editable_text.js
#	src/services/app_info.js
2023-06-20 23:30:45 +02:00
zadam
1f3b6feaff Merge branch 'master' into next61
# Conflicts:
#	src/public/app/widgets/note_tree.js
2023-06-20 23:28:41 +02:00
zadam
8095c77b91 cache icon count to make filtering more responsive on slower connections, #4044 2023-06-20 21:31:25 +02:00
zadam
6cfd18b29b read filter values in icon selector only after async events, #4044 2023-06-20 21:19:56 +02:00
zadam
defd997424 release 0.60.4 2023-06-19 23:26:50 +02:00
zadam
5905950c17 fix notePosition assignment for new children of root 2023-06-19 00:29:36 +02:00
zadam
691fccb769 fix keyboard navigation in the note tree, fixes #4036 2023-06-18 23:45:48 +02:00
zadam
bbe3f436d3 avoid scrolling to active node without a reason, fixes #4031 2023-06-18 21:50:22 +02:00
mechanarchy
af053b61fc Ignore SQL comments in query console 2023-06-17 17:06:17 +10:00
zadam
e22f77eae7 release 0.60.3 2023-06-15 23:23:37 +02:00
zadam
3223e76787 etapi ZIP import 2023-06-15 23:21:40 +02:00
zadam
74400dad97 fix race condition between script execution and saving, closes #4028 2023-06-15 21:51:41 +02:00
zadam
1b68adf3e4 compatibility with online excalidraw tool 2023-06-15 21:34:42 +02:00
zadam
a2cd6f92d7 compatibility with online excalidraw tool 2023-06-15 21:34:02 +02:00
zadam
3ff5fe61b2 unified file and image upload WIP 2023-06-15 01:26:38 +02:00
zadam
75c6afd1c3 fix loading of string content saved as binary 2023-06-14 22:21:22 +02:00
zadam
8d2958738f add option to hide the "Powered by CKEditor" banner 2023-06-14 00:51:05 +02:00
zadam
0496412f4a cleanup of unused options 2023-06-14 00:38:48 +02:00
zadam
f80a20d18c don't use non-existing btn-xs 2023-06-14 00:31:15 +02:00
zadam
34c642a49a rename attachment 2023-06-14 00:28:59 +02:00
zadam
2ebbc33081 fix revision rename DB migration 2023-06-13 23:39:42 +02:00
zadam
ac56056f65 Merge branch 'master' into next61
# Conflicts:
#	package-lock.json
#	src/routes/api/recent_changes.js
2023-06-13 23:25:35 +02:00
zadam
6f16b4caec Merge branch 'beta' 2023-06-13 23:24:09 +02:00
zadam
bea39f37ee stop click propagation in tree item actions 2023-06-13 00:12:55 +02:00
mechanarchy
6548149107 Update etapi.js
(cherry picked from commit b97ebe9f03)
2023-06-12 23:21:38 +02:00
zadam
fbc805a221 Merge pull request #4019 from mechanarchy/patch-2
Fix attempted ETAPI token rename after cancel
2023-06-12 23:21:13 +02:00
zadam
6015a067ec sql console outputs results of CTEs, fixes #2800 2023-06-12 23:18:57 +02:00
mechanarchy
4a1ecd906b Update entrypoints.js
(cherry picked from commit 08ec866dd2)
2023-06-12 23:13:40 +02:00
zadam
41844cf817 Merge pull request #4017 from mechanarchy/patch-1
Fix SQL Console error messages
2023-06-12 23:12:35 +02:00
zadam
004cfe1965 allow creating backups via ETAPI, #4014 2023-06-12 23:09:29 +02:00
mechanarchy
b97ebe9f03 Update etapi.js 2023-06-10 17:36:23 +10:00
mechanarchy
08ec866dd2 Update entrypoints.js 2023-06-10 07:44:23 +10:00
zadam
2bdd538d7d release 0.60.2-beta 2023-06-08 22:46:52 +02:00
zadam
6e69cafe54 fix showing deleted notes in the recent changes dialog, closes #4013 2023-06-08 22:45:44 +02:00
zadam
38839532d5 file upload WIP 2023-06-06 12:31:38 +02:00
zadam
0234ff5fca share support for attachment file download 2023-06-06 00:16:32 +02:00
zadam
44bcfd47c0 share support for attachment images 2023-06-05 23:05:05 +02:00
zadam
69c7eb14aa fixes 2023-06-05 21:14:33 +02:00
zadam
00453fc151 attachment ETAPI tests WIP 2023-06-05 17:00:58 +02:00
zadam
5c393f959d got rid of .isDeleted on froca entities (the property is not available there) 2023-06-05 16:26:05 +02:00
zadam
e6bf6424e8 rename loadresults methods/properties for clarity that they don't contain entities, only rows 2023-06-05 16:12:02 +02:00
zadam
57702a07a2 attachment ETAPI support WIP 2023-06-05 09:44:36 +02:00
zadam
3b3f6082a7 attachment ETAPI support WIP 2023-06-05 09:23:42 +02:00
zadam
49241ab318 merge 2023-06-05 00:12:08 +02:00
zadam
93addac8bb Merge branch 'master' into next61
# Conflicts:
#	src/becca/entities/bnote.js
#	src/public/app/components/note_context.js
#	src/public/app/layouts/desktop_layout.js
#	src/public/app/services/note_content_renderer.js
#	src/public/app/services/utils.js
#	src/public/app/widgets/ribbon_widgets/file_properties.js
#	src/public/app/widgets/ribbon_widgets/note_info_widget.js
#	src/services/notes.js
2023-06-05 00:09:55 +02:00
zadam
fe908759d1 rename "note revision" to just "revision" 2023-06-04 23:02:49 +02:00
zadam
779751a234 rename "note revision" to just "revision" 2023-06-04 23:01:40 +02:00
zadam
cb9feab7b2 got rid of the hot/cold blob, all blobs are "cold" now 2023-06-04 22:50:07 +02:00
zadam
b79631a35d setContent refactoring 2023-06-04 20:51:08 +02:00
zadam
c177aaa901 refactoring of highlight list 2023-06-04 17:46:37 +02:00
zadam
eff3e1df85 Merge pull request #3988 from SiriusXT/Highlighted-Text
Show highlighted text in the right pane
2023-06-04 12:37:19 +02:00
zadam
b46d5f4a71 add blobId to the ETAPI #4005 2023-06-04 12:00:04 +02:00
SiriusXT
5b421d51b5 Merge branch 'Highlighted-Text' of https://github.com/SiriusXT/trilium into Highlighted-Text 2023-06-04 16:02:32 +08:00
SiriusXT
8852e8e531 Show highlighted text in right panel 2023-06-04 16:02:30 +08:00
zadam
8bc84cfaf6 Merge pull request #4004 from dymani/default-shortcuts
Fix shortcuts not resetting to default
2023-06-03 23:09:31 +02:00
SnnBcd
cde13dc580 Merge branch 'zadam:master' into Highlighted-Text 2023-06-04 00:24:08 +08:00
dymani
282d135f0f Fix shortcuts not resetting to default 2023-06-03 22:03:54 +08:00
SiriusXT
3e3d7aa4d7 Show highlighted text in right panel 2023-06-03 17:12:06 +08:00
SiriusXT
446c41d020 Show highlighted text in right panel 2023-06-03 17:00:15 +08:00
SiriusXT
33fdad5159 Show highlighted text in right panel 2023-06-03 14:43:20 +08:00
SiriusXT
463d145cb7 Merge branch 'Highlighted-Text' of https://github.com/SiriusXT/trilium into Highlighted-Text 2023-06-03 11:55:59 +08:00
SiriusXT
1413756d00 Show highlighted text in right panel 2023-06-03 11:55:50 +08:00
zadam
d3bf325f19 added some comments to openapi spec 2023-06-03 00:32:16 +02:00
zadam
c4f69fd9cb don't allow patching relation's value in ETAPI #3998 2023-06-03 00:21:46 +02:00
dymani
50ec17433d Fix move pane button after reopen split 2023-06-03 05:59:53 +08:00
dymani
2c8eb82d42 Reopen recently closed tab/split in place 2023-06-03 05:54:33 +08:00
zadam
af67cf64b1 Merge pull request #3984 from dymani/move-pane
Add buttons to reorder split panes
2023-06-02 16:07:15 +02:00
zadam
095da691a4 Merge remote-tracking branch 'origin/master' 2023-06-02 16:05:10 +02:00
zadam
7e71029d1c use note size format also in file properties 2023-06-02 16:05:02 +02:00
SnnBcd
045ee18237 Merge branch 'zadam:master' into Highlighted-Text 2023-06-02 21:02:31 +08:00
zadam
e47c3a27b0 remove the workaround test 2023-06-01 23:18:50 +02:00
zadam
ced99f8ac8 Merge pull request #3995 from mm21/master
Add ETAPI test to repro inherited attribute issue for cloned note #3994
2023-06-01 23:15:10 +02:00
zadam
0c4492bcd0 invalidate attribute cache on branch create/update, fixes #3994 2023-06-01 23:14:17 +02:00
zadam
d9359c7c55 downgrade excalidraw to 0.14.2, #3979 2023-06-01 22:51:34 +02:00
mm21
86a080e7ec Add ETAPI test to repro inherited attribute issue for cloned note #3994 2023-06-01 17:20:11 +00:00
SiriusXT
0a66809bf0 Not show when nothing is checked in the options 2023-06-01 20:38:55 +08:00
SiriusXT
ecfdde2f2a Show highlighted text in the right pane 2023-06-01 20:17:00 +08:00
zadam
758dba9ba5 fix event 2023-06-01 00:13:08 +02:00
zadam
ae42e0efc7 refactoring 2023-06-01 00:07:57 +02:00
zadam
b5cfc28912 rename inheritableAttributeCache to __inheritableAttributeCache for consistency 2023-05-31 23:21:06 +02:00
zadam
c802bf7d8b Merge pull request #3990 from mm21/master
Add ETAPI tests to repro inherited attribute issue #3989 and workaround
2023-05-31 22:55:57 +02:00
mm21
9e5a02094c Add ETAPI tests to repro inherited attribute issue and workaround 2023-05-31 17:11:42 +00:00
dymani
58253567cd Simplify noteContextReorder event call 2023-06-01 00:48:37 +08:00
SiriusXT
92d5aeae41 Show highlighted text in the right panel 2023-05-31 22:34:24 +08:00
SiriusXT
d2d286a4ff Show highlighted text in the left pane 2023-05-31 21:47:43 +08:00
zadam
a6ade790c6 script api docs 2023-05-31 14:35:08 +02:00
zadam
a9dae7823f script api docs 2023-05-31 14:00:37 +02:00
SiriusXT
86861f6ec3 Show highlighted text in the left pane 2023-05-31 18:32:33 +08:00
zadam
d26a0fae17 if a note context has sub contexts, then it has to be saved even if empty, fixes #3985 2023-05-31 00:03:20 +02:00
zadam
375dba3264 fixed infinite recursion with search notes 2023-05-30 23:54:11 +02:00
zadam
74044754e2 Merge remote-tracking branch 'origin/master' 2023-05-30 22:59:23 +02:00
zadam
64aed9b462 display icon for non-supported note types in content renderer 2023-05-30 22:52:48 +02:00
zadam
5428cafa50 Merge pull request #3963 from SiriusXT/master
keep this window on top
2023-05-30 22:37:10 +02:00
dymani
735852b3c1 Use noteContextReorder event instead 2023-05-31 01:53:55 +08:00
zadam
f4b5d43899 inline file attachments when exporting single HTML file 2023-05-29 23:42:08 +02:00
zadam
235b779dec detect existing attachment in target note 2023-05-29 22:37:19 +02:00
dymani
2a39906993 Cleanup 2023-05-30 04:22:51 +08:00
dymani
e1b67e20ec Add buttons to move split panes 2023-05-30 03:44:05 +08:00
zadam
df17840dbc fixes attachments 2023-05-29 13:02:25 +02:00
zadam
9d52f80c2f linking attachments finished 2023-05-29 10:21:34 +02:00
zadam
0aa119af2c attachments WIP 2023-05-29 00:19:54 +02:00
zadam
c2f70031d0 Merge branch 'master' into next61
# Conflicts:
#	package-lock.json
#	package.json
#	src/public/app/entities/fnote.js
#	src/public/app/services/link.js
2023-05-28 16:57:48 +02:00
SiriusXT
1a2beb941e keep this window on top 2023-05-27 14:23:50 +08:00
SiriusXT
01b2887b36 Keep this window on top. 2023-05-27 14:18:26 +08:00
SiriusXT
5286d4a97c Merge branch 'master' of https://github.com/SiriusXT/trilium 2023-05-27 14:14:31 +08:00
zadam
bf6106f4dc release 0.60.1-beta 2023-05-26 23:11:53 +02:00
zadam
82efc92413 lib upgrades 2023-05-26 23:11:37 +02:00
zadam
34481df2e7 Merge remote-tracking branch 'origin/master' 2023-05-26 11:14:22 +02:00
zadam
ad4631018a right click on external link should not open the link, fixes #3971 2023-05-26 11:13:49 +02:00
zadam
ef89eede17 Merge pull request #3974 from soulsands/fix-edited-note
fix getEditedNotesOnDate
2023-05-26 11:05:57 +02:00
zadam
6878877acd Merge remote-tracking branch 'origin/master' 2023-05-26 10:55:50 +02:00
zadam
611a983461 images in note list preview should be shrinked to fit into view, fixes #3965 2023-05-26 10:54:08 +02:00
zadam
8e913cb453 wip 2023-05-26 10:36:05 +02:00
baiyongjie
9d49264258 cleaup 2023-05-26 14:54:13 +08:00
baiyongjie
6098d62dcc fix getEditedNotesOnDate 2023-05-26 14:36:21 +08:00
zadam
580ceec6b3 Merge pull request #3959 from soulsands/fix-search
fix search
2023-05-25 23:36:35 +02:00
SiriusXT
79dca12274 top 2023-05-23 20:50:03 +08:00
SiriusXT
66c25e7f29 Bring this window to the top 2023-05-23 15:55:35 +08:00
SiriusXT
dc4983a013 Bring this window to the top 2023-05-23 15:49:03 +08:00
SiriusXT
039959a48b Put this window top. 2023-05-23 15:44:26 +08:00
SiriusXT
63be25f5bb put window on top 2023-05-23 11:14:23 +08:00
SiriusXT
ce7489049f put window on top 2023-05-23 10:32:24 +08:00
baiyongjie
b3d5938665 fix search 2023-05-23 09:30:55 +08:00
zadam
579ed7e194 attachment content rendering 2023-05-21 18:14:17 +02:00
zadam
e20fac19ba attachment WIP 2023-05-20 23:46:45 +02:00
zadam
9e9fb2979f Merge branch 'master' into next61
# Conflicts:
#	package-lock.json
#	package.json
#	src/public/app/components/note_context.js
#	src/public/app/services/open.js
#	src/public/app/widgets/buttons/note_actions.js
#	src/public/app/widgets/find_in_code.js
#	src/public/app/widgets/type_widgets/canvas.js
#	src/services/options.js
2023-05-20 20:55:57 +02:00
zadam
7fc2824325 ignore husky install error 2023-05-20 14:23:22 +02:00
zadam
0728f540ab locked versions 2023-05-18 23:57:18 +02:00
zadam
4913a5a5fa release 0.60.0-beta 2023-05-18 23:31:57 +02:00
zadam
14dd2b8827 cleanup 2023-05-18 23:05:28 +02:00
zadam
4e9e7eba48 Merge remote-tracking branch 'origin/master' 2023-05-18 13:46:53 +02:00
zadam
f3bc604516 Merge branch 'stable'
# Conflicts:
#	src/public/app/widgets/toc.js
2023-05-18 13:46:41 +02:00
zadam
bd278e291a Merge pull request #3948 from soulsands/tooltip
Normalize tooltip style
2023-05-18 13:42:18 +02:00
zadam
074820dae5 cleanup of find in text implementation 2023-05-18 13:41:32 +02:00
zadam
1089e84f56 Merge pull request #3947 from SiriusXT/master
FindInText: Automatically search the selected text
2023-05-18 13:27:37 +02:00
baiyongjie
ed3d81ce62 normalize tooltip style 2023-05-18 16:41:07 +08:00
SnnBcd xt
57aa0a0fe1 findInText: Automatically search the selected text 2023-05-18 07:29:21 +00:00
zadam
88a961180f cleanup note open custom 2023-05-17 23:57:32 +02:00
zadam
1f8798d7ac upgrades 2023-05-17 23:47:30 +02:00
zadam
bd8429a0ba Merge pull request #3944 from SiriusXT/toc
toc scrolls smoothly
2023-05-17 23:13:41 +02:00
zadam
af95d387b9 Merge remote-tracking branch 'origin/master' into next60
# Conflicts:
#	src/public/app/services/open.js
#	src/public/app/widgets/buttons/note_actions.js
2023-05-17 23:10:02 +02:00
zadam
da348075e8 Merge pull request #3923 from soulsands/fix-include
fix included note display
2023-05-17 23:06:50 +02:00
SnnBcd xt
d24d3af87d Other elements in the scroll-container (including text search) scroll smoothly 2023-05-17 12:03:38 +00:00
SnnBcd xt
085c0e76ca toc scrolls smoothly 2023-05-17 10:18:58 +00:00
zadam
d7d98b29a7 Merge pull request #3940 from SiriusXT/open-note-custom
Open note custom
2023-05-16 23:55:17 +02:00
zadam
cb3b03537c Merge pull request #3938 from meichthys/keyboardshortcut
Change KeybaordLauncher to KeyboardShortcut
2023-05-16 22:37:00 +02:00
SnnBcd xt
7c7bea5e3a Open notes with custom software. 2023-05-16 14:01:55 +00:00
SnnBcd xt
9fc474504b Open notes with custom software 2023-05-16 11:57:28 +00:00
SnnBcd xt
412fd105c9 open-note-custom-test 2023-05-16 06:22:15 +00:00
MeIchthys
470a0c7b21 Update launchbar_command_launcher.html to refer to shortcuts 2023-05-15 10:21:40 -04:00
MeIchthys
9968cba348 singluarify 'mirrors' 2023-05-15 10:15:14 -04:00
MeIchthys
aee520a209 Change keyboardLauncher to keyboardShortcut 2023-05-15 10:12:43 -04:00
MeIchthys
cf4201b084 update keyboardlauncher to keyboardShortcut 2023-05-15 10:11:07 -04:00
zadam
76196ed42c Merge remote-tracking branch 'origin/master' into next60 2023-05-14 17:32:59 +02:00
zadam
6089a369e3 added missing font files #3933 2023-05-13 16:29:18 +02:00
zadam
092db03729 update montserrat for better cyrillic support, fixes #3933 2023-05-13 16:28:32 +02:00
zadam
239c14a5df fix search in "view source", closes #3929 2023-05-13 16:00:41 +02:00
zadam
8a6002c6be fix search in "view source", closes #3929 2023-05-13 15:58:32 +02:00
zadam
38781d33ac Merge remote-tracking branch 'origin/master' into next60
# Conflicts:
#	src/public/app/widgets/type_widgets/editable_text.js
2023-05-13 15:43:35 +02:00
zadam
0518cdbe8e Merge pull request #3928 from meichthys/auto-flex-note-title
Auto flex note title in tree
2023-05-13 15:42:12 +02:00
MeIchthys
4849dacd52 auto flex note title in tree 2023-05-12 10:14:34 -04:00
baiyongjie
7cf47520d4 fix included note display 2023-05-11 10:54:20 +08:00
baiyongjie
8eb0a4e1cb fix cursor position when Jumping from note to included note
(cherry picked from commit 6a9aa5eeda)
2023-05-11 00:22:06 +02:00
zadam
ad2a7a2da3 Merge pull request #3920 from soulsands/fix-include
fix cursor position when Jumping from note to included note
2023-05-11 00:21:21 +02:00
baiyongjie
6a9aa5eeda fix cursor position when Jumping from note to included note 2023-05-10 18:08:25 +08:00
zadam
04524ae8e4 Merge pull request #3918 from meichthys/ribbon_more_obvious
Make active ribbon item more obvious
2023-05-09 23:46:45 +02:00
zadam
04caba9f5b fix parsing the authentication header with password containing a colon, closes #3916 2023-05-09 23:44:43 +02:00
zadam
cc1f831a6a don't allow setting image quality to empty value, #3894 2023-05-09 23:32:06 +02:00
zadam
331d280075 TOC scrolls smoothly (on readonly), #3911 2023-05-09 23:14:56 +02:00
MeIchthys
46ed61d38a Make active ribbon item more obvious 2023-05-09 16:29:04 -04:00
zadam
ff5d3a5f0c import WIP 2023-05-09 00:05:27 +02:00
zadam
626af84f42 refactoring + uploading attachments WIP 2023-05-08 00:02:08 +02:00
zadam
b05ce12e7b adding links to owning note and list to attachments 2023-05-07 23:32:30 +02:00
zadam
274505188b fix "go to note" from note autocomplete 2023-05-07 21:29:09 +02:00
zadam
f85209a72f getting rid of attributes like data-note-path in favor of the whole nav state in URLs 2023-05-07 21:18:21 +02:00
zadam
291f0e79d9 make a special backup before migrating to 0.60 2023-05-07 15:46:17 +02:00
zadam
64db5e2542 cleanup of app.js, wwww 2023-05-07 15:23:46 +02:00
zadam
c4a2ff5fa1 fix hamburger icon in canvas, #3780 2023-05-07 12:09:38 +02:00
zadam
9f5f0aeddd fix hamburger icon in canvas 2023-05-07 11:54:04 +02:00
zadam
4d5612e845 fix updating non-text notes 2023-05-07 11:20:51 +02:00
zadam
371f174756 run hiddenSubtreeService.checkHiddenSubtree() also periodically, useful for server deployments, #3907 2023-05-07 10:54:06 +02:00
zadam
5676ff9b2e Merge pull request #3909 from mm21/etapi-generated-client
Enable generated etapi client
2023-05-07 10:50:05 +02:00
zadam
aa8c0fdad8 Merge pull request #3908 from mm21/etapi-attribute-position
Allow etapi to update attribute fields isInheritable, position
2023-05-07 10:48:25 +02:00
zadam
8284c673f9 can't allow opening externally on attachment list 2023-05-07 10:43:51 +02:00
zadam
cc02546ed3 Merge remote-tracking branch 'origin/master' into next60
# Conflicts:
#	src/routes/api/options.js
#	src/services/import/zip.js
#	src/services/options_init.js
2023-05-07 09:41:33 +02:00
mm21
d09132dd60 Revert path param changes for POST 2023-05-07 00:32:42 +00:00
mm21
ec662d01d0 Revert "Update etapi test"
This reverts commit 4aeecfdfa9.
2023-05-07 00:18:39 +00:00
mm21
ad0b98e2a1 Omit attributeId/branchId path params from postAttribute/postBranch in etapi.openapi.yaml 2023-05-07 00:18:28 +00:00
mm21
3cafad3bf4 Remove isInheritable from PATCH 2023-05-06 23:42:48 +00:00
zadam
fbea3ed94f Merge pull request #3901 from Nriver/master
customize search engine
2023-05-06 23:02:12 +02:00
zadam
0ab18e3069 Merge pull request #3897 from contributor/feature/ZipExportDocumentTitle
zip export/import improvements
2023-05-06 22:52:05 +02:00
zadam
2aa987c072 fixes for zip export/import in regard to attachments 2023-05-06 22:50:28 +02:00
zadam
a06ddc439d improving import WIP 2023-05-06 15:07:38 +02:00
zadam
f6944b8219 introducing meta types for import/export, fixes for attachments export 2023-05-06 14:38:45 +02:00
zadam
fa3cbb4645 grammar 2023-05-05 23:41:11 +02:00
zadam
6dfc72c065 many small fixes from Intellij analysis 2023-05-05 23:17:23 +02:00
zadam
0af6f91d21 exposing blobs in APIs 2023-05-05 22:21:51 +02:00
mm21
4aeecfdfa9 Update etapi test 2023-05-05 18:41:29 +00:00
mm21
79d4dcf5f1 Enable generated etapi client 2023-05-05 18:33:26 +00:00
mm21
26a6ef8c03 Allow etapi to update attribute fields isInheritable, position 2023-05-05 18:27:26 +00:00
zadam
5e1f81e53e getting rid of note complement WIP 2023-05-05 16:37:39 +02:00
zadam
9cdcbb3125 fix runOnNoteContentChange event 2023-05-05 15:42:53 +02:00
zadam
35338e9ec6 fix runOnNoteContentChange event 2023-05-05 15:40:44 +02:00
zadam
78d83b8826 fix note size calculation with blobs 2023-05-05 15:18:55 +02:00
zadam
8edf06d28d small refactorings 2023-05-04 22:16:18 +02:00
zadam
ecd2a5cbac Merge remote-tracking branch 'origin/master' into next60 2023-05-04 21:01:53 +02:00
zadam
c0cf319521 upgrade electron to 25 and node to 18 2023-05-04 21:01:25 +02:00
contributor
bb9631476e bump metaFile format version 2023-05-04 19:56:11 +03:00
contributor
386e8dd32e zip import - remove html tags added by Trilium 2023-05-04 19:56:02 +03:00
Nriver
61616f708f add default options for search engine options 2023-05-04 18:01:51 +08:00
Nriver
8ce499e958 add runtime check for search engine options 2023-05-04 16:20:09 +08:00
Nriver
22587ee6b5 customize search engine 2023-05-04 14:57:33 +08:00
zadam
9b32d86f78 take branch prefix into account while sorting, fixes #3896 2023-05-03 23:42:44 +02:00
zadam
5ea8226996 Merge pull request #3777 from PhilippOesch/#3689
change downdown border to light border
2023-05-03 23:25:35 +02:00
zadam
fbffc6b2b5 inline attachment images into single HTML export 2023-05-03 23:17:07 +02:00
zadam
cd01886eb2 attachment revision upload 2023-05-03 22:49:24 +02:00
contributor
bb8fd2b054 zip export - set note title as document.title 2023-05-03 16:19:28 +03:00
zadam
d8bc9c2982 attachment actions 2023-05-03 10:23:20 +02:00
zadam
d232694dec tree context menu to convert notes into attachments 2023-05-02 23:04:41 +02:00
zadam
735ac55bb8 fixes, allowing conversion of note into an attachment 2023-05-02 22:46:39 +02:00
zadam
c9aab9b479 Merge pull request #3893 from mirrorcult/2023-05-01/ensure-note-return-branch
Return created/existing branch in `EnsureNoteIsPresentInParent`
2023-05-02 21:12:43 +02:00
Kara
53c87f3d25 Return created/existing branch in EnsureNoteIsPresentInParent 2023-05-01 12:41:22 -05:00
zadam
4f1fafdf75 Merge pull request #3870 from soulsands/perf-count
perf: improve descendant count performance
2023-04-28 21:53:41 +02:00
zadam
330e7ac08e copying attachments WIP 2023-04-25 00:01:58 +02:00
zadam
49fb913eab erasing unused attachments 2023-04-24 21:22:34 +02:00
zadam
4b074365e7 Merge branch 'master' into next60 2023-04-24 20:21:45 +02:00
zadam
0896000fcd Merge branch 'stable' 2023-04-24 20:21:22 +02:00
Castor
e007aba067 Update note_map.js 2023-04-24 13:43:19 +08:00
zadam
a6eda2479f Merge pull request #3871 from soulsands/config-debug
chore: debugger config for vscode developers
2023-04-23 22:32:29 +02:00
zadam
eff567ee48 wrong password login screen should return 401 so that it counts to the rate limiter, fixes #3867 2023-04-23 22:22:05 +02:00
zadam
d3c2c314ac Merge pull request #3866 from soulsands/custom-match
fix:  match custom path strictly
2023-04-23 22:12:55 +02:00
baiyongjie
89681977b5 perf: improve descendant count performance 2023-04-23 15:36:34 +08:00
baiyongjie
e10a7ea9a6 chore: debugger config for vscode developers 2023-04-23 15:26:46 +08:00
soulsands
c3c6d73bb2 fix: match custom path strictly 2023-04-22 19:37:49 +08:00
zadam
5e2efca933 scheduled erasure of attachments WIP 2023-04-21 00:19:17 +02:00
zadam
e71b0d82a1 scheduled attachment deletion WIP 2023-04-20 00:11:09 +02:00
zadam
c6c162cdda restore revision with attachments 2023-04-19 22:47:33 +02:00
zadam
8b46d6c718 Merge branch 'stable' into next60 2023-04-19 22:03:44 +02:00
zadam
e24d5a6f83 collapse command will collapse the whole tree, including the current active note path, fixes #3664 2023-04-19 21:24:51 +02:00
zadam
e28fbf4617 fixes 2023-04-17 23:21:28 +02:00
zadam
0e4a040ed8 fixes of new attachment URLs 2023-04-17 22:40:53 +02:00
zadam
b84670d503 Merge branch 'master' into next60 2023-04-17 22:27:21 +02:00
zadam
8725f7cfb2 Merge branch 'stable'
# Conflicts:
#	src/services/build.js
2023-04-17 22:26:01 +02:00
zadam
83d8908ee8 release 0.59.4 2023-04-17 21:40:35 +02:00
zadam
af9ef83742 Merge pull request #3827 from soulsands/eslint-format
Eslint  and formating enhancement
2023-04-17 20:44:47 +02:00
zadam
3eafdadd1f Merge branch 'master' into eslint-format 2023-04-17 20:44:34 +02:00
zadam
1d3272e9f8 fix displaying error message in mermaid, closes #3841 2023-04-16 23:41:40 +02:00
zadam
447b8f0f0c Merge pull request #3848 from soulsands/auto-reload
chore: dev auto reload
2023-04-16 23:30:23 +02:00
zadam
aaf6e3bace Merge pull request #3847 from soulsands/perf-build
Perf: building improvement
2023-04-16 23:27:55 +02:00
zadam
44c61b8e7d Merge pull request #3846 from soulsands/highlighter
change match-hightlighter config
2023-04-16 23:27:24 +02:00
zadam
8226f62ded download offline images from libreoffice, fixes #3842 2023-04-16 23:11:18 +02:00
zadam
d3b17f586d Merge pull request #3839 from soulsands/activate
Activating after removal of subContexts conforms to mainContexts
2023-04-16 22:11:32 +02:00
zadam
a556ba0959 Merge pull request #3838 from soulsands/patch-1
chore: remove install in script switch-electron
2023-04-16 22:09:52 +02:00
zadam
ad40cd72ff Merge pull request #3833 from soulsands/es-version
fix: upgrade version to support top level await
2023-04-16 20:51:17 +02:00
zadam
9a22c3fce7 Merge pull request #3837 from soulsands/fix-tree
fix: correct moving active node
2023-04-16 20:50:11 +02:00
zadam
63e044ffdf refactoring 2023-04-16 11:28:24 +02:00
zadam
2e794ee38f fixes 2023-04-16 09:26:52 +02:00
zadam
a1d4e062ed refactoring of "some path" WIP 2023-04-16 09:22:24 +02:00
Castor
d2d2a28885 Update ws.js 2023-04-15 19:42:09 +08:00
baiyongjie
ead4242735 chore: dev auto reload 2023-04-15 17:58:40 +08:00
baiyongjie
30a8c6b579 perf: building improvement 2023-04-15 17:45:10 +08:00
baiyongjie
25df8f9c52 change match-hightlighter config 2023-04-15 11:01:24 +08:00
baiyongjie
65d2389b2e update eslint config & fix lint 2023-04-15 09:57:50 +08:00
zadam
7aa26580ba refactoring of "some path" WIP 2023-04-15 00:06:13 +02:00
zadam
e4376bb9f2 isRoot check 2023-04-14 20:24:28 +02:00
zadam
f01657e1dd refactorings 2023-04-14 16:49:06 +02:00
soulsands
0c08126752 activating after removal of subContexts conforms to mainContexts 2023-04-13 21:16:10 +08:00
Castor
ea64adc2f9 chore: remove install in script switch-electron
hi.
No need to install since it's already in position.
2023-04-13 17:56:28 +08:00
baiyongjie
ad8ec68443 fix: correct active tree node after moving an clone node 2023-04-13 11:05:53 +08:00
baiyongjie
5e5fe2ccf3 fix: upgrade version to support top level await 2023-04-12 10:05:26 +08:00
zadam
34ecd77bd4 note revision save also saves attachments 2023-04-11 23:24:39 +02:00
zadam
6cf0fe0b73 attachments have a position 2023-04-11 22:55:50 +02:00
zadam
3f8bf7cacc renamed openTabs to openNoteContexts 2023-04-11 22:00:04 +02:00
zadam
17128c5874 navigation state is more nicely and completely serialized into URL 2023-04-11 21:41:55 +02:00
zadam
9e71c44c76 open attachment by double click 2023-04-11 18:05:57 +02:00
zadam
54c0268593 attachment improvements 2023-04-11 17:45:51 +02:00
zadam
a5f0b2a81e Merge remote-tracking branch 'origin/next60' into next60 2023-04-11 17:02:53 +02:00
zadam
a154bea016 Merge branch 'master' into next60 2023-04-11 17:02:24 +02:00
soulsands
2a34c8fa66 Merge remote-tracking branch 'up/master' into eslint-format 2023-04-11 01:02:07 +08:00
zadam
15a11daf38 Merge branch 'master' into next60
# Conflicts:
#	package-lock.json
#	package.json
2023-04-10 18:52:30 +02:00
zadam
5e88e24693 package upgrades 2023-04-10 18:50:55 +02:00
soulsands
988c5c6a25 chore: config 2023-04-11 00:37:38 +08:00
soulsands
d98c46a275 chore: share editor config 2023-04-11 00:21:24 +08:00
soulsands
185b206627 chore: husky 2023-04-11 00:21:24 +08:00
soulsands
cfb04f7d8a chore: add eslint config 2023-04-11 00:21:24 +08:00
zadam
dba0c9f373 Merge branch 'stable'
# Conflicts:
#	src/services/build.js
2023-04-09 23:30:41 +02:00
zadam
ee60652746 eslint config 2023-04-09 23:08:24 +02:00
zadam
fbc79eae62 Merge pull request #3818 from soulsands/fix-lint
Fix lint
2023-04-09 22:54:02 +02:00
zadam
b356a634d1 Merge pull request #3817 from soulsands/add-font
feat: add Microsoft YaHei font (for Chinese)
2023-04-09 22:47:46 +02:00
zadam
b2ed5a01b3 Merge pull request #3816 from soulsands/fix-attr-ui
fix:don't break words for CJK text
2023-04-09 22:47:02 +02:00
zadam
839b172b92 fix duplicating subtree with internal links, closes #3813 2023-04-09 22:45:31 +02:00
soulsands
745e120a0b fix: remove unused variable 2023-04-08 21:13:37 +08:00
soulsands
a0ac603260 fix:Remove duplicates in character class 2023-04-08 21:07:48 +08:00
soulsands
181ddce887 fix: remove misleading await 2023-04-08 20:49:25 +08:00
soulsands
50043f889b fix: remove duplication 2023-04-08 20:00:42 +08:00
soulsands
49d1c5140e fix: equal 2023-04-08 19:54:59 +08:00
soulsands
ab7a07a318 fix: remove extra params 2023-04-08 19:51:39 +08:00
soulsands
306e7abb47 feat: add Microsoft YaHei font (for Chinese) 2023-04-08 18:41:18 +08:00
soulsands
cec4dfa6c3 fix:don't break words for CJK text 2023-04-08 14:56:37 +08:00
zadam
21813a7b83 Merge pull request #3814 from soulsands/persistent-cache
Perf: add persistent http cache in prod
2023-04-07 21:48:00 +02:00
zadam
293573a0cd don't update attribute detail while composing CJK characters, fixes #3812 2023-04-07 21:45:27 +02:00
soulsands
8695228537 perf: add persistent http cache in prod 2023-04-07 19:55:18 +08:00
zadam
24866a3e25 fix click events propagating from context menu being closed, fixes #3805
(cherry picked from commit e871edc8f3)
2023-04-06 23:16:32 +02:00
zadam
e871edc8f3 fix click events propagating from context menu being closed, fixes #3805 2023-04-06 23:05:03 +02:00
zadam
517f1992a1 remove fallback resize window handlers, such old browsers are not supported 2023-04-06 21:30:37 +02:00
zadam
e6adf3a522 Merge pull request #3808 from soulsands/fix-resize
Fix: correct note-map resizing
2023-04-06 21:28:01 +02:00
zadam
32e9fd291d promotes attributes tab should be always visible when available, fixes #3806 2023-04-06 21:25:13 +02:00
zadam
8229a97ffb capitalizing ribbon widget names #3806 2023-04-06 21:20:19 +02:00
soulsands
6612a3a550 fix: correct note-map resizing 2023-04-06 21:06:08 +08:00
zadam
c44be53673 awaiting on triggered events/commands in the frontend API, fixes #3799 2023-04-05 22:07:08 +02:00
zadam
5d6d9ab6d6 wip attachment support 2023-04-03 23:47:24 +02:00
zadam
d100b0dc07 allow #newNotesOnTop=false to negate previous setting, closes #3796 2023-04-03 21:08:32 +02:00
zadam
a0e9ac73c9 Merge remote-tracking branch 'origin/stable' into stable
# Conflicts:
#	src/services/build.js
2023-04-03 21:00:02 +02:00
zadam
2bc78ccafb wip attachment widget 2023-04-01 23:55:04 +02:00
zadam
53aebf1448 wip attachment widget 2023-04-01 13:58:53 +02:00
zadam
2e9ce962df Merge pull request #3695 from Nriver/master
add natural sort for notes, introduce new label #sortNatural
2023-03-30 23:49:48 +02:00
zadam
fa406d3ded wip attachment widget 2023-03-30 23:48:26 +02:00
Nriver
93ad83d2ae add #sortLocale label for natural sort. rephrase feature description. 2023-03-30 11:06:10 +08:00
zadam
72b1cc4d89 fixed loading of parent to froca when e.g. sharing (cloning into not yet loaded _share parent) 2023-03-29 23:16:45 +02:00
zadam
e70cca4736 fix trailing slash in shared note in IE, closes #3782 2023-03-29 23:07:47 +02:00
zadam
d354c91d7c sort icons by how much they are used, #3784 2023-03-29 22:40:50 +02:00
zadam
2d7b5e4aa2 Merge branch 'stable'
# Conflicts:
#	src/services/build.js
2023-03-29 22:37:44 +02:00
zadam
b542a28673 Merge branch 'stable' 2023-03-27 23:35:40 +02:00
zadam
ed52919f9e release 0.59.3 2023-03-27 23:06:14 +02:00
zadam
45a74a046c release 0.59.3 2023-03-27 23:03:27 +02:00
zadam
3192531d4c don't trigger menu items on right click, #3764 2023-03-27 22:49:41 +02:00
Philipp Oeschger
351bb760ae change downdown border to light border 2023-03-27 01:42:50 +02:00
zadam
79a6baca6f adjust logo sizing/positioning 2023-03-26 23:23:13 +02:00
zadam
f9645e8971 Merge branch 'stable' 2023-03-26 23:11:47 +02:00
zadam
7611c83148 Merge pull request #3773 from mm21/master
Add svg icons
2023-03-26 23:11:04 +02:00
zadam
9881e6de3e fix hangup on highlighting empty tokens, closes #3772 2023-03-26 23:09:15 +02:00
Matt
53b4f0e0d5 Add svg icons 2023-03-26 19:29:52 +00:00
zadam
9a645c24ca Merge pull request #3771 from eltociear/add-readme_ja
Add Japanese README
2023-03-26 21:10:21 +02:00
zadam
682d821b67 Merge pull request #3766 from meichthys/patch-7
Move .tree-actions left to accomodate wider windows scrollbar and adjust boarder
2023-03-26 20:58:59 +02:00
zadam
71afffaac1 Merge pull request #3765 from meichthys/patch-5
Add bottom border to note-book-header
2023-03-26 20:58:12 +02:00
zadam
a099876088 fix escaping in sql console results 2023-03-26 20:50:37 +02:00
Ikko Eltociear Ashimine
cf904a874e Add links 2023-03-26 20:34:46 +09:00
Ikko Eltociear Ashimine
5a32a7ce18 minor fix 2023-03-26 20:33:59 +09:00
Ikko Eltociear Ashimine
6d6221636c Add Japanese README 2023-03-26 20:25:17 +09:00
MeIchthys
8a4caaf6fb Add border to tree-actions section and adjust padding 2023-03-24 15:17:17 -04:00
MeIchthys
fa6d1879dd Move .tree-actions left to accomodate wider windows scrollbar 2023-03-24 14:46:09 -04:00
MeIchthys
874b6c71a3 Add bottom border to note-book-header 2023-03-24 11:29:16 -04:00
zadam
9be524ef89 attachment improvements 2023-03-24 10:57:32 +01:00
zadam
fd8a2d4d92 hide global menu after changing note/context 2023-03-24 09:32:06 +01:00
zadam
0b270ee87a remove "hide included images" feature since with attachments it's no longer necessary 2023-03-24 09:17:17 +01:00
zadam
5cc5859211 migrate images to attachments 2023-03-24 09:13:35 +01:00
zadam
bd489d5780 node upgrades 2023-03-24 07:45:18 +01:00
zadam
cd72ea524e promoted and inherited attributes should be shown grouped based on the owning note, #3761 2023-03-23 23:47:28 +01:00
zadam
56e8506cb9 Merge pull request #3756 from meichthys/note-book-card-margin
Use same margin all around note-book-card
2023-03-23 23:20:50 +01:00
MeIchthys
c86be990d6 Use same margin all around note-book-card 2023-03-21 16:19:09 -04:00
zadam
a24c56a9d5 fixes 2023-03-20 23:11:32 +01:00
zadam
95e38a037b scrollbar tweak color 2023-03-20 20:50:18 +01:00
zadam
256b800d0e scrollbar tweak color 2023-03-20 20:48:52 +01:00
zadam
b3c4c850db Merge branch 'master' into next60 2023-03-20 20:21:30 +01:00
zadam
6b1f9d3243 add #newNotesOnTop, closes #3734
(cherry picked from commit d31b5ac99f)
2023-03-19 22:27:12 +01:00
dymani
117f1101e4 Fix typo in backend API createOrUpdateLauncher()
(cherry picked from commit b3f47bb2b6)
2023-03-19 22:27:12 +01:00
zadam
4284116280 Merge pull request #3736 from dymani/master
Fix typo in backend API createOrUpdateLauncher()
2023-03-19 22:26:16 +01:00
zadam
d31b5ac99f add #newNotesOnTop, closes #3734 2023-03-19 22:23:58 +01:00
dymani
b3f47bb2b6 Fix typo in backend API createOrUpdateLauncher() 2023-03-18 10:18:34 +08:00
zadam
64d8c7a657 add a check for the hidden note existence, #3728 2023-03-17 22:14:50 +01:00
zadam
4c3fcc3ea6 fix sanitization of autocomplete against XSS 2023-03-17 22:04:49 +01:00
zadam
5ad47d3866 fix cache invalidation upon note title change 2023-03-17 20:44:26 +01:00
zadam
e698aa5822 uploading image to attachment 2023-03-16 20:13:34 +01:00
zadam
1fdb23746a uploading image to attachment 2023-03-16 18:34:39 +01:00
zadam
9cd5bdeb53 fix note revision 2023-03-16 17:49:35 +01:00
zadam
e6183b9a1d improved saving 2023-03-16 17:43:37 +01:00
zadam
d83005fe4d improved saving attachment 2023-03-16 16:37:31 +01:00
zadam
2b84f1be00 unify .setContent() .getContent() handling across notes, revisions, attachments 2023-03-16 15:19:26 +01:00
zadam
bb45c67e60 Merge branch 'stable' into next60 2023-03-16 13:39:28 +01:00
zadam
147160ed45 fix dead references in consistency_checks.js 2023-03-16 13:30:33 +01:00
zadam
515fb4e5db blob WIP 2023-03-16 13:29:11 +01:00
zadam
b6efc954bd blob WIP 2023-03-16 12:17:55 +01:00
zadam
eee05a4d01 blob WIP 2023-03-16 12:11:00 +01:00
zadam
dc97400dbf ancillary => attachment 2023-03-16 11:03:28 +01:00
zadam
e16bedfab4 WIP blobs 2023-03-16 11:02:07 +01:00
zadam
5a8e216dec WIP blob 2023-03-15 22:44:08 +01:00
zadam
1faf8225c7 Merge branch 'master' into next60 2023-03-15 20:19:47 +01:00
zadam
bfbb531863 Merge pull request #3719 from meichthys/patch-sqlconsole
Fixes #3718
2023-03-15 16:41:07 +01:00
MeIchthys
48ba73e06d Fixes #3718 2023-03-15 09:56:26 -04:00
zadam
c922322ed3 Merge pull request #3152 from spasche/scrollbar-color
use same variable as Firefox for scrollbar thumb
2023-03-14 22:16:39 +01:00
zadam
53aaffd0f5 Merge pull request #3652 from eliandoran/fix/infinite_loop_autocompletion
Infinite loop when searching for '' in Jump to note
2023-03-14 22:13:40 +01:00
zadam
63a70f2ffa release 0.59.2 2023-03-14 21:15:08 +01:00
zadam
d8e9086bde Merge pull request #3710 from meichthys/patch-3
Capitalize Ribbon Widget titles for consistency
2023-03-14 21:12:38 +01:00
zadam
af4470ead1 Merge pull request #3709 from PJB3005/23-03-14-mermaid-code-mode
Avoid EditableCode inheriting mode from previous notes.
2023-03-14 21:12:01 +01:00
zadam
7cda81ec68 fix default keyboard shortcuts for mac forward, back, closes #3708 2023-03-14 21:07:14 +01:00
MeIchthys
b1153f8d01 Capitalize Inherited Attributes for consistency 2023-03-14 16:01:08 -04:00
MeIchthys
54e21bf249 Capitalize Owned Attributes title 2023-03-14 15:58:40 -04:00
Pieter-Jan Briers
eebf329983 Avoid EditableCode inheriting mode from previous notes.
Previously, if CodeMirror doesn't support a mode explicitly the mode wouldn't be updated on refresh. This means editors like Mermaid would get their mode "inherited" from the previous mode you had open.

Now the mode is set to text/plain if CodeMirror doesn't support the note's MIME type.

P.S. some of the mermaid diagrams in the demo data have their MIME type incorrectly set to text/plain rather than text/mermaid, so it doesn't reproduce on all diagrams in the demo data.
2023-03-14 20:56:12 +01:00
zadam
7b1d6c3937 Merge pull request #3685 from holoword/holoword/issue3677
“Docker non-root healthcheck”
2023-03-14 20:44:35 +01:00
holo
e6803e9a9b “Docker non-root healthcheck” 2023-03-15 00:01:25 +00:00
zadam
0b24011468 docker_healthcheck.js should not create log files, #3677 2023-03-14 20:32:35 +01:00
zadam
2699c995ee Merge pull request #3701 from meichthys/patch-2
Add `onenote` Scheme to html sanitizer
2023-03-14 20:23:21 +01:00
MeIchthys
697f6ee2a9 Add onenote Scheme to html sanitizer 2023-03-13 10:36:25 -04:00
zadam
35429f6a93 Merge pull request #3693 from meichthys/patch-1
📝Emojify Readme
2023-03-12 23:10:43 +01:00
zadam
29eae4eeb6 fixed jsdoc 2023-03-12 23:05:54 +01:00
zadam
8de67b6945 small fixes / refactoring 2023-03-12 21:37:13 +01:00
zadam
4f63284d41 Merge pull request #3699 from new-sashok724/unix-sockets
Support listening on the unix socket
2023-03-12 21:31:37 +01:00
zadam
0c806024fb added some extra allowed URI schemes, fixes #3692 2023-03-12 21:20:34 +01:00
Сашка724ая
9a08aa2ab5 Fix healthcheck and some messages 2023-03-11 20:57:16 +11:00
Сашка724ая
02f218389b support listening on unix sockets 2023-03-11 20:21:32 +11:00
Nriver
d3ec9f022c add natural sort for notes, introduce new label #sortNatural 2023-03-10 14:35:36 +08:00
MeIchthys
4cd54e5a9a Emojify Readme 2023-03-09 11:51:13 -05:00
zadam
5225a99995 wip 2023-03-09 09:38:02 +01:00
zadam
929f8ef720 note ancillary/attachment backported from dev branch 2023-03-08 09:01:23 +01:00
zadam
6b4800d2d6 port error clarifications 2023-03-08 07:31:10 +01:00
zadam
f60e4a1355 Merge remote-tracking branch 'origin/master'
# Conflicts:
#	package-lock.json
2023-03-07 23:07:06 +01:00
zadam
03897c5c9d use more precise detection of a mobile browser, fixes #3680 2023-03-07 23:06:55 +01:00
zadam
ef90f1ff3f Merge pull request #3676 from jrao1/allow-labels-when-adding-notes-via-clipper
Allow arbitrary labels to be added via web clipper
2023-03-07 22:53:11 +01:00
zadam
177a67f59b content null check in full text search, #3672 2023-03-06 23:23:56 +01:00
zadam
1e551581f8 content null check in full text search, #3672 2023-03-06 23:23:32 +01:00
zadam
62c2547557 #run should respect inheritance, fixes #3669 2023-03-06 23:00:29 +01:00
J Rao
2389ab30f8 sanitize label value 2023-03-06 21:28:09 +08:00
J Rao
fdffc27bb6 Allow arbitrary labels to be added via web clipper 2023-03-06 21:21:09 +08:00
zadam
540d19c67c fix import of ZIP with images with no meta file, closes #3649 2023-03-02 08:44:55 +01:00
zadam
46eebdc7aa Update README.md 2023-03-01 10:48:34 +01:00
zadam
700c6ffc75 Update README.md 2023-03-01 10:48:11 +01:00
zadam
6b013c05cc added awesome-trilium to README 2023-03-01 10:47:27 +01:00
zadam
f541bf186c release 0.59.1 2023-02-28 23:39:34 +01:00
zadam
9eb3075f65 Merge remote-tracking branch 'origin/master' into next59
# Conflicts:
#	bin/tpl/anonymize-database.sql
2023-02-28 23:25:51 +01:00
zadam
e2b8dfe96a fix autocomplete showing hidden paths, closes #3654 2023-02-28 23:23:48 +01:00
zadam
f883fde74a small search refactorings 2023-02-28 23:23:17 +01:00
zadam
ae6f2624a0 Merge pull request #3650 from eliandoran/fix/vertical_align_table_cells
Centered vertical align does not seem to work on merged table cells
2023-02-28 00:02:29 +01:00
zadam
ee2953a5e1 fix display of note revision content, #3637 2023-02-27 22:58:02 +01:00
zadam
ec8ed65feb submenu choice of template should override child: settings, fixes #3628 2023-02-27 21:07:32 +01:00
zadam
b70699ce1c make the active fancytree selector more specific than the normal color setting 2023-02-27 21:01:25 +01:00
Elian Doran
5820f874fc Fix infinite loop in autocompletion
In some cases, the token used for highlighting autocompletion gets to be
empty, resulting in an infinte loop. One such case is searching for `''`
(without the backticks).
2023-02-27 01:00:30 +02:00
Elian Doran
44c0ecdbfa Fix middle vertical align on table cells
For merged cells, middle vertical alignment would not work properly (it
was either aligned to the top or bottom).
2023-02-26 22:45:58 +02:00
zadam
7be9db8b84 fix ctrl+click opening note twice, closes #3630 2023-02-22 22:59:31 +01:00
zadam
69d7684b0d fix refreshing option cache on sync, closes #3623 2023-02-22 22:10:41 +01:00
zadam
a88582c610 Update README-ZH_CN.md 2023-02-21 10:38:37 +01:00
zadam
3fd0c01c05 Update README.ru.md 2023-02-21 10:38:12 +01:00
zadam
c16537aecf Update README.md 2023-02-21 10:37:53 +01:00
zadam
79f1eb6e5e improvements in the anonymization script 2023-02-20 21:21:32 +01:00
zadam
fc67dd4d0a release 0.59.0-beta 2023-02-19 21:36:05 +01:00
zadam
232dad66d1 trim imported text 2023-02-19 21:34:37 +01:00
zadam
ed30ec27e7 update demo API examples 2023-02-17 23:34:29 +01:00
zadam
eaab82551f API migration to remove deprecated calls 2023-02-17 23:23:53 +01:00
zadam
d343ff0d23 removed deprecated widgets from frontend API 2023-02-17 23:04:49 +01:00
zadam
400b14e021 removed remnants of dev branch 2023-02-17 16:44:04 +01:00
zadam
760c7b73ad api docs 2023-02-17 16:30:14 +01:00
zadam
97cadc3acf cleaned up unused backend log widget 2023-02-17 16:27:37 +01:00
zadam
7d0117bd28 unneeded changes from dev 2023-02-17 16:24:47 +01:00
zadam
956682f2c7 update docs 2023-02-17 16:15:58 +01:00
zadam
4558e349b5 node update 2023-02-17 15:05:27 +01:00
zadam
6f7b554cdc preparing 0.59 without ocr/pdf, userguide, note ancillaries 2023-02-17 14:49:45 +01:00
zadam
42e08284b0 Merge remote-tracking branch 'origin/master' into dev
# Conflicts:
#	package-lock.json
#	src/public/app/widgets/mermaid.js
2023-02-15 23:47:41 +01:00
zadam
127486fdf5 removed deprecated API methods 2023-02-15 23:45:25 +01:00
zadam
4ffe36e4d0 added options for OCR and extract text from PDF 2023-02-15 16:08:00 +01:00
zadam
85403321cf tweaks 2023-02-15 15:57:33 +01:00
zadam
22cea63863 unneeded await 2023-02-15 15:09:34 +01:00
zadam
c95c5bb471 fix lost content data after CKEditor crash, closes #3584 2023-02-15 15:08:59 +01:00
zadam
cbabaa6b0c move advanced menu slightly below to not overlay the text 2023-02-15 14:49:58 +01:00
zadam
520ffecd36 ancillary type widget 2023-02-15 14:32:12 +01:00
zadam
b1e2b5ba8e reimplement note source to open in a new tab 2023-02-14 16:06:49 +01:00
zadam
896a4fe981 show mermaid errors, fixes #3610 2023-02-13 23:46:04 +01:00
zadam
e9a2cacb5b release 0.58.8 2023-02-13 21:50:54 +01:00
zadam
c190296bf9 refactoring 2023-02-13 16:22:34 +01:00
zadam
e411ad0eb1 Merge branch 'master' into dev 2023-02-13 15:58:02 +01:00
zadam
17085e5578 fix hidden subtree appearing after collapse, #2922 2023-02-13 15:09:57 +01:00
zadam
33d6bb69c0 refresh note list on pageSize update 2023-02-10 13:21:00 +01:00
zadam
44629e6a0a upgrades 2023-02-10 12:29:07 +01:00
zadam
78d61f157e fix docker healthcheck 2023-02-10 12:20:27 +01:00
zadam
3c0ba09a62 fix docker build 2023-02-10 11:40:56 +01:00
zadam
e57d325bd6 fix docker build 2023-02-10 11:24:31 +01:00
zadam
260bc93a66 reimplement docker healtcheck into node.js to take into account configuration, #3582 2023-02-10 11:09:56 +01:00
zadam
a9296e2a39 update node.js to 18 2023-02-10 10:44:38 +01:00
zadam
8371703090 Merge branch 'master' into dev 2023-02-10 10:41:12 +01:00
zadam
fc7da015fe fix image display with slash in title, closes #3591 2023-02-10 10:23:02 +01:00
zadam
adf222b5e8 fix consistency check to re-parent note from search parent to root 2023-02-10 10:12:58 +01:00
zadam
ade22ea825 recover notes into root only if no other valid branch exists, #3590 2023-02-10 10:09:06 +01:00
zadam
2c8fb90ecb Merge pull request #3590 from eliandoran/feature/fix_broken_reference_check
Fix broken reference consistency check
2023-02-10 09:58:24 +01:00
zadam
c67644a2e3 fix filing entity changes for deleted notes 2023-02-10 09:16:32 +01:00
zadam
346f6edd7e fix filing entity changes for deleted notes 2023-02-10 08:55:26 +01:00
Elian Doran
92f586486f Fix broken reference consistency check
If a branch was identified with a missing parent, the branch would be
moved to root. However, the ID of the branch would be changed as a
result of that, and this resulted in the creation of a new branch
instead of updating the old one. Deleting the old one first solves the
issue.
2023-02-05 01:12:13 +02:00
zadam
15607becc6 Merge branch 'master' into dev
# Conflicts:
#	package-lock.json
#	src/public/app/entities/fnote.js
#	src/services/notes.js
2023-02-02 23:35:41 +01:00
zadam
e7c6d912a4 fix undeleting notes with a relation, closes #3583 2023-02-01 23:06:55 +01:00
zadam
290f7e2101 fix sharing of templates, #3562 2023-02-01 22:58:40 +01:00
zadam
460b5fb3a4 fix sharing of templates, #3562 2023-02-01 22:55:31 +01:00
zadam
88e09eb279 ocr wip 2023-02-01 21:07:23 +01:00
zadam
5e0fbea3b3 fix disabled: on attribtue changed script in demo document, fixes #3564 2023-02-01 07:29:37 +01:00
zadam
7b2c3afe4c always open the note in URL, closes #3571 2023-01-31 23:20:11 +01:00
zadam
2e181d0fb1 toggling the left pane will toggle the focus between tree and detail, #3563 2023-01-31 22:35:01 +01:00
zadam
68a03211ce fix padding on launcher when collapsed 2023-01-31 22:25:46 +01:00
zadam
37ba76fdd8 refactored note attachment into note ancillary 2023-01-28 13:13:46 +01:00
zadam
78954268ab small attribute optimizations 2023-01-27 16:59:59 +01:00
zadam
b0528b62d8 small attribute optimizations 2023-01-27 16:57:23 +01:00
zadam
2b4dfaef7f small attribute optimizations 2023-01-27 08:46:04 +01:00
zadam
ad887c4b12 added image OCR and parsing text from PDF (and OCR of PDF images) 2023-01-26 20:32:27 +01:00
zadam
63c62df787 ocr 2023-01-26 09:42:11 +01:00
zadam
c68a67d148 ocr test 2023-01-25 15:20:53 +01:00
zadam
bd8568809f export/import attachments 2023-01-25 09:55:29 +01:00
zadam
0bfb2631df fix saving mermaid attachment 2023-01-24 23:09:00 +01:00
zadam
3c57f08ef7 added checksum to note_attachment 2023-01-24 16:55:48 +01:00
zadam
a7b103e07a add a button to temporarily hide TOC, closes #3555 2023-01-24 16:24:51 +01:00
zadam
64e7150765 fix undeleting note when its relation points to yet-undeleted note 2023-01-24 09:43:10 +01:00
zadam
a888f9aa04 recalculate maxEntityChangeId after rollbacked transaction 2023-01-24 09:35:00 +01:00
zadam
2e9dbda077 Merge remote-tracking branch 'origin/master' into dev
# Conflicts:
#	package.json
2023-01-24 09:20:15 +01:00
zadam
c474e65cae saving attachments when editing 2023-01-24 09:19:49 +01:00
zadam
f59e19d93b fixes to note attachment handling 2023-01-23 23:37:58 +01:00
zadam
8a33645360 migrating canvas etc. 2023-01-23 16:57:28 +01:00
zadam
339d8a7378 initial implementation of note attachments 2023-01-22 23:36:05 +01:00
zadam
f2a19c56b1 add excludeFromNoteMap to a day template instead of journal root, #3547 2023-01-21 11:13:40 +01:00
zadam
a98fd509c6 release 0.58.7 2023-01-17 23:14:58 +01:00
zadam
a3149aecf4 fix migration for DBs which did not have _hidden tree created, closes #3536 2023-01-17 23:13:21 +01:00
zadam
6a6ae359b6 Merge branch 'master' into dev
# Conflicts:
#	package-lock.json
#	package.json
#	src/public/app/widgets/dialogs/note_revisions.js
#	src/services/handlers.js
#	src/services/hidden_subtree.js
#	src/services/search/services/parse.js
2023-01-17 22:20:10 +01:00
zadam
2fa1d812f6 _hidden note does not inherit attributes from root, fixes #3537 2023-01-17 22:14:53 +01:00
zadam
ef825371cf fix "root" note in autocomplete when hoisted into another subtree 2023-01-17 21:15:05 +01:00
zadam
b567775129 small fixes of steel blue theme 2023-01-17 21:06:30 +01:00
zadam
58d71bf8e3 release 0.58.6 2023-01-16 22:39:28 +01:00
zadam
9fd0b85ff2 doc note for the back/forward launchers 2023-01-16 22:37:21 +01:00
zadam
a5e21ea5f3 simplified/fixed close tab button 2023-01-16 22:28:55 +01:00
zadam
98620887d4 fix demo steel blue main menu icon 2023-01-16 22:19:36 +01:00
zadam
9eff08144c extra check that hidden tree is not created until migration is completed 2023-01-16 08:06:19 +01:00
zadam
4ba72bc8d3 fixed standalone anonymize script 2023-01-15 21:05:03 +01:00
zadam
f50a9c250a many small issues found by intellij analysis 2023-01-15 21:04:17 +01:00
zadam
743979266a fix history navigation buttons in server, #3527 2023-01-15 19:46:32 +01:00
zadam
4f98c960ec fix note revision for images 2023-01-15 19:23:28 +01:00
zadam
424b624ea9 small mermaid fixes 2023-01-15 13:48:01 +01:00
zadam
a004a8b092 fix loading custom themes in Options, closes #3528 2023-01-15 12:54:38 +01:00
zadam
df0f52aff9 clarified comment 2023-01-14 23:16:57 +01:00
zadam
f7bd72ba2f release 0.58.5 2023-01-14 23:02:39 +01:00
zadam
038c0e78a6 fix options check in froca 2023-01-14 23:01:02 +01:00
zadam
2a2cbcd68b fix duplicate unique key in migration, #3526 2023-01-14 22:57:39 +01:00
zadam
be654e7a31 fix duplicate unique key in migration, #3526 2023-01-14 22:55:22 +01:00
zadam
32bd74fe27 build website improvements 2023-01-14 22:50:04 +01:00
zadam
14da697a4e put firing of the runOnNoteContentChange on entity level instead of service level, #3436 2023-01-14 12:57:50 +01:00
zadam
2525857c20 fix null content when protecting notes, closes #3523 2023-01-14 00:01:24 +01:00
zadam
c97ada3434 docs improvements 2023-01-13 23:54:47 +01:00
zadam
c924790f3e Merge remote-tracking branch 'origin/dev' into dev 2023-01-13 21:11:36 +01:00
zadam
a110f24b05 Merge branch 'master' into dev 2023-01-13 21:11:23 +01:00
zadam
8eaef3e1d8 add runOnNoteContentChange into the autocomplete 2023-01-13 14:28:41 +01:00
zadam
082caf98e8 restore all "named" notes quickly after their deletion, #3517 2023-01-13 11:53:25 +01:00
zadam
60602a2264 fix creating notes into options, #3517 2023-01-13 11:34:35 +01:00
zadam
9479f1c1a1 toggling archived notes caused appearance of hidden subtree, fixes #3519 2023-01-13 11:25:58 +01:00
zadam
88bc7402a2 hidden notes should not appear in the global search unless hoisted into it, #3516 2023-01-13 10:09:41 +01:00
zadam
e7b3c3239b fix migration of bookmarks to also migrate bookmarkFolder #3514 2023-01-13 08:43:18 +01:00
zadam
4f4c3ef3f3 fix enex checkboxes for mac, closes #3511 2023-01-12 16:45:11 +01:00
zadam
d7b0719788 script to build the docs website 2023-01-12 16:37:30 +01:00
zadam
7a457e4509 Merge remote-tracking branch 'origin/master' into dev 2023-01-12 15:25:59 +01:00
zadam
decfeb366c zoom factor should be rounded to 1 floating point digit 2023-01-12 08:27:08 +01:00
zadam
420175f5ef release 0.58.4 2023-01-11 23:44:33 +01:00
zadam
bdfdc0402d update content should parse out links #3509 2023-01-11 23:22:51 +01:00
zadam
bb8496cb3f ETAPI method to create note revision, #3509 2023-01-11 23:18:51 +01:00
zadam
4bdb94fbaa ancestorDepth should be treated as string in ETAPI, fixes #3510 2023-01-11 23:08:57 +01:00
zadam
05c04a35a7 API docs integrate into user docs 2023-01-10 22:48:56 +01:00
zadam
4385a02f6b transform 2023-01-10 16:51:50 +01:00
zadam
397dd68666 Merge remote-tracking branch 'origin/dev' into dev 2023-01-10 16:33:35 +01:00
zadam
edbb60f2b5 Merge branch 'master' into dev
# Conflicts:
#	src/routes/api/sender.js
#	src/services/import/enex.js
2023-01-10 16:33:31 +01:00
zadam
5bf9c253f2 toc fix 2023-01-10 16:16:13 +01:00
zadam
b0cc177d84 make heading regex in TOC case insensitive 2023-01-10 15:06:21 +01:00
zadam
c60f25fb7c more flexible heading regex 2023-01-10 00:00:46 +01:00
zadam
4ab90b694f fix 2023-01-09 23:15:02 +01:00
zadam
87636f27ba Merge branch 'master' into dev
# Conflicts:
#	src/routes/api/sender.js
#	src/services/import/enex.js
2023-01-09 23:02:19 +01:00
zadam
571cb6d0eb fix dynamic module import 2023-01-09 22:32:49 +01:00
zadam
f738787202 expand regex to account for more attributes in en-media tag in ENEX import, fixes #3503 2023-01-08 20:50:08 +01:00
zadam
4ae1b6e07b sender route should respect inbox, #3502 2023-01-08 20:40:38 +01:00
zadam
41b8f6882c note content renderer should load reference link titles, fixes #3499 2023-01-08 20:31:55 +01:00
zadam
43c5163f66 renamed closing commands 2023-01-08 13:58:51 +01:00
zadam
8a2a9b2ea6 Merge branch 'stable'
# Conflicts:
#	src/services/import/enex.js
2023-01-08 13:24:10 +01:00
zadam
c70272e756 fix creation date in ENEX import for mac files, closes #3496 2023-01-08 13:23:07 +01:00
zadam
843f5d0da1 gitignore 2023-01-08 12:54:55 +01:00
zadam
2242397280 fix 2023-01-08 12:46:26 +01:00
zadam
8a641e1b4f added "inherit" relation, #3493 2023-01-06 20:31:55 +01:00
zadam
f86fb0d0a2 added TRILIUM_SYNC_SERVER_HOST env. variable to prevent prod sync issues 2023-01-06 15:14:04 +01:00
zadam
a863da1dce becca should also keep correct branch order, e.g. for export, #2346 2023-01-06 15:07:18 +01:00
zadam
d7cae7d5bb improvements in API docs generation 2023-01-05 23:38:41 +01:00
zadam
19f4870280 transform api docs script WIP 2023-01-05 16:52:39 +01:00
zadam
ac51d0d569 Merge branch 'master' into dev
# Conflicts:
#	package-lock.json
#	package.json
2023-01-05 16:17:33 +01:00
zadam
218f526a92 fix order by note content size, closes #3488 2023-01-05 15:52:07 +01:00
zadam
161b45aa12 Merge pull request #3489 from Nriver/master
use api.showMessage instead of alert
2023-01-05 15:24:42 +01:00
zadam
397629587c Merge remote-tracking branch 'origin/master' 2023-01-05 15:23:31 +01:00
zadam
034098fd06 don't use alert, #3483 2023-01-05 15:23:22 +01:00
Nriver
e03cc01e15 use api.showMessage instead of alert 2023-01-05 09:02:40 +08:00
zadam
0995c56506 release 0.58.3-beta 2023-01-04 22:36:31 +01:00
zadam
3a5fa2954d Merge remote-tracking branch 'origin/master' 2023-01-03 22:36:56 +01:00
zadam
398480415e package-lock.json 2023-01-03 22:36:41 +01:00
zadam
81013ed21a Merge branch 'stable'
# Conflicts:
#	package-lock.json
#	package.json
2023-01-03 22:35:45 +01:00
zadam
53360c147a npm script improvements 2023-01-03 22:34:31 +01:00
zadam
9e47da3f03 Merge pull request #3150 from zadam/dependabot/npm_and_yarn/json-schema-and-jsprim-0.4.0
Bump json-schema and jsprim
2023-01-03 22:32:36 +01:00
zadam
faefe10c15 Merge pull request #3423 from zadam/dependabot/npm_and_yarn/terser-5.16.1
Bump terser from 5.10.0 to 5.16.1
2023-01-03 22:32:15 +01:00
zadam
a4d3150a24 Merge pull request #2739 from zadam/dependabot/npm_and_yarn/nanoid-3.3.1
Bump nanoid from 3.1.30 to 3.3.1
2023-01-03 22:31:57 +01:00
zadam
e1f0676891 Merge pull request #3197 from zadam/dependabot/npm_and_yarn/dump-db/minimist-1.2.7
Bump minimist from 1.2.5 to 1.2.7 in /dump-db
2023-01-03 22:31:08 +01:00
zadam
792ac9b77d Merge pull request #3408 from zadam/dependabot/npm_and_yarn/qs-6.5.3
Bump qs from 6.5.2 to 6.5.3
2023-01-03 22:30:42 +01:00
zadam
bbbd2f7e82 Merge pull request #3481 from contributor/feature/safeVsCodeLaunch
Safe Vs Code debug launch
2023-01-03 22:29:36 +01:00
zadam
d910191e83 Merge pull request #3480 from contributor/feature/pageUrlSanitizeUrl
Fix pageUrl and clipping selection can create multiple notes for the same Url
2023-01-03 22:28:37 +01:00
zadam
e8a9389e6d remove console.log 2023-01-03 21:44:47 +01:00
zadam
6dce13bc34 export root note fix, #2346 2023-01-03 21:30:49 +01:00
contributor
71cdea3902 fix vscode launch can break release app data 2023-01-03 21:39:35 +02:00
contributor
85a6e8b47e fix clipping selection can create multiple notes for the same Url
sanitize was replacing '&' char to '&'and changing actual Url
2023-01-03 21:18:23 +02:00
contributor
f02ad63e97 npm i @braintree/sanitize-url 2023-01-03 21:18:23 +02:00
contributor
977399a73e refac: better naming 2023-01-03 21:18:23 +02:00
zadam
5d4a2f2064 jsdoc 2023-01-03 15:02:01 +01:00
zadam
c5ab6fa2fa jsdoc fixes to make export simpler 2023-01-03 14:31:46 +01:00
zadam
b80bf0ffb6 docs updated 2023-01-03 13:54:27 +01:00
zadam
bff7434921 rename becca entities to have B-prefix, #3476 2023-01-03 13:52:37 +01:00
zadam
da161c7ce0 rename shaca entities to have F-prefix, #3476 2023-01-03 13:40:21 +01:00
zadam
977a47bc27 rename froca entities to have F-prefix, #3476 2023-01-03 13:35:10 +01:00
zadam
957640f163 Merge branch 'master' into dev 2023-01-02 22:53:03 +01:00
zadam
291ef87c9b fix edit button 2023-01-02 22:32:05 +01:00
zadam
115bf0af4d fix button paddings 2023-01-02 21:08:20 +01:00
zadam
e40f1fd11a fix inclusion of the image into the correct position in ENEX import, closes #3468 2023-01-01 21:02:54 +01:00
zadam
797ddf6205 search hit with exact note title match gets a strong score boost, closes #3470 2022-12-30 23:14:48 +01:00
zadam
ca4e1c19a7 make utils.normalize null-safe, #3469 2022-12-30 21:00:42 +01:00
zadam
d2b906bc1b global menu can open the user guide 2022-12-30 17:41:45 +01:00
zadam
94dcaae12d renamed Help to User Guide 2022-12-30 17:28:19 +01:00
zadam
df47679c7f added option for help sha256 2022-12-30 17:10:07 +01:00
zadam
d6f3b79f20 improvs 2022-12-29 23:12:38 +01:00
zadam
c7556d9163 backend api for ZIP export 2022-12-29 21:15:34 +01:00
zadam
16c3833a36 fix 2022-12-29 14:25:25 +01:00
zadam
007e45ad8c fix import and replace tree 2022-12-29 14:21:35 +01:00
zadam
b9b8b35342 Merge branch 'master' into dev
# Conflicts:
#	src/services/import/zip.js
2022-12-29 10:27:23 +01:00
zadam
dd82b0f958 Merge remote-tracking branch 'origin/master' 2022-12-29 10:25:54 +01:00
zadam
f150c223bc improved ZIP import validation and error handling 2022-12-29 10:25:49 +01:00
zadam
e76290e598 Merge branch 'master' into dev 2022-12-29 10:07:04 +01:00
zadam
4f771cfa7a Merge pull request #3467 from contributor/feature/enex-pageUrl
Evernote import - use pageUrl attribute for enex source-url
2022-12-29 09:57:43 +01:00
contributor
aa3b26c965 Evernote import - use pageUrl attribute for enex source-url 2022-12-29 01:27:17 +02:00
zadam
f4cf04232f release 0.58.2-beta 2022-12-29 00:12:54 +01:00
zadam
d36cf47974 no-dir npm scripts 2022-12-28 23:17:59 +01:00
zadam
f809da58ec fix occurrences of 'root' branch 2022-12-28 13:09:49 +01:00
zadam
ff1f01be8c erase deleted notes in the migration 2022-12-28 12:58:53 +01:00
zadam
0ddaa8f5c2 migration fixes 2022-12-27 21:17:40 +01:00
zadam
620bed73bb put back the removed widgets, the BC break is not worth it 2022-12-27 15:05:12 +01:00
zadam
c177d2b97b fix migration 2022-12-27 14:52:32 +01:00
zadam
0758c82983 hidden subtree is now built as "predictable" to avoid duplicating it in sync 2022-12-27 14:44:28 +01:00
zadam
ecc2ed7d73 formatting 2022-12-27 10:22:50 +01:00
zadam
4b779d7512 small refactors in sync 2022-12-27 09:53:25 +01:00
zadam
701911b766 release 0.58.1-beta 2022-12-26 23:57:31 +01:00
zadam
5fea90491c zip import WIP 2022-12-26 23:46:39 +01:00
zadam
d665b7e584 import refactoring 2022-12-26 22:51:16 +01:00
zadam
7a8bbdced8 fix cursor in the textarea, closes #3459 2022-12-26 20:07:04 +01:00
zadam
affd8062e2 escape note titles in note map 2022-12-26 10:52:28 +01:00
zadam
45b94ecaeb zip import refactoring 2022-12-26 10:38:31 +01:00
zadam
acda37e334 wip import zip as help 2022-12-25 23:36:56 +01:00
zadam
2cfc43a4fd Merge pull request #3456 from WPum/patch-1
sync chinese readme with the english version
2022-12-25 19:53:34 +01:00
WPum
fb789b7bd8 sync chinese readme with the english version 2022-12-25 23:42:44 +08:00
zadam
b906efb23b fix ZIP import without metadata 2022-12-25 14:10:12 +01:00
zadam
f249d6cb26 fix sorting after cloning/moving notes into sorted parent, closes #3453 2022-12-25 13:46:31 +01:00
zadam
afb6e860ea fix docs 2022-12-25 13:06:06 +01:00
zadam
435e042ae9 fix docs 2022-12-25 13:03:22 +01:00
zadam
d64df5e3e7 fix comment 2022-12-25 13:03:04 +01:00
zadam
bd59802ca4 create new sortNotes backend API method and deprecate old sortNotesByTitle 2022-12-25 13:01:50 +01:00
zadam
7c98ade72b fix missing doc resources for launchers, closes #3455 2022-12-25 11:58:24 +01:00
zadam
c6485f8e03 fix assuming that trilium is exposed on the root path, closes #3452 2022-12-25 10:48:51 +01:00
zadam
a083917db1 fix context menu in browser for launchers, closes #3454 2022-12-25 10:33:31 +01:00
zadam
3b5f2b86d5 release 0.58.0-beta 2022-12-24 22:09:05 +01:00
zadam
f08fbf7bca fix migration 2022-12-24 21:25:34 +01:00
zadam
e2b227df34 make initialization of launchers more robust 2022-12-24 14:42:35 +01:00
zadam
4c51588270 custom widget launchers should not be initialized in safe mode 2022-12-24 13:57:42 +01:00
zadam
b13ea72152 autorefresh bookmarks on #bookmarkFolder change 2022-12-24 13:31:38 +01:00
zadam
5a2907b670 delete preview takes into account strong/weak branches 2022-12-24 13:15:19 +01:00
zadam
b6f7c604c7 fix share migration 2022-12-24 12:54:17 +01:00
zadam
c5fb2cccd5 fix bookmark's ID 2022-12-24 12:26:32 +01:00
zadam
1d1e6ae782 disallow dropping notes before/after available/visible launchers 2022-12-24 07:22:05 +01:00
zadam
bff33932d9 fix migration to not rely on branchId 2022-12-24 07:17:22 +01:00
zadam
392b89e6dd exported links to "named" notes should be preserved upon import 2022-12-23 23:08:30 +01:00
zadam
5ae0a5cf1e randomize existing fixed branchIds so it's clear they should not be relied upon 2022-12-23 21:13:00 +01:00
zadam
1a1fb126c1 randomize existing fixed branchIds so it's clear they should not be relied upon 2022-12-23 20:55:37 +01:00
zadam
5c4db266a4 code should not rely on fixed branch IDs since they can change after move 2022-12-23 20:40:58 +01:00
zadam
e5e0add1a2 fixed history navigation buttons 2022-12-23 20:17:04 +01:00
zadam
e1d20b8ff8 fix relation map buttons 2022-12-23 19:47:49 +01:00
zadam
c6a05d8853 fix calendar widget when hoisted into hidden subtree 2022-12-23 15:46:33 +01:00
zadam
c34bccf7e8 note map can display notes if hoisted in hidden subtree 2022-12-23 15:32:11 +01:00
zadam
0441e7396a small fixes 2022-12-23 15:07:48 +01:00
zadam
698eb53006 small fixes 2022-12-23 14:18:40 +01:00
zadam
3804d2df8c search should find notes in hidden subtree when hoisted into it 2022-12-23 14:02:18 +01:00
zadam
7147cc267e small fixes 2022-12-22 23:38:57 +01:00
zadam
29713de6cd small fixes 2022-12-22 23:11:12 +01:00
zadam
46f40ee534 fix options 2022-12-22 22:52:04 +01:00
zadam
a882ad41c5 small fixes 2022-12-22 21:01:52 +01:00
zadam
062e8c4b84 allow configuration of log, backup etc. directories per env variables, closes #3446 2022-12-22 19:50:00 +01:00
zadam
0f0ca51bd6 updated launcher info pages 2022-12-22 19:02:41 +01:00
zadam
af654a171f execute all DB migrations in one transaction 2022-12-22 18:53:04 +01:00
zadam
186e06bc01 descs for execute button 2022-12-22 18:37:32 +01:00
zadam
4cc9bdf5e4 Merge remote-tracking branch 'origin/stable'
# Conflicts:
#	package-lock.json
2022-12-22 18:16:06 +01:00
zadam
e05e4bec32 fix old migration to avoid unique constraints problems, closes #3447 2022-12-22 15:11:20 +01:00
zadam
5a3882f388 fixed comments 2022-12-22 14:59:20 +01:00
zadam
8ec2547b4a backend API to create a launcher 2022-12-22 14:57:00 +01:00
zadam
059c339c09 fix warnings in ckeditor 2022-12-21 23:10:13 +01:00
zadam
724f99f17c add prefix "_" to "named" IDs 2022-12-21 16:11:00 +01:00
zadam
1b24276a4a always use template strings instead of string concatenation 2022-12-21 15:19:05 +01:00
zadam
ea006993f6 added a "script executor" ribbon widget 2022-12-20 23:46:44 +01:00
zadam
7a46159539 code buttons into the floating buttons (WIP) 2022-12-20 23:20:59 +01:00
zadam
50faa40bad apply color label also on note map, #3443 2022-12-20 20:41:51 +01:00
zadam
9d9305300c scale the whole edit widget, not just the icon 2022-12-20 20:25:52 +01:00
zadam
c89455f93f edit button grows and shakes on the first display #2483 2022-12-20 20:20:24 +01:00
zadam
7c6d67f1ad migration comments 2022-12-19 23:49:41 +01:00
zadam
8c4dda45ef bookmark buttons should behave similarly as other launcher buttons in respect to context menu, ctrl-click, left click 2022-12-19 23:19:47 +01:00
zadam
db5e76fe8c allow access to share api root note only if there's share index, #3434 2022-12-19 21:39:12 +01:00
zadam
5413a1aa79 create new runOnNoteContentChange event, #3436 2022-12-18 23:53:47 +01:00
zadam
e41104208a added today launcher 2022-12-18 23:25:35 +01:00
zadam
5fca606730 added note hoisting option to the note launcher 2022-12-18 22:05:06 +01:00
zadam
0de0b6fd06 sync status widget fix 2022-12-18 20:29:17 +01:00
zadam
db6dbc7821 can't create non-launcher notes into the launcher subtree 2022-12-18 20:12:43 +01:00
zadam
e5171e434b fix small gap between menu and submenu where hover can disappear 2022-12-18 19:45:36 +01:00
zadam
2df7d99a91 routes refactoring 2022-12-18 16:12:29 +01:00
zadam
6def541e78 improve compatibility with common js, #3436 2022-12-18 12:58:26 +01:00
zadam
5af506e268 reimplementation of frontend's api.addButtonToToolbar() to smoothen the upgrade 2022-12-17 21:46:51 +01:00
zadam
967919b400 fix note preloading in tab loading 2022-12-17 13:33:57 +01:00
zadam
575f09d97f fix display of title buttons 2022-12-17 13:28:53 +01:00
zadam
c28383de4f full search shows search errors, closes #3221 2022-12-17 13:07:42 +01:00
zadam
c496519095 Merge remote-tracking branch 'origin/master' 2022-12-17 11:58:36 +01:00
zadam
ecaa9a1d56 quick search shows search errors #3221 2022-12-17 11:58:30 +01:00
zadam
d34a0a9fc0 hidden subtree is not archived anymore 2022-12-16 16:00:49 +01:00
zadam
b202b43bf5 added watchdog for CKEditor to recover from crashes, fixes #3227 2022-12-15 21:45:47 +01:00
zadam
648dd73fa1 mermaid 9.3.0 2022-12-15 20:37:59 +01:00
zadam
1640a8aa7d Merge remote-tracking branch 'origin/master' 2022-12-15 18:58:54 +01:00
zadam
698a6bf91c ckeditor 35.4.0 2022-12-15 18:58:47 +01:00
dependabot[bot]
c409d7ff2a Bump qs from 6.5.2 to 6.5.3
Bumps [qs](https://github.com/ljharb/qs) from 6.5.2 to 6.5.3.
- [Release notes](https://github.com/ljharb/qs/releases)
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/qs/compare/v6.5.2...v6.5.3)

---
updated-dependencies:
- dependency-name: qs
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-15 15:39:13 +00:00
dependabot[bot]
f8dd175837 Bump terser from 5.10.0 to 5.16.1
Bumps [terser](https://github.com/terser/terser) from 5.10.0 to 5.16.1.
- [Release notes](https://github.com/terser/terser/releases)
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/compare/v5.10.0...v5.16.1)

---
updated-dependencies:
- dependency-name: terser
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-15 15:39:04 +00:00
zadam
195c6a4089 backend log improvements 2022-12-15 16:38:05 +01:00
zadam
6c431ae5ed fix enex import splitting image/resource into multiple chunks, closes #3424 2022-12-15 14:14:21 +01:00
zadam
8c01a77a7a docs update 2022-12-14 23:51:56 +01:00
zadam
239c68a33c docs update 2022-12-14 23:51:28 +01:00
dependabot[bot]
df3212c304 Bump minimist from 1.2.5 to 1.2.7 in /dump-db
Bumps [minimist](https://github.com/minimistjs/minimist) from 1.2.5 to 1.2.7.
- [Release notes](https://github.com/minimistjs/minimist/releases)
- [Changelog](https://github.com/minimistjs/minimist/blob/main/CHANGELOG.md)
- [Commits](https://github.com/minimistjs/minimist/compare/v1.2.5...v1.2.7)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-14 22:50:02 +00:00
zadam
4026c2be4f Merge branch 'next58'
# Conflicts:
#	src/public/app/widgets/note_tree.js
#	src/services/tree.js
2022-12-14 23:48:58 +01:00
zadam
c6614bc85b removed logging 2022-12-14 23:45:55 +01:00
zadam
31b3af4129 label update should trigger parent resort, fixes #3366 2022-12-14 23:44:26 +01:00
zadam
c4b0c44919 change of archived label should force a reload of the parents since it can change its visibility status, fixes #3422 2022-12-14 19:26:39 +01:00
zadam
223ca95829 added error logs to bug report template 2022-12-14 12:28:08 +01:00
zadam
b9ae68d559 small fixes 2022-12-14 12:26:04 +01:00
zadam
e7470e31a0 Merge branch 'stable' 2022-12-14 11:20:55 +01:00
zadam
1b6d0c9bbc global menu improvements 2022-12-14 10:29:14 +01:00
zadam
75639c53f0 unhoist button on the left 2022-12-14 10:18:29 +01:00
zadam
587387dd46 improved error handling in case of errors during initial tabs loading 2022-12-14 10:00:33 +01:00
zadam
ffb3c044fa release 0.57.5 2022-12-13 23:08:52 +01:00
DynamoFox
921f75beba Fix missing share.js in public/app-dist folder; Delete unused public/app folder (Docker build)
(cherry picked from commit f45478260e)
2022-12-13 22:40:28 +01:00
zadam
f739259407 Merge pull request #3410 from DynamoFox/fix-missing-sharejs-file
Fix missing share.js in public/app-dist folder; Delete unused public/app folder (Docker build)
2022-12-13 22:39:28 +01:00
zadam
173b28062e advanced submenu is available in mobile 2022-12-13 22:29:26 +01:00
zadam
4f51f73b89 mobile interface should not create new tabs 2022-12-13 21:45:57 +01:00
zadam
ca968a9e31 hoisting support in mobile view WIP 2022-12-13 16:57:46 +01:00
zadam
2957e1d78a improvements in mobile layout for launchbar 2022-12-12 23:48:34 +01:00
zadam
d1b989ac12 Merge remote-tracking branch 'origin/stable' into next58 2022-12-12 21:43:56 +01:00
zadam
e3047ee450 Merge remote-tracking branch 'origin/master' into next58 2022-12-12 21:43:45 +01:00
DynamoFox
f45478260e Fix missing share.js in public/app-dist folder; Delete unused public/app folder (Docker build) 2022-12-12 21:39:10 +01:00
zadam
1bfd26ee8f release 0.57.4 2022-12-11 23:24:24 +01:00
zadam
bbdb7375ff Merge pull request #3406 from deajan/fix-powershell-exec-policy
Fix powershell exec policy
2022-12-11 23:16:37 +01:00
zadam
23322455a3 mobile layout now has launchbar 2022-12-11 22:26:18 +01:00
zadam
c1d4d3fc8a mobile layout improvements 2022-12-11 21:27:03 +01:00
Orsiris de Jong
fc40e54261 Remove unnecessary powershell scripts 2022-12-11 18:24:29 +01:00
Orsiris de Jong
87e833d373 Use inline powershell launcher, add unicode support for batch 2022-12-11 18:23:50 +01:00
zadam
dcfa9c4c0b mobile layout has floating buttons 2022-12-11 13:54:12 +01:00
zadam
c231b3cb79 styling changes of buttons 2022-12-11 13:20:37 +01:00
zadam
1f468f81cc Merge remote-tracking branch 'origin/next58' into next58
# Conflicts:
#	src/public/app/components/note_context.js
2022-12-10 14:37:02 +01:00
zadam
494f8d2153 fix reopening the very last tab, closes #3397 2022-12-10 14:35:58 +01:00
zadam
0f822b2761 global note map should not rehoist 2022-12-09 16:54:22 +01:00
zadam
5ac332960e note launchers by default open in the active note context but follow the same logic with ctrl/middle click as links 2022-12-09 16:48:00 +01:00
zadam
dfb462cf35 introduced new exception classes for structured error reporting 2022-12-09 16:13:22 +01:00
zadam
342ae6e5e2 introduced new exception classes for structured error reporting 2022-12-09 16:04:13 +01:00
zadam
eaf195e0c8 Merge remote-tracking branch 'origin/stable' into next58 2022-12-09 15:19:06 +01:00
zadam
9460cfdc55 Merge remote-tracking branch 'origin/master' into next58 2022-12-09 15:18:51 +01:00
zadam
c44bc60667 when opening a note from hidden subtree, make sure we're hoisted 2022-12-08 23:36:49 +01:00
zadam
8d6801bb85 new split should keep the hoisted note 2022-12-08 23:29:08 +01:00
zadam
c22b6b29e0 options fixes 2022-12-08 15:29:14 +01:00
zadam
44997f5cd1 options fixes 2022-12-08 15:18:41 +01:00
zadam
95f4195ca7 shortcuts layout fix 2022-12-08 14:27:21 +01:00
zadam
73eb585398 fixed migrations 2022-12-08 13:45:56 +01:00
DynamoFox
57d381b990 Fix missing boxicons icons; Add missing boxicons LICENSE file from upstream
(cherry picked from commit d06d4ba437)
2022-12-08 00:01:09 +01:00
zadam
e5ba6ff496 Merge pull request #3394 from DynamoFox/fix-missing-boxicons-icons
Fix missing boxicons icons; Add missing boxicons LICENSE file from upstream
2022-12-08 00:00:20 +01:00
zadam
128023d34e attempt to fix the ws crash, #3374 2022-12-07 23:58:22 +01:00
zadam
653f80f7d8 WIP 2022-12-07 23:37:40 +01:00
DynamoFox
d06d4ba437 Fix missing boxicons icons; Add missing boxicons LICENSE file from upstream 2022-12-07 20:32:19 +01:00
zadam
2a68bdb690 raw conversion of all options tabs 2022-12-07 16:02:08 +01:00
zadam
5f6a10ef22 options widget work 2022-12-07 15:37:53 +01:00
zadam
2ad19ddd36 generate hidden subtree declaratively 2022-12-07 12:46:41 +01:00
zadam
5fc9f5f3f9 improvements 2022-12-06 23:48:44 +01:00
zadam
b9632a7814 rename note types to camelCase 2022-12-06 23:01:42 +01:00
zadam
f336435adb appearance options broken up into individual widgets 2022-12-06 22:43:35 +01:00
zadam
9e83368f87 appearance tab in hidden subtree 2022-12-06 17:05:21 +01:00
zadam
d619a7a2d7 rename "widget" type to "content-widget" 2022-12-06 16:23:49 +01:00
zadam
012fb1f50b rename "widget" type to "content-widget" 2022-12-06 16:23:30 +01:00
zadam
d64b575e60 added isBeingDeleted to be able to recognize that note is being deleted while still leaving it accessible 2022-12-06 16:11:43 +01:00
zadam
aec2c2d5cd appearance options as a special note 2022-12-05 23:57:29 +01:00
zadam
0d06d5ccee dump-db should not contain node_modules in release artifacts 2022-12-04 23:49:16 +01:00
zadam
74fdaad032 mobile fix 2022-12-04 22:59:09 +01:00
zadam
d3bf0c1d8e bookmark migration 2022-12-04 20:05:18 +01:00
zadam
27ce273d29 bookmarks use cloning 2022-12-04 13:16:05 +01:00
zadam
cd60ad4267 improvements 2022-12-03 21:11:49 +01:00
zadam
56e01046c8 Merge branch 'master' into next58 2022-12-03 13:28:21 +01:00
zadam
518a413de7 fix internal link creation, closes #3376 2022-12-03 13:26:33 +01:00
zadam
29923af17d Merge remote-tracking branch 'origin/next58' into next58 2022-12-03 13:01:10 +01:00
zadam
99a5774148 Merge branch 'master' into next58
# Conflicts:
#	package-lock.json
2022-12-03 13:01:03 +01:00
zadam
46fdd15857 release 0.57.3 2022-12-02 22:44:40 +01:00
zadam
42cd333694 clarification on the 5 minute sync auth leeway 2022-12-02 22:12:07 +01:00
zadam
aaa69f696b Merge remote-tracking branch 'origin/master' 2022-12-02 22:07:41 +01:00
zadam
8ce9dcf4aa fix webmanifest and robots.txt 2022-12-02 22:06:18 +01:00
zadam
130ded91ff Merge pull request #3375 from DynamoFox/fix-dockerfile-to-generate-webpack-bundle
Fix missing webpack bundle generation in Docker container build
2022-12-02 21:09:50 +01:00
DynamoFox
851465da62 Fix missing webpack bundle generation in Docker container build 2022-12-02 18:15:03 +01:00
zadam
b85f335561 launcher improvements 2022-12-02 16:46:14 +01:00
zadam
7b36709e18 Merge remote-tracking branch 'origin/master' into next58 2022-12-02 15:28:04 +01:00
zadam
0d50cdb0f5 Merge remote-tracking branch 'origin/next58' into next58 2022-12-02 15:27:30 +01:00
zadam
eec2ff043e Merge branch 'master' into next58 2022-12-02 15:27:09 +01:00
zadam
0480f391d3 release 0.57.2 2022-12-01 22:56:29 +01:00
zadam
36c98e919a fix cursor jumping problem when having same note open in two tabs, closes #3365 2022-12-01 22:50:53 +01:00
zadam
0e68e8069b launcher improvements 2022-12-01 16:22:04 +01:00
zadam
7aa801fc1f notes with #keyboardShortcut don't need reload to take effect 2022-12-01 13:24:34 +01:00
zadam
fc080f785b moving components to its own directory 2022-12-01 13:07:23 +01:00
zadam
1a6c9be065 renamed shortcuts to launchers 2022-12-01 10:16:57 +01:00
zadam
b55c2d3dbc shortcut improvements 2022-12-01 10:03:04 +01:00
zadam
720fb0f73e refactorted shortcut handling into a service 2022-12-01 00:17:15 +01:00
zadam
0985314fb7 shortcut improvements 2022-11-30 16:57:51 +01:00
zadam
e759b4846a shortcut improvements 2022-11-29 16:16:57 +01:00
zadam
dacc2444c4 Merge pull request #3357 from agentydragon/stuff
Add Ctrl+PgUp/Dn for tab switching, pointer to Electron docs
2022-11-29 00:06:03 +01:00
zadam
8ea3608bf1 each stripped tag will be replace by a space, #3355 2022-11-29 00:00:45 +01:00
zadam
eecfce3cc9 shortcuts use templates 2022-11-28 23:39:23 +01:00
Rai
a402c79287 Add Ctrl+PgUp/Dn for tab switching, pointer to Electron docs 2022-11-27 19:33:05 -08:00
zadam
a459230aa9 shortcuts improvements 2022-11-27 23:43:25 +01:00
zadam
e4f57ab2fe fix path resolution bug when path is outside of hosted subtree 2022-11-27 15:50:01 +01:00
zadam
6a9ac6f90a shortcuts improvements 2022-11-26 14:57:39 +01:00
zadam
6883b71ce7 shortcut improvements 2022-11-25 15:29:57 +01:00
zadam
70552d58ac global menu styling improvements 2022-11-25 09:21:56 +01:00
zadam
c7bda4d0be global menu ref 2022-11-24 22:59:09 +01:00
zadam
e4e20c8007 Revert "open window before loading becca"
This reverts commit 2fbcd9aaf7.
2022-11-23 23:49:49 +01:00
zadam
2fbcd9aaf7 open window before loading becca 2022-11-23 23:31:05 +01:00
zadam
ee667634ab Merge branch 'stable' 2022-11-23 22:48:52 +01:00
zadam
7a8c69a6f9 fix jumping cursor position after closing a dialog, fixes #3325 2022-11-23 22:48:32 +01:00
zadam
723db97094 fix jumping cursor position after closing a dialog, fixes #3325 2022-11-23 22:47:20 +01:00
zadam
65be882b49 optimize initial render 2022-11-22 23:53:08 +01:00
zadam
48765cc87d optimize initial render 2022-11-22 22:45:50 +01:00
zadam
e2f6191229 upgrades 2022-11-22 20:48:04 +01:00
zadam
19126b7c6d Merge branch 'master' into next58
# Conflicts:
#	libraries/ckeditor/ckeditor.js
#	libraries/ckeditor/ckeditor.js.map
#	package-lock.json
#	package.json
#	src/public/app/layouts/desktop_layout.js
2022-11-22 20:46:08 +01:00
zadam
a76bef1a28 docker should use webpacked frontend files, fixes #3322 2022-11-21 21:15:04 +01:00
zadam
a259bd8c3a release 0.57.1-beta 2022-11-20 23:43:38 +01:00
zadam
4001953fd7 Merge remote-tracking branch 'origin/master' 2022-11-20 23:43:31 +01:00
zadam
9a6df54832 release 0.57.1-beta 2022-11-20 23:43:17 +01:00
zadam
29327bbc5d Merge pull request #3333 from DynamoFox/rate-limit-other-auth-routes
Rate limit some more ETAPI auth routes; loginRateLimiter now doesn't count successful auth to ETAPI routes
2022-11-20 23:35:10 +01:00
zadam
bcb3a707f4 option tabs refactored 2022-11-20 23:20:42 +01:00
zadam
0a67af4f46 refactoring option templates to use "options-section" class 2022-11-20 20:33:50 +01:00
zadam
b3c0b36ba6 refactor imageoptions to use updateOption() 2022-11-20 20:11:27 +01:00
zadam
a3783b0113 options dialog refactoring into more standard widget structure 2022-11-20 18:29:15 +01:00
DynamoFox
059dca905c Rate limit some more ETAPI auth routes; loginRateLimiter now doesn't count successful auth to ETAPI routes 2022-11-19 18:45:26 +01:00
zadam
02d908df1e added option to disable tray, closes #2612 2022-11-18 21:47:14 +01:00
zadam
1a95e459eb moved options to new tabs Images/Spellcheck 2022-11-18 21:38:36 +01:00
zadam
ae0c5a0c09 moved auto read only options to code/text tabs 2022-11-18 21:27:25 +01:00
zadam
6f238f5f1a create "disableTray" option 2022-11-18 21:08:32 +01:00
zadam
6cec8bcda8 "erase" button to the right 2022-11-17 23:14:01 +01:00
zadam
d388b4d814 add "erase all deleted notes now" also to recent changes 2022-11-17 23:12:36 +01:00
zadam
d9dac00a01 add TRILIUM_NO_UPLOAD_LIMIT to disable the upload limit, #3164 2022-11-17 22:54:45 +01:00
zadam
4961d9bb89 avoid errors on dead backlinks, #3289 2022-11-14 21:03:14 +01:00
zadam
89e319c7a2 fix backlink generation for drag & dropped links, fixes #3314 2022-11-14 20:30:52 +01:00
zadam
f7e56cbffe release 0.57.0-beta 2022-11-12 20:40:45 +01:00
zadam
3f115a7657 api docs 2022-11-12 20:40:40 +01:00
zadam
8fad8a1ce9 enabled advanced list features, fixes #3308 2022-11-10 23:22:37 +01:00
zadam
1b242a905b use CMD/meta key for opening link in a new tab on mac, #3303 2022-11-10 23:16:41 +01:00
zadam
c6e766f5c6 added a context menu for image to copy, #1954 2022-11-09 23:41:25 +01:00
zadam
055bd77bd6 Remove "Content of this note cannot be displayed" in the book format, fixes #3301 2022-11-08 23:06:56 +01:00
zadam
76f34e3eaf small tweaks of linewrap option 2022-11-08 22:55:11 +01:00
zadam
acf3f5013c Merge pull request #3299 from Banbury/code-options-linebreak
Added option to toggle line wrapping for Code notes
2022-11-08 22:49:02 +01:00
zadam
7f6edefad4 note about using password to login to web, #3297 2022-11-08 22:42:36 +01:00
zadam
60fc621cd4 add keyboard action to force creating note revisions, #2147 2022-11-08 22:36:15 +01:00
zadam
bf4776a33c note hoisting should be done on "hovered", not active note, closes #2124 2022-11-08 22:19:16 +01:00
zadam
81a59f48e6 Merge remote-tracking branch 'origin/master' 2022-11-08 21:28:58 +01:00
zadam
68eb04741d remove console.log 2022-11-08 21:27:49 +01:00
Banbury
1037d814ec Added option to toggle line wrapping for Code notes 2022-11-08 14:48:17 +01:00
zadam
e201f3536a fix jsdoc for createNoteLink 2022-11-08 10:11:52 +01:00
zadam
3cb368c4de search link map will display only direct results 2022-11-07 23:56:53 +01:00
zadam
df9f6ce33a link map improvements 2022-11-07 23:19:38 +01:00
zadam
b3c87156c2 library upgrades 2022-11-07 21:26:13 +01:00
zadam
d29a633529 fix 2022-11-07 21:11:42 +01:00
zadam
c92b451033 cleanup of hidden notes 2022-11-06 15:18:32 +01:00
zadam
3122d0cc6b move share root to hidden subtree 2022-11-06 14:44:26 +01:00
zadam
f1eaa20e47 note map fixes 2022-11-06 14:38:41 +01:00
zadam
1d8b02055e Merge branch 'stable' 2022-11-06 14:24:37 +01:00
zadam
a7f4bf8289 fix updating note detail after change from another client, closes #3292 2022-11-06 14:19:40 +01:00
zadam
8b0c60a046 improvements to notemap in relation to search 2022-11-05 22:32:50 +01:00
zadam
3d4776f577 better titles in delete dialog, #3290 2022-11-05 15:30:15 +01:00
zadam
8a539dc514 don't filter on root hoisted note 2022-11-03 21:40:42 +01:00
zadam
a707e7abf4 Merge pull request #3288 from eliandoran/feature/filter_edited_notes_when_hoisted
Filter "Edited notes" when hoisted or in a workspace
2022-11-03 21:38:56 +01:00
zadam
0fc9b2f203 fix codemirror loading, closes #3282 2022-11-03 21:14:56 +01:00
Elian Doran
9a4b72606d Filter "Edited Notes" when hoisted or in a workspace
Previously, when the user opened a day note the "Edited Notes" section would indicate all
the notes edited in that day, regardless of whether the user was inside a workspace or
hoisted a note.

Now the "Edited Notes" section filters out the notes if the user has a hoisted note.
2022-11-03 20:28:56 +02:00
zadam
0a02e5be83 Merge remote-tracking branch 'origin/master' 2022-11-01 22:49:45 +01:00
zadam
2467464433 add possibility to define a share index, closes #3265 2022-11-01 22:49:37 +01:00
zadam
eb68ab6776 Merge branch 'stable' 2022-11-01 19:10:16 +01:00
zadam
44b85d252d fix paste after, closes #3276 2022-11-01 13:39:29 +01:00
zadam
38d6fddc61 redirect /share to /share/, closes #3264 2022-10-30 09:05:12 +01:00
zadam
299007f66e Merge pull request #3256 from DeerTears/patch-1
Fix spelling mistake in README.md
2022-10-29 14:35:52 +02:00
Emberlynn Bland
47a92c8be8 Fix spelling mistake
"bult-in" -> "built-in"
2022-10-28 19:20:43 -06:00
zadam
9bc6cf7067 Merge pull request #3253 from nemec/master
Allow Mac users to close and re-open window
2022-10-28 20:08:38 +02:00
zadam
521d95021b fix refocusing find widget, closes #3252 2022-10-28 20:05:53 +02:00
Dan Nemec
5bc4d07aad Allow Mac users to close and re-open window 2022-10-27 19:59:41 -05:00
zadam
51aa9a0d6e Merge branch 'stable' 2022-10-27 23:04:55 +02:00
zadam
64d3ec940c release 0.56.2 2022-10-27 22:41:15 +02:00
zadam
6c37f2ce71 package-lock.json 2022-10-27 22:41:01 +02:00
zadam
75bd38885b use trilium version number in asset paths to avoid caching issues 2022-10-27 20:34:53 +02:00
zadam
b499640db8 use trilium version number in asset paths to avoid caching issues WIP 2022-10-26 23:50:54 +02:00
zadam
999a9da299 upgrade mermaid to 9.1.7
(cherry picked from commit 441a59305b)
2022-10-26 20:16:16 +02:00
zadam
441a59305b upgrade mermaid to 9.1.7 2022-10-26 20:15:42 +02:00
zadam
b74f5a0a33 Merge branch 'stable' 2022-10-26 20:12:22 +02:00
zadam
7d732eb73b fix deleting note from task manager, closes #3239 2022-10-26 19:14:49 +02:00
zadam
44b68326a0 close hanging autocomplete on dialog close, fixes #3241 2022-10-26 16:52:44 +02:00
zadam
d5732d7731 api docs 2022-10-26 16:52:00 +02:00
zadam
4e3d48fe7d allow specifying rootNote for date API functions, #3237 2022-10-26 14:23:56 +02:00
zadam
c7acfd4d4e fix clicking internal link in the ckeditor toolbar, closes #3236 2022-10-26 14:11:20 +02:00
zadam
af6d738d56 updated boxicons to 2.1.4, update icon index + search also within term array, fixes #3233 2022-10-25 23:01:09 +02:00
zadam
06e6fec4ca increment db and sync version due to new note type 2022-10-23 21:16:15 +02:00
zadam
12943cc808 Merge branch 'master' into next57
# Conflicts:
#	package-lock.json
2022-10-23 21:13:09 +02:00
zadam
bbde7141b0 fix wrong display of included note in read only text, closes #3225 2022-10-23 14:34:37 +02:00
zadam
f6ad1c6aa7 release 0.56.1 2022-10-22 23:07:24 +02:00
zadam
c1127ec429 fix running of runOnNoteCreation hook, #3219 2022-10-22 21:34:38 +02:00
dependabot[bot]
6ec734df13 Bump json-schema and jsprim
Bumps [json-schema](https://github.com/kriszyp/json-schema) and [jsprim](https://github.com/joyent/node-jsprim). These dependencies needed to be updated together.

Updates `json-schema` from 0.2.3 to 0.4.0
- [Release notes](https://github.com/kriszyp/json-schema/releases)
- [Commits](https://github.com/kriszyp/json-schema/compare/v0.2.3...v0.4.0)

Updates `jsprim` from 1.4.1 to 1.4.2
- [Release notes](https://github.com/joyent/node-jsprim/releases)
- [Changelog](https://github.com/TritonDataCenter/node-jsprim/blob/v1.4.2/CHANGES.md)
- [Commits](https://github.com/joyent/node-jsprim/compare/v1.4.1...v1.4.2)

---
updated-dependencies:
- dependency-name: json-schema
  dependency-type: indirect
- dependency-name: jsprim
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-22 14:03:30 +00:00
zadam
867f7f3f59 don't display "workspace templates", #3219 2022-10-22 16:03:21 +02:00
zadam
1c52303bb3 don't display "workspace templates", #3219 2022-10-22 16:01:15 +02:00
zadam
876e6caa23 better handling of incorrect operators 2022-10-22 15:58:15 +02:00
zadam
34f07b4376 better inbox desc 2022-10-22 15:22:42 +02:00
zadam
ffc28c8485 better inbox desc 2022-10-22 15:22:03 +02:00
zadam
913e9ef6e0 Merge remote-tracking branch 'origin/master' 2022-10-22 15:01:17 +02:00
zadam
14fb9c76b0 fix backlinks in day note subtree, fixes #3158 2022-10-22 15:01:10 +02:00
zadam
c5435009d7 Merge pull request #3213 from agentydragon/both-protos
Check both http and https in DockerHealthcheck
2022-10-22 14:00:45 +02:00
Rai
1d3132e447 Check both http and https in DockerHealthcheck
I've been getting Docker reporting my Trilium container as unhealthy
because wget was trying to talk HTTP to it while it was expecting
HTTPS.
2022-10-20 23:29:23 -07:00
zadam
63eb22c7ac fix print color to black, closes #3202 2022-10-20 22:32:06 +02:00
zadam
657c54efd4 fix print color to black, closes #3202 2022-10-20 22:31:08 +02:00
zadam
4f1f632a7d fix activating notes in the hidden subtree 2022-10-16 23:11:46 +02:00
zadam
7e83d3a54d Merge remote-tracking branch 'origin/master' into next57 2022-10-16 21:25:03 +02:00
zadam
c11cf41f30 don't create app icon for flatpak/debian linux builds, fixes #3201 2022-10-16 20:52:10 +02:00
zadam
8d30d5d689 Merge remote-tracking branch 'origin/master' into next57 2022-10-16 11:24:24 +02:00
zadam
01910d3231 flathub release script 2022-10-15 21:09:27 +02:00
zadam
e22af42cd0 release 0.56.0-beta 2022-10-15 12:49:56 +02:00
zadam
70c9292413 codemirror 5.65.9 2022-10-15 12:22:09 +02:00
zadam
c16f7a5e02 Merge branch 'master' into next55
# Conflicts:
#	electron.js
#	package-lock.json
#	package.json
#	src/public/app/layouts/desktop_layout.js
#	src/public/app/widgets/note_tree.js
#	src/services/port.js
2022-10-15 12:09:25 +02:00
zadam
b9c22fcbc8 Merge remote-tracking branch 'origin/master' 2022-10-15 12:03:13 +02:00
zadam
4012ec7498 Merge branch 'stable'
# Conflicts:
#	src/public/app/widgets/attribute_widgets/attribute_detail.js
2022-10-15 12:03:03 +02:00
zadam
7d6d466284 Merge pull request #3199 from DaiYuANg/master
update pwa manifest support deploy in sub folder
2022-10-15 12:00:41 +02:00
DaiYuANg
36842f4a58 update pwa manifest support deploy in sub folder 2022-10-15 13:01:48 +08:00
zadam
dc62cf4805 ckeditor 35.2.1 2022-10-14 22:39:28 +02:00
zadam
ed8acc7ee3 switch-server, switch-electron npm scripts to ease rebuilding better-sqlite3 2022-10-14 21:59:43 +02:00
zadam
4116fe0a20 fix propagation of noteTypeMimeChanged event to global scope to fix e.g. edit button switching depending on note type 2022-10-14 20:36:40 +02:00
zadam
a4e99662cb edit button should get refreshed based on type change 2022-10-13 23:52:53 +02:00
zadam
c6d4eb486e fix toc with > 10 items on the same level, closes #3182 2022-10-09 22:20:11 +02:00
zadam
c2308b7a5d fix comment 2022-10-09 21:34:01 +02:00
zadam
3e07c08043 basic auth etapi should require "etapi" username 2022-10-09 21:33:32 +02:00
zadam
5a3c50d9fb extra null relation checks in notemap 2022-10-08 22:24:58 +02:00
zadam
3e4a9f63fa support basic auth in ETAPI 2022-10-08 20:59:11 +02:00
zadam
6d4ef4ee3d improved error handling of wrong port configuration, #3177 2022-10-01 15:32:30 +02:00
zadam
20ff5627d8 ckeditor 35.1.0 2022-09-28 22:55:53 +02:00
zadam
1d26fd6bf0 added "note color" 2022-09-25 14:19:30 +02:00
zadam
a9c0daa51a FIXME comment on virtual branches 2022-09-24 23:03:38 +02:00
zadam
e3b2bbdca5 Merge remote-tracking branch 'origin/master' 2022-09-24 22:38:27 +02:00
zadam
d905f7cc26 include icon into reference links 2022-09-24 22:38:20 +02:00
zadam
fe3f24cdb0 Merge pull request #3161 from oc013/docker-compose-example
Update docker-compose sample to use node user home dir and pull directly from docker hub
2022-09-24 13:14:28 +02:00
oc013
971c709e87 Update docker-compose sample to use node user home dir 2022-09-23 21:12:50 -04:00
zadam
7f78937543 keyboardShortcut attr detail help 2022-09-23 22:51:17 +02:00
zadam
41dac2bd1b keyboardShortcut attr detail help 2022-09-23 22:50:49 +02:00
zadam
85bf2a5706 fix hidden backlinks, closes #3158 2022-09-22 23:29:20 +02:00
zadam
ce7937a3a3 Merge remote-tracking branch 'origin/master' 2022-09-22 22:53:29 +02:00
zadam
7bb9d33245 0 offset of context menu, fixes #3157 2022-09-22 22:53:22 +02:00
zadam
1be89c094b Merge pull request #3153 from charlesdagenais/master
improve "open" button behaviour for files when in browser
2022-09-22 22:48:33 +02:00
Charles Dagenais
73ad557784 improve "open" button behaviour for files when in browser 2022-09-21 21:56:59 -04:00
zadam
9f744153e3 fix TODO script example 2022-09-22 00:00:32 +02:00
zadam
0c196ae3a5 fix deleting / erasing note 2022-09-21 23:58:54 +02:00
Sylvain Pasche
a904e82d72 use same variable as Firefox for scrollbar thumb
Use --active-item-background-color variable for scrollbar thumb
background color on WebKit browsers (which is already used for Firefox).
This should improve visibility of the scrollbar.
2022-09-21 23:29:17 +02:00
zadam
15ed381f85 release 0.55.1 2022-09-21 22:43:34 +02:00
zadam
180051d252 added "scrolling-container" class, fixes #3147 2022-09-19 23:15:54 +02:00
zadam
a19c58703f Merge remote-tracking branch 'origin/master' 2022-09-19 23:12:20 +02:00
zadam
fc43d9222a fix erasing notes - becca should be reloaded afterwards, closes #3146 2022-09-19 23:12:12 +02:00
zadam
af6bf08243 Merge pull request #3143 from charlesdagenais/master
add file properties widget in mobile layout
2022-09-19 22:44:23 +02:00
zadam
fb6a0bc2a6 Merge pull request #3142 from spasche/zip-import-skip-bad-url
let import continue when malformed URLs are encountered
2022-09-19 22:42:31 +02:00
Charles Dagenais
1f61c1b3b6 add file properties info in mobile view 2022-09-18 12:40:00 -04:00
Sylvain Pasche
fc69f3b8f3 let import continue when malformed URLs are encountered
In case of malformed URLs in imported HTML, keep original URL instead
of having the import get stuck.
2022-09-18 18:18:42 +02:00
zadam
d4658b9c2a bring back the possibility to close the floating buttons again, closes #3116 2022-09-18 14:57:44 +02:00
zadam
84f72edf1d use button CSS variables in more places 2022-09-18 13:52:19 +02:00
zadam
552d872047 more standard window-all-closed handling 2022-09-18 10:05:49 +02:00
zadam
47235965d5 api log close button 2022-09-18 08:48:01 +02:00
zadam
24e4455e91 Merge remote-tracking branch 'origin/master' 2022-09-17 23:06:43 +02:00
zadam
ea35b0c800 Merge branch 'api-log-capture' 2022-09-17 23:06:42 +02:00
zadam
1a30087426 api log implementation 2022-09-17 23:06:17 +02:00
zadam
5e9d004ca2 Merge pull request #3139 from jph/add-methods-to-etapi-spec
Add another ETAPI method to the api spec file.
2022-09-17 14:13:31 +02:00
jph
513d1c020c Add another ETAPI method to the api spec file. 2022-09-17 10:47:44 +10:00
zadam
05231bd1c2 stop #workspaceTemplate from being inherited (should have the same special behavior as #template) 2022-09-16 23:03:02 +02:00
zadam
b816773d02 add #workspaceTemplate which works as workspace-scoped template, closes #3137 2022-09-16 22:44:52 +02:00
zadam
3c49ea6cb1 make context sub-menu scrollable, fix #3136 2022-09-16 22:12:09 +02:00
zadam
539eac4be7 Merge pull request #3134 from jph/add-note-content-to-api-spec
Add get note content to ETAPI spec
2022-09-16 21:08:53 +02:00
James Hynes
8a6ead6d86 fix a couple of api shortcomings
* add note content to openapi spec file
* add test for get note content api endpoint
2022-09-16 13:18:01 +10:00
zadam
01a7ed8311 fix zooming in server install 2022-09-15 23:10:54 +02:00
zadam
cf6330dee6 allow deleting notes from note actions button, closes #3131 2022-09-15 23:09:24 +02:00
zadam
6c39b6f548 fix "excludeFromNoteMap" on journal instead of "excludeFromTreeMap" 2022-09-15 00:04:26 +02:00
zadam
e7ef1b86cc zoom buttons in main menu, closes #2894 2022-09-14 23:28:29 +02:00
zadam
3663d56917 api log capture WIP 2022-09-14 16:50:52 +02:00
zadam
135064a18f drag & drop from tree will insert links to notes, closes #227 2022-09-13 23:36:59 +02:00
zadam
7233f58767 flatpak release script fixes 2022-09-12 23:14:00 +02:00
zadam
78238381a7 release 0.55.0-beta 2022-09-12 22:37:41 +02:00
zadam
ca03c41205 flatpak release script should support beta channel 2022-09-12 22:35:22 +02:00
zadam
9b8474a728 Merge branch 'stable'
# Conflicts:
#	package-lock.json
2022-09-12 21:44:49 +02:00
zadam
ecfce409d8 fix "ghost split", closes #3115 2022-09-07 23:39:35 +02:00
zadam
b091e2222e separated editable code buttons into separate widget which also fixes scrolling issue 2022-09-04 23:09:42 +02:00
zadam
e8b8198eb8 added Montserrat-Regular.ttf to fix boldness on mac, closes #3094 2022-09-04 16:50:45 +02:00
zadam
261f1f0bf2 fix electron 2022-09-04 14:01:34 +02:00
zadam
8588ed5eec remove port scanning for an available port #3036 2022-09-04 14:00:39 +02:00
zadam
f161488c13 focus existing window on port conflict, closes #3036 2022-09-04 14:00:34 +02:00
zadam
563808144e small fixes to tray and closing windows 2022-09-04 13:59:58 +02:00
zadam
3c1f826ead add support for the persistent #sortDirection and #sortFoldersFirst (one time UI action exists), closes #3046 2022-09-04 13:59:34 +02:00
zadam
b2a63afc28 limit max imported file size to 250 MiB, #3108 2022-09-03 15:11:03 +02:00
zadam
86d3a695ac fix handling of parenthesis without explicit AND operator, closes #3096 2022-08-28 14:40:24 +02:00
zadam
7f566178d3 Merge pull request #3095 from agentydragon/trilium-docs-noformat
Add some docs to note.js
2022-08-28 13:51:33 +02:00
Rai
4af55d055e revert 2022-08-27 13:46:16 -07:00
Rai
be000be960 Merge branch 'master' into trilium-docs-noformat 2022-08-27 13:45:22 -07:00
Rai
afb6180cce update docs 2022-08-27 13:42:44 -07:00
Rai
d63156a0d6 Add some docs to note.js (for backend scripting docs) 2022-08-27 13:40:01 -07:00
zadam
2556cd5aaa fix share.js in case there's no menu 2022-08-27 21:34:21 +02:00
zadam
7109a12afd Merge branch 'stable'
# Conflicts:
#	bin/release-flatpack.sh
2022-08-27 13:19:29 +02:00
zadam
700e9fd912 fix release-flatpack.sh 2022-08-26 23:52:09 +02:00
zadam
6547b66228 release 0.54.3 2022-08-26 22:16:49 +02:00
zadam
e9090b9154 added a release flatpack script
(cherry picked from commit e70a7bad1a)
2022-08-26 22:09:48 +02:00
zadam
5b73fe949e defensive programming, #3089 2022-08-26 22:08:05 +02:00
zadam
35fab7a23c fixes overwriting attributes after clicking on a relation in the attribute editor, closes #3090 2022-08-26 22:02:40 +02:00
zadam
bf6d79f4ad Merge pull request #3088 from DynamoFox/fix-update-button-if-update-checking-is-disabled
Fix the update to latest version button in the dropdown menu if update checking is disabled
2022-08-24 23:24:19 +02:00
zadam
24286c2a6c remove all alert() usages, fixes #3086 2022-08-24 23:20:05 +02:00
DynamoFox
09641d9465 Fix the update to latest version button in the dropdown menu, now it doesn't appear at all if update checking was disabled 2022-08-24 22:07:04 +02:00
zadam
e70a7bad1a added a release flatpack script 2022-08-23 23:48:13 +02:00
zadam
d386966342 Merge remote-tracking branch 'origin/master' 2022-08-23 22:32:43 +02:00
zadam
09cfaeb9c4 focus autocomplete on new tab even if there are workspaces, fixes #3083 2022-08-23 22:32:27 +02:00
zadam
934b1ad8c6 Merge pull request #3080 from DynamoFox/rate-limit-etapi-login-route
Rate limit the /auth/login route of ETAPI
2022-08-22 19:37:59 +02:00
zadam
80dcb45415 disable compression for electron / desktop builds 2022-08-22 19:29:58 +02:00
zadam
ad8b7f67b1 Merge remote-tracking branch 'origin/master' 2022-08-22 19:27:43 +02:00
zadam
67b8f3206c Merge pull request #3078 from sigaloid/master
Add compression middleware
2022-08-22 19:27:16 +02:00
DynamoFox
b965f77f4a Rate limit the /auth/login route of ETAPI 2022-08-22 11:50:58 +02:00
sigaloid
84fc00465e Fix minor typo 2022-08-20 20:33:10 -04:00
Matt
9b0c8a19f9 Merge branch 'zadam:master' into master 2022-08-20 21:30:54 +00:00
sigaloid
8e7d26bf4f Add compression 2022-08-20 17:30:35 -04:00
zadam
df351a8d09 trilium safe mode now disables GPU usage 2022-08-20 22:39:59 +02:00
zadam
9ce0421ae7 Merge pull request #3075 from sigaloid/master
Filter excludeFromNoteMap from backlinks
2022-08-20 22:31:37 +02:00
sigaloid
c85ec957ec Filter excludeFromNoteMap from backlinks 2022-08-18 23:12:58 -04:00
zadam
e93dd176c0 Merge pull request #3074 from sigaloid/master
Add shareDescription tag for HTML meta tags
2022-08-18 23:11:56 +02:00
sigaloid
10676a8d0c Add shareDescription 2022-08-17 15:18:34 -04:00
zadam
8abcf571e8 fixes for undefined parent note #3066 2022-08-16 23:46:56 +02:00
zadam
78bca2477d fix creating virtual "none" note in becca, closes #3066 2022-08-16 23:38:11 +02:00
zadam
f241bc564c Merge pull request #3065 from sigaloid/master
Add Flatpak to README
2022-08-15 23:46:40 +02:00
sigaloid
65942213de Add Flatpak to README 2022-08-15 12:01:55 -04:00
zadam
28f620d51d update demo document, closes #3061 2022-08-14 15:05:10 +02:00
zadam
aebdbdf8be fix falsy check in setting custom widget positions, closes #3060 2022-08-14 15:00:18 +02:00
zadam
bb3734052a Merge pull request #3058 from eliandoran/bugfix/upload_filename_encoding
Fix UTF-8 file name encoding for uploads (fixes #3013)
2022-08-14 14:53:44 +02:00
zadam
9a691c8227 Merge pull request #3057 from eliandoran/bugfix/max_content_width
Fix max content width not working (fixes #3056)
2022-08-14 14:52:49 +02:00
zadam
3bd2732cee Merge pull request #3059 from eliandoran/bugfix/relation_map_crash
Fix relation map crash on missing inverse pair (fixes #3055)
2022-08-14 14:50:52 +02:00
Elian Doran
ddb57e35f3 Fix relation map crash on missing inverse pair (fixes #3055) 2022-08-14 04:30:00 +03:00
Elian Doran
d1f3ce0957 Fix UTF-8 file name encoding for uploads (fixes #3013) 2022-08-14 04:14:34 +03:00
Elian Doran
d73da33b08 Fix max content width not working (fixes #3056) 2022-08-14 02:43:09 +03:00
zadam
201ef7fcd5 fix "show recent note" button, closes #3051 2022-08-09 21:49:37 +02:00
zadam
5705efc998 fix electron 2022-08-09 21:34:18 +02:00
zadam
2694bcff67 launchbar WIP 2022-08-08 23:13:31 +02:00
zadam
df7c089344 Merge branch 'master' into next55 2022-08-08 20:45:35 +02:00
zadam
6dee1f38f7 Merge pull request #3048 from DaiYuANg/master
add manifest.webmanifest into desktop make pwa install on ipad
2022-08-08 20:28:29 +02:00
DaiYuANg
87e2f50c6d add manifest.webmanifest into desktop make pwa install on ipad 2022-08-08 21:51:04 +08:00
zadam
616e2c1c29 add support for the persistent #sortDirection and #sortFoldersFirst (one time UI action exists), closes #3046 2022-08-07 23:51:23 +02:00
zadam
2335e40262 release 0.54.2 2022-08-07 23:20:59 +02:00
zadam
3a07c5fcc0 release 0.54.2 2022-08-07 23:18:03 +02:00
zadam
3c26e00fe1 launchbar WIP 2022-08-07 15:34:59 +02:00
zadam
fc920becac launchbar WIP 2022-08-07 13:23:03 +02:00
zadam
8d608c3c1c launchbar WIP 2022-08-06 23:49:25 +02:00
zadam
08aa65bddb launchbar WIP 2022-08-06 15:00:56 +02:00
zadam
54900b35dc launchbar WIP 2022-08-06 13:47:27 +02:00
zadam
7696702a2a launchbar WIP 2022-08-05 19:15:28 +02:00
zadam
42cade17cb launchbar WIP 2022-08-05 16:44:26 +02:00
zadam
7565458332 launchbar WIP 2022-08-04 23:00:32 +02:00
zadam
b86dbc088d small fixes to tray and closing windows 2022-08-04 21:19:57 +02:00
zadam
0681ec9057 Merge pull request #3038 from DynamoFox/support-reverse-proxy-trust
Add optional support to trust reverse proxies (via X-Forwarded-For)
2022-08-04 21:14:48 +02:00
DynamoFox
912f79f1af Add optional support to trust reverse proxies (via X-Forwarded-For) 2022-08-04 00:19:54 +02:00
zadam
82c596d1e3 Merge branch 'master' into next55 2022-08-03 22:23:58 +02:00
zadam
b6f1611218 less accented backlinks background (in dark mode esp.) 2022-08-03 19:24:26 +02:00
zadam
869c910801 fix "bulk actions" dialog title 2022-08-03 19:17:13 +02:00
zadam
b3097b59c7 remove port scanning for an available port #3036 2022-08-03 00:19:29 +02:00
zadam
5ec359e929 focus existing window on port conflict, closes #3036 2022-08-02 22:53:06 +02:00
zadam
ffd73c0e57 release 0.54.1-beta 2022-08-02 21:56:34 +02:00
zadam
12af3d05f0 hoisted note should be expanded after tree collapse 2022-08-02 20:38:48 +02:00
zadam
30b2d15f3d fix creating new calendar on each date note request 2022-08-02 18:25:05 +02:00
zadam
23c06ebed8 fix backend script error reporting, closes #3033 2022-08-02 18:15:54 +02:00
zadam
8acd3851b0 cssClass label cannot be applied on the root widget because of note splits, fixes #3032 2022-08-02 17:33:52 +02:00
zadam
1f6222a653 fix notemap resize + upgrade of force-graph 2022-08-02 17:17:27 +02:00
zadam
8a39699acd fix note map with noteId = 'none' 2022-08-02 17:01:49 +02:00
zadam
dff2d3e989 launchbar WIP 2022-08-02 17:01:09 +02:00
zadam
53affed8d3 fix note map with noteId = 'none' 2022-08-02 17:00:47 +02:00
zadam
a316ac5b35 fix docker build 2022-08-02 00:20:08 +02:00
zadam
aed0a8126c release 0.54.0-beta 2022-08-01 22:37:40 +02:00
zadam
edff1be16d added 197 NOOP migration to make sure the old versions don't attempt to process protected notes with 16 byte IV 2022-08-01 22:28:02 +02:00
zadam
0beee408cf fix following links with no href 2022-08-01 22:26:03 +02:00
zadam
e5fdd5128a fix password protected notes rejection 2022-08-01 19:56:09 +02:00
zadam
46deceedc9 optional basic auth for shared notes, closes #2781 2022-07-31 21:45:32 +02:00
zadam
3ebfaec1bc allow per workspace calendars, fixes #2959 2022-07-31 09:33:14 +02:00
zadam
4c93334d90 fix focusing ribbon tabs when using keyboard navigation on the tree 2022-07-30 23:43:20 +02:00
zadam
7c90f1a56d increasing DB and sync version because of encryption IV change 2022-07-30 23:29:30 +02:00
zadam
c727a2bc1b fix error message on removing bulk actions from search, closes #3027 2022-07-30 14:06:25 +02:00
zadam
6c43b92bf1 mermaid export button WIP 2022-07-29 00:32:28 +02:00
zadam
ef6b7a85d5 don't display mermaid if the note is encrypted without protected session 2022-07-28 23:59:41 +02:00
zadam
6d990de450 Merge remote-tracking branch 'origin/stable' 2022-07-28 23:48:05 +02:00
zadam
91bc9eec93 cleanup 2022-07-28 22:44:55 +02:00
zadam
698ffd886d cleanup 2022-07-28 22:44:28 +02:00
zadam
5a37547b37 use 16 bytes IV for newly encrypted data, closes #3017 2022-07-28 22:42:02 +02:00
zadam
80887fd3c1 export notes via ETAPI, #3012 2022-07-24 21:30:29 +02:00
zadam
5444cc2009 floating button container WIP 2022-07-24 14:30:42 +02:00
zadam
b8a89ee52a rename "backlinks.js" as it's not liked by some adblockers, #3003 2022-07-21 21:46:47 +02:00
zadam
bed0db9fa0 prevent zooming the whole app when ctrl + zoom on the canvas note, fixes #3002 2022-07-20 23:39:40 +02:00
zadam
1afa32502f add CSS variables for CKEditor table caption, fixes #2998 2022-07-20 23:22:07 +02:00
zadam
d825a1a45a remove checkForUpdates from login screen 2022-07-20 00:11:12 +02:00
zadam
0e41f9d1bc Merge pull request #3000 from sigaloid/master
Add config setting to disable update check
2022-07-20 00:05:34 +02:00
zadam
0f92468ab2 bootstrap 4.6.2 2022-07-20 00:03:21 +02:00
zadam
f890e9917f add #toc label to control Table of Contents visibility per note, #2985 2022-07-19 23:56:29 +02:00
zadam
8902cb3117 prevent paste on middle click, fixes #2995 2022-07-19 23:41:22 +02:00
zadam
61a0397963 Merge remote-tracking branch 'origin/master' 2022-07-19 23:32:21 +02:00
zadam
8f5983fa01 add jsdocs to note.cloneTo, closes #2996 2022-07-19 23:32:03 +02:00
sigaloid
fb1b6ea34a Fix login setting 2022-07-19 17:08:58 -04:00
sigaloid
cce55eee63 Make updates default checked 2022-07-19 16:59:27 -04:00
sigaloid
20975fc635 Add option to check for updates when setting up server 2022-07-19 16:55:57 -04:00
sigaloid
e42c527a19 Add default setting 2022-07-19 16:23:10 -04:00
sigaloid
500946c10b Fix type 2022-07-19 16:09:59 -04:00
sigaloid
f3662d1048 Add network configuration 2022-07-19 16:01:27 -04:00
zadam
82d71797a7 Merge pull request #2994 from thfrei/excalidraw-v012
wip: Excalidraw Upgrade v0.11-v0.12
2022-07-17 21:09:27 +02:00
Tom Free
e82fa5ee82 better comments for constructor 2022-07-17 14:16:17 +02:00
Tom Free
3e7aa3d762 remove obsolete code, update doc 2022-07-17 14:09:58 +02:00
zadam
57c5b6d61f added an option to define a "min TOC headings", #2985 2022-07-16 00:15:45 +02:00
zadam
e6358afb62 mitigate flickering in note tooltip, #2988 2022-07-15 23:35:17 +02:00
Tom Free
4ca59dcc5c upgrade to excalidraw v0.12, fix breaking changes 2022-07-14 23:49:30 +02:00
zadam
9114b1befb make sure the headings in TOC contain text only, https://github.com/zadam/trilium-web-clipper/issues/42 2022-07-14 23:39:16 +02:00
zadam
52812c27a1 useMaxWidth for mermaid pie widget, fixes #2984 2022-07-14 23:00:35 +02:00
zadam
377922eccf added getTargetNote to froca's attribute, fixes #2981 2022-07-11 23:15:16 +02:00
zadam
0d2a112839 fix build revision in the about dialog, closes #2980 2022-07-11 23:05:03 +02:00
zadam
ea20d23d11 Merge branch 'stable' 2022-07-10 23:47:04 +02:00
zadam
1dfc37704f fix note title escaping in export dialog 2022-07-10 22:32:00 +02:00
zadam
27261683bb added excalidraw mention to README.md 2022-07-10 22:21:55 +02:00
zadam
1e5c18f6ff focus icon search input after showing up, closes #2979 2022-07-10 22:13:21 +02:00
zadam
5cbcf6e6be etapi fix misleading error message 2022-07-10 22:09:13 +02:00
zadam
0c4e5d2a19 find box can be used also on render notes 2022-07-10 22:01:21 +02:00
zadam
570fabdc4a add highlighting to search results, closes #2977 2022-07-10 15:52:02 +02:00
zadam
89a4165c77 fixes in event propagation 2022-07-10 15:01:05 +02:00
zadam
1ad406ced5 electron search is not used anymore 2022-07-10 12:22:52 +02:00
zadam
7cdc181b47 upgrade to KaTeX 0.16.0 2022-07-09 22:35:04 +02:00
zadam
af16a5856a Merge branch 'next54' 2022-07-09 22:30:43 +02:00
zadam
ea3bce25d9 release 0.53.2 2022-07-09 13:40:41 +02:00
zadam
9b4ef6ea5e fix node size in a note map when note has hidden image notes, closes #2965 2022-07-09 13:27:57 +02:00
zadam
c2c724aa00 Merge remote-tracking branch 'origin/stable' 2022-07-08 22:21:41 +02:00
zadam
95bbf5f405 fix TOC widget not finding the heading by index, closes #2962 2022-07-08 22:17:56 +02:00
zadam
12b3302687 sanitize note title && attrs just to be sure 2022-07-06 23:09:16 +02:00
zadam
c575d47f0e Merge remote-tracking branch 'origin/master' 2022-07-06 21:31:57 +02:00
zadam
02affece91 use fenced code block style for markdown export, closes #2963 2022-07-06 21:31:11 +02:00
zadam
2f1a7e2093 Merge pull request #2961 from mwr0007/master
Remove period from left pane toggle button tooltip
2022-07-05 23:31:29 +02:00
zadam
4fc686bbbc sanitize note title 2022-07-05 22:40:41 +02:00
Michael Redman
d1a763feef Remove period from left pane toggle tooltip 2022-07-05 06:06:45 -05:00
zadam
6972ae889a converted relation map buttons to floating pattern 2022-07-03 23:10:13 +02:00
zadam
19c65e240e Merge remote-tracking branch 'origin/master' into next54 2022-07-03 22:38:45 +02:00
zadam
ef49d20470 release 0.53.1-beta 2022-07-01 22:50:19 +02:00
zadam
0d4275a260 fix saving new protected note revisions, closes #2951 2022-07-01 22:49:10 +02:00
zadam
dbf1ac1e9d Merge remote-tracking branch 'origin/stable'
# Conflicts:
#	package-lock.json
#	package.json
#	src/services/build.js
2022-07-01 22:34:19 +02:00
zadam
e7db262559 release 0.52.4 2022-07-01 00:11:53 +02:00
zadam
3faae63b84 set correct content type for error messages 2022-07-01 00:01:29 +02:00
zadam
94867e07df Merge remote-tracking branch 'origin/master' 2022-06-29 22:46:50 +02:00
zadam
33c272e86a fix dragging out tab creating multiple windows, closes #2944 2022-06-29 22:44:17 +02:00
zadam
aa4dade1e5 fix dragging out tab creating multiple windows, closes #2944 2022-06-29 22:38:35 +02:00
zadam
7435cd4dc6 Merge pull request #2943 from vgwidt/master
fix typo on advanced options page
2022-06-29 22:04:44 +02:00
vgwidt
194ae41d19 fix typo on advanced options page 2022-06-24 14:00:32 +09:00
zadam
42e262a1c2 10x speed-up of event propagation 2022-06-23 23:03:35 +02:00
zadam
ae46b3df58 fix typo in the custom widget location 2022-06-23 22:17:47 +02:00
zadam
e51276f532 floating buttons WIP 2022-06-21 23:27:34 +02:00
zadam
2e1bef2df7 fix ctrl+enter navigation for reference links, closes #2932 2022-06-20 23:11:52 +02:00
zadam
6b3077df0e fixed git graph demo to work with latest mermaid 2022-06-19 21:19:58 +02:00
zadam
1434effa22 upgraded mermaid to 9.1.2 2022-06-19 21:16:30 +02:00
zadam
67e69f1940 release 0.53.0-beta 2022-06-19 14:49:48 +02:00
zadam
046db503d3 added excalidraw to the demo document 2022-06-19 14:27:25 +02:00
zadam
9827e30a61 simple dedicated health check endpoint for docker 2022-06-19 14:15:31 +02:00
zadam
e21a1b56fa Merge pull request #2928 from bill88t/master
Add a very basic docker health check
2022-06-19 14:14:22 +02:00
zadam
08e12e7349 no need to create template relation if there is already one owned 2022-06-19 14:06:00 +02:00
zadam
5ed1631a35 resort attributes for display 2022-06-19 12:18:13 +02:00
Bill Sideris
8ac776f305 Slowly making it an oneliner, added line check 2022-06-19 12:39:20 +03:00
zadam
981fac8e50 #template label is not inherited through template since it's meant to mark the template note only 2022-06-19 11:36:29 +02:00
Bill Sideris
8bb8ab96f1 a bit better 2022-06-19 12:23:00 +03:00
Bill Sideris
0b0d1b59b9 update it to check for login 200 2022-06-18 17:21:41 +03:00
Bill Sideris
57609a5952 Add docker health check 2022-06-18 17:10:26 +03:00
zadam
4f86d769be web view fixes + disclaimer 2022-06-18 15:52:09 +02:00
zadam
6cb5144c09 add score to note title matches as opposed to note path, #2927 2022-06-18 14:45:41 +02:00
zadam
aee350b07b small bulk action fixes 2022-06-17 23:12:52 +02:00
zadam
5ca7e39852 fix putting new attribute correctly into becca 2022-06-17 23:04:46 +02:00
zadam
540aba39db vertical navigation in options 2022-06-16 23:00:40 +02:00
zadam
9a8e677baf converted options dialog to new pattern 2022-06-16 22:53:11 +02:00
zadam
c5bc23d511 fixed confirmDeleteNoteBoxWithNote 2022-06-16 21:30:05 +02:00
zadam
7ac8dc6785 converted prompt dialog to new pattern 2022-06-16 21:13:09 +02:00
zadam
049261a8ee scope dialog CSS 2022-06-16 20:20:56 +02:00
zadam
1d037d3f0f converted confirm dialog to new pattern 2022-06-16 20:19:26 +02:00
zadam
b45df29937 prevent pasting notes into search parent note 2022-06-16 20:02:40 +02:00
zadam
ec087ed328 converted info dialog to new pattern 2022-06-16 19:53:33 +02:00
zadam
9707094686 converted delete notes dialog to new pattern 2022-06-16 19:41:29 +02:00
zadam
eb8e5eafb6 converted note revisions to new pattern 2022-06-16 19:29:18 +02:00
zadam
e140daa952 converted protected session password dialog to new pattern 2022-06-16 15:28:51 +02:00
zadam
3255607b09 converted markdown import dialog to new pattern 2022-06-16 15:15:42 +02:00
zadam
36c210d0dd converted export dialog to new pattern 2022-06-16 15:04:57 +02:00
zadam
595e16cc6f converted import dialog to new pattern 2022-06-16 14:21:24 +02:00
zadam
40bbe380d3 converted move to dialog to new pattern 2022-06-16 14:08:33 +02:00
zadam
683b4ac73a converted clone to dialog to new pattern 2022-06-16 14:02:43 +02:00
zadam
e0ad256194 fix add link + note type chooser combo 2022-06-16 13:21:27 +02:00
zadam
0468ca6814 converted add link dialog to new pattern 2022-06-16 11:03:04 +02:00
zadam
6ebf7ae94e converted jump to note dialog to new pattern 2022-06-16 10:42:49 +02:00
zadam
5ccaf8b3b9 fix multiple parents indication on note tree 2022-06-15 23:07:09 +02:00
zadam
0e01c19414 don't show hidden notes in search results 2022-06-15 22:50:22 +02:00
zadam
1347d3fcc2 converted note type chooser dialog to new pattern 2022-06-15 00:10:32 +02:00
zadam
ebd715ca1b converted include note dialog to new pattern 2022-06-14 23:51:16 +02:00
zadam
73574ac890 converted password not set dialog to new pattern 2022-06-14 23:32:16 +02:00
zadam
ca44edd48c converted sort by dialog to new pattern 2022-06-14 23:19:41 +02:00
zadam
312ffc110a converted branch prefix dialog to new pattern 2022-06-14 23:07:42 +02:00
zadam
bc87bf12cf converted backend log dialog to new pattern 2022-06-14 23:00:24 +02:00
zadam
11412a258b converted recent changes dialog to new pattern 2022-06-14 22:55:07 +02:00
zadam
bc35efd565 Merge branch 'stable' 2022-06-14 22:46:58 +02:00
zadam
416a723160 Merge remote-tracking branch 'origin/master' 2022-06-14 22:46:52 +02:00
zadam
10322c5d0f Merge pull request #2920 from st3iny/fix/2919/docker-image-clean-exit
Fix docker image not exiting cleanly
2022-06-14 22:24:18 +02:00
Richard Steinmetz
7775d90b9a Fix docker image not exiting cleanly
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
2022-06-14 10:34:07 +02:00
zadam
fac9fef652 release 0.52.3 2022-06-13 23:41:52 +02:00
zadam
f0ab1fb5a1 Merge pull request #2917 from bill88t/master
Added the USER_UID & USER_GID env variables
2022-06-13 23:23:30 +02:00
zadam
f86fb129b6 Merge remote-tracking branch 'origin/master' 2022-06-13 23:18:57 +02:00
zadam
63cabb13b6 Merge pull request #2917 from bill88t/master
Added the USER_UID & USER_GID env variables
2022-06-13 23:17:59 +02:00
zadam
d3ee0aa8a8 Merge branch 'stable'
# Conflicts:
#	src/routes/api/files.js
#	src/routes/api/note_revisions.js
#	src/routes/api/notes.js
#	src/services/image.js
2022-06-13 23:04:54 +02:00
zadam
6256bcde2d note revisions and file properties buttons respect protected session 2022-06-13 23:03:56 +02:00
zadam
df3fdb59c5 fix saving note revisions, closes #2915 2022-06-13 22:54:08 +02:00
zadam
4cec856e21 simplified updating note content 2022-06-13 22:38:59 +02:00
Bill Sideris
8a43688a65 Added the USER_UID & USER_GID env variables 2022-06-13 12:43:10 +03:00
zadam
7edcd5d746 Merge remote-tracking branch 'origin/master' 2022-06-13 00:00:24 +02:00
zadam
ec6d93b34f converted help dialog to new pattern 2022-06-13 00:00:15 +02:00
zadam
0c6efb0cb7 Merge pull request #2914 from st3iny/enh/noid/trilium-data-dir-docker-start
Fix TRILIUM_DATA_DIR permissions in start-docker.sh
2022-06-12 23:31:15 +02:00
zadam
f8fd8e47a9 added rename note bulk action 2022-06-12 23:29:11 +02:00
Richard Steinmetz
566111ce82 Fix TRILIUM_DATA_DIR permissions in start-docker.sh
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
2022-06-12 23:25:33 +02:00
zadam
7ba619c71d converted note source dialog to new pattern 2022-06-12 19:38:28 +02:00
zadam
b678d87c80 converted about dialog to new pattern 2022-06-12 14:03:59 +02:00
zadam
4aaa0f8d8c change tree node icon for selected notes to quickly bring up bulk action dialog 2022-06-12 13:57:22 +02:00
zadam
1bfc5fb77f calculate affected counts and take into account includeDescendants when executing 2022-06-12 10:35:30 +02:00
zadam
63f0e441b9 trigger execute bulk actions 2022-06-12 00:05:46 +02:00
zadam
041b4ea442 Merge remote-tracking branch 'origin/master' 2022-06-11 23:29:59 +02:00
zadam
2115b76047 bulk action dialog converted to widget 2022-06-11 23:29:52 +02:00
zadam
117db9f1cc Merge pull request #2910 from sigaloid/master
Add toast messages prior to possibly long operations
2022-06-11 22:15:34 +02:00
sigaloid
b530bc548f Add messages prior to possibly long operations 2022-06-11 13:27:41 -04:00
zadam
8e23c15763 Merge branch 'next53'
# Conflicts:
#	src/services/builtin_attributes.js
2022-06-10 23:02:51 +02:00
zadam
23e9bcfdc5 release 0.52.2 2022-06-09 23:39:48 +02:00
zadam
96c4934c00 new default keyboard shortcuts alt+up/down/left/right for moving notes on Mac 2022-06-09 23:38:07 +02:00
zadam
31fb02f810 titleTemplate should be sanitized on import 2022-06-09 21:01:02 +02:00
zadam
5fdb462ed5 fix activating ribbon tabs after note switch 2022-06-08 23:44:43 +02:00
zadam
7d76fb8bf5 merge fix 2022-06-08 22:52:17 +02:00
zadam
0f7fa7a7b7 Merge branch 'master' into next53
# Conflicts:
#	package-lock.json
#	src/routes/api/search.js
2022-06-08 22:51:18 +02:00
zadam
e206d9cc68 fix selected note text color 2022-06-08 22:27:36 +02:00
zadam
2d33f570f4 fix bulk/search action delete 2022-06-08 22:25:00 +02:00
zadam
15f8173add fix ugly hover close button 2022-06-07 20:11:43 +02:00
zadam
51bbc23270 Merge branch 'master' into next53 2022-06-06 22:27:21 +02:00
zadam
7609bc78ec allow ignoring DB version for skipping uncritical migrations in case of a downgrade 2022-06-06 22:27:06 +02:00
zadam
b4ac41eff8 fix handlers import, closes #2900 2022-06-06 21:59:44 +02:00
zadam
f9bee7cd4e introduced bulk action groups 2022-06-05 23:36:46 +02:00
zadam
f272238dde fix backend implementation of bulk actions 2022-06-05 23:13:09 +02:00
zadam
433003cf38 fix migration 2022-06-05 22:50:02 +02:00
zadam
773cefe21d refactorings of search actions to bulk actions 2022-06-05 22:46:37 +02:00
zadam
88fa51a34e refactorings of search actions to bulk actions 2022-06-05 22:32:23 +02:00
zadam
4211d0feda Merge branch 'master' into next53 2022-06-05 22:25:14 +02:00
zadam
de1c76ee3c typo 2022-06-05 21:24:52 +02:00
zadam
ec4fac421b release 0.52.1-beta 2022-06-05 15:00:25 +02:00
zadam
f587e0dfd9 added new runOnNoteDeletion, runOnBranchCreation, runOnBranchDeletion, #2898 2022-06-05 14:58:19 +02:00
zadam
b5214e6cea disabled button theme/CSS tweaks 2022-06-05 14:35:23 +02:00
zadam
5fbaed61c1 fix "cut to note", closes #2895, #1182 2022-06-03 22:05:18 +02:00
zadam
9ce3e7e7d2 bulk actions WIP 2022-06-03 17:29:08 +02:00
zadam
e1cd09df36 implement shift-click to select notes in between clicked and active note, closes #2647 2022-06-03 09:42:35 +02:00
zadam
27b55eb3ee make openOnFocus=false explicit 2022-06-03 08:07:27 +02:00
zadam
8fcc76ad6d fix debounce webpack 2022-06-02 23:26:40 +02:00
zadam
ab0f0c5ced fix debounce webpack 2022-06-02 23:25:59 +02:00
zadam
4837dd050b fix bug when giving focus again to autocomplete input when coming back from note type chooser 2022-06-02 23:21:17 +02:00
zadam
c0c38a4b49 Merge branch 'master' into next53 2022-06-02 22:32:29 +02:00
zadam
15a9ff4450 when closing / clearing last tab, close all splits 2022-06-02 22:28:25 +02:00
zadam
0a4f419e5e fix when searching for "note.", closes #2889 2022-06-02 17:41:23 +02:00
zadam
7fa531b3d6 add openSplitWithNote() frontend api method, #2891 2022-06-02 17:36:30 +02:00
zadam
3cfca27b54 expose ability to create note revisions in backend API #2890 2022-06-02 17:25:58 +02:00
zadam
93f0596b16 select template when creating note, closes #2813 2022-06-02 14:16:49 +02:00
zadam
b204014a11 create note from template WIP 2022-05-31 23:27:45 +02:00
zadam
98b579524c create note from template WIP 2022-05-31 22:45:57 +02:00
zadam
88586b0f25 Merge branch 'master' into next53 2022-05-31 22:21:29 +02:00
zadam
103aa95ccf removed duplicated search action 2022-05-31 14:22:52 +02:00
zadam
339a6d7817 don't check for null content in consistency checks because it's too slow for large databases #2887 2022-05-31 14:09:46 +02:00
zadam
f252badba6 skeleton for bulk assign attributes 2022-05-30 22:43:20 +02:00
zadam
fe27c80078 added enter/leave protected session into the mobile frontend 2022-05-30 22:32:15 +02:00
zadam
8052574950 rename iframe to web view 2022-05-30 20:59:54 +02:00
zadam
f19adf3ee0 add the ability to sort notes by folders first, closes #2649 2022-05-30 20:50:53 +02:00
zadam
dcf31f8f95 toc fixes 2022-05-30 17:45:59 +02:00
zadam
93dd9274e7 fix relative address of lodash debounce, closes #2882 2022-05-30 13:22:28 +02:00
zadam
cce3f9a700 TOC widget WIP 2022-05-29 21:44:26 +02:00
zadam
01155ad535 use webview instead of iframe 2022-05-29 17:42:09 +02:00
zadam
ee217d6306 added iframe note type 2022-05-28 22:19:29 +02:00
zadam
ca35527aeb release 0.52.0-beta 2022-05-27 22:13:24 +02:00
zadam
388dcadef3 release 0.52.0-beta 2022-05-27 22:06:07 +02:00
zadam
8905148dbc fix NPE in note map, closes #2877 2022-05-27 21:55:58 +02:00
zadam
daa36192cc fix jumping of find dialog in read only code 2022-05-27 21:50:59 +02:00
zadam
ade77e5fb8 find widget readonly notes 2022-05-26 16:29:54 +02:00
zadam
f250b72563 findwidget in read only notes WIP 2022-05-25 23:38:06 +02:00
zadam
37cb5f5e9a added previous/next buttons to the find widget 2022-05-25 20:43:52 +02:00
zadam
82fcc97ed2 Merge branch 'custom-search-dialog' 2022-05-25 20:32:22 +02:00
zadam
53e9c8cdac upgrades 2022-05-24 21:34:32 +02:00
zadam
541d451168 tree css changes to make selection and active note more distinct 2022-05-24 21:33:07 +02:00
zadam
7c64dc9440 fix coloring of backlinks popup in dark theme 2022-05-22 23:29:07 +02:00
zadam
27570a7756 fix for canvas theme after opening help 2022-05-22 15:27:40 +02:00
zadam
d6931f7441 fix setting theme on new canvas note 2022-05-22 14:27:16 +02:00
zadam
7d39d080f5 switching note type will reevalute max content width setting 2022-05-22 14:24:47 +02:00
zadam
13ccd2ba67 remove the canvas dependency (transitive dep of jsdom) in postinstall 2022-05-22 13:45:49 +02:00
zadam
81fd7397e4 added underline to more distinguish selected items in the tree, #2865 2022-05-22 13:45:15 +02:00
zadam
6f75f944a3 Merge pull request #2864 from dousha/master
Fix docker data permissions
2022-05-21 22:55:59 +02:00
Jiahao Lee
308b0f7464 Remove unneeded packages 2022-05-22 03:35:26 +08:00
zadam
678e883044 switch excalidraw theme (light/dark) based on trilium setting 2022-05-21 21:08:24 +02:00
zadam
819cf0907d add option to disable auto-download of images for offline storage, #2859 2022-05-21 14:00:53 +02:00
dousha
942f17b2f4 fix docker file permissions so 777 is no longer needed 2022-05-21 13:25:59 +08:00
zadam
2085dc5ed4 minor canvas note cleanup 2022-05-19 23:00:07 +02:00
zadam
a1d1b4580a Merge remote-tracking branch 'origin/stable' 2022-05-18 23:00:49 +02:00
zadam
9e089cc7cd disable COEP, fixes #2858 2022-05-18 22:56:29 +02:00
zadam
cd622cbdd7 find widget refactoring to use note context 2022-05-17 23:53:35 +02:00
zadam
4978a3ff1a find widget improvements 2022-05-17 23:22:28 +02:00
zadam
fca0b82610 find widget fixes 2022-05-17 22:11:45 +02:00
zadam
6cef1082b2 Merge remote-tracking branch 'origin/stable' into custom-search-dialog 2022-05-17 22:07:11 +02:00
zadam
37eb16b2f3 moved protected session expiration scheduling #2855 2022-05-17 20:39:37 +02:00
zadam
c24c807921 delay protected session expiration check after DB init, fixes #2855 2022-05-17 20:39:37 +02:00
zadam
5bc629d1c7 moved protected session expiration scheduling #2855 2022-05-17 20:39:21 +02:00
zadam
04379b4e1f delay protected session expiration check after DB init, fixes #2855 2022-05-17 20:22:33 +02:00
zadam
c51e6107a1 findwidget cleanup 2022-05-16 23:56:43 +02:00
zadam
bb7ad496bf findwidget cleanup 2022-05-15 22:51:26 +02:00
zadam
c50d8e85dc findwidget cleanup 2022-05-15 21:03:51 +02:00
zadam
1d8664927d Merge branch 'master' into custom-search-dialog 2022-05-15 20:35:26 +02:00
zadam
dbb5d02ecf log the time spent during optimization process 2022-05-15 20:34:47 +02:00
zadam
593a275795 added #titleTemplate, closes #2852 2022-05-15 15:21:35 +02:00
zadam
6778e1e60e findwidget cleanup 2022-05-15 12:09:30 +02:00
zadam
36308c307b findwidget cleanup 2022-05-14 22:33:45 +02:00
zadam
078fc420b0 findwidget merge from upstream 2022-05-14 21:06:14 +02:00
zadam
8ec814c29f Merge branch 'master' into custom-search-dialog
# Conflicts:
#	docs/frontend_api/FrontendScriptApi.html
#	package-lock.json
#	package.json
2022-05-14 20:50:43 +02:00
zadam
e87e065100 protected session expiration timer moved to backend, closes #2847 2022-05-13 23:20:56 +02:00
zadam
8318ab7ac0 added triggerCommand and triggerEvent into frontend API 2022-05-13 22:33:57 +02:00
zadam
87b75a9a22 Merge pull request #2798 from thfrei/excalidraw
New note type `canvas-note` using excalidraw (hand drawn notes, sketching, pen)
2022-05-12 23:48:16 +02:00
zadam
8df3b0a5bd Merge branch 'master' into excalidraw 2022-05-12 23:46:52 +02:00
zadam
6906c82408 changed regex operator to %= 2022-05-11 23:19:32 +02:00
zadam
45edef2d71 new ~ operator in search for regex 2022-05-11 23:06:14 +02:00
zadam
bf49648896 allow operators =, *= and =* on note content 2022-05-11 22:43:21 +02:00
zadam
91d23c540a refactored note_content_protected_fulltext.js and note_content_unprotected_fulltext.js into one class 2022-05-11 21:33:41 +02:00
Tom
1cbf918024 update comment and discussion about canvas note 2022-05-11 09:29:54 +02:00
Tom
26f3c1d453 rename canvas_note_share to canvas_share to align witih refactor 2022-05-11 09:06:30 +02:00
zadam
c421ee79b0 increase DB version 2022-05-10 23:47:25 +02:00
zadam
77f8474d83 don't fill recent notes into entity_changes
(cherry picked from commit 963c18b8e4)
2022-05-10 23:45:28 +02:00
zadam
9a04a76672 remove recent notes from entity changes migration, #2842
(cherry picked from commit bbbad67764)
2022-05-10 23:45:28 +02:00
zadam
963c18b8e4 don't fill recent notes into entity_changes 2022-05-10 23:45:06 +02:00
zadam
bbbad67764 remove recent notes from entity changes migration, #2842 2022-05-10 23:42:28 +02:00
Tom
3491e71084 handle note.type changing 2022-05-10 13:53:50 +02:00
Tom
c85f70e197 remove obsolete errorSvg 2022-05-10 13:47:43 +02:00
Tom
3df712b64f refactor canvas-note to canvas 2022-05-10 13:43:05 +02:00
Tom
160bd0a790 remove commented logs to clean up code 2022-05-10 13:32:25 +02:00
Tom
81e0c6dcc2 simplify code 2022-05-10 13:29:24 +02:00
Tom
11bd48a1b5 rename ExcalidrawReactApp() to createExcalidrawReactApp() 2022-05-10 13:28:14 +02:00
Tom
61657087f5 move debounce to library, remove unnecessary binds, replaceassets only for canvas 2022-05-10 13:26:29 +02:00
zadam
87f436c6ea search dialog WIP from custom widget from antoniotejada 2022-05-09 23:13:34 +02:00
Tom
065e4f55c3 remove logs, add explanation to collab 2022-05-09 17:25:20 +02:00
Tom
92adcf82e4 remove debug helper with uniqueId 2022-05-09 17:05:49 +02:00
Tom
06e0f2418c remove magic constants for scene_version and give them a name 2022-05-09 17:00:24 +02:00
Tom
35c4c61d15 sync canvas icon of tree_context_menu 2022-05-09 16:57:23 +02:00
Tom
a168edb168 move sleep to general utisl function 2022-05-09 16:54:43 +02:00
Tom
d2975bbd21 remove obsolete comments 2022-05-09 16:47:40 +02:00
Tom
358e8c548c remove branch bugfix 2022-05-09 16:47:28 +02:00
Tom
f85ed672cc moving canvas_note_share to src/share and add routes 2022-05-09 16:38:23 +02:00
Tom
83f1a68bfd fix errorSvg.js path 2022-05-09 16:26:30 +02:00
Tom
552e5d7d06 typo in note.type 2022-05-09 16:18:06 +02:00
Tom
9c7f8cf5d8 extract errorSvg 2022-05-09 16:17:37 +02:00
Tom
f0f9274a3c remove route without filename 2022-05-09 16:17:14 +02:00
Tom
65c725c21e add jsdoc to indicate possibility to use getContent async 2022-05-09 16:14:03 +02:00
Tom
dfa30358c5 ensure external assets in excalidraw are avoided 2022-05-09 16:08:56 +02:00
Tom
2394fe6ed9 reduce redundant package version to simplify upgrade 2022-05-09 15:16:12 +02:00
Tom
6cae68288d adhere to convention, prefixing jquery objects with $ and dom not 2022-05-09 15:15:07 +02:00
zadam
83afb89a16 lib upgrades 2022-05-03 23:53:46 +02:00
zadam
93cc6b12ec added new APIs to access note detail, #2806 2022-05-03 23:25:28 +02:00
Tom
dc35df9f63 optimize canvas_note share to make it more clear about view mode and excalidraw 2022-05-03 22:44:52 +02:00
Tom
1a4bc0b989 clean up code 2022-05-03 22:06:24 +02:00
Tom
a37d75a08f upd package-lock version 2022-05-03 22:01:53 +02:00
Tom
8d510a3fdd Merge remote-tracking branch 'upstream/master' into excalidraw
conflict in
- package-lock (accept incoming),
- routes (remove the option to have image without filename, since it is not really necessary for canvas_note)
- note_detail
2022-05-03 21:56:52 +02:00
Matt
7bcd1c3009 Add download button to shared canvases (#7)
thx @sigaloid 

* Add download button to shared canvases
* Update canvas_note_share.js
* Update canvas_note_share.js
* Update canvas_note_share.js
* Change to more accurate language
2022-05-03 21:43:26 +02:00
zadam
5dab189815 recovery for tree cycle errors, #2831 2022-05-03 00:30:09 +02:00
zadam
a9dc62505d fix height of textarea of SQL console 2022-05-02 21:23:40 +02:00
zadam
26e1ff4e16 release 0.51.2 2022-05-01 23:18:35 +02:00
zadam
b3763eed61 make sure shaca is loaded before any request 2022-05-01 23:16:47 +02:00
zadam
f9c01851ef fix missing closing div tag in word count demo widget, closes #2829 2022-05-01 22:47:26 +02:00
zadam
6b61b0604a improve hiding of edit button #2787 2022-05-01 22:44:23 +02:00
zadam
f705c432fd allow combining tokens in text and title/attributes, fixes #2820 2022-04-29 22:59:00 +02:00
zadam
70edd9a210 allow searching within mermaid diagrams, closes #2821 2022-04-29 22:36:05 +02:00
zadam
0a45b58784 fix doubling of icon tooltips, closes #2811 2022-04-24 13:23:01 +02:00
zadam
dbd312c88d addTextToEditor appends text to the end instead of the beginning 2022-04-23 23:07:08 +02:00
zadam
11578b1bc3 fix "isActive()" detection to work well with splits, #2806 2022-04-23 23:06:42 +02:00
zadam
569c80f551 release 0.51.1-beta 2022-04-22 00:07:59 +02:00
zadam
3b58b83f8b improved logging 2022-04-19 23:36:21 +02:00
zadam
643a5e5b16 moving deleteNote and deleteBranch into entities to make them accessible to scripts, #2792 2022-04-19 23:06:46 +02:00
Tom
4e4010e15e update styles, fix share view 2022-04-19 21:46:25 +02:00
Tom
6bdaf050c5 replace excalidraw.com asset in svg with EXCALIDRAW_ASSET_PATH, clean up code 2022-04-19 14:39:53 +02:00
Tom
05c8c6cfaa set express same as master 4.17.3 2022-04-19 00:24:41 +02:00
Tom
2441515666 set EXCALIDRAW_ASSET_PATH to avoid loading from unpkg.com 2022-04-19 00:21:29 +02:00
Tom
c42bcd6c59 remove icon-set so long as not clear how to use (preferably use special trilium note!) 2022-04-19 00:21:29 +02:00
Tom
fc95bb8f18 add onLinkHandler experimental 2022-04-19 00:21:29 +02:00
Tom
cb88f316db basic share view render (css wrong) 2022-04-19 00:21:29 +02:00
Tom
e19ddc10d3 make revision and renderer svg to shrink to box but not enlarge 2022-04-19 00:21:29 +02:00
Tom
d3e86acfaa explain checkFullHeight() due to missleading name 2022-04-19 00:21:29 +02:00
Tom
536643ed3b add undefined check for branch
unclear why this happens
2022-04-19 00:21:29 +02:00
Tom
9771b441ad missing path2d support for freedawings, remove node-side rendering, allow async getContent()
* ## Excalidraw and SVG
 * 2022-04-16 - @thfrei
 *
 * Known issues:
 *  - excalidraw-to-svg (node.js) does not render any hand drawn (freedraw) paths. There is an issue with
 *    Path2D object not present in node-canvas library used by jsdom. (See Trilium PR for samples and other issues
 *    in respective library. Link will be added later). Related links:
 *     - https://github.com/Automattic/node-canvas/pull/2013
 *     - https://github.com/google/canvas-5-polyfill
 *     - https://github.com/Automattic/node-canvas/issues/1116
 *     - https://www.npmjs.com/package/path2d-polyfill
 *  - excalidraw-to-svg (node.js) takes quite some time to load an image (1-2s)
 *  - excalidraw-utils (browser) does render freedraw, however NOT freedraw with background
 *
 * Due to this issues, we opt to use **only excalidraw in the frontend**. Upon saving, we will also get the SVG
 * output from the live excalidraw instance. We will save this **SVG side by side the native excalidraw format
 * in the trilium note**.
 *
 * Pro: we will combat bit-rot. Showing the SVG will be very fast, since it is already rendered.
 * Con: The note will get bigger (maybe +30%?), we will generate more bandwith.
 *      (However, using trilium desktop instance, does not care too much about bandwidth. Size increase is probably
 *       acceptable, as a trade off.)
2022-04-19 00:21:20 +02:00
Tom
c295fdb142 rename excalidraw icon libraries 2022-04-19 00:20:21 +02:00
Tom Free
ee7aa3d3da remove manually added, static libraries for excalidraw, react, etc. 2022-04-19 00:20:21 +02:00
Tom Free
e437a9d70f note about buggy excalidraw-utils for browser svg rendering 2022-04-19 00:20:21 +02:00
Tom Free
a8655fcd27 add canvas-note-type at some missing places after rebase 2022-04-19 00:20:21 +02:00
Tom
aefc9f1593 add excalidraw excalidraw/utils, react and react-dom as npm-dependencies 2022-04-19 00:20:13 +02:00
Tom Free
73671671d7 remove obsolete fabric/hammer/jquery from canvas-note early trials 2022-04-19 00:17:39 +02:00
Tom
f53a93e828 make :filename for GETing an image optional 2022-04-19 00:17:39 +02:00
Tom
e156c6292b improve status 500 for canvas-note api/image.js 2022-04-19 00:17:39 +02:00
Tom
e365521d5e add support for sharing canvas-note 2022-04-19 00:17:39 +02:00
Tom
f354821f25 basic support for using api/images with canvas-note
http://localhost:8080/api/images/<noteId>/some-rando-text
2022-04-19 00:17:16 +02:00
Tom
82e278a2a2 add comment about excalidraw-error message on insert 2022-04-19 00:13:27 +02:00
Thomas Frei
b4d4606c73 add a selection of excalidraw-drawing-libraries 2022-04-19 00:13:27 +02:00
Thomas Frei
b14b7b6ad1 add _meta to note, in case it got changed to type json 2022-04-19 00:13:27 +02:00
Thomas Frei
32aa7bb540 ensure that fresh note has empty scene, no bleeding 2022-04-19 00:13:27 +02:00
Thomas Frei
300f4ad357 remove obsolete comments / code 2022-04-19 00:13:27 +02:00
Tom
cf6b5c3b6e ensure only active/referenced files are saved 2022-04-19 00:13:27 +02:00
Tom
f1c9dda366 make sure nothing breaks on fresh empty note or note that has already content 2022-04-19 00:13:27 +02:00
Tom
7f01032b6d add support for render excalidraw in book view (copy of note_revision)
maybe one should think about extract a function there and make it reusable
2022-04-19 00:13:27 +02:00
Tom
f08afd4723 remove empty line break 2022-04-19 00:13:27 +02:00
Tom
afe2a03aef fix initial load and safe issue by storing noteId 2022-04-19 00:13:27 +02:00
Tom
272bb136d8 make canvas_note height 100% 2022-04-19 00:13:27 +02:00
Tom
27d0388d79 add some comments 2022-04-19 00:13:26 +02:00
Tom
025032de42 make note revisions work 2022-04-19 00:13:26 +02:00
Tom
15a3b42124 remove some debug/testing code 2022-04-19 00:13:26 +02:00
Tom
4266156cee fix curser mismatch by manually setting offset 2022-04-19 00:13:26 +02:00
Tom
45a66ab694 some notes about loading and container width 2022-04-19 00:13:26 +02:00
Tom
49f4ce7149 example for trilium image-link usage and svg export 2022-04-19 00:13:26 +02:00
Tom
220df662ad make pasted images in excalidraw work (save and load "files") 2022-04-19 00:13:26 +02:00
Tom
6e535bac05 ensure isNewSceneVersion() does not increment currentVersion 2022-04-19 00:13:26 +02:00
Tom
3b1dcc7199 compare sceneVersion to omit unnecessary save/reloads of content 2022-04-19 00:13:26 +02:00
Tom
ae75ac424f add noteid to console to differentiate logs 2022-04-19 00:13:26 +02:00
Tom
5c46fe792d use widget element to render for multiple excalidraw instances 2022-04-19 00:13:26 +02:00
Tom
a33b0f1e1c updated react unmounting 2022-04-19 00:13:26 +02:00
Tom
bd28ed07d7 working canvas_note PoC save and load for one note 2022-04-19 00:13:26 +02:00
Tom
12185fbd32 optimized canvas placement in trilium 2022-04-19 00:13:26 +02:00
Tom
24911da8db use react production build 2022-04-19 00:13:26 +02:00
Tom
da84d16421 excalidraw include works, removed infinitedrawingcanvas 2022-04-19 00:13:26 +02:00
thfrei
53666cbfe8 lint 2022-04-19 00:13:26 +02:00
thfrei
8897d98bd9 add note-detail height to make canvas visible
due to some upstream changes, this was necessary.
otherwise complete inside container was not visible.
2022-04-19 00:13:26 +02:00
thfrei
93e485cea9 remove console.image 2022-04-19 00:13:26 +02:00
thfrei
22363f5b74 working trilium canvas note 2022-04-19 00:13:26 +02:00
thfrei
2a2c82cd29 minor update for canvas 2022-04-19 00:13:26 +02:00
thfrei
5ebe717da8 basic infinite-drawing-canvas integration 2022-04-19 00:13:26 +02:00
thfrei
2f2d8327e4 update libraries 2022-04-19 00:13:26 +02:00
Tom Free
a894c19c2b add missing canvas-note entries in helper functions
Conflicts:
	src/public/app/entities/note_short.js
	src/public/app/services/tree_context_menu.js
2022-04-19 00:13:26 +02:00
Tom Free
0469962c5e wip: canvas-note patch
Conflicts:
	src/public/app/services/library_loader.js
	src/public/app/services/tree_context_menu.js
	src/public/app/widgets/note_actions.js
	src/services/consistency_checks.js
	src/services/utils.js
2022-04-19 00:13:26 +02:00
zadam
f6ebc76917 Merge remote-tracking branch 'origin/stable' 2022-04-18 18:59:30 +02:00
zadam
73425ec29d workaround for wrongly placed tooltip, closes #2794 2022-04-16 15:51:30 +02:00
zadam
51e5f591b2 null check 2022-04-16 15:10:16 +02:00
zadam
d1b3d8a58a add missing doc pages 2022-04-16 00:18:01 +02:00
zadam
534c71491b fix docs 2022-04-16 00:17:32 +02:00
zadam
987f8e9961 fix share responsivity on mobile devices, closes #2790 2022-04-16 00:02:24 +02:00
zadam
a45cf033aa fix hiding of linked images in shared notes, closes #2791 2022-04-15 23:09:07 +02:00
zadam
06b6097f29 Merge remote-tracking branch 'origin/stable' 2022-04-15 14:53:47 +02:00
zadam
75c8e700d4 dev data directory should be relative 2022-04-15 14:51:14 +02:00
zadam
c1092c97b5 release 0.51.0-beta 2022-04-10 14:13:51 +02:00
zadam
a04becc4ec dep upgrades 2022-04-10 14:13:45 +02:00
zadam
f7d6bda49d added zooming/panning to mermaid diagrams, closes #2635 2022-04-03 23:14:47 +02:00
zadam
b250f0a3bf Merge remote-tracking branch 'origin/stable' 2022-04-03 14:21:28 +02:00
zadam
df1d94ec61 ckeditor 33 content styles 2022-03-26 14:10:29 +01:00
zadam
e00fcd93a1 added #shareDisallowRobotIndexing label and reworked how the child-image exclusion works 2022-03-22 23:17:47 +01:00
zadam
0a95d0f6f5 ckeditor 33 2022-03-22 22:20:44 +01:00
zadam
569b8898ef release 0.50.3 2022-03-22 21:30:21 +01:00
dependabot[bot]
102bfcebd0 Bump nanoid from 3.1.30 to 3.3.1
Bumps [nanoid](https://github.com/ai/nanoid) from 3.1.30 to 3.3.1.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/3.1.30...3.3.1)

---
updated-dependencies:
- dependency-name: nanoid
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-22 20:26:50 +00:00
zadam
091d6a1cf1 added #shareRaw label 2022-03-22 21:20:47 +01:00
zadam
228564f843 Merge remote-tracking branch 'origin/master' 2022-03-22 21:04:52 +01:00
zadam
17dd6141fb Merge remote-tracking branch 'origin/stable'
# Conflicts:
#	Dockerfile
#	package-lock.json
#	package.json
#	src/services/cloning.js
2022-03-22 21:04:30 +01:00
zadam
2f57d55bea add allow robots.txt tag for /share 2022-03-22 21:02:32 +01:00
zadam
0cd690d980 fix inclusion of share.js in builds, fixes #2738 2022-03-21 23:28:19 +01:00
zadam
316a2aee1a invalidate flat text cache after login to protected session, fixes #2712 2022-03-20 22:23:48 +01:00
Matt
77ce56ba84 Don't show protected notes in shared tree (#2704) 2022-03-07 23:00:07 +01:00
zadam
eba824a5b1 added app-info method to etapi #2697 2022-03-07 22:57:48 +01:00
zadam
c9e72f8fb9 Merge remote-tracking branch 'origin/master' 2022-02-24 23:22:33 +01:00
zadam
4dd3fd9674 better error when password is not set, #2685 2022-02-24 23:22:20 +01:00
zadam
1690a55f7d Update README.ru.md 2022-02-24 20:38:29 +01:00
zadam
dd29fc26e3 Update README-ZH_CN.md 2022-02-24 20:38:01 +01:00
zadam
67b5921d6c Update README.md 2022-02-24 20:37:12 +01:00
zadam
1b7bcc5cc1 Update README.md 2022-02-22 23:18:10 +01:00
zadam
ea56bb772a logging improvements 2022-02-20 12:33:50 +01:00
zadam
9f33791922 fix uploading binary data through ETAPI, closes #2667 2022-02-18 22:34:46 +01:00
zadam
d940590add raise line-height in share CSS to 1.5, fixes #2671 2022-02-18 22:00:58 +01:00
zadam
a009b4cb6d remove debug logging 2022-02-16 22:31:02 +01:00
zadam
781be527ce Merge remote-tracking branch 'origin/master' 2022-02-16 22:16:25 +01:00
zadam
f7e5d8f62d fix displaying hidden notes in the note's children list #2664 2022-02-16 22:16:15 +01:00
Nriver
d6c0fc734f Fix data validation type for prefix (#2660)
* fix param validation

* fix data validation type for `prefix`
2022-02-15 22:49:49 +01:00
zadam
db79b5ff53 fixed blurred selection background color, closes #2652 2022-02-14 22:59:03 +01:00
zadam
18d439dd44 clipper endpoint should also scan and download images as a fallback, #2621 2022-02-14 20:50:50 +01:00
zadam
d2d2a6c086 ckeditor 32 2022-02-12 22:53:55 +01:00
zadam
5260689b8e include "dump-db" into released artifacts 2022-02-12 22:51:28 +01:00
zadam
78a2863b78 Merge remote-tracking branch 'origin/master' 2022-02-12 22:20:22 +01:00
zadam
5481375347 DB dump tool feature complete 2022-02-12 22:20:15 +01:00
zadam
4da2d2f516 Create CODE_OF_CONDUCT 2022-02-12 13:17:49 +01:00
zadam
23de8e881d make it clear that Dockerfile needs to be run through a script 2022-02-11 22:05:08 +01:00
zadam
59e8720866 fix importing unknown image types such as .DWG, closes #2628 2022-02-11 22:01:45 +01:00
zadam
67cce5f817 Merge remote-tracking branch 'origin/stable' 2022-02-10 23:40:18 +01:00
zadam
9924727729 Merge remote-tracking branch 'origin/master' 2022-02-10 23:40:10 +01:00
zadam
6c9fc364a3 added "DB dump" tool, WIP 2022-02-10 23:37:25 +01:00
Nriver
40598d2663 fix param validation (#2624)
(cherry picked from commit 1aeb674733)
2022-02-10 19:33:11 +01:00
Nriver
1aeb674733 fix param validation (#2624) 2022-02-10 19:28:42 +01:00
zadam
832cac106e release 0.50.2 2022-02-09 22:52:36 +01:00
zadam
23daaa2387 fix exporting huge text notes (export would get stuck on HTML pretty printing) 2022-02-09 22:39:37 +01:00
zadam
d6016f9b81 introduced mutex to avoid conflicts during tab closing 2022-02-09 21:21:17 +01:00
zadam
1dfde76b95 fix updating becca after undeleting notes 2022-02-08 23:38:54 +01:00
zadam
83f8fac088 fixed background color of input label in CKEditor search & replace, #2254 2022-02-07 23:01:14 +01:00
zadam
0ca9bff61b fix multiple UI bugs, closes #2616 2022-02-07 22:50:28 +01:00
zadam
df91192b97 Merge remote-tracking branch 'origin/master' 2022-02-06 14:18:18 +01:00
zadam
97fd550402 add light anonymization option to the existing full anonymization 2022-02-06 13:49:33 +01:00
zadam
eb579de199 Update README.md 2022-02-05 17:21:41 +01:00
zadam
5f2984aa57 Update README.md 2022-02-05 17:20:41 +01:00
zadam
98a79f6475 Update FUNDING.yml 2022-02-05 17:17:07 +01:00
zadam
c09da2b7eb Update FUNDING.yml 2022-02-05 17:12:37 +01:00
zadam
600f74576d added #sentFromSender label, closes #445 2022-02-05 16:23:30 +01:00
zadam
a21c49cba7 added "hideRelations" label to relation map 2022-02-05 13:02:19 +01:00
zadam
91e3dd022a added "move note" search action 2022-02-05 12:06:23 +01:00
zadam
478eca47f4 search string is now a textarea instead of input 2022-02-05 11:27:48 +01:00
zadam
1c4358086d release 0.50.1 2022-02-02 21:38:21 +01:00
zadam
0917fc8be1 log messages now contain script context if available 2022-02-01 22:25:38 +01:00
zadam
6833959f3b added regular DB optimization 2022-02-01 21:36:52 +01:00
zadam
398376108d added integrity check button into advanced options. 2022-02-01 21:22:43 +01:00
zadam
61aa029582 Merge remote-tracking branch 'origin/stable'
# Conflicts:
#	package-lock.json
2022-02-01 21:04:17 +01:00
zadam
46eaa63625 focus promoted/owned attributes input after activating the ribbon tab, closes #2606 2022-02-01 20:24:58 +01:00
zadam
1b54596c5e tweaks to handling of branch removal 2022-01-31 22:09:39 +01:00
zadam
2feb778d8d Merge remote-tracking branch 'origin/stable' 2022-01-31 21:25:37 +01:00
zadam
2075e89239 improved logging 2022-01-31 21:25:18 +01:00
zadam
be44431fde fix setting becca's dateModified after marking as deleted 2022-01-30 13:18:22 +01:00
zadam
99cc4078c6 fix setting becca's utcDateModified after marking as deleted 2022-01-30 13:17:40 +01:00
zadam
b8b6b38a20 added links to sharing/ETAPI to README 2022-01-22 12:54:14 +01:00
zadam
efd8556129 release 0.50.0-beta 2022-01-19 20:24:54 +01:00
zadam
b10a76f150 release 0.50.0-beta 2022-01-19 20:14:40 +01:00
U-Bren
780b520506 Add powershell equivalents to existing batch scripts (#2561)
* Add powershell equivalents to existing windows scripts

Each .bat will try to invoke its .ps1 version if powershell is available, or else will fallback on the behavior
previous to this commit.
Should help fix bugs with accents and non-ASCII characters (issue #2327).

* Add powershell equivalents to existing windows scripts

Each .bat will try to invoke its .ps1 version if powershell is available, or else will fallback on the behavior
previous to this commit.
Should help fix bugs with accents and non-ASCII characters (issue #2327).

Co-authored-by: zadam <zadam.apps@gmail.com>
2022-01-17 23:51:25 +01:00
zadam
3055ed86ec Merge remote-tracking branch 'origin/stable' 2022-01-17 23:48:44 +01:00
zadam
4fc3305080 Merge branch 'generateanonymize-script'
# Conflicts:
#	package-lock.json
#	src/services/builtin_attributes.js
2022-01-17 23:48:30 +01:00
zadam
d1b39ee8fa generate anonymization script into a file 2022-01-17 23:47:26 +01:00
zadam
52b118df7f add #shareRoot label to define an "index" note, closes #2567 2022-01-17 23:13:56 +01:00
zadam
a97a7cdcdd fix note title refreshing with old state when user quickly skips to content and starts editing, closes #2566 2022-01-17 20:54:57 +01:00
zadam
1aff3db81f Merge remote-tracking branch 'origin/master' 2022-01-16 22:17:10 +01:00
zadam
fc89e098b1 Merge remote-tracking branch 'origin/stable' 2022-01-16 22:16:49 +01:00
Mirwaisse Djanbaz
64172a7f6b Get file extension before clipping file name (#2562)
I think this fixes https://github.com/zadam/trilium/issues/2131
2022-01-15 22:35:54 +01:00
zadam
66a6c76552 generate anonymization script WIP 2022-01-15 22:09:51 +01:00
zadam
c8884f1917 don't export hidden subtree to ZIP, fixes #2555 2022-01-15 09:04:44 +01:00
zadam
4933b901f6 Merge remote-tracking branch 'origin/stable' 2022-01-14 21:53:00 +01:00
zadam
b679f4218d release 0.49.5 2022-01-14 21:40:37 +01:00
zadam
77c6c4617b changed shared_info class names to avoid conflict with adblocker, closes #2546 2022-01-14 21:23:10 +01:00
zadam
8240a208dd fixed wrong cherry pick 2022-01-14 21:05:39 +01:00
zadam
1c34f73f61 print should include promoted attributes, #2550
(cherry picked from commit a5444fd6ad)
2022-01-14 21:03:21 +01:00
zadam
a5444fd6ad print should include promoted attributes, #2550 2022-01-14 21:02:11 +01:00
zadam
6fbd5a77e4 forgotten note_types 2022-01-14 19:53:59 +01:00
zadam
c102089731 migration workaround for corrupted index in entity_changes table, closes #2534 2022-01-14 19:44:23 +01:00
zadam
742ec44f55 Merge remote-tracking branch 'origin/stable' 2022-01-13 21:53:57 +01:00
zadam
7495777d97 make getAncestors safe in respect to saved search 2022-01-13 21:28:51 +01:00
zadam
da4f26d7ce Merge remote-tracking branch 'origin/stable' 2022-01-13 20:32:37 +01:00
zadam
fa2ffd7574 ignore "Sync not configured" message when toggling shared state 2022-01-13 20:22:50 +01:00
zadam
d4325db207 revised demo document 2022-01-13 20:02:07 +01:00
zadam
48d93cb3da added custom resource handler to the demo document 2022-01-12 21:24:59 +01:00
zadam
2248d98cc7 using 201 for created entities in etapi 2022-01-12 21:14:12 +01:00
zadam
ce046b2e20 small dark theme tweaks 2022-01-12 20:13:11 +01:00
zadam
4f4cbccf08 Merge remote-tracking branch 'origin/stable'
# Conflicts:
#	package-lock.json
2022-01-12 19:54:11 +01:00
zadam
412c745e53 prevent infinite recursion when checking shared status 2022-01-12 19:46:40 +01:00
zadam
28df5d4aa2 etapi improvements and more tests 2022-01-12 19:32:23 +01:00
zadam
42e85aefdc sync fixes 2022-01-10 21:24:07 +01:00
zadam
91e78998d1 unified Jump-To and quick search behavior with regards to hoisting and opening in a new tab 2022-01-10 20:44:59 +01:00
zadam
6f406f9aa2 search immediately when user chooses "full search" from Jump To dialog, #2483 2022-01-10 20:37:33 +01:00
zadam
86fa80f3eb updated API docs 2022-01-10 19:55:09 +01:00
zadam
7119d08022 updated API docs 2022-01-10 19:54:38 +01:00
zadam
916ff5f2ee Merge remote-tracking branch 'origin/next50' 2022-01-10 19:53:36 +01:00
zadam
913d2c06f3 start sync immediately after sharing/unsharing, fixes #2539 2022-01-10 17:15:21 +01:00
zadam
cbb5b31f72 Merge remote-tracking branch 'origin/master' into next50 2022-01-10 17:09:40 +01:00
zadam
91dec23d5e ETAPI auth, spec improvements etc. 2022-01-10 17:09:20 +01:00
zadam
d04d356429 release 0.49.4 2022-01-09 22:32:13 +01:00
zadam
be59f248e8 fix sync skipping some changes and then forcing sector queuing 2022-01-09 22:22:13 +01:00
zadam
2d2641dbd7 sync fixes 2022-01-09 21:25:15 +01:00
zadam
96f4230bc1 Merge branch 'master' into next50
# Conflicts:
#	src/public/app/widgets/containers/root_container.js
#	src/services/app_info.js
2022-01-09 20:18:30 +01:00
zadam
1995b54770 fix migration to preserve IDs in entity_changes 2022-01-09 20:17:27 +01:00
zadam
7159b13c9d add memberId to entity_changes to avoid having to resend all changes second time 2022-01-09 20:16:39 +01:00
zadam
f2732bcab7 fix display of children notes in an empty note, closes #2536 2022-01-09 09:12:21 +01:00
zadam
0e9d76890b use #shareAlias in parent link, closes #2535 2022-01-09 09:04:21 +01:00
zadam
9df521109b fix migration to handle duplicates in entity_changes, #2534 2022-01-08 22:43:34 +01:00
zadam
75b65c396e fix migration to handle duplicates in entity_changes, #2534 2022-01-08 22:31:52 +01:00
zadam
d4d48f3834 use [protected] for protected notes in the export 2022-01-08 21:50:16 +01:00
zadam
b90ba3d1a9 create note from API/import etc. should allow empty title, fixes #2530 2022-01-08 19:33:56 +01:00
zadam
c448d34a38 ETAPI WIP 2022-01-08 19:30:46 +01:00
zadam
c33bc7e12c ETAPI search endpoint 2022-01-08 13:18:12 +01:00
zadam
c5366abf75 ETAPI put content 2022-01-08 12:01:54 +01:00
zadam
2532ea525d ETAPI openapi spec WIP 2022-01-07 23:06:04 +01:00
zadam
d74371c9f5 added missing placeholder.js 2022-01-07 20:30:14 +01:00
zadam
9ee1c9f3da ETAPI delete/patch, refactoring 2022-01-07 19:33:59 +01:00
zadam
82ba0d5b1d release 0.49.3 2022-01-06 23:09:17 +01:00
zadam
590eea1183 API docs update 2022-01-05 20:31:21 +01:00
zadam
e6f3cc7988 fix migration from 0.47, closes #2514 2022-01-05 20:21:24 +01:00
zadam
7a650c605c fix typo in the log, closes #2513 2022-01-05 19:48:18 +01:00
zadam
dfa7c64b1f fix setting note/mime on root container during note change 2022-01-05 19:28:36 +01:00
zadam
82b2871a08 added date services to ETAPI 2022-01-05 19:25:17 +01:00
zadam
e3114e0602 etapi fixes + basic test 2022-01-04 23:00:59 +01:00
zadam
e8acf3f9f3 Merge branch 'master' into next50
# Conflicts:
#	package-lock.json
2022-01-04 22:11:00 +01:00
zadam
2b10023055 electron update 2022-01-04 22:10:35 +01:00
zadam
e25a904a84 ETAPI - post services WIP 2022-01-03 23:13:51 +01:00
zadam
dcba6ad70d ETAPI (external API) initial read only access 2022-01-03 22:40:01 +01:00
zadam
ffdd917717 Merge branch 'master' into next50 2022-01-03 20:10:48 +01:00
Matt
168645cce9 Style shared note children (#2505) 2022-01-03 19:53:42 +01:00
zadam
f4c81ecefb fix setting window title when renaming notes 2022-01-03 19:52:24 +01:00
zadam
5a85fe92aa release 0.49.2-beta 2022-01-02 22:43:30 +01:00
zadam
feffd57f24 added support for #pageUrl into shared notes 2022-01-02 22:43:00 +01:00
zadam
faf81ae056 fix closing new window, closes #2502 2022-01-02 21:35:02 +01:00
zadam
003fec4b11 fix interrupted initial sync 2022-01-02 21:20:56 +01:00
zadam
5ecb603e86 sharing fixes 2022-01-01 22:32:38 +01:00
zadam
1fed71a92e shaca now loads attributes, added favicon and shareJs 2022-01-01 13:23:09 +01:00
zadam
dad82ea4e8 Merge remote-tracking branch 'origin/stable'
# Conflicts:
#	package.json
#	src/services/build.js
2021-12-31 20:16:31 +01:00
zadam
a38ccde8bc protect tree will check if password is set and send user to options if not 2021-12-30 23:55:36 +01:00
zadam
8120f1bf25 resetting/setting password from options 2021-12-30 22:54:08 +01:00
zadam
067251861d Merge remote-tracking branch 'origin/stable' into stable 2021-12-30 21:06:52 +01:00
zadam
6bc8773d5f handle OPML with empty content, fixes #2495 2021-12-30 21:06:45 +01:00
zadam
f92016f9ec set password from web trilium 2021-12-29 23:37:12 +01:00
zadam
4e31af8c84 set password WIP 2021-12-29 23:19:05 +01:00
zadam
7e48d214ca removed username/password from setup 2021-12-28 22:59:38 +01:00
Matt
a910034c96 Fix math rendering (#2487) 2021-12-28 20:12:02 +01:00
zadam
257cc66f62 ignore missing image notes when downloading/replacing images, #2486 2021-12-28 20:08:17 +01:00
zadam
00f24bdb63 share improvements 2021-12-28 13:57:37 +01:00
zadam
fada3fe623 share improvements 2021-12-28 13:40:51 +01:00
zadam
d97e454463 allow cloning into notes, not just branches, fixes #2484 2021-12-27 23:39:46 +01:00
zadam
3128a7d62f various tweaks to shared notes 2021-12-27 20:48:14 +01:00
zadam
b8fe9a41db fix consistency checks 2021-12-27 13:37:51 +01:00
Matt
8366a94bde Various share page improvements (#2471)
* Add clientside mermaid chart rendering

Merry Christmas :)

* Add katex math rendering client-side

* Update page.ejs

* Revert (wrong branch)

* Add children nodes to all notes under hr

* Add parent note button

* Add note type in child note info

* Fix parent, relative paths

* Add code rendering, fix space in HTML class
2021-12-27 13:27:00 +01:00
zadam
f56123b864 fix missing branch in case of out-of-order clones, closes #2464 2021-12-26 23:31:54 +01:00
DHMike57
ae951bfe23 Add option for vim keymap in codemirror (#2475) 2021-12-26 13:24:18 +01:00
zadam
ad8d35efe9 release 0.49.1-beta 2021-12-24 23:05:10 +01:00
zadam
0217b1c85d share pdf view is responsive 2021-12-24 22:46:55 +01:00
zadam
c0aa14f586 Merge remote-tracking branch 'origin/master' 2021-12-24 22:43:25 +01:00
zadam
b54cfab4ff share root itself is not shared, fixes #2468 2021-12-24 22:43:12 +01:00
Matt
a08985e7a6 Display PDF in shared notes (#2466)
* Add PDF rendering

* Cleanup
2021-12-24 22:36:31 +01:00
zadam
a789025025 don't show share switch for root and share root notes, #2465 2021-12-24 22:34:15 +01:00
zadam
3f307b117e fix webpack build 2021-12-24 22:18:05 +01:00
zadam
a232035d47 fix backlink count 2021-12-24 21:01:36 +01:00
zadam
9d38e9342d moved API docs button to the bottom of a code note 2021-12-24 20:40:27 +01:00
zadam
4bc4b9ade7 release 0.49.0-beta 2021-12-23 23:03:21 +01:00
zadam
f0217cae5e fix webpack build 2021-12-23 23:01:25 +01:00
zadam
da050c6369 release 0.49.0-beta 2021-12-23 22:33:49 +01:00
zadam
842c317568 cleanup 2021-12-23 21:08:43 +01:00
zadam
47845930f4 sharing improvements 2021-12-23 20:54:48 +01:00
zadam
972f2f40bf share improvements/cleanup 2021-12-23 12:54:21 +01:00
zadam
94111c464b changed symbol for shared notes 2021-12-22 16:02:36 +01:00
zadam
94e18dfb7c add symbol to shared notes in the tree 2021-12-22 15:01:54 +01:00
zadam
bc9903191e fix migration script 2021-12-22 13:14:50 +01:00
zadam
cd8c24ceae windows better-sqlite3 binary 2021-12-22 12:58:33 +01:00
zadam
f9709c9c39 added shareOmitDefaultCss label 2021-12-22 11:43:21 +01:00
zadam
c0964a4f12 added shareAlias label 2021-12-22 10:57:02 +01:00
zadam
bcef8579ce added shareCss relation and shareHiddenFromTree label 2021-12-22 09:36:38 +01:00
zadam
1180be75d1 added 404 error page 2021-12-22 09:10:38 +01:00
zadam
cfa49c7b1b feature request desc 2021-12-21 22:47:31 +01:00
zadam
8e4926ed7f cleanup of issue templates, closes #2461 2021-12-21 22:46:29 +01:00
zadam
2430dcba65 mac better_sqlite3.node 2021-12-21 22:02:25 +01:00
zadam
7c885a8b76 sharing WIP 2021-12-21 22:01:06 +01:00
zadam
402e29d6dc Merge remote-tracking branch 'origin/stable' 2021-12-21 16:13:09 +01:00
zadam
e7faebfac3 sharing WIP 2021-12-21 16:12:59 +01:00
zadam
8b56fb10fd Merge remote-tracking branch 'origin/stable'
# Conflicts:
#	package-lock.json
2021-12-20 22:24:50 +01:00
zadam
3860028a9e sharing WIP 2021-12-20 17:30:47 +01:00
zadam
16d97b95af optimized custom script/widget loading 2021-12-19 22:08:52 +01:00
zadam
20465a4f71 allow setting image labels in sender API 2021-12-19 21:56:19 +01:00
zadam
2ff6e50af4 Merge remote-tracking branch 'origin/stable'
# Conflicts:
#	src/public/app/dialogs/options/other.js
2021-12-19 10:54:30 +01:00
zadam
e0378c5064 optimized #keyboardShortcuts retrieval 2021-12-19 10:50:38 +01:00
zadam
657496ea37 Merge remote-tracking branch 'origin/master' 2021-12-14 21:55:00 +01:00
zadam
034aaa7209 Merge remote-tracking branch 'origin/stable'
# Conflicts:
#	src/public/app/dialogs/options/other.js
2021-12-14 21:54:38 +01:00
Lake
4ceba8cc6e Correct "Options change have been saved." (#2436) 2021-12-12 21:08:54 +01:00
zadam
97f7fe7b18 set note type/mime in PUT body to avoid http proxy slash reencoding, fixes #2419 2021-12-08 22:36:09 +01:00
zadam
ab550a1e8d share functionality WIP 2021-12-07 23:03:49 +01:00
zadam
08e8047d8a share functionality WIP 2021-12-06 22:53:17 +01:00
zadam
67da877135 Merge remote-tracking branch 'origin/stable' 2021-12-06 20:57:32 +01:00
zadam
2d339dec6b share functionality WIP 2021-12-05 23:10:35 +01:00
zadam
b78ab1ee02 boxicons 2.1.1 2021-12-05 21:50:02 +01:00
Myzel394
2f5f116345 Improve tabs background coloring (#2395)
* improved tabs background coloring

* improvements

* reverted changes

* color improvements

* added light theme
2021-12-05 13:07:53 +01:00
zadam
64f1671566 Merge remote-tracking branch 'origin/stable'
# Conflicts:
#	package.json
2021-12-04 13:48:35 +01:00
zadam
e079359c15 copied links from tree should be reference links 2021-12-04 12:50:02 +01:00
zadam
c4ab6b4866 copy action in the tree (or ctrl+c) will also save note links to the clipboard, fixes #2401 2021-12-04 12:45:27 +01:00
zadam
630d9f2e45 backlinks improvements, #2349 2021-12-02 22:00:42 +01:00
zadam
bbceb6251a backlinks WIP, #2349 2021-12-01 23:12:54 +01:00
zadam
89f117da5b Merge remote-tracking branch 'origin/stable' 2021-11-30 21:40:55 +01:00
zadam
61f197dd81 Merge remote-tracking branch 'origin/stable' 2021-11-25 21:36:19 +01:00
zadam
1ee2abcc42 keep some types (e.g. mermaid diagrams) of notes full width 2021-11-24 21:27:55 +01:00
zadam
f4242b4096 Merge remote-tracking branch 'origin/stable'
# Conflicts:
#	src/services/app_info.js
2021-11-24 20:08:34 +01:00
zadam
d59542dd6f Merge remote-tracking branch 'origin/master' 2021-11-23 23:09:37 +01:00
zadam
211ff90ee8 add "top" label to keep notes on top, allow sorting by label, #2343 2021-11-23 23:09:29 +01:00
Myzel394
3f40a52f65 fixed settings menu (#2374) 2021-11-23 21:37:32 +01:00
zadam
df4cf80be4 fix version detection without running npm 2021-11-21 17:20:28 +01:00
zadam
bc854ee149 cleanup 2021-11-21 17:15:10 +01:00
Myzel394
b23ead8097 Fix: Highlighting searched term should ignore accents (#2364)
* fixed accent highlighting not working

* fixed

* fixes

* improvements
2021-11-21 16:27:50 +01:00
Myzel394
886fdf7cd6 Improve image compression (#2369)
* added options

* added checkbox handling to import into note

* added image compression option respecting
2021-11-21 16:27:13 +01:00
zadam
de20183a22 Merge remote-tracking branch 'origin/stable' 2021-11-21 13:45:57 +01:00
zadam
42b5437c87 fix setup new document, closes #2368 2021-11-21 13:44:52 +01:00
zadam
ae29c6bac4 global note map should respect hoisting, #2365 2021-11-21 10:40:48 +01:00
zadam
1dce96b4c1 Merge remote-tracking branch 'origin/stable' 2021-11-20 21:34:34 +01:00
jasongwq
db9e35a7e1 add quick search in mobile layout (#2360)
Co-authored-by: jasongwq <jasongwq@126.com>
2021-11-20 20:55:52 +01:00
zadam
7a383a1314 create tray only for main window, not setup window 2021-11-20 12:52:23 +01:00
zadam
5290aab781 Merge remote-tracking branch 'origin/master' 2021-11-20 12:51:13 +01:00
zadam
86c3bbe5a2 Merge remote-tracking branch 'origin/stable' 2021-11-20 12:50:58 +01:00
Myzel394
21854b4a04 fixed title (#2356) 2021-11-19 13:03:12 +01:00
zadam
83f125a79f cleanup setting of utcDateCreated in branches and options code 2021-11-18 22:39:12 +01:00
zadam
e36bc42519 added changeId into entity_changes to have cross-sync change ID 2021-11-18 22:33:08 +01:00
zadam
15ac81627c DB cleanup migration 2021-11-18 21:52:56 +01:00
zadam
57fae2c8c6 Merge remote-tracking branch 'origin/stable'
# Conflicts:
#	package-lock.json
#	package.json
2021-11-18 21:36:03 +01:00
zadam
87b76abef9 better-sqlite3 binaries 2021-11-18 21:35:23 +01:00
zadam
89322c4b03 upgrade to electron v16 and node v16 2021-11-16 22:43:08 +01:00
zadam
b7efc92099 frontend library updates 2021-11-15 22:28:56 +01:00
zadam
20a187fab9 fix exporting root note, closes #2346 2021-11-15 21:23:19 +01:00
zadam
0b001f41c0 improvements/simplification to the update check 2021-11-14 21:52:18 +01:00
zadam
242977c7a5 cleanup after update check merge 2021-11-14 13:45:37 +01:00
Myzel394
364ac331da Add update available box (#2329)
* current stand

* added update available button

* improved update available icon

* improved update available box

* adding server side version

* added backend

* fixed text

* added option handling

* added field disabling

* removed options

* fixed terminology

* removed unnecessary imports
2021-11-14 13:42:50 +01:00
Myzel394
fcc0a80f4e Add tray (#2325)
* copied tray from old thread

* added visibility changer to tray
2021-11-14 13:36:39 +01:00
zadam
8996f35cc0 Merge remote-tracking branch 'origin/next49' 2021-11-14 13:18:13 +01:00
zadam
980309ae2a sharing WIP 2021-10-19 22:48:38 +02:00
zadam
6a6bd4541a sharing WIP 2021-10-17 14:44:59 +02:00
zadam
a14aa461ca sharing WIP 2021-10-16 22:13:34 +02:00
970 changed files with 117065 additions and 59481 deletions

7
.eslintignore Normal file
View File

@@ -0,0 +1,7 @@
node_modules
dist
bin
docs
libraries
coverage
play

211
.eslintrc.js Normal file
View File

@@ -0,0 +1,211 @@
module.exports = {
env: {
browser: true,
commonjs: true,
es2021: true,
node: true,
},
// plugins: ['prettier'], // to be activated
extends: ['eslint:recommended', 'airbnb-base', 'plugin:jsonc/recommended-with-jsonc', 'prettier'],
overrides: [
{
files: ['*.json', '*.json5', '*.jsonc'],
parser: 'jsonc-eslint-parser',
},
{
files: ['package.json'],
parser: 'jsonc-eslint-parser',
rules: {
'jsonc/sort-keys': [
'off',
{
pathPattern: '^$',
order: [
'name',
'version',
'private',
'packageManager',
'description',
'type',
'keywords',
'homepage',
'bugs',
'license',
'author',
'contributors',
'funding',
'files',
'main',
'module',
'exports',
'unpkg',
'jsdelivr',
'browser',
'bin',
'man',
'directories',
'repository',
'publishConfig',
'scripts',
'peerDependencies',
'peerDependenciesMeta',
'optionalDependencies',
'dependencies',
'devDependencies',
'engines',
'config',
'overrides',
'pnpm',
'husky',
'lint-staged',
'eslintConfig',
],
},
{
pathPattern: '^(?:dev|peer|optional|bundled)?[Dd]ependencies$',
order: { type: 'asc' },
},
],
},
},
],
globals: {
$: true,
jQuery: true,
glob: true,
log: true,
EditorWatchdog: true,
// \src\share\canvas_share.js
React: true,
appState: true,
ExcalidrawLib: true,
elements: true,
files: true,
ReactDOM: true,
// src\public\app\widgets\type_widgets\relation_map.js
jsPlumb: true,
panzoom: true,
logError: true,
// src\public\app\widgets\type_widgets\image.js
WZoom: true,
// \src\public\app\widgets\type_widgets\read_only_text.js
renderMathInElement: true,
// \src\public\app\widgets\type_widgets\editable_text.js
BalloonEditor: true,
FancytreeNode: true,
CKEditorInspector: true,
// \src\public\app\widgets\type_widgets\editable_code.js
CodeMirror: true,
// \src\public\app\services\resizer.js
Split: true,
// \src\public\app\services\content_renderer.js
mermaid: true,
// src\public\app\services\frontend_script_api.js
dayjs: true,
// \src\public\app\widgets\note_map.js
ForceGraph: true,
// \src\public\app\setup.js
ko: true,
syncInProgress: true,
// src\public\app\services\utils.js
logInfo: true,
__non_webpack_require__: true,
//
},
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
},
rules: {
// eslint:recommended
'no-unused-vars': 'off',
'linebreak-style': 'off',
'no-useless-escape': 'off',
'no-empty': 'off',
'no-constant-condition': 'off',
'getter-return': 'off',
'no-cond-assign': 'off',
'no-async-promise-executor': 'off',
'no-extra-semi': 'off',
'no-inner-declarations': 'off',
// prettier
'prettier/prettier': ['off', { endOfLine: 'auto' }],
// airbnb-base
'no-console': 'off',
'no-plusplus': 'off',
'no-param-reassign': 'off',
'global-require': 'off',
'no-use-before-define': 'off',
'no-await-in-loop': 'off',
radix: 'off',
'import/order': 'off',
'import/no-extraneous-dependencies': 'off',
'prefer-destructuring': 'off',
'no-shadow': 'off',
'no-new': 'off',
'no-restricted-syntax': 'off',
strict: 'off',
'class-methods-use-this': 'off',
'no-else-return': 'off',
'import/no-dynamic-require': 'off',
'no-underscore-dangle': 'off',
'prefer-template': 'off',
'consistent-return': 'off',
'no-continue': 'off',
'object-shorthand': 'off',
'one-var': 'off',
'prefer-const': 'off',
'spaced-comment': 'off',
'no-loop-func': 'off',
'arrow-body-style': 'off',
'guard-for-in': 'off',
'no-return-assign': 'off',
'dot-notation': 'off',
'func-names': 'off',
'import/no-useless-path-segments': 'off',
'default-param-last': 'off',
'prefer-arrow-callback': 'off',
'no-unneeded-ternary': 'off',
'no-return-await': 'off',
'import/extensions': 'off',
'no-var': 'off',
'import/newline-after-import': 'off',
'no-restricted-globals': 'off',
'operator-assignment': 'off',
'no-eval': 'off',
'max-classes-per-file': 'off',
'vars-on-top': 'off',
'no-bitwise': 'off',
'no-lonely-if': 'off',
'no-multi-assign': 'off',
'no-promise-executor-return': 'off',
'no-empty-function': 'off',
'import/no-unresolved': 'off',
camelcase: 'off',
eqeqeq: 'off',
'lines-between-class-members': 'off',
'import/no-cycle': 'off',
'new-cap': 'off',
'prefer-object-spread': 'off',
'no-new-func': 'off',
'no-unused-expressions': 'off',
'lines-around-directive': 'off',
'prefer-exponentiation-operator': 'off',
'no-restricted-properties': 'off',
'prefer-rest-params': 'off',
'no-unreachable-loop': 'off',
'no-alert': 'off',
'no-useless-return': 'off',
'no-nested-ternary': 'off',
'prefer-regex-literals': 'off',
'import/no-named-as-default-member': 'off',
yoda: 'off',
'no-script-url': 'off',
'no-prototype-builtins':'off'
},
};

View File

@@ -3,18 +3,11 @@ description: Report a bug
title: "(Bug report) "
labels: "Type: Bug"
body:
- type: checkboxes
attributes:
label: Preflight Checklist
description: Please ensure you've completed all of the following.
options:
- label: I have searched the [issue tracker](https://www.github.com/zadam/trilium/issues) for a bug report that matches the one I want to file, without success.
required: true
- type: input
attributes:
label: Trilium Version
description: What version of Trilium are you using?
placeholder: 0.48.0-beta
placeholder: 0.57.0-beta
validations:
required: true
- type: dropdown
@@ -30,7 +23,7 @@ body:
required: true
- type: dropdown
attributes:
label: What is your setup?
label: What is your setup?
description: https://github.com/zadam/trilium/wiki#choose-the-setup
options:
- Local (no sync)
@@ -47,17 +40,13 @@ body:
required: true
- type: textarea
attributes:
label: Expected Behavior
description: A clear and concise description of what you expected to happen.
label: Description
description: A clear and concise description of the bug and any additional information.
validations:
required: true
- type: textarea
attributes:
label: Actual Behavior
description: A clear description of what actually happens.
label: Error logs
description: Please provide error logs, see [wiki page](https://github.com/zadam/trilium/wiki/Error-logs) for instructions on how to submit them.
validations:
required: true
- type: textarea
attributes:
label: Additional Information
description: If your problem needs further explanation, or if the issue you're seeing cannot be reproduced in a gist, please add more information here.
required: false

View File

@@ -1,15 +1,8 @@
name: Feature Request
description: Report a bug
description: Ask for a new feature to be added
title: "(Feature request) "
labels: "Type: Enhancement"
body:
- type: checkboxes
attributes:
label: Preflight Checklist
description: Please ensure you've completed all of the following.
options:
- label: I have searched the [issue tracker](https://www.github.com/zadam/trilium/issues) for a feature request that matches the one I want to file, without success.
required: true
- type: textarea
attributes:
label: Describe feature

6
.gitignore vendored
View File

@@ -8,4 +8,8 @@ yarn-error.log
config.ini
cert.key
cert.crt
server-package.json
server-package.json
.idea/httpRequests/
data/
tmp/
.eslintcache

View File

@@ -2,7 +2,7 @@ image:
file: .gitpod.dockerfile
tasks:
- before: nvm install 14.18.1 && nvm use 14.18.1
- before: nvm install 18.16.1 && nvm use 18.16.1
init: npm install
command: npm run start-server

1
.husky/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
_

4
.husky/pre-commit Normal file
View File

@@ -0,0 +1,4 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
#npx lint-staged

4
.idea/dataSources.xml generated
View File

@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
<data-source source="LOCAL" name="SQLite - document.db" uuid="30cef30d-e704-484d-a4ca-5d3bfc2ece63">
<data-source source="LOCAL" name="document.db" uuid="2a4ac1e6-b828-4a2a-8e4a-3f59f10aff26">
<driver-ref>sqlite.xerial</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>org.sqlite.JDBC</jdbc-driver>
<jdbc-url>jdbc:sqlite:$PROJECT_DIR$/../trilium-data/document.db</jdbc-url>
<jdbc-url>jdbc:sqlite:$PROJECT_DIR$/data/document.db</jdbc-url>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
</component>

15
.idea/git_toolbox_prj.xml generated Normal file
View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GitToolBoxProjectSettings">
<option name="commitMessageIssueKeyValidationOverride">
<BoolValueOverride>
<option name="enabled" value="true" />
</BoolValueOverride>
</option>
<option name="commitMessageValidationEnabledOverride">
<BoolValueOverride>
<option name="enabled" value="true" />
</BoolValueOverride>
</option>
</component>
</project>

View File

@@ -1,7 +1,7 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="JSUnfilteredForInLoop" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="SpellCheckingInspection" enabled="false" level="TYPO" enabled_by_default="false">
<option name="processCode" value="true" />
<option name="processLiterals" value="true" />

6
.idea/jsLinters/eslint.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="EslintConfiguration">
<option name="fix-on-save" value="true" />
</component>
</project>

3
.idea/misc.xml generated
View File

@@ -1,9 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaScriptSettings">
<option name="languageLevel" value="ES6" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_16" project-jdk-name="openjdk-16" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_16" default="true" project-jdk-name="openjdk-16" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

13
.prettierrc.js Normal file
View File

@@ -0,0 +1,13 @@
//https://prettier.io/docs/en/options.html
module.exports = {
semi: true,
trailingComma: 'none',
singleQuote: true,
printWidth: 100,
tabWidth: 4,
useTabs: false,
quoteProps: "as-needed",
bracketSpacing: true,
arrowParens: "avoid"
// htmlWhitespaceSensitivity: 'ignore',
};

6
.vscode/extensions.json vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"recommendations": [
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
]
}

20
.vscode/launch.json vendored
View File

@@ -1,18 +1,24 @@
{
"version": "0.2.0",
"configurations": [
// nodemon should be installed globally, use npm i -g nodemon
{
"type": "node",
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen",
"name": "nodemon start-server",
"program": "${workspaceFolder}/src/www",
"request": "launch",
"name": "start-server",
"restart": true,
"runtimeExecutable": "nodemon",
"env": {
"TRILIUM_ENV": "dev",
"TRILIUM_DATA_DIR": "./data"
},
"skipFiles": [
"<node_internals>/**"
],
"env": {
"TRILIUM_ENV": "dev"
},
"type": "node",
"outputCapture": "std",
"program": "${workspaceFolder}/src/www"
}
},
]
}

33
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,33 @@
{
"[javascript]": {
"editor.defaultFormatter": "dbaeumer.vscode-eslint"
},
"[json]": {
"editor.defaultFormatter": "dbaeumer.vscode-eslint"
},
"editor.formatOnSave": true,
"eslint.format.enable": true,
"eslint.probe": [
"javascript",
"javascriptreact",
"typescript",
"typescriptreact",
"html",
"vue",
"markdown",
"json",
"jsonc"
],
"eslint.validate": [
"javascript",
"javascriptreact",
"typescript",
"typescriptreact",
"html",
"vue",
"markdown",
"json",
"jsonc"
],
"files.eol": "\n",
}

1
CODE_OF_CONDUCT Normal file
View File

@@ -0,0 +1 @@
Please treat each other with respect and understanding.

View File

@@ -1,8 +1,12 @@
FROM node:14.18.1-alpine
# !!! Don't try to build this Dockerfile directly, run it through bin/build-docker.sh script !!!
FROM node:18.16.1-alpine
# Create app directory
WORKDIR /usr/src/app
# Bundle app source
COPY . .
COPY server-package.json package.json
# Install app dependencies
@@ -17,13 +21,22 @@ RUN set -x \
nasm \
libpng-dev \
python3 \
&& npm install --production \
&& apk del .build-dependencies
&& npm install \
&& apk del .build-dependencies \
&& npm run webpack \
&& npm prune --omit=dev \
&& cp src/public/app/share.js src/public/app-dist/. \
&& cp -r src/public/app/doc_notes src/public/app-dist/. \
&& rm -rf src/public/app
# Bundle app source
COPY . .
# Some setup tools need to be kept
RUN apk add --no-cache su-exec shadow
USER node
# Add application user and setup proper volume permissions
RUN adduser -s /bin/false node; exit 0
# Start the application
EXPOSE 8080
CMD [ "node", "./src/www" ]
CMD [ "./start-docker.sh" ]
HEALTHCHECK --start-period=10s CMD exec su-exec node node docker_healthcheck.js

View File

@@ -1,45 +1,57 @@
# Trilium笔记
# Trilium Notes
[English](https://github.com/zadam/trilium/blob/master/README.md) | [Chinese](https://github.com/zadam/trilium/blob/master/README-ZH_CN.md) | [Russian](https://github.com/zadam/trilium/blob/master/README.ru.md)
[English](https://github.com/zadam/trilium/blob/master/README.md) | [Chinese](https://github.com/zadam/trilium/blob/master/README-ZH_CN.md) | [Russian](https://github.com/zadam/trilium/blob/master/README.ru.md) | [Japanese](https://github.com/zadam/trilium/blob/master/README.ja.md)
[![Join the chat at https://gitter.im/trilium-notes/Lobby](https://badges.gitter.im/trilium-notes/Lobby.svg)](https://gitter.im/trilium-notes/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
Trilium Notes是一个层的笔记应用程序,专注于建立大型个人知识库。请参阅[屏幕截图](https://github.com/zadam/trilium/wiki/Screenshot-tour)以快速了解:
Trilium Notes 是一个层次化的笔记应用程序,专注于建立大型个人知识库。请参阅[屏幕截图](https://github.com/zadam/trilium/wiki/Screenshot-tour)以快速了解:
![](https://raw.githubusercontent.com/wiki/zadam/trilium/images/screenshot.png)
Ukraine is currently suffering from Russian aggression, please consider donating to [one of these charities](https://old.reddit.com/r/ukraine/comments/s6g5un/want_to_support_ukraine_heres_a_list_of_charities/).
<img src="https://upload.wikimedia.org/wikipedia/commons/4/49/Flag_of_Ukraine.svg" alt="drawing" width="600"/>
<img src="https://signmyrocket.com//uploads/2b2a523cd0c0e76cdbba95a89a9636b2_1676971281.jpg" alt="Trilium Notes supports Ukraine!" width="600"/>
## 特性
* 笔记可以排列成任意深的树。单个笔记可以放在树中的多个位置(请参阅[克隆](https://github.com/zadam/trilium/wiki/Cloning-notes)
* 丰富的所见即所得笔记编辑功能,包括带有markdown[自动格式化功能的](https://github.com/zadam/trilium/wiki/Text-notes#autoformat)表格,图像和[数学](https://github.com/zadam/trilium/wiki/Text-notes#math-support)
* 丰富的所见即所得笔记编辑功能,包括带有 Markdown [自动格式化功能的](https://github.com/zadam/trilium/wiki/Text-notes#autoformat)表格,图像和[数学](https://github.com/zadam/trilium/wiki/Text-notes#math-support)
* 支持编辑[使用源代码的笔记](https://github.com/zadam/trilium/wiki/Code-notes),包括语法高亮显示
* 笔记之间快速[导航](https://github.com/zadam/trilium/wiki/Note-navigation),全文搜索和[笔记挂起](https://github.com/zadam/trilium/wiki/Note-hoisting)
* 笔记之间快速[导航](https://github.com/zadam/trilium/wiki/Note-navigation),全文搜索和[笔记聚焦](https://github.com/zadam/trilium/wiki/Note-hoisting)
* 无缝[笔记版本控制](https://github.com/zadam/trilium/wiki/Note-revisions)
* 笔记[属性](https://github.com/zadam/trilium/wiki/Attributes)可用于笔记组织,查询和高级[脚本编写](https://github.com/zadam/trilium/wiki/Scripts)
* [同步](https://github.com/zadam/trilium/wiki/Synchronization)与自托管同步服务器
* 有一个[第三方提供的同步服务器托管服务](https://trilium.cc/paid-hosting)
* 公开地[分享](https://github.com/zadam/trilium/wiki/Sharing)(发布)笔记到互联网
* 具有按笔记粒度的强大的[笔记加密](https://github.com/zadam/trilium/wiki/Protected-notes)
* 使用自带的 Excalidraw 来绘制图表(笔记类型“画布”)
* [关系图](https://github.com/zadam/trilium/wiki/Relation-map)和[链接图](https://github.com/zadam/trilium/wiki/Link-map),用于可视化笔记及其关系
* [脚本](https://github.com/zadam/trilium/wiki/Scripts)-请参阅[高级展示](https://github.com/zadam/trilium/wiki/Advanced-showcases)
* 可用性和性能均能很好地扩展至超过10万个笔记
* 针对智能手机和平板电脑进行触摸优化的[移动前端](https://github.com/zadam/trilium/wiki/Mobile-frontend)
* [脚本](https://github.com/zadam/trilium/wiki/Scripts) - 请参阅[高级功能展示](https://github.com/zadam/trilium/wiki/Advanced-showcases)
* 在拥有超过 10 万条笔记时仍能保持良好的可用性和性能
* 针对智能手机和平板电脑进行优化的[用于移动设备的前端](https://github.com/zadam/trilium/wiki/Mobile-frontend)
* [夜间主题](https://github.com/zadam/trilium/wiki/Themes)
* [Evernote](https://github.com/zadam/trilium/wiki/Evernote-import)[Markdown导入导出](https://github.com/zadam/trilium/wiki/Markdown)
* [Web Clipper](https://github.com/zadam/trilium/wiki/Web-clipper)轻松保存Web内容
* [Evernote](https://github.com/zadam/trilium/wiki/Evernote-import)[Markdown 导入导出](https://github.com/zadam/trilium/wiki/Markdown)功能
* 使用[网页剪藏](https://github.com/zadam/trilium/wiki/Web-clipper)轻松保存互联网上的内容
## 构建
Trilium是作为桌面应用程序LinuxWindows或服务器上托管的Web应用程序Linux提供的。Mac OS桌面版本可用,但[不受支持](https://github.com/zadam/trilium/wiki/FAQ#mac-os-support)。
Trilium 可以用作桌面应用程序LinuxWindows或服务器Linux上托管的 Web 应用程序。虽然有 macOS 版本的桌面应用程序,但[不受支持](https://github.com/zadam/trilium/wiki/FAQ#mac-os-support)。
* 如果要在桌面上使用Trilium请从[最新版本](https://github.com/zadam/trilium/releases/latest)下载适用于您平台的二进制[版本](https://github.com/zadam/trilium/releases/latest),解压缩该软件包并运行`trilium`可执行文件。
* 如果要在服务器上安装Trilium遵循[此页面](https://github.com/zadam/trilium/wiki/Server-installation)。
* 当前仅支持(经过测试)最新的ChromeFirefox浏览器。
* 如果要在桌面上使用 Trilium请从[最新版本](https://github.com/zadam/trilium/releases/latest)下载适用于您平台的二进制版本,解压缩该软件包并运行`trilium`可执行文件。
* 如果要在服务器上安装 Trilium参考[此页面](https://github.com/zadam/trilium/wiki/Server-installation)。
* 当前仅支持(测试)最近发布的 ChromeFirefox 浏览器。
Trilium 也提供 Flatpak
[<img width="240" src="https://flathub.org/assets/badges/flathub-badge-en.png">](https://flathub.org/apps/details/com.github.zadam.trilium)
## 文档
[有关文档页面的完整列表请参见Wiki。](https://github.com/zadam/trilium/wiki/)
[有关文档页面的完整列表,请参见 Wiki。](https://github.com/zadam/trilium/wiki/)
[中文Wiki在这里](https://github.com/baddate/trilium/wiki/)
* [Wiki 的中文翻译版本](https://github.com/baddate/trilium/wiki/)
您还可以阅读[个人知识库模式](https://github.com/zadam/trilium/wiki/Patterns-of-personal-knowledge-base)以获取有关如何使用Trilium的灵感。
您还可以阅读[个人知识库模式](https://github.com/zadam/trilium/wiki/Patterns-of-personal-knowledge-base),以获取有关如何使用 Trilium 的灵感。
## 贡献
@@ -47,7 +59,7 @@ Trilium是作为桌面应用程序Linux和Windows或服务器上托管的W
[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/zadam/trilium)
在本地克隆并运行
者克隆本仓库到本地,并运行
```
npm install
@@ -56,7 +68,15 @@ npm run start-server
## 致谢
* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - 市上最好的所见即所得编辑器,互动性强且聆听能力强的团队
* [FancyTree](https://github.com/mar10/fancytree) - 一个非常丰富的关于树的库,强大没有对手。没有它Trilium Notes将不会如此。
* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - 市上最好的所见即所得编辑器,拥有互动性强且聆听能力强的团队
* [FancyTree](https://github.com/mar10/fancytree) - 一个非常丰富的关于树的库,强大没有对手。没有它Trilium Notes 将不会如此。
* [CodeMirror](https://github.com/codemirror/CodeMirror) - 支持大量语言的代码编辑器
* [jsPlumb](https://github.com/jsplumb/jsplumb)强大的可视化连接库。- 用于[关系图](https://github.com/zadam/trilium/wiki/Relation-map)和[链接图](https://github.com/zadam/trilium/wiki/Link-map)
* [jsPlumb](https://github.com/jsplumb/jsplumb) - 强大的可视化连接库。用于[关系图](https://github.com/zadam/trilium/wiki/Relation-map)和[链接图](https://github.com/zadam/trilium/wiki/Link-map)
## 捐赠
你可以通过 GitHub Sponsors[PayPal](https://paypal.me/za4am) 或者比特币 (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2) 来捐赠。
## 许可证
本程序是自由软件:你可以再发布本软件和/或修改本软件,只要你遵循 Free Software Foundation 发布的 GNU Affero General Public License 的第三版或者任何(由你选择)更晚的版本。

83
README.ja.md Normal file
View File

@@ -0,0 +1,83 @@
# Trilium Notes
[English](https://github.com/zadam/trilium/blob/master/README.md) | [Chinese](https://github.com/zadam/trilium/blob/master/README-ZH_CN.md) | [Russian](https://github.com/zadam/trilium/blob/master/README.ru.md) | [Japanese](https://github.com/zadam/trilium/blob/master/README.ja.md)
Trilium Notes は、大規模な個人知識ベースの構築に焦点を当てた、階層型ノートアプリケーションです。概要は[スクリーンショット](https://github.com/zadam/trilium/wiki/Screenshot-tour)をご覧ください:
<a href="https://github.com/zadam/trilium/wiki/Screenshot-tour"><img src="https://raw.githubusercontent.com/wiki/zadam/trilium/images/screenshot.png" alt="Trilium Screenshot" width="1000"></a>
ウクライナは現在、ロシアの侵略から自国を守っています。[ウクライナ軍や人道的な慈善団体への寄付](https://standforukraine.com/)をご検討ください。
<p float="left">
<img src="https://upload.wikimedia.org/wikipedia/commons/4/49/Flag_of_Ukraine.svg" alt="drawing" width="400"/>
<img src="https://signmyrocket.com//uploads/2b2a523cd0c0e76cdbba95a89a9636b2_1676971281.jpg" alt="Trilium Notes supports Ukraine!" width="570"/>
</p>
## 🎁 特徴
* ノートは、任意の深さのツリーに配置できます。単一のノートをツリー内の複数の場所に配置できます ([cloning](https://github.com/zadam/trilium/wiki/Cloning-notes) を参照)
* マークダウン[オートフォーマット](https://github.com/zadam/trilium/wiki/Text-notes#autoformat)による、表、画像、[数学](https://github.com/zadam/trilium/wiki/Text-notes#math-support)などの豊富な WYSIWYG ノート編集機能
* シンタックスハイライトを含む[ソースコード付きノート](https://github.com/zadam/trilium/wiki/Code-notes)の編集をサポート
* [ノート間のナビゲーション](https://github.com/zadam/trilium/wiki/Note-navigation)、全文検索、[ノートホイスト](https://github.com/zadam/trilium/wiki/Note-hoisting)が高速かつ簡単に行えます
* シームレスな[ノートのバージョン管理](https://github.com/zadam/trilium/wiki/Note-revisions)
* ノート[属性](https://github.com/zadam/trilium/wiki/Attributes)は、ノート整理、クエリ、高度な[スクリプト](https://github.com/zadam/trilium/wiki/Scripts)に使用できます
* 自己ホスト型同期サーバーとの[同期](https://github.com/zadam/trilium/wiki/Synchronization)
* [同期サーバーをホストするサードパーティ・サービス](https://trilium.cc/paid-hosting)があります
* 公開インターネットへのノートの[共有](https://github.com/zadam/trilium/wiki/Sharing)(公開)
* ノートごとの粒度を持つ強力な[ノート暗号化](https://github.com/zadam/trilium/wiki/Protected-notes)
* 組み込みの Excalidraw を使用した図のスケッチ (ノート タイプ"キャンバス")
* ノートとその関係を可視化するための[関係図](https://github.com/zadam/trilium/wiki/Relation-map)と[リンクマップ](https://github.com/zadam/trilium/wiki/Link-map)
* [スクリプティング](https://github.com/zadam/trilium/wiki/Scripts) - [高度なショーケース](https://github.com/zadam/trilium/wiki/Advanced-showcases)を参照
* 自動化のための [REST API](https://github.com/zadam/trilium/wiki/ETAPI)
* ユーザビリティとパフォーマンスの両方で 100 000 ノート以上に拡張可能
* スマートフォンとタブレット向けのタッチ最適化[モバイルフロントエンド](https://github.com/zadam/trilium/wiki/Mobile-frontend)
* [ナイトテーマ](https://github.com/zadam/trilium/wiki/Themes)
* [Evernote](https://github.com/zadam/trilium/wiki/Evernote-import) と [Markdown のインポートとエクスポート](https://github.com/zadam/trilium/wiki/Markdown)
* Web コンテンツを簡単に保存するための [Web クリッパー](https://github.com/zadam/trilium/wiki/Web-clipper)
サードパーティのテーマ、スクリプト、プラグインなどは、 [awesome-trilium](https://github.com/Nriver/awesome-trilium) をチェックしてください。
## 🏗 ビルド
Trilium は、デスクトップアプリケーションLinux、Windowsまたはサーバー上でホストされるウェブアプリケーションLinuxとして提供されます。 Mac OS のデスクトップビルドも利用可能ですが、 [unsupported](https://github.com/zadam/trilium/wiki/FAQ#mac-os-support) となっています。
* デスクトップで Trilium を使用したい場合は、 [latest release](https://github.com/zadam/trilium/releases/latest) からお使いのプラットフォームのバイナリリリースをダウンロードし、パッケージを解凍して ``trilium`` の実行ファイルを実行してください。
* サーバーに Trilium をインストールする場合は、[このページ](https://github.com/zadam/trilium/wiki/Server-installation)に従ってください。
* 現在、対応(動作確認)しているブラウザは、最近の Chrome と Firefox のみです。
Trilium は Flatpak としても提供されます:
[<img width="240" src="https://flathub.org/assets/badges/flathub-badge-en.png">](https://flathub.org/apps/details/com.github.zadam.trilium)
## 📝 ドキュメント
[ドキュメントページの全リストはwikiをご覧ください。](https://github.com/zadam/trilium/wiki/)
また、[個人的な知識基盤のパターン](https://github.com/zadam/trilium/wiki/Patterns-of-personal-knowledge-base)を読むと、 Trilium の使い方のヒントを得ることができます。
## 💻 コントリビュート
ブラウザベースの開発環境を使用
[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/zadam/trilium)
または、ローカルにクローンして実行
```
npm install
npm run start-server
```
## 📢 シャウトアウト
* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - 市場で最高の WYSIWYG エディター、非常にインタラクティブで聞き上手なチーム
* [FancyTree](https://github.com/mar10/fancytree) - 真の競争相手がいない、非常に機能豊富なツリーライブラリです。 Trilium Notes は、これなしでは成り立たないでしょう。
* [CodeMirror](https://github.com/codemirror/CodeMirror) - 膨大な数の言語をサポートするコードエディタ
* [jsPlumb](https://github.com/jsplumb/jsplumb) - 競合のないビジュアルコネクティビティライブラリです。[関係図](https://github.com/zadam/trilium/wiki/Relation-map)、[リンク図](https://github.com/zadam/trilium/wiki/Link-map)で使用。
## 🤝 サポート
GitHub スポンサー、[PayPal](https://paypal.me/za4am)もしくは Bitcoin (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2) にて Trilium をサポートすることができます。
## 🔑 ライセンス
このプログラムはフリーソフトウェアです:フリーソフトウェア財団が発行した GNU Affero General Public License のバージョン3、またはそれ以降のバージョンのいずれかに従って、再配布および/または改変することができます。

View File

@@ -1,13 +1,19 @@
# Trilium Notes
[English](https://github.com/zadam/trilium/blob/master/README.md) | [Chinese](https://github.com/zadam/trilium/blob/master/README-ZH_CN.md) | [Russian](https://github.com/zadam/trilium/blob/master/README.ru.md)
[![Join the chat at https://gitter.im/trilium-notes/Lobby](https://badges.gitter.im/trilium-notes/Lobby.svg)](https://gitter.im/trilium-notes/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [English](https://github.com/zadam/trilium/blob/master/README.md) | [Chinese](https://github.com/zadam/trilium/blob/master/README-ZH_CN.md) | [Russian](https://github.com/zadam/trilium/blob/master/README.ru.md) | [Japanese](https://github.com/zadam/trilium/blob/master/README.ja.md)
[![Join the chat at https://gitter.im/trilium-notes/Lobby](https://badges.gitter.im/trilium-notes/Lobby.svg)](https://gitter.im/trilium-notes/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
Trilium Notes is a hierarchical note taking application with focus on building large personal knowledge bases. See [screenshots](https://github.com/zadam/trilium/wiki/Screenshot-tour) for quick overview:
![](https://raw.githubusercontent.com/wiki/zadam/trilium/images/screenshot.png)
<a href="https://github.com/zadam/trilium/wiki/Screenshot-tour"><img src="https://raw.githubusercontent.com/wiki/zadam/trilium/images/screenshot.png" alt="Trilium Screenshot" width="1000"></a>
## Features
Ukraine is currently defending itself from Russian aggression, please consider [donating to Ukrainian Army or humanitarian charities](https://standforukraine.com/).
<p float="left">
<img src="https://upload.wikimedia.org/wikipedia/commons/4/49/Flag_of_Ukraine.svg" alt="drawing" width="400"/>
<img src="https://signmyrocket.com//uploads/2b2a523cd0c0e76cdbba95a89a9636b2_1676971281.jpg" alt="Trilium Notes supports Ukraine!" width="570"/>
</p>
## 🎁 Features
* Notes can be arranged into arbitrarily deep tree. Single note can be placed into multiple places in the tree (see [cloning](https://github.com/zadam/trilium/wiki/Cloning-notes))
* Rich WYSIWYG note editing including e.g. tables, images and [math](https://github.com/zadam/trilium/wiki/Text-notes#math-support) with markdown [autoformat](https://github.com/zadam/trilium/wiki/Text-notes#autoformat)
@@ -16,16 +22,22 @@ Trilium Notes is a hierarchical note taking application with focus on building l
* Seamless [note versioning](https://github.com/zadam/trilium/wiki/Note-revisions)
* Note [attributes](https://github.com/zadam/trilium/wiki/Attributes) can be used for note organization, querying and advanced [scripting](https://github.com/zadam/trilium/wiki/Scripts)
* [Synchronization](https://github.com/zadam/trilium/wiki/Synchronization) with self-hosted sync server
* there's a [3rd party service for hosting synchronisation server](https://trilium.cc/paid-hosting)
* [Sharing](https://github.com/zadam/trilium/wiki/Sharing) (publishing) notes to public internet
* Strong [note encryption](https://github.com/zadam/trilium/wiki/Protected-notes) with per-note granularity
* Sketching diagrams with built-in Excalidraw (note type "canvas")
* [Relation maps](https://github.com/zadam/trilium/wiki/Relation-map) and [link maps](https://github.com/zadam/trilium/wiki/Link-map) for visualizing notes and their relations
* [Scripting](https://github.com/zadam/trilium/wiki/Scripts) - see [Advanced showcases](https://github.com/zadam/trilium/wiki/Advanced-showcases)
* [REST API](https://github.com/zadam/trilium/wiki/ETAPI) for automation
* Scales well in both usability and performance upwards of 100 000 notes
* Touch optimized [mobile frontend](https://github.com/zadam/trilium/wiki/Mobile-frontend) for smartphones and tablets
* [Night theme](https://github.com/zadam/trilium/wiki/Themes)
* [Evernote](https://github.com/zadam/trilium/wiki/Evernote-import) and [Markdown import & export](https://github.com/zadam/trilium/wiki/Markdown)
* [Web Clipper](https://github.com/zadam/trilium/wiki/Web-clipper) for easy saving of web content
## Builds
Check out [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party themes, scripts, plugins and more.
## 🏗 Builds
Trilium is provided as either desktop application (Linux and Windows) or web application hosted on your server (Linux). Mac OS desktop build is available, but it is [unsupported](https://github.com/zadam/trilium/wiki/FAQ#mac-os-support).
@@ -33,13 +45,17 @@ Trilium is provided as either desktop application (Linux and Windows) or web app
* If you want to install Trilium on server, follow [this page](https://github.com/zadam/trilium/wiki/Server-installation).
* Currently only recent Chrome and Firefox are supported (tested) browsers.
## Documentation
Trilium is also provided as a Flatpak:
[<img width="240" src="https://flathub.org/assets/badges/flathub-badge-en.png">](https://flathub.org/apps/details/com.github.zadam.trilium)
## 📝 Documentation
[See wiki for complete list of documentation pages.](https://github.com/zadam/trilium/wiki/)
You can also read [Patterns of personal knowledge base](https://github.com/zadam/trilium/wiki/Patterns-of-personal-knowledge-base) to get some inspiration on how you might use Trilium.
## Contribute
## 💻 Contribute
Use a browser based dev environment
@@ -51,13 +67,17 @@ npm install
npm run start-server
```
## Shoutouts
## 📢 Shoutouts
* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - best WYSIWYG editor on the market, very interactive and listening team
* [FancyTree](https://github.com/mar10/fancytree) - very feature rich tree library without real competition. Trilium Notes would not be the same without it.
* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with support for huge amount of languages
* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library without competition. Used in [relation maps](https://github.com/zadam/trilium/wiki/Relation-map) and [link maps](https://github.com/zadam/trilium/wiki/Link-map)
## License
## 🤝 Support
You can support Trilium using GitHub Sponsors, [PayPal](https://paypal.me/za4am) or Bitcoin (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2).
## 🔑 License
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

View File

@@ -1,12 +1,17 @@
# Trilium Notes
[English](https://github.com/zadam/trilium/blob/master/README.md) | [Chinese](https://github.com/zadam/trilium/blob/master/README-ZH_CN.md) | [Russian](https://github.com/zadam/trilium/blob/master/README.ru.md)
[English](https://github.com/zadam/trilium/blob/master/README.md) | [Chinese](https://github.com/zadam/trilium/blob/master/README-ZH_CN.md) | [Russian](https://github.com/zadam/trilium/blob/master/README.ru.md) | [Japanese](https://github.com/zadam/trilium/blob/master/README.ja.md)
[![Join the chat at https://gitter.im/trilium-notes/Lobby](https://badges.gitter.im/trilium-notes/Lobby.svg)](https://gitter.im/trilium-notes/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
Trilium Notes это приложение для заметок с иерархической структурой, ориентированное на создание больших персональных баз знаний. Для быстрого ознакомления посмотрите [скриншот-тур](https://github.com/zadam/trilium/wiki/Screenshot-tour):
![](https://raw.githubusercontent.com/wiki/zadam/trilium/images/screenshot.png)
Ukraine is currently suffering from Russian aggression, please consider donating to [one of these charities](https://old.reddit.com/r/ukraine/comments/s6g5un/want_to_support_ukraine_heres_a_list_of_charities/).
<img src="https://upload.wikimedia.org/wikipedia/commons/4/49/Flag_of_Ukraine.svg" alt="drawing" width="600"/>
<img src="https://signmyrocket.com//uploads/2b2a523cd0c0e76cdbba95a89a9636b2_1676971281.jpg" alt="Trilium Notes supports Ukraine!" width="600"/>
## Возможности
* Заметки можно расположить в виде дерева произвольной глубины. Отдельную заметку можно разместить в нескольких местах дерева (см. [клонирование](https://github.com/zadam/trilium/wiki/Cloning-notes))

3
TODO
View File

@@ -1,3 +0,0 @@
- new icon
- polish becca entities API
- separate private and public APIs in becca entities

View File

@@ -24,8 +24,10 @@ mv "./dist/Trilium Notes-linux-x64" $BUILD_DIR
cp images/app-icons/png/128x128.png $BUILD_DIR/icon.png
# removing software WebGL binaries because they are pretty huge and not necessary
rm -r $BUILD_DIR/swiftshader
cp bin/tpl/anonymize-database.sql $BUILD_DIR/
cp -r dump-db $BUILD_DIR/
rm -rf $BUILD_DIR/dump-db/node_modules
cp bin/tpl/trilium-portable.sh $BUILD_DIR/
chmod 755 $BUILD_DIR/trilium-portable.sh

View File

@@ -23,6 +23,11 @@ rm -rf $BUILD_DIR
# Mac build has by default useless directory level
mv "./dist/Trilium Notes-darwin-x64" $BUILD_DIR
cp bin/tpl/anonymize-database.sql $BUILD_DIR/
cp -r dump-db $BUILD_DIR/
rm -rf $BUILD_DIR/dump-db/node_modules
echo "Zipping mac x64 electron distribution..."
VERSION=`jq -r ".version" package.json`

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env bash
PKG_DIR=dist/trilium-linux-x64-server
NODE_VERSION=14.18.1
NODE_VERSION=18.16.1
if [ "$1" != "DONTCOPY" ]
then
@@ -20,12 +20,19 @@ rm -r $PKG_DIR/node/lib/node_modules/npm
rm -r $PKG_DIR/node/include/node
rm -r $PKG_DIR/node_modules/electron*
rm -r $PKG_DIR/webpack*
rm -r $PKG_DIR/electron.js
cp -r bin/better-sqlite3/linux-server-better_sqlite3.node $PKG_DIR/node_modules/better-sqlite3/build/Release/better_sqlite3.node
printf "#!/bin/sh\n./node/bin/node src/www" > $PKG_DIR/trilium.sh
chmod 755 $PKG_DIR/trilium.sh
cp bin/tpl/anonymize-database.sql $PKG_DIR/
cp -r dump-db $PKG_DIR/
rm -rf $PKG_DIR/dump-db/node_modules
VERSION=`jq -r ".version" package.json`
cd dist

View File

@@ -22,12 +22,12 @@ rm -rf $BUILD_DIR
mv "./dist/Trilium Notes-win32-x64" $BUILD_DIR
# removing software WebGL binaries because they are pretty huge and not necessary
rm -r $BUILD_DIR/swiftshader
cp bin/tpl/anonymize-database.sql $BUILD_DIR/
cp bin/tpl/trilium-portable.bat $BUILD_DIR/
cp bin/tpl/trilium-no-cert-check.bat $BUILD_DIR/
cp bin/tpl/trilium-safe-mode.bat $BUILD_DIR/
cp -r dump-db $BUILD_DIR/
rm -rf $BUILD_DIR/dump-db/node_modules
cp bin/tpl/trilium-{portable,no-cert-check,safe-mode}.bat $BUILD_DIR/
echo "Zipping windows x64 electron distribution..."
VERSION=`jq -r ".version" package.json`

View File

@@ -5,7 +5,7 @@ if [[ $# -eq 0 ]] ; then
exit 1
fi
n exec 14.18.1 npm run webpack
n exec 18.16.1 npm run webpack
DIR=$1
@@ -27,7 +27,7 @@ cp -r electron.js $DIR/
cp webpack-* $DIR/
# run in subshell (so we return to original dir)
(cd $DIR && n exec 14.18.1 npm install --only=prod)
(cd $DIR && n exec 18.16.1 npm install --only=prod)
# cleanup of useless files in dependencies
rm -r $DIR/node_modules/image-q/demo
@@ -44,8 +44,7 @@ find $DIR/node_modules -name demo -exec rm -rf {} \;
find $DIR/libraries -name "*.map" -type f -delete
rm -r $DIR/src/public/app
cp $DIR/src/public/app/share.js $DIR/src/public/app-dist/
cp -r $DIR/src/public/app/doc_notes $DIR/src/public/app-dist/
sed -i -e 's/app\/desktop.js/app-dist\/desktop.js/g' $DIR/src/views/desktop.ejs
sed -i -e 's/app\/mobile.js/app-dist\/mobile.js/g' $DIR/src/views/mobile.ejs
sed -i -e 's/app\/setup.js/app-dist\/setup.js/g' $DIR/src/views/setup.ejs
rm -rf $DIR/src/public/app

View File

@@ -0,0 +1,7 @@
#!/usr/bin/env node
const anonymizationService = require('../src/services/anonymization');
const fs = require('fs');
const path = require('path');
fs.writeFileSync(path.resolve(__dirname, 'tpl', 'anonymize-database.sql'), anonymizationService.getFullAnonymizationScript());

View File

@@ -2,6 +2,6 @@
SCHEMA_FILE_PATH=db/schema.sql
sqlite3 ~/trilium-data/document.db .schema | grep -v "sqlite_sequence" > "$SCHEMA_FILE_PATH"
sqlite3 ./data/document.db .schema | grep -v "sqlite_sequence" > "$SCHEMA_FILE_PATH"
echo "DB schema exported to $SCHEMA_FILE_PATH"

57
bin/release-flatpack.sh Executable file
View File

@@ -0,0 +1,57 @@
#!/usr/bin/env bash
if [[ $# -eq 0 ]] ; then
echo "Missing argument of new version"
exit 1
fi
VERSION=$1
if ! [[ ${VERSION} =~ ^[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,2}(-.+)?$ ]] ;
then
echo "Version ${VERSION} isn't in format X.Y.Z"
exit 1
fi
VERSION_DATE=$(git log -1 --format=%aI "v${VERSION}" | cut -c -10)
VERSION_COMMIT=$(git rev-list -n 1 "v${VERSION}")
# expecting the directory at a specific path
cd ~/trilium-flathub || exit
if ! git diff-index --quiet HEAD --; then
echo "There are uncommitted changes"
exit 1
fi
BASE_BRANCH=master
if [[ "$VERSION" == *"beta"* ]]; then
BASE_BRANCH=beta
fi
git switch "${BASE_BRANCH}"
git pull
BRANCH=b${VERSION}
git branch "${BRANCH}"
git switch "${BRANCH}"
echo "Updating files with version ${VERSION}, date ${VERSION_DATE} and commit ${VERSION_COMMIT}"
flatpak-node-generator npm ../trilium/package-lock.json
xmlstarlet ed --inplace --update "/component/releases/release/@version" --value "${VERSION}" --update "/component/releases/release/@date" --value "${VERSION_DATE}" ./com.github.zadam.trilium.metainfo.xml
yq --inplace "(.modules[0].sources[0].tag = \"v${VERSION}\") | (.modules[0].sources[0].commit = \"${VERSION_COMMIT}\")" ./com.github.zadam.trilium.yml
git add ./generated-sources.json
git add ./com.github.zadam.trilium.metainfo.xml
git add ./com.github.zadam.trilium.yml
git commit -m "release $VERSION"
git push --set-upstream origin "${BRANCH}"
gh pr create --fill -B "${BASE_BRANCH}"
gh pr merge --auto --merge --delete-branch

View File

@@ -0,0 +1,165 @@
UPDATE etapi_tokens SET tokenHash = 'API token hash value';
UPDATE notes SET title = 'title' WHERE noteId != 'root' AND noteId NOT LIKE '\_%' ESCAPE '\';
UPDATE blobs SET content = 'text' WHERE content IS NOT NULL;
UPDATE revisions SET title = 'title';
UPDATE attributes SET name = 'name', value = 'value'
WHERE type = 'label'
AND name NOT IN ('inbox',
'disableVersioning',
'calendarRoot',
'archived',
'excludeFromExport',
'disableInclusion',
'appCss',
'appTheme',
'hidePromotedAttributes',
'readOnly',
'autoReadOnlyDisabled',
'cssClass',
'iconClass',
'keyboardShortcut',
'run',
'runOnInstance',
'runAtHour',
'customRequestHandler',
'customResourceProvider',
'widget',
'noteInfoWidgetDisabled',
'linkMapWidgetDisabled',
'revisionsWidgetDisabled',
'whatLinksHereWidgetDisabled',
'similarNotesWidgetDisabled',
'workspace',
'workspaceIconClass',
'workspaceTabBackgroundColor',
'searchHome',
'workspaceInbox',
'workspaceSearchHome',
'sqlConsoleHome',
'datePattern',
'pageSize',
'viewType',
'mapRootNoteId',
'bookmarkFolder',
'sorted',
'top',
'fullContentWidth',
'shareHiddenFromTree',
'shareAlias',
'shareOmitDefaultCss',
'shareRoot',
'internalLink',
'imageLink',
'relationMapLink',
'includeMapLink',
'runOnNoteCreation',
'runOnNoteTitleChange',
'runOnNoteContentChange',
'runOnNoteChange',
'runOnChildNoteCreation',
'runOnAttributeCreation',
'runOnAttributeChange',
'template',
'inherit',
'widget',
'renderNote',
'shareCss',
'shareJs',
'shareFavicon',
'executeButton',
'keepCurrentHoisting',
'color',
'toc',
'excludeFromNoteMap',
'docName',
'launcherType',
'builtinWidget',
'baseSize',
'growthFactor'
);
UPDATE attributes SET name = 'name'
AND name NOT IN ('inbox',
'disableVersioning',
'calendarRoot',
'archived',
'excludeFromExport',
'disableInclusion',
'appCss',
'appTheme',
'hidePromotedAttributes',
'readOnly',
'autoReadOnlyDisabled',
'cssClass',
'iconClass',
'keyboardShortcut',
'run',
'runOnInstance',
'runAtHour',
'customRequestHandler',
'customResourceProvider',
'widget',
'noteInfoWidgetDisabled',
'linkMapWidgetDisabled',
'revisionsWidgetDisabled',
'whatLinksHereWidgetDisabled',
'similarNotesWidgetDisabled',
'workspace',
'workspaceIconClass',
'workspaceTabBackgroundColor',
'searchHome',
'workspaceInbox',
'workspaceSearchHome',
'sqlConsoleHome',
'datePattern',
'pageSize',
'viewType',
'mapRootNoteId',
'bookmarkFolder',
'sorted',
'top',
'fullContentWidth',
'shareHiddenFromTree',
'shareAlias',
'shareOmitDefaultCss',
'shareRoot',
'internalLink',
'imageLink',
'relationMapLink',
'includeMapLink',
'runOnNoteCreation',
'runOnNoteTitleChange',
'runOnNoteContentChange',
'runOnNoteChange',
'runOnChildNoteCreation',
'runOnAttributeCreation',
'runOnAttributeChange',
'template',
'inherit',
'widget',
'renderNote',
'shareCss',
'shareJs',
'shareFavicon',
'executeButton',
'keepCurrentHoisting',
'color',
'toc',
'excludeFromNoteMap',
'docName',
'launcherType',
'builtinWidget',
'baseSize',
'growthFactor'
);
UPDATE branches SET prefix = 'prefix' WHERE prefix IS NOT NULL AND prefix != 'recovered';
UPDATE options SET value = 'anonymized' WHERE name IN
('documentId', 'documentSecret', 'encryptedDataKey',
'passwordVerificationHash', 'passwordVerificationSalt',
'passwordDerivedKeySalt', 'username', 'syncServerHost', 'syncProxy')
AND value != '';
VACUUM;

View File

@@ -1,4 +1,23 @@
@echo off
:: Try to get powershell to launch Trilium since it deals with UTF-8 characters in current path
:: If there's no powershell available, fallback to unicode enabled command interpreter
WHERE powershell.exe > NUL 2>&1
IF %ERRORLEVEL% NEQ 0 GOTO BATCH ELSE GOTO POWERSHELL
:POWERSHELL
powershell -ExecutionPolicy Bypass -NonInteractive -NoLogo "Set-Item -Path Env:NODE_TLS_REJECT_UNAUTHORIZED -Value 0; ./trilium.exe"
GOTO END
:BATCH
:: Make sure we support UTF-8 characters
chcp 65001
:: Get Current Trilium executable directory and compute data directory
SET DIR=%~dp0
set NODE_TLS_REJECT_UNAUTHORIZED=0
cd %DIR%
start trilium.exe
GOTO END
:END

View File

@@ -1,4 +1,23 @@
@echo off
:: Try to get powershell to launch Trilium since it deals with UTF-8 characters in current path
:: If there's no powershell available, fallback to unicode enabled command interpreter
WHERE powershell.exe > NUL 2>&1
IF %ERRORLEVEL% NEQ 0 GOTO BATCH ELSE GOTO POWERSHELL
:POWERSHELL
powershell -ExecutionPolicy Bypass -NonInteractive -NoLogo "Set-Item -Path Env:TRILIUM_DATA_DIR -Value './trilium-data'; ./trilium.exe"
GOTO END
:BATCH
:: Make sure we support UTF-8 characters
chcp 65001
:: Get Current Trilium executable directory and compute data directory
SET DIR=%~dp0
SET TRILIUM_DATA_DIR=%DIR%\trilium-data
cd %DIR%
start trilium.exe
start trilium.exe
GOTO END
:END

View File

@@ -1,4 +1,23 @@
@echo off
:: Try to get powershell to launch Trilium since it deals with UTF-8 characters in current path
:: If there's no powershell available, fallback to unicode enabled command interpreter
WHERE powershell.exe > NUL 2>&1
IF %ERRORLEVEL% NEQ 0 GOTO BATCH ELSE GOTO POWERSHELL
:POWERSHELL
powershell -ExecutionPolicy Bypass -NonInteractive -NoLogo "Set-Item -Path Env:TRILIUM_SAFE_MODE -Value 1; ./trilium.exe --disable-gpu"
GOTO END
:BATCH
:: Make sure we support UTF-8 characters
chcp 65001
:: Get Current Trilium executable directory and compute data directory
SET DIR=%~dp0
SET TRILIUM_SAFE_MODE=1
cd %DIR%
start trilium.exe
start trilium.exe --disable-gpu
GOTO END
:END

View File

@@ -3,5 +3,5 @@
DIR=`dirname "$0"`
export TRILIUM_SAFE_MODE=1
"$DIR/trilium"
"$DIR/trilium" --disable-gpu

View File

@@ -16,8 +16,14 @@ noBackup=false
# host=0.0.0.0
# port setting is relevant only for web deployments, desktop builds run on a fixed port (changeable with TRILIUM_PORT environment variable)
port=8080
# true for TLS/SSL/HTTPS (secure), false for HTTP (unsecure).
# true for TLS/SSL/HTTPS (secure), false for HTTP (insecure).
https=false
# path to certificate (run "bash bin/generate-cert.sh" to generate self-signed certificate). Relevant only if https=true
certPath=
keyPath=
# setting to give trust to reverse proxies, a comma-separated list of trusted rev. proxy IPs can be specified (CIDR notation is permitted),
# alternatively 'true' will make use of the leftmost IP in X-Forwarded-For, ultimately an integer can be used to tell about the number of hops between
# Trilium (which is hop 0) and the first trusted rev. proxy.
# once set, expressjs will use the X-Forwarded-For header set by the rev. proxy to determinate the real IPs of clients.
# expressjs shortcuts are supported: loopback(127.0.0.1/8, ::1/128), linklocal(169.254.0.0/16, fe80::/10), uniquelocal(10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, fc00::/7)
trustedReverseProxy=false

View File

@@ -1,11 +1,5 @@
- drop branches.utcDateCreated - not used for anything
- drop options.utcDateCreated - not used for anything
- isDeleted = 0 by default
- rename openTabs to openNoteContexts
- migrate black theme to dark theme
- unify readOnly handling to a single attribute:
* readOnly - like now
* readOnly=auto - like without readOnly (used to override inherited readOnly)
* readOnly=never - like autoReadOnlyDisabled
- remove focusOnAttributesKeyboardShortcut
- rename white theme to "light" theme (it's not completely white and matches well to dark theme)

Binary file not shown.

View File

@@ -1,15 +0,0 @@
const becca = require('../../src/becca/becca');
const beccaLoader = require('../../src/becca/becca_loader');
const cls = require('../../src/services/cls');
module.exports = () => {
cls.init(() => {
beccaLoader.load();
for (const note of Object.values(becca.notes)) {
if (note.hasLabel('calendarRoot')) {
note.addLabel('excludeFromNoteMap', "", true);
}
}
});
};

View File

@@ -1,4 +0,0 @@
-- black theme has been removed, dark is closest replacement
UPDATE options SET value = 'dark' WHERE name = 'theme' AND value = 'black';
UPDATE options SET value = 'light' WHERE name = 'theme' AND value = 'white';

View File

@@ -0,0 +1,10 @@
CREATE TABLE IF NOT EXISTS "blobs" (
`blobId` TEXT NOT NULL,
`content` TEXT NULL DEFAULT NULL,
`dateModified` TEXT NOT NULL,
`utcDateModified` TEXT NOT NULL,
PRIMARY KEY(`blobId`)
);
ALTER TABLE notes ADD blobId TEXT DEFAULT NULL;
ALTER TABLE note_revisions ADD blobId TEXT DEFAULT NULL;

View File

@@ -0,0 +1,62 @@
module.exports = () => {
const sql = require("../../src/services/sql");
const utils = require("../../src/services/utils");
const existingBlobIds = new Set();
for (const noteId of sql.getColumn(`SELECT noteId FROM note_contents`)) {
const row = sql.getRow(`SELECT noteId, content, dateModified, utcDateModified FROM note_contents WHERE noteId = ?`, [noteId]);
const blobId = utils.hashedBlobId(row.content);
if (!existingBlobIds.has(blobId)) {
existingBlobIds.add(blobId);
sql.insert('blobs', {
blobId,
content: row.content,
dateModified: row.dateModified,
utcDateModified: row.utcDateModified
});
sql.execute("UPDATE entity_changes SET entityName = 'blobs', entityId = ? WHERE entityName = 'note_contents' AND entityId = ?", [blobId, row.noteId]);
} else {
// duplicates
sql.execute("DELETE FROM entity_changes WHERE entityName = 'note_contents' AND entityId = ?", [row.noteId]);
}
sql.execute('UPDATE notes SET blobId = ? WHERE noteId = ?', [blobId, row.noteId]);
}
for (const noteRevisionId of sql.getColumn(`SELECT noteRevisionId FROM note_revision_contents`)) {
const row = sql.getRow(`SELECT noteRevisionId, content, utcDateModified FROM note_revision_contents WHERE noteRevisionId = ?`, [noteRevisionId]);
const blobId = utils.hashedBlobId(row.content);
if (!existingBlobIds.has(blobId)) {
existingBlobIds.add(blobId);
sql.insert('blobs', {
blobId,
content: row.content,
dateModified: row.utcDateModified,
utcDateModified: row.utcDateModified
});
sql.execute("UPDATE entity_changes SET entityName = 'blobs', entityId = ? WHERE entityName = 'note_revision_contents' AND entityId = ?", [blobId, row.noteRevisionId]);
} else {
// duplicates
sql.execute("DELETE FROM entity_changes WHERE entityName = 'note_revision_contents' AND entityId = ?", [row.noteId]);
}
sql.execute('UPDATE note_revisions SET blobId = ? WHERE noteRevisionId = ?', [blobId, row.noteRevisionId]);
}
const notesWithoutBlobIds = sql.getColumn("SELECT noteId FROM notes WHERE blobId IS NULL");
if (notesWithoutBlobIds.length > 0) {
throw new Error("BlobIds were not filled correctly in notes: " + JSON.stringify(notesWithoutBlobIds));
}
const noteRevisionsWithoutBlobIds = sql.getColumn("SELECT noteRevisionId FROM note_revisions WHERE blobId IS NULL");
if (noteRevisionsWithoutBlobIds.length > 0) {
throw new Error("BlobIds were not filled correctly in note revisions: " + JSON.stringify(noteRevisionsWithoutBlobIds));
}
};

View File

@@ -0,0 +1,4 @@
DROP TABLE note_contents;
DROP TABLE note_revision_contents;
DELETE FROM entity_changes WHERE entityName IN ('note_contents', 'note_revision_contents');

View File

@@ -0,0 +1,25 @@
CREATE TABLE IF NOT EXISTS "revisions" (`revisionId` TEXT NOT NULL PRIMARY KEY,
`noteId` TEXT NOT NULL,
type TEXT DEFAULT '' NOT NULL,
mime TEXT DEFAULT '' NOT NULL,
`title` TEXT NOT NULL,
`isProtected` INT NOT NULL DEFAULT 0,
blobId TEXT DEFAULT NULL,
`utcDateLastEdited` TEXT NOT NULL,
`utcDateCreated` TEXT NOT NULL,
`utcDateModified` TEXT NOT NULL,
`dateLastEdited` TEXT NOT NULL,
`dateCreated` TEXT NOT NULL);
INSERT INTO revisions (revisionId, noteId, type, mime, title, isProtected, utcDateLastEdited, utcDateCreated, utcDateModified, dateLastEdited, dateCreated, blobId)
SELECT noteRevisionId, noteId, type, mime, title, isProtected, utcDateLastEdited, utcDateCreated, utcDateModified, dateLastEdited, dateCreated, blobId FROM note_revisions;
DROP TABLE note_revisions;
CREATE INDEX `IDX_revisions_noteId` ON `revisions` (`noteId`);
CREATE INDEX `IDX_revisions_utcDateCreated` ON `revisions` (`utcDateCreated`);
CREATE INDEX `IDX_revisions_utcDateLastEdited` ON `revisions` (`utcDateLastEdited`);
CREATE INDEX `IDX_revisions_dateCreated` ON `revisions` (`dateCreated`);
CREATE INDEX `IDX_revisions_dateLastEdited` ON `revisions` (`dateLastEdited`);
UPDATE entity_changes SET entityName = 'revisions' WHERE entityName = 'note_revisions';

View File

@@ -0,0 +1,21 @@
CREATE TABLE IF NOT EXISTS "attachments"
(
attachmentId TEXT not null primary key,
ownerId TEXT not null,
role TEXT not null,
mime TEXT not null,
title TEXT not null,
isProtected INT not null DEFAULT 0,
position INT default 0 not null,
blobId TEXT DEFAULT null,
dateModified TEXT NOT NULL,
utcDateModified TEXT not null,
utcDateScheduledForErasureSince TEXT DEFAULT NULL,
isDeleted INT not null,
deleteId TEXT DEFAULT NULL);
CREATE INDEX IDX_attachments_ownerId_role
on attachments (ownerId, role);
CREATE INDEX IDX_attachments_utcDateScheduledForErasureSince
on attachments (utcDateScheduledForErasureSince);

View File

@@ -0,0 +1,23 @@
module.exports = () => {
const beccaLoader = require("../../src/becca/becca_loader");
const becca = require("../../src/becca/becca");
const cls = require("../../src/services/cls");
const log = require("../../src/services/log");
cls.init(() => {
beccaLoader.load();
for (const note of Object.values(becca.notes)) {
try {
const attachment = note.convertToParentAttachment({autoConversion: true});
if (attachment) {
log.info(`Auto-converted note '${note.noteId}' into attachment '${attachment.attachmentId}'.`);
}
}
catch (e) {
log.error(`Cannot convert note '${note.noteId}' to attachment: ${e.message} ${e.stack}`);
}
}
});
};

View File

@@ -0,0 +1,2 @@
DELETE FROM options WHERE name = 'hideIncludedImages_main';
DELETE FROM entity_changes WHERE entityName = 'options' AND entityId = 'hideIncludedImages_main';

View File

@@ -0,0 +1,2 @@
UPDATE options SET name = 'openNoteContexts' WHERE name = 'openTabs';
UPDATE entity_changes SET entityId = 'openNoteContexts' WHERE entityName = 'options' AND entityId = 'openTabs';

View File

@@ -0,0 +1 @@
SELECT 1;

View File

@@ -0,0 +1,14 @@
UPDATE blobs SET blobId = REPLACE(blobId, '+', 'X');
UPDATE blobs SET blobId = REPLACE(blobId, '/', 'Y');
UPDATE notes SET blobId = REPLACE(blobId, '+', 'X');
UPDATE notes SET blobId = REPLACE(blobId, '/', 'Y');
UPDATE attachments SET blobId = REPLACE(blobId, '+', 'X');
UPDATE attachments SET blobId = REPLACE(blobId, '/', 'Y');
UPDATE revisions SET blobId = REPLACE(blobId, '+', 'X');
UPDATE revisions SET blobId = REPLACE(blobId, '/', 'Y');
UPDATE entity_changes SET entityId = REPLACE(entityId, '+', 'X') WHERE entityName = 'blobs';
UPDATE entity_changes SET entityId = REPLACE(entityId, '/', 'Y') WHERE entityName = 'blobs';

View File

@@ -0,0 +1,3 @@
CREATE INDEX IF NOT EXISTS IDX_notes_blobId on notes (blobId);
CREATE INDEX IF NOT EXISTS IDX_revisions_blobId on revisions (blobId);
CREATE INDEX IF NOT EXISTS IDX_attachments_blobId on attachments (blobId);

View File

@@ -4,15 +4,19 @@ CREATE TABLE IF NOT EXISTS "entity_changes" (
`entityId` TEXT NOT NULL,
`hash` TEXT NOT NULL,
`isErased` INT NOT NULL,
`sourceId` TEXT NOT NULL,
`changeId` TEXT NOT NULL,
`componentId` TEXT NOT NULL,
`instanceId` TEXT NOT NULL,
`isSynced` INTEGER NOT NULL,
`utcDateChanged` TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS "api_tokens"
CREATE TABLE IF NOT EXISTS "etapi_tokens"
(
apiTokenId TEXT PRIMARY KEY NOT NULL,
token TEXT NOT NULL,
etapiTokenId TEXT PRIMARY KEY NOT NULL,
name TEXT NOT NULL,
tokenHash TEXT NOT NULL,
utcDateCreated TEXT NOT NULL,
utcDateModified TEXT NOT NULL,
isDeleted INT NOT NULL DEFAULT 0);
CREATE TABLE IF NOT EXISTS "branches" (
`branchId` TEXT NOT NULL,
@@ -24,7 +28,6 @@ CREATE TABLE IF NOT EXISTS "branches" (
`isDeleted` INTEGER NOT NULL DEFAULT 0,
`deleteId` TEXT DEFAULT NULL,
`utcDateModified` TEXT NOT NULL,
utcDateCreated TEXT NOT NULL,
PRIMARY KEY(`branchId`));
CREATE TABLE IF NOT EXISTS "notes" (
`noteId` TEXT NOT NULL,
@@ -32,6 +35,7 @@ CREATE TABLE IF NOT EXISTS "notes" (
`isProtected` INT NOT NULL DEFAULT 0,
`type` TEXT NOT NULL DEFAULT 'text',
`mime` TEXT NOT NULL DEFAULT 'text/html',
blobId TEXT DEFAULT NULL,
`isDeleted` INT NOT NULL DEFAULT 0,
`deleteId` TEXT DEFAULT NULL,
`dateCreated` TEXT NOT NULL,
@@ -39,33 +43,23 @@ CREATE TABLE IF NOT EXISTS "notes" (
`utcDateCreated` TEXT NOT NULL,
`utcDateModified` TEXT NOT NULL,
PRIMARY KEY(`noteId`));
CREATE TABLE IF NOT EXISTS "note_contents" (
`noteId` TEXT NOT NULL,
`content` TEXT NULL DEFAULT NULL,
`dateModified` TEXT NOT NULL,
`utcDateModified` TEXT NOT NULL,
PRIMARY KEY(`noteId`)
);
CREATE TABLE IF NOT EXISTS "note_revisions" (`noteRevisionId` TEXT NOT NULL PRIMARY KEY,
CREATE TABLE IF NOT EXISTS "revisions" (`revisionId` TEXT NOT NULL PRIMARY KEY,
`noteId` TEXT NOT NULL,
type TEXT DEFAULT '' NOT NULL,
mime TEXT DEFAULT '' NOT NULL,
`title` TEXT,
`title` TEXT NOT NULL,
`isProtected` INT NOT NULL DEFAULT 0,
blobId TEXT DEFAULT NULL,
`utcDateLastEdited` TEXT NOT NULL,
`utcDateCreated` TEXT NOT NULL,
`utcDateModified` TEXT NOT NULL,
`dateLastEdited` TEXT NOT NULL,
`dateCreated` TEXT NOT NULL);
CREATE TABLE IF NOT EXISTS "note_revision_contents" (`noteRevisionId` TEXT NOT NULL PRIMARY KEY,
`content` TEXT,
`utcDateModified` TEXT NOT NULL);
CREATE TABLE IF NOT EXISTS "options"
(
name TEXT not null PRIMARY KEY,
value TEXT,
value TEXT not null,
isSynced INTEGER default 0 not null,
utcDateCreated TEXT not null,
utcDateModified TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS "attributes"
@@ -92,11 +86,12 @@ CREATE INDEX `IDX_notes_dateCreated` ON `notes` (`dateCreated`);
CREATE INDEX `IDX_notes_dateModified` ON `notes` (`dateModified`);
CREATE INDEX `IDX_notes_utcDateModified` ON `notes` (`utcDateModified`);
CREATE INDEX `IDX_notes_utcDateCreated` ON `notes` (`utcDateCreated`);
CREATE INDEX `IDX_note_revisions_noteId` ON `note_revisions` (`noteId`);
CREATE INDEX `IDX_note_revisions_utcDateCreated` ON `note_revisions` (`utcDateCreated`);
CREATE INDEX `IDX_note_revisions_utcDateLastEdited` ON `note_revisions` (`utcDateLastEdited`);
CREATE INDEX `IDX_note_revisions_dateCreated` ON `note_revisions` (`dateCreated`);
CREATE INDEX `IDX_note_revisions_dateLastEdited` ON `note_revisions` (`dateLastEdited`);
CREATE INDEX `IDX_revisions_noteId` ON `revisions` (`noteId`);
CREATE INDEX `IDX_revisions_utcDateCreated` ON `revisions` (`utcDateCreated`);
CREATE INDEX `IDX_revisions_utcDateLastEdited` ON `revisions` (`utcDateLastEdited`);
CREATE INDEX `IDX_revisions_dateCreated` ON `revisions` (`dateCreated`);
CREATE INDEX `IDX_revisions_dateLastEdited` ON `revisions` (`dateLastEdited`);
CREATE INDEX `IDX_entity_changes_changeId` ON `entity_changes` (`changeId`);
CREATE INDEX IDX_attributes_name_value
on attributes (name, value);
CREATE INDEX IDX_attributes_noteId_index
@@ -109,3 +104,31 @@ CREATE TABLE IF NOT EXISTS "recent_notes"
notePath TEXT not null,
utcDateCreated TEXT not null
);
CREATE TABLE IF NOT EXISTS "blobs" (
`blobId` TEXT NOT NULL,
`content` TEXT NULL DEFAULT NULL,
`dateModified` TEXT NOT NULL,
`utcDateModified` TEXT NOT NULL,
PRIMARY KEY(`blobId`)
);
CREATE TABLE IF NOT EXISTS "attachments"
(
attachmentId TEXT not null primary key,
ownerId TEXT not null,
role TEXT not null,
mime TEXT not null,
title TEXT not null,
isProtected INT not null DEFAULT 0,
position INT default 0 not null,
blobId TEXT DEFAULT null,
dateModified TEXT NOT NULL,
utcDateModified TEXT not null,
utcDateScheduledForErasureSince TEXT DEFAULT NULL,
isDeleted INT not null,
deleteId TEXT DEFAULT NULL);
CREATE INDEX IDX_attachments_ownerId_role
on attachments (ownerId, role);
CREATE INDEX IDX_notes_blobId on notes (blobId);
CREATE INDEX IDX_revisions_blobId on revisions (blobId);
CREATE INDEX IDX_attachments_blobId on attachments (blobId);

View File

@@ -1,17 +1,14 @@
version: '2.1'
services:
trilium:
build:
context: .
image: zadam/trilium
restart: always
environment:
- TRILIUM_DATA_DIR=/data
- TRILIUM_DATA_DIR=/home/node/trilium-data
ports:
- "8080:8080"
volumes:
- trilium:/data
- trilium:/home/node/trilium-data
volumes:
trilium:

42
docker_healthcheck.js Executable file
View File

@@ -0,0 +1,42 @@
const http = require("http");
const ini = require("ini");
const fs = require("fs");
const dataDir = require("./src/services/data_dir");
const config = ini.parse(fs.readFileSync(dataDir.CONFIG_INI_PATH, 'utf-8'));
if (config.Network.https) {
// built-in TLS (terminated by trilium) is not supported yet, PRs are welcome
// for reverse proxy terminated TLS this will works since config.https will be false
process.exit(0);
}
const port = require('./src/services/port');
const host = require('./src/services/host');
const options = { timeout: 2000 };
const callback = res => {
console.log(`STATUS: ${res.statusCode}`);
if (res.statusCode === 200) {
process.exit(0);
} else {
process.exit(1);
}
};
let request;
if (port !== 0) { // TCP socket.
const url = `http://${host}:${port}/api/health-check`;
request = http.request(url, options, callback);
} else { // Unix socket.
options.socketPath = host;
options.path = '/api/health-check';
request = http.request(options, callback);
}
request.on("error", err => {
console.log("ERROR");
process.exit(1);
});
request.end();

File diff suppressed because it is too large Load Diff

View File

@@ -1,378 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Class: ApiToken</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Class: ApiToken</h1>
<section>
<header>
<h2><span class="attribs"><span class="type-signature"></span></span>ApiToken<span class="signature">()</span><span class="type-signature"></span></h2>
<div class="class-description">ApiToken is an entity representing token used to authenticate against Trilium API from client applications. Currently used only by Trilium Sender.</div>
</header>
<article>
<div class="container-overview">
<h2>Constructor</h2>
<h4 class="name" id="ApiToken"><span class="type-signature"></span>new ApiToken<span class="signature">()</span><span class="type-signature"></span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="becca_entities_api_token.js.html">becca/entities/api_token.js</a>, <a href="becca_entities_api_token.js.html#line9">line 9</a>
</li></ul></dd>
</dl>
</div>
<h3 class="subsection-title">Members</h3>
<h4 class="name" id="apiTokenId"><span class="type-signature"></span>apiTokenId<span class="type-signature"> :string</span></h4>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">string</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="becca_entities_api_token.js.html">becca/entities/api_token.js</a>, <a href="becca_entities_api_token.js.html#line18">line 18</a>
</li></ul></dd>
</dl>
<h4 class="name" id="token"><span class="type-signature"></span>token<span class="type-signature"> :string</span></h4>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">string</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="becca_entities_api_token.js.html">becca/entities/api_token.js</a>, <a href="becca_entities_api_token.js.html#line20">line 20</a>
</li></ul></dd>
</dl>
<h4 class="name" id="utcDateCreated"><span class="type-signature"></span>utcDateCreated<span class="type-signature"> :string</span></h4>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">string</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="becca_entities_api_token.js.html">becca/entities/api_token.js</a>, <a href="becca_entities_api_token.js.html#line22">line 22</a>
</li></ul></dd>
</dl>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-sql.html">sql</a></li></ul><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.7</a>
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,767 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Class: Branch</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Class: Branch</h1>
<section>
<header>
<h2><span class="attribs"><span class="type-signature"></span></span>Branch<span class="signature">()</span><span class="type-signature"></span></h2>
<div class="class-description">Branch represents a relationship between a child note and its parent note. Trilium allows a note to have multiple
parents.</div>
</header>
<article>
<div class="container-overview">
<h2>Constructor</h2>
<h4 class="name" id="Branch"><span class="type-signature"></span>new Branch<span class="signature">()</span><span class="type-signature"></span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="becca_entities_branch.js.html">becca/entities/branch.js</a>, <a href="becca_entities_branch.js.html#line12">line 12</a>
</li></ul></dd>
</dl>
</div>
<h3 class="subsection-title">Members</h3>
<h4 class="name" id="branchId"><span class="type-signature"></span>branchId<span class="type-signature"> :string</span></h4>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">string</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="becca_entities_branch.js.html">becca/entities/branch.js</a>, <a href="becca_entities_branch.js.html#line43">line 43</a>
</li></ul></dd>
</dl>
<h4 class="name" id="childNote"><span class="type-signature"></span>childNote<span class="type-signature"></span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="becca_entities_branch.js.html">becca/entities/branch.js</a>, <a href="becca_entities_branch.js.html#line85">line 85</a>
</li></ul></dd>
</dl>
<h4 class="name" id="isExpanded"><span class="type-signature"></span>isExpanded<span class="type-signature"> :boolean</span></h4>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">boolean</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="becca_entities_branch.js.html">becca/entities/branch.js</a>, <a href="becca_entities_branch.js.html#line53">line 53</a>
</li></ul></dd>
</dl>
<h4 class="name" id="noteId"><span class="type-signature"></span>noteId<span class="type-signature"> :string</span></h4>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">string</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="becca_entities_branch.js.html">becca/entities/branch.js</a>, <a href="becca_entities_branch.js.html#line45">line 45</a>
</li></ul></dd>
</dl>
<h4 class="name" id="notePosition"><span class="type-signature"></span>notePosition<span class="type-signature"> :int</span></h4>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">int</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="becca_entities_branch.js.html">becca/entities/branch.js</a>, <a href="becca_entities_branch.js.html#line51">line 51</a>
</li></ul></dd>
</dl>
<h4 class="name" id="parentNote"><span class="type-signature"></span>parentNote<span class="type-signature"></span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="becca_entities_branch.js.html">becca/entities/branch.js</a>, <a href="becca_entities_branch.js.html#line99">line 99</a>
</li></ul></dd>
</dl>
<h4 class="name" id="parentNoteId"><span class="type-signature"></span>parentNoteId<span class="type-signature"> :string</span></h4>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">string</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="becca_entities_branch.js.html">becca/entities/branch.js</a>, <a href="becca_entities_branch.js.html#line47">line 47</a>
</li></ul></dd>
</dl>
<h4 class="name" id="prefix"><span class="type-signature"></span>prefix<span class="type-signature"> :string</span></h4>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">string</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="becca_entities_branch.js.html">becca/entities/branch.js</a>, <a href="becca_entities_branch.js.html#line49">line 49</a>
</li></ul></dd>
</dl>
<h4 class="name" id="utcDateModified"><span class="type-signature"></span>utcDateModified<span class="type-signature"> :string</span></h4>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">string</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="becca_entities_branch.js.html">becca/entities/branch.js</a>, <a href="becca_entities_branch.js.html#line55">line 55</a>
</li></ul></dd>
</dl>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-sql.html">sql</a></li></ul><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.7</a>
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@@ -1,446 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Class: Option</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Class: Option</h1>
<section>
<header>
<h2><span class="attribs"><span class="type-signature"></span></span>Option<span class="signature">()</span><span class="type-signature"></span></h2>
<div class="class-description">Option represents name-value pair, either directly configurable by the user or some system property.</div>
</header>
<article>
<div class="container-overview">
<h2>Constructor</h2>
<h4 class="name" id="Option"><span class="type-signature"></span>new Option<span class="signature">()</span><span class="type-signature"></span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="becca_entities_option.js.html">becca/entities/option.js</a>, <a href="becca_entities_option.js.html#line9">line 9</a>
</li></ul></dd>
</dl>
</div>
<h3 class="subsection-title">Members</h3>
<h4 class="name" id="isSynced"><span class="type-signature"></span>isSynced<span class="type-signature"> :boolean</span></h4>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">boolean</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="becca_entities_option.js.html">becca/entities/option.js</a>, <a href="becca_entities_option.js.html#line22">line 22</a>
</li></ul></dd>
</dl>
<h4 class="name" id="name"><span class="type-signature"></span>name<span class="type-signature"> :string</span></h4>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">string</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="becca_entities_option.js.html">becca/entities/option.js</a>, <a href="becca_entities_option.js.html#line18">line 18</a>
</li></ul></dd>
</dl>
<h4 class="name" id="utcDateModified"><span class="type-signature"></span>utcDateModified<span class="type-signature"> :string</span></h4>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">string</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="becca_entities_option.js.html">becca/entities/option.js</a>, <a href="becca_entities_option.js.html#line24">line 24</a>
</li></ul></dd>
</dl>
<h4 class="name" id="value"><span class="type-signature"></span>value<span class="type-signature"> :string</span></h4>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">string</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="becca_entities_option.js.html">becca/entities/option.js</a>, <a href="becca_entities_option.js.html#line20">line 20</a>
</li></ul></dd>
</dl>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-sql.html">sql</a></li></ul><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.7</a>
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>

View File

@@ -1,378 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Class: RecentNote</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Class: RecentNote</h1>
<section>
<header>
<h2><span class="attribs"><span class="type-signature"></span></span>RecentNote<span class="signature">()</span><span class="type-signature"></span></h2>
<div class="class-description">RecentNote represents recently visited note.</div>
</header>
<article>
<div class="container-overview">
<h2>Constructor</h2>
<h4 class="name" id="RecentNote"><span class="type-signature"></span>new RecentNote<span class="signature">()</span><span class="type-signature"></span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="becca_entities_recent_note.js.html">becca/entities/recent_note.js</a>, <a href="becca_entities_recent_note.js.html#line9">line 9</a>
</li></ul></dd>
</dl>
</div>
<h3 class="subsection-title">Members</h3>
<h4 class="name" id="noteId"><span class="type-signature"></span>noteId<span class="type-signature"> :string</span></h4>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">string</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="becca_entities_recent_note.js.html">becca/entities/recent_note.js</a>, <a href="becca_entities_recent_note.js.html#line17">line 17</a>
</li></ul></dd>
</dl>
<h4 class="name" id="notePath"><span class="type-signature"></span>notePath<span class="type-signature"> :string</span></h4>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">string</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="becca_entities_recent_note.js.html">becca/entities/recent_note.js</a>, <a href="becca_entities_recent_note.js.html#line19">line 19</a>
</li></ul></dd>
</dl>
<h4 class="name" id="utcDateCreated"><span class="type-signature"></span>utcDateCreated<span class="type-signature"> :string</span></h4>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">string</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="becca_entities_recent_note.js.html">becca/entities/recent_note.js</a>, <a href="becca_entities_recent_note.js.html#line21">line 21</a>
</li></ul></dd>
</dl>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-sql.html">sql</a></li></ul><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.7</a>
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>

View File

@@ -0,0 +1,356 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Source: becca/entities/abstract_becca_entity.js</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Source: becca/entities/abstract_becca_entity.js</h1>
<section>
<article>
<pre class="prettyprint source linenums"><code>"use strict";
const utils = require('../../services/utils');
const sql = require('../../services/sql');
const entityChangesService = require('../../services/entity_changes');
const eventService = require("../../services/events");
const dateUtils = require("../../services/date_utils");
const cls = require("../../services/cls");
const log = require("../../services/log");
const protectedSessionService = require("../../services/protected_session");
const blobService = require("../../services/blob");
let becca = null;
/**
* Base class for all backend entities.
*/
class AbstractBeccaEntity {
/** @protected */
beforeSaving() {
this.generateIdIfNecessary();
}
/** @protected */
generateIdIfNecessary() {
if (!this[this.constructor.primaryKeyName]) {
this[this.constructor.primaryKeyName] = utils.newEntityId();
}
}
/** @protected */
generateHash(isDeleted = false) {
let contentToHash = "";
for (const propertyName of this.constructor.hashedProperties) {
contentToHash += `|${this[propertyName]}`;
}
if (isDeleted) {
contentToHash += "|deleted";
}
return utils.hash(contentToHash).substr(0, 10);
}
/** @protected */
getUtcDateChanged() {
return this.utcDateModified || this.utcDateCreated;
}
/**
* @protected
* @returns {Becca}
*/
get becca() {
if (!becca) {
becca = require('../becca');
}
return becca;
}
/** @protected */
putEntityChange(isDeleted = false) {
entityChangesService.putEntityChange({
entityName: this.constructor.entityName,
entityId: this[this.constructor.primaryKeyName],
hash: this.generateHash(isDeleted),
isErased: false,
utcDateChanged: this.getUtcDateChanged(),
isSynced: this.constructor.entityName !== 'options' || !!this.isSynced
});
}
/** @protected */
getPojoToSave() {
return this.getPojo();
}
/**
* Saves entity - executes SQL, but doesn't commit the transaction on its own
*
* @returns {this}
*/
save(opts = {}) {
const entityName = this.constructor.entityName;
const primaryKeyName = this.constructor.primaryKeyName;
const isNewEntity = !this[primaryKeyName];
if (this.beforeSaving) {
this.beforeSaving(opts);
}
const pojo = this.getPojoToSave();
sql.transactional(() => {
sql.upsert(entityName, primaryKeyName, pojo);
if (entityName === 'recent_notes') {
return;
}
this.putEntityChange(false);
if (!cls.isEntityEventsDisabled()) {
const eventPayload = {
entityName,
entity: this
};
if (isNewEntity) {
eventService.emit(eventService.ENTITY_CREATED, eventPayload);
}
eventService.emit(eventService.ENTITY_CHANGED, eventPayload);
}
});
return this;
}
/** @protected */
_setContent(content, opts = {}) {
// client code asks to save entity even if blobId didn't change (something else was changed)
opts.forceSave = !!opts.forceSave;
opts.forceFrontendReload = !!opts.forceFrontendReload;
if (content === null || content === undefined) {
throw new Error(`Cannot set null content to ${this.constructor.primaryKeyName} '${this[this.constructor.primaryKeyName]}'`);
}
if (this.hasStringContent()) {
content = content.toString();
} else {
content = Buffer.isBuffer(content) ? content : Buffer.from(content);
}
const unencryptedContentForHashCalculation = this.#getUnencryptedContentForHashCalculation(content);
if (this.isProtected) {
if (protectedSessionService.isProtectedSessionAvailable()) {
content = protectedSessionService.encrypt(content);
} else {
throw new Error(`Cannot update content of blob since protected session is not available.`);
}
}
sql.transactional(() => {
const newBlobId = this.#saveBlob(content, unencryptedContentForHashCalculation, opts);
const oldBlobId = this.blobId;
if (newBlobId !== oldBlobId || opts.forceSave) {
this.blobId = newBlobId;
this.save();
if (newBlobId !== oldBlobId) {
this.#deleteBlobIfNotUsed(oldBlobId);
}
}
});
}
#deleteBlobIfNotUsed(oldBlobId) {
if (sql.getValue("SELECT 1 FROM notes WHERE blobId = ? LIMIT 1", [oldBlobId])) {
return;
}
if (sql.getValue("SELECT 1 FROM attachments WHERE blobId = ? LIMIT 1", [oldBlobId])) {
return;
}
if (sql.getValue("SELECT 1 FROM revisions WHERE blobId = ? LIMIT 1", [oldBlobId])) {
return;
}
sql.execute("DELETE FROM blobs WHERE blobId = ?", [oldBlobId]);
// blobs are not marked as erased in entity_changes, they are just purged completely
// this is because technically every keystroke can create a new blob and there would be just too many
sql.execute("DELETE FROM entity_changes WHERE entityName = 'blobs' AND entityId = ?", [oldBlobId]);
}
#getUnencryptedContentForHashCalculation(unencryptedContent) {
if (this.isProtected) {
// a "random" prefix makes sure that the calculated hash/blobId is different for a decrypted/encrypted content
const encryptedPrefixSuffix = "t$[nvQg7q)&amp;_ENCRYPTED_?M:Bf&amp;j3jr_";
return Buffer.isBuffer(unencryptedContent)
? Buffer.concat([Buffer.from(encryptedPrefixSuffix), unencryptedContent])
: `${encryptedPrefixSuffix}${unencryptedContent}`;
} else {
return unencryptedContent;
}
}
#saveBlob(content, unencryptedContentForHashCalculation, opts = {}) {
/*
* We're using the unencrypted blob for the hash calculation, because otherwise the random IV would
* cause every content blob to be unique which would balloon the database size (esp. with revisioning).
* This has minor security implications (it's easy to infer that given content is shared between different
* notes/attachments), but the trade-off comes out clearly positive.
*/
const newBlobId = utils.hashedBlobId(unencryptedContentForHashCalculation);
const blobNeedsInsert = !sql.getValue('SELECT 1 FROM blobs WHERE blobId = ?', [newBlobId]);
if (!blobNeedsInsert) {
return newBlobId;
}
const pojo = {
blobId: newBlobId,
content: content,
dateModified: dateUtils.localNowDateTime(),
utcDateModified: dateUtils.utcNowDateTime()
};
sql.upsert("blobs", "blobId", pojo);
// we can't reuse blobId as an entity_changes hash, because this one has to be calculatable without having
// access to the decrypted content
const hash = blobService.calculateContentHash(pojo);
entityChangesService.putEntityChange({
entityName: 'blobs',
entityId: newBlobId,
hash: hash,
isErased: false,
utcDateChanged: pojo.utcDateModified,
isSynced: true,
// overriding componentId will cause frontend to think the change is coming from a different component
// and thus reload
componentId: opts.forceFrontendReload ? utils.randomString(10) : null
});
eventService.emit(eventService.ENTITY_CHANGED, {
entityName: 'blobs',
entity: this
});
return newBlobId;
}
/**
* @protected
* @returns {string|Buffer}
*/
_getContent() {
const row = sql.getRow(`SELECT content FROM blobs WHERE blobId = ?`, [this.blobId]);
if (!row) {
throw new Error(`Cannot find content for ${this.constructor.primaryKeyName} '${this[this.constructor.primaryKeyName]}', blobId '${this.blobId}'`);
}
return blobService.processContent(row.content, this.isProtected, this.hasStringContent());
}
/**
* Mark the entity as (soft) deleted. It will be completely erased later.
*
* This is a low-level method, for notes and branches use `note.deleteNote()` and 'branch.deleteBranch()` instead.
*
* @param [deleteId=null]
*/
markAsDeleted(deleteId = null) {
const entityId = this[this.constructor.primaryKeyName];
const entityName = this.constructor.entityName;
this.utcDateModified = dateUtils.utcNowDateTime();
sql.execute(`UPDATE ${entityName} SET isDeleted = 1, deleteId = ?, utcDateModified = ?
WHERE ${this.constructor.primaryKeyName} = ?`,
[deleteId, this.utcDateModified, entityId]);
if (this.dateModified) {
this.dateModified = dateUtils.localNowDateTime();
sql.execute(`UPDATE ${entityName} SET dateModified = ? WHERE ${this.constructor.primaryKeyName} = ?`,
[this.dateModified, entityId]);
}
log.info(`Marking ${entityName} ${entityId} as deleted`);
this.putEntityChange(true);
eventService.emit(eventService.ENTITY_DELETED, { entityName, entityId, entity: this });
}
markAsDeletedSimple() {
const entityId = this[this.constructor.primaryKeyName];
const entityName = this.constructor.entityName;
this.utcDateModified = dateUtils.utcNowDateTime();
sql.execute(`UPDATE ${entityName} SET isDeleted = 1, utcDateModified = ?
WHERE ${this.constructor.primaryKeyName} = ?`,
[this.utcDateModified, entityId]);
log.info(`Marking ${entityName} ${entityId} as deleted`);
this.putEntityChange(true);
eventService.emit(eventService.ENTITY_DELETED, { entityName, entityId, entity: this });
}
}
module.exports = AbstractBeccaEntity;
</code></pre>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-sql.html">sql</a></li></ul><h3>Classes</h3><ul><li><a href="AbstractBeccaEntity.html">AbstractBeccaEntity</a></li><li><a href="BAttachment.html">BAttachment</a></li><li><a href="BAttribute.html">BAttribute</a></li><li><a href="BBranch.html">BBranch</a></li><li><a href="BEtapiToken.html">BEtapiToken</a></li><li><a href="BNote.html">BNote</a></li><li><a href="BOption.html">BOption</a></li><li><a href="BRecentNote.html">BRecentNote</a></li><li><a href="BRevision.html">BRevision</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li></ul>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.2</a>
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>

View File

@@ -1,85 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Source: becca/entities/api_token.js</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Source: becca/entities/api_token.js</h1>
<section>
<article>
<pre class="prettyprint source linenums"><code>"use strict";
const dateUtils = require('../../services/date_utils.js');
const AbstractEntity = require("./abstract_entity.js");
/**
* ApiToken is an entity representing token used to authenticate against Trilium API from client applications. Currently used only by Trilium Sender.
*/
class ApiToken extends AbstractEntity {
static get entityName() { return "api_tokens"; }
static get primaryKeyName() { return "apiTokenId"; }
static get hashedProperties() { return ["apiTokenId", "token", "utcDateCreated"]; }
constructor(row) {
super();
/** @type {string} */
this.apiTokenId = row.apiTokenId;
/** @type {string} */
this.token = row.token;
/** @type {string} */
this.utcDateCreated = row.utcDateCreated || dateUtils.utcNowDateTime();
}
getPojo() {
return {
apiTokenId: this.apiTokenId,
token: this.token,
utcDateCreated: this.utcDateCreated
}
}
}
module.exports = ApiToken;
</code></pre>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-sql.html">sql</a></li></ul><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.7</a>
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>

View File

@@ -0,0 +1,284 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Source: becca/entities/battachment.js</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Source: becca/entities/battachment.js</h1>
<section>
<article>
<pre class="prettyprint source linenums"><code>"use strict";
const utils = require('../../services/utils');
const dateUtils = require('../../services/date_utils');
const AbstractBeccaEntity = require("./abstract_becca_entity");
const sql = require("../../services/sql");
const protectedSessionService = require("../../services/protected_session");
const log = require("../../services/log");
const attachmentRoleToNoteTypeMapping = {
'image': 'image'
};
/**
* Attachment represent data related/attached to the note. Conceptually similar to attributes, but intended for
* larger amounts of data and generally not accessible to the user.
*
* @extends AbstractBeccaEntity
*/
class BAttachment extends AbstractBeccaEntity {
static get entityName() { return "attachments"; }
static get primaryKeyName() { return "attachmentId"; }
static get hashedProperties() { return ["attachmentId", "ownerId", "role", "mime", "title", "blobId",
"utcDateScheduledForErasureSince", "utcDateModified"]; }
constructor(row) {
super();
if (!row.ownerId?.trim()) {
throw new Error("'ownerId' must be given to initialize a Attachment entity");
} else if (!row.role?.trim()) {
throw new Error("'role' must be given to initialize a Attachment entity");
} else if (!row.mime?.trim()) {
throw new Error("'mime' must be given to initialize a Attachment entity");
} else if (!row.title?.trim()) {
throw new Error("'title' must be given to initialize a Attachment entity");
}
/** @type {string} */
this.attachmentId = row.attachmentId;
/** @type {string} either noteId or revisionId to which this attachment belongs */
this.ownerId = row.ownerId;
/** @type {string} */
this.role = row.role;
/** @type {string} */
this.mime = row.mime;
/** @type {string} */
this.title = row.title;
/** @type {int} */
this.position = row.position;
/** @type {string} */
this.blobId = row.blobId;
/** @type {boolean} */
this.isProtected = !!row.isProtected;
/** @type {string} */
this.dateModified = row.dateModified;
/** @type {string} */
this.utcDateModified = row.utcDateModified;
/** @type {string} */
this.utcDateScheduledForErasureSince = row.utcDateScheduledForErasureSince;
/** @type {int} optionally added to the entity */
this.contentLength = row.contentLength;
this.decrypt();
}
/** @returns {BAttachment} */
copy() {
return new BAttachment({
ownerId: this.ownerId,
role: this.role,
mime: this.mime,
title: this.title,
blobId: this.blobId,
isProtected: this.isProtected
});
}
/** @returns {BNote} */
getNote() {
return this.becca.notes[this.ownerId];
}
/** @returns {boolean} true if the note has string content (not binary) */
hasStringContent() {
return utils.isStringNote(this.type, this.mime);
}
isContentAvailable() {
return !this.attachmentId // new attachment which was not encrypted yet
|| !this.isProtected
|| protectedSessionService.isProtectedSessionAvailable()
}
getTitleOrProtected() {
return this.isContentAvailable() ? this.title : '[protected]';
}
decrypt() {
if (this.isProtected &amp;&amp; !this.isDecrypted &amp;&amp; protectedSessionService.isProtectedSessionAvailable()) {
try {
this.title = protectedSessionService.decryptString(this.title);
this.isDecrypted = true;
}
catch (e) {
log.error(`Could not decrypt attachment ${this.attachmentId}: ${e.message} ${e.stack}`);
}
}
}
/** @returns {string|Buffer} */
getContent() {
return this._getContent();
}
/**
* @param content
* @param {object} [opts]
* @param {object} [opts.forceSave=false] - will also save this BAttachment entity
* @param {object} [opts.forceFrontendReload=false] - override frontend heuristics on when to reload, instruct to reload
*/
setContent(content, opts) {
this._setContent(content, opts);
}
/** @returns {{note: BNote, branch: BBranch}} */
convertToNote() {
if (this.type === 'search') {
throw new Error(`Note of type search cannot have child notes`);
}
if (!this.getNote()) {
throw new Error("Cannot find note of this attachment. It is possible that this is note revision's attachment. " +
"Converting note revision's attachments to note is not (yet) supported.");
}
if (!(this.role in attachmentRoleToNoteTypeMapping)) {
throw new Error(`Mapping from attachment role '${this.role}' to note's type is not defined`);
}
if (!this.isContentAvailable()) { // isProtected is the same for attachment
throw new Error(`Cannot convert protected attachment outside of protected session`);
}
const noteService = require('../../services/notes');
const { note, branch } = noteService.createNewNote({
parentNoteId: this.ownerId,
title: this.title,
type: attachmentRoleToNoteTypeMapping[this.role],
mime: this.mime,
content: this.getContent(),
isProtected: this.isProtected
});
this.markAsDeleted();
const parentNote = this.getNote();
if (this.role === 'image' &amp;&amp; parentNote.type === 'text') {
const origContent = parentNote.getContent();
const oldAttachmentUrl = `api/attachments/${this.attachmentId}/image/`;
const newNoteUrl = `api/images/${note.noteId}/`;
const fixedContent = utils.replaceAll(origContent, oldAttachmentUrl, newNoteUrl);
if (fixedContent !== origContent) {
parentNote.setContent(fixedContent);
}
noteService.asyncPostProcessContent(note, fixedContent);
}
return { note, branch };
}
getFileName() {
const type = this.role === 'image' ? 'image' : 'file';
return utils.formatDownloadTitle(this.title, type, this.mime);
}
beforeSaving() {
super.beforeSaving();
if (this.position === undefined || this.position === null) {
this.position = 10 + sql.getValue(`SELECT COALESCE(MAX(position), 0)
FROM attachments
WHERE ownerId = ?`, [this.noteId]);
}
this.dateModified = dateUtils.localNowDateTime();
this.utcDateModified = dateUtils.utcNowDateTime();
}
getPojo() {
return {
attachmentId: this.attachmentId,
ownerId: this.ownerId,
role: this.role,
mime: this.mime,
title: this.title,
position: this.position,
blobId: this.blobId,
isProtected: !!this.isProtected,
isDeleted: false,
dateModified: this.dateModified,
utcDateModified: this.utcDateModified,
utcDateScheduledForErasureSince: this.utcDateScheduledForErasureSince,
contentLength: this.contentLength
};
}
getPojoToSave() {
const pojo = this.getPojo();
delete pojo.contentLength;
if (pojo.isProtected) {
if (this.isDecrypted) {
pojo.title = protectedSessionService.encrypt(pojo.title);
}
else {
// updating protected note outside of protected session means we will keep original ciphertexts
delete pojo.title;
}
}
return pojo;
}
}
module.exports = BAttachment;
</code></pre>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-sql.html">sql</a></li></ul><h3>Classes</h3><ul><li><a href="AbstractBeccaEntity.html">AbstractBeccaEntity</a></li><li><a href="BAttachment.html">BAttachment</a></li><li><a href="BAttribute.html">BAttribute</a></li><li><a href="BBranch.html">BBranch</a></li><li><a href="BEtapiToken.html">BEtapiToken</a></li><li><a href="BNote.html">BNote</a></li><li><a href="BOption.html">BOption</a></li><li><a href="BRecentNote.html">BRecentNote</a></li><li><a href="BRevision.html">BRevision</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li></ul>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.2</a>
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>

View File

@@ -2,7 +2,7 @@
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Source: becca/entities/attribute.js</title>
<title>JSDoc: Source: becca/entities/battribute.js</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
@@ -17,7 +17,7 @@
<div id="main">
<h1 class="page-title">Source: becca/entities/attribute.js</h1>
<h1 class="page-title">Source: becca/entities/battribute.js</h1>
@@ -28,17 +28,20 @@
<article>
<pre class="prettyprint source linenums"><code>"use strict";
const Note = require('./note.js');
const AbstractEntity = require("./abstract_entity.js");
const sql = require("../../services/sql.js");
const dateUtils = require("../../services/date_utils.js");
const BNote = require('./bnote');
const AbstractBeccaEntity = require("./abstract_becca_entity");
const sql = require("../../services/sql");
const dateUtils = require("../../services/date_utils");
const promotedAttributeDefinitionParser = require("../../services/promoted_attribute_definition_parser");
const {sanitizeAttributeName} = require("../../services/sanitize_attribute_name");
/**
* Attribute is an abstract concept which has two real uses - label (key - value pair)
* and relation (representing named relationship between source and target note)
*
* @extends AbstractBeccaEntity
*/
class Attribute extends AbstractEntity {
class BAttribute extends AbstractBeccaEntity {
static get entityName() { return "attributes"; }
static get primaryKeyName() { return "attributeId"; }
static get hashedProperties() { return ["attributeId", "noteId", "type", "name", "value", "isInheritable"]; }
@@ -79,7 +82,7 @@ class Attribute extends AbstractEntity {
/** @type {int} */
this.position = position;
/** @type {string} */
this.value = value;
this.value = value || "";
/** @type {boolean} */
this.isInheritable = !!isInheritable;
/** @type {string} */
@@ -95,7 +98,7 @@ class Attribute extends AbstractEntity {
if (!(this.noteId in this.becca.notes)) {
// entities can come out of order in sync, create skeleton which will be filled later
this.becca.addNote(this.noteId, new Note({noteId: this.noteId}));
this.becca.addNote(this.noteId, new BNote({noteId: this.noteId}));
}
this.becca.notes[this.noteId].ownedAttributes.push(this);
@@ -111,9 +114,23 @@ class Attribute extends AbstractEntity {
}
}
validate() {
if (!["label", "relation"].includes(this.type)) {
throw new Error(`Invalid attribute type '${this.type}' in attribute '${this.attributeId}' of note '${this.noteId}'`);
}
if (!this.name?.trim()) {
throw new Error(`Invalid empty name in attribute '${this.attributeId}' of note '${this.noteId}'`);
}
if (this.type === 'relation' &amp;&amp; !(this.value in this.becca.notes)) {
throw new Error(`Cannot save relation '${this.name}' of note '${this.noteId}' since it targets not existing note '${this.value}'.`);
}
}
get isAffectingSubtree() {
return this.isInheritable
|| (this.type === 'relation' &amp;&amp; this.name === 'template');
|| (this.type === 'relation' &amp;&amp; ['template', 'inherit'].includes(this.name));
}
get targetNoteId() { // alias
@@ -135,18 +152,24 @@ class Attribute extends AbstractEntity {
}
/**
* @returns {Note|null}
* @returns {BNote|null}
*/
getNote() {
return this.becca.getNote(this.noteId);
const note = this.becca.getNote(this.noteId);
if (!note) {
throw new Error(`Note '${this.noteId}' of attribute '${this.attributeId}', type '${this.type}', name '${this.name}' does not exist.`);
}
return note;
}
/**
* @returns {Note|null}
* @returns {BNote|null}
*/
getTargetNote() {
if (this.type !== 'relation') {
throw new Error(`Attribute ${this.attributeId} is not relation`);
throw new Error(`Attribute '${this.attributeId}' is not a relation.`);
}
if (!this.value) {
@@ -157,7 +180,7 @@ class Attribute extends AbstractEntity {
}
/**
* @return {boolean}
* @returns {boolean}
*/
isDefinition() {
return this.type === 'label' &amp;&amp; (this.name.startsWith('label:') || this.name.startsWith('relation:'));
@@ -181,19 +204,23 @@ class Attribute extends AbstractEntity {
return !(this.attributeId in this.becca.attributes);
}
beforeSaving() {
if (!this.value) {
if (this.type === 'relation') {
throw new Error(`Cannot save relation ${this.name} since it does not target any note.`);
}
beforeSaving(opts = {}) {
if (!opts.skipValidation) {
this.validate();
}
this.name = sanitizeAttributeName(this.name);
if (!this.value) {
// null value isn't allowed
this.value = "";
}
if (this.position === undefined) {
// TODO: can be calculated from becca
this.position = 1 + sql.getValue(`SELECT COALESCE(MAX(position), 0) FROM attributes WHERE noteId = ?`, [this.noteId]);
if (this.position === undefined || this.position === null) {
const maxExistingPosition = this.getNote().getAttributes()
.reduce((maxPosition, attr) => Math.max(maxPosition, attr.position || 0), 0);
this.position = maxExistingPosition + 10;
}
if (!this.isInheritable) {
@@ -222,7 +249,7 @@ class Attribute extends AbstractEntity {
}
createClone(type, name, value, isInheritable) {
return new Attribute({
return new BAttribute({
noteId: this.noteId,
type: type,
name: name,
@@ -234,7 +261,7 @@ class Attribute extends AbstractEntity {
}
}
module.exports = Attribute;
module.exports = BAttribute;
</code></pre>
</article>
</section>
@@ -245,13 +272,13 @@ module.exports = Attribute;
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-sql.html">sql</a></li></ul><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3>
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-sql.html">sql</a></li></ul><h3>Classes</h3><ul><li><a href="AbstractBeccaEntity.html">AbstractBeccaEntity</a></li><li><a href="BAttachment.html">BAttachment</a></li><li><a href="BAttribute.html">BAttribute</a></li><li><a href="BBranch.html">BBranch</a></li><li><a href="BEtapiToken.html">BEtapiToken</a></li><li><a href="BNote.html">BNote</a></li><li><a href="BOption.html">BOption</a></li><li><a href="BRecentNote.html">BRecentNote</a></li><li><a href="BRevision.html">BRevision</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li></ul>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.7</a>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.2</a>
</footer>
<script> prettyPrint(); </script>

View File

@@ -0,0 +1,81 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Source: becca/entities/bblob.js</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Source: becca/entities/bblob.js</h1>
<section>
<article>
<pre class="prettyprint source linenums"><code>class BBlob {
static get entityName() { return "blobs"; }
static get primaryKeyName() { return "blobId"; }
static get hashedProperties() { return ["blobId", "content"]; }
constructor(row) {
/** @type {string} */
this.blobId = row.blobId;
/** @type {string|Buffer} */
this.content = row.content;
/** @type {int} */
this.contentLength = row.contentLength;
/** @type {string} */
this.dateModified = row.dateModified;
/** @type {string} */
this.utcDateModified = row.utcDateModified;
}
getPojo() {
return {
blobId: this.blobId,
content: this.content,
contentLength: this.contentLength,
dateModified: this.dateModified,
utcDateModified: this.utcDateModified
};
}
}
module.exports = BBlob;
</code></pre>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-sql.html">sql</a></li></ul><h3>Classes</h3><ul><li><a href="AbstractBeccaEntity.html">AbstractBeccaEntity</a></li><li><a href="BAttachment.html">BAttachment</a></li><li><a href="BAttribute.html">BAttribute</a></li><li><a href="BBranch.html">BBranch</a></li><li><a href="BEtapiToken.html">BEtapiToken</a></li><li><a href="BNote.html">BNote</a></li><li><a href="BOption.html">BOption</a></li><li><a href="BRecentNote.html">BRecentNote</a></li><li><a href="BRevision.html">BRevision</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li></ul>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.2</a>
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>

View File

@@ -0,0 +1,333 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Source: becca/entities/bbranch.js</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Source: becca/entities/bbranch.js</h1>
<section>
<article>
<pre class="prettyprint source linenums"><code>"use strict";
const BNote = require('./bnote');
const AbstractBeccaEntity = require("./abstract_becca_entity");
const dateUtils = require("../../services/date_utils");
const utils = require("../../services/utils");
const TaskContext = require("../../services/task_context");
const cls = require("../../services/cls");
const log = require("../../services/log");
/**
* Branch represents a relationship between a child note and its parent note. Trilium allows a note to have multiple
* parents.
*
* Note that you should not rely on the branch's identity, since it can change easily with a note's move.
* Always check noteId instead.
*
* @extends AbstractBeccaEntity
*/
class BBranch extends AbstractBeccaEntity {
static get entityName() { return "branches"; }
static get primaryKeyName() { return "branchId"; }
// notePosition is not part of hash because it would produce a lot of updates in case of reordering
static get hashedProperties() { return ["branchId", "noteId", "parentNoteId", "prefix"]; }
constructor(row) {
super();
if (!row) {
return;
}
this.updateFromRow(row);
this.init();
}
updateFromRow(row) {
this.update([
row.branchId,
row.noteId,
row.parentNoteId,
row.prefix,
row.notePosition,
row.isExpanded,
row.utcDateModified
]);
}
update([branchId, noteId, parentNoteId, prefix, notePosition, isExpanded, utcDateModified]) {
/** @type {string} */
this.branchId = branchId;
/** @type {string} */
this.noteId = noteId;
/** @type {string} */
this.parentNoteId = parentNoteId;
/** @type {string|null} */
this.prefix = prefix;
/** @type {int} */
this.notePosition = notePosition;
/** @type {boolean} */
this.isExpanded = !!isExpanded;
/** @type {string} */
this.utcDateModified = utcDateModified;
return this;
}
init() {
if (this.branchId) {
this.becca.branches[this.branchId] = this;
}
this.becca.childParentToBranch[`${this.noteId}-${this.parentNoteId}`] = this;
const childNote = this.childNote;
if (!childNote.parentBranches.includes(this)) {
childNote.parentBranches.push(this);
}
if (this.noteId === 'root') {
return;
}
const parentNote = this.parentNote;
if (!childNote.parents.includes(parentNote)) {
childNote.parents.push(parentNote);
}
if (!parentNote.children.includes(childNote)) {
parentNote.children.push(childNote);
}
}
/** @returns {BNote} */
get childNote() {
if (!(this.noteId in this.becca.notes)) {
// entities can come out of order in sync/import, create skeleton which will be filled later
this.becca.addNote(this.noteId, new BNote({noteId: this.noteId}));
}
return this.becca.notes[this.noteId];
}
/** @returns {BNote} */
getNote() {
return this.childNote;
}
/** @returns {BNote|undefined} - root branch will have undefined parent, all other branches have to have a parent note */
get parentNote() {
if (!(this.parentNoteId in this.becca.notes) &amp;&amp; this.parentNoteId !== 'none') {
// entities can come out of order in sync/import, create skeleton which will be filled later
this.becca.addNote(this.parentNoteId, new BNote({noteId: this.parentNoteId}));
}
return this.becca.notes[this.parentNoteId];
}
get isDeleted() {
return !(this.branchId in this.becca.branches);
}
/**
* Branch is weak when its existence should not hinder deletion of its note.
* As a result, note with only weak branches should be immediately deleted.
* An example is shared or bookmarked clones - they are created automatically and exist for technical reasons,
* not as user-intended actions. From user perspective, they don't count as real clones and for the purpose
* of deletion should not act as a clone.
*
* @returns {boolean}
*/
get isWeak() {
return ['_share', '_lbBookmarks'].includes(this.parentNoteId);
}
/**
* Delete a branch. If this is a last note's branch, delete the note as well.
*
* @param {string} [deleteId] - optional delete identified
* @param {TaskContext} [taskContext]
*
* @returns {boolean} - true if note has been deleted, false otherwise
*/
deleteBranch(deleteId, taskContext) {
if (!deleteId) {
deleteId = utils.randomString(10);
}
if (!taskContext) {
taskContext = new TaskContext('no-progress-reporting');
}
taskContext.increaseProgressCount();
const note = this.getNote();
if (!taskContext.noteDeletionHandlerTriggered) {
const parentBranches = note.getParentBranches();
if (parentBranches.length === 1 &amp;&amp; parentBranches[0] === this) {
// needs to be run before branches and attributes are deleted and thus attached relations disappear
const handlers = require("../../services/handlers");
handlers.runAttachedRelations(note, 'runOnNoteDeletion', note);
}
}
if (this.noteId === 'root'
|| this.noteId === cls.getHoistedNoteId()) {
throw new Error("Can't delete root or hoisted branch/note");
}
this.markAsDeleted(deleteId);
const notDeletedBranches = note.getStrongParentBranches();
if (notDeletedBranches.length === 0) {
for (const weakBranch of note.getParentBranches()) {
weakBranch.markAsDeleted(deleteId);
}
for (const childBranch of note.getChildBranches()) {
childBranch.deleteBranch(deleteId, taskContext);
}
// first delete children and then parent - this will show up better in recent changes
log.info(`Deleting note '${note.noteId}'`);
this.becca.notes[note.noteId].isBeingDeleted = true;
for (const attribute of note.getOwnedAttributes().slice()) {
attribute.markAsDeleted(deleteId);
}
for (const relation of note.getTargetRelations()) {
relation.markAsDeleted(deleteId);
}
for (const attachment of note.getAttachments()) {
attachment.markAsDeleted(deleteId);
}
note.markAsDeleted(deleteId);
return true;
}
else {
return false;
}
}
beforeSaving() {
if (!this.noteId || !this.parentNoteId) {
throw new Error(`noteId and parentNoteId are mandatory properties for Branch`);
}
this.branchId = `${this.parentNoteId}_${this.noteId}`;
if (this.notePosition === undefined || this.notePosition === null) {
let maxNotePos = 0;
for (const childBranch of this.parentNote.getChildBranches()) {
if (maxNotePos &lt; childBranch.notePosition
&amp;&amp; childBranch.noteId !== '_hidden' // hidden has a very large notePosition to always stay last
) {
maxNotePos = childBranch.notePosition;
}
}
this.notePosition = maxNotePos + 10;
}
if (!this.isExpanded) {
this.isExpanded = false;
}
if (!this.prefix?.trim()) {
this.prefix = null;
}
this.utcDateModified = dateUtils.utcNowDateTime();
super.beforeSaving();
this.becca.branches[this.branchId] = this;
}
getPojo() {
return {
branchId: this.branchId,
noteId: this.noteId,
parentNoteId: this.parentNoteId,
prefix: this.prefix,
notePosition: this.notePosition,
isExpanded: this.isExpanded,
isDeleted: false,
utcDateModified: this.utcDateModified
};
}
createClone(parentNoteId, notePosition) {
const existingBranch = this.becca.getBranchFromChildAndParent(this.noteId, parentNoteId);
if (existingBranch) {
existingBranch.notePosition = notePosition;
return existingBranch;
} else {
return new BBranch({
noteId: this.noteId,
parentNoteId: parentNoteId,
notePosition: notePosition,
prefix: this.prefix,
isExpanded: this.isExpanded
});
}
}
}
module.exports = BBranch;
</code></pre>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-sql.html">sql</a></li></ul><h3>Classes</h3><ul><li><a href="AbstractBeccaEntity.html">AbstractBeccaEntity</a></li><li><a href="BAttachment.html">BAttachment</a></li><li><a href="BAttribute.html">BAttribute</a></li><li><a href="BBranch.html">BBranch</a></li><li><a href="BEtapiToken.html">BEtapiToken</a></li><li><a href="BNote.html">BNote</a></li><li><a href="BOption.html">BOption</a></li><li><a href="BRecentNote.html">BRecentNote</a></li><li><a href="BRevision.html">BRevision</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li></ul>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.2</a>
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>

View File

@@ -0,0 +1,129 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Source: becca/entities/betapi_token.js</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Source: becca/entities/betapi_token.js</h1>
<section>
<article>
<pre class="prettyprint source linenums"><code>"use strict";
const dateUtils = require('../../services/date_utils');
const AbstractBeccaEntity = require("./abstract_becca_entity");
/**
* EtapiToken is an entity representing token used to authenticate against Trilium REST API from client applications.
* Used by:
* - Trilium Sender
* - ETAPI clients
*
* The format user is presented with is "&lt;etapiTokenId>_&lt;tokenHash>". This is also called "authToken" to distinguish it
* from tokenHash and token.
*
* @extends AbstractBeccaEntity
*/
class BEtapiToken extends AbstractBeccaEntity {
static get entityName() { return "etapi_tokens"; }
static get primaryKeyName() { return "etapiTokenId"; }
static get hashedProperties() { return ["etapiTokenId", "name", "tokenHash", "utcDateCreated", "utcDateModified", "isDeleted"]; }
constructor(row) {
super();
if (!row) {
return;
}
this.updateFromRow(row);
this.init();
}
updateFromRow(row) {
/** @type {string} */
this.etapiTokenId = row.etapiTokenId;
/** @type {string} */
this.name = row.name;
/** @type {string} */
this.tokenHash = row.tokenHash;
/** @type {string} */
this.utcDateCreated = row.utcDateCreated || dateUtils.utcNowDateTime();
/** @type {string} */
this.utcDateModified = row.utcDateModified || this.utcDateCreated;
/** @type {boolean} */
this.isDeleted = !!row.isDeleted;
if (this.etapiTokenId) {
this.becca.etapiTokens[this.etapiTokenId] = this;
}
}
init() {
if (this.etapiTokenId) {
this.becca.etapiTokens[this.etapiTokenId] = this;
}
}
getPojo() {
return {
etapiTokenId: this.etapiTokenId,
name: this.name,
tokenHash: this.tokenHash,
utcDateCreated: this.utcDateCreated,
utcDateModified: this.utcDateModified,
isDeleted: this.isDeleted
}
}
beforeSaving() {
this.utcDateModified = dateUtils.utcNowDateTime();
super.beforeSaving();
this.becca.etapiTokens[this.etapiTokenId] = this;
}
}
module.exports = BEtapiToken;
</code></pre>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-sql.html">sql</a></li></ul><h3>Classes</h3><ul><li><a href="AbstractBeccaEntity.html">AbstractBeccaEntity</a></li><li><a href="BAttachment.html">BAttachment</a></li><li><a href="BAttribute.html">BAttribute</a></li><li><a href="BBranch.html">BBranch</a></li><li><a href="BEtapiToken.html">BEtapiToken</a></li><li><a href="BNote.html">BNote</a></li><li><a href="BOption.html">BOption</a></li><li><a href="BRecentNote.html">BRecentNote</a></li><li><a href="BRevision.html">BRevision</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li></ul>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.2</a>
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,7 @@
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Source: becca/entities/option.js</title>
<title>JSDoc: Source: becca/entities/boption.js</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
@@ -17,7 +17,7 @@
<div id="main">
<h1 class="page-title">Source: becca/entities/option.js</h1>
<h1 class="page-title">Source: becca/entities/boption.js</h1>
@@ -28,13 +28,15 @@
<article>
<pre class="prettyprint source linenums"><code>"use strict";
const dateUtils = require('../../services/date_utils.js');
const AbstractEntity = require("./abstract_entity.js");
const dateUtils = require('../../services/date_utils');
const AbstractBeccaEntity = require("./abstract_becca_entity");
/**
* Option represents name-value pair, either directly configurable by the user or some system property.
* Option represents a name-value pair, either directly configurable by the user or some system property.
*
* @extends AbstractBeccaEntity
*/
class Option extends AbstractEntity {
class BOption extends AbstractBeccaEntity {
static get entityName() { return "options"; }
static get primaryKeyName() { return "name"; }
static get hashedProperties() { return ["name", "value"]; }
@@ -42,6 +44,11 @@ class Option extends AbstractEntity {
constructor(row) {
super();
this.updateFromRow(row);
this.becca.options[this.name] = this;
}
updateFromRow(row) {
/** @type {string} */
this.name = row.name;
/** @type {string} */
@@ -50,8 +57,6 @@ class Option extends AbstractEntity {
this.isSynced = !!row.isSynced;
/** @type {string} */
this.utcDateModified = row.utcDateModified;
this.becca.options[this.name] = this;
}
beforeSaving() {
@@ -65,14 +70,12 @@ class Option extends AbstractEntity {
name: this.name,
value: this.value,
isSynced: this.isSynced,
utcDateModified: this.utcDateModified,
// utcDateCreated is scheduled for removal so the value does not matter
utcDateCreated: dateUtils.utcNowDateTime()
utcDateModified: this.utcDateModified
}
}
}
module.exports = Option;
module.exports = BOption;
</code></pre>
</article>
</section>
@@ -83,13 +86,13 @@ module.exports = Option;
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-sql.html">sql</a></li></ul><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3>
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-sql.html">sql</a></li></ul><h3>Classes</h3><ul><li><a href="AbstractBeccaEntity.html">AbstractBeccaEntity</a></li><li><a href="BAttachment.html">BAttachment</a></li><li><a href="BAttribute.html">BAttribute</a></li><li><a href="BBranch.html">BBranch</a></li><li><a href="BEtapiToken.html">BEtapiToken</a></li><li><a href="BNote.html">BNote</a></li><li><a href="BOption.html">BOption</a></li><li><a href="BRecentNote.html">BRecentNote</a></li><li><a href="BRevision.html">BRevision</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li></ul>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.7</a>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.2</a>
</footer>
<script> prettyPrint(); </script>

View File

@@ -1,207 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Source: becca/entities/branch.js</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Source: becca/entities/branch.js</h1>
<section>
<article>
<pre class="prettyprint source linenums"><code>"use strict";
const Note = require('./note.js');
const AbstractEntity = require("./abstract_entity.js");
const sql = require("../../services/sql.js");
const dateUtils = require("../../services/date_utils.js");
/**
* Branch represents a relationship between a child note and its parent note. Trilium allows a note to have multiple
* parents.
*/
class Branch extends AbstractEntity {
static get entityName() { return "branches"; }
static get primaryKeyName() { return "branchId"; }
// notePosition is not part of hash because it would produce a lot of updates in case of reordering
static get hashedProperties() { return ["branchId", "noteId", "parentNoteId", "prefix"]; }
constructor(row) {
super();
if (!row) {
return;
}
this.updateFromRow(row);
this.init();
}
updateFromRow(row) {
this.update([
row.branchId,
row.noteId,
row.parentNoteId,
row.prefix,
row.notePosition,
row.isExpanded,
row.utcDateModified
]);
}
update([branchId, noteId, parentNoteId, prefix, notePosition, isExpanded, utcDateModified]) {
/** @type {string} */
this.branchId = branchId;
/** @type {string} */
this.noteId = noteId;
/** @type {string} */
this.parentNoteId = parentNoteId;
/** @type {string} */
this.prefix = prefix;
/** @type {int} */
this.notePosition = notePosition;
/** @type {boolean} */
this.isExpanded = !!isExpanded;
/** @type {string} */
this.utcDateModified = utcDateModified;
return this;
}
init() {
if (this.branchId === 'root') {
return;
}
const childNote = this.childNote;
const parentNote = this.parentNote;
if (!childNote.parents.includes(parentNote)) {
childNote.parents.push(parentNote);
}
if (!childNote.parentBranches.includes(this)) {
childNote.parentBranches.push(this);
}
if (!parentNote.children.includes(childNote)) {
parentNote.children.push(childNote);
}
this.becca.branches[this.branchId] = this;
this.becca.childParentToBranch[`${this.noteId}-${this.parentNoteId}`] = this;
}
/** @returns {Note} */
get childNote() {
if (!(this.noteId in this.becca.notes)) {
// entities can come out of order in sync, create skeleton which will be filled later
this.becca.addNote(this.noteId, new Note({noteId: this.noteId}));
}
return this.becca.notes[this.noteId];
}
getNote() {
return this.childNote;
}
/** @returns {Note} */
get parentNote() {
if (!(this.parentNoteId in this.becca.notes)) {
// entities can come out of order in sync, create skeleton which will be filled later
this.becca.addNote(this.parentNoteId, new Note({noteId: this.parentNoteId}));
}
return this.becca.notes[this.parentNoteId];
}
get isDeleted() {
return !(this.branchId in this.becca.branches);
}
beforeSaving() {
if (this.notePosition === undefined || this.notePosition === null) {
// TODO finding new position can be refactored into becca
const maxNotePos = sql.getValue('SELECT MAX(notePosition) FROM branches WHERE parentNoteId = ? AND isDeleted = 0', [this.parentNoteId]);
this.notePosition = maxNotePos === null ? 0 : maxNotePos + 10;
}
if (!this.isExpanded) {
this.isExpanded = false;
}
this.utcDateModified = dateUtils.utcNowDateTime();
super.beforeSaving();
this.becca.branches[this.branchId] = this;
}
getPojo() {
return {
branchId: this.branchId,
noteId: this.noteId,
parentNoteId: this.parentNoteId,
prefix: this.prefix,
notePosition: this.notePosition,
isExpanded: this.isExpanded,
isDeleted: false,
utcDateModified: this.utcDateModified,
// not used for anything, will be later dropped
utcDateCreated: dateUtils.utcNowDateTime()
};
}
createClone(parentNoteId, notePosition) {
return new Branch({
noteId: this.noteId,
parentNoteId: parentNoteId,
notePosition: notePosition,
prefix: this.prefix,
isExpanded: this.isExpanded
});
}
}
module.exports = Branch;
</code></pre>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-sql.html">sql</a></li></ul><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.7</a>
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>

View File

@@ -2,7 +2,7 @@
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Source: becca/entities/recent_note.js</title>
<title>JSDoc: Source: becca/entities/brecent_note.js</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
@@ -17,7 +17,7 @@
<div id="main">
<h1 class="page-title">Source: becca/entities/recent_note.js</h1>
<h1 class="page-title">Source: becca/entities/brecent_note.js</h1>
@@ -28,13 +28,15 @@
<article>
<pre class="prettyprint source linenums"><code>"use strict";
const dateUtils = require('../../services/date_utils.js');
const AbstractEntity = require("./abstract_entity.js");
const dateUtils = require('../../services/date_utils');
const AbstractBeccaEntity = require("./abstract_becca_entity");
/**
* RecentNote represents recently visited note.
*
* @extends AbstractBeccaEntity
*/
class RecentNote extends AbstractEntity {
class BRecentNote extends AbstractBeccaEntity {
static get entityName() { return "recent_notes"; }
static get primaryKeyName() { return "noteId"; }
@@ -58,7 +60,7 @@ class RecentNote extends AbstractEntity {
}
}
module.exports = RecentNote;
module.exports = BRecentNote;
</code></pre>
</article>
</section>
@@ -69,13 +71,13 @@ module.exports = RecentNote;
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-sql.html">sql</a></li></ul><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3>
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-sql.html">sql</a></li></ul><h3>Classes</h3><ul><li><a href="AbstractBeccaEntity.html">AbstractBeccaEntity</a></li><li><a href="BAttachment.html">BAttachment</a></li><li><a href="BAttribute.html">BAttribute</a></li><li><a href="BBranch.html">BBranch</a></li><li><a href="BEtapiToken.html">BEtapiToken</a></li><li><a href="BNote.html">BNote</a></li><li><a href="BOption.html">BOption</a></li><li><a href="BRecentNote.html">BRecentNote</a></li><li><a href="BRevision.html">BRevision</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li></ul>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.7</a>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.2</a>
</footer>
<script> prettyPrint(); </script>

View File

@@ -0,0 +1,203 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Source: becca/entities/brevision.js</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Source: becca/entities/brevision.js</h1>
<section>
<article>
<pre class="prettyprint source linenums"><code>"use strict";
const protectedSessionService = require('../../services/protected_session');
const utils = require('../../services/utils');
const dateUtils = require('../../services/date_utils');
const becca = require('../becca');
const AbstractBeccaEntity = require("./abstract_becca_entity");
const sql = require("../../services/sql");
const BAttachment = require("./battachment");
/**
* Revision represents a snapshot of note's title and content at some point in the past.
* It's used for seamless note versioning.
*
* @extends AbstractBeccaEntity
*/
class BRevision extends AbstractBeccaEntity {
static get entityName() { return "revisions"; }
static get primaryKeyName() { return "revisionId"; }
static get hashedProperties() { return ["revisionId", "noteId", "title", "isProtected", "dateLastEdited", "dateCreated",
"utcDateLastEdited", "utcDateCreated", "utcDateModified", "blobId"]; }
constructor(row, titleDecrypted = false) {
super();
/** @type {string} */
this.revisionId = row.revisionId;
/** @type {string} */
this.noteId = row.noteId;
/** @type {string} */
this.type = row.type;
/** @type {string} */
this.mime = row.mime;
/** @type {boolean} */
this.isProtected = !!row.isProtected;
/** @type {string} */
this.title = row.title;
/** @type {string} */
this.blobId = row.blobId;
/** @type {string} */
this.dateLastEdited = row.dateLastEdited;
/** @type {string} */
this.dateCreated = row.dateCreated;
/** @type {string} */
this.utcDateLastEdited = row.utcDateLastEdited;
/** @type {string} */
this.utcDateCreated = row.utcDateCreated;
/** @type {string} */
this.utcDateModified = row.utcDateModified;
/** @type {int} */
this.contentLength = row.contentLength;
if (this.isProtected &amp;&amp; !titleDecrypted) {
this.title = protectedSessionService.isProtectedSessionAvailable()
? protectedSessionService.decryptString(this.title)
: "[protected]";
}
}
getNote() {
return becca.notes[this.noteId];
}
/** @returns {boolean} true if the note has string content (not binary) */
hasStringContent() {
return utils.isStringNote(this.type, this.mime);
}
isContentAvailable() {
return !this.revisionId // new note which was not encrypted yet
|| !this.isProtected
|| protectedSessionService.isProtectedSessionAvailable()
}
/*
* Note revision content has quite special handling - it's not a separate entity, but a lazily loaded
* part of Revision entity with its own sync. The reason behind this hybrid design is that
* content can be quite large, and it's not necessary to load it / fill memory for any note access even
* if we don't need a content, especially for bulk operations like search.
*
* This is the same approach as is used for Note's content.
*/
/** @returns {string|Buffer} */
getContent() {
return this._getContent();
}
/**
* @param content
* @param {object} [opts]
* @param {object} [opts.forceSave=false] - will also save this BRevision entity
*/
setContent(content, opts) {
this._setContent(content, opts);
}
/** @returns {BAttachment[]} */
getAttachments() {
return sql.getRows(`
SELECT attachments.*
FROM attachments
WHERE ownerId = ?
AND isDeleted = 0`, [this.revisionId])
.map(row => new BAttachment(row));
}
beforeSaving() {
super.beforeSaving();
this.utcDateModified = dateUtils.utcNowDateTime();
}
getPojo() {
return {
revisionId: this.revisionId,
noteId: this.noteId,
type: this.type,
mime: this.mime,
isProtected: this.isProtected,
title: this.title,
blobId: this.blobId,
dateLastEdited: this.dateLastEdited,
dateCreated: this.dateCreated,
utcDateLastEdited: this.utcDateLastEdited,
utcDateCreated: this.utcDateCreated,
utcDateModified: this.utcDateModified,
content: this.content, // used when retrieving full note revision to frontend
contentLength: this.contentLength
};
}
getPojoToSave() {
const pojo = this.getPojo();
delete pojo.content; // not getting persisted
delete pojo.contentLength; // not getting persisted
if (pojo.isProtected) {
if (protectedSessionService.isProtectedSessionAvailable()) {
pojo.title = protectedSessionService.encrypt(this.title);
}
else {
// updating protected note outside of protected session means we will keep original ciphertexts
delete pojo.title;
}
}
return pojo;
}
}
module.exports = BRevision;
</code></pre>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-sql.html">sql</a></li></ul><h3>Classes</h3><ul><li><a href="AbstractBeccaEntity.html">AbstractBeccaEntity</a></li><li><a href="BAttachment.html">BAttachment</a></li><li><a href="BAttribute.html">BAttribute</a></li><li><a href="BBranch.html">BBranch</a></li><li><a href="BEtapiToken.html">BEtapiToken</a></li><li><a href="BNote.html">BNote</a></li><li><a href="BOption.html">BOption</a></li><li><a href="BRecentNote.html">BRecentNote</a></li><li><a href="BRevision.html">BRevision</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li></ul>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.2</a>
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@@ -1,245 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Source: becca/entities/note_revision.js</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Source: becca/entities/note_revision.js</h1>
<section>
<article>
<pre class="prettyprint source linenums"><code>"use strict";
const protectedSessionService = require('../../services/protected_session');
const utils = require('../../services/utils');
const sql = require('../../services/sql');
const dateUtils = require('../../services/date_utils');
const becca = require('../becca.js');
const entityChangesService = require('../../services/entity_changes');
const AbstractEntity = require("./abstract_entity.js");
/**
* NoteRevision represents snapshot of note's title and content at some point in the past.
* It's used for seamless note versioning.
*/
class NoteRevision extends AbstractEntity {
static get entityName() { return "note_revisions"; }
static get primaryKeyName() { return "noteRevisionId"; }
static get hashedProperties() { return ["noteRevisionId", "noteId", "title", "isProtected", "dateLastEdited", "dateCreated", "utcDateLastEdited", "utcDateCreated", "utcDateModified"]; }
constructor(row) {
super();
/** @type {string} */
this.noteRevisionId = row.noteRevisionId;
/** @type {string} */
this.noteId = row.noteId;
/** @type {string} */
this.type = row.type;
/** @type {string} */
this.mime = row.mime;
/** @type {boolean} */
this.isProtected = !!row.isProtected;
/** @type {string} */
this.title = row.title;
/** @type {string} */
this.dateLastEdited = row.dateLastEdited;
/** @type {string} */
this.dateCreated = row.dateCreated;
/** @type {string} */
this.utcDateLastEdited = row.utcDateLastEdited;
/** @type {string} */
this.utcDateCreated = row.utcDateCreated;
/** @type {string} */
this.utcDateModified = row.utcDateModified;
/** @type {number} */
this.contentLength = row.contentLength;
if (this.isProtected) {
if (protectedSessionService.isProtectedSessionAvailable()) {
this.title = protectedSessionService.decryptString(this.title);
}
else {
this.title = "[protected]";
}
}
}
getNote() {
return becca.notes[this.noteId];
}
/** @returns {boolean} true if the note has string content (not binary) */
isStringNote() {
return utils.isStringNote(this.type, this.mime);
}
/*
* Note revision content has quite special handling - it's not a separate entity, but a lazily loaded
* part of NoteRevision entity with it's own sync. Reason behind this hybrid design is that
* content can be quite large and it's not necessary to load it / fill memory for any note access even
* if we don't need a content, especially for bulk operations like search.
*
* This is the same approach as is used for Note's content.
*/
/** @returns {*} */
getContent(silentNotFoundError = false) {
const res = sql.getRow(`SELECT content FROM note_revision_contents WHERE noteRevisionId = ?`, [this.noteRevisionId]);
if (!res) {
if (silentNotFoundError) {
return undefined;
}
else {
throw new Error("Cannot find note revision content for noteRevisionId=" + this.noteRevisionId);
}
}
let content = res.content;
if (this.isProtected) {
if (protectedSessionService.isProtectedSessionAvailable()) {
content = protectedSessionService.decrypt(content);
}
else {
content = "";
}
}
if (this.isStringNote()) {
return content === null
? ""
: content.toString("UTF-8");
}
else {
return content;
}
}
setContent(content, ignoreMissingProtectedSession = false) {
const pojo = {
noteRevisionId: this.noteRevisionId,
content: content,
utcDateModified: dateUtils.utcNowDateTime()
};
if (this.isProtected) {
if (protectedSessionService.isProtectedSessionAvailable()) {
pojo.content = protectedSessionService.encrypt(pojo.content);
}
else if (!ignoreMissingProtectedSession) {
throw new Error(`Cannot update content of noteRevisionId=${this.noteRevisionId} since we're out of protected session.`);
}
}
sql.upsert("note_revision_contents", "noteRevisionId", pojo);
const hash = utils.hash(this.noteRevisionId + "|" + pojo.content.toString());
entityChangesService.addEntityChange({
entityName: 'note_revision_contents',
entityId: this.noteRevisionId,
hash: hash,
isErased: false,
utcDateChanged: this.getUtcDateChanged(),
isSynced: true
});
}
/** @returns {{contentLength, dateModified, utcDateModified}} */
getContentMetadata() {
return sql.getRow(`
SELECT
LENGTH(content) AS contentLength,
dateModified,
utcDateModified
FROM note_revision_contents
WHERE noteRevisionId = ?`, [this.noteRevisionId]);
}
beforeSaving() {
super.beforeSaving();
this.utcDateModified = dateUtils.utcNowDateTime();
}
getPojo() {
return {
noteRevisionId: this.noteRevisionId,
noteId: this.noteId,
type: this.type,
mime: this.mime,
isProtected: this.isProtected,
title: this.title,
dateLastEdited: this.dateLastEdited,
dateCreated: this.dateCreated,
utcDateLastEdited: this.utcDateLastEdited,
utcDateCreated: this.utcDateCreated,
utcDateModified: this.utcDateModified,
content: this.content,
contentLength: this.contentLength
};
}
getPojoToSave() {
const pojo = this.getPojo();
delete pojo.content; // not getting persisted
delete pojo.contentLength; // not getting persisted
if (pojo.isProtected) {
if (protectedSessionService.isProtectedSessionAvailable()) {
pojo.title = protectedSessionService.encrypt(this.title);
}
else {
// updating protected note outside of protected session means we will keep original ciphertexts
delete pojo.title;
}
}
return pojo;
}
}
module.exports = NoteRevision;
</code></pre>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-sql.html">sql</a></li></ul><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.7</a>
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@@ -50,13 +50,13 @@
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-sql.html">sql</a></li></ul><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3>
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-sql.html">sql</a></li></ul><h3>Classes</h3><ul><li><a href="AbstractBeccaEntity.html">AbstractBeccaEntity</a></li><li><a href="BAttachment.html">BAttachment</a></li><li><a href="BAttribute.html">BAttribute</a></li><li><a href="BBranch.html">BBranch</a></li><li><a href="BEtapiToken.html">BEtapiToken</a></li><li><a href="BNote.html">BNote</a></li><li><a href="BOption.html">BOption</a></li><li><a href="BRecentNote.html">BRecentNote</a></li><li><a href="BRevision.html">BRevision</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li></ul>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.7</a>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.2</a>
</footer>
<script> prettyPrint(); </script>

View File

@@ -28,8 +28,6 @@
<header>
</header>
<article>
@@ -38,6 +36,50 @@
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_sql.js.html">services/sql.js</a>, <a href="services_sql.js.html#line3">line 3</a>
</li></ul></dd>
</dl>
</div>
@@ -208,7 +250,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_sql.js.html">services/sql.js</a>, <a href="services_sql.js.html#line352">line 352</a>
<a href="services_sql.js.html">services/sql.js</a>, <a href="services_sql.js.html#line364">line 364</a>
</li></ul></dd>
@@ -388,7 +430,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_sql.js.html">services/sql.js</a>, <a href="services_sql.js.html#line343">line 343</a>
<a href="services_sql.js.html">services/sql.js</a>, <a href="services_sql.js.html#line355">line 355</a>
</li></ul></dd>
@@ -590,7 +632,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_sql.js.html">services/sql.js</a>, <a href="services_sql.js.html#line333">line 333</a>
<a href="services_sql.js.html">services/sql.js</a>, <a href="services_sql.js.html#line345">line 345</a>
</li></ul></dd>
@@ -792,7 +834,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_sql.js.html">services/sql.js</a>, <a href="services_sql.js.html#line309">line 309</a>
<a href="services_sql.js.html">services/sql.js</a>, <a href="services_sql.js.html#line321">line 321</a>
</li></ul></dd>
@@ -994,7 +1036,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_sql.js.html">services/sql.js</a>, <a href="services_sql.js.html#line320">line 320</a>
<a href="services_sql.js.html">services/sql.js</a>, <a href="services_sql.js.html#line332">line 332</a>
</li></ul></dd>
@@ -1196,7 +1238,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_sql.js.html">services/sql.js</a>, <a href="services_sql.js.html#line299">line 299</a>
<a href="services_sql.js.html">services/sql.js</a>, <a href="services_sql.js.html#line311">line 311</a>
</li></ul></dd>
@@ -1252,13 +1294,13 @@
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-sql.html">sql</a></li></ul><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3>
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-sql.html">sql</a></li></ul><h3>Classes</h3><ul><li><a href="AbstractBeccaEntity.html">AbstractBeccaEntity</a></li><li><a href="BAttachment.html">BAttachment</a></li><li><a href="BAttribute.html">BAttribute</a></li><li><a href="BBranch.html">BBranch</a></li><li><a href="BEtapiToken.html">BEtapiToken</a></li><li><a href="BNote.html">BNote</a></li><li><a href="BOption.html">BOption</a></li><li><a href="BRecentNote.html">BRecentNote</a></li><li><a href="BRevision.html">BRevision</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li></ul>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.7</a>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.2</a>
</footer>
<script> prettyPrint(); </script>

View File

@@ -42,37 +42,40 @@ const appInfo = require('./app_info');
const searchService = require('./search/services/search');
const SearchContext = require("./search/search_context");
const becca = require("../becca/becca");
const ws = require("./ws");
const SpacedUpdate = require("./spaced_update");
const specialNotesService = require("./special_notes");
const branchService = require("./branches");
const exportService = require("./export/zip");
/**
* This is the main backend API interface for scripts. It's published in the local "api" object.
* &lt;p>This is the main backend API interface for scripts. All the properties and methods are published in the "api" object
* available in the JS backend notes. You can use e.g. &lt;code>api.log(api.startNote.title);&lt;/code>&lt;/p>
*
* @constructor
* @hideconstructor
*/
function BackendScriptApi(currentNote, apiParams) {
/** @property {Note} note where script started executing */
/** @property {BNote} note where the script started executing */
this.startNote = apiParams.startNote;
/** @property {Note} note where script is currently executing. Don't mix this up with concept of active note */
/** @property {BNote} note where the script is currently executing. Don't mix this up with the concept of active note */
this.currentNote = currentNote;
/** @property {Entity} entity whose event triggered this executions */
/** @property {AbstractBeccaEntity} entity whose event triggered this execution */
this.originEntity = apiParams.originEntity;
for (const key in apiParams) {
this[key] = apiParams[key];
}
/** @property {axios} Axios library for HTTP requests. See https://axios-http.com/ for documentation */
/**
* @property {axios} Axios library for HTTP requests. See {@link https://axios-http.com} for documentation
* @deprecated use native (browser compatible) fetch() instead
*/
this.axios = axios;
/** @property {dayjs} day.js library for date manipulation. See https://day.js.org/ for documentation */
/** @property {dayjs} day.js library for date manipulation. See {@link https://day.js.org} for documentation */
this.dayjs = dayjs;
/** @property {axios} xml2js library for XML parsing. See https://github.com/Leonidas-from-XIV/node-xml2js for documentation */
/** @property {axios} xml2js library for XML parsing. See {@link https://github.com/Leonidas-from-XIV/node-xml2js} for documentation */
this.xml2js = xml2js;
// DEPRECATED - use direct api.unescapeHtml
this.utils = {
unescapeHtml: utils.unescapeHtml
};
/**
* Instance name identifies particular Trilium instance. It can be useful for scripts
* if some action needs to happen on only one specific instance.
@@ -84,32 +87,32 @@ function BackendScriptApi(currentNote, apiParams) {
/**
* @method
* @param {string} noteId
* @returns {Note|null}
* @returns {BNote|null}
*/
this.getNote = noteId => becca.getNote(noteId);
/**
* @method
* @param {string} branchId
* @returns {Branch|null}
* @returns {BBranch|null}
*/
this.getBranch = branchId => becca.getBranch(branchId);
/**
* @method
* @param {string} attributeId
* @returns {Attribute|null}
* @returns {BAttribute|null}
*/
this.getAttribute = attributeId => becca.getAttribute(attributeId);
/**
* This is a powerful search method - you can search by attributes and their values, e.g.:
* "#dateModified =* MONTH AND #log". See full documentation for all options at: https://github.com/zadam/trilium/wiki/Search
* "#dateModified =* MONTH AND #log". See {@link https://github.com/zadam/trilium/wiki/Search} for full documentation for all options
*
* @method
* @param {string} query
* @param {Object} [searchParams]
* @returns {Note[]}
* @returns {BNote[]}
*/
this.searchForNotes = (query, searchParams = {}) => {
if (searchParams.includeArchivedNotes === undefined) {
@@ -128,12 +131,12 @@ function BackendScriptApi(currentNote, apiParams) {
/**
* This is a powerful search method - you can search by attributes and their values, e.g.:
* "#dateModified =* MONTH AND #log". See full documentation for all options at: https://github.com/zadam/trilium/wiki/Search
* "#dateModified =* MONTH AND #log". See {@link https://github.com/zadam/trilium/wiki/Search} for full documentation for all options
*
* @method
* @param {string} query
* @param {Object} [searchParams]
* @returns {Note|null}
* @returns {BNote|null}
*/
this.searchForNote = (query, searchParams = {}) => {
const notes = this.searchForNotes(query, searchParams);
@@ -147,7 +150,7 @@ function BackendScriptApi(currentNote, apiParams) {
* @method
* @param {string} name - attribute name
* @param {string} [value] - attribute value
* @returns {Note[]}
* @returns {BNote[]}
*/
this.getNotesWithLabel = attributeService.getNotesWithLabel;
@@ -157,23 +160,23 @@ function BackendScriptApi(currentNote, apiParams) {
* @method
* @param {string} name - attribute name
* @param {string} [value] - attribute value
* @returns {Note|null}
* @returns {BNote|null}
*/
this.getNoteWithLabel = attributeService.getNoteWithLabel;
/**
* If there's no branch between note and parent note, create one. Otherwise do nothing.
* If there's no branch between note and parent note, create one. Otherwise, do nothing. Returns the new or existing branch.
*
* @method
* @param {string} noteId
* @param {string} parentNoteId
* @param {string} prefix - if branch will be create between note and parent note, set this prefix
* @returns {void}
* @param {string} prefix - if branch is created between note and parent note, set this prefix
* @returns {{branch: BBranch|null}}
*/
this.ensureNoteIsPresentInParent = cloningService.ensureNoteIsPresentInParent;
/**
* If there's a branch between note and parent note, remove it. Otherwise do nothing.
* If there's a branch between note and parent note, remove it. Otherwise, do nothing.
*
* @method
* @param {string} noteId
@@ -189,25 +192,19 @@ function BackendScriptApi(currentNote, apiParams) {
* @param {boolean} present - true if we want the branch to exist, false if we want it gone
* @param {string} noteId
* @param {string} parentNoteId
* @param {string} prefix - if branch will be create between note and parent note, set this prefix
* @param {string} prefix - if branch is created between note and parent note, set this prefix
* @returns {void}
*/
this.toggleNoteInParent = cloningService.toggleNoteInParent;
/**
* @typedef {object} CreateNoteAttribute
* @property {string} type - attribute type - label, relation etc.
* @property {string} name - attribute name
* @property {string} [value] - attribute value
*/
/**
* Create text note. See also createNewNote() for more options.
*
* @method
* @param {string} parentNoteId
* @param {string} title
* @param {string} content
* @return {{note: Note, branch: Branch}} - object having "note" and "branch" keys representing respective objects
* @returns {{note: BNote, branch: BBranch}} - object having "note" and "branch" keys representing respective objects
*/
this.createTextNote = (parentNoteId, title, content = '') => noteService.createNewNote({
parentNoteId,
@@ -220,10 +217,11 @@ function BackendScriptApi(currentNote, apiParams) {
* Create data note - data in this context means object serializable to JSON. Created note will be of type 'code' and
* JSON MIME type. See also createNewNote() for more options.
*
* @method
* @param {string} parentNoteId
* @param {string} title
* @param {object} content
* @return {{note: Note, branch: Branch}} object having "note" and "branch" keys representing respective objects
* @returns {{note: BNote, branch: BBranch}} object having "note" and "branch" keys representing respective objects
*/
this.createDataNote = (parentNoteId, title, content = {}) => noteService.createNewNote({
parentNoteId,
@@ -233,43 +231,23 @@ function BackendScriptApi(currentNote, apiParams) {
mime: 'application/json'
});
/**
* @typedef {object} CreateNewNoteParams
* @property {string} parentNoteId - MANDATORY
* @property {string} title - MANDATORY
* @property {string|buffer} content - MANDATORY
* @property {string} type - text, code, file, image, search, book, relation-map - MANDATORY
* @property {string} mime - value is derived from default mimes for type
* @property {boolean} isProtected - default is false
* @property {boolean} isExpanded - default is false
* @property {string} prefix - default is empty string
* @property {int} notePosition - default is last existing notePosition in a parent + 10
*/
/**
* @method
*
* @param {CreateNewNoteParams} [params]
* @returns {{note: Note, branch: Branch}} object contains newly created entities note and branch
* @property {object} params
* @property {string} params.parentNoteId
* @property {string} params.title
* @property {string|buffer} params.content
* @property {string} params.type - text, code, file, image, search, book, relationMap, canvas
* @property {string} [params.mime] - value is derived from default mimes for type
* @property {boolean} [params.isProtected=false]
* @property {boolean} [params.isExpanded=false]
* @property {string} [params.prefix='']
* @property {int} [params.notePosition] - default is last existing notePosition in a parent + 10
* @returns {{note: BNote, branch: BBranch}} object contains newly created entities note and branch
*/
this.createNewNote = noteService.createNewNote;
/**
* @typedef {object} CreateNoteAttribute
* @property {string} type - attribute type - label, relation etc.
* @property {string} name - attribute name
* @property {string} [value] - attribute value
*/
/**
* @typedef {object} CreateNoteExtraOptions
* @property {boolean} [json=false] - should the note be JSON
* @property {boolean} [isProtected=false] - should the note be protected
* @property {string} [type='text'] - note type
* @property {string} [mime='text/html'] - MIME type of the note
* @property {CreateNoteAttribute[]} [attributes=[]] - attributes to be created for this note
*/
/**
* @method
* @deprecated please use createTextNote() with similar API for simpler use cases or createNewNote() for more complex needs
@@ -277,8 +255,16 @@ function BackendScriptApi(currentNote, apiParams) {
* @param {string} parentNoteId - create new note under this parent
* @param {string} title
* @param {string} [content=""]
* @param {CreateNoteExtraOptions} [extraOptions={}]
* @returns {{note: Note, branch: Branch}} object contains newly created entities note and branch
* @param {object} [extraOptions={}]
* @property {boolean} [extraOptions.json=false] - should the note be JSON
* @property {boolean} [extraOptions.isProtected=false] - should the note be protected
* @property {string} [extraOptions.type='text'] - note type
* @property {string} [extraOptions.mime='text/html'] - MIME type of the note
* @property {object[]} [extraOptions.attributes=[]] - attributes to be created for this note
* @property {string} extraOptions.attributes.type - attribute type - label, relation etc.
* @property {string} extraOptions.attributes.name - attribute name
* @property {string} [extraOptions.attributes.value] - attribute value
* @returns {{note: BNote, branch: BBranch}} object contains newly created entities note and branch
*/
this.createNote = (parentNoteId, title, content = "", extraOptions= {}) => {
extraOptions.parentNoteId = parentNoteId;
@@ -286,7 +272,7 @@ function BackendScriptApi(currentNote, apiParams) {
const parentNote = becca.getNote(parentNoteId);
// code note type can be inherited, otherwise text is default
// code note type can be inherited, otherwise "text" is the default
extraOptions.type = parentNote.type === 'code' ? 'code' : 'text';
extraOptions.mime = parentNote.type === 'code' ? parentNote.mime : 'text/html';
@@ -316,18 +302,42 @@ function BackendScriptApi(currentNote, apiParams) {
});
};
this.logMessages = {};
this.logSpacedUpdates = {};
/**
* Log given message to trilium logs.
* Log given message to trilium logs and log pane in UI
*
* @method
* @param message
* @returns {void}
*/
this.log = message => log.info(`Script "${currentNote.title}" (${currentNote.noteId}): ${message}`);
this.log = message => {
log.info(message);
const {noteId} = this.startNote;
this.logMessages[noteId] = this.logMessages[noteId] || [];
this.logSpacedUpdates[noteId] = this.logSpacedUpdates[noteId] || new SpacedUpdate(() => {
const messages = this.logMessages[noteId];
this.logMessages[noteId] = [];
ws.sendMessageToAllClients({
type: 'api-log-messages',
noteId,
messages
});
}, 100);
this.logMessages[noteId].push(message);
this.logSpacedUpdates[noteId].scheduleUpdate();
};
/**
* Returns root note of the calendar.
*
* @method
* @returns {Note|null}
* @returns {BNote|null}
*/
this.getRootCalendarNote = dateNoteService.getRootCalendarNote;
@@ -336,15 +346,17 @@ function BackendScriptApi(currentNote, apiParams) {
*
* @method
* @param {string} date in YYYY-MM-DD format
* @returns {Note|null}
* @param {BNote} [rootNote] - specify calendar root note, normally leave empty to use the default calendar
* @returns {BNote|null}
*/
this.getDateNote = dateNoteService.getDateNote;
this.getDayNote = dateNoteService.getDayNote;
/**
* Returns today's day note. If such note doesn't exist, it is created.
*
* @method
* @returns {Note|null}
* @param {BNote} [rootNote] - specify calendar root note, normally leave empty to use the default calendar
* @returns {BNote|null}
*/
this.getTodayNote = dateNoteService.getTodayNote;
@@ -353,8 +365,10 @@ function BackendScriptApi(currentNote, apiParams) {
*
* @method
* @param {string} date in YYYY-MM-DD format
* @param {object} options - "startOfTheWeek" - either "monday" (default) or "sunday"
* @returns {Note|null}
* @param {object} [options]
* @param {string} [options.startOfTheWeek=monday] - either "monday" (default) or "sunday"
* @param {BNote} [rootNote] - specify calendar root note, normally leave empty to use the default calendar
* @returns {BNote|null}
*/
this.getWeekNote = dateNoteService.getWeekNote;
@@ -363,7 +377,8 @@ function BackendScriptApi(currentNote, apiParams) {
*
* @method
* @param {string} date in YYYY-MM format
* @returns {Note|null}
* @param {BNote} [rootNote] - specify calendar root note, normally leave empty to use the default calendar
* @returns {BNote|null}
*/
this.getMonthNote = dateNoteService.getMonthNote;
@@ -372,15 +387,29 @@ function BackendScriptApi(currentNote, apiParams) {
*
* @method
* @param {string} year in YYYY format
* @returns {Note|null}
* @param {BNote} [rootNote] - specify calendar root note, normally leave empty to use the default calendar
* @returns {BNote|null}
*/
this.getYearNote = dateNoteService.getYearNote;
/**
* Sort child notes of a given note.
*
* @method
* @param {string} parentNoteId - this note's child notes will be sorted
* @param {object} [sortConfig]
* @property {string} [sortConfig.sortBy=title] - 'title', 'dateCreated', 'dateModified' or a label name
* See {@link https://github.com/zadam/trilium/wiki/Sorting} for details.
* @property {boolean} [sortConfig.reverse=false]
* @property {boolean} [sortConfig.foldersFirst=false]
* @returns {void}
*/
this.sortNotesByTitle = parentNoteId => treeService.sortNotes(parentNoteId);
this.sortNotes = (parentNoteId, sortConfig = {}) => treeService.sortNotes(
parentNoteId,
sortConfig.sortBy || "title",
!!sortConfig.reverse,
!!sortConfig.foldersFirst
);
/**
* This method finds note by its noteId and prefix and either sets it to the given parentNoteId
@@ -389,10 +418,11 @@ function BackendScriptApi(currentNote, apiParams) {
* This method looks similar to toggleNoteInParent() but differs because we're looking up branch by prefix.
*
* @method
* @deprecated - this method is pretty confusing and serves specialized purpose only
* @deprecated this method is pretty confusing and serves specialized purpose only
* @param {string} noteId
* @param {string} prefix
* @param {string|null} parentNoteId
* @returns {void}
*/
this.setNoteToParent = treeService.setNoteToParent;
@@ -410,7 +440,7 @@ function BackendScriptApi(currentNote, apiParams) {
* Return randomly generated string of given length. This random string generation is NOT cryptographically secure.
*
* @method
* @param {number} length of the string
* @param {int} length of the string
* @returns {string} random string
*/
this.randomString = utils.randomString;
@@ -436,14 +466,147 @@ function BackendScriptApi(currentNote, apiParams) {
/**
* @method
* @deprecated - this is now no-op since all the changes should be gracefully handled per widget
*/
this.refreshTree = () => {};
/**
* @return {{syncVersion, appVersion, buildRevision, dbVersion, dataDirectory, buildDate}|*} - object representing basic info about running Trilium version
* @returns {{syncVersion, appVersion, buildRevision, dbVersion, dataDirectory, buildDate}|*} - object representing basic info about running Trilium version
*/
this.getAppInfo = () => appInfo
/**
* Creates a new launcher to the launchbar. If the launcher (id) already exists, it will be updated.
*
* @method
* @param {object} opts
* @property {string} opts.id - id of the launcher, only alphanumeric at least 6 characters long
* @property {string} opts.type - one of
* * "note" - activating the launcher will navigate to the target note (specified in targetNoteId param)
* * "script" - activating the launcher will execute the script (specified in scriptNoteId param)
* * "customWidget" - the launcher will be rendered with a custom widget (specified in widgetNoteId param)
* @property {string} opts.title
* @property {boolean} [opts.isVisible=false] - if true, will be created in the "Visible launchers", otherwise in "Available launchers"
* @property {string} [opts.icon] - name of the boxicon to be used (e.g. "bx-time")
* @property {string} [opts.keyboardShortcut] - will activate the target note/script upon pressing, e.g. "ctrl+e"
* @property {string} [opts.targetNoteId] - for type "note"
* @property {string} [opts.scriptNoteId] - for type "script"
* @property {string} [opts.widgetNoteId] - for type "customWidget"
* @returns {{note: BNote}}
*/
this.createOrUpdateLauncher = opts => {
if (!opts.id) { throw new Error("ID is a mandatory parameter for api.createOrUpdateLauncher(opts)"); }
if (!opts.id.match(/[a-z0-9]{6,1000}/i)) { throw new Error(`ID must be an alphanumeric string at least 6 characters long.`); }
if (!opts.type) { throw new Error("Launcher Type is a mandatory parameter for api.createOrUpdateLauncher(opts)"); }
if (!["note", "script", "customWidget"].includes(opts.type)) { throw new Error(`Given launcher type '${opts.type}'`); }
if (!opts.title?.trim()) { throw new Error("Title is a mandatory parameter for api.createOrUpdateLauncher(opts)"); }
if (opts.type === 'note' &amp;&amp; !opts.targetNoteId) { throw new Error("targetNoteId is mandatory for launchers of type 'note'"); }
if (opts.type === 'script' &amp;&amp; !opts.scriptNoteId) { throw new Error("scriptNoteId is mandatory for launchers of type 'script'"); }
if (opts.type === 'customWidget' &amp;&amp; !opts.widgetNoteId) { throw new Error("widgetNoteId is mandatory for launchers of type 'customWidget'"); }
const parentNoteId = opts.isVisible ? '_lbVisibleLaunchers' : '_lbAvailableLaunchers';
const noteId = 'al_' + opts.id;
const launcherNote =
becca.getNote(noteId) ||
specialNotesService.createLauncher({
noteId: noteId,
parentNoteId: parentNoteId,
launcherType: opts.type,
}).note;
if (launcherNote.title !== opts.title) {
launcherNote.title = opts.title;
launcherNote.save();
}
if (launcherNote.getParentBranches().length === 1) {
const branch = launcherNote.getParentBranches()[0];
if (branch.parentNoteId !== parentNoteId) {
branchService.moveBranchToNote(branch, parentNoteId);
}
}
if (opts.type === 'note') {
launcherNote.setRelation('target', opts.targetNoteId);
} else if (opts.type === 'script') {
launcherNote.setRelation('script', opts.scriptNoteId);
} else if (opts.type === 'customWidget') {
launcherNote.setRelation('widget', opts.widgetNoteId);
} else {
throw new Error(`Unrecognized launcher type '${opts.type}'`);
}
if (opts.keyboardShortcut) {
launcherNote.setLabel('keyboardShortcut', opts.keyboardShortcut);
} else {
launcherNote.removeLabel('keyboardShortcut');
}
if (opts.icon) {
launcherNote.setLabel('iconClass', `bx ${opts.icon}`);
} else {
launcherNote.removeLabel('iconClass');
}
return {note: launcherNote};
};
/**
* @method
* @param {string} noteId
* @param {string} format - either 'html' or 'markdown'
* @param {string} zipFilePath
* @returns {Promise&lt;void>}
*/
this.exportSubtreeToZipFile = async (noteId, format, zipFilePath) => await exportService.exportToZipFile(noteId, format, zipFilePath);
/**
* Executes given anonymous function on the frontend(s).
* Internally this serializes the anonymous function into string and sends it to frontend(s) via WebSocket.
* Note that there can be multiple connected frontend instances (e.g. in different tabs). In such case, all
* instances execute the given function.
*
* @method
* @param {string} script - script to be executed on the frontend
* @param {Array.&lt;?>} params - list of parameters to the anonymous function to be sent to frontend
* @returns {undefined} - no return value is provided.
*/
this.runOnFrontend = async (script, params = []) => {
if (typeof script === "function") {
script = script.toString();
}
ws.sendMessageToAllClients({
type: 'execute-script',
script: script,
params: prepareParams(params),
startNoteId: this.startNote.noteId,
currentNoteId: this.currentNote.noteId,
originEntityName: "notes", // currently there's no other entity on the frontend which can trigger event
originEntityId: this.originEntity?.noteId || null
});
function prepareParams(params) {
if (!params) {
return params;
}
return params.map(p => {
if (typeof p === "function") {
return `!@#Function: ${p.toString()}`;
}
else {
return p;
}
});
}
};
/**
* This object contains "at your risk" and "no BC guarantees" objects for advanced use cases.
*
* @property {Becca} becca - provides access to the backend in-memory object graph, see {@link https://github.com/zadam/trilium/blob/master/src/becca/becca.js}
*/
this.__private = {
becca
}
}
module.exports = BackendScriptApi;
@@ -457,13 +620,13 @@ module.exports = BackendScriptApi;
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-sql.html">sql</a></li></ul><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3>
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-sql.html">sql</a></li></ul><h3>Classes</h3><ul><li><a href="AbstractBeccaEntity.html">AbstractBeccaEntity</a></li><li><a href="BAttachment.html">BAttachment</a></li><li><a href="BAttribute.html">BAttribute</a></li><li><a href="BBranch.html">BBranch</a></li><li><a href="BEtapiToken.html">BEtapiToken</a></li><li><a href="BNote.html">BNote</a></li><li><a href="BOption.html">BOption</a></li><li><a href="BRecentNote.html">BRecentNote</a></li><li><a href="BRevision.html">BRevision</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li></ul>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.7</a>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.2</a>
</footer>
<script> prettyPrint(); </script>

View File

@@ -36,10 +36,13 @@ const log = require('./log');
const Database = require('better-sqlite3');
const dataDir = require('./data_dir');
const cls = require('./cls');
const fs = require("fs-extra");
const dbConnection = new Database(dataDir.DOCUMENT_PATH);
dbConnection.pragma('journal_mode = WAL');
const LOG_ALL_QUERIES = false;
[`exit`, `SIGINT`, `SIGUSR1`, `SIGUSR2`, `SIGTERM`].forEach(eventType => {
process.on(eventType, () => {
if (dbConnection) {
@@ -53,14 +56,20 @@ dbConnection.pragma('journal_mode = WAL');
function insert(tableName, rec, replace = false) {
const keys = Object.keys(rec);
if (keys.length === 0) {
log.error("Can't insert empty object into table " + tableName);
log.error(`Can't insert empty object into table ${tableName}`);
return;
}
const columns = keys.join(", ");
const questionMarks = keys.map(p => "?").join(", ");
const query = "INSERT " + (replace ? "OR REPLACE" : "") + " INTO " + tableName + "(" + columns + ") VALUES (" + questionMarks + ")";
const query = `INSERT
${replace ? "OR REPLACE" : ""} INTO
${tableName}
(
${columns}
)
VALUES (${questionMarks})`;
const res = execute(query, Object.values(rec));
@@ -74,13 +83,13 @@ function replace(tableName, rec) {
function upsert(tableName, primaryKey, rec) {
const keys = Object.keys(rec);
if (keys.length === 0) {
log.error("Can't upsert empty object into table " + tableName);
log.error(`Can't upsert empty object into table ${tableName}`);
return;
}
const columns = keys.join(", ");
const questionMarks = keys.map(colName => "@" + colName).join(", ");
const questionMarks = keys.map(colName => `@${colName}`).join(", ");
const updateMarks = keys.map(colName => `${colName} = @${colName}`).join(", ");
@@ -117,13 +126,7 @@ function getRowOrNull(query, params = []) {
}
function getValue(query, params = []) {
const row = getRowOrNull(query, params);
if (!row) {
return null;
}
return row[Object.keys(row)[0]];
return wrap(query, s => s.pluck().get(params));
}
// smaller values can result in better performance due to better usage of statement cache
@@ -167,48 +170,37 @@ function getRawRows(query, params = []) {
}
function iterateRows(query, params = []) {
if (LOG_ALL_QUERIES) {
console.log(query);
}
return stmt(query).iterate(params);
}
function getMap(query, params = []) {
const map = {};
const results = getRows(query, params);
const results = getRawRows(query, params);
for (const row of results) {
const keys = Object.keys(row);
map[row[keys[0]]] = row[keys[1]];
map[row[0]] = row[1];
}
return map;
}
function getColumn(query, params = []) {
const list = [];
const result = getRows(query, params);
if (result.length === 0) {
return list;
}
const key = Object.keys(result[0])[0];
for (const row of result) {
list.push(row[key]);
}
return list;
return wrap(query, s => s.pluck().all(params));
}
function execute(query, params = []) {
return wrap(query, s => s.run(params));
}
function executeWithoutTransaction(query, params = []) {
dbConnection.run(query, params);
}
function executeMany(query, params) {
if (LOG_ALL_QUERIES) {
console.log(query);
}
while (params.length > 0) {
const curParams = params.slice(0, Math.min(params.length, PARAM_LIMIT));
params = params.slice(curParams.length);
@@ -229,6 +221,10 @@ function executeMany(query, params) {
}
function executeScript(query) {
if (LOG_ALL_QUERIES) {
console.log(query);
}
return dbConnection.exec(query);
}
@@ -236,6 +232,10 @@ function wrap(query, func) {
const startTimestamp = Date.now();
let result;
if (LOG_ALL_QUERIES) {
console.log(query);
}
try {
result = func(stmt(query));
}
@@ -245,7 +245,7 @@ function wrap(query, func) {
// in these cases error should be simply ignored.
console.log(e.message);
return null
return null;
}
throw e;
@@ -276,14 +276,17 @@ function transactional(func) {
return ret;
}
catch (e) {
const entityChanges = cls.getAndClearEntityChangeIds();
const entityChangeIds = cls.getAndClearEntityChangeIds();
if (entityChanges.length > 0) {
if (entityChangeIds.length > 0) {
log.info("Transaction rollback dirtied the becca, forcing reload.");
require('../becca/becca_loader').load();
}
// the maxEntityChangeId has been incremented during failed transaction, need to recalculate
require('./entity_changes').recalculateMaxEntityChangeId();
throw e;
}
}
@@ -306,11 +309,20 @@ function fillParamList(paramIds, truncate = true) {
}
// doing it manually to avoid this showing up on the sloq query list
const s = stmt(`INSERT INTO param_list VALUES ` + paramIds.map(paramId => `(?)`).join(','), paramIds);
const s = stmt(`INSERT INTO param_list VALUES ${paramIds.map(paramId => `(?)`).join(',')}`);
s.run(paramIds);
}
async function copyDatabase(targetFilePath) {
try {
fs.unlinkSync(targetFilePath);
} catch (e) {
} // unlink throws exception if the file did not exist
await dbConnection.backup(targetFilePath);
}
module.exports = {
dbConnection,
insert,
@@ -322,7 +334,7 @@ module.exports = {
* @method
* @param {string} query - SQL query with ? used as parameter placeholder
* @param {object[]} [params] - array of params if needed
* @return [object] - single value
* @returns [object] - single value
*/
getValue,
@@ -332,7 +344,7 @@ module.exports = {
* @method
* @param {string} query - SQL query with ? used as parameter placeholder
* @param {object[]} [params] - array of params if needed
* @return {object} - map of column name to column value
* @returns {object} - map of column name to column value
*/
getRow,
getRowOrNull,
@@ -343,7 +355,7 @@ module.exports = {
* @method
* @param {string} query - SQL query with ? used as parameter placeholder
* @param {object[]} [params] - array of params if needed
* @return {object[]} - array of all rows, each row is a map of column name to column value
* @returns {object[]} - array of all rows, each row is a map of column name to column value
*/
getRows,
getRawRows,
@@ -356,7 +368,7 @@ module.exports = {
* @method
* @param {string} query - SQL query with ? used as parameter placeholder
* @param {object[]} [params] - array of params if needed
* @return {object} - map of first column to second column
* @returns {object} - map of first column to second column
*/
getMap,
@@ -366,7 +378,7 @@ module.exports = {
* @method
* @param {string} query - SQL query with ? used as parameter placeholder
* @param {object[]} [params] - array of params if needed
* @return {object[]} - array of first column of all returned rows
* @returns {object[]} - array of first column of all returned rows
*/
getColumn,
@@ -378,12 +390,12 @@ module.exports = {
* @param {object[]} [params] - array of params if needed
*/
execute,
executeWithoutTransaction,
executeMany,
executeScript,
transactional,
upsert,
fillParamList
fillParamList,
copyDatabase
};
</code></pre>
</article>
@@ -395,13 +407,13 @@ module.exports = {
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-sql.html">sql</a></li></ul><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3>
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-sql.html">sql</a></li></ul><h3>Classes</h3><ul><li><a href="AbstractBeccaEntity.html">AbstractBeccaEntity</a></li><li><a href="BAttachment.html">BAttachment</a></li><li><a href="BAttribute.html">BAttribute</a></li><li><a href="BBranch.html">BBranch</a></li><li><a href="BEtapiToken.html">BEtapiToken</a></li><li><a href="BNote.html">BNote</a></li><li><a href="BOption.html">BOption</a></li><li><a href="BRecentNote.html">BRecentNote</a></li><li><a href="BRevision.html">BRevision</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li></ul>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.7</a>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.2</a>
</footer>
<script> prettyPrint(); </script>

View File

@@ -2,7 +2,7 @@
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Class: Attribute</title>
<title>JSDoc: Class: FAttribute</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
@@ -17,7 +17,7 @@
<div id="main">
<h1 class="page-title">Class: Attribute</h1>
<h1 class="page-title">Class: FAttribute</h1>
@@ -28,7 +28,7 @@
<header>
<h2><span class="attribs"><span class="type-signature"></span></span>Attribute<span class="signature">()</span><span class="type-signature"></span></h2>
<h2><span class="attribs"><span class="type-signature"></span></span>FAttribute<span class="signature">()</span><span class="type-signature"></span></h2>
<div class="class-description">Attribute is an abstract concept which has two real uses - label (key - value pair)
and relation (representing named relationship between source and target note)</div>
@@ -46,7 +46,7 @@ and relation (representing named relationship between source and target note)</d
<h4 class="name" id="Attribute"><span class="type-signature"></span>new Attribute<span class="signature">()</span><span class="type-signature"></span></h4>
<h4 class="name" id="FAttribute"><span class="type-signature"></span>new FAttribute<span class="signature">()</span><span class="type-signature"></span></h4>
@@ -94,7 +94,7 @@ and relation (representing named relationship between source and target note)</d
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_attribute.js.html">entities/attribute.js</a>, <a href="entities_attribute.js.html#line7">line 7</a>
<a href="entities_fattribute.js.html">entities/fattribute.js</a>, <a href="entities_fattribute.js.html#line7">line 7</a>
</li></ul></dd>
@@ -194,7 +194,75 @@ and relation (representing named relationship between source and target note)</d
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_attribute.js.html">entities/attribute.js</a>, <a href="entities_attribute.js.html#line16">line 16</a>
<a href="entities_fattribute.js.html">entities/fattribute.js</a>, <a href="entities_fattribute.js.html#line17">line 17</a>
</li></ul></dd>
</dl>
<h4 class="name" id="froca"><span class="type-signature"></span>froca<span class="type-signature"> :Froca</span></h4>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">Froca</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_fattribute.js.html">entities/fattribute.js</a>, <a href="entities_fattribute.js.html#line10">line 10</a>
</li></ul></dd>
@@ -262,7 +330,7 @@ and relation (representing named relationship between source and target note)</d
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_attribute.js.html">entities/attribute.js</a>, <a href="entities_attribute.js.html#line28">line 28</a>
<a href="entities_fattribute.js.html">entities/fattribute.js</a>, <a href="entities_fattribute.js.html#line29">line 29</a>
</li></ul></dd>
@@ -330,7 +398,7 @@ and relation (representing named relationship between source and target note)</d
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_attribute.js.html">entities/attribute.js</a>, <a href="entities_attribute.js.html#line22">line 22</a>
<a href="entities_fattribute.js.html">entities/fattribute.js</a>, <a href="entities_fattribute.js.html#line23">line 23</a>
</li></ul></dd>
@@ -398,7 +466,7 @@ and relation (representing named relationship between source and target note)</d
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_attribute.js.html">entities/attribute.js</a>, <a href="entities_attribute.js.html#line18">line 18</a>
<a href="entities_fattribute.js.html">entities/fattribute.js</a>, <a href="entities_fattribute.js.html#line19">line 19</a>
</li></ul></dd>
@@ -466,7 +534,7 @@ and relation (representing named relationship between source and target note)</d
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_attribute.js.html">entities/attribute.js</a>, <a href="entities_attribute.js.html#line26">line 26</a>
<a href="entities_fattribute.js.html">entities/fattribute.js</a>, <a href="entities_fattribute.js.html#line27">line 27</a>
</li></ul></dd>
@@ -534,7 +602,7 @@ and relation (representing named relationship between source and target note)</d
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_attribute.js.html">entities/attribute.js</a>, <a href="entities_attribute.js.html#line20">line 20</a>
<a href="entities_fattribute.js.html">entities/fattribute.js</a>, <a href="entities_fattribute.js.html#line21">line 21</a>
</li></ul></dd>
@@ -602,7 +670,7 @@ and relation (representing named relationship between source and target note)</d
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_attribute.js.html">entities/attribute.js</a>, <a href="entities_attribute.js.html#line24">line 24</a>
<a href="entities_fattribute.js.html">entities/fattribute.js</a>, <a href="entities_fattribute.js.html#line25">line 25</a>
</li></ul></dd>
@@ -630,7 +698,7 @@ and relation (representing named relationship between source and target note)</d
<h4 class="name" id="getNote"><span class="type-signature"></span>getNote<span class="signature">()</span><span class="type-signature"> &rarr; {<a href="NoteShort.html">NoteShort</a>}</span></h4>
<h4 class="name" id="getNote"><span class="type-signature"></span>getNote<span class="signature">()</span><span class="type-signature"> &rarr; {<a href="FNote.html">FNote</a>}</span></h4>
@@ -678,7 +746,7 @@ and relation (representing named relationship between source and target note)</d
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_attribute.js.html">entities/attribute.js</a>, <a href="entities_attribute.js.html#line32">line 32</a>
<a href="entities_fattribute.js.html">entities/fattribute.js</a>, <a href="entities_fattribute.js.html#line33">line 33</a>
</li></ul></dd>
@@ -714,7 +782,109 @@ and relation (representing named relationship between source and target note)</d
</dt>
<dd>
<span class="param-type"><a href="NoteShort.html">NoteShort</a></span>
<span class="param-type"><a href="FNote.html">FNote</a></span>
</dd>
</dl>
<h4 class="name" id="getTargetNote"><span class="type-signature">(async) </span>getTargetNote<span class="signature">()</span><span class="type-signature"> &rarr; {Promise.&lt;<a href="FNote.html">FNote</a>>}</span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_fattribute.js.html">entities/fattribute.js</a>, <a href="entities_fattribute.js.html#line38">line 38</a>
</li></ul></dd>
</dl>
<h5>Returns:</h5>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">Promise.&lt;<a href="FNote.html">FNote</a>></span>
</dd>
@@ -742,13 +912,13 @@ and relation (representing named relationship between source and target note)</d
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="Attribute.html">Attribute</a></li><li><a href="Branch.html">Branch</a></li><li><a href="FrontendScriptApi.html">FrontendScriptApi</a></li><li><a href="NoteComplement.html">NoteComplement</a></li><li><a href="NoteShort.html">NoteShort</a></li></ul><h3>Global</h3><ul><li><a href="global.html#doRenderBody">doRenderBody</a></li></ul>
<h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="FAttribute.html">FAttribute</a></li><li><a href="FBranch.html">FBranch</a></li><li><a href="FNote.html">FNote</a></li><li><a href="FrontendScriptApi.html">FrontendScriptApi</a></li></ul>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.7</a>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.2</a>
</footer>
<script> prettyPrint(); </script>

View File

@@ -2,7 +2,7 @@
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Class: Branch</title>
<title>JSDoc: Class: FBranch</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
@@ -17,7 +17,7 @@
<div id="main">
<h1 class="page-title">Class: Branch</h1>
<h1 class="page-title">Class: FBranch</h1>
@@ -28,7 +28,7 @@
<header>
<h2><span class="attribs"><span class="type-signature"></span></span>Branch<span class="signature">()</span><span class="type-signature"></span></h2>
<h2><span class="attribs"><span class="type-signature"></span></span>FBranch<span class="signature">()</span><span class="type-signature"></span></h2>
<div class="class-description">Branch represents a relationship between a child note and its parent note. Trilium allows a note to have multiple
parents.</div>
@@ -46,7 +46,7 @@ parents.</div>
<h4 class="name" id="Branch"><span class="type-signature"></span>new Branch<span class="signature">()</span><span class="type-signature"></span></h4>
<h4 class="name" id="FBranch"><span class="type-signature"></span>new FBranch<span class="signature">()</span><span class="type-signature"></span></h4>
@@ -94,7 +94,7 @@ parents.</div>
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line5">line 5</a>
<a href="entities_fbranch.js.html">entities/fbranch.js</a>, <a href="entities_fbranch.js.html#line5">line 5</a>
</li></ul></dd>
@@ -198,7 +198,75 @@ parents.</div>
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line17">line 17</a>
<a href="entities_fbranch.js.html">entities/fbranch.js</a>, <a href="entities_fbranch.js.html#line18">line 18</a>
</li></ul></dd>
</dl>
<h4 class="name" id="froca"><span class="type-signature"></span>froca<span class="type-signature"> :Froca</span></h4>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">Froca</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_fbranch.js.html">entities/fbranch.js</a>, <a href="entities_fbranch.js.html#line8">line 8</a>
</li></ul></dd>
@@ -266,7 +334,7 @@ parents.</div>
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line29">line 29</a>
<a href="entities_fbranch.js.html">entities/fbranch.js</a>, <a href="entities_fbranch.js.html#line30">line 30</a>
</li></ul></dd>
@@ -334,7 +402,7 @@ parents.</div>
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line27">line 27</a>
<a href="entities_fbranch.js.html">entities/fbranch.js</a>, <a href="entities_fbranch.js.html#line28">line 28</a>
</li></ul></dd>
@@ -402,7 +470,7 @@ parents.</div>
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line19">line 19</a>
<a href="entities_fbranch.js.html">entities/fbranch.js</a>, <a href="entities_fbranch.js.html#line20">line 20</a>
</li></ul></dd>
@@ -470,7 +538,7 @@ parents.</div>
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line23">line 23</a>
<a href="entities_fbranch.js.html">entities/fbranch.js</a>, <a href="entities_fbranch.js.html#line24">line 24</a>
</li></ul></dd>
@@ -538,7 +606,7 @@ parents.</div>
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line21">line 21</a>
<a href="entities_fbranch.js.html">entities/fbranch.js</a>, <a href="entities_fbranch.js.html#line22">line 22</a>
</li></ul></dd>
@@ -606,7 +674,7 @@ parents.</div>
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line25">line 25</a>
<a href="entities_fbranch.js.html">entities/fbranch.js</a>, <a href="entities_fbranch.js.html#line26">line 26</a>
</li></ul></dd>
@@ -634,7 +702,7 @@ parents.</div>
<h4 class="name" id="getNote"><span class="type-signature">(async) </span>getNote<span class="signature">()</span><span class="type-signature"> &rarr; {<a href="NoteShort.html">NoteShort</a>}</span></h4>
<h4 class="name" id="getNote"><span class="type-signature">(async) </span>getNote<span class="signature">()</span><span class="type-signature"> &rarr; {<a href="FNote.html">FNote</a>}</span></h4>
@@ -682,7 +750,7 @@ parents.</div>
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line33">line 33</a>
<a href="entities_fbranch.js.html">entities/fbranch.js</a>, <a href="entities_fbranch.js.html#line34">line 34</a>
</li></ul></dd>
@@ -718,7 +786,7 @@ parents.</div>
</dt>
<dd>
<span class="param-type"><a href="NoteShort.html">NoteShort</a></span>
<span class="param-type"><a href="FNote.html">FNote</a></span>
</dd>
@@ -736,7 +804,7 @@ parents.</div>
<h4 class="name" id="getNoteFromCache"><span class="type-signature"></span>getNoteFromCache<span class="signature">()</span><span class="type-signature"> &rarr; {<a href="NoteShort.html">NoteShort</a>}</span></h4>
<h4 class="name" id="getNoteFromCache"><span class="type-signature"></span>getNoteFromCache<span class="signature">()</span><span class="type-signature"> &rarr; {<a href="FNote.html">FNote</a>}</span></h4>
@@ -784,7 +852,7 @@ parents.</div>
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line38">line 38</a>
<a href="entities_fbranch.js.html">entities/fbranch.js</a>, <a href="entities_fbranch.js.html#line39">line 39</a>
</li></ul></dd>
@@ -820,7 +888,7 @@ parents.</div>
</dt>
<dd>
<span class="param-type"><a href="NoteShort.html">NoteShort</a></span>
<span class="param-type"><a href="FNote.html">FNote</a></span>
</dd>
@@ -838,7 +906,7 @@ parents.</div>
<h4 class="name" id="getParentNote"><span class="type-signature">(async) </span>getParentNote<span class="signature">()</span><span class="type-signature"> &rarr; {<a href="NoteShort.html">NoteShort</a>}</span></h4>
<h4 class="name" id="getParentNote"><span class="type-signature">(async) </span>getParentNote<span class="signature">()</span><span class="type-signature"> &rarr; {<a href="FNote.html">FNote</a>}</span></h4>
@@ -886,7 +954,7 @@ parents.</div>
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line43">line 43</a>
<a href="entities_fbranch.js.html">entities/fbranch.js</a>, <a href="entities_fbranch.js.html#line44">line 44</a>
</li></ul></dd>
@@ -922,7 +990,7 @@ parents.</div>
</dt>
<dd>
<span class="param-type"><a href="NoteShort.html">NoteShort</a></span>
<span class="param-type"><a href="FNote.html">FNote</a></span>
</dd>
@@ -988,7 +1056,7 @@ parents.</div>
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line48">line 48</a>
<a href="entities_fbranch.js.html">entities/fbranch.js</a>, <a href="entities_fbranch.js.html#line49">line 49</a>
</li></ul></dd>
@@ -1017,7 +1085,7 @@ parents.</div>
<div class="param-desc">
true if it's top level, meaning its parent is root note
true if it's top level, meaning its parent is the root note
</div>
@@ -1056,13 +1124,13 @@ parents.</div>
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="Attribute.html">Attribute</a></li><li><a href="Branch.html">Branch</a></li><li><a href="FrontendScriptApi.html">FrontendScriptApi</a></li><li><a href="NoteComplement.html">NoteComplement</a></li><li><a href="NoteShort.html">NoteShort</a></li></ul><h3>Global</h3><ul><li><a href="global.html#doRenderBody">doRenderBody</a></li></ul>
<h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="FAttribute.html">FAttribute</a></li><li><a href="FBranch.html">FBranch</a></li><li><a href="FNote.html">FNote</a></li><li><a href="FrontendScriptApi.html">FrontendScriptApi</a></li></ul>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.7</a>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.2</a>
</footer>
<script> prettyPrint(); </script>

File diff suppressed because it is too large Load Diff

View File

@@ -1,790 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Class: NoteComplement</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Class: NoteComplement</h1>
<section>
<header>
<h2><span class="attribs"><span class="type-signature"></span></span>NoteComplement<span class="signature">()</span><span class="type-signature"></span></h2>
<div class="class-description">Complements the NoteShort with the main note content and other extra attributes</div>
</header>
<article>
<div class="container-overview">
<h2>Constructor</h2>
<h4 class="name" id="NoteComplement"><span class="type-signature"></span>new NoteComplement<span class="signature">()</span><span class="type-signature"></span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_note_complement.js.html">entities/note_complement.js</a>, <a href="entities_note_complement.js.html#line4">line 4</a>
</li></ul></dd>
</dl>
</div>
<h3 class="subsection-title">Members</h3>
<h4 class="name" id="combinedDateModified"><span class="type-signature"></span>combinedDateModified<span class="type-signature"> :string</span></h4>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">string</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_note_complement.js.html">entities/note_complement.js</a>, <a href="entities_note_complement.js.html#line33">line 33</a>
</li></ul></dd>
</dl>
<h4 class="name" id="combinedUtcDateModified"><span class="type-signature"></span>combinedUtcDateModified<span class="type-signature"> :string</span></h4>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">string</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_note_complement.js.html">entities/note_complement.js</a>, <a href="entities_note_complement.js.html#line36">line 36</a>
</li></ul></dd>
</dl>
<h4 class="name" id="content"><span class="type-signature"></span>content<span class="type-signature"> :string</span></h4>
<div class="description">
can either contain the whole content (in e.g. string notes), only part (large text notes) or nothing at all (binary notes, images)
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">string</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_note_complement.js.html">entities/note_complement.js</a>, <a href="entities_note_complement.js.html#line13">line 13</a>
</li></ul></dd>
</dl>
<h4 class="name" id="contentLength"><span class="type-signature"></span>contentLength<span class="type-signature"> :int</span></h4>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">int</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_note_complement.js.html">entities/note_complement.js</a>, <a href="entities_note_complement.js.html#line16">line 16</a>
</li></ul></dd>
</dl>
<h4 class="name" id="dateCreated"><span class="type-signature"></span>dateCreated<span class="type-signature"> :string</span></h4>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">string</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_note_complement.js.html">entities/note_complement.js</a>, <a href="entities_note_complement.js.html#line19">line 19</a>
</li></ul></dd>
</dl>
<h4 class="name" id="dateModified"><span class="type-signature"></span>dateModified<span class="type-signature"> :string</span></h4>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">string</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_note_complement.js.html">entities/note_complement.js</a>, <a href="entities_note_complement.js.html#line22">line 22</a>
</li></ul></dd>
</dl>
<h4 class="name" id="noteId"><span class="type-signature"></span>noteId<span class="type-signature"> :string</span></h4>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">string</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_note_complement.js.html">entities/note_complement.js</a>, <a href="entities_note_complement.js.html#line7">line 7</a>
</li></ul></dd>
</dl>
<h4 class="name" id="utcDateCreated"><span class="type-signature"></span>utcDateCreated<span class="type-signature"> :string</span></h4>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">string</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_note_complement.js.html">entities/note_complement.js</a>, <a href="entities_note_complement.js.html#line25">line 25</a>
</li></ul></dd>
</dl>
<h4 class="name" id="utcDateModified"><span class="type-signature"></span>utcDateModified<span class="type-signature"> :string</span></h4>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">string</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="entities_note_complement.js.html">entities/note_complement.js</a>, <a href="entities_note_complement.js.html#line28">line 28</a>
</li></ul></dd>
</dl>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="Attribute.html">Attribute</a></li><li><a href="Branch.html">Branch</a></li><li><a href="FrontendScriptApi.html">FrontendScriptApi</a></li><li><a href="NoteComplement.html">NoteComplement</a></li><li><a href="NoteShort.html">NoteShort</a></li></ul><h3>Global</h3><ul><li><a href="global.html#doRenderBody">doRenderBody</a></li></ul>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.7</a>
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show More