Compare commits

..

245 Commits

Author SHA1 Message Date
zadam cb8e551ee0 release 0.47.3 2021-05-15 23:05:20 +02:00
zadam f6dd1110e8 fix sync status 2021-05-15 22:00:53 +02:00
zadam 623200b92b fix "force note sync" 2021-05-15 14:04:01 +02:00
zadam 4ff40ba14f fix sync status in-progress 2021-05-15 13:44:12 +02:00
zadam cecce1df20 electron upgrade 2021-05-14 22:23:11 +02:00
zadam 2030c8e995 fallback value for isErased for 0173 migration, #1937 2021-05-14 21:52:14 +02:00
zadam de6108f95d protected session is now global application state to avoid weird issues with multiple tabs/windows/reloads 2021-05-07 22:23:49 +02:00
zadam fddab59265 added note.executeScript() 2021-05-07 21:23:10 +02:00
zadam f22c76d9fb fix focusing tree from note detail, closes #1897 2021-04-27 23:05:28 +02:00
zadam b1131844d6 fix filling entity changes from Options' Advanced tab, closes #1898 2021-04-27 22:59:08 +02:00
zadam 03f3e46f8b release 0.47.2 2021-04-26 22:32:54 +02:00
zadam 6f1b0b92fe fix searchForNote backend API method 2021-04-26 22:27:12 +02:00
zadam 5e40c03fc9 use Map instead of object where keys can be (reserved) words, fixes #1895 2021-04-26 21:12:46 +02:00
zadam 3b1fb8024f handle undefined in the search ordering 2021-04-26 21:04:22 +02:00
FliegendeWurst 6f49f870ed Exit on SIGTERM (#1891)
Stopping the systemd service running the server now works properly.
2021-04-25 11:05:09 +02:00
zadam b9133cb683 fix keyboard shortcut for "open externally" 2021-04-24 22:18:25 +02:00
zadam ccac46527c opened file change detection now useable on all note types 2021-04-24 21:56:44 +02:00
zadam dcd35b1ea2 fix broken inline PDF viewer, #1833 2021-04-24 20:27:42 +02:00
zadam a74741343e upload of modified open file WIP 2021-04-24 11:39:59 +02:00
zadam 4ff7e0813d upload of modified open file WIP 2021-04-24 11:39:44 +02:00
zadam 6d2d72fa7f add ERR_ADDRESS_UNREACHABLE as expected sync exception, #1888 2021-04-24 10:17:21 +02:00
zadam 30ec706d37 Merge remote-tracking branch 'origin/stable'
# Conflicts:
#	package.json
#	src/services/build.js
2021-04-22 21:25:15 +02:00
zadam 25ce2e4253 release 0.46.9 2021-04-22 20:50:22 +02:00
zadam b5674223e5 fixed some incorrect order by behavior, #1881 2021-04-22 20:28:26 +02:00
zadam 02988ed2b3 added random ordering 2021-04-22 19:53:11 +02:00
zadam c27f573eed fix line continuation in the release script 2021-04-22 19:39:57 +02:00
zadam c5b0c60797 Merge remote-tracking branch 'origin/master' 2021-04-21 23:03:16 +02:00
zadam 025af8df02 ckeditor 27.1 2021-04-21 23:03:09 +02:00
chee d9e8cff00f Only add widgets that are executable (#1875)
closes #1874
2021-04-21 22:25:52 +02:00
zadam 1a4f35470c Merge remote-tracking branch 'origin/stable' 2021-04-21 22:04:33 +02:00
zadam 1d99c4e80b fix moving notes with keyboard on Firefox, closes #1865 2021-04-21 22:03:41 +02:00
zadam dc7c64a94d Merge remote-tracking branch 'origin/stable' into stable 2021-04-21 20:38:15 +02:00
zadam dc6a530d8c clear note selection anytime a new note is activated 2021-04-21 20:38:07 +02:00
chee 38b0d05c20 Add .includes to the type check (#1871)
beforehand it would always be `true`
fixes #1869
2021-04-21 20:16:15 +02:00
zadam 6e010dfbd7 fix note preview, closes #1869 2021-04-21 20:14:37 +02:00
zadam 172bdb6118 release 0.47.1-beta 2021-04-19 22:43:03 +02:00
zadam 6136243d61 release 0.47.1-beta 2021-04-19 22:40:50 +02:00
zadam a88a32acae support OPML from MindManager, fixes #1862 2021-04-19 22:33:58 +02:00
zadam 583df35231 log warning about unsucessful login 2021-04-19 21:41:29 +02:00
zadam 634baae796 Merge remote-tracking branch 'origin/stable'
# Conflicts:
#	src/services/build.js
2021-04-19 20:56:56 +02:00
zadam a674a12706 disable tar polluting build log 2021-04-19 20:56:05 +02:00
zadam c29f1af48f use n to force node version
(cherry picked from commit 51d1d8efb8)
2021-04-19 20:51:06 +02:00
zadam 51d1d8efb8 use n to force node version 2021-04-19 20:26:58 +02:00
zadam a8d72c46e4 release 0.46.8 2021-04-18 21:47:45 +02:00
zadam ec36fbd83e release 0.46.8 2021-04-18 21:46:35 +02:00
zadam aedb05cbab release 0.46.8 2021-04-18 21:39:01 +02:00
zadam bb16840a72 release 0.46.8 2021-04-18 21:30:43 +02:00
zadam 7b5d44a329 use official gh client instead of github-release to execute releases 2021-04-18 21:29:10 +02:00
zadam d3cccae2df implemented audio/video in note content renderer + streaming API #886 2021-04-18 12:40:12 +02:00
zadam 9ba514d930 Merge remote-tracking branch 'origin/stable'
# Conflicts:
#	package-lock.json
#	trilium.iml
2021-04-18 12:39:19 +02:00
zadam 8e1b8ab26c show not set keyboard shortcuts as "not set", #1851 2021-04-15 21:45:37 +02:00
zadam 197537b159 idea config stuff 2021-04-13 21:54:34 +02:00
zadam 917b259e92 add new sync status "unknown" to differentiate from "can't connect", #1844 2021-04-13 21:54:07 +02:00
zadam a53a65be1f clipper fix, closes #1840 2021-04-12 23:29:02 +02:00
zadam 44aa2834b3 release 0.47.0-beta 2021-04-11 22:29:56 +02:00
zadam 58e4bd4974 Merge remote-tracking branch 'origin/stable' 2021-04-11 22:28:30 +02:00
zadam 44af431a93 ctrl + click / middle click now opens image in a text note in a new tab 2021-04-11 22:24:21 +02:00
zadam 479d742e85 partly reverted wrong change, #1820 2021-04-10 23:24:17 +02:00
zadam 3337487063 fixes 2021-04-10 23:23:43 +02:00
zadam beb42f18fe linux server better-sqlite3 binary 2021-04-10 11:15:13 +02:00
zadam 00a27313fb linux desktop and mac better-sqlite3 binaries 2021-04-09 23:40:42 +02:00
zadam 564fea43a9 don't open new tab after duplicating subtree 2021-04-09 23:40:15 +02:00
zadam 3d3142e20c Merge remote-tracking branch 'origin/master' 2021-04-08 21:22:54 +02:00
zadam 9c679aef20 added #runOnInstance and #runAtHour 2021-04-08 21:22:47 +02:00
Davi Alexandre d47a55d23a Avoid resetting all background properties on note-icons (#1834)
This ensures only the background-color property will be changed transparent,
avoiding to reset any other properties (background-image, for example) that
might have been set by some custom CSS rules applied in combination with
#iconClass
2021-04-08 20:24:19 +02:00
zadam 052f584bf4 edit note button is now just an icon 2021-04-08 20:17:35 +02:00
MatAsmania 1dfebdf6db Fix for Evernote workaround and support for en-todo (#1827) 2021-04-07 22:48:49 +02:00
zadam 5314446980 fix seeing only part of the PDF preview 2021-04-07 22:45:46 +02:00
zadam 6b41c26d2b disable entering new line in the attribute editor 2021-04-07 22:35:06 +02:00
zadam 463071ea4d make global button more consistent with sync button 2021-04-07 22:15:44 +02:00
zadam 79c5645964 various javaDoc improvements 2021-04-07 22:01:52 +02:00
zadam 2f58b6b3c8 fix bottom margin/padding styling in tooltip 2021-04-07 21:21:06 +02:00
zadam e7909d25c6 fix linking to notes 2021-04-07 21:12:55 +02:00
zadam f739dbfe87 ckeditor 5.60.0 2021-04-06 22:16:34 +02:00
zadam c43b20ec2b script api search ignores hoisting by default 2021-04-06 21:56:46 +02:00
zadam 2d0cb5b66e update electron to 13 beta 2021-04-06 20:19:34 +02:00
zadam caf38c94c7 fix search route 2021-04-06 20:18:34 +02:00
zadam 51db6761c8 fix opening links with single click outside of the ckeditor instance 2021-04-06 20:18:16 +02:00
zadam 4d110aa143 updated render note help 2021-04-05 22:37:12 +02:00
zadam 9c436cb61f Merge remote-tracking branch 'origin/stable' 2021-04-05 21:39:35 +02:00
zadam caa11b8f7e fix inheriting inheritable attributes through template, closes #1828 2021-04-05 20:52:19 +02:00
zadam 926e9e12c0 Merge remote-tracking branch 'origin/stable'
# Conflicts:
#	package-lock.json
#	package.json
2021-04-05 11:44:42 +02:00
zadam c4d35fb44e fix reference link widget in attr editor after CKEditor 27 upgrade 2021-04-05 11:28:34 +02:00
zadam 1b41b92e02 publish xml2js into backend script api 2021-04-05 11:18:56 +02:00
zadam 41cce4dcb9 improved task manager with allowed year range, #1823 2021-04-04 23:57:55 +02:00
zadam 858072cc10 fix lexer to parse correctly quoted empty strings, #1825 2021-04-04 23:13:18 +02:00
zadam 855c5e0e67 fix unit tests 2021-04-04 22:44:22 +02:00
WPum 903e6b7ccc correct a typo in #1820 fix (#1824)
Thanks!
2021-04-04 22:11:42 +02:00
zadam c71f3c35b8 Merge remote-tracking branch 'origin/stable' 2021-04-04 22:03:00 +02:00
zadam f0cc3d0bcd use entity changes instead of actual tables to fill in sector to sync, fixes #1809 2021-04-04 22:02:40 +02:00
zadam 7672f22ce0 release 0.46.7 2021-04-03 22:37:04 +02:00
zadam ef37a52a06 when leaving protected session don't forget to reset note cache (titles), #1810 2021-04-03 22:02:25 +02:00
zadam 2318d615bb make note cache decryption more robust - one failure will not crash the whole process, #1810 2021-04-03 21:48:16 +02:00
zadam 2e82b7380b hide relationMapLink and template relations from link map, fixes #1820 2021-04-03 11:28:11 +02:00
zadam bc14c3d665 backport not deforming standard top widget in small window size from master 2021-03-31 22:59:07 +02:00
zadam b89ea9a684 check for note cache branch existence, #1808 2021-03-31 22:35:10 +02:00
zadam 6c9ac5b5ec jquery 3.6.0 2021-03-30 23:32:44 +02:00
zadam 9cd45299b1 grid items in note list are clickable as a whole 2021-03-30 23:26:14 +02:00
zadam f1f4f45c9d display note icon in note list 2021-03-30 23:13:16 +02:00
zadam 8644c38abc hide sync status on extra window until the sync status is known 2021-03-30 22:59:25 +02:00
zadam e569ae1a0d one sync status tooltip did not have data-toggle="tooltip" 2021-03-30 22:53:23 +02:00
zadam da741b522e note cache fixes, #1805 2021-03-30 21:39:42 +02:00
zadam e055d4e15e ckeditor 27 2021-03-29 23:29:14 +02:00
zadam 58200d6431 fix dragabilly webpack build 2021-03-29 22:01:01 +02:00
zadam 57db945558 set cssClass and other note related classes on the root widget instead, fixes #1799 2021-03-28 22:24:24 +02:00
zadam 2e6cd5f809 Merge remote-tracking branch 'origin/master' 2021-03-28 00:07:45 +01:00
zadam 6541523e88 empty page on new tab nw offers list of available workspaces 2021-03-28 00:07:38 +01:00
Igor f60b282e09 * Russian README added (#1794)
* * Russian README added

* Links to another READMEs added

* * Fix inline images

Co-authored-by: mopsicus <lii@rstgames.com>
2021-03-27 20:32:01 +01:00
bavis-m 744ed27d91 If the database hasn't been initialized (new install?) don't attempt to update our last synced id, as there is no db to grab it from (prevents running the server as a fresh install completely) (#1797)
Co-authored-by: Mark <mark@mhack.io>
2021-03-27 20:30:40 +01:00
zadam a254199746 Merge remote-tracking branch 'origin/stable' 2021-03-26 21:47:24 +01:00
zadam 496767a52b release 0.46.6 2021-03-25 20:28:57 +01:00
zadam 9139c597e5 use only one label for icon class, fixes #1791 2021-03-25 19:46:10 +01:00
zadam 942132c01d release 0.46.6 2021-03-23 23:57:48 +01:00
zadam 928c8bfdf7 Merge remote-tracking branch 'origin/stable' 2021-03-23 22:47:42 +01:00
zadam 1862acd1ff avoid getting refreshes on note title 2021-03-23 22:46:18 +01:00
zadam ce7e18d0b0 fix syncing protected notes in case there wasn't any other change, closes #1778 2021-03-23 22:18:23 +01:00
zadam 65280d5ba3 avoid ugly error in the logs, #1778 2021-03-22 23:27:41 +01:00
zadam 7e3d424e23 fix deleting all revisions, closes #1774 2021-03-22 23:07:43 +01:00
zadam d5f38c0f88 sync status style fix 2021-03-21 23:45:15 +01:00
zadam 56f97f1081 dragging the tab vertically by 100px will now move it to a new window (chrome like behavior) 2021-03-21 23:35:13 +01:00
zadam e648505ad3 avoid weird button shrinking when window size is too small, fixes #1745 2021-03-21 23:12:34 +01:00
zadam 71c3fd5cbb don't use special layout for "extra window" 2021-03-21 23:05:31 +01:00
zadam f9b0418333 sync status widget tweaks 2021-03-21 22:46:45 +01:00
zadam 392a00ac17 sync status widget 2021-03-21 22:43:41 +01:00
zadam 1a9919a866 sync status widget WIP 2021-03-21 00:01:28 +01:00
zadam 9dd95b62a9 added ScrollingContainer to guarantee scrolling to top when switching notes 2021-03-20 19:44:43 +01:00
zadam 135b4fe88e Merge remote-tracking branch 'origin/stable'
# Conflicts:
#	src/public/app/layouts/mobile_layout.js
2021-03-20 12:49:37 +01:00
zadam bff04c121a fix scrolling in mobile frontend, closes #1768 2021-03-20 12:47:47 +01:00
zadam b79d81a94d sync status widget WIP 2021-03-20 00:00:49 +01:00
zadam 7e2186721f added "re-render note" menu item & shortcut, closes #1766 2021-03-19 22:34:56 +01:00
zadam 6a70e0ab97 add trilium-no-cert-check bat/shell file in order to be able to connect to the sync server even without valid server certificate 2021-03-18 23:49:28 +01:00
zadam b38a63d336 delete notes dialog provides checkbox to switch between delete all clones and normal delete 2021-03-18 23:42:30 +01:00
zadam d62558d97a delete notes dialog WIP 2021-03-18 23:23:35 +01:00
zadam 76aa7d1451 Merge remote-tracking branch 'origin/master' 2021-03-18 22:11:45 +01:00
zadam 4f401d71a2 Merge remote-tracking branch 'origin/stable' 2021-03-18 21:11:56 +01:00
Patrick Moriarty eb437ff642 Add mobile dropdown for plugin buttons (#1762)
* Add mobile toolbar buttons

* cleanup

* more cleanup

* Mobile plugin buttons: Add else block & change icon
2021-03-18 21:09:08 +01:00
zadam 6edc6e2825 load search result only on explicit action (expand node, execute search), #1759 2021-03-18 21:05:43 +01:00
zadam e8903e82a1 add option to disable note tree auto collapse, fixes #1751 2021-03-18 20:11:58 +01:00
zadam 59e8cb8c8b Merge remote-tracking branch 'origin/stable' 2021-03-17 23:20:28 +01:00
zadam 0cfd95d9b8 not finding node for a note path does not have to be always an error 2021-03-17 23:17:54 +01:00
zadam 1aa5349628 make edit button visible for empty readonly notes, fixes #1760 2021-03-17 22:41:37 +01:00
Patrick Moriarty a4bffbfa60 Mobile view: iOS sizing/styling changes (#1756)
* Fix dark themed action-button text color on mobile safari

* Fix note view scrolling on ios safari

* Fix scroll issues on tree view on ios safari

* Fix mobile firefox/chrome sizing issues

* Fix scroll-to-active-note
2021-03-17 22:07:53 +01:00
zadam 70656d240b better-sqlite3 built for electron 12 windows 2021-03-15 23:49:08 +01:00
zadam 42067b3c1e Merge remote-tracking branch 'origin/stable' 2021-03-15 23:40:44 +01:00
zadam 0bc91da0bb added possibility to zoom into images using mousewheel 2021-03-15 22:24:56 +01:00
zadam 4e21d12202 fix nodejs 10 compatibility, closes #1746 2021-03-15 20:31:12 +01:00
zadam fdce218e88 release 0.46.5 2021-03-14 22:56:27 +01:00
zadam 5b72b577b8 delete notes preview dialog WIP 2021-03-14 22:54:39 +01:00
zadam ec2f8ec796 added subtree note count into info widget 2021-03-14 20:47:33 +01:00
zadam cd3f8a41af removed (112) migrations originating before first public release (0.20 in Sept 2018) 2021-03-14 20:37:35 +01:00
zadam aa8bf0e60a Revert "Revert "delete notes skeleton dialog""
This reverts commit 584fea19
2021-03-14 19:54:40 +01:00
zadam 5b3a6b5e9d Merge remote-tracking branch 'origin/stable' 2021-03-14 19:53:51 +01:00
zadam 6c8d20288d fix 0.46 regression to set up sync from client, fixes #1742 2021-03-13 22:54:00 +01:00
zadam 88d04772c4 make sure the CLS entity changes are cleared after roll backed transaction, #1736 2021-03-12 23:48:14 +01:00
zadam 9fd26a9b9f when creating new note into inbox use current hoisted note in new tab as well 2021-03-12 21:47:26 +01:00
zadam 98f02c3c9a added "hoistedInbox" label 2021-03-12 21:29:50 +01:00
zadam 584fea1992 Revert "delete notes skeleton dialog"
This reverts commit 03a11e6f
2021-03-12 20:44:19 +01:00
zadam af50a1ec52 Merge remote-tracking branch 'origin/stable' into stable 2021-03-12 20:39:51 +01:00
zadam 4e76d1fa85 hide some "boring" attributes from book listing view 2021-03-12 20:39:42 +01:00
zadam 81e226af6f Merge remote-tracking branch 'origin/stable' 2021-03-12 20:27:05 +01:00
zadam 03a11e6f77 delete notes skeleton dialog 2021-03-11 22:35:53 +01:00
zadam cb558e1378 Merge remote-tracking branch 'origin/stable' 2021-03-11 21:14:58 +01:00
zadam e1a16b4a9f defensive check, #1736 2021-03-11 20:28:07 +01:00
zadam 12b468d3dc release 0.46.4-beta 2021-03-10 23:35:12 +01:00
zadam 6f901e6852 use icons instead of plain text to differentiate between different paths in note paths widget 2021-03-10 23:11:48 +01:00
zadam 09e9ac4d00 prevent cycles in resolving the notepath, fixes #1730 2021-03-10 22:54:55 +01:00
zadam 723a0e479e ckeditor 26.0 2021-03-10 20:02:23 +01:00
zadam 5b8e876b77 upgrade to electron 12 2021-03-09 22:36:41 +01:00
zadam a33ac65fdf fix focus on moving notes with keyboard 2021-03-09 22:24:59 +01:00
zadam f8fb071a6f added option to bring back plain (non-markdown) headings, closes #1678 2021-03-09 22:06:40 +01:00
zadam a654078e56 fix broken template copy, closes #1724 2021-03-09 20:51:57 +01:00
zadam fba68681aa when resolving note path check if there's a hoisted note in it, if not, try again to find some path with hoisted note, closes #1718 2021-03-09 20:37:56 +01:00
zadam 50c84e0f5f release 0.46.3-beta 2021-03-08 23:11:11 +01:00
zadam f27370d44f fix putting focus back to the note tree after note deletion 2021-03-08 23:10:34 +01:00
zadam c6c9202c00 fix note icon color in dark mode 2021-03-08 22:06:26 +01:00
zadam 2cafda5f66 note paths visually distinguishes between different note paths, closes #1669 2021-03-08 22:04:52 +01:00
zadam 873953cbaf fix bug 2021-03-08 00:09:48 +01:00
zadam d51744ce19 make note paths current path underlined 2021-03-08 00:07:00 +01:00
zadam 7df8c940b6 have paths in "note paths" widget also sorted by priority 2021-03-08 00:04:43 +01:00
zadam 9bac2a4819 refresh inherited attribute list after attr change, closes #1717 2021-03-07 23:31:56 +01:00
zadam 88147f7a0a fixed "create note after" position issue 2021-03-06 23:53:10 +01:00
zadam ca77211b38 improved template code with better heuristics on when to copy things from the template 2021-03-06 21:34:03 +01:00
zadam 4606e8d118 non-search notes should have no children limit, #1673 2021-03-06 20:31:12 +01:00
zadam 9f002fa802 change the heuristics to choose the best note path when ambiguous/incomplete/just noteId is provided, #1711 2021-03-06 20:23:29 +01:00
zadam 060d4fc27b fix duplication of hoisted note tree when hoisted note has clones 2021-03-04 23:19:27 +01:00
zadam bf0fbe201e hack when hoisted note is cloned then it could be filtered multiple times while we want only 1 2021-03-03 23:00:16 +01:00
zadam 721e5da672 use notePath instead of noteId for note creation to correctly work with cloned ancestors 2021-03-03 22:48:06 +01:00
zadam 8192b51b8a cleanup of createTopLevelNote 2021-03-03 22:27:57 +01:00
zadam 73514a63d8 when resolving note path attempt to find one going through hoisted note 2021-03-03 21:49:57 +01:00
zadam f8c310eb8f added license mention into the README noting AGPL v3+, #1708 2021-03-03 21:41:44 +01:00
zadam b9422b0efd cssClass is now added also to link map and relation map, closes #1702 2021-03-02 23:20:53 +01:00
zadam 14ced949a9 fix modifying index in note cache when deleting attribute, closes #1706 2021-03-02 23:10:42 +01:00
zadam 5b5c2a2dbb fix null utcDateChanged in entity_changes, closes #1705 2021-03-02 22:08:29 +01:00
zadam 2c958eaacb Merge branch 'sort-by' 2021-02-28 23:40:37 +01:00
zadam 4aa27b6033 added "sort by" dialog 2021-02-28 23:40:15 +01:00
zadam 89a0c5a1c9 fix "no data" when switching between tabs with different hoisted notes, closes #1699 2021-02-28 19:46:04 +01:00
zadam 78e48095e6 prompt user when there are unsaved changes, #1692 2021-02-27 23:39:02 +01:00
zadam 02016ed031 fix create full search note 2021-02-27 21:19:54 +01:00
zadam cb91dadeca add possibility to define search home for hoisted notes, #1694 2021-02-27 21:18:10 +01:00
zadam 2c755bcc38 don't fail (immediatelly) when sql insert doesn't return lastInsertRowid, #1665 2021-02-27 21:09:13 +01:00
zadam 3c7a6bc1e4 use longer update interval for web 2021-02-27 21:08:27 +01:00
zadam 3fe87259e2 if search note would end up outside of current hoisting, save it under the hoisted note, closes #1694 2021-02-26 23:33:22 +01:00
zadam d476dfc53b fix searching the second time in quick search, #1694 2021-02-26 23:20:49 +01:00
zadam 19821b634f release 0.46.2-beta 2021-02-25 22:41:35 +01:00
zadam cde41b268e allow copying type, mime, content from template only for text and code note types, fixes #1689 2021-02-25 22:33:26 +01:00
zadam 1c59bc4d3c sort child notes by ... WIP 2021-02-25 22:26:46 +01:00
zadam cb6d35236c update correctly "multi-parent" node status, fixes #1688 2021-02-25 21:16:21 +01:00
zadam 7572ee284b set search note title correctly during creation 2021-02-25 20:02:49 +01:00
zadam d0eaf623a8 activate node after calling "scroll to active note", fixes #1685 2021-02-24 22:41:24 +01:00
zadam 25c2db6c3a sort parent relationships so that clones in search notes appear last, fixes #1686 2021-02-24 22:38:26 +01:00
zadam 5a173ff14e quick search now allows clicking anywhere 2021-02-24 22:19:09 +01:00
zadam 7fab75b085 Merge remote-tracking branch 'origin/master' 2021-02-23 22:01:10 +01:00
zadam 0f065536d0 use 100 children limit on only search notes (as was initially intended), fixes #1673 2021-02-23 22:01:02 +01:00
sigaloid d0747abded no h1 headings (#1679)
#1552
2021-02-23 21:23:23 +01:00
Mirwaisse Djanbaz f62b4a581e Typo in export.js (#1682) 2021-02-23 21:20:19 +01:00
Mirwaisse Djanbaz dcf1c62ec1 Typo in appearance settings (#1683) 2021-02-23 21:19:57 +01:00
zadam 93d55b3e7b put back waiting for sync after frontend API backend request 2021-02-22 22:43:54 +01:00
zadam 90c6852423 hide auto links by default in relation map, allow configuring displayed relations, fixes #1674 2021-02-22 22:34:33 +01:00
zadam 208baa56e9 error handling 2021-02-22 21:59:37 +01:00
zadam ddf8438b22 fix edited notes widget note transitions, fixes #1672 2021-02-21 22:45:32 +01:00
zadam 6008dc891f fix note activation right after creation from calendar 2021-02-21 21:54:16 +01:00
zadam cc887a00f2 runOnBackend now does not automatically wait for the maxSyncId since it can easily result in infinite cycle 2021-02-21 21:28:00 +01:00
zadam fbbd51d0b1 small changes for better debugging infos 2021-02-20 23:17:29 +01:00
zadam 081b8b126a fix note_reordering not updating note cache 2021-02-20 21:28:22 +01:00
zadam 7a6bb81345 display note path in search results 2021-02-20 20:10:45 +01:00
zadam 1d5714c411 release 0.46.1-beta 2021-02-19 23:15:18 +01:00
zadam 56506d33a7 small fixes 2021-02-19 22:58:53 +01:00
zadam c94fb7a62d created a specific widget for search result to add "no results" message 2021-02-19 22:15:56 +01:00
zadam 4160da70be implemented "targetRelationCount" and exposed more of them in order by widget, fixes #1658 2021-02-19 20:42:34 +01:00
zadam 2cfd093cae allow search result to be moved from tree to relation map, fixes #1650 2021-02-18 22:30:55 +01:00
zadam 859465841d add possibility to debug search queries by logging expression tree, #1655 2021-02-18 22:10:49 +01:00
zadam 0c9a11db6f bring back "create and link note" into more places, fixes #1653 2021-02-18 20:10:44 +01:00
zadam 4cbf9c2e86 show "reset to default icon" button only when there is an explicit icon 2021-02-18 20:06:14 +01:00
zadam 1f7997eeed added "reset to default icon" button to icon picker 2021-02-18 19:33:12 +01:00
zadam 8e730c6ecf add frontend API method openTabWithNote, #1645 2021-02-17 23:55:51 +01:00
zadam 600a312b2a fix parsing of "!=" operator, #1651 2021-02-17 23:41:15 +01:00
zadam ec2e973165 allow only valid attr name characters for relation map relations, closes #1649 2021-02-17 23:22:14 +01:00
zadam faeb55bc90 don't allow to bring up delete dialog on saved search results (consistency with context menu) 2021-02-17 23:03:34 +01:00
zadam 23ebe360a6 small fixes 2021-02-17 20:59:44 +01:00
zadam d905335935 correct placement of imported root note (at the end) 2021-02-16 23:38:05 +01:00
zadam f49f510459 fixes in "other notes with relation..." 2021-02-16 23:07:40 +01:00
zadam e78b495bd3 reduce flickering of import by disabling entityChanges notification of frontend 2021-02-16 22:51:00 +01:00
zadam 5542c9dc57 fixed saved note migration - need to be migrated as last, #1647 2021-02-16 21:40:17 +01:00
zadam 2388da7cfb fixed "show in full search" click and keyboard shortcuts for collapse tree and scroll to active note actions, #1647 2021-02-16 21:19:07 +01:00
zadam 3b4fa0c5fc update section container on attribute change, closes #1646 2021-02-16 20:58:17 +01:00
410 changed files with 8784 additions and 5643 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaScriptLibraryMappings">
<file url="PROJECT" libraries="{@types/jquery}" />
<includedPredefinedLibrary name="Node.js Core" />
</component>
</project>
+1 -1
View File
@@ -3,7 +3,7 @@
<component name="JavaScriptSettings">
<option name="languageLevel" value="ES6" />
</component>
<component name="ProjectRootManager">
<component name="ProjectRootManager" version="2" languageLevel="JDK_16" project-jdk-name="openjdk-16" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>
+1
View File
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="SqlDialectMappings">
<file url="file://$PROJECT_DIR$" dialect="SQLite" />
<file url="PROJECT" dialect="SQLite" />
</component>
</project>
Generated
+1 -2
View File
@@ -2,6 +2,5 @@
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
<mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
</component>
</project>
</project>
+2
View File
@@ -1,5 +1,7 @@
# Trilium注意事项
[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)
Trilium Notes是一个分层的笔记应用程序,专注于建立大型个人知识库。请参阅[屏幕截图](https://github.com/zadam/trilium/wiki/Screenshot-tour)以快速了解:
+6
View File
@@ -1,5 +1,7 @@
# 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)
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:
@@ -55,3 +57,7 @@ npm run start-server
* [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
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.
+63
View File
@@ -0,0 +1,63 @@
# 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)
Trilium Notes – это приложение для заметок с иерархической структурой, ориентированное на создание больших персональных баз знаний. Для быстрого ознакомления посмотрите [скриншот-тур](https://github.com/zadam/trilium/wiki/Screenshot-tour):
![](https://raw.githubusercontent.com/wiki/zadam/trilium/images/screenshot.png)
## Возможности
* Заметки можно расположить в виде дерева произвольной глубины. Отдельную заметку можно разместить в нескольких местах дерева (см. [клонирование](https://github.com/zadam/trilium/wiki/Cloning-notes))
* Продвинутый визуальный редактор (WYSIWYG) позволяет работать с таблицами, изображениями, [формулами](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/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://github.com/zadam/trilium/wiki/Protected-notes) с детализацией по каждой заметке
* [Карты связей](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)
* Хорошо масштабируется, как по удобству использования, так и по производительности до 100000 заметок
* Оптимизированный [мобильный фронтенд](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) для удобного сохранения веб-контента
## Сборки
Trilium предоставляется в виде десктопного приложения (Linux и Windows) или веб-приложения, размещенного на вашем сервере (Linux). Доступна сборка Mac OS, но она [не поддерживается](https://github.com/zadam/trilium/wiki/FAQ#mac-os-support).
* Если вы хотите использовать Trilium на десктопе, скачайте архив для своей платформы со страницы [релизов](https://github.com/zadam/trilium/releases/latest), распакуйте и запустите исполняемый файл ```trilium```.
* Если вы хотите установить Trilium на сервере, следуйте этой [инструкции](https://github.com/zadam/trilium/wiki/Server-installation).
* В данный момент поддерживаются (протестированы) последние версии браузеров Chrome и Firefox.
## Документация
[Полный список страниц документации доступен в Wiki.](https://github.com/zadam/trilium/wiki/)
Вы также можете ознакомиться с [шаблонами персональных баз знаний](https://github.com/zadam/trilium/wiki/Patterns-of-personal-knowledge-base), чтобы получить представление о том, как можно использовать Trilium.
## Участвуйте в разработке
Используйте онлайн среду разработки в браузере
[![Открыть в 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).
## Лицензия
Эта программа является бесплатным программным обеспечением: вы можете распространять и/или изменять ее в соответствии с условиями GNU Affero General Public License, опубликованной Free Software Foundation, либо версии 3 Лицензии, либо (по вашему выбору) любой более поздней версии.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+5 -2
View File
@@ -27,8 +27,11 @@ 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/portable-trilium.sh $BUILD_DIR/
chmod 755 $BUILD_DIR/portable-trilium.sh
cp bin/tpl/trilium-portable.sh $BUILD_DIR/
chmod 755 $BUILD_DIR/trilium-portable.sh
cp bin/tpl/trilium-no-cert-check.sh $BUILD_DIR/
chmod 755 $BUILD_DIR/trilium-no-cert-check.sh
echo "Packaging linux x64 electron distribution..."
VERSION=`jq -r ".version" package.json`
+2 -2
View File
@@ -1,7 +1,7 @@
#!/usr/bin/env bash
PKG_DIR=dist/trilium-linux-x64-server
NODE_VERSION=12.19.0
NODE_VERSION=14.16.1
if [ "$1" != "DONTCOPY" ]
then
@@ -10,7 +10,7 @@ fi
cd dist
wget https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.xz
tar xvfJ node-v${NODE_VERSION}-linux-x64.tar.xz
tar xfJ node-v${NODE_VERSION}-linux-x64.tar.xz
rm node-v${NODE_VERSION}-linux-x64.tar.xz
cd ..
+2 -1
View File
@@ -25,7 +25,8 @@ 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/portable-trilium.bat $BUILD_DIR/
cp bin/tpl/trilium-portable.bat $BUILD_DIR/
cp bin/tpl/trilium-no-cert-check.bat $BUILD_DIR/
echo "Zipping windows x64 electron distribution..."
VERSION=`jq -r ".version" package.json`
+2 -2
View File
@@ -5,7 +5,7 @@ if [[ $# -eq 0 ]] ; then
exit 1
fi
npm run webpack
n exec 12 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 && npm install --only=prod)
(cd $DIR && n exec 12 npm install --only=prod)
# cleanup of useless files in dependencies
rm -r $DIR/node_modules/image-q/demo
+3 -3
View File
@@ -8,9 +8,9 @@ fi
VERSION=$1
SERIES=${VERSION:0:4}-latest
sudo docker push zadam/trilium:$VERSION
sudo docker push zadam/trilium:$SERIES
docker push zadam/trilium:$VERSION
docker push zadam/trilium:$SERIES
if [[ $1 != *"beta"* ]]; then
sudo docker push zadam/trilium:latest
docker push zadam/trilium:latest
fi
+12 -39
View File
@@ -55,47 +55,20 @@ echo "Creating release in GitHub"
EXTRA=
if [[ $TAG == *"beta"* ]]; then
EXTRA=--pre-release
EXTRA=--prerelease
fi
github-release release \
--tag $TAG \
--name "$TAG release" $EXTRA
echo "$GITHUB_CLI_AUTH_TOKEN" | gh auth login --with-token
echo "Uploading debian x64 package"
github-release upload \
--tag $TAG \
--name "$DEBIAN_X64_BUILD" \
--file "dist/$DEBIAN_X64_BUILD"
echo "Uploading linux x64 build"
github-release upload \
--tag $TAG \
--name "$LINUX_X64_BUILD" \
--file "dist/$LINUX_X64_BUILD"
echo "Uploading windows x64 build"
github-release upload \
--tag $TAG \
--name "$WINDOWS_X64_BUILD" \
--file "dist/$WINDOWS_X64_BUILD"
echo "Uploading mac x64 build"
github-release upload \
--tag $TAG \
--name "$MAC_X64_BUILD" \
--file "dist/$MAC_X64_BUILD"
echo "Uploading linux x64 server build"
github-release upload \
--tag $TAG \
--name "$SERVER_BUILD" \
--file "dist/$SERVER_BUILD"
gh release create "$TAG" \
--title "$TAG release" \
--notes "" \
$EXTRA \
"dist/$DEBIAN_X64_BUILD" \
"dist/$LINUX_X64_BUILD" \
"dist/$WINDOWS_X64_BUILD" \
"dist/$MAC_X64_BUILD" \
"dist/$SERVER_BUILD"
echo "Building docker image"
@@ -105,4 +78,4 @@ echo "Pushing docker image to dockerhub"
bin/push-docker-image.sh $VERSION
echo "Release finished!"
echo "Release finished!"
+4
View File
@@ -0,0 +1,4 @@
SET DIR=%~dp0
set NODE_TLS_REJECT_UNAUTHORIZED=0
cd %DIR%
start trilium.exe
+7
View File
@@ -0,0 +1,7 @@
#!/usr/bin/env sh
DIR=`dirname "$0"`
export NODE_TLS_REJECT_UNAUTHORIZED=0
"$DIR/trilium"
BIN
View File
Binary file not shown.
-11
View File
@@ -1,11 +0,0 @@
DROP TABLE IF EXISTS anchors;
DROP TABLE IF EXISTS attachments;
DROP TABLE IF EXISTS bookmarks;
DROP TABLE IF EXISTS custom_properties;
DROP TABLE IF EXISTS deletions;
DROP TABLE IF EXISTS deletions_attachments;
DROP TABLE IF EXISTS formatting;
DROP TABLE IF EXISTS icons;
DROP TABLE IF EXISTS tags;
DROP TABLE IF EXISTS tags_notes;
DROP TABLE IF EXISTS tasks;
@@ -1,3 +0,0 @@
CREATE TABLE notes_mig AS SELECT note_id, note_title, note_text, note_clone_id, date_created, date_modified, encryption FROM notes;
DROP TABLE notes;
ALTER TABLE notes_mig RENAME TO notes;
@@ -1 +0,0 @@
ALTER TABLE notes ADD COLUMN is_deleted INTEGER NOT NULL DEFAULT 0
@@ -1 +0,0 @@
ALTER TABLE notes_tree ADD COLUMN date_modified INTEGER NOT NULL DEFAULT 0
-1
View File
@@ -1 +0,0 @@
DELETE FROM options WHERE opt_name IN ('is_readonly', 'prop_modified', 'doc_title', 'doc_UID', 'format_version', 'flask_secret_key')
@@ -1,3 +0,0 @@
CREATE TABLE notes_history_mig AS SELECT id, note_id, note_title, note_text, date_modified AS date_modified_from, date_modified AS date_modified_to FROM notes_history;
DROP TABLE notes_history;
ALTER TABLE notes_history_mig RENAME TO notes_history;
@@ -1 +0,0 @@
ALTER TABLE notes_history ADD COLUMN encryption INTEGER DEFAULT 0
-15
View File
@@ -1,15 +0,0 @@
CREATE TABLE `notes_history_mig` (
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
`note_id` INT,
`note_title` TEXT,
`note_text` TEXT,
`date_modified_from` INT,
`date_modified_to` INT,
`encryption` INTEGER DEFAULT 0
);
INSERT INTO notes_history (id, note_id, note_title, note_text, date_modified_from, date_modified_to, encryption)
SELECT id, note_id, note_title, note_text, date_modified_from, date_modified_to, encryption FROM notes_history;
DROP TABLE notes_history;
ALTER TABLE notes_history_mig RENAME TO notes_history;
-41
View File
@@ -1,41 +0,0 @@
CREATE INDEX `IDX_notes_history_note_id` ON `notes_history` (
`note_id`
);
CREATE INDEX `IDX_images_note_id` ON `images` (
`note_id`
);
CREATE INDEX `IDX_links_note_id` ON `links` (
`note_id`
);
CREATE INDEX `IDX_audit_log_note_id` ON `audit_log` (
`note_id`
);
CREATE INDEX `IDX_audit_log_date_modified` ON `audit_log` (
`date_modified`
);
CREATE TABLE `notes_mig` (
`note_id` TEXT NOT NULL,
`note_title` TEXT,
`note_text` TEXT,
`note_clone_id` TEXT,
`date_created` INT,
`date_modified` INT,
`encryption` INT,
`is_deleted` INTEGER NOT NULL DEFAULT 0,
PRIMARY KEY(`note_id`)
);
INSERT INTO notes_mig (note_id, note_title, note_text, note_clone_id, date_created, date_modified, encryption)
SELECT note_id, note_title, note_text, note_clone_id, date_created, date_modified, encryption FROM notes;
DROP TABLE notes;
ALTER TABLE notes_mig RENAME TO notes;
CREATE INDEX `IDX_notes_is_deleted` ON `notes` (
`is_deleted`
);
@@ -1,5 +0,0 @@
ALTER TABLE notes_tree ADD COLUMN is_deleted INTEGER NOT NULL DEFAULT 0;
CREATE INDEX `IDX_notes_tree_is_deleted` ON `notes_tree` (
`is_deleted`
);
@@ -1 +0,0 @@
INSERT INTO options (opt_name, opt_value) VALUES ('last_synced', 0)
@@ -1,5 +0,0 @@
CREATE UNIQUE INDEX `IDX_notes_history_note_from_to` ON `notes_history` (
`note_id`,
`date_modified_from`,
`date_modified_to`
);
@@ -1,3 +0,0 @@
UPDATE options SET opt_name = 'last_synced_pull' WHERE opt_name = 'last_synced';
INSERT INTO options (opt_name, opt_value) VALUES ('last_synced_push', 0);
@@ -1,16 +0,0 @@
CREATE TABLE `audit_log_mig` (
`id` TEXT NOT NULL PRIMARY KEY,
`date_modified` INTEGER NOT NULL,
`category` TEXT NOT NULL,
`browser_id` TEXT,
`note_id` TEXT,
`change_from` TEXT,
`change_to` TEXT,
`comment` TEXT
);
INSERT INTO audit_log_mig (id, date_modified, category, browser_id, note_id, change_from, change_to)
SELECT id, date_modified, category, browser_id, note_id, change_from, change_to FROM audit_log;
DROP TABLE audit_log;
ALTER TABLE audit_log_mig RENAME TO audit_log;
-6
View File
@@ -1,6 +0,0 @@
UPDATE notes SET note_id = substr(note_id, 0, 22);
UPDATE notes_tree SET note_id = substr(note_id, 0, 22), note_pid = substr(note_pid, 0, 22);
UPDATE notes_history SET note_id = substr(note_id, 0, 22);
UPDATE audit_log SET note_id = substr(note_id, 0, 22);
UPDATE links SET note_id = substr(note_id, 0, 22);
UPDATE images SET note_id = substr(note_id, 0, 22);
-6
View File
@@ -1,6 +0,0 @@
UPDATE notes SET note_id = substr(note_id, 0, 13);
UPDATE notes_tree SET note_id = substr(note_id, 0, 13), note_pid = substr(note_pid, 0, 13);
UPDATE notes_history SET note_id = substr(note_id, 0, 13);
UPDATE audit_log SET note_id = substr(note_id, 0, 13);
UPDATE links SET note_id = substr(note_id, 0, 13);
UPDATE images SET note_id = substr(note_id, 0, 13);
-1
View File
@@ -1 +0,0 @@
INSERT INTO options (opt_name, opt_value) VALUES ('document_id', '');
-1
View File
@@ -1 +0,0 @@
INSERT INTO options (opt_name, opt_value) VALUES ('document_secret', '');
@@ -1 +0,0 @@
ALTER TABLE options ADD COLUMN date_modified INTEGER NOT NULL DEFAULT 0
-15
View File
@@ -1,15 +0,0 @@
CREATE TABLE `sync` (
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
`entity_name` TEXT NOT NULL,
`entity_id` TEXT NOT NULL,
`sync_date` INTEGER NOT NULL
);
CREATE UNIQUE INDEX `IDX_sync_entity_name_id` ON `sync` (
`entity_name`,
`entity_id`
);
CREATE INDEX `IDX_sync_sync_date` ON `sync` (
`sync_date`
);
@@ -1 +0,0 @@
ALTER TABLE sync ADD COLUMN source_id TEXT
@@ -1,7 +0,0 @@
ALTER TABLE notes_history ADD COLUMN note_history_id TEXT;
UPDATE notes_history SET note_history_id = id;
CREATE UNIQUE INDEX `IDX_note_history_note_history_id` ON `notes_history` (
`note_history_id`
);
@@ -1,27 +0,0 @@
CREATE TABLE `notes_history_mig` (
`note_history_id` TEXT NOT NULL PRIMARY KEY,
`note_id` TEXT NOT NULL,
`note_title` TEXT,
`note_text` TEXT,
`encryption` INT,
`date_modified_from` INT,
`date_modified_to` INT
);
INSERT INTO notes_history_mig (note_history_id, note_id, note_title, note_text, encryption, date_modified_from, date_modified_to)
SELECT note_history_id, note_id, note_title, note_text, encryption, date_modified_from, date_modified_to FROM notes_history;
DROP TABLE notes_history;
ALTER TABLE notes_history_mig RENAME TO notes_history;
CREATE INDEX `IDX_notes_history_note_id` ON `notes_history` (
`note_id`
);
CREATE INDEX `IDX_notes_history_note_date_modified_from` ON `notes_history` (
`date_modified_from`
);
CREATE INDEX `IDX_notes_history_note_date_modified_to` ON `notes_history` (
`date_modified_to`
);
@@ -1,11 +0,0 @@
CREATE TABLE `options_mig` (
`opt_name` TEXT NOT NULL PRIMARY KEY,
`opt_value` TEXT,
`date_modified` INT
);
INSERT INTO options_mig (opt_name, opt_value, date_modified)
SELECT opt_name, opt_value, date_modified FROM options;
DROP TABLE options;
ALTER TABLE options_mig RENAME TO options;
-10
View File
@@ -1,10 +0,0 @@
CREATE TABLE `event_log` (
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
`note_id` TEXT,
`comment` TEXT,
`date_added` INTEGER NOT NULL
);
CREATE INDEX `IDX_event_log_date_added` ON `event_log` (
`date_added`
);
@@ -1,4 +0,0 @@
CREATE TABLE `recent_notes` (
`note_id` TEXT NOT NULL PRIMARY KEY,
`date_accessed` INTEGER NOT NULL
);
@@ -1 +0,0 @@
ALTER TABLE recent_notes ADD COLUMN is_deleted INT;
@@ -1,52 +0,0 @@
UPDATE audit_log SET category = 'PROTECTED' WHERE category = 'ENCRYPTION';
DELETE FROM notes WHERE note_clone_id IS NOT NULL AND note_clone_id != '';
CREATE TABLE `notes_mig` (
`note_id` TEXT NOT NULL,
`note_title` TEXT,
`note_text` TEXT,
`date_created` INT,
`date_modified` INT,
`is_protected` INT NOT NULL DEFAULT 0,
`is_deleted` INT NOT NULL DEFAULT 0,
PRIMARY KEY(`note_id`)
);
INSERT INTO notes_mig (note_id, note_title, note_text, date_created, date_modified, is_protected, is_deleted)
SELECT note_id, note_title, note_text, date_created, date_modified, encryption, is_deleted FROM notes;
DROP TABLE notes;
ALTER TABLE notes_mig RENAME TO notes;
CREATE INDEX `IDX_notes_is_deleted` ON `notes` (
`is_deleted`
);
CREATE TABLE `notes_history_mig` (
`note_history_id` TEXT NOT NULL PRIMARY KEY,
`note_id` TEXT NOT NULL,
`note_title` TEXT,
`note_text` TEXT,
`is_protected` INT,
`date_modified_from` INT,
`date_modified_to` INT
);
INSERT INTO notes_history_mig (note_history_id, note_id, note_title, note_text, is_protected, date_modified_from, date_modified_to)
SELECT note_history_id, note_id, note_title, note_text, encryption, date_modified_from, date_modified_to FROM notes_history;
DROP TABLE notes_history;
ALTER TABLE notes_history_mig RENAME TO notes_history;
CREATE INDEX `IDX_notes_history_note_id` ON `notes_history` (
`note_id`
);
CREATE INDEX `IDX_notes_history_note_date_modified_from` ON `notes_history` (
`date_modified_from`
);
CREATE INDEX `IDX_notes_history_note_date_modified_to` ON `notes_history` (
`date_modified_to`
);
@@ -1 +0,0 @@
UPDATE options SET opt_name = 'protected_session_timeout' WHERE opt_name = 'encryption_session_timeout';
-1
View File
@@ -1 +0,0 @@
module.exports = async () => console.log("heeeelllooo!!!");
@@ -1,44 +0,0 @@
const sql = require('../services/sql');
const data_encryption = require('../services/data_encryption');
const password_encryption = require('../services/password_encryption');
const readline = require('readline');
const cl = readline.createInterface(process.stdin, process.stdout);
function question(q) {
return new Promise( (res, rej) => {
cl.question( q, answer => {
res(answer);
})
});
}
module.exports = async () => {
const password = await question("Enter password: ");
const dataKey = await password_encryption.getDecryptedDataKey(password);
const protectedNotes = await sql.getRows("SELECT * FROM notes WHERE is_protected = 1");
for (const note of protectedNotes) {
const decryptedTitle = data_encryption.decrypt(dataKey, note.note_title);
note.note_title = data_encryption.encrypt(dataKey, "0" + note.note_id, decryptedTitle);
const decryptedText = data_encryption.decrypt(dataKey, note.note_text);
note.note_text = data_encryption.encrypt(dataKey, "1" + note.note_id, decryptedText);
await sql.execute("UPDATE notes SET note_title = ?, note_text = ? WHERE note_id = ?", [note.note_title, note.note_text, note.note_id]);
}
const protectedNotesHistory = await sql.getRows("SELECT * FROM notes_history WHERE is_protected = 1");
for (const noteHistory of protectedNotesHistory) {
const decryptedTitle = data_encryption.decrypt(dataKey, noteHistory.note_title);
noteHistory.note_title = data_encryption.encrypt(dataKey, "0" + noteHistory.note_history_id, decryptedTitle);
const decryptedText = data_encryption.decrypt(dataKey, noteHistory.note_text);
noteHistory.note_text = data_encryption.encrypt(dataKey, "1" + noteHistory.note_history_id, decryptedText);
await sql.execute("UPDATE notes SET note_title = ?, note_text = ? WHERE note_id = ?", [noteHistory.note_title, noteHistory.note_text, noteHistory.note_history_id]);
}
};
@@ -1 +0,0 @@
INSERT INTO options (opt_name, opt_value) VALUES ('encrypted_data_key_iv', '')
@@ -1,25 +0,0 @@
const password_encryption = require('../services/password_encryption');
const readline = require('readline');
const cl = readline.createInterface(process.stdin, process.stdout);
function question(q) {
return new Promise( (res, rej) => {
cl.question( q, answer => {
res(answer);
})
});
}
module.exports = async () => {
const password = await question("Enter password: ");
let dataKey = await password_encryption.getDecryptedDataKey(password);
console.log("Original data key: ", dataKey);
dataKey = dataKey.slice(0, 16);
console.log("Trimmed data key: ", dataKey);
await password_encryption.setDataKey(password, dataKey);
};
-5
View File
@@ -1,5 +0,0 @@
CREATE TABLE `source_ids` (
`source_id` TEXT NOT NULL,
`date_created` INTEGER NOT NULL,
PRIMARY KEY(`source_id`)
);
@@ -1 +0,0 @@
UPDATE notes_tree SET note_pid = 'root' WHERE note_pid = ''
-1
View File
@@ -1 +0,0 @@
DELETE FROM sync;
-21
View File
@@ -1,21 +0,0 @@
CREATE TABLE [notes_tree_mig] (
[note_tree_id] VARCHAR(30) PRIMARY KEY NOT NULL,
[note_id] VARCHAR(30) UNIQUE NOT NULL,
[note_pid] VARCHAR(30) NOT NULL,
[note_pos] INTEGER NOT NULL,
[is_expanded] BOOLEAN NULL ,
date_modified INTEGER NOT NULL DEFAULT 0,
is_deleted INTEGER NOT NULL DEFAULT 0
);
INSERT INTO notes_tree_mig (note_tree_id, note_id, note_pid, note_pos, is_expanded, date_modified, is_deleted)
SELECT 'TT' || SUBSTR(note_id, 3), note_id, note_pid, note_pos, is_expanded, date_modified, is_deleted FROM notes_tree;
UPDATE notes_tree_mig SET note_pid = 'TT' || SUBSTR(note_pid, 3) WHERE note_pid != 'root';
DROP TABLE notes_tree;
ALTER TABLE notes_tree_mig RENAME TO notes_tree;
CREATE INDEX `IDX_notes_tree_note_id` ON `notes_tree` (
`note_tree_id`
);
@@ -1 +0,0 @@
UPDATE options SET opt_name = 'start_note_tree_id' WHERE opt_name = 'start_node';
@@ -1,7 +0,0 @@
DROP TABLE recent_notes;
CREATE TABLE `recent_notes` (
`note_tree_id` TEXT NOT NULL PRIMARY KEY,
`date_accessed` INTEGER NOT NULL ,
is_deleted INT
);
-6
View File
@@ -1,6 +0,0 @@
UPDATE
notes_tree
SET
note_pid = (SELECT parent.note_id FROM notes_tree parent WHERE notes_tree.note_pid = parent.note_tree_id)
WHERE
note_pid != 'root'
@@ -1,7 +0,0 @@
DROP TABLE recent_notes;
CREATE TABLE `recent_notes` (
`note_path` TEXT NOT NULL PRIMARY KEY,
`date_accessed` INTEGER NOT NULL ,
is_deleted INT
);
@@ -1,24 +0,0 @@
CREATE TABLE "notes_tree_mig" (
[note_tree_id] VARCHAR(30) PRIMARY KEY NOT NULL,
[note_id] VARCHAR(30) NOT NULL,
[note_pid] VARCHAR(30) NOT NULL,
[note_pos] INTEGER NOT NULL,
[is_expanded] BOOLEAN NULL ,
date_modified INTEGER NOT NULL DEFAULT 0,
is_deleted INTEGER NOT NULL DEFAULT 0
);
INSERT INTO notes_tree_mig (note_tree_id, note_id, note_pid, note_pos, is_expanded, date_modified, is_deleted)
SELECT note_tree_id, note_id, note_pid, note_pos, is_expanded, date_modified, is_deleted FROM notes_tree;
DROP TABLE notes_tree;
ALTER TABLE notes_tree_mig RENAME TO notes_tree;
CREATE INDEX `IDX_notes_tree_note_tree_id` ON `notes_tree` (
`note_tree_id`
);
CREATE INDEX `IDX_notes_tree_note_id_note_pid` ON `notes_tree` (
`note_id`,
`note_pid`
);
-3
View File
@@ -1,3 +0,0 @@
DELETE FROM sync;
UPDATE options SET opt_value = 0 WHERE opt_name IN ('last_synced_push', 'last_synced_pull');
-1
View File
@@ -1 +0,0 @@
DROP TABLE audit_log;
@@ -1 +0,0 @@
ALTER TABLE notes_tree ADD COLUMN `prefix` TEXT
@@ -1,2 +0,0 @@
DROP TABLE IF EXISTS links;
DROP TABLE IF EXISTS images;
-1
View File
@@ -1 +0,0 @@
SELECT 1;
@@ -1,10 +0,0 @@
DROP TABLE recent_notes;
CREATE TABLE `recent_notes` (
'note_tree_id'TEXT NOT NULL PRIMARY KEY,
`note_path` TEXT NOT NULL,
`date_accessed` INTEGER NOT NULL ,
is_deleted INT
);
DELETE FROM sync WHERE entity_name = 'recent_notes';
@@ -1 +0,0 @@
UPDATE options SET opt_name = 'start_note_path' WHERE opt_name = 'start_note_tree_id';
-156
View File
@@ -1,156 +0,0 @@
DROP TABLE migrations;
-- Sync
CREATE TABLE `sync_mig` (
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
`entity_name` TEXT NOT NULL,
`entity_id` TEXT NOT NULL,
`source_id` TEXT NOT NULL,
`sync_date` TEXT NOT NULL);
INSERT INTO sync_mig (id, entity_name, entity_id, source_id, sync_date)
SELECT id, entity_name, entity_id, source_id, strftime('%Y-%m-%dT%H:%M:%S.000Z', sync_date, 'unixepoch') FROM sync;
DROP TABLE sync;
ALTER TABLE sync_mig RENAME TO sync;
CREATE UNIQUE INDEX `IDX_sync_entity_name_id` ON `sync` (
`entity_name`,
`entity_id`
);
CREATE INDEX `IDX_sync_sync_date` ON `sync` (
`sync_date`
);
-- Options
UPDATE options SET opt_value = strftime('%Y-%m-%dT%H:%M:%S.000Z', opt_value, 'unixepoch') WHERE opt_name IN ('last_backup_date');
UPDATE options SET date_modified = strftime('%Y-%m-%dT%H:%M:%S.000Z', date_modified, 'unixepoch');
-- Event log
CREATE TABLE `event_log_mig` (
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
`note_id` TEXT,
`comment` TEXT,
`date_added` TEXT NOT NULL
);
INSERT INTO event_log_mig (id, note_id, comment, date_added)
SELECT id, note_id, comment, strftime('%Y-%m-%dT%H:%M:%S.000Z', date_added, 'unixepoch') FROM event_log;
DROP TABLE event_log;
ALTER TABLE event_log_mig RENAME TO event_log;
CREATE INDEX `IDX_event_log_date_added` ON `event_log` (
`date_added`
);
-- Notes
CREATE TABLE IF NOT EXISTS "notes_mig" (
`note_id` TEXT NOT NULL,
`note_title` TEXT,
`note_text` TEXT,
`is_protected` INT NOT NULL DEFAULT 0,
`is_deleted` INT NOT NULL DEFAULT 0,
`date_created` TEXT NOT NULL,
`date_modified` TEXT NOT NULL,
PRIMARY KEY(`note_id`)
);
INSERT INTO notes_mig (note_id, note_title, note_text, is_protected, is_deleted, date_created, date_modified)
SELECT note_id, note_title, note_text, is_protected, is_deleted,
strftime('%Y-%m-%dT%H:%M:%S.000Z', date_created, 'unixepoch'),
strftime('%Y-%m-%dT%H:%M:%S.000Z', date_modified, 'unixepoch')
FROM notes;
DROP TABLE notes;
ALTER TABLE notes_mig RENAME TO notes;
CREATE INDEX `IDX_notes_is_deleted` ON `notes` (
`is_deleted`
);
-- note history
CREATE TABLE IF NOT EXISTS "notes_history_mig" (
`note_history_id` TEXT NOT NULL PRIMARY KEY,
`note_id` TEXT NOT NULL,
`note_title` TEXT,
`note_text` TEXT,
`is_protected` INT NOT NULL DEFAULT 0,
`date_modified_from` TEXT NOT NULL,
`date_modified_to` TEXT NOT NULL
);
INSERT INTO notes_history_mig (note_history_id, note_id, note_title, note_text, is_protected, date_modified_from, date_modified_to)
SELECT note_history_id, note_id, note_title, note_text, is_protected,
strftime('%Y-%m-%dT%H:%M:%S.000Z', date_modified_from, 'unixepoch'),
strftime('%Y-%m-%dT%H:%M:%S.000Z', date_modified_to, 'unixepoch')
FROM notes_history;
DROP TABLE notes_history;
ALTER TABLE notes_history_mig RENAME TO notes_history;
CREATE INDEX `IDX_notes_history_note_id` ON `notes_history` (
`note_id`
);
CREATE INDEX `IDX_notes_history_note_date_modified_from` ON `notes_history` (
`date_modified_from`
);
CREATE INDEX `IDX_notes_history_note_date_modified_to` ON `notes_history` (
`date_modified_to`
);
-- Source IDs
DROP TABLE source_ids;
CREATE TABLE `source_ids` (
`source_id` TEXT NOT NULL,
`date_created` TEXT NOT NULL,
PRIMARY KEY(`source_id`)
);
-- Recent notes
DROP TABLE recent_notes;
CREATE TABLE `recent_notes` (
`note_tree_id` TEXT NOT NULL PRIMARY KEY,
`note_path` TEXT NOT NULL,
`date_accessed` TEXT NOT NULL,
is_deleted INT
);
-- Notes tree
CREATE TABLE IF NOT EXISTS "notes_tree_mig" (
`note_tree_id` TEXT NOT NULL,
`note_id` TEXT NOT NULL,
`note_pid` TEXT NOT NULL,
`note_pos` INTEGER NOT NULL,
`prefix` TEXT,
`is_expanded` BOOLEAN,
`is_deleted` INTEGER NOT NULL DEFAULT 0,
`date_modified` TEXT NOT NULL,
PRIMARY KEY(`note_tree_id`)
);
INSERT INTO notes_tree_mig (note_tree_id, note_id, note_pid, note_pos, prefix, is_expanded, is_deleted, date_modified)
SELECT note_tree_id, note_id, note_pid, note_pos, prefix, is_expanded, is_deleted,
strftime('%Y-%m-%dT%H:%M:%S.000Z', date_modified, 'unixepoch')
FROM notes_tree;
DROP TABLE notes_tree;
ALTER TABLE notes_tree_mig RENAME TO notes_tree;
CREATE INDEX `IDX_notes_tree_note_tree_id` ON `notes_tree` (
`note_tree_id`
);
CREATE INDEX `IDX_notes_tree_note_id_note_pid` ON `notes_tree` (
`note_id`,
`note_pid`
);
@@ -1,5 +0,0 @@
DROP index IDX_notes_tree_note_tree_id;
CREATE INDEX `IDX_notes_tree_note_id` ON `notes_tree` (
`note_id`
);
-8
View File
@@ -1,8 +0,0 @@
INSERT OR IGNORE INTO sync (entity_name, entity_id, sync_date, source_id)
SELECT 'notes', note_id, strftime('%Y-%m-%dT%H:%M:%S.000Z', 'now'), 'IMPORT' FROM notes;
INSERT OR IGNORE INTO sync (entity_name, entity_id, sync_date, source_id)
SELECT 'notes_tree', note_tree_id, strftime('%Y-%m-%dT%H:%M:%S.000Z', 'now'), 'IMPORT' FROM notes_tree;
INSERT OR IGNORE INTO sync (entity_name, entity_id, sync_date, source_id)
SELECT 'notes_history', note_history_id, strftime('%Y-%m-%dT%H:%M:%S.000Z', 'now'), 'IMPORT' FROM notes_history;
@@ -1,18 +0,0 @@
delete from notes where note_id in ('FfZylYxt','HqzAEsR2fFEZ','KgTQDh67+1Mh','TKMbAYl0AFyQ','W+bGM185c6gw',
'YXBdhv4dYKMy','aF4/6p1zTpIS','nsLnrrDktl/s','wkhFImoPuxky');
delete from notes_tree where note_tree_id in ('TTy5N2y2S6JP','TTkL3rWDexpp','TTEhtomZekUk','TTvP7zW01zwg','TTuYmMTZyKRt'
,'TToaClamxbBF','TTKvNCe5X2dj','TTE7jFx5A0zW','TTc79bscyrHX','TTcw8ZyDy2Cc','TTdFzAOWA9hZ','TTUyVLqyIvVg','TTy85NKSBDyO'
,'TTCyuireAWBv','TTDpVyuzbj1a','TTYznrYvAeIs','TTocvv15VMyu','TTjtxQkBT5vj','TToyyRzbBF0T','TTFt8NE9vSyZ','TTfzFZOuuDqv'
,'TT2e2oUYcxG6','TToXselUpPAy','TTEM68gGukg0','TTkZxxwtUOzW','TTAZNxBtgmmh','TTK1YErdBE3x','TTzjKiEf54o6','TTPWd5Ou1xET'
,'TTxQtjf22rTL','TTJAGaI4c89V','TTUQmsxSTdV3','TTGAOf5Lvr6b','TTECSDRN4ZPW','TTZZXLiGNWv4','TTxSLphulRct','TT8vld7x0qWF'
,'TTuuxXnv2Kpw','TT3RkLZ9AI6t','TTuEbI4Cj3qC','TT4CXXRyWRqm','TTQCuFgnMqxX','TTxnDEMz1bd4','TTMOnqhBesjs','TTHblx55gRHN'
,'TTMHW8HIGCjR','TTxzg3qqyLjw','TTluvD7yS8Rv','TT88qK2j3ggk','TTF7oHhS5ANF','TTOH275JiUSy','TToIt2dQ5tYH','TTBPgixQgbAq'
,'TTeN46707CJl','TTDb3GC2y6nN','TTlIXFwpICko','TTE6M9AxLh2U','TTjqhB8zXjD6','TT9NPeLg4FjK','TTj12jDX7TM3','TTPRjf7EdvDX'
,'TTBnu09pxOmn','TTZxyAkJQ9Cf','TTlvqeof2IBS','TT5R5xtIqRQf','TTiiD6hFjlVH','TTNVjGHSqNgo','TTrORSHCsAVQ','TT5Ei5fngqkv'
,'TTQ4hdpcIX3C','TTQgxq4CoiHU','TTJayLjI6BSE','TTYyraNy0CVT','TTnAJ3AK3wHz','TTJwKcgs1s0X','TT4FiatgbLEs','TTEdp5Zx1n5F');
update notes_tree set is_deleted = 1 where note_tree_id in ('TTiaU9xqnrca','TTQAy9c1vDId','TTHXWBJB2Y24','TTDV8DUK2IZA'
,'TTI5JHODZYV5','TTBEZ8TMSJV4','TT1MDWZXE8ZI','TTJV7ZOA8907','TTUGE6N99QSO','TTN0OS17T0KM');
delete from notes_history where note_history_id in ('KHAp5viTrrOfugzQ', 'xmhaS76piZn0QGzn', '25aL96ke8xmud9Bt');
@@ -1,3 +0,0 @@
DELETE FROM notes_tree WHERE note_tree_id IN ('cb94QGgnCwOD', 'c3FWKhcVYyaQ');
DELETE FROM notes_history WHERE note_history_id IN ('cdUD6ycs3l9h', 'OW4uh0HLtXaw');
@@ -1 +0,0 @@
UPDATE options SET opt_value = (SELECT MAX(id) FROM sync) WHERE opt_name = 'last_synced_push';
-13
View File
@@ -1,13 +0,0 @@
DELETE FROM recent_notes;
DELETE FROM sync;
INSERT OR IGNORE INTO sync (entity_name, entity_id, sync_date, source_id)
SELECT 'notes', note_id, strftime('%Y-%m-%dT%H:%M:%S.000Z', 'now'), 'IMPORT' FROM notes;
INSERT OR IGNORE INTO sync (entity_name, entity_id, sync_date, source_id)
SELECT 'notes_tree', note_tree_id, strftime('%Y-%m-%dT%H:%M:%S.000Z', 'now'), 'IMPORT' FROM notes_tree;
INSERT OR IGNORE INTO sync (entity_name, entity_id, sync_date, source_id)
SELECT 'notes_history', note_history_id, strftime('%Y-%m-%dT%H:%M:%S.000Z', 'now'), 'IMPORT' FROM notes_history;
UPDATE options SET opt_value = (SELECT MAX(id) FROM sync) WHERE opt_name IN ('last_synced_push', 'last_synced_pull');
-101
View File
@@ -1,101 +0,0 @@
INSERT INTO notes (note_id, note_title, note_text, date_created, date_modified)
VALUES ('root', 'root', 'root', strftime('%Y-%m-%dT%H:%M:%S.000Z', 'now'), strftime('%Y-%m-%dT%H:%M:%S.000Z', 'now'));
CREATE TABLE IF NOT EXISTS "notes_mig" (
`note_id` TEXT NOT NULL,
`note_title` TEXT,
`note_text` TEXT,
`is_protected` INT NOT NULL DEFAULT 0,
`is_deleted` INT NOT NULL DEFAULT 0,
`date_created` TEXT NOT NULL,
`date_modified` TEXT NOT NULL,
PRIMARY KEY(`note_id`)
);
INSERT INTO notes_mig (note_id, note_title, note_text, is_protected, is_deleted, date_created, date_modified)
SELECT note_id, note_title, note_text, is_protected, is_deleted, date_created, date_modified FROM notes;
DROP TABLE notes;
ALTER TABLE notes_mig RENAME TO notes;
CREATE INDEX `IDX_notes_is_deleted` ON `notes` (
`is_deleted`
);
CREATE TABLE IF NOT EXISTS "notes_tree_mig" (
`note_tree_id` TEXT NOT NULL,
`note_id` TEXT NOT NULL,
`parent_note_id` TEXT NOT NULL,
`note_position` INTEGER NOT NULL,
`prefix` TEXT,
`is_expanded` BOOLEAN,
`is_deleted` INTEGER NOT NULL DEFAULT 0,
`date_modified` TEXT NOT NULL,
FOREIGN KEY(note_id) REFERENCES notes(note_id),
FOREIGN KEY(parent_note_id) REFERENCES notes(note_id),
PRIMARY KEY(`note_tree_id`)
);
INSERT INTO notes_tree_mig (note_tree_id, note_id, parent_note_id, note_position, prefix, is_expanded, is_deleted, date_modified)
SELECT note_tree_id, note_id, note_pid, note_pos, prefix, is_expanded, is_deleted, date_modified FROM notes_tree;
DROP TABLE notes_tree;
ALTER TABLE notes_tree_mig RENAME TO notes_tree;
CREATE INDEX `IDX_notes_tree_note_tree_id` ON `notes_tree` (
`note_tree_id`
);
CREATE INDEX `IDX_notes_tree_note_id_parent_note_id` ON `notes_tree` (
`note_id`,
`parent_note_id`
);
CREATE INDEX `IDX_notes_tree_note_id` ON `notes_tree` (
`note_id`
);
CREATE TABLE IF NOT EXISTS "notes_history_mig" (
`note_history_id` TEXT NOT NULL PRIMARY KEY,
`note_id` TEXT NOT NULL,
`note_title` TEXT,
`note_text` TEXT,
`is_protected` INT NOT NULL DEFAULT 0,
`date_modified_from` TEXT NOT NULL,
`date_modified_to` TEXT NOT NULL,
FOREIGN KEY(note_id) REFERENCES notes(note_id)
);
INSERT INTO notes_history_mig (note_history_id, note_id, note_title, note_text, is_protected, date_modified_from, date_modified_to)
SELECT note_history_id, note_id, note_title, note_text, is_protected, date_modified_from, date_modified_to FROM notes_history;
DROP TABLE notes_history;
ALTER TABLE notes_history_mig RENAME TO notes_history;
CREATE INDEX `IDX_notes_history_note_id` ON `notes_history` (
`note_id`
);
CREATE INDEX `IDX_notes_history_note_date_modified_from` ON `notes_history` (
`date_modified_from`
);
CREATE INDEX `IDX_notes_history_note_date_modified_to` ON `notes_history` (
`date_modified_to`
);
DROP TABLE recent_notes;
CREATE TABLE `recent_notes` (
`note_tree_id` TEXT NOT NULL PRIMARY KEY,
`note_path` TEXT NOT NULL,
`date_accessed` TEXT NOT NULL,
is_deleted INT,
FOREIGN KEY(note_tree_id) REFERENCES notes_tree(note_tree_id)
);
DROP TABLE event_log;
CREATE TABLE `event_log` (
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
`note_id` TEXT,
`comment` TEXT,
`date_added` TEXT NOT NULL,
FOREIGN KEY(note_id) REFERENCES notes(note_id)
);
@@ -1,29 +0,0 @@
CREATE TABLE IF NOT EXISTS "notes_tree_mig" (
`note_tree_id` TEXT NOT NULL,
`note_id` TEXT NOT NULL,
`parent_note_id` TEXT NOT NULL,
`note_position` INTEGER NOT NULL,
`prefix` TEXT,
`is_expanded` BOOLEAN,
`is_deleted` INTEGER NOT NULL DEFAULT 0,
`date_modified` TEXT NOT NULL,
FOREIGN KEY(note_id) REFERENCES notes(note_id),
PRIMARY KEY(`note_tree_id`)
);
INSERT INTO notes_tree_mig (note_tree_id, note_id, parent_note_id, note_position, prefix, is_expanded, is_deleted, date_modified)
SELECT note_tree_id, note_id, parent_note_id, note_position, prefix, is_expanded, is_deleted, date_modified FROM notes_tree;
DROP TABLE notes_tree;
ALTER TABLE notes_tree_mig RENAME TO notes_tree;
CREATE INDEX `IDX_notes_tree_note_tree_id` ON `notes_tree` (
`note_tree_id`
);
CREATE INDEX `IDX_notes_tree_note_id_parent_note_id` ON `notes_tree` (
`note_id`,
`parent_note_id`
);
CREATE INDEX `IDX_notes_tree_note_id` ON `notes_tree` (
`note_id`
);
@@ -1,28 +0,0 @@
CREATE TABLE IF NOT EXISTS "notes_tree_mig" (
`note_tree_id` TEXT NOT NULL,
`note_id` TEXT NOT NULL,
`parent_note_id` TEXT NOT NULL,
`note_position` INTEGER NOT NULL,
`prefix` TEXT,
`is_expanded` BOOLEAN,
`is_deleted` INTEGER NOT NULL DEFAULT 0,
`date_modified` TEXT NOT NULL,
PRIMARY KEY(`note_tree_id`)
);
INSERT INTO notes_tree_mig (note_tree_id, note_id, parent_note_id, note_position, prefix, is_expanded, is_deleted, date_modified)
SELECT note_tree_id, note_id, parent_note_id, note_position, prefix, is_expanded, is_deleted, date_modified FROM notes_tree;
DROP TABLE notes_tree;
ALTER TABLE notes_tree_mig RENAME TO notes_tree;
CREATE INDEX `IDX_notes_tree_note_tree_id` ON `notes_tree` (
`note_tree_id`
);
CREATE INDEX `IDX_notes_tree_note_id_parent_note_id` ON `notes_tree` (
`note_id`,
`parent_note_id`
);
CREATE INDEX `IDX_notes_tree_note_id` ON `notes_tree` (
`note_id`
);
@@ -1,34 +0,0 @@
CREATE TABLE IF NOT EXISTS "notes_history_mig" (
`note_history_id` TEXT NOT NULL PRIMARY KEY,
`note_id` TEXT NOT NULL,
`note_title` TEXT,
`note_text` TEXT,
`is_protected` INT NOT NULL DEFAULT 0,
`date_modified_from` TEXT NOT NULL,
`date_modified_to` TEXT NOT NULL
);
INSERT INTO notes_history_mig (note_history_id, note_id, note_title, note_text, is_protected, date_modified_from, date_modified_to)
SELECT note_history_id, note_id, note_title, note_text, is_protected, date_modified_from, date_modified_to FROM notes_history;
DROP TABLE notes_history;
ALTER TABLE notes_history_mig RENAME TO notes_history;
CREATE INDEX `IDX_notes_history_note_id` ON `notes_history` (
`note_id`
);
CREATE INDEX `IDX_notes_history_note_date_modified_from` ON `notes_history` (
`date_modified_from`
);
CREATE INDEX `IDX_notes_history_note_date_modified_to` ON `notes_history` (
`date_modified_to`
);
DROP TABLE recent_notes;
CREATE TABLE `recent_notes` (
`note_tree_id` TEXT NOT NULL PRIMARY KEY,
`note_path` TEXT NOT NULL,
`date_accessed` TEXT NOT NULL,
is_deleted INT
);
@@ -1,6 +0,0 @@
DROP INDEX IDX_notes_tree_note_id_parent_note_id;
CREATE UNIQUE INDEX `IDX_notes_tree_note_id_parent_note_id` ON `notes_tree` (
`note_id`,
`parent_note_id`
);
@@ -1,9 +0,0 @@
DROP INDEX IDX_notes_tree_note_id_parent_note_id;
CREATE INDEX `IDX_notes_tree_note_id_parent_note_id` ON `notes_tree` (
`note_id`,
`parent_note_id`
);
-- dropping this as it's just duplicate of primary key
DROP INDEX IDX_notes_tree_note_tree_id;
-11
View File
@@ -1,11 +0,0 @@
CREATE TABLE images
(
image_id TEXT PRIMARY KEY NOT NULL,
format TEXT NOT NULL,
checksum TEXT NOT NULL,
name TEXT NOT NULL,
data BLOB,
is_deleted INT NOT NULL DEFAULT 0,
date_modified TEXT NOT NULL,
date_created TEXT NOT NULL
);
@@ -1,16 +0,0 @@
DROP TABLE images;
CREATE TABLE images
(
image_id TEXT PRIMARY KEY NOT NULL,
note_id TEXT NOT NULL,
format TEXT NOT NULL,
checksum TEXT NOT NULL,
name TEXT NOT NULL,
data BLOB,
is_deleted INT NOT NULL DEFAULT 0,
date_modified TEXT NOT NULL,
date_created TEXT NOT NULL
);
CREATE INDEX images_note_id_index ON images (note_id);
-27
View File
@@ -1,27 +0,0 @@
DROP TABLE images;
CREATE TABLE images
(
image_id TEXT PRIMARY KEY NOT NULL,
format TEXT NOT NULL,
checksum TEXT NOT NULL,
name TEXT NOT NULL,
data BLOB,
is_deleted INT NOT NULL DEFAULT 0,
date_modified TEXT NOT NULL,
date_created TEXT NOT NULL
);
CREATE TABLE notes_image
(
note_image_id TEXT PRIMARY KEY NOT NULL,
note_id TEXT NOT NULL,
image_id TEXT NOT NULL,
is_deleted INT NOT NULL DEFAULT 0,
date_modified TEXT NOT NULL,
date_created TEXT NOT NULL
);
CREATE INDEX notes_image_note_id_index ON notes_image (note_id);
CREATE INDEX notes_image_image_id_index ON notes_image (image_id);
CREATE INDEX notes_image_note_id_image_id_index ON notes_image (note_id, image_id);
@@ -1,12 +0,0 @@
CREATE TABLE attributes
(
attribute_id TEXT PRIMARY KEY NOT NULL,
note_id TEXT NOT NULL,
name TEXT NOT NULL,
value TEXT,
date_created TEXT NOT NULL,
date_modified TEXT NOT NULL
);
CREATE INDEX attributes_note_id_index ON attributes (note_id);
CREATE UNIQUE INDEX attributes_note_id_name_index ON attributes (note_id, name);
@@ -1,5 +0,0 @@
ALTER TABLE options ADD COLUMN is_synced INTEGER NOT NULL DEFAULT 0;
UPDATE options SET is_synced = 1 WHERE opt_name IN ('username', 'password_verification_hash', 'password_verification_salt',
'password_derived_key_salt', 'encrypted_data_key', 'encrypted_data_key_iv',
'protected_session_timeout', 'history_snapshot_time_interval');
-1
View File
@@ -1 +0,0 @@
ALTER TABLE notes ADD COLUMN type TEXT NOT NULL DEFAULT 'text';
-1
View File
@@ -1 +0,0 @@
ALTER TABLE notes ADD COLUMN mime TEXT NOT NULL DEFAULT 'text/html';
@@ -1,207 +0,0 @@
CREATE TABLE "options_mig" (
`name` TEXT NOT NULL PRIMARY KEY,
`value` TEXT,
`dateModified` INT,
isSynced INTEGER NOT NULL DEFAULT 0);
INSERT INTO options_mig (name, value, dateModified, isSynced)
SELECT opt_name, opt_value, date_modified, is_synced FROM options;
DROP TABLE options;
ALTER TABLE options_mig RENAME TO options;
CREATE TABLE "sync_mig" (
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
`entityName` TEXT NOT NULL,
`entityId` TEXT NOT NULL,
`sourceId` TEXT NOT NULL,
`syncDate` TEXT NOT NULL);
INSERT INTO sync_mig (id, entityName, entityId, sourceId, syncDate)
SELECT id, entity_name, entity_id, source_id, sync_date FROM sync;
DROP TABLE sync;
ALTER TABLE sync_mig RENAME TO sync;
CREATE UNIQUE INDEX `IDX_sync_entityName_entityId` ON `sync` (
`entityName`,
`entityId`
);
CREATE INDEX `IDX_sync_syncDate` ON `sync` (
`syncDate`
);
CREATE TABLE `source_ids_mig` (
`sourceId` TEXT NOT NULL,
`dateCreated` TEXT NOT NULL,
PRIMARY KEY(`sourceId`)
);
INSERT INTO source_ids_mig (sourceId, dateCreated)
SELECT source_id, date_created FROM source_ids;
DROP TABLE source_ids;
ALTER TABLE source_ids_mig RENAME TO source_ids;
CREATE TABLE "notes_mig" (
`noteId` TEXT NOT NULL,
`title` TEXT,
`content` TEXT,
`isProtected` INT NOT NULL DEFAULT 0,
`isDeleted` INT NOT NULL DEFAULT 0,
`dateCreated` TEXT NOT NULL,
`dateModified` TEXT NOT NULL,
type TEXT NOT NULL DEFAULT 'text',
mime TEXT NOT NULL DEFAULT 'text/html',
PRIMARY KEY(`noteId`)
);
INSERT INTO notes_mig (noteId, title, content, isProtected, isDeleted, dateCreated, dateModified, type, mime)
SELECT note_id, note_title, note_text, is_protected, is_deleted, date_created, date_modified, type, mime FROM notes;
DROP TABLE notes;
ALTER TABLE notes_mig RENAME TO notes;
CREATE INDEX `IDX_notes_isDeleted` ON `notes` (
`isDeleted`
);
CREATE TABLE `event_log_mig` (
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
`noteId` TEXT,
`comment` TEXT,
`dateAdded` TEXT NOT NULL,
FOREIGN KEY(noteId) REFERENCES notes(noteId)
);
INSERT INTO event_log_mig (id, noteId, comment, dateAdded)
SELECT id, note_id, comment, date_added FROM event_log;
DROP TABLE event_log;
ALTER TABLE event_log_mig RENAME TO event_log;
CREATE TABLE "note_tree" (
`noteTreeId` TEXT NOT NULL,
`noteId` TEXT NOT NULL,
`parentNoteId` TEXT NOT NULL,
`notePosition` INTEGER NOT NULL,
`prefix` TEXT,
`isExpanded` BOOLEAN,
`isDeleted` INTEGER NOT NULL DEFAULT 0,
`dateModified` TEXT NOT NULL,
PRIMARY KEY(`noteTreeId`)
);
INSERT INTO note_tree (noteTreeId, noteId, parentNoteId, notePosition, prefix, isExpanded, isDeleted, dateModified)
SELECT note_tree_id, note_id, parent_note_id, note_position, prefix, is_expanded, is_deleted, date_modified FROM notes_tree;
DROP TABLE notes_tree;
CREATE INDEX `IDX_note_tree_noteId` ON `note_tree` (
`noteId`
);
CREATE INDEX `IDX_note_tree_noteId_parentNoteId` ON `note_tree` (
`noteId`,
`parentNoteId`
);
CREATE TABLE "note_revisions" (
`noteRevisionId` TEXT NOT NULL PRIMARY KEY,
`noteId` TEXT NOT NULL,
`title` TEXT,
`content` TEXT,
`isProtected` INT NOT NULL DEFAULT 0,
`dateModifiedFrom` TEXT NOT NULL,
`dateModifiedTo` TEXT NOT NULL
);
INSERT INTO note_revisions (noteRevisionId, noteId, title, content, isProtected, dateModifiedFrom, dateModifiedTo)
SELECT note_history_id, note_id, note_title, note_text, is_protected, date_modified_from, date_modified_to FROM notes_history;
DROP TABLE notes_history;
CREATE INDEX `IDX_note_revisions_noteId` ON `note_revisions` (
`noteId`
);
CREATE INDEX `IDX_note_revisions_dateModifiedFrom` ON `note_revisions` (
`dateModifiedFrom`
);
CREATE INDEX `IDX_note_revisions_dateModifiedTo` ON `note_revisions` (
`dateModifiedTo`
);
CREATE TABLE `recent_notes_mig` (
`noteTreeId` TEXT NOT NULL PRIMARY KEY,
`notePath` TEXT NOT NULL,
`dateAccessed` TEXT NOT NULL,
isDeleted INT
);
INSERT INTO recent_notes_mig (noteTreeId, notePath, dateAccessed, isDeleted)
SELECT note_tree_id, note_path, date_accessed, is_deleted FROM recent_notes;
DROP TABLE recent_notes;
ALTER TABLE recent_notes_mig RENAME TO recent_notes;
CREATE TABLE images_mig
(
imageId TEXT PRIMARY KEY NOT NULL,
format TEXT NOT NULL,
checksum TEXT NOT NULL,
name TEXT NOT NULL,
data BLOB,
isDeleted INT NOT NULL DEFAULT 0,
dateModified TEXT NOT NULL,
dateCreated TEXT NOT NULL
);
INSERT INTO images_mig (imageId, format, checksum, name, data, isDeleted, dateModified, dateCreated)
SELECT image_id, format, checksum, name, data, is_deleted, date_modified, date_created FROM images;
DROP TABLE images;
ALTER TABLE images_mig RENAME TO images;
CREATE TABLE note_images
(
noteImageId TEXT PRIMARY KEY NOT NULL,
noteId TEXT NOT NULL,
imageId TEXT NOT NULL,
isDeleted INT NOT NULL DEFAULT 0,
dateModified TEXT NOT NULL,
dateCreated TEXT NOT NULL
);
INSERT INTO note_images (noteImageId, noteId, imageId, isDeleted, dateModified, dateCreated)
SELECT note_image_id, note_id, image_id, is_deleted, date_modified, date_created FROM notes_image;
DROP TABLE notes_image;
CREATE INDEX IDX_note_images_noteId ON note_images (noteId);
CREATE INDEX IDX_note_images_imageId ON note_images (imageId);
CREATE INDEX IDX_note_images_noteId_imageId ON note_images (noteId, imageId);
CREATE TABLE attributes_mig
(
attributeId TEXT PRIMARY KEY NOT NULL,
noteId TEXT NOT NULL,
name TEXT NOT NULL,
value TEXT,
dateCreated TEXT NOT NULL,
dateModified TEXT NOT NULL
);
INSERT INTO attributes_mig (attributeId, noteId, name, value, dateCreated, dateModified)
SELECT attribute_id, note_id, name, value, date_created, date_modified FROM attributes;
DROP TABLE attributes;
ALTER TABLE attributes_mig RENAME TO attributes;
CREATE INDEX IDX_attributes_noteId ON attributes (noteId);
CREATE UNIQUE INDEX IDX_attributes_noteId_name ON attributes (noteId, name);
@@ -1,4 +0,0 @@
UPDATE sync SET entityName = 'note_images' WHERE entityName = 'notes_image';
UPDATE sync SET entityName = 'note_tree' WHERE entityName = 'notes_tree';
UPDATE sync SET entityName = 'note_revisions' WHERE entityName = 'notes_history';
UPDATE sync SET entityName = 'note_reordering' WHERE entityName = 'notes_reordering';
@@ -1 +0,0 @@
DROP INDEX IDX_attributes_noteId_name;
@@ -1 +0,0 @@
ALTER TABLE attributes ADD COLUMN isDeleted INT NOT NULL DEFAULT 0;
@@ -1 +0,0 @@
ALTER TABLE attributes ADD COLUMN position INT NOT NULL DEFAULT 0;
-7
View File
@@ -1,7 +0,0 @@
CREATE TABLE IF NOT EXISTS "api_tokens"
(
apiTokenId TEXT PRIMARY KEY NOT NULL,
token TEXT NOT NULL,
dateCreated TEXT NOT NULL,
isDeleted INT NOT NULL DEFAULT 0
);
@@ -1 +0,0 @@
CREATE INDEX IDX_attributes_name_value ON attributes (name, value);
@@ -1,23 +0,0 @@
UPDATE attributes SET value = '' WHERE value IS NULL;
CREATE TABLE IF NOT EXISTS "attributes_mig"
(
attributeId TEXT PRIMARY KEY NOT NULL,
noteId TEXT NOT NULL,
name TEXT NOT NULL,
value TEXT NOT NULL DEFAULT '',
position INT NOT NULL DEFAULT 0,
dateCreated TEXT NOT NULL,
dateModified TEXT NOT NULL,
isDeleted INT NOT NULL
);
INSERT INTO attributes_mig (attributeId, noteId, name, value, position, dateCreated, dateModified, isDeleted)
SELECT attributeId, noteId, name, value, position, dateCreated, dateModified, isDeleted FROM attributes;
DROP TABLE attributes;
ALTER TABLE attributes_mig RENAME TO attributes;
CREATE INDEX IDX_attributes_noteId ON attributes (noteId);
CREATE INDEX IDX_attributes_name_value ON attributes (name, value);
-1
View File
@@ -1 +0,0 @@
UPDATE notes SET mime = 'application/javascript;env=frontend' WHERE type = 'code' AND mime = 'application/javascript';

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