Compare commits

..

759 Commits

Author SHA1 Message Date
Elian Doran 3e710fbdf5 fix(build): linux server failing due to missing legacy deps
/ Check Docker build (Dockerfile) (push) Failing after 39s
/ Check Docker build (Dockerfile.alpine) (push) Failing after 31s
/ Build Docker images (Dockerfile, linux/arm/v7) (push) Has been skipped
/ Build Docker images (Dockerfile, linux/arm64) (push) Has been skipped
/ Build Docker images (Dockerfile.alpine, linux/amd64) (push) Has been skipped
/ Merge manifest lists (push) Has been skipped
Release / Make Electron (arm64, map[extension:deb image:ubuntu-latest name:linux]) (push) Failing after 31s
Release / Make Electron (x64, map[extension:deb image:ubuntu-latest name:linux]) (push) Failing after 34s
Release / Build Linux Server x86_64 (push) Failing after 37s
Release / Make Electron (arm64, map[extension:dmg image:macos-latest name:macos]) (push) Has been cancelled
Release / Make Electron (arm64, map[extension:exe image:windows-latest name:windows]) (push) Has been cancelled
Release / Make Electron (x64, map[extension:dmg image:macos-latest name:macos]) (push) Has been cancelled
Release / Make Electron (x64, map[extension:exe image:windows-latest name:windows]) (push) Has been cancelled
2024-12-14 08:56:38 +02:00
Elian Doran adf676253d chore(build): bump to 0.91.1-beta 2024-12-14 08:53:12 +02:00
Elian Doran 2bfdc755f1 style(next): fix redundant dropdown arrow in calendar 2024-12-14 04:01:12 +02:00
Elian Doran 74f833f7b2 fix(calendar): don't trigger dropdown refresh 2024-12-14 03:58:11 +02:00
Elian Doran 95084c9a80 style(next): improve calendar month selector style 2024-12-14 03:54:33 +02:00
Elian Doran c8ae0891bc feat(calendar): use bootstrap dropdown instead of select 2024-12-14 03:50:42 +02:00
Elian Doran 639936dffe style(next): fix blur in nested submenus 2024-12-14 03:22:16 +02:00
Elian Doran b872ad0c25 feat(theme): add description for #appThemeBase 2024-12-14 02:35:49 +02:00
Elian Doran b2b41edd61 feat(theme): allow using next as base theme 2024-12-14 02:30:23 +02:00
Elian Doran 43567525e3 feat(jump-to-note): ignore ~internalLink (closes #713) 2024-12-14 02:07:00 +02:00
Elian Doran 9494362fb0 chore(i18n): reach 100% in Romanian 2024-12-14 01:54:50 +02:00
Elian Doran dd2ae28422 chore(i18n): translate note autocomplete in Romanian 2024-12-14 01:51:29 +02:00
Elian Doran c95e478595 feat(i18n): add translation for note_autocomplete 2024-12-14 01:48:56 +02:00
Elian Doran 0f1a98795f fix(client): "Go to note" button in note_autocomplete not working (closes #732) 2024-12-14 01:40:20 +02:00
Elian Doran ec16052e7b chore(deps): update mermaid-elk to 0.1.7 2024-12-14 01:28:06 +02:00
Elian Doran f30c35f0f2 feat(classic-toolbar): allow user to toggle multiline toolbar 2024-12-14 01:24:29 +02:00
Elian Doran 65deec5861 feat(text-note): add Terraform HCL support for code blocks 2024-12-14 01:07:53 +02:00
Elian Doran b82634b39b chore(deps): add terraform for highlight.js 2024-12-14 01:06:35 +02:00
Elian Doran 27aa50d8af chore(deps): update @types/archiver to 6.0.3 2024-12-14 00:24:09 +02:00
Elian Doran ef361aec41 chore(deps): update eslint to 9.17.0 2024-12-14 00:23:38 +02:00
Elian Doran 3d18c0a059 chore(deps): mark csurf as deprecated 2024-12-14 00:23:15 +02:00
Elian Doran ad221a064d chore(deps): update nodemon to 3.1.9 2024-12-14 00:21:43 +02:00
Elian Doran 6e91c01837 chore(deps): update force-graph to 1.47.1 2024-12-14 00:20:56 +02:00
Elian Doran 1e2aa3c52d style(next): improve settings layout slightly 2024-12-13 23:52:35 +02:00
Elian Doran 6703fa7a0c style(next): use lighter weight for titles 2024-12-13 23:46:54 +02:00
Elian Doran 74c10dff05 fix(native-buttons): fix background difference on modals 2024-12-13 23:30:31 +02:00
Elian Doran 2babc680a8 fix(client): alignment of sync tooltip on horizontal layout 2024-12-13 22:43:58 +02:00
Elian Doran f96a3ce32e fix(server): HTTP streaming notes with unicode names (closes #757) 2024-12-13 22:05:05 +02:00
Elian Doran 0ca2d5e0b0 style(next): fix launcher pane context menu 2024-12-13 11:03:01 +02:00
Elian Doran 1b29c81ceb Merge pull request #767 from pano9000/develop
chore(docker-compose): add remark about UFW issues
2024-12-13 08:44:04 +02:00
Elian Doran 68fda768e7 Merge pull request #769 from TriliumNext/style/next/recent-changes-section
Style Next: Improve the styling of the "Recent Changes" list
2024-12-13 08:43:27 +02:00
Adorian Doran a8a82e7425 style(next): recent changes list: optimize 2024-12-13 03:24:21 +02:00
Adorian Doran 008e3a4dd8 client: recent changes list: make possible to use a distinct style for note titles 2024-12-13 03:21:32 +02:00
Adorian Doran 7be83f78c2 style(next): recent changes list: remove the dash between time and note title 2024-12-13 03:19:27 +02:00
Adorian Doran 04e96eefe4 style(next): recent changes list: use a strikethrough text for deleted notes 2024-12-13 03:16:36 +02:00
Adorian Doran 0b266393b5 client: recent changes list: make possible to use a distinct style for the title of deleted notes 2024-12-13 03:11:23 +02:00
Adorian Doran b41dab090f style(next): recent changes list: disable the item hover effect on deleted notes 2024-12-13 03:03:50 +02:00
Adorian Doran 5d4dd8bc0a client: recent changes list: make possible to use a distinct style for items referencing deleted notes 2024-12-13 02:59:04 +02:00
Adorian Doran 5caf4c2461 client: recent changes list: properly handle clicks on items referencing deleted notes 2024-12-13 02:48:33 +02:00
Adorian Doran 0417a6e144 style(next): recent changes list: rename CSS variables 2024-12-13 02:41:52 +02:00
Adorian Doran 58c0306224 style(next): recent changes list: tweak items 2024-12-13 02:36:29 +02:00
Adorian Doran fff0c5cea0 style(next): recent changes list: make the "undelete" links look again like a link 2024-12-13 02:31:52 +02:00
Adorian Doran cd30d7dd0f style(next): recent changes list: remove the item border 2024-12-13 02:17:57 +02:00
Adorian Doran 6e1cfdbb89 client: recent changes list: make the whole item clickable, not just the note title 2024-12-13 02:11:51 +02:00
Adorian Doran aee8749bac client: recent changes list: remove the dash between the time and the note title from markup 2024-12-13 01:53:04 +02:00
Adorian Doran 556baf2782 style(next): recent changes list: tweak timeline connector on item hover 2024-12-13 01:45:31 +02:00
Adorian Doran 1410a6cf7a style(next): recent changes list: add a hover effect for items 2024-12-13 01:19:12 +02:00
Adorian Doran 6f75932015 style(next): recent changes list: improve the layout of the list items 2024-12-13 00:10:49 +02:00
Panagiotis Papadopoulos 3cda3987db chore(docker-compose): add remark about UFW issues
closes #766
2024-12-12 21:18:18 +01:00
Elian Doran 346ae7d815 Merge pull request #763 from TriliumNext/style/next/tree-settings-panel
Style Next: Restyle the tree settings popup
2024-12-12 08:45:12 +02:00
Elian Doran 62e797a3aa Merge pull request #760 from TriliumNext/style/next/restyle-tree-actions
Style Next: Restyle the tree action buttons
2024-12-12 08:43:42 +02:00
Elian Doran 8e87a9eb24 Merge pull request #762 from TriliumNext/renovate/i18next-24.x
fix(deps): update dependency i18next to v24.1.0
2024-12-12 08:42:29 +02:00
Elian Doran 6735569f7d Merge pull request #761 from TriliumNext/renovate/node-22.x
chore(deps): update dependency @types/node to v22.10.2
2024-12-12 08:32:03 +02:00
Adorian Doran 87dcdcacc3 style(next): tree actions toolbar: gracefully handle when the floating button overlaps with the tree item action buttons 2024-12-12 02:52:18 +02:00
Adorian Doran 0670c44c45 Merge branch 'develop' into style/next/restyle-tree-actions 2024-12-12 02:16:08 +02:00
Adorian Doran 350219361b style(next): correct section name 2024-12-12 02:09:48 +02:00
Adorian Doran 92f27e06de style(next): restyle the tree settings popup 2024-12-12 02:06:26 +02:00
renovate[bot] 41fa67f7a1 fix(deps): update dependency i18next to v24.1.0 2024-12-12 00:05:34 +00:00
renovate[bot] dcda2bc5d6 chore(deps): update dependency @types/node to v22.10.2 2024-12-12 00:05:25 +00:00
Adorian Doran eb30cb7303 client: add a heading to the tree settings panel 2024-12-12 01:46:43 +02:00
Adorian Doran e4b1f56a5e style(next): tree actions toolbar: fix icon alignment in certain conditions 2024-12-12 01:29:14 +02:00
Adorian Doran a7e000035d style(next): tree actions toolbar: fix the user being unable to activate the action button for the last item 2024-12-12 01:07:18 +02:00
Adorian Doran 9d7caaae96 style(next): tree actions toolbar: tweak transitions 2024-12-12 00:59:48 +02:00
Adorian Doran 336f978add style(next): tree actions toolbar: relocate variable declarations 2024-12-12 00:50:28 +02:00
Adorian Doran 8b9d4ed106 style(next): tree actions toolbar: improve styling 2024-12-12 00:49:05 +02:00
Adorian Doran 9ce97decf2 style(next): overhaul the tree actions toolbar 2024-12-12 00:31:19 +02:00
Elian Doran e41b4e18e1 Merge pull request #759 from TriliumNext/feat/client/format-note-paths
Format note paths
2024-12-11 23:54:30 +02:00
Adorian Doran 5126cd4a6c style(next): tweak the paths displayed in the search section 2024-12-11 22:30:04 +02:00
Adorian Doran 0a02c2538c style(next): use a better layout for the paths displayed in the "Recent Changes" section 2024-12-11 22:26:19 +02:00
Elian Doran 6f2b91f76e style(next): explore showing tree actions on hover only 2024-12-11 21:40:17 +02:00
Elian Doran 92b639d7dc style(next): add back tree options 2024-12-11 21:36:11 +02:00
Elian Doran 1833894004 chore(backend-docs): update after new library added 2024-12-11 19:34:34 +02:00
Elian Doran 84d1738085 Merge remote-tracking branch 'origin/develop' into kleutzinger-forks/develop 2024-12-11 19:29:34 +02:00
Elian Doran 6117b9b372 Merge pull request #749 from TriliumNext/renovate/compression-1.x
fix(deps): update dependency compression to v1.7.5
2024-12-11 19:24:10 +02:00
Elian Doran 6cfe0956ae Merge pull request #750 from TriliumNext/renovate/jsdom-25.x
fix(deps): update dependency jsdom to v25.0.1
2024-12-11 19:22:30 +02:00
Elian Doran d44f4acc45 Merge pull request #751 from TriliumNext/renovate/mime-types-2.x-lockfile
fix(deps): update dependency mime-types to v2.1.35
2024-12-11 19:20:43 +02:00
Elian Doran c2e87f08be Merge pull request #754 from TriliumNext/renovate/better-sqlite3-11.x-lockfile
fix(deps): update dependency better-sqlite3 to v11.7.0
2024-12-11 19:20:13 +02:00
Elian Doran 53b3ef163b Merge pull request #748 from TriliumNext/renovate/jsdoc-4.x
chore(deps): update dependency jsdoc to v4.0.4
2024-12-11 18:49:18 +02:00
Elian Doran 02ce82eaf5 chore(backend-docs): solve a few warnings 2024-12-11 18:47:19 +02:00
Elian Doran 3fe4608ff6 chore(backend-docs): process with typedoc 2024-12-11 18:44:45 +02:00
Elian Doran 6bbff3efd8 chore(frontend-docs): fix warnings & update 2024-12-11 18:31:29 +02:00
Elian Doran 1fa2758464 Merge remote-tracking branch 'origin/develop' into renovate/jsdoc-4.x 2024-12-11 18:25:12 +02:00
Elian Doran 791a7c7fcd Merge pull request #756 from TriliumNext/renovate/eslint-monorepo
fix(deps): update dependency eslint to v9.16.0
2024-12-11 18:23:40 +02:00
Elian Doran e85da342d1 Merge pull request #752 from TriliumNext/renovate/mind-elixir-4.x
fix(deps): update dependency mind-elixir to v4.3.3
2024-12-11 18:22:10 +02:00
renovate[bot] f84b923f8b fix(deps): update dependency better-sqlite3 to v11.7.0 2024-12-11 16:19:40 +00:00
Elian Doran 62c386ee9e Merge pull request #755 from TriliumNext/renovate/electron-debug-4.x
fix(deps): update dependency electron-debug to v4.1.0
2024-12-11 18:18:29 +02:00
Elian Doran c0895d5b35 Merge pull request #747 from TriliumNext/renovate/ws-8.x
chore(deps): update dependency @types/ws to v8.5.13
2024-12-11 17:42:52 +02:00
Elian Doran 9c04128145 Merge pull request #753 from TriliumNext/renovate/playwright-monorepo
chore(deps): update dependency @playwright/test to v1.49.1
2024-12-11 17:41:47 +02:00
renovate[bot] 7dc9befc7a chore(deps): update dependency @types/ws to v8.5.13 2024-12-11 15:41:29 +00:00
Elian Doran 48406bd806 Merge pull request #746 from TriliumNext/renovate/cls-hooked-4.x
chore(deps): update dependency @types/cls-hooked to v4.3.9
2024-12-11 17:39:57 +02:00
renovate[bot] e23fe010b5 chore(deps): update dependency @types/cls-hooked to v4.3.9 2024-12-11 11:48:28 +00:00
Elian Doran 2d1ac0f535 Merge pull request #745 from TriliumNext/renovate/better-sqlite3-7.x
chore(deps): update dependency @types/better-sqlite3 to v7.6.12
2024-12-11 13:47:38 +02:00
Elian Doran 758768e4d5 Merge remote-tracking branch 'origin/develop' into renovate/better-sqlite3-7.x 2024-12-11 13:46:44 +02:00
Elian Doran e3c29d43b5 Merge pull request #744 from TriliumNext/renovate/better-sqlite3-7.x-lockfile
chore(deps): update dependency @types/better-sqlite3 to v7.6.12
2024-12-11 13:45:21 +02:00
Elian Doran 55e3eae322 chore(build): switch nix to electron 33 2024-12-11 08:16:48 +02:00
Elian Doran 181ee3ef6d fix(server): not building due to API change 2024-12-11 08:16:37 +02:00
Kevin Leutzinger e83c07a7b0 add @types/cheerio 2024-12-11 00:17:28 -05:00
Kevin Leutzinger e2e2c9dbaf Expose cheerio in backend script api 2024-12-11 00:03:02 -05:00
renovate[bot] b99b51fce9 fix(deps): update dependency eslint to v9.16.0 2024-12-11 00:29:53 +00:00
renovate[bot] c97a4f1bc5 fix(deps): update dependency electron-debug to v4.1.0 2024-12-11 00:29:42 +00:00
renovate[bot] 2c6bc4b47b chore(deps): update dependency @playwright/test to v1.49.1 2024-12-11 00:29:25 +00:00
renovate[bot] 9becc021ae fix(deps): update dependency mind-elixir to v4.3.3 2024-12-11 00:29:13 +00:00
renovate[bot] 58aaa4daf4 fix(deps): update dependency mime-types to v2.1.35 2024-12-11 00:29:03 +00:00
renovate[bot] a2c61ef033 fix(deps): update dependency jsdom to v25.0.1 2024-12-11 00:28:56 +00:00
renovate[bot] aed6866a15 fix(deps): update dependency compression to v1.7.5 2024-12-11 00:28:48 +00:00
renovate[bot] f108775a6a chore(deps): update dependency jsdoc to v4.0.4 2024-12-11 00:28:40 +00:00
renovate[bot] 156dded1cc chore(deps): update dependency @types/better-sqlite3 to v7.6.12 2024-12-11 00:28:15 +00:00
renovate[bot] d26ef26971 chore(deps): update dependency @types/better-sqlite3 to v7.6.12 2024-12-11 00:28:01 +00:00
Elian Doran 289e33f479 Merge pull request #645 from TriliumNext/renovate/image-type-5.x
fix(deps): update dependency image-type to v5
2024-12-10 23:21:57 +02:00
Elian Doran e0e98e229e chore(deps): migrate to image-type 5.2.0 2024-12-10 23:21:32 +02:00
renovate[bot] d6b2fc8828 fix(deps): update dependency image-type to v5 2024-12-10 21:18:14 +00:00
Elian Doran abd5238acc Merge pull request #646 from TriliumNext/renovate/is-svg-5.x
fix(deps): update dependency is-svg to v5
2024-12-10 23:16:33 +02:00
Elian Doran c9874e6b2f chore(deps): adapt to is-svg v5 2024-12-10 23:16:10 +02:00
Adorian Doran 5523e30583 style(next): tweak the note paths from the "Recent Changes" section 2024-12-10 23:08:10 +02:00
renovate[bot] 99cb751cab fix(deps): update dependency is-svg to v5 2024-12-10 21:07:27 +00:00
Elian Doran d204aca228 Merge pull request #647 from TriliumNext/renovate/jimp-1.x
fix(deps): update dependency jimp to v1
2024-12-10 23:06:29 +02:00
Elian Doran f648f11153 chore(deps): adapt to jimp v1 2024-12-10 23:05:59 +02:00
Adorian Doran 431522f5b1 style(next): apply style to all note paths, change the delimiter symbol 2024-12-10 23:02:15 +02:00
Elian Doran ae48125dbb Merge pull request #641 from TriliumNext/renovate/chokidar-4.x
fix(deps): update dependency chokidar to v4
2024-12-10 22:49:40 +02:00
Elian Doran c6e8a2a459 Merge pull request #635 from TriliumNext/renovate/express-5.x
chore(deps): update dependency @types/express to v5
2024-12-10 22:43:47 +02:00
Elian Doran 5190b28d3c chore(types): adapt to new express type definitions 2024-12-10 22:35:23 +02:00
Adorian Doran 2b36bde9a9 client: format the note paths displayed in the note links 2024-12-10 22:24:53 +02:00
Adorian Doran 0588c91d1d client: refactor 2024-12-10 21:49:42 +02:00
Adorian Doran f2067d0b12 client: refactor 2024-12-10 21:43:23 +02:00
Elian Doran 4e0b9d431d Merge pull request #636 from TriliumNext/renovate/electron-33.x
chore(deps): update dependency electron to v33
2024-12-10 21:40:37 +02:00
Elian Doran 9e05206854 chore(deps): update better-sqlite to 11.7.0 2024-12-10 21:39:19 +02:00
Elian Doran 567664a2a3 Merge pull request #639 from TriliumNext/renovate/node-22.x
chore(deps): update node.js to v22
2024-12-10 21:33:34 +02:00
Elian Doran 4325c90f09 Merge pull request #740 from Nertonm/patch-1
Added Brazillian Portuguese translation on server.json
2024-12-10 21:24:37 +02:00
Elian Doran 432c5c06a2 Merge pull request #736 from TriliumNext/renovate/katex-0.x
fix(deps): update dependency katex to v0.16.15
2024-12-10 21:22:51 +02:00
Elian Doran 555d0e665f Merge pull request #743 from TriliumNext/style-next/reorganize-css
Style Next: Reorganize the CSS
2024-12-10 21:19:08 +02:00
Elian Doran 73c5b2a465 Merge pull request #741 from TriliumNext/feat/formatted-dates
Format dates and times
2024-12-10 21:14:42 +02:00
Adorian Doran cc1962d9c0 style(next): split the main theme CSS code into multiple files 2024-12-10 20:15:48 +02:00
Adorian Doran 74ace248d5 client: date formatter utility: improve 2024-12-10 18:48:48 +02:00
Adorian Doran 89334691b7 client: fix a typo 2024-12-10 18:43:51 +02:00
Adorian Doran d7004bc3b5 client: allow date & time to be passed as a string to the date & time formatter, refactor 2024-12-10 18:40:24 +02:00
Adorian Doran 895d50694b client: format dates and times in the "About" section 2024-12-10 18:24:41 +02:00
Adorian Doran 19e40bf46b client: format dates and times in the "Note Info" widget 2024-12-10 18:20:12 +02:00
Adorian Doran 83e1ce2bc4 client: format dates and times in the "Recent Changes" section 2024-12-10 18:11:55 +02:00
Adorian Doran 1268916ad7 client: date formatter utility: add the ability to format exclusively dates or times 2024-12-10 18:09:55 +02:00
Adorian Doran 88376e1158 client: format dates for the ETAPI tokens table 2024-12-10 17:16:20 +02:00
Adorian Doran 56b6dae447 client: refactor 2024-12-10 17:13:58 +02:00
Adorian Doran b097a8fc37 client: create a date formatter utility 2024-12-10 17:13:46 +02:00
Nerton b57e87c519 Create server.json 2024-12-10 11:51:15 -03:00
renovate[bot] 767b571faf fix(deps): update dependency katex to v0.16.15 2024-12-10 01:08:57 +00:00
Elian Doran 018557bb57 fix(electron): mind map not working due to missing deps 2024-12-09 23:32:39 +02:00
Elian Doran 35eee82da5 Merge pull request #727 from TriliumNext/renovate/katex-0.x
fix(deps): update dependency katex to v0.16.14
2024-12-09 23:19:36 +02:00
Elian Doran efae109e35 feat(settings): merge zoom factor with desktop app settings 2024-12-09 22:51:27 +02:00
Elian Doran f1241b2ebf chore(i18n): add translation for electron integration settings 2024-12-09 22:46:48 +02:00
Elian Doran 0b27a72c31 chore(settings): change description for desktop settings 2024-12-09 22:45:01 +02:00
Elian Doran 698ab86224 feat(settings): turn native title bar into a checkbox 2024-12-09 22:40:25 +02:00
Elian Doran 1e985f7858 feat(settings): add button to restart application 2024-12-09 22:36:46 +02:00
Elian Doran 3605a77b25 fix(mica): applying mica when disabled 2024-12-09 22:29:04 +02:00
Elian Doran 37b10e2144 style(settings): merge description into checkbox 2024-12-09 22:26:39 +02:00
Elian Doran a6f29bfbf3 feat(settings): refresh window when toggling background effects 2024-12-09 22:16:11 +02:00
Elian Doran 3bcd79c625 chore: fix indentation 2024-12-09 22:11:23 +02:00
Elian Doran 3a63f44c3a fix(settings): default option for checkbox 2024-12-09 22:08:31 +02:00
Elian Doran d4f3de3ad7 refactor(settings): rename native titlebar to electron integration 2024-12-09 22:07:51 +02:00
Elian Doran b81b93a590 feat(settings): add toggle for mica 2024-12-09 22:06:38 +02:00
Elian Doran c39e8be29a feat(server): set up option to toggle background effects 2024-12-09 21:57:54 +02:00
Elian Doran f4efefe480 feat(mica): add back toggleable 2024-12-09 21:54:11 +02:00
Elian Doran 648d81169c style(next): set ellipsis for tabs 2024-12-09 21:49:14 +02:00
Elian Doran 86ec0bb60b fix(native-buttons): margin-right on vertical layout 2024-12-09 21:48:08 +02:00
Elian Doran bae77b6b18 chore(build): remove hard-coded sync server for no-dir 2024-12-09 11:23:41 +02:00
Elian Doran 1929d34f88 fix(electron): native title buttons not working on Linux 2024-12-09 10:28:09 +02:00
Elian Doran d97737756c chore(build): disable safe mode by default 2024-12-09 10:09:41 +02:00
Elian Doran 4a284aa8ec chore(build): add no-dir for nix + prepare-dist 2024-12-09 10:08:44 +02:00
Elian Doran 8e65139c0f feat(safe): don't load themes if safe mode is active 2024-12-09 10:08:31 +02:00
renovate[bot] 43f6bbc8f9 chore(deps): update node.js to v22 2024-12-09 07:53:03 +00:00
renovate[bot] b6b76be9bf chore(deps): update dependency electron to v33 2024-12-09 07:52:55 +00:00
Elian Doran 1b963e8b09 chore(build): add script to run using Nix electron 2024-12-09 09:51:54 +02:00
Elian Doran 0ec50ca67b Revert "vscode: Add task to watch build errors"
This reverts commit 893a563afb.
2024-12-09 09:30:11 +02:00
MeIchthys d6d5e84a6f Fix relation/link map urls (#728) 2024-12-08 21:49:28 -05:00
renovate[bot] cc1a8da47e fix(deps): update dependency katex to v0.16.14 2024-12-09 01:20:08 +00:00
Elian Doran 275907f0fb Merge pull request #720 from CobriMediaJulien/develop
Bugfix, Canvas and Mindmap content didn´t show in search
2024-12-08 21:10:24 +02:00
Elian Doran 89d3ffa41e chore(deps): set legacy peer deps for mindmap 2024-12-08 17:43:30 +02:00
Elian Doran 7f813f7c66 style(mindmap): improve theme of node menu 2024-12-08 17:29:35 +02:00
Elian Doran d880771df6 style(mindmap): improve layout of node menu 2024-12-08 17:15:39 +02:00
Elian Doran 1648a40e57 feat(mindmap): integrate node map stylesheet into component 2024-12-08 17:12:57 +02:00
Elian Doran fdcc69591b feat(mindmap): enable node-menu (closes #723) 2024-12-08 17:07:39 +02:00
Elian Doran 12c97c10a1 Merge pull request #721 from TriliumNext/renovate/https-proxy-agent-7.x
fix(deps): update dependency https-proxy-agent to v7.0.6
2024-12-08 11:30:09 +02:00
renovate[bot] c6b1bc1213 fix(deps): update dependency https-proxy-agent to v7.0.6 2024-12-08 00:33:32 +00:00
CobriMediaJulien 336fff9099 Bugfix, Canvas and Mindmap content doesnt show in wuick search and fulltextsearch. 2024-12-07 20:11:52 +01:00
Elian Doran b72fa607f9 Merge pull request #719 from hasecilu/i18n/Spanish_again
Update Spanish translations
2024-12-07 19:44:41 +02:00
hasecilu d3b6c7b2ca chore(i18n): Update Spanish translations 2024-12-07 11:38:18 -06:00
hasecilu d71b4dc89a fix(i18n): Make source string to be on English 2024-12-07 11:38:17 -06:00
Elian Doran d3f55fa4b2 Merge pull request #648 from TriliumNext/renovate/marked-15.x
fix(deps): update dependency marked to v15
2024-12-07 12:48:39 +02:00
Elian Doran 3a90c7a45a Merge pull request #644 from TriliumNext/renovate/i18next-http-backend-3.x
fix(deps): update dependency i18next-http-backend to v3
2024-12-07 12:44:43 +02:00
Elian Doran 830b57c33a Merge pull request #643 from TriliumNext/renovate/helmet-8.x
fix(deps): update dependency helmet to v8
2024-12-07 12:43:01 +02:00
Elian Doran 90a52b957c Merge pull request #634 from TriliumNext/renovate/yauzl-3.x
fix(deps): update dependency yauzl to v3.2.0
2024-12-07 12:40:33 +02:00
Elian Doran c3fac4eb2c Merge pull request #633 from TriliumNext/renovate/yargs-17.x-lockfile
fix(deps): update dependency yargs to v17.7.2
2024-12-07 12:39:53 +02:00
Elian Doran a7539849ed chore(build): fix missing types for yargs 2024-12-07 12:39:32 +02:00
renovate[bot] 62d4286dec fix(deps): update dependency marked to v15 2024-12-07 10:39:26 +00:00
Elian Doran 0292c7da44 Merge pull request #676 from TriliumNext/renovate/axios-1.x
fix(deps): update dependency axios to v1.7.9
2024-12-07 12:37:33 +02:00
Elian Doran 5b2579e158 Merge pull request #689 from TriliumNext/renovate/mermaid-11.x
fix(deps): update dependency mermaid to v11.4.1
2024-12-07 12:36:57 +02:00
Elian Doran b9e877d7de Merge pull request #708 from TriliumNext/renovate/i18next-24.x
fix(deps): update dependency i18next to v24.0.5
2024-12-07 12:35:47 +02:00
Elian Doran 3cfe112353 Merge pull request #688 from TriliumNext/renovate/mermaid-js-layout-elk-0.x
fix(deps): update dependency @mermaid-js/layout-elk to v0.1.7
2024-12-07 12:33:42 +02:00
Elian Doran 7fa74cfa55 Merge pull request #714 from TriliumNext/renovate/express-4.x
fix(deps): update dependency express to v4.21.2
2024-12-07 12:28:33 +02:00
Elian Doran bb034eb8ba chore(deps): remove redundant dependency to node-abi 2024-12-07 12:26:12 +02:00
renovate[bot] 3c7ebfd7eb fix(deps): update dependency jimp to v1 2024-12-07 10:24:25 +00:00
Elian Doran 2025b91333 Merge pull request #631 from TriliumNext/renovate/is-svg-4.x
fix(deps): update dependency is-svg to v4.4.0
2024-12-07 12:22:51 +02:00
Elian Doran 370d363afc Merge pull request #628 from TriliumNext/renovate/webfreak001-deploy-nightly-3.x
chore(deps): update webfreak001/deploy-nightly action to v3.2.0
2024-12-07 12:14:02 +02:00
Elian Doran 170a81e75d Merge pull request #693 from TriliumNext/renovate/jasmine-5.x
chore(deps): update dependency jasmine to v5.5.0
2024-12-07 12:12:45 +02:00
renovate[bot] 6f371915bf chore(deps): update dependency @types/express to v5 2024-12-07 10:11:44 +00:00
Elian Doran f1812a4b98 Merge pull request #675 from TriliumNext/renovate/cookie-parser-1.x
chore(deps): update dependency @types/cookie-parser to v1.4.8
2024-12-07 12:11:14 +02:00
Elian Doran e2a33e9694 Merge pull request #680 from TriliumNext/renovate/express-session-1.x
chore(deps): update dependency @types/express-session to v1.18.1
2024-12-07 12:10:58 +02:00
Elian Doran 154bd92eaf Merge pull request #656 from TriliumNext/renovate/typescript-5.x
chore(deps): update dependency typescript to v5.7.2
2024-12-07 12:10:05 +02:00
Elian Doran 03dbf1a4f7 chore(client): solve TypeScript errors after upgrade 2024-12-07 12:09:51 +02:00
Elian Doran e90e6d2dad chore(ci): run development build 2024-12-07 12:04:57 +02:00
renovate[bot] ca2207ddd6 chore(deps): update dependency typescript to v5.7.2 2024-12-07 10:02:06 +00:00
Elian Doran 7322a88c12 Merge pull request #709 from TriliumNext/renovate/webpack-5.x
chore(deps): update dependency webpack to v5.97.1
2024-12-07 12:01:22 +02:00
Elian Doran d037aea8a7 Merge pull request #640 from TriliumNext/renovate/stringbean-docker-healthcheck-action-3.x
chore(deps): update stringbean/docker-healthcheck-action action to v3
2024-12-07 12:00:24 +02:00
Elian Doran 5281d613d4 Merge pull request #638 from TriliumNext/renovate/docker-metadata-action-5.x
chore(deps): update docker/metadata-action action to v5
2024-12-07 11:59:53 +02:00
Elian Doran 15e499a98d Merge pull request #637 from TriliumNext/renovate/docker-login-action-3.x
chore(deps): update docker/login-action action to v3
2024-12-07 11:59:38 +02:00
Elian Doran 753fc22ae8 Merge pull request #627 from TriliumNext/renovate/node-20.x
chore(deps): update node.js to v20.18.1
2024-12-07 11:58:52 +02:00
Elian Doran f1e106483d Merge pull request #681 from TriliumNext/renovate/electron-forge-monorepo
chore(deps): update electron-forge monorepo to v7.6.0
2024-12-07 11:57:48 +02:00
Elian Doran aeb05191af Merge pull request #717 from TriliumNext/feature/mica
Mica (Windows transparency effects)
2024-12-07 10:42:44 +02:00
Elian Doran 8b96320e41 style(next): improve left pane hover on mica vertical 2024-12-07 10:13:22 +02:00
Elian Doran f5a21e47d5 style(next): remove new tab background on mica 2024-12-07 10:05:51 +02:00
Elian Doran 5a5a3ab508 feat(mica): define material at CSS level 2024-12-07 10:02:56 +02:00
Elian Doran 5d07c3049d fix(mica): mica flicker when loading classic theme 2024-12-07 09:58:41 +02:00
Elian Doran 43101620af style(next): improve mica for light theme horzontal layout 2024-12-07 09:54:00 +02:00
Elian Doran 4faf22b988 style(next): fix mica on light theme for horizontal layout 2024-12-07 09:40:11 +02:00
Elian Doran 043f47dbd2 style(next): fix mica leak in right sidebar gutter 2024-12-07 09:37:09 +02:00
Elian Doran cf128c1275 Merge remote-tracking branch 'origin/develop' into feature/mica 2024-12-07 03:35:40 +02:00
Elian Doran 7d907b4ee6 Merge pull request #711 from TriliumNext/renovate/force-graph-1.x
fix(deps): update dependency force-graph to v1.47.0
2024-12-07 03:22:15 +02:00
Elian Doran 57d2b0ebf5 fix(mica): apply correct mica when switching layouts 2024-12-07 03:15:39 +02:00
Elian Doran 407448476b refactor(mica): remove background effects system 2024-12-07 02:48:10 +02:00
Elian Doran 3f104ca663 style(next): fix native buttons background for mica 2024-12-07 02:34:28 +02:00
Elian Doran ae23a2e73e style(next): fix launcher pane mica for vertical layout 2024-12-07 02:31:47 +02:00
Adorian Doran c5c991f1b1 style(next): recent changes list: use sticky headers 2024-12-07 02:30:01 +02:00
Elian Doran 6365682ae1 style(next): tweak horizontal layout mica intensity 2024-12-07 02:19:33 +02:00
Elian Doran c02462bf81 style(next): apply mica to tabs on vertical layout 2024-12-07 02:16:44 +02:00
Elian Doran 47256e1718 style(next): apply mica to tree on vertical layout 2024-12-07 02:12:55 +02:00
Elian Doran ed98d0ce49 feat(mica): apply to vertical layout as well 2024-12-07 02:06:15 +02:00
Adorian Doran bf1c834454 style(next): adjust icon offset 2024-12-07 02:02:29 +02:00
Elian Doran 3fac2a1ef1 style(next): improve bottom border on mica 2024-12-07 02:01:35 +02:00
Elian Doran b243041966 style(next): fix tab bottom border on mica 2024-12-07 02:01:27 +02:00
Adorian Doran bb07b040e6 Merge branch 'develop' of https://github.com/TriliumNext/Notes into develop 2024-12-07 01:59:44 +02:00
Adorian Doran 501cac3ce1 style(next): restyle the quick search results 2024-12-07 01:59:36 +02:00
Adorian Doran 528645c025 client: tweak the quick search results 2024-12-07 01:58:50 +02:00
Elian Doran 3ceba62dbe style(next): fix gutter background color in mica 2024-12-07 01:17:17 +02:00
Elian Doran d35da72505 style(next): apply tint for mica 2024-12-07 01:13:39 +02:00
Elian Doran e21e0c6b38 style(mica): apply heavy transparency 2024-12-07 01:07:23 +02:00
Elian Doran cdae9f075c feat(mica): pass CSS class 2024-12-07 00:56:27 +02:00
Elian Doran 8cd2c69e3f feat(mica): enable by default 2024-12-07 00:56:19 +02:00
Elian Doran 774c26711f fix(style): horizontal layout border with native window buttons 2024-12-07 00:45:49 +02:00
Elian Doran e22e974786 Merge pull request #702 from TriliumNext/feature/native_window_buttons
Native title bar buttons
2024-12-07 00:43:06 +02:00
Elian Doran 2d0e88b503 fix(native-buttons): watching for changes on other platforms than win32 2024-12-07 00:41:26 +02:00
Adorian Doran 74e561ab9a style(next): turn green the shield icon when the protected session is active 2024-12-07 00:32:14 +02:00
Elian Doran 04cbb7ea07 style(native-buttons): smaller padding for macos 2024-12-07 00:31:17 +02:00
Elian Doran fc9d06f876 fix(native-buttons): regression on windows 2024-12-07 00:27:53 +02:00
Elian Doran 0f48ccd53c fix(native-buttons): regressions on server 2024-12-07 00:20:02 +02:00
Elian Doran 88a93e3a7b fix(native-buttons): regressions on mac 2024-12-07 00:14:05 +02:00
Elian Doran aad2f93844 feat(next): remove pin from custom title bar buttons 2024-12-06 22:30:55 +02:00
Elian Doran 50b69d26f6 style(next): improve custom title bar buttons 2024-12-06 22:24:02 +02:00
Elian Doran ef6410f25d fix(native-buttons): runtime errors due to missing functions 2024-12-06 22:18:32 +02:00
Elian Doran 91a8460eea fix(native-buttons): regression on vertical layout on non-macOS 2024-12-06 22:13:20 +02:00
Elian Doran 5d1e6d6f31 feat(native-buttons): fallback to original implementation for Linux 2024-12-06 22:12:27 +02:00
Elian Doran 8cf3addb7d Merge remote-tracking branch 'origin/develop' into feature/native_window_buttons
; Conflicts:
;	src/public/stylesheets/theme-next.css
2024-12-06 21:23:49 +02:00
renovate[bot] 91d2c11458 fix(deps): update dependency express to v4.21.2 2024-12-06 02:19:27 +00:00
Adorian Doran 164b3df922 style(next): tweak the "Recent Changes" list 2024-12-06 02:00:52 +02:00
Adorian Doran cf5e98bff5 style(next): create a timeline for the "Recent Changes" list 2024-12-06 01:33:23 +02:00
Elian Doran e8cb664ba7 style(next): adjust tab bar height 2024-12-05 20:48:00 +02:00
Elian Doran aefd139592 feat(next): improve left margin to allow moving 2024-12-05 20:34:55 +02:00
Elian Doran b9129f62b4 style(next): add a border on vertical layout on darwin 2024-12-05 19:09:28 +02:00
Elian Doran 5c09b2d6c4 style(next): adjust offset for native title bar buttons 2024-12-05 19:05:03 +02:00
Elian Doran 8f9c555bcb feat(editor): update allowedProtocols 2024-12-05 18:24:25 +02:00
Elian Doran b7b8ab56e9 Merge pull request #694 from TriliumNext/sirius_patch_1
Add supported link protocols
2024-12-05 18:24:13 +02:00
renovate[bot] 8dc1e52535 chore(deps): update dependency webpack to v5.97.1 2024-12-05 16:22:22 +00:00
Elian Doran 4077a01019 Merge pull request #700 from CobriMediaJulien/develop
New Features for note map
2024-12-05 18:21:06 +02:00
renovate[bot] 70b29bc16e fix(deps): update dependency force-graph to v1.47.0 2024-12-05 02:35:18 +00:00
Adorian Doran 4e2cd4ac35 client: add a leading whitespace to note paths 2024-12-05 02:56:44 +02:00
Adorian Doran 84cb13595a style(next): use a different border radius for note preview tooltips 2024-12-05 02:54:16 +02:00
Adorian Doran fdd7c3d64b style(next): restyle note paths 2024-12-05 02:38:26 +02:00
Adorian Doran 603ae47225 client: correct class names 2024-12-05 02:09:04 +02:00
Adorian Doran 79b1d01267 client: format note paths: each segment and delimiter as a separate span 2024-12-05 02:06:32 +02:00
Adorian Doran 4016c76cc7 style(next): tweak again the note preview tooltips 2024-12-05 01:19:48 +02:00
Adorian Doran 17ecf4961c style(next): tweak note preview tooltips 2024-12-05 01:06:44 +02:00
Adorian Doran 5c1a404ed0 style(next): restyle tooltips 2024-12-05 00:26:11 +02:00
Elian Doran 05c5109331 feat(native-buttons): adjustable offset 2024-12-05 00:02:57 +02:00
Elian Doran 00c6d97e4a feat(native-buttons): set arbitrary offset for traffic light 2024-12-04 23:44:26 +02:00
Elian Doran cd8c596bef fix(native-buttons): double left pane toggle widget 2024-12-04 23:22:51 +02:00
Elian Doran 9d98c4a661 feat(native-buttons): allow drag behind title area 2024-12-04 23:21:04 +02:00
Elian Doran 8d2a8ead04 feat(native-buttons): apply full width regardless 2024-12-04 23:16:03 +02:00
Elian Doran 14fb8b5dd9 refactor(native-buttons): reduce duplication 2024-12-04 22:58:32 +02:00
Elian Doran b32eef9aa9 fix(native-buttons): fix left margin on darwin 2024-12-04 22:58:13 +02:00
Elian Doran 7cb5ef2266 feat(style): pass whether electron to CSS 2024-12-04 22:57:03 +02:00
Elian Doran e9cf310657 feat(style): pass platform to CSS 2024-12-04 22:55:07 +02:00
Adorian Doran a87c4132ce style(next): tweak the zoom buttons from the global menu 2024-12-04 22:46:56 +02:00
Adorian Doran 74fcb83b6d style(next): tweak icon offset 2024-12-04 22:27:03 +02:00
Adorian Doran 7a9cb953bf style(next): add a warning animation for the sync status indicator when the sync fails 2024-12-04 22:22:01 +02:00
Elian Doran 07beeda79c feat(native-buttons): apply inset style for macOS 2024-12-04 22:05:46 +02:00
Adorian Doran 0cc1fb5bc8 style(next): fix the sync status indicator 2024-12-04 21:35:26 +02:00
Adorian Doran 4da8c6f873 style: fix the z-index for tooltips 2024-12-04 20:51:41 +02:00
Adorian Doran d1ef08c7cc style(next): fix the tooltip background color on the light color scheme 2024-12-04 20:20:35 +02:00
renovate[bot] 7096aa2f8d fix(deps): update dependency axios to v1.7.9 2024-12-04 08:24:18 +00:00
renovate[bot] c845b3c111 fix(deps): update dependency i18next to v24.0.5 2024-12-04 00:09:54 +00:00
renovate[bot] 0d1e0fe754 chore(deps): update dependency jasmine to v5.5.0 2024-12-03 02:17:43 +00:00
Adorian Doran d5ff354e2f style: fix missing quotes 2024-12-03 00:17:33 +02:00
Adorian Doran 994255451d style: update the calendar icons 2024-12-03 00:14:38 +02:00
Elian Doran dffc9b51ae style(next): fix tabs jumping around 2024-12-03 00:05:16 +02:00
Elian Doran 69902c04bd style(next): draw tab workspace accent instead of background 2024-12-03 00:04:12 +02:00
Elian Doran a2f39c4f99 feat(tab): trigger note icons via theme variable 2024-12-02 23:30:52 +02:00
Elian Doran 55e78f25ef Merge remote-tracking branch 'origin/develop' into feature/note_tab_icons 2024-12-02 23:20:20 +02:00
Elian Doran ca0f491685 style(tree): thinner space between share & link icons 2024-12-02 23:19:25 +02:00
Elian Doran 5df2e3e9cd style(next): improve tooltip design 2024-12-02 23:13:00 +02:00
Elian Doran a1a2fd717b style(next): improve inline code slightly 2024-12-02 23:06:41 +02:00
Elian Doran 415ba7c260 style(next): sharper tab border for dark style 2024-12-02 22:58:41 +02:00
Elian Doran 5ab099196f Merge branch 'develop' of ssh://github.com/TriliumNext/Notes into develop 2024-12-02 22:54:02 +02:00
Elian Doran 445ab7c171 style(next): improve code note padding in note list grid view 2024-12-02 22:53:58 +02:00
Elian Doran 0746838737 style(next): improve text note view in note list grid view 2024-12-02 22:53:08 +02:00
Adorian Doran a22d207d43 Merge branch 'develop' of https://github.com/TriliumNext/Notes into develop 2024-12-02 22:42:28 +02:00
Adorian Doran 95035acf38 style(next): restyle the calendar 2024-12-02 22:42:19 +02:00
Elian Doran 717fd92f64 style(next): change horizontal layout tab style 2024-12-02 22:26:17 +02:00
Elian Doran 9fcdc0e0c5 style(next): improve hr style 2024-12-02 22:16:26 +02:00
Elian Doran ce1ae84313 style(next): improve blockquote style 2024-12-02 22:04:56 +02:00
Elian Doran e91afe1a09 style(next): change hover mechanism for note list 2024-12-02 22:00:30 +02:00
Elian Doran 61a4a2230b style(next): regression in list-type note list layout 2024-12-02 21:52:44 +02:00
Elian Doran 9ba22c32b1 style(next): full width images in note list layout 2024-12-02 21:50:26 +02:00
Elian Doran 884092582f style(next): improve note list layout 2024-12-02 21:45:27 +02:00
Elian Doran 46be700c05 style(next): refactor note list handling 2024-12-02 21:39:08 +02:00
Elian Doran c63b1d0d5c style(next): smaller headings in note list 2024-12-02 21:31:45 +02:00
Elian Doran b68981a12e style(next): full width preview for code notes 2024-12-02 21:30:51 +02:00
Elian Doran d35e933206 fix(i18n): wrong text for export single HTML 2024-12-02 21:18:24 +02:00
Elian Doran 0368b7c252 fix(import): check boxes state not preserved on safe import 2024-12-02 21:08:38 +02:00
Elian Doran 6b973e835e fix(import): check boxes not preserved on safe import 2024-12-02 21:08:09 +02:00
Elian Doran 5a6151e225 fix(demo): to do lists not working 2024-12-02 21:01:30 +02:00
Elian Doran d472a00532 style(next): fix title bar background on classical themes 2024-12-01 21:15:04 +02:00
Elian Doran 29fb9f426f style(next): fix title bar background 2024-12-01 21:12:06 +02:00
Elian Doran 8135fa09c3 feat(native-buttons): differentiate background based on layout 2024-12-01 21:06:01 +02:00
Adorian Doran 22db58d410 style(next): apply the new style on the quick search box for the horizontal layout also 2024-12-01 18:48:01 +02:00
Adorian Doran ff06582eb6 style(next): remove the rounded corner of the center pane on horizontal layout 2024-12-01 18:35:23 +02:00
Elian Doran e933b8d5c8 chore(i18n): fix capitalization 2024-12-01 18:34:15 +02:00
Elian Doran 95664adb64 chore(i18n): remove period for menu item 2024-12-01 18:33:40 +02:00
Elian Doran c06ff4ec27 fix(native-buttons): right margin 2024-12-01 18:31:21 +02:00
Elian Doran 28b27f04cd fix(electron): fix regression when native title bar is on 2024-12-01 18:18:53 +02:00
Elian Doran 9e0546da27 theme(next): make subtle border color less subtle on dark mode 2024-12-01 18:03:13 +02:00
Elian Doran 5761320731 feat(native-buttons): watch for theme changes 2024-12-01 17:59:55 +02:00
Elian Doran 45faa666ba fix(native-buttons): enable buttons on other windows as well 2024-12-01 17:44:42 +02:00
Elian Doran a369ca01cd fix(promoted): ID overlap when clicking on labels 2024-12-01 17:38:13 +02:00
Elian Doran b730d60704 feat(client): always display mind map as full content width 2024-12-01 17:25:19 +02:00
Elian Doran 229825d99c Merge remote-tracking branch 'origin/develop' into feature/native_window_buttons 2024-12-01 17:20:01 +02:00
Elian Doran 061a5be362 chore(deps): update to better-sqlite3 (11.6.0) 2024-12-01 17:17:59 +02:00
Elian Doran e9aba033a1 Merge remote-tracking branch 'origin/develop' into feature/native_window_buttons 2024-12-01 17:14:02 +02:00
Elian Doran 1e41245ef7 fix(settings): unable to set mimetype 2024-12-01 17:08:28 +02:00
Elian Doran cd01e149e0 Revert "style(next): experimental tree lines"
This reverts commit 0dbe88092e.
2024-12-01 17:04:13 +02:00
Elian Doran 958f436cb4 style(next): add color for horizontal launcher bark on dark mode 2024-12-01 17:03:52 +02:00
Elian Doran b7487461fe fix(server): hidden subtree not initializing due to missing translations 2024-12-01 17:00:36 +02:00
Elian Doran 8931f1778e feat(tabs): experiment with note icons instead of workspace icons 2024-12-01 11:35:58 +02:00
Elian Doran 819a6d2364 Merge remote-tracking branch 'origin/develop' into feature/native_window_buttons 2024-12-01 10:49:30 +02:00
Elian Doran 0dbe88092e style(next): experimental tree lines 2024-12-01 10:46:15 +02:00
Elian Doran 9e5000bce0 style(next): smaller tree padding 2024-12-01 10:41:12 +02:00
Elian Doran 91aad26eae style(next): regressions for vertical layout 2024-12-01 10:38:24 +02:00
Elian Doran d05c1deb07 fix(client): build error due to non-existing import 2024-12-01 10:37:45 +02:00
Elian Doran 12f54a659c Merge remote-tracking branch 'origin/develop' into feature/native_window_buttons 2024-12-01 10:32:47 +02:00
Elian Doran 947cff5805 style(next): tweak add new tab background 2024-12-01 10:32:22 +02:00
Elian Doran 082cb71e83 style(next): tweak launcher bar height 2024-12-01 10:31:00 +02:00
Elian Doran 6c035c7756 style(next): improve tab hover color and alignment 2024-12-01 10:25:38 +02:00
Elian Doran a883744237 fix(launcher): tooltip position for bookmark buttons 2024-12-01 10:19:20 +02:00
Elian Doran f8f61c1c3e style(next): improve horizontal layout slightly 2024-12-01 10:13:30 +02:00
Elian Doran 6da5067003 style(next): add a border between tab bar and launcher on horizontal 2024-12-01 10:01:46 +02:00
Elian Doran ad62611e90 style(next): apply same color to tab and launch bar 2024-12-01 09:58:04 +02:00
Elian Doran c4085b0729 style(next): joined tabs to launch bar on horizontal layout 2024-12-01 09:53:15 +02:00
Elian Doran e7c4e037e0 feat(electron): add script to watch for src/public changes 2024-12-01 09:48:55 +02:00
Elian Doran 091f06253f feat(electron): support live reload in dist/src/public 2024-12-01 09:47:23 +02:00
Elian Doran bd890c49d5 feat(electron): relocate pin to global menu 2024-12-01 03:02:03 +02:00
Elian Doran 01512152ea feat(electron): load overlay information from CSS 2024-12-01 02:36:00 +02:00
Elian Doran 60192977c9 feat(electron): set overlay information at runtime 2024-12-01 02:18:35 +02:00
Elian Doran 0089346d04 feat(electron): enable native window buttons on frameless 2024-12-01 02:02:33 +02:00
juju 3a4da07b39 New Note_Map features 2024-11-30 19:57:06 +01:00
juju b3c247c7dc new features for note_map 2024-11-30 19:20:07 +01:00
Adorian Doran 221fd3c297 style(next): update colors 2024-11-30 19:10:44 +02:00
renovate[bot] 428e6b9e41 fix(deps): update dependency i18next-http-backend to v3 2024-11-30 13:06:36 +00:00
Elian Doran 3a0a6bc388 Merge pull request #657 from TriliumNext/renovate/i18next-24.x
fix(deps): update dependency i18next to v24
2024-11-30 15:04:49 +02:00
Elian Doran 4056e21051 fix(next): dragging the window in Electron 2024-11-30 14:55:15 +02:00
Elian Doran b351293ea8 fix(read-only-note): syntax highlight not working (closes #668) 2024-11-30 14:16:45 +02:00
Elian Doran cb9678c991 style(next): remove shadow for protected notes 2024-11-30 11:26:22 +02:00
Elian Doran 0731186015 style(next): improve protected indicator in tree 2024-11-30 11:20:12 +02:00
Elian Doran 4cd59932a3 style(next): improve note list design 2024-11-30 11:15:08 +02:00
Elian Doran 6d1f8c8947 style(next): remove white bar between ribbon and content 2024-11-30 10:42:01 +02:00
Elian Doran ae82041ad3 chore(i18n): finalize translation for Romanian 2024-11-30 10:40:26 +02:00
Elian Doran ae97432ae5 feat(i18n): translate hidden notes and settings 2024-11-30 10:37:15 +02:00
Elian Doran 690506ea26 feat(i18n): restore hidden subtree names on language change 2024-11-30 10:13:39 +02:00
Elian Doran 6a9865eb4f feat(i18n): add Traditional Chinese 2024-11-30 10:07:37 +02:00
Elian Doran 9337610ffa Merge pull request #698 from dwong33/patch-2
Update translation.json
2024-11-30 09:58:00 +02:00
Elian Doran 5b90a1c3f6 fix(settings): bring back pinning of plain text in MIME types 2024-11-30 03:00:24 +02:00
Elian Doran 0ef5cb843e feat(settings): fix orphans/widows in code MIME types 2024-11-30 02:56:43 +02:00
Elian Doran 978bb5eb0b style(next): carry over note list style from GNOME theme 2024-11-30 02:44:36 +02:00
Elian Doran c1d44f80d3 style(next): fix a margin 2024-11-30 02:32:45 +02:00
Elian Doran 005674e955 fix(settings): merge help text for HTML import tags 2024-11-30 02:32:37 +02:00
Elian Doran f5c8dac5f0 style(next): reduce heavy vertical spacing 2024-11-30 02:25:46 +02:00
Elian Doran 0dd36cca1c style(next): layout improvements 2024-11-30 02:20:57 +02:00
Elian Doran b2d731619f style(next): fix layout on database integrity 2024-11-30 02:11:34 +02:00
Elian Doran 84dc71ea3c style(next): fix top margin on "Other" section 2024-11-30 02:11:26 +02:00
Elian Doran 8552d95770 style(next): small improvements to margins 2024-11-30 02:01:15 +02:00
Elian Doran 8f12103106 refactor(settings): merge consistency checks with integrity checks 2024-11-30 01:56:55 +02:00
Elian Doran eba605fa49 chore(i18n): fix typo 2024-11-30 01:55:19 +02:00
Elian Doran 5df40d9e0a style(settings): display anonymize database in two columns 2024-11-30 01:49:40 +02:00
Elian Doran f22cdb85a8 style(next): improve h5 in settings 2024-11-30 01:43:14 +02:00
Elian Doran bb23aeb925 style(settings): improve highlights list separation 2024-11-30 01:38:45 +02:00
Elian Doran 6af51d393d fix(settings): separate section for layout 2024-11-30 01:36:32 +02:00
Elian Doran 131288bb4e style(next): card style for options 2024-11-30 01:35:33 +02:00
Elian Doran 4ecf49b175 feat(client): display different icon to toggle sidebar on horizontal layout 2024-11-30 01:23:54 +02:00
Elian Doran ca6687208b feat(client): move toggle sidebar to tab bar on horizontal layout 2024-11-30 01:20:47 +02:00
Elian Doran 29d6ef85ff Merge pull request #661 from TriliumNext/feature/trilium_next_theme
Introduce a theme for TriliumNext
2024-11-30 01:03:35 +02:00
Elian Doran 0ea4171b1b style(next): improve tab height on horizontal further 2024-11-30 00:58:59 +02:00
Elian Doran 921f216872 Merge remote-tracking branch 'origin/develop' into feature/trilium_next_theme 2024-11-30 00:55:37 +02:00
Elian Doran 8c62949d09 style(next): tab height on horizontal layout 2024-11-30 00:52:09 +02:00
Elian Doran fffd93d4f1 server(hidden): change default icons for next/prev launchers 2024-11-30 00:48:04 +02:00
Elian Doran 23f70367cc Merge pull request #695 from hasecilu/i18n/Spanish
i18n: Update Spanish translations
2024-11-30 00:11:50 +02:00
Adorian Doran 7a0649038b Fix an unwanted interference with certain combo boxes 2024-11-30 00:11:35 +02:00
Adorian Doran d7240b5bb4 Refactor 2024-11-30 00:07:19 +02:00
Adorian Doran 00f73059f7 Allow customizing the hover color of the right pane items 2024-11-30 00:04:32 +02:00
Adorian Doran 48253e0c60 Tweak the quick search button 2024-11-29 23:59:01 +02:00
Adorian Doran d2af4c362f Tweak the left pane's action buttons 2024-11-29 22:42:52 +02:00
hasecilu 7d2d39a2a4 i18n: Update Spanish translations 2024-11-29 14:41:14 -06:00
Adorian Doran 7496101505 Restyle the new tab button 2024-11-29 22:36:05 +02:00
Adorian Doran d5695757cb Change the colors of the new tab button 2024-11-29 22:19:57 +02:00
Adorian Doran 4028fa0c00 Allow the left pane action button color to be customized, tweak colors 2024-11-29 22:10:38 +02:00
Adorian Doran 8540201cd5 Tweak again the new tab button 2024-11-29 21:47:03 +02:00
Adorian Doran 38025e0912 Tweak the new tab button 2024-11-29 21:43:53 +02:00
Adorian Doran cdc530ad8b Fix a glitch of the new tab button 2024-11-29 21:37:03 +02:00
Adorian Doran 197f291c28 Tweak colors 2024-11-29 21:33:12 +02:00
Adorian Doran c6b7015c86 Update again the colors of the dark theme 2024-11-29 21:12:11 +02:00
Adorian Doran 5face4930a Update the colors of the dark theme 2024-11-29 19:10:12 +02:00
Adorian Doran 3583f536da Fix the hover background of the global menu button 2024-11-29 17:54:22 +02:00
Adorian Doran 513d7f35b2 Tweak the offset of menu item icons 2024-11-29 17:48:54 +02:00
Adorian Doran a53403f8d8 Tweak the icons for the menu items 2024-11-29 17:37:34 +02:00
Adorian Doran 3cfdbc5f21 Tweak menu item keyboard shortcut 2024-11-29 16:35:11 +02:00
Adorian Doran 1ddd5d800d Restyle menu item arrows 2024-11-29 16:29:38 +02:00
Adorian Doran 8ee30e1a22 Restyle menu item delimiters 2024-11-29 15:54:10 +02:00
Adorian Doran 6e870dbb81 Restyle menus 2024-11-29 15:28:35 +02:00
Adorian Doran 821a077130 Switch the color of the search button according to the current state 2024-11-29 12:56:30 +02:00
Adorian Doran 6a74765bc8 Don't highlight the quick search button if the search text box is not focused 2024-11-29 12:42:18 +02:00
Adorian Doran 04efba1f26 Add hover state for the quick search box 2024-11-29 12:34:32 +02:00
SiriusXT b2ff7fdf93 Add supported link protocols 2024-11-29 18:01:12 +08:00
Adorian Doran e6aa8a5299 Restyle the quick search box 2024-11-29 03:01:27 +02:00
Adorian Doran 6ad09280d0 Improve the overall appearance when the left pane is collapsed 2024-11-29 00:58:22 +02:00
Adorian Doran 65fb7cb4cb Adjust transition durations 2024-11-29 00:36:07 +02:00
Adorian Doran 2b55339ac6 Fix broken transition 2024-11-29 00:32:07 +02:00
Adorian Doran 7bba991336 Add an active state transition for the new tab button 2024-11-29 00:16:27 +02:00
Adorian Doran fefb79a7ae Fix background glitch 2024-11-28 23:59:42 +02:00
Adorian Doran 50cf7d47e7 Add transition to the new tab button 2024-11-28 23:57:31 +02:00
Adorian Doran 3d8a662903 Add transition for the close tab button 2024-11-28 23:51:57 +02:00
Adorian Doran 1d95fb3931 Add transitions for tabs 2024-11-28 23:40:53 +02:00
Elian Doran b632b7d91b chore(i18n): translate to Romanian 2024-11-28 23:36:42 +02:00
Elian Doran 38b4b3953d feat(i18n): translate import toast messages 2024-11-28 23:36:42 +02:00
Elian Doran b3b8e60192 Merge pull request #601 from maphew/feature/extend-kept-html-tags
Feature: user configurable list of allowed html tags in import
2024-11-28 22:26:31 +02:00
Elian Doran bc78455da1 feat(editor): support general HTML elements 2024-11-28 22:11:54 +02:00
Elian Doran 9997f5c17a fix(client): code not building due to attempt to access server code 2024-11-28 21:59:19 +02:00
Elian Doran aa99efc362 Merge remote-tracking branch 'origin/develop' into feature/extend-kept-html-tags
; Conflicts:
;	src/routes/api/options.ts
;	src/services/options_init.ts
2024-11-28 21:56:08 +02:00
renovate[bot] 7ed247f3ac fix(deps): update dependency i18next to v24 2024-11-28 19:49:43 +00:00
Elian Doran b28a377b5f Merge pull request #629 from TriliumNext/renovate/i18next-fs-backend-2.x
fix(deps): update dependency i18next-fs-backend to v2.6.0
2024-11-28 21:48:41 +02:00
Elian Doran 801254ce8e feat(client): add CSS root class for layout 2024-11-28 21:28:37 +02:00
Elian Doran 48a27710d6 Merge pull request #692 from TriliumNext/feature/page_breaks
Support page breaks for printing
2024-11-28 20:33:22 +02:00
Elian Doran 7a8b526795 fix(print): respect page breaks 2024-11-28 20:21:17 +02:00
Elian Doran 6fde3305a1 feat(editor): enable insertion of page breaks 2024-11-28 20:06:33 +02:00
Elian Doran 62db25ce10 feat(editor): group some items under Insert submenu 2024-11-28 20:00:55 +02:00
Elian Doran 21a5481691 Merge pull request #598 from maphew/feature/prefer-html-title
Importing single HTML file: prefer html title over filename
2024-11-28 19:46:15 +02:00
Elian Doran 98b4e36f78 chore(test): remove test for now 2024-11-28 19:43:06 +02:00
Elian Doran 83cd72fa86 fix(import/single): title appearing as text 2024-11-28 19:41:45 +02:00
Elian Doran cef464f88b fix(import/single): h1 not being removed due to downgrade to h2 2024-11-28 19:37:00 +02:00
Elian Doran 6056b55bde fix(import/single): title extraction not working due to h1 conversion 2024-11-28 19:30:47 +02:00
Elian Doran 29b062660d Merge pull request #659 from TriliumNext/quick_search_in_autocomplete
Add full text search in autocomplete
2024-11-28 19:17:03 +02:00
renovate[bot] 75479d56ae fix(deps): update dependency i18next-fs-backend to v2.6.0 2024-11-28 17:10:37 +00:00
Elian Doran 5be532f46f Merge pull request #630 from TriliumNext/renovate/i18next-http-backend-2.x
fix(deps): update dependency i18next-http-backend to v2.7.1
2024-11-28 19:08:13 +02:00
Dwong33 f384781f3a Update translation.json
Introduced Traditional Chinese translation
2024-11-28 02:24:49 -05:00
Adorian Doran a0e01fef67 Tweak tabs 2024-11-28 08:48:23 +02:00
renovate[bot] b553fc911d fix(deps): update dependency mermaid to v11.4.1 2024-11-28 02:09:05 +00:00
renovate[bot] 4bba0410c4 fix(deps): update dependency @mermaid-js/layout-elk to v0.1.7 2024-11-28 02:08:55 +00:00
Adorian Doran e040835d7b Add a distinctive style for tabs while being dragged 2024-11-28 00:31:45 +02:00
Adorian Doran 6d2e3a6f5e Tweak the colors of the inactive tab 2024-11-27 23:07:48 +02:00
Adorian Doran 180c592d5f Improve the close tab button 2024-11-27 22:57:09 +02:00
Adorian Doran 1b26128731 Improve the appearance of the new tab button, extract variables 2024-11-27 22:40:55 +02:00
Adorian Doran 3f36555973 Restyle the new tab button 2024-11-27 22:07:36 +02:00
Elian Doran 11c48988e1 Merge pull request #538 from TriliumNext/feature/improved_promoted_attributes
Change layout of promoted attributes
2024-11-27 21:33:32 +02:00
Elian Doran bb4164f10f Merge remote-tracking branch 'origin/develop' into feature/improved_promoted_attributes
; Conflicts:
;	src/public/app/layouts/desktop_layout.js
2024-11-27 21:29:15 +02:00
Adorian Doran 787466f2c6 Update CSS selector 2024-11-27 21:26:33 +02:00
Elian Doran 0b20e8a37d style(promoted): improve checkbox style 2024-11-27 21:26:07 +02:00
Adorian Doran 6c99a691dc Restyle the close tab buttons 2024-11-27 21:23:39 +02:00
Elian Doran f125ba55c1 style(promoted): fix heightfor rows 2024-11-27 21:22:50 +02:00
Elian Doran ceae1d5aa3 revert(client): add back fixed title bar 2024-11-27 21:12:44 +02:00
renovate[bot] a118c18649 fix(deps): update dependency i18next-http-backend to v2.7.1 2024-11-27 19:02:48 +00:00
Elian Doran 6ef55c73d4 Merge pull request #626 from TriliumNext/renovate/i18next-23.x
fix(deps): update dependency i18next to v23.16.8
2024-11-27 21:00:20 +02:00
Elian Doran 2550c00da0 Merge pull request #677 from TriliumNext/feature/i18n-part8
Feature/i18n part8
2024-11-27 20:49:25 +02:00
Elian Doran 47579e5799 feat(theme): inform user that the next theme is beta 2024-11-27 20:46:32 +02:00
Elian Doran a3ab9f0cd2 style(next): remove redundant font 2024-11-27 20:46:32 +02:00
Elian Doran b33e27baba style(next): add a few extra fonts 2024-11-27 20:46:31 +02:00
Elian Doran 30ece35f0c style(next): set up Lato font 2024-11-27 20:46:31 +02:00
Adorian Doran 51ee664609 Adjust padding 2024-11-27 20:43:07 +02:00
Adorian Doran c391ef868f Tweak the center pane 2024-11-27 20:20:12 +02:00
Adorian Doran b6dda4983c Merge branch 'feature/trilium_next_theme' of https://github.com/TriliumNext/Notes into feature/trilium_next_theme 2024-11-27 20:04:13 +02:00
Adorian Doran e4c7d8d015 Restyle tabs 2024-11-27 20:04:07 +02:00
Elian Doran ba310b2128 style(next): fix launcher pane style for horizontal 2024-11-27 19:58:27 +02:00
Elian Doran 58b823285e Revert "style(next): fix tab height on horizontal layout"
This reverts commit 6e90b5c6a0.
2024-11-27 19:56:27 +02:00
Elian Doran 0661e72f6e style(next): fix gutter color for dark mode 2024-11-27 19:55:17 +02:00
Elian Doran 6e90b5c6a0 style(next): fix tab height on horizontal layout 2024-11-27 19:52:03 +02:00
Elian Doran 8988d93ff0 Merge remote-tracking branch 'origin/develop' into feature/trilium_next_theme 2024-11-27 19:47:30 +02:00
Adorian Doran f24242d721 Add a way to customize the height of the tab bar / tabs and the first tab offset 2024-11-27 19:27:11 +02:00
Adorian Doran 7d737e7636 Introduce a root background color, make the tab bar and gutter background transparent 2024-11-27 18:59:54 +02:00
SiriusXT 13da46ff1b Add full text search in autocomplete results 2024-11-27 10:14:13 +08:00
SiriusXT f36594efb7 Add full text search in autocomplete results 2024-11-27 10:10:37 +08:00
SiriusXT ba1ed34e53 Add full text search in autocomplete results 2024-11-27 09:51:34 +08:00
renovate[bot] 3825b0642d chore(deps): update electron-forge monorepo to v7.6.0 2024-11-27 00:47:40 +00:00
renovate[bot] c68bb23fee chore(deps): update dependency @types/express-session to v1.18.1 2024-11-27 00:47:25 +00:00
Adorian Doran a1fc670839 Tweak the highlights list pane 2024-11-27 02:40:21 +02:00
Adorian Doran 9d289ec7bc Tweak the table of contents pane 2024-11-27 02:20:52 +02:00
Adorian Doran abfbe2cb39 Correct offsets to accommodate the new font metrics 2024-11-27 01:20:13 +02:00
Adorian Doran 12cae219db Switch the main font to "Lato" 2024-11-27 01:13:35 +02:00
Adorian Doran dd707d64e5 Restyle the gutter 2024-11-27 01:06:30 +02:00
Adorian Doran 4977092776 Add a fade in animation when the tree view is shown 2024-11-27 00:54:29 +02:00
Adorian Doran 3c8fbd91d0 Hide the tree actions 2024-11-27 00:39:02 +02:00
Adorian Doran 180d0e9ef6 Restyle the tree view item action buttons 2024-11-27 00:36:52 +02:00
Adorian Doran d788ce8ef1 Tweak tree view items 2024-11-27 00:04:25 +02:00
Adorian Doran 07a766d304 Tweak tree view items 2024-11-26 23:54:56 +02:00
Adorian Doran bb3f779d34 Add some horizontal padding for the tree view 2024-11-26 23:31:27 +02:00
Adorian Doran 8f38c36469 Fix the action buttons not showing up for the selected item 2024-11-26 23:26:20 +02:00
Adorian Doran f2cd34ab6a Add transition 2024-11-26 23:14:38 +02:00
Elian Doran 19e5f7364f Merge pull request #678 from TriliumNext/feature/update_search
Make exact matches rise higher up in search
2024-11-26 22:52:13 +02:00
Adorian Doran f2ebb3ccab Restyle the tree view items 2024-11-26 22:36:30 +02:00
Adorian Doran df94dabcd3 Tweak the left pane 2024-11-26 21:15:51 +02:00
perf3ct 84007a1103 tweak weights 2024-11-26 19:15:45 +00:00
Adorian Doran ae7764a366 Restyle the vertical launcher pane 2024-11-26 17:35:22 +02:00
Adorian Doran 208dbd46f5 Light theme: tweak launcher pane and left pane colors 2024-11-26 14:12:19 +02:00
SiriusXT e877ad68cf Add full text search in autocomplete 2024-11-26 16:20:38 +08:00
SiriusXT 0d9e13c1e0 Merge branch 'develop' into quick_search_in_autocomplete 2024-11-26 15:49:11 +08:00
SiriusXT 889c1e0346 Add full text search in autocomplete 2024-11-26 15:41:18 +08:00
perf3ct 7fdaedd468 also significantly increase noteId matches 2024-11-26 03:52:20 +00:00
perf3ct a97a0660ea add back comment 2024-11-26 03:41:01 +00:00
Nriver 1c2975a818 add translation for doc notes 2024-11-26 09:08:39 +08:00
renovate[bot] d6991467ed chore(deps): update dependency @types/cookie-parser to v1.4.8 2024-11-26 00:58:50 +00:00
perf3ct bca7d9c4d2 weigh exact title matches heavily 2024-11-25 23:04:20 +00:00
Elian Doran 1e996d6f82 docs(demo): add mermaid diagram with ELK 2024-11-25 23:31:43 +02:00
Elian Doran 33ec142ea3 chore(deps): use mermaid ELK at root level 2024-11-25 23:24:26 +02:00
Elian Doran 1dec64c712 fix(mermaid): load ELK in previews 2024-11-25 22:00:19 +02:00
Elian Doran 2ef956da87 feat(mermaid): load ELK library on demand 2024-11-25 21:58:56 +02:00
Elian Doran e3c8c0c1f2 feat(mermaid): support ELK diagrams in editor 2024-11-25 21:32:31 +02:00
Elian Doran 482cb46afa chore(mermaid): rebuild ELK to export something 2024-11-25 21:30:20 +02:00
Elian Doran 4d5f04de13 chore(mermaid): set up single-chunk ELK 2024-11-25 21:16:39 +02:00
Elian Doran d36b8ff4c4 chore(mermaid): set up project for building ELK 2024-11-25 21:10:27 +02:00
Elian Doran a7722e6bca feat(backend-log): set to full content width 2024-11-25 20:34:05 +02:00
Elian Doran c763c090be feat(backend-log): use CodeMirror as editor 2024-11-25 20:31:25 +02:00
Elian Doran 36ac3f5ee6 Merge pull request #670 from TriliumNext/meichthys
Remove resizer from backend log text area
2024-11-25 20:19:29 +02:00
Elian Doran ebb4b37873 Merge pull request #673 from TriliumNext/feature/i18n-part7
Feature/i18n part7
2024-11-25 20:16:26 +02:00
Nriver dedef69aec add translation for image_context_menu.js and link_context_menu.js 2024-11-25 17:41:00 +08:00
Nriver d9ceca8cc5 add missing translation 2024-11-25 17:40:15 +08:00
Nriver 0a38d132c2 update Chinese translation and synchronize with English 2024-11-25 16:53:04 +08:00
MeIchthys ae784eafd4 Remove resizer from backend log text area 2024-11-24 20:58:30 +00:00
Adorian Doran 116e362a5e Apply translucency to menus 2024-11-24 22:38:00 +02:00
Adorian Doran 2243db5b20 Correct the indentation 2024-11-24 22:31:22 +02:00
Adorian Doran 388b5a9464 Add comments 2024-11-24 22:28:50 +02:00
Adorian Doran 5563a2b4b0 Add the color definitions for the light theme 2024-11-24 22:19:02 +02:00
Adorian Doran 3d54b7b34f Define the drop shadow of code boxes via a CSS variable 2024-11-24 22:04:58 +02:00
Adorian Doran 954a51e6c7 Migrate the previously designed code blocks to the new theme 2024-11-24 21:58:45 +02:00
Elian Doran 8dd9510de8 fix(client): bookmark alignment on horizontal layout 2024-11-24 12:17:47 +02:00
Elian Doran a13c0a5743 Merge pull request #653 from mm21/develop
Add label definition type for standalone time
2024-11-24 11:43:44 +02:00
Elian Doran 793984e8f2 Merge remote-tracking branch 'origin/master' into develop 2024-11-24 11:35:31 +02:00
Elian Doran bb36b33694 Bump to 0.90.12
/ Check Docker build (Dockerfile) (push) Failing after 37s
/ Check Docker build (Dockerfile.alpine) (push) Failing after 40s
/ Build Docker images (Dockerfile, linux/arm/v7) (push) Has been skipped
/ Build Docker images (Dockerfile, linux/arm64) (push) Has been skipped
/ Build Docker images (Dockerfile.alpine, linux/amd64) (push) Has been skipped
/ Merge manifest lists (push) Has been skipped
Release / Make Electron (arm64, map[extension:deb image:ubuntu-latest name:linux]) (push) Failing after 34s
Release / Make Electron (x64, map[extension:deb image:ubuntu-latest name:linux]) (push) Failing after 34s
Release / Build Linux Server x86_64 (push) Failing after 45s
Release / Make Electron (arm64, map[extension:dmg image:macos-latest name:macos]) (push) Has been cancelled
Release / Make Electron (arm64, map[extension:exe image:windows-latest name:windows]) (push) Has been cancelled
Release / Make Electron (x64, map[extension:dmg image:macos-latest name:macos]) (push) Has been cancelled
Release / Make Electron (x64, map[extension:exe image:windows-latest name:windows]) (push) Has been cancelled
2024-11-24 11:35:06 +02:00
Elian Doran e982696ef4 Merge pull request #663 from hasecilu/i18n/Spanish
I18n/spanish
2024-11-24 11:32:45 +02:00
Elian Doran 3120b34c70 Merge pull request #663 from hasecilu/i18n/Spanish
I18n/spanish
2024-11-24 11:29:24 +02:00
SiriusXT 836fa2deee change allowSearchNotes to allowJumpToSearchNotes 2024-11-24 13:11:57 +08:00
SiriusXT 1d1c7eb2ca Add full text search in autocomplete results 2024-11-24 13:10:33 +08:00
hasecilu 945d5412b0 i18n: Update Spanish translation 2024-11-23 17:45:57 -06:00
hasecilu f31a4865c3 bin(translation): Refactor script and add new locales to the list
- Check if JSON files exists before counting keys
- New locales:
  - German
  - Portuguese, Brazil
  - Chinese, Taiwan
2024-11-23 17:45:57 -06:00
Elian Doran e602445694 style(next): use sans-serif font with temporary Inter 2024-11-23 16:54:41 +02:00
Elian Doran 5b62ad101d Merge remote-tracking branch 'origin/develop' into feature/trilium_next_theme 2024-11-23 16:27:55 +02:00
SiriusXT 5370e1e27c Add full text search in autocomplete 2024-11-23 20:51:51 +08:00
Elian Doran 68fd954a67 Merge pull request #654 from TriliumNext/feature/adjustable_launcher_bar_position
Add support for horizontal launcher bar
2024-11-23 14:40:30 +02:00
Elian Doran c294469f12 Merge remote-tracking branch 'origin/develop' 2024-11-23 14:04:36 +02:00
Elian Doran e49f4c3e42 fix(client): title bar buttons on horizontal layout 2024-11-23 13:41:50 +02:00
Elian Doran a207fd523a fix(client): double separator in global menu 2024-11-23 10:06:04 +02:00
Elian Doran 2950132271 fix(mobile): advanced submenu misalignment 2024-11-23 10:03:34 +02:00
Elian Doran 8b8929dde0 chore(docs): document css and optCss 2024-11-23 10:01:49 +02:00
Elian Doran e0d9cda522 fix(mobile): padding for the title 2024-11-23 09:59:48 +02:00
Elian Doran ba5371d76b fix(mobile): vertical layout not sized properly 2024-11-23 09:56:48 +02:00
Elian Doran fbae0062af feat(mobile): change context menu icon on horizontal layout 2024-11-23 09:48:18 +02:00
Elian Doran ea399e590d feat(mobile): reorder context menu 2024-11-23 09:45:52 +02:00
Elian Doran 2dda8f60ed feat(mobile): move menu button to the right 2024-11-23 09:43:34 +02:00
Elian Doran 14fa687b9c fix(mobile): width of launcher bar items 2024-11-23 09:40:32 +02:00
Elian Doran 91d23bae8e refactor(client): use different hiding mechanism for quick search 2024-11-23 09:37:24 +02:00
Elian Doran d2d2620742 feat(mobile): hide quick search 2024-11-23 09:34:26 +02:00
Elian Doran 8a61b58970 fix(mobile): fix alignment for horizontal layout 2024-11-23 09:29:49 +02:00
Elian Doran 23ef2c593e chore(i18n): translate layout settings 2024-11-23 09:18:12 +02:00
Elian Doran 62d23b3643 feat(client): respect layout orientation selected by user 2024-11-23 09:09:09 +02:00
Elian Doran 4f305b52eb feat(client): allow user to change layout orientation 2024-11-23 09:06:30 +02:00
Elian Doran e32f54a5c9 feat(server): add support for layout orientation option 2024-11-23 09:06:16 +02:00
Elian Doran 2d8fb4eff5 chore(i18n): fix punctuation 2024-11-23 00:48:01 +02:00
Elian Doran eaa6d6c3cf fix(client): tooltip position for calendar in vertical layout 2024-11-23 00:32:36 +02:00
Elian Doran 0f7b96f096 fix(client): quick search in vertical layout 2024-11-23 00:29:28 +02:00
Elian Doran 13e33549c1 fix(client): global menu alignment on horizontal layout 2024-11-23 00:24:29 +02:00
Elian Doran 23873b72bf fix(client): dropdown width for horizontal layout 2024-11-23 00:15:50 +02:00
Elian Doran 5f9439a9e0 fix(client): dropdown tooltip placement for horizontal layout 2024-11-23 00:11:49 +02:00
Elian Doran 7e5fea8cd2 fix(client): tooltip position for hide left pane button 2024-11-23 00:07:40 +02:00
Elian Doran fd8f9506d4 fix(client): tooltip position for launcher on horizontal layout 2024-11-23 00:02:02 +02:00
Elian Doran 13a997beb0 fix(client): add new tab not working in horizontal layout 2024-11-22 23:02:43 +02:00
Elian Doran f62e860b61 feat(client): use hamburger menu for horizontal layout 2024-11-22 22:44:34 +02:00
Elian Doran 50bf94875c fix(client): global submenu not working in horizontal layout 2024-11-22 22:16:48 +02:00
Elian Doran 20b0215364 feat(client): set up quick search as launcher 2024-11-22 22:01:38 +02:00
Elian Doran 045c8699a9 refactor(client): use switch instead of chained-if 2024-11-22 21:56:34 +02:00
Elian Doran 15b9f38439 style(client): improve background for full-width tab bar 2024-11-22 21:41:23 +02:00
Elian Doran 91c4ea333e feat(client): move tab bar on horizontal layout 2024-11-22 21:37:54 +02:00
Elian Doran d1550db08d fix(client): experiment with full-width tab bar 2024-11-22 21:35:47 +02:00
Elian Doran c858630678 fix(client): fix size for horizontal launcher bar 2024-11-22 21:14:50 +02:00
Elian Doran c9f2a2bd6b feat(client): reorder buttons on horizontal bar 2024-11-22 21:10:49 +02:00
Elian Doran efc84722a9 feat(client): implement top launcher pane 2024-11-22 21:05:45 +02:00
Elian Doran 8300acd30b refactor(client): add support for optional children in layout 2024-11-22 20:36:08 +02:00
Elian Doran fd53781c71 feat(theme): use TriliumNext as login & set password theme 2024-11-22 20:22:48 +02:00
Elian Doran 76256c1b9c feat(theme): use TriliumNext as setup theme 2024-11-22 20:21:22 +02:00
Elian Doran 2e544a7337 feat(theme): use TriliumNext as default theme 2024-11-22 20:15:35 +02:00
Elian Doran 3e705ec4fd feat(theme): use prefers-color-scheme for automatic theme 2024-11-22 20:12:22 +02:00
Elian Doran 7cb9671fe3 feat(theme): start implementing a theme for TriliumNext 2024-11-22 20:12:09 +02:00
mm21 2f7d061ef1 Add label definition type for standalone time 2024-11-22 17:58:23 +00:00
Elian Doran 79b31bda76 chore(i18n): reach 100% for Romanian + small change 2024-11-22 19:48:57 +02:00
Elian Doran c30a4373d9 Merge pull request #652 from TriliumNext/remove-renovate-action
Remove the renovate action in favor of the GH app
2024-11-22 19:43:54 +02:00
perf3ct 12065902d2 Remove the renovate action in favor of the GH app 2024-11-22 17:39:34 +00:00
Elian Doran aa01161a40 Merge pull request #651 from TriliumNext/tab_enhance
Add reopen_last_tab and copy_tab_to_new_window to  tab management
2024-11-22 19:01:20 +02:00
SiriusXT 3cfc2ac768 Add reopen_last_tab and copy_tab_to_new_window to tab management 2024-11-22 17:24:06 +08:00
renovate[bot] 5faa6e1d67 fix(deps): update dependency helmet to v8 2024-11-21 21:54:26 +00:00
renovate[bot] 190c7f7274 fix(deps): update dependency chokidar to v4 2024-11-21 21:53:55 +00:00
renovate[bot] 0cb7d82d16 chore(deps): update stringbean/docker-healthcheck-action action to v3 2024-11-21 21:53:41 +00:00
renovate[bot] 1e478a7a52 chore(deps): update docker/metadata-action action to v5 2024-11-21 21:53:20 +00:00
renovate[bot] caf5b34d70 chore(deps): update docker/login-action action to v3 2024-11-21 21:53:17 +00:00
renovate[bot] 35bc2ade9c fix(deps): update dependency yauzl to v3.2.0 2024-11-21 21:52:45 +00:00
renovate[bot] ecca6952d1 fix(deps): update dependency yargs to v17.7.2 2024-11-21 21:52:31 +00:00
renovate[bot] c8f1108a3c fix(deps): update dependency is-svg to v4.4.0 2024-11-21 21:52:07 +00:00
renovate[bot] 87600dc65b chore(deps): update webfreak001/deploy-nightly action to v3.2.0 2024-11-21 21:51:25 +00:00
renovate[bot] 8453255ed3 chore(deps): update node.js to v20.18.1 2024-11-21 21:51:18 +00:00
renovate[bot] e4f9affc82 fix(deps): update dependency i18next to v23.16.8 2024-11-21 21:51:15 +00:00
Elian Doran 79a906e695 Merge pull request #649 from TriliumNext/perfectra1n-patch-2
Also run Docker healthcheck checks on PRs
2024-11-21 23:11:22 +02:00
Elian Doran 2ffd0de736 feat(client): translate Electron context menu 2024-11-21 20:58:54 +02:00
Elian Doran ea8e98b8ef refactor(client): define context menu shortcuts in separate field 2024-11-21 20:33:47 +02:00
Jon Fuller 84b555de3c Also run Docker healthcheck checks on PRs 2024-11-21 09:39:13 -08:00
Elian Doran a037f95ff1 Merge pull request #625 from TriliumNext/renovate/migrate-config
chore(config): migrate renovate config
2024-11-21 19:07:00 +02:00
renovate[bot] 50d9f382a1 chore(config): migrate config renovate.json 2024-11-21 16:53:03 +00:00
Elian Doran ed90e0f7a9 client: Change tree star icon to link (closes #565) 2024-11-21 18:37:37 +02:00
Elian Doran 8c7cba4f33 server: Add a new settings launcher (closes #619) 2024-11-21 18:11:08 +02:00
Adorian Doran 128c4d45df Add a separator to the editor's context menu running under Electron 2024-11-21 17:21:57 +02:00
Adorian Doran 8658f9e6d3 Prevent the global menu's zoom container to be highlighted when being hovered 2024-11-21 17:11:32 +02:00
Adorian Doran 312c3ed6ad Add an extra separator for the zoom controls in the global menu 2024-11-21 16:27:48 +02:00
Adorian Doran bd2bcb7c97 Fix useless separator in the global menu when running under Electron 2024-11-21 16:21:24 +02:00
Elian Doran ae85bffd08 Merge pull request #618 from TriliumNext/feat/tweak-menus
Tweak menus
2024-11-20 19:12:43 +02:00
Elian Doran 84f63d5cf7 client: Remove icon color for close button 2024-11-20 19:12:20 +02:00
Elian Doran 0f75319677 Merge remote-tracking branch 'origin/develop' into develop
; Conflicts:
;	src/public/translations/de/translation.json
2024-11-20 19:10:04 +02:00
Adorian Doran 050eb08b1a Close #613 2024-11-20 19:01:20 +02:00
Elian Doran cdf8490651 Merge pull request #585 from TriliumNext/sirius_patch_2
Triggers full text search when Ctrl + Enter is pressed in note_autocomplete.
2024-11-20 18:54:20 +02:00
Adorian Doran 8f05b24694 Move back the close tab-related actions at the top of the menu 2024-11-20 14:39:19 +02:00
j13055 95f80efaeb fixed some errors 2024-11-20 13:24:14 +01:00
Adorian Doran 281b81ee60 Remove the shadow and the opening delay for the "Main Menu -> Advanced" submenu in mobile view 2024-11-20 14:18:17 +02:00
Adorian Doran 85b507938b Allow the submenu opening delay be set via a CSS variable 2024-11-20 14:16:10 +02:00
j13055 0c02a3bae9 tranlate not translated lines 2024-11-20 11:40:48 +01:00
Adorian Doran ac9f344130 Retrigger the opening animation when repositioning menus that are already open 2024-11-20 11:30:45 +02:00
Adorian Doran 2b432dd4f7 Delay the opening of submenus 2024-11-20 10:57:34 +02:00
Adorian Doran 3d27a60897 Add a fade animation when a menu is opening 2024-11-20 10:48:42 +02:00
Adorian Doran 3792761ffc Add missing icons 2024-11-20 10:13:52 +02:00
Adorian Doran 322d261df7 Tweak the icons of the launcher context menu items 2024-11-20 09:48:20 +02:00
Adorian Doran 1fb58f3e87 Reorganize the launcher context menu 2024-11-20 09:38:20 +02:00
SiriusXT c51adbc449 Add full text search in autocomplete 2024-11-20 14:22:39 +08:00
Adorian Doran 4179f9c155 Improve the sub-menu arrows for the tree context menu 2024-11-20 02:56:18 +02:00
Adorian Doran 35faba2c2f Fix the note revision list displaying a shadow 2024-11-20 02:30:29 +02:00
Adorian Doran dc893a438e Refine the icons from the tree menu 2024-11-20 02:10:29 +02:00
Adorian Doran a83e68fbb6 Change the "open externally" icons to avoid confusion with "open in a new tab" 2024-11-20 02:03:40 +02:00
Adorian Doran a677f4381d Add icon for "Open note in a new tab" 2024-11-20 01:45:36 +02:00
Adorian Doran 98dfeee188 Update the icons of the tree context menu 2024-11-20 01:42:42 +02:00
Adorian Doran dc7bb6d7eb Reorganize the tree context menu 2024-11-20 00:47:04 +02:00
Adorian Doran 855f936dbf Reorganize the attachment menu 2024-11-20 00:11:54 +02:00
Adorian Doran 48e7bab81b Reorganize the tab menu 2024-11-19 23:57:12 +02:00
Adorian Doran 694f896623 Highlight the "Delete note" menu item as a destructive action 2024-11-19 23:46:49 +02:00
Adorian Doran 5df287db23 Use a distinct icon color for destructive menu items 2024-11-19 23:44:57 +02:00
Elian Doran 8868a4eae1 Merge pull request #616 from TriliumNext/perfectra1n-patch-2
Update renovate.json
2024-11-19 23:40:38 +02:00
Elian Doran 0da1bee02c i18n: Fix typo 2024-11-19 23:39:43 +02:00
Elian Doran 779218849a i18n: Translate bulk action categories 2024-11-19 23:38:49 +02:00
Adorian Doran 4999809e3a Reorganize the note menu 2024-11-19 23:32:10 +02:00
Adorian Doran fd5412b715 Merge branch 'develop' of https://github.com/TriliumNext/Notes into feat/tweak-menus 2024-11-19 23:16:13 +02:00
Adorian Doran 4bcca01ff3 Add a drop shadow for menus 2024-11-19 22:55:44 +02:00
Adorian Doran 9b5526c99f Tweak the color of the menu separator 2024-11-19 22:40:52 +02:00
Adorian Doran 80ce2f5dbd Reorder the global menu items 2024-11-19 22:31:29 +02:00
Jon Fuller f629d48028 Update renovate.json
Remove the package rules for now, use the default schemas. Also include this repository in the config since I forgot that part 🤣
2024-11-19 12:08:17 -08:00
Elian Doran da95e15b01 Merge pull request #615 from TriliumNext/feat/tweak-backup-list
Improve the "Existing backups" section
2024-11-19 20:40:30 +02:00
Adorian Doran 70be4cd1c2 Update the Romanian translation 2024-11-19 20:34:54 +02:00
Adorian Doran 349b1c1d78 Improve appeareance 2024-11-19 20:28:47 +02:00
Adorian Doran e94942d665 Handle the situation where no backups are available 2024-11-19 20:22:10 +02:00
Elian Doran 4418ad986e Merge pull request #612 from meichthys/develop
Improve note revision wording and consistency
2024-11-19 20:22:07 +02:00
Elian Doran c962a94e29 Merge pull request #607 from TriliumNext/add-renovate
Add renovate GitHub Action and JSON config
2024-11-19 20:21:05 +02:00
Elian Doran 7f3d5f1e70 Merge pull request #609 from TriliumNext/siriusxt_patch_1
Add box icons to note menu
2024-11-19 18:38:34 +02:00
Adorian Doran 32a4a9c072 Sort the backup files by date & time 2024-11-19 18:07:42 +02:00
Adorian Doran 22b768e5e8 Add translation 2024-11-19 18:00:23 +02:00
Adorian Doran 970c3bd7ad Format date and time 2024-11-19 17:54:34 +02:00
Adorian Doran 75941de449 Replace the "Existing backups" bulleted list with a table 2024-11-19 17:42:03 +02:00
MeIchthys 5d6a42b987 Improve note revision wording and consistency
Removed plurals where not needed, capitalized revisions dialog title, made note revision setting titles consistent with note revision dialog.
2024-11-19 14:22:52 +00:00
SiriusXT d8e50a2ab8 add icons to the Attachments menu 2024-11-19 22:21:33 +08:00
Adorian Doran 5b050410cb Fix the action button tooltips for the "Existing tokens" table 2024-11-19 09:48:44 +02:00
SiriusXT f7b1c3fee3 Add box icons to note menu 2024-11-19 14:03:30 +08:00
SiriusXT 0ba883ce2f Add box icons to note menu 2024-11-19 12:08:41 +08:00
SiriusXT 2b0d68368c Add box icons to note menu 2024-11-19 11:08:20 +08:00
maphew cc98a16246 refactor: one authoritave source for allowed html tags 2024-11-18 19:52:31 -07:00
perf3ct 180993ead9 make it clear that renovate opened this PR, for easier filtering 2024-11-18 20:22:38 +00:00
perf3ct f4ed98ebda add renovate GitHub Action and json config 2024-11-18 20:16:39 +00:00
Elian Doran a4c0ae06db client: Fix duplicate ribbon tabs (fixes #582) 2024-11-18 20:52:35 +02:00
Elian Doran 7a8d7f074c client: Fix share boxicon not working correctly (fixes #603) 2024-11-18 19:12:31 +02:00
maphew 8574d2b143 Fix save) triggers 'not allowed to be changed'
"500 PUT options. Option 'allowedHtmlTags' is not allowed to be changed"

Note: the "allowed to change" list is set on startup. When a new option
is added Trilium must be restarted.
2024-11-17 20:38:27 -07:00
maphew 8db1205d57 Fix whitespace, \n delimiters
Bugs remaining:
- [reset to default] and page exit (e.g. save) triggers:
  "500 PUT options. Option 'allowedHtmlTags' is not allowed to be changed"
2024-11-17 20:30:28 -07:00
maphew f3b398570e make options UI properly read from translations file
Bugs remaining:
- extra whitespace under heading
- existing list is filled with `\n` instead of delimiters
- [reset to default] triggers
  "500 PUT options. Option 'allowedHtmlTags' is not allowed to be changed"
2024-11-17 20:16:09 -07:00
maphew 91b48095e4 add UI widget for allowed html tags option
todo: test with live app
2024-11-17 16:39:03 -07:00
maphew d08f09ae3b read allowedTags from options, fall back to static 2024-11-17 16:08:44 -07:00
maphew 9ef899eec5 extend html tags which are kept on import
https://github.com/TriliumNext/Notes/issues/567

this is the easy method, just add the tags to core, not attempting to
read the list from a user configurable location.
The addition is clearly marked in code.
2024-11-17 15:58:48 -07:00
Elian Doran b4072ec8a5 Merge pull request #600 from dwong33/dwong33-patch-1
Created server.json, introduced Traditional Chinese translation
2024-11-17 18:47:58 +02:00
Dwong33 a50e3935b5 Rename zh/server.json to tw/server.json
Better suit the zh-tw vs zh-cn
2024-11-17 04:18:46 -05:00
Dwong33 3034ca217d Created server.json, introduced Traditional Chinese translation 2024-11-17 04:15:08 -05:00
matt wilkie 5999dabd0b test fix: sqlite no such table entity_changes
claude:
I've updated the test file to:

Add the entity_changes table with all required fields
Add missing fields to the notes table (isDeleted)
Add missing fields when inserting the parent note
2024-11-16 21:39:08 -07:00
matt wilkie 9cd398d1ce test fix: setup CLS context
claude sez: "I see the issue. The tests are failing because we need to set up the CLS (Continuation Local Storage) context that Trilium uses for transactions. Let me check how this is handled in other tests:

I've updated the test file to:

I've updated the test file to:

Use an in-memory database for testing
Set up necessary database tables in beforeEach
Wrap all database operations in cls.init() and sql.transactional()
Handle async operations properly
2024-11-16 21:36:07 -07:00
matt wilkie e397011437 test fix: describe not defined
"$ npx tsx spec/services/import/single.spec.ts
/home/mhw/dev/tnext/spec/services/import/single.spec.ts:6
describe('HTML Import', () => {
^
ReferenceError: describe is not defined
    at <anonymous> (/home/mhw/dev/tnext/spec/services/import/single.spec.ts:6:1)

Node.js v18.17.1"
2024-11-16 21:26:26 -07:00
matt wilkie a1ff4bb132 test fix: do not access content directly
"TSError: ⨯ Unable to compile TypeScript:
spec/services/import/single.spec.ts:137:25 - error TS2339: Property 'content' does not exist on type 'BNote'."
2024-11-16 21:21:24 -07:00
SiriusXT 002839176e Triggers full text search when Ctrl + Enter is pressed 2024-11-17 12:18:05 +08:00
matt wilkie 14d7e3e1ce test: attempt fix test import error by using importSinglefile instead of importHtml 2024-11-16 21:17:50 -07:00
SiriusXT e091ef64dd Triggers full text search when Ctrl + Enter is pressed 2024-11-17 12:17:11 +08:00
SiriusXT 46823d28e8 Merge branch 'develop' into sirius_patch_2 2024-11-17 12:15:29 +08:00
SiriusXT 616d7117db Merge branch 'sirius_patch_2' of https://github.com/TriliumNext/Notes into sirius_patch_2 2024-11-17 12:14:55 +08:00
SiriusXT 4e10071649 Triggers full text search when Ctrl + Enter is pressed in autocomplete 2024-11-17 12:14:44 +08:00
maphew 3a7564f733 a missed .ts file 2024-11-16 09:45:13 -07:00
maphew 47c05b2c6d feat: prefer HTML title tag over filename during import
When importing HTML files, extract and use the title from the <title> tag
if available, falling back to the filename only when no title tag is found.

This improves handling of titles with special characters that can't be
represented in filenames.
2024-11-16 09:06:58 -07:00
Elian Doran 3ff75b14e9 Merge pull request #595 from hasecilu/i18n/Spanish
i18n: Update Spanish translations for stable release
2024-11-16 00:25:08 +02:00
hasecilu 82e7814569 i18n: Update Spanish translations for stable release 2024-11-15 15:22:07 -06:00
Elian Doran 66e8cc40eb i18n: Translate Romanian strings 2024-11-15 22:34:09 +02:00
Elian Doran 2260dcefe5 client,server: Enforce min value of max content width (closes #593) 2024-11-15 22:29:59 +02:00
Elian Doran 40c9ef69e7 Merge pull request #587 from TriliumNext/feature/editor-type-radios
Replace the editor type combo box with radio buttons
2024-11-15 21:01:10 +02:00
Elian Doran a8b87a1507 Merge pull request #576 from TriliumNext/siriusxt_patch
Add a text replacement feature to the find_widget
2024-11-15 20:51:27 +02:00
Elian Doran 1df1637257 Merge pull request #589 from TriliumNext/sirius_patch_3
Add more link protocol support
2024-11-15 20:43:09 +02:00
Adorian Doran 616cb87d4e client: Change the icon of the "Formatting" tab 2024-11-14 20:55:30 +02:00
SiriusXT 7f0d675ab8 Add more link protocol support 2024-11-14 14:04:10 +08:00
SiriusXT c907b288bd Add more link protocol support 2024-11-14 11:18:03 +08:00
SiriusXT d9ab5d71aa Add more link protocol support 2024-11-14 11:15:38 +08:00
Adorian Doran 8731b8a65b Fix translation 2024-11-13 23:55:30 +02:00
Adorian Doran de4f06d9be Update translations 2024-11-13 23:35:10 +02:00
Adorian Doran 9485067749 client: Replace the editor type combo box with radio buttons 2024-11-13 23:34:43 +02:00
j13055 cd35706147 added missing translations 2024-11-13 13:59:36 +01:00
j13055 3b94aee7b7 finished server translations 2024-11-13 12:39:50 +01:00
j13055 06e30674fe corrected setup translations 2024-11-13 12:31:51 +01:00
j13055 f7b1e87bc4 corrected login translations 2024-11-13 12:26:30 +01:00
j13055 2c252a9984 finished keyboard_actions translations 2024-11-13 12:25:11 +01:00
SiriusXT db79f231a0 Triggers full text search when Ctrl + Enter is pressed in note_autocomplete 2024-11-13 17:13:07 +08:00
Elian Doran 8c5d5e384f Merge remote-tracking branch 'origin/develop' into feature/improved_promoted_attributes
; Conflicts:
;	src/public/app/layouts/desktop_layout.js
2024-11-12 20:03:54 +02:00
Elian Doran 693bcfb587 client: Add find & replace button to fixed toolbar 2024-11-12 19:47:50 +02:00
Elian Doran 38d32813d2 client: Fix syntax highlight for shell scripts (closes #583) 2024-11-12 19:32:38 +02:00
SiriusXT a0c6d695b0 Fix find_widget bugs 2024-11-12 10:56:54 +08:00
SiriusXT d63baa1503 Merge branch 'develop' into siriusxt_patch 2024-11-12 08:59:53 +08:00
SiriusXT 497c24ee1e Fix the bug that code can't get the selected text 2024-11-11 23:13:26 +08:00
SiriusXT 8893e9d4d5 add replacement feature for code note 2024-11-11 22:57:24 +08:00
SiriusXT 2d9376a05c add a text replacement feature to the find_widget 2024-11-11 18:59:03 +08:00
SiriusXT ce40c74e83 Merge branch 'develop' into siriusxt_patch 2024-11-11 18:26:07 +08:00
SiriusXT 0aef04cea1 add a text replacement feature to the find_widget 2024-11-11 18:19:19 +08:00
SiriusXT 12b71961ae add a text replacement feature to the find_widget 2024-11-11 18:11:31 +08:00
Elian Doran 4032135505 Revert "client: Move ribbon at the bottom"
This reverts commit 9b4ae87ef875d83c8735743972663f82913c9ff3.
2024-10-31 23:44:32 +02:00
Elian Doran db0911cc28 client: Focus promoted cell when clicking label 2024-10-31 23:42:14 +02:00
Elian Doran ac61d0f3ea client: Move ribbon at the bottom 2024-10-31 23:42:14 +02:00
Elian Doran fcebb43410 client: Use single column layout for promoted attributes 2024-10-31 23:42:14 +02:00
Elian Doran 18b0907841 client: Move note title to scrolling container 2024-10-31 23:42:14 +02:00
Elian Doran 35da7908f8 client: Move promoted attributes to scrolling container 2024-10-31 23:42:14 +02:00
Elian Doran 7f338044b0 Merge pull request #484 from meichthys/develop
Move Description section to top of bug report
2024-10-14 09:39:56 +03:00
meichthys ea3f47b8fa Move Description section to top of bug report 2024-10-14 01:12:43 -04:00
533 changed files with 16855 additions and 63094 deletions
+6 -6
View File
@@ -3,6 +3,12 @@ description: Report a bug
title: "(Bug report) "
labels: "Type: Bug"
body:
- type: textarea
attributes:
label: Description
description: A clear and concise description of the bug and any additional information.
validations:
required: true
- type: input
attributes:
label: TriliumNext Version
@@ -38,12 +44,6 @@ body:
placeholder: "e.g. Windows 10 version 1909, macOS Catalina 10.15.7, or Ubuntu 20.04"
validations:
required: true
- type: textarea
attributes:
label: Description
description: A clear and concise description of the bug and any additional information.
validations:
required: true
- type: textarea
attributes:
label: Error logs
+86 -1
View File
@@ -9,6 +9,12 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
GHCR_REGISTRY: ghcr.io
DOCKERHUB_REGISTRY: docker.io
IMAGE_NAME: ${{ github.repository_owner }}/notes
TEST_TAG: ${{ github.repository_owner }}/notes:test
jobs:
build_docker:
name: Build Docker image
@@ -30,4 +36,83 @@ jobs:
with:
context: .
cache-from: type=gha
cache-to: type=gha,mode=max
cache-to: type=gha,mode=max
test_dev:
name: Test development
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@v4
- name: Set up node & dependencies
uses: actions/setup-node@v4
with:
node-version: 20
cache: "npm"
- run: npm ci
- name: Run the TypeScript build
run: npx tsc
test_docker:
name: Check Docker build
runs-on: ubuntu-latest
strategy:
matrix:
include:
- dockerfile: Dockerfile.alpine
- dockerfile: Dockerfile
steps:
- name: Checkout the repository
uses: actions/checkout@v4
- name: Set IMAGE_NAME to lowercase
run: echo "IMAGE_NAME=${IMAGE_NAME,,}" >> $GITHUB_ENV
- name: Set TEST_TAG to lowercase
run: echo "TEST_TAG=${TEST_TAG,,}" >> $GITHUB_ENV
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Set up node & dependencies
uses: actions/setup-node@v4
with:
node-version: 20
cache: "npm"
- run: npm ci
- name: Run the TypeScript build
run: npx tsc
- name: Create server-package.json
run: cat package.json | grep -v electron > server-package.json
- name: Build and export to Docker
uses: docker/build-push-action@v6
with:
context: .
file: ${{ matrix.dockerfile }}
load: true
tags: ${{ env.TEST_TAG }}
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Validate container run output
run: |
CONTAINER_ID=$(docker run -d --log-driver=journald --rm --name trilium_local ${{ env.TEST_TAG }})
echo "Container ID: $CONTAINER_ID"
- name: Wait for the healthchecks to pass
uses: stringbean/docker-healthcheck-action@v3
with:
container: trilium_local
wait-time: 50
require-status: running
require-healthy: true
# Print the entire log of the container thus far, regardless if the healthcheck failed or succeeded
- name: Print entire log
if: always()
run: |
journalctl -u docker CONTAINER_NAME=trilium_local --no-pager
+7 -7
View File
@@ -72,7 +72,7 @@ jobs:
echo "Container ID: $CONTAINER_ID"
- name: Wait for the healthchecks to pass
uses: stringbean/docker-healthcheck-action@v1
uses: stringbean/docker-healthcheck-action@v3
with:
container: trilium_local
wait-time: 50
@@ -120,7 +120,7 @@ jobs:
uses: actions/checkout@v4
- name: Docker meta
id: meta
uses: docker/metadata-action@v4
uses: docker/metadata-action@v5
with:
images: |
${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}
@@ -151,14 +151,14 @@ jobs:
run: cat package.json | grep -v electron > server-package.json
- name: Login to GHCR
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
registry: ${{ env.GHCR_REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to DockerHub
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
registry: ${{ env.DOCKERHUB_REGISTRY }}
username: ${{ secrets.DOCKERHUB_USERNAME }}
@@ -210,7 +210,7 @@ jobs:
- name: Docker meta
id: meta
uses: docker/metadata-action@v4
uses: docker/metadata-action@v5
with:
images: |
${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}
@@ -219,14 +219,14 @@ jobs:
latest=false
- name: Login to GHCR
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
registry: ${{ env.GHCR_REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to DockerHub
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
registry: ${{ env.DOCKERHUB_REGISTRY }}
username: ${{ secrets.DOCKERHUB_USERNAME }}
+3 -3
View File
@@ -75,7 +75,7 @@ jobs:
overwrite: true
- name: Deploy release
uses: WebFreak001/deploy-nightly@v3.1.0
uses: WebFreak001/deploy-nightly@v3.2.0
with:
upload_url: ${{ env.GITHUB_UPLOAD_URL }}
release_id: ${{ env.GITHUB_RELEASE_ID }}
@@ -83,7 +83,7 @@ jobs:
asset_name: TriliumNextNotes-${{ matrix.os.name }}-${{ matrix.arch }}-nightly.zip # name to upload the release as, use $$ to insert date (YYYYMMDD) and 6 letter commit hash
asset_content_type: application/zip # required by GitHub API
- name: Deploy installer release
uses: WebFreak001/deploy-nightly@v3.1.0
uses: WebFreak001/deploy-nightly@v3.2.0
with:
upload_url: ${{ env.GITHUB_UPLOAD_URL }}
release_id: ${{ env.GITHUB_RELEASE_ID }}
@@ -120,7 +120,7 @@ jobs:
overwrite: true
- name: Deploy release
uses: WebFreak001/deploy-nightly@v3.1.0
uses: WebFreak001/deploy-nightly@v3.2.0
with:
upload_url: ${{ env.GITHUB_UPLOAD_URL }}
release_id: ${{ env.GITHUB_RELEASE_ID }}
+2 -1
View File
@@ -1 +1,2 @@
save-prefix = ''
save-prefix = ''
legacy-peer-deps = true
+3
View File
@@ -21,4 +21,7 @@
"github-actions.workflows.pinned.workflows": [
".github/workflows/nightly.yml"
],
"[css]": {
"editor.defaultFormatter": "vscode.css-language-features"
},
}
-17
View File
@@ -1,17 +0,0 @@
{
"version": "2.0.0",
"tasks": [
{
"type": "npm",
"script": "errors",
"problemMatcher": "$tsc-watch",
"isBackground": true,
"presentation": {
"revealProblems": "never"
},
"runOptions": {
"runOn": "folderOpen"
}
}
]
}
+2 -2
View File
@@ -1,5 +1,5 @@
# Build stage
FROM node:20.15.1-bullseye-slim AS builder
FROM node:22.12.0-bullseye-slim AS builder
# Configure build dependencies in a single layer
RUN apt-get update && apt-get install -y --no-install-recommends \
@@ -35,7 +35,7 @@ RUN cp -R build/src/* src/. && \
rm src/services/asset_path.ts
# Runtime stage
FROM node:20.15.1-bullseye-slim
FROM node:22.12.0-bullseye-slim
# Install only runtime dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
+2 -2
View File
@@ -1,5 +1,5 @@
# Build stage
FROM node:20.15.1-alpine AS builder
FROM node:22.12.0-alpine AS builder
# Configure build dependencies
RUN apk add --no-cache --virtual .build-dependencies \
@@ -34,7 +34,7 @@ RUN cp -R build/src/* src/. && \
rm src/services/asset_path.ts
# Runtime stage
FROM node:20.15.1-alpine
FROM node:22.12.0-alpine
# Install runtime dependencies
RUN apk add --no-cache su-exec shadow
+2 -2
View File
@@ -16,7 +16,7 @@ See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for q
### Migrating from Trilium?
There are no special migration steps to migrate from a zadam/Trilium instance to a TriliumNext/Notes instance. Just upgrade your Trilium instance to the latest version and [install TriliumNext/Notes as usual](#-installation)
There are no special migration steps to migrate from a zadam/Trilium instance to a TriliumNext/Notes instance. Just upgrade your Trilium instance to the latest version and [install TriliumNext/Notes as usual](#-installation)
Versions up to and including [v0.90.4](https://github.com/TriliumNext/Notes/releases/tag/v0.90.4) are compatible with the latest zadam/trilium version of [v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later versions of TriliumNext have their sync versions incremented.
@@ -114,7 +114,7 @@ Head on over to our [Docs repo](https://github.com/TriliumNext/Docs)
* [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. TriliumNext 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://triliumnext.github.io/Docs/Wiki/Relation-map) and [link maps](https://triliumnext.github.io/Docs/Wiki/Link-map)
* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library without competition. Used in [relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map)
## 🤝 Support
+2 -1
View File
@@ -64,7 +64,8 @@ const copy = async () => {
"node_modules/katex/dist/katex.min.js",
"node_modules/katex/dist/contrib/mhchem.min.js",
"node_modules/katex/dist/contrib/auto-render.min.js",
"node_modules/@highlightjs/cdn-assets/highlight.min.js"
"node_modules/@highlightjs/cdn-assets/highlight.min.js",
"node_modules/@mind-elixir/node-menu/dist/node-menu.umd.cjs",
];
for (const file of nodeModulesFile) {
+1 -1
View File
@@ -44,7 +44,7 @@ cp -R "$script_dir/../build/src" "$DIR"
cp "$script_dir/../build/electron-main.js" "$DIR"
# run in subshell (so we return to original dir)
(cd $DIR && npm install --omit=dev)
(cd $DIR && npm install --omit=dev --legacy-peer-deps)
if [[ -d "$DIR"/node_modules ]]; then
# cleanup of useless files in dependencies
+45 -33
View File
@@ -17,17 +17,45 @@
#
# --------------------------------------------------------------------------------------------------
number_of_keys() {
[ -f "$1" ] && jq 'path(..) | select(length == 2) | .[1]' "$1" | wc -l || echo "0"
}
stats() {
# Print the number of existing strings on the JSON files for each locale
s=$(jq 'path(..) | select(length == 2) | .[1]' "${paths[0]}/en/server.json" | wc -l)
c=$(jq 'path(..) | select(length == 2) | .[1]' "${paths[1]}/en/translation.json" | wc -l)
echo "|locale |server strings |client strings |"
echo "|-------|---------------|---------------|"
echo "| en | ${s} | ${c} |"
s=$(number_of_keys "${paths[0]}/en/server.json")
c=$(number_of_keys "${paths[1]}/en/translation.json")
echo "| locale |server strings |client strings |"
echo "|--------|---------------|---------------|"
echo "| en | ${s} | ${c} |"
for locale in "${locales[@]}"; do
s=$(jq 'path(..) | select(length == 2) | .[1]' "${paths[0]}/${locale}/server.json" | wc -l)
c=$(jq 'path(..) | select(length == 2) | .[1]' "${paths[1]}/${locale}/translation.json" | wc -l)
echo "| ${locale} | ${s} | ${c} |"
s=$(number_of_keys "${paths[0]}/${locale}/server.json")
c=$(number_of_keys "${paths[1]}/${locale}/translation.json")
n1=$(((8 - ${#locale}) / 2))
n2=$((n1 == 1 ? n1 + 1 : n1))
echo "|$(printf "%${n1}s")${locale}$(printf "%${n2}s")| ${s} | ${c} |"
done
}
update_1() {
# Update PO files from English and localized JSON files as source
# NOTE: if you want a new language you need to first create the JSON files
# on their corresponding place with `{}` as content to avoid error on `json2po`
local locales=("$@")
for path in "${paths[@]}"; do
for locale in "${locales[@]}"; do
json2po -t "${path}/en" "${path}/${locale}" "${path}/po-${locale}"
done
done
}
update_2() {
# Recover translation from PO files to localized JSON files
local locales=("$@")
for path in "${paths[@]}"; do
for locale in "${locales[@]}"; do
po2json -t "${path}/en" "${path}/po-${locale}" "${path}/${locale}"
done
done
}
@@ -35,11 +63,11 @@ help() {
echo -e "\nDescription:"
echo -e "\tCreate PO files to make easier the labor of translation"
echo -e "\nUsage:"
echo -e "\t./translation.sh [--stats] [--update <OPT_LOCALE>] [--update2 <OPT_LOCALE>]"
echo -e "\t./translation.sh [--stats] [--update1 <OPT_LOCALE>] [--update2 <OPT_LOCALE>]"
echo -e "\nFlags:"
echo -e " --clear\n\tClear all po-* directories"
echo -e " --stats\n\tPrint the number of existing strings on the JSON files for each locale"
echo -e " --update <LOCALE>\n\tUpdate PO files from English and localized JSON files as source"
echo -e " --update1 <LOCALE>\n\tUpdate PO files from English and localized JSON files as source"
echo -e " --update2 <LOCALE>\n\tRecover translation from PO files to localized JSON files"
}
@@ -51,7 +79,7 @@ file_path="$(
pwd -P
)"
paths=("${file_path}/../translations/" "${file_path}/../src/public/translations/")
locales=(cn es fr ro)
locales=(cn de es fr pt_br ro tw)
if [ $# -eq 1 ]; then
if [ "$1" == "--clear" ]; then
@@ -62,34 +90,18 @@ if [ $# -eq 1 ]; then
done
elif [ "$1" == "--stats" ]; then
stats
elif [ "$1" == "--update" ]; then
# Update PO files from English and localized JSON files as source
for path in "${paths[@]}"; do
for locale in "${locales[@]}"; do
json2po -t "${path}/en" "${path}/${locale}" "${path}/po-${locale}"
done
done
elif [ "$1" == "--update1" ]; then
update_1 "${locales[@]}"
elif [ "$1" == "--update2" ]; then
# Recover translation from PO files to localized JSON files
for path in "${paths[@]}"; do
for locale in "${locales[@]}"; do
po2json -t "${path}/en" "${path}/po-${locale}" "${path}/${locale}"
done
done
update_2 "${locales[@]}"
else
help
fi
elif [ $# -eq 2 ]; then
if [ "$1" == "--update" ]; then
locale="$2"
for path in "${paths[@]}"; do
json2po -t "${path}/en" "${path}/${locale}" "${path}/po-${locale}"
done
if [ "$1" == "--update1" ]; then
update_1 "$2"
elif [ "$1" == "--update2" ]; then
locale="$2"
for path in "${paths[@]}"; do
po2json -t "${path}/en" "${path}/po-${locale}" "${path}/${locale}"
done
update_2 "$2"
else
help
fi
+18
View File
@@ -0,0 +1,18 @@
import chokidar from "chokidar";
import fs from "fs";
import path from "path";
const emptyCallback = () => {};
function onFileChanged(sourceFile: string) {
const destFile = path.join("dist", sourceFile);
console.log(`${sourceFile} -> ${destFile}`);
fs.copyFile(sourceFile, destFile, emptyCallback);
}
const sourceDir = "src/public";
chokidar
.watch(sourceDir)
.on("change", onFileChanged);
console.log(`Watching for changes to ${sourceDir}...`);
BIN
View File
Binary file not shown.
+3 -1
View File
@@ -13,7 +13,9 @@ services:
ports:
# By default, Trilium will be available at http://localhost:8080
# It will also be accessible at http://<host-ip>:8080
# You might want to limit this with something like Docker Networks, reverse proxies, or firewall rules, such as UFW
# You might want to limit this with something like Docker Networks, reverse proxies, or firewall rules,
# however be aware that using UFW is known to not work with default Docker installations, see:
# https://docs.docker.com/engine/network/packet-filtering-firewalls/#docker-and-ufw
- '8080:8080'
volumes:
# Unless TRILIUM_DATA_DIR is set, the data will be stored in the "trilium-data" directory in the home directory.
+1
View File
@@ -0,0 +1 @@
TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false.
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
+1
View File
@@ -0,0 +1 @@
window.hierarchyData = "eJylk91uwyAMhd+Fa7cjdGl+XmWqIiCugkqgAmfSVOXd52y72GUibpA4Fuezjf0SKUbKov9QNxAJ7x4tuRhYeQm1HUHPKHox4l0vngSIhwuj6CvVgliS55D1OmfMbwat1QMGcuQwD9pkStrS8E//Ov/5nCeaPZv9vGUPyuNpMz79ChyYnB8TBs6skVB1ElTXwuXawPtVQn2R0HUKKlm3UFWqvq0gGlmUr9FE2k4zCzuzZCYnVgxNziyE+5nciDKm8dHsx3HPC3FJBzvtB/IHlwGR9NMNFB8Y9lN5pMqoIR75RJ7eMlx8bnt6YFJ5VcqICS1fhmN1bstZiv10+UCp6/oNzPWfkA=="
+50
View File
@@ -0,0 +1,50 @@
:root {
--light-hl-0: #795E26;
--dark-hl-0: #DCDCAA;
--light-hl-1: #000000;
--dark-hl-1: #D4D4D4;
--light-hl-2: #0000FF;
--dark-hl-2: #569CD6;
--light-hl-3: #A31515;
--dark-hl-3: #CE9178;
--light-code-background: #FFFFFF;
--dark-code-background: #1E1E1E;
}
@media (prefers-color-scheme: light) { :root {
--hl-0: var(--light-hl-0);
--hl-1: var(--light-hl-1);
--hl-2: var(--light-hl-2);
--hl-3: var(--light-hl-3);
--code-background: var(--light-code-background);
} }
@media (prefers-color-scheme: dark) { :root {
--hl-0: var(--dark-hl-0);
--hl-1: var(--dark-hl-1);
--hl-2: var(--dark-hl-2);
--hl-3: var(--dark-hl-3);
--code-background: var(--dark-code-background);
} }
:root[data-theme='light'] {
--hl-0: var(--light-hl-0);
--hl-1: var(--light-hl-1);
--hl-2: var(--light-hl-2);
--hl-3: var(--light-hl-3);
--code-background: var(--light-code-background);
}
:root[data-theme='dark'] {
--hl-0: var(--dark-hl-0);
--hl-1: var(--dark-hl-1);
--hl-2: var(--dark-hl-2);
--hl-3: var(--dark-hl-3);
--code-background: var(--dark-code-background);
}
.hl-0 { color: var(--hl-0); }
.hl-1 { color: var(--hl-1); }
.hl-2 { color: var(--hl-2); }
.hl-3 { color: var(--hl-3); }
pre, code { background: var(--code-background); }
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
window.navigationData = "eJytlltLwzAYhv9Lr8XDxNPuJu5OnOhARCSkaaTBrqnJt6mI/9006yHdIf0qYVej7/vkSZZ+7OUnAv4F0TiKOWP0iOcgQHAdHUQsFVmieB6NX5oQjTUoyoDYNLHpb5MtKKTm8UImy4zrI+epYZGdrcMUFpmpvos8icaj3esl/I0uM2hXYBnVGrtC1e6udDK6/H39PWj3TQEoSxem07sRJxtU3+WipZWIl8BRzutocOUKizOOMxn3y5apsJ6WiFRUNGcpQtLmAmuumThRDrQQBOS7WazX1gmHVXbBOO9cYi5smQpraok4RVmAkIhTXefCalZMnKjizDQJ7kidcFhlF4z1XgmNOuI6Gdq4oqJ0lfzUvaZlCCU5acb8g/xssSIHrt4o20PutDbWOTt3ZCf1SB5Ib0o++LWZo0O4Vd6LtDNvELRu+LDTci7Ny7E0BN1p+fB3ctgBV3kfcmZf/CHQpuHDPtiXc6hvp+XHr9+kYfCmg7rJ8+/CGW9gvvXc4rKwQT6+ujg5G238glhwne1jTm5vZ0/TG3I3m0/J/Pl++tjSV1QJGu8bHNvN7lqnIzOR3JmkuVoJtvc/ekyZucQJ0UyJAoi51dsDrEaQ7fD/pm27RR9658i1+3N295F5fM3TYIIla7+R+fwBbqmgig=="
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
@@ -1,360 +0,0 @@
<!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() {
if (!this[this.constructor.primaryKeyName]) {
this[this.constructor.primaryKeyName] = utils.newEntityId();
}
}
/** @protected */
getUtcDateChanged() {
return this.utcDateModified || this.utcDateCreated;
}
/**
* @protected
* @returns {Becca}
*/
get becca() {
if (!becca) {
becca = require('../becca');
}
return becca;
}
/** @protected */
putEntityChange(isDeleted) {
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
* @returns {string}
*/
generateHash(isDeleted) {
let contentToHash = "";
for (const propertyName of this.constructor.hashedProperties) {
contentToHash += `|${this[propertyName]}`;
}
if (isDeleted) {
contentToHash += "|deleted";
}
return utils.hash(contentToHash).substr(0, 10);
}
/** @protected */
getPojoToSave() {
return this.getPojo();
}
/**
* @protected
* @abstract
*/
getPojo() {
throw new Error(`Unimplemented getPojo() for entity '${this.constructor.name}'`)
}
/**
* 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];
this.beforeSaving(opts);
const pojo = this.getPojoToSave();
sql.transactional(() => {
sql.upsert(entityName, primaryKeyName, pojo);
if (entityName === 'recent_notes') {
return;
}
this.putEntityChange(!!this.isDeleted);
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 the 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><h3>Global</h3><ul><li><a href="global.html#api">api</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>
@@ -1,294 +0,0 @@
<!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"]; }
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;
/**
* either noteId or revisionId to which this attachment belongs
* @type {string}
*/
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;
/**
* optionally added to the entity
* @type {int}
*/
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 || !this.attachmentId) {
this.isDecrypted = true;
return;
}
if (!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><h3>Global</h3><ul><li><a href="global.html#api">api</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>
@@ -1,293 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Source: becca/entities/battribute.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/battribute.js</h1>
<section>
<article>
<pre class="prettyprint source linenums"><code>"use strict";
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");
/**
* There are currently only two types of attributes, labels or relations.
* @typedef {"label" | "relation"} AttributeType
*/
/**
* 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 BAttribute extends AbstractBeccaEntity {
static get entityName() { return "attributes"; }
static get primaryKeyName() { return "attributeId"; }
static get hashedProperties() { return ["attributeId", "noteId", "type", "name", "value", "isInheritable"]; }
constructor(row) {
super();
if (!row) {
return;
}
this.updateFromRow(row);
this.init();
}
updateFromRow(row) {
this.update([
row.attributeId,
row.noteId,
row.type,
row.name,
row.value,
row.isInheritable,
row.position,
row.utcDateModified
]);
}
update([attributeId, noteId, type, name, value, isInheritable, position, utcDateModified]) {
/** @type {string} */
this.attributeId = attributeId;
/** @type {string} */
this.noteId = noteId;
/** @type {AttributeType} */
this.type = type;
/** @type {string} */
this.name = name;
/** @type {int} */
this.position = position;
/** @type {string} */
this.value = value || "";
/** @type {boolean} */
this.isInheritable = !!isInheritable;
/** @type {string} */
this.utcDateModified = utcDateModified;
return this;
}
init() {
if (this.attributeId) {
this.becca.attributes[this.attributeId] = this;
}
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 BNote({noteId: this.noteId}));
}
this.becca.notes[this.noteId].ownedAttributes.push(this);
const key = `${this.type}-${this.name.toLowerCase()}`;
this.becca.attributeIndex[key] = this.becca.attributeIndex[key] || [];
this.becca.attributeIndex[key].push(this);
const targetNote = this.targetNote;
if (targetNote) {
targetNote.targetRelations.push(this);
}
}
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; ['template', 'inherit'].includes(this.name));
}
get targetNoteId() { // alias
return this.type === 'relation' ? this.value : undefined;
}
isAutoLink() {
return this.type === 'relation' &amp;&amp; ['internalLink', 'imageLink', 'relationMapLink', 'includeNoteLink'].includes(this.name);
}
get note() {
return this.becca.notes[this.noteId];
}
get targetNote() {
if (this.type === 'relation') {
return this.becca.notes[this.value];
}
}
/**
* @returns {BNote|null}
*/
getNote() {
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 {BNote|null}
*/
getTargetNote() {
if (this.type !== 'relation') {
throw new Error(`Attribute '${this.attributeId}' is not a relation.`);
}
if (!this.value) {
return null;
}
return this.becca.getNote(this.value);
}
/**
* @returns {boolean}
*/
isDefinition() {
return this.type === 'label' &amp;&amp; (this.name.startsWith('label:') || this.name.startsWith('relation:'));
}
getDefinition() {
return promotedAttributeDefinitionParser.parse(this.value);
}
getDefinedName() {
if (this.type === 'label' &amp;&amp; this.name.startsWith('label:')) {
return this.name.substr(6);
} else if (this.type === 'label' &amp;&amp; this.name.startsWith('relation:')) {
return this.name.substr(9);
} else {
return this.name;
}
}
get isDeleted() {
return !(this.attributeId in this.becca.attributes);
}
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 || 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) {
this.isInheritable = false;
}
this.utcDateModified = dateUtils.utcNowDateTime();
super.beforeSaving();
this.becca.attributes[this.attributeId] = this;
}
getPojo() {
return {
attributeId: this.attributeId,
noteId: this.noteId,
type: this.type,
name: this.name,
position: this.position,
value: this.value,
isInheritable: this.isInheritable,
utcDateModified: this.utcDateModified,
isDeleted: false
};
}
createClone(type, name, value, isInheritable) {
return new BAttribute({
noteId: this.noteId,
type: type,
name: name,
value: value,
position: this.position,
isInheritable: isInheritable,
utcDateModified: this.utcDateModified
});
}
}
module.exports = BAttribute;
</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><h3>Global</h3><ul><li><a href="global.html#api">api</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>
@@ -1,81 +0,0 @@
<!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><h3>Global</h3><ul><li><a href="global.html#api">api</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>
@@ -1,333 +0,0 @@
<!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><h3>Global</h3><ul><li><a href="global.html#api">api</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>
@@ -1,129 +0,0 @@
<!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><h3>Global</h3><ul><li><a href="global.html#api">api</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
@@ -1,101 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Source: becca/entities/boption.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/boption.js</h1>
<section>
<article>
<pre class="prettyprint source linenums"><code>"use strict";
const dateUtils = require('../../services/date_utils');
const AbstractBeccaEntity = require("./abstract_becca_entity");
/**
* Option represents a name-value pair, either directly configurable by the user or some system property.
*
* @extends AbstractBeccaEntity
*/
class BOption extends AbstractBeccaEntity {
static get entityName() { return "options"; }
static get primaryKeyName() { return "name"; }
static get hashedProperties() { return ["name", "value"]; }
constructor(row) {
super();
this.updateFromRow(row);
this.becca.options[this.name] = this;
}
updateFromRow(row) {
/** @type {string} */
this.name = row.name;
/** @type {string} */
this.value = row.value;
/** @type {boolean} */
this.isSynced = !!row.isSynced;
/** @type {string} */
this.utcDateModified = row.utcDateModified;
}
beforeSaving() {
super.beforeSaving();
this.utcDateModified = dateUtils.utcNowDateTime();
}
getPojo() {
return {
name: this.name,
value: this.value,
isSynced: this.isSynced,
utcDateModified: this.utcDateModified
}
}
}
module.exports = BOption;
</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><h3>Global</h3><ul><li><a href="global.html#api">api</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>
@@ -1,86 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Source: becca/entities/brecent_note.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/brecent_note.js</h1>
<section>
<article>
<pre class="prettyprint source linenums"><code>"use strict";
const dateUtils = require('../../services/date_utils');
const AbstractBeccaEntity = require("./abstract_becca_entity");
/**
* RecentNote represents recently visited note.
*
* @extends AbstractBeccaEntity
*/
class BRecentNote extends AbstractBeccaEntity {
static get entityName() { return "recent_notes"; }
static get primaryKeyName() { return "noteId"; }
constructor(row) {
super();
/** @type {string} */
this.noteId = row.noteId;
/** @type {string} */
this.notePath = row.notePath;
/** @type {string} */
this.utcDateCreated = row.utcDateCreated || dateUtils.utcNowDateTime();
}
getPojo() {
return {
noteId: this.noteId,
notePath: this.notePath,
utcDateCreated: this.utcDateCreated
}
}
}
module.exports = BRecentNote;
</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><h3>Global</h3><ul><li><a href="global.html#api">api</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>
@@ -1,259 +0,0 @@
<!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();
}
/**
* @returns {*}
* @throws Error in case of invalid JSON */
getJsonContent() {
const content = this.getContent();
if (!content || !content.trim()) {
return null;
}
return JSON.parse(content);
}
/** @returns {*|null} valid object or null if the content cannot be parsed as JSON */
getJsonContentSafely() {
try {
return this.getJsonContent();
}
catch (e) {
return null;
}
}
/**
* @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));
}
/** @returns {BAttachment|null} */
getAttachmentById(attachmentId, opts = {}) {
opts.includeContentLength = !!opts.includeContentLength;
const query = opts.includeContentLength
? `SELECT attachments.*, LENGTH(blobs.content) AS contentLength
FROM attachments
JOIN blobs USING (blobId)
WHERE ownerId = ? AND attachmentId = ? AND isDeleted = 0`
: `SELECT * FROM attachments WHERE ownerId = ? AND attachmentId = ? AND isDeleted = 0`;
return sql.getRows(query, [this.revisionId, attachmentId])
.map(row => new BAttachment(row))[0];
}
/** @returns {BAttachment[]} */
getAttachmentsByRole(role) {
return sql.getRows(`
SELECT attachments.*
FROM attachments
WHERE ownerId = ?
AND role = ?
AND isDeleted = 0
ORDER BY position`, [this.revisionId, role])
.map(row => new BAttachment(row));
}
/** @returns {BAttachment} */
getAttachmentByTitle(title) {
// cannot use SQL to filter by title since it can be encrypted
return this.getAttachments().filter(attachment => attachment.title === title)[0];
}
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><h3>Global</h3><ul><li><a href="global.html#api">api</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 one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.
File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.
File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.
File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.
File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.
-657
View File
@@ -1,657 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Global</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">Global</h1>
<section>
<header>
<h2></h2>
</header>
<article>
<div class="container-overview">
<dl class="details">
</dl>
</div>
<h3 class="subsection-title">Members</h3>
<h4 class="name" id="api"><span class="type-signature"></span>api<span class="type-signature"> :<a href="BackendScriptApi.html">BackendScriptApi</a></span></h4>
<div class="description">
An instance of the frontend api available globally.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type"><a href="BackendScriptApi.html">BackendScriptApi</a></span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_backend_script_api.js.html">services/backend_script_api.js</a>, <a href="services_backend_script_api.js.html#line32">line 32</a>
</li></ul></dd>
</dl>
<h3 class="subsection-title">Type Definitions</h3>
<h4 class="name" id="AttributeType">AttributeType</h4>
<div class="description">
There are currently only two types of attributes, labels or relations.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">"label"</span>
|
<span class="param-type">"relation"</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="becca_entities_battribute.js.html">becca/entities/battribute.js</a>, <a href="becca_entities_battribute.js.html#line11">line 11</a>
</li></ul></dd>
</dl>
<h4 class="name" id="NotePathRecord">NotePathRecord</h4>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">Object</span>
</li>
</ul>
<h5 class="subsection-title">Properties:</h5>
<table class="props">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>isArchived</code></td>
<td class="type">
<span class="param-type">boolean</span>
</td>
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>isInHoistedSubTree</code></td>
<td class="type">
<span class="param-type">boolean</span>
</td>
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>notePath</code></td>
<td class="type">
<span class="param-type">Array.&lt;string></span>
</td>
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>isHidden</code></td>
<td class="type">
<span class="param-type">boolean</span>
</td>
<td class="description last"></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="becca_entities_bnote.js.html">becca/entities/bnote.js</a>, <a href="becca_entities_bnote.js.html#line27">line 27</a>
</li></ul></dd>
</dl>
<h4 class="name" id="NoteType">NoteType</h4>
<div class="description">
There are many different Note types, some of which are entirely opaque to the
end user. Those types should be used only for checking against, they are
not for direct use.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">"file"</span>
|
<span class="param-type">"image"</span>
|
<span class="param-type">"search"</span>
|
<span class="param-type">"noteMap"</span>
|
<span class="param-type">"launcher"</span>
|
<span class="param-type">"doc"</span>
|
<span class="param-type">"contentWidget"</span>
|
<span class="param-type">"text"</span>
|
<span class="param-type">"relationMap"</span>
|
<span class="param-type">"render"</span>
|
<span class="param-type">"canvas"</span>
|
<span class="param-type">"mermaid"</span>
|
<span class="param-type">"book"</span>
|
<span class="param-type">"webView"</span>
|
<span class="param-type">"code"</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="becca_entities_bnote.js.html">becca/entities/bnote.js</a>, <a href="becca_entities_bnote.js.html#line20">line 20</a>
</li></ul></dd>
</dl>
<h4 class="name" id="int">int</h4>
<div class="description">
A whole number
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">number</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_backend_script_api.js.html">services/backend_script_api.js</a>, <a href="services_backend_script_api.js.html#line27">line 27</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="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><h3>Global</h3><ul><li><a href="global.html#api">api</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 one or more lines are too long
+85 -63
View File
@@ -1,65 +1,87 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Home</title>
<!DOCTYPE html><html class="default" lang="en" data-base="."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>trilium</title><meta name="description" content="Documentation for trilium"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="assets/style.css"/><link rel="stylesheet" href="assets/highlight.css"/><script defer src="assets/main.js"></script><script async src="assets/icons.js" id="tsd-icons-script"></script><script async src="assets/search.js" id="tsd-search-script"></script><script async src="assets/navigation.js" id="tsd-nav-script"></script><script async src="assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search"><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="index.html" class="title">trilium</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><h1>trilium</h1></div><div class="tsd-panel tsd-typography"><a id="triliumnext-notes" class="tsd-anchor"></a><h1 class="tsd-anchor-link">TriliumNext Notes<a href="#triliumnext-notes" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h1><p><img src="https://img.shields.io/docker/pulls/triliumnext/notes" alt="Docker Pulls"> <img src="https://img.shields.io/github/downloads/triliumnext/notes/total" alt="GitHub Downloads (all assets, all releases)"></p>
<p><a href="media/README.md">English</a> | <a href="media/README-ZH_CN.md">Chinese</a> | <a href="media/README.ru.md">Russian</a> | <a href="media/README.ja.md">Japanese</a> | <a href="media/README.it.md">Italian</a> | <a href="media/README.es.md">Spanish</a></p>
<p>TriliumNext Notes is an open-source, cross-platform hierarchical note taking application with focus on building large personal knowledge bases.</p>
<p>See <a href="https://triliumnext.github.io/Docs/Wiki/screenshot-tour" target="_blank" class="external">screenshots</a> for quick overview:</p>
<p><a href="https://triliumnext.github.io/Docs/Wiki/screenshot-tour"><img src="https://github.com/TriliumNext/Docs/blob/main/Wiki/images/screenshot.png?raw=true" alt="Trilium Screenshot" width="1000"></a></p>
<a id="⚠️-why-triliumnext" class="tsd-anchor"></a><h2 class="tsd-anchor-link">⚠️ Why TriliumNext?<a href="#⚠️-why-triliumnext" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p><a href="https://github.com/zadam/trilium/issues/4620" target="_blank" class="external">The original Trilium project is in maintenance mode</a></p>
<a id="migrating-from-trilium" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Migrating from Trilium?<a href="#migrating-from-trilium" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>There are no special migration steps to migrate from a zadam/Trilium instance to a TriliumNext/Notes instance. Just upgrade your Trilium instance to the latest version and <a href="#-installation">install TriliumNext/Notes as usual</a></p>
<p>Versions up to and including <a href="https://github.com/TriliumNext/Notes/releases/tag/v0.90.4" target="_blank" class="external">v0.90.4</a> are compatible with the latest zadam/trilium version of <a href="https://github.com/zadam/trilium/releases/tag/v0.63.7" target="_blank" class="external">v0.63.7</a>. Any later versions of TriliumNext have their sync versions incremented.</p>
<a id="💬-discuss-with-us" class="tsd-anchor"></a><h2 class="tsd-anchor-link">💬 Discuss with us<a href="#💬-discuss-with-us" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p>Feel free to join our official conversations. We would love to hear what features, suggestions, or issues you may have!</p>
<ul>
<li><a href="https://matrix.to/#/#triliumnext:matrix.org" target="_blank" class="external">Matrix</a> (For synchronous discussions)
<ul>
<li>The <code>General</code> Matrix room is also bridged to <a href="xmpp:discuss@trilium.thisgreat.party?join">XMPP</a></li>
</ul>
</li>
<li><a href="https://github.com/TriliumNext/Notes/discussions" target="_blank" class="external">Github Discussions</a> (For Asynchronous discussions)</li>
<li><a href="https://triliumnext.github.io/Docs/" target="_blank" class="external">Wiki</a> (For common how-to questions and user guides)</li>
</ul>
<a id="🎁-features" class="tsd-anchor"></a><h2 class="tsd-anchor-link">🎁 Features<a href="#🎁-features" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><ul>
<li>Notes can be arranged into arbitrarily deep tree. Single note can be placed into multiple places in the tree (see <a href="https://triliumnext.github.io/Docs/Wiki/cloning-notes" target="_blank" class="external">cloning</a>)</li>
<li>Rich WYSIWYG note editing including e.g. tables, images and <a href="https://triliumnext.github.io/Docs/Wiki/text-notes" target="_blank" class="external">math</a> with markdown <a href="https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat" target="_blank" class="external">autoformat</a></li>
<li>Support for editing <a href="https://triliumnext.github.io/Docs/Wiki/code-notes" target="_blank" class="external">notes with source code</a>, including syntax highlighting</li>
<li>Fast and easy <a href="https://triliumnext.github.io/Docs/Wiki/note-navigation" target="_blank" class="external">navigation between notes</a>, full text search and <a href="https://triliumnext.github.io/Docs/Wiki/note-hoisting" target="_blank" class="external">note hoisting</a></li>
<li>Seamless <a href="https://triliumnext.github.io/Docs/Wiki/note-revisions" target="_blank" class="external">note versioning</a></li>
<li>Note <a href="https://triliumnext.github.io/Docs/Wiki/attributes" target="_blank" class="external">attributes</a> can be used for note organization, querying and advanced <a href="https://triliumnext.github.io/Docs/Wiki/scripts" target="_blank" class="external">scripting</a></li>
<li><a href="https://triliumnext.github.io/Docs/Wiki/synchronization" target="_blank" class="external">Synchronization</a> with self-hosted sync server
<ul>
<li>there's a <a href="https://trilium.cc/paid-hosting" target="_blank" class="external">3rd party service for hosting synchronisation server</a></li>
</ul>
</li>
<li><a href="https://triliumnext.github.io/Docs/Wiki/sharing" target="_blank" class="external">Sharing</a> (publishing) notes to public internet</li>
<li>Strong <a href="https://triliumnext.github.io/Docs/Wiki/protected-notes" target="_blank" class="external">note encryption</a> with per-note granularity</li>
<li>Sketching diagrams with built-in Excalidraw (note type &quot;canvas&quot;)</li>
<li><a href="https://triliumnext.github.io/Docs/Wiki/relation-map" target="_blank" class="external">Relation maps</a> and <a href="https://triliumnext.github.io/Docs/Wiki/link-map" target="_blank" class="external">link maps</a> for visualizing notes and their relations</li>
<li><a href="https://triliumnext.github.io/Docs/Wiki/scripts" target="_blank" class="external">Scripting</a> - see <a href="https://triliumnext.github.io/Docs/Wiki/advanced-showcases" target="_blank" class="external">Advanced showcases</a></li>
<li><a href="https://triliumnext.github.io/Docs/Wiki/etapi" target="_blank" class="external">REST API</a> for automation</li>
<li>Scales well in both usability and performance upwards of 100 000 notes</li>
<li>Touch optimized <a href="https://triliumnext.github.io/Docs/Wiki/mobile-frontend" target="_blank" class="external">mobile frontend</a> for smartphones and tablets</li>
<li><a href="https://triliumnext.github.io/Docs/Wiki/themes" target="_blank" class="external">Night theme</a></li>
<li><a href="https://triliumnext.github.io/Docs/Wiki/evernote-import" target="_blank" class="external">Evernote</a> and <a href="https://triliumnext.github.io/Docs/Wiki/markdown" target="_blank" class="external">Markdown import &amp; export</a></li>
<li><a href="https://triliumnext.github.io/Docs/Wiki/web-clipper" target="_blank" class="external">Web Clipper</a> for easy saving of web content</li>
</ul>
<p>✨ Check out the following third-party resources/communities for more TriliumNext related goodies:</p>
<ul>
<li><a href="https://github.com/Nriver/awesome-trilium" target="_blank" class="external">awesome-trilium</a> for 3rd party themes, scripts, plugins and more.</li>
<li><a href="https://trilium.rocks/" target="_blank" class="external">TriliumRocks!</a> for tutorials, guides, and much more.</li>
</ul>
<a id="🏗-installation" class="tsd-anchor"></a><h2 class="tsd-anchor-link">🏗 Installation<a href="#🏗-installation" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><a id="desktop" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Desktop<a href="#desktop" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>To use TriliumNext on your desktop machine (Linux, MacOS, and Windows) you have a few options:</p>
<ul>
<li>Download the binary release for your platform from the <a href="https://github.com/TriliumNext/Notes/releases/latest" target="_blank" class="external">latest release page</a>, unzip the package and run the <code>trilium</code> executable.</li>
<li>Access TriliumNext via the web interface of a server installation (see below)
<ul>
<li>Currently only the latest versions of Chrome &amp; Firefox are supported (and tested).</li>
</ul>
</li>
<li>(Coming Soon) TriliumNext will also be provided as a Flatpak</li>
</ul>
<a id="macos" class="tsd-anchor"></a><h4 class="tsd-anchor-link">MacOS<a href="#macos" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h4><p>Currently when running TriliumNext/Notes on MacOS, you may get the following error:</p>
<blockquote>
<p>Apple could not verify &quot;TriliumNext Notes&quot; is free of malware and may harm your Mac or compromise your privacy.</p>
</blockquote>
<p>You will need to run the command on your shell to resolve the error (documented <a href="https://github.com/TriliumNext/Notes/issues/329#issuecomment-2287164137" target="_blank" class="external">here</a>):</p>
<pre><code class="bash"><span class="hl-0">xattr</span><span class="hl-1"> </span><span class="hl-2">-c</span><span class="hl-1"> </span><span class="hl-3">&quot;/path/to/Trilium Next.app&quot;</span>
</code><button type="button">Copy</button></pre>
<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>
<a id="mobile" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Mobile<a href="#mobile" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>To use TriliumNext on a mobile device:</p>
<ul>
<li>Use a mobile web browser to access the mobile interface of a server installation (see below)</li>
<li>Use of a mobile app is not yet supported (<a href="https://github.com/TriliumNext/Notes/issues/72" target="_blank" class="external">see here</a>) to track mobile improvements.</li>
</ul>
<a id="server" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Server<a href="#server" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>To install TriliumNext on your own server (including via Docker from <a href="https://hub.docker.com/r/triliumnext/notes" target="_blank" class="external">Dockerhub</a>) follow <a href="https://triliumnext.github.io/Docs/Wiki/server-installation" target="_blank" class="external">the server installation docs</a>.</p>
<a id="📝-documentation" class="tsd-anchor"></a><h2 class="tsd-anchor-link">📝 Documentation<a href="#📝-documentation" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p><a href="https://triliumnext.github.io/Docs" target="_blank" class="external">See wiki for complete list of documentation pages.</a></p>
<p>You can also read <a href="https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge" target="_blank" class="external">Patterns of personal knowledge base</a> to get some inspiration on how you might use TriliumNext.</p>
<a id="💻-contribute" class="tsd-anchor"></a><h2 class="tsd-anchor-link">💻 Contribute<a href="#💻-contribute" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><a id="code" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Code<a href="#code" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><pre><code class="shell"><span class="hl-0">git</span><span class="hl-1"> </span><span class="hl-3">clone</span><span class="hl-1"> </span><span class="hl-3">https://github.com/TriliumNext/Notes.git</span><br/><span class="hl-0">cd</span><span class="hl-1"> </span><span class="hl-3">Notes</span><br/><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-3">install</span><br/><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-3">run</span><span class="hl-1"> </span><span class="hl-3">start-server</span>
</code><button type="button">Copy</button></pre>
<body>
<div id="main">
<h1 class="page-title">Home</h1>
<h3> </h3>
</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><h3>Global</h3><ul><li><a href="global.html#api">api</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>
<a id="documentation" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Documentation<a href="#documentation" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>Head on over to our <a href="https://github.com/TriliumNext/Docs" target="_blank" class="external">Docs repo</a></p>
<a id="👏-shoutouts" class="tsd-anchor"></a><h2 class="tsd-anchor-link">👏 Shoutouts<a href="#👏-shoutouts" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><ul>
<li><a href="https://github.com/ckeditor/ckeditor5" target="_blank" class="external">CKEditor 5</a> - best WYSIWYG editor on the market, very interactive and listening team</li>
<li><a href="https://github.com/mar10/fancytree" target="_blank" class="external">FancyTree</a> - very feature rich tree library without real competition. TriliumNext Notes would not be the same without it.</li>
<li><a href="https://github.com/codemirror/CodeMirror" target="_blank" class="external">CodeMirror</a> - code editor with support for huge amount of languages</li>
<li><a href="https://github.com/jsplumb/jsplumb" target="_blank" class="external">jsPlumb</a> - visual connectivity library without competition. Used in <a href="https://triliumnext.github.io/Docs/Wiki/relation-map.html" target="_blank" class="external">relation maps</a> and <a href="https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map" target="_blank" class="external">link maps</a></li>
</ul>
<a id="🤝-support" class="tsd-anchor"></a><h2 class="tsd-anchor-link">🤝 Support<a href="#🤝-support" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p>You can support the original Trilium developer using GitHub Sponsors, <a href="https://paypal.me/za4am" target="_blank" class="external">PayPal</a> or Bitcoin (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2).
Support for the TriliumNext organization will be possible in the near future.</p>
<a id="🔑-license" class="tsd-anchor"></a><h2 class="tsd-anchor-link">🔑 License<a href="#🔑-license" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p>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.</p>
</div></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><a href="#triliumnext-notes"><span>Trilium<wbr/>Next <wbr/>Notes</span></a><ul><li><a href="#⚠️-why-triliumnext"><span>⚠️ <wbr/>Why <wbr/>Trilium<wbr/>Next?</span></a></li><li><ul><li><a href="#migrating-from-trilium"><span>Migrating from <wbr/>Trilium?</span></a></li></ul></li><li><a href="#💬-discuss-with-us"><span>💬 <wbr/>Discuss with us</span></a></li><li><a href="#🎁-features"><span>🎁 <wbr/>Features</span></a></li><li><a href="#🏗-installation"><span>🏗 <wbr/>Installation</span></a></li><li><ul><li><a href="#desktop"><span>Desktop</span></a></li><li><ul><li><a href="#macos"><span>MacOS</span></a></li></ul></li><li><a href="#mobile"><span>Mobile</span></a></li><li><a href="#server"><span>Server</span></a></li></ul></li><li><a href="#📝-documentation"><span>📝 <wbr/>Documentation</span></a></li><li><a href="#💻-contribute"><span>💻 <wbr/>Contribute</span></a></li><li><ul><li><a href="#code"><span>Code</span></a></li><li><a href="#documentation"><span>Documentation</span></a></li></ul></li><li><a href="#👏-shoutouts"><span>👏 <wbr/>Shoutouts</span></a></li><li><a href="#🤝-support"><span>🤝 <wbr/>Support</span></a></li><li><a href="#🔑-license"><span>🔑 <wbr/>License</span></a></li></ul></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="modules.html">trilium</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,11 @@
<!DOCTYPE html><html class="default" lang="en" data-base=".."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>OptionRow | trilium</title><meta name="description" content="Documentation for trilium"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search"><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">trilium</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../modules.html">trilium</a></li><li><a href="../modules/becca_entities_rows.html">becca/entities/rows</a></li><li><a href="becca_entities_rows.OptionRow.html">OptionRow</a></li></ul><h1>Interface OptionRow</h1></div><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>Database representation of an option.</p>
<p>Options are key-value pairs that are used to store information such as user preferences (for example
the current theme, sync server information), but also information about the state of the application).</p>
</div><div class="tsd-comment tsd-typography"></div></section><div class="tsd-signature"><span class="tsd-signature-keyword">interface</span> <span class="tsd-kind-interface">OptionRow</span> <span class="tsd-signature-symbol">{</span><br/>    <a class="tsd-kind-property" href="becca_entities_rows.OptionRow.html#issynced">isSynced</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="becca_entities_rows.OptionRow.html#name">name</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="becca_entities_rows.OptionRow.html#utcdatemodified">utcDateModified</a><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="becca_entities_rows.OptionRow.html#value">value</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/><span class="tsd-signature-symbol">}</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/TriliumNext/Notes/blob/84d173808523b9d88c8992ee8ef26b563610c591/src/becca/entities/rows.ts#L47">becca/entities/rows.ts:47</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" role="button" aria-expanded="false" tabIndex="0"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-chevronSmall"></use></svg> Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Properties</h3><div class="tsd-index-list"><a href="becca_entities_rows.OptionRow.html#issynced" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>is<wbr/>Synced</span></a>
<a href="becca_entities_rows.OptionRow.html#name" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>name</span></a>
<a href="becca_entities_rows.OptionRow.html#utcdatemodified" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>utc<wbr/>Date<wbr/>Modified?</span></a>
<a href="becca_entities_rows.OptionRow.html#value" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>value</span></a>
</div></section></div></details></section></section><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Properties"><h2><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg> Properties</h2></summary><section><section class="tsd-panel tsd-member"><a id="issynced" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>is<wbr/>Synced</span><a href="#issynced" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">isSynced</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><div class="tsd-comment tsd-typography"><p><code>true</code> if the value should be synced across multiple instances (e.g. locale) or <code>false</code> if it should be local-only (e.g. theme).</p>
</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/TriliumNext/Notes/blob/84d173808523b9d88c8992ee8ef26b563610c591/src/becca/entities/rows.ts#L53">becca/entities/rows.ts:53</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="name" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>name</span><a href="#name" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">name</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><div class="tsd-comment tsd-typography"><p>The name of the option.</p>
</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/TriliumNext/Notes/blob/84d173808523b9d88c8992ee8ef26b563610c591/src/becca/entities/rows.ts#L49">becca/entities/rows.ts:49</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="utcdatemodified" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag">Optional</code><span>utc<wbr/>Date<wbr/>Modified</span><a href="#utcdatemodified" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">utcDateModified</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">string</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/TriliumNext/Notes/blob/84d173808523b9d88c8992ee8ef26b563610c591/src/becca/entities/rows.ts#L54">becca/entities/rows.ts:54</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="value" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>value</span><a href="#value" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">value</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><div class="tsd-comment tsd-typography"><p>The value of the option.</p>
</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/TriliumNext/Notes/blob/84d173808523b9d88c8992ee8ef26b563610c591/src/becca/entities/rows.ts#L51">becca/entities/rows.ts:51</a></li></ul></aside></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Properties</summary><div><a href="#issynced" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>is<wbr/>Synced</span></a><a href="#name" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>name</span></a><a href="#utcdatemodified" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>utc<wbr/>Date<wbr/>Modified</span></a><a href="#value" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>value</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">trilium</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+97
View File
@@ -0,0 +1,97 @@
# TriliumNext Notes
[English](./README.md) | [Chinese](./README-ZH_CN.md) | [Russian](./README.ru.md) | [Japanese](./README.ja.md) | [Italian](./README.it.md) | [Spanish](./README.es.md)
TriliumNext Notes 是一个层次化的笔记应用程序,专注于建立大型个人知识库。请参阅[屏幕截图](https://triliumnext.github.io/Docs/Wiki/screenshot-tour)以快速了解:
<a href="https://triliumnext.github.io/Docs/Wiki/screenshot-tour"><img src="https://github.com/TriliumNext/Docs/blob/main/Wiki/images/screenshot.png?raw=true" alt="Trilium Screenshot" width="1000"></a>
## ⚠️ 为什么选择TriliumNext
[原始的Trilium项目目前处于维护模式](https://github.com/zadam/trilium/issues/4620)
## 🗭 与我们讨论
欢迎加入我们的官方讨论和社区。我们专注于Trilium的开发,乐于听取您对功能、建议或问题的意见!
- [Matrix](https://matrix.to/#/#triliumnext:matrix.org)(用于同步讨论)
- [Github Discussions](https://github.com/TriliumNext/Notes/discussions)(用于异步讨论)
- [Wiki](https://triliumnext.github.io/Docs/)(用于常见操作问题和用户指南)
上面链接的两个房间是镜像的,所以您可以在任意平台上使用XMPP或者Matrix来和我们交流。
### 非官方社区
[Trilium Rocks](https://discord.gg/aqdX9mXX4r)
## 🎁 特性
* 笔记可以排列成任意深的树。单个笔记可以放在树中的多个位置(请参阅[克隆](https://triliumnext.github.io/Docs/Wiki/cloning-notes)
* 丰富的所见即所得笔记编辑功能,包括带有 Markdown [自动格式化功能的](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat)表格,图像和[数学公式](https://triliumnext.github.io/Docs/Wiki/text-notes#math-support)
* 支持编辑[使用源代码的笔记](https://triliumnext.github.io/Docs/Wiki/code-notes),包括语法高亮显示
* 笔记之间快速[导航](https://triliumnext.github.io/Docs/Wiki/note-navigation),全文搜索和[提升笔记](https://triliumnext.github.io/Docs/Wiki/note-hoisting)
* 无缝[笔记版本控制](https://triliumnext.github.io/Docs/Wiki/note-revisions)
* 笔记[属性](https://triliumnext.github.io/Docs/Wiki/attributes)可用于笔记组织,查询和高级[脚本编写](https://triliumnext.github.io/Docs/Wiki/scripts)
* [同步](https://triliumnext.github.io/Docs/Wiki/synchronization)与自托管同步服务器
* 有一个[第三方提供的同步服务器托管服务](https://trilium.cc/paid-hosting)
* 公开地[分享](https://triliumnext.github.io/Docs/Wiki/sharing)(发布)笔记到互联网
* 具有按笔记粒度的强大的[笔记加密](https://triliumnext.github.io/Docs/Wiki/protected-notes)
* 使用自带的 Excalidraw 来绘制图表(笔记类型“画布”)
* [关系图](https://triliumnext.github.io/Docs/Wiki/relation-map)和[链接图](https://triliumnext.github.io/Docs/Wiki/link-map),用于可视化笔记及其关系
* [脚本](https://triliumnext.github.io/Docs/Wiki/scripts) - 请参阅[高级功能展示](https://triliumnext.github.io/Docs/Wiki/advanced-showcases)
* 可用于自动化的 [REST API](https://triliumnext.github.io/Docs/Wiki/etapi)
* 在拥有超过 10 万条笔记时仍能保持良好的可用性和性能
* 针对智能手机和平板电脑进行优化的[用于移动设备的前端](https://triliumnext.github.io/Docs/Wiki/mobile-frontend)
* [夜间主题](https://triliumnext.github.io/Docs/Wiki/themes)
* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) 和 [Markdown 导入导出](https://triliumnext.github.io/Docs/Wiki/markdown)功能
* 使用[网页剪藏](https://triliumnext.github.io/Docs/Wiki/web-clipper)轻松保存互联网上的内容
✨ 查看以下第三方资源,获取更多关于TriliumNext的好东西:
- [awesome-trilium](https://github.com/Nriver/awesome-trilium):提供第三方主题、脚本、插件等资源的列表。
- [TriliumRocks!](https://trilium.rocks/):提供教程、指南等更多内容。
## 🏗 构建
Trilium 可以用作桌面应用程序(Linux 和 Windows)或服务器(Linux)上托管的 Web 应用程序。虽然有 macOS 版本的桌面应用程序,但它[不受支持](https://triliumnext.github.io/Docs/Wiki/faq#mac-os-support)。
* 如果要在桌面上使用 Trilium,请从[最新版本](https://github.com/TriliumNext/Notes/releases/latest)下载适用于您平台的二进制版本,解压缩该软件包并运行`trilium`可执行文件。
* 如果要在服务器上安装 Trilium,请参考[此页面](https://triliumnext.github.io/Docs/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://triliumnext.github.io/Docs/)
* [Wiki 的中文翻译版本](https://github.com/baddate/trilium/wiki/)
您还可以阅读[个人知识库模式](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge),以获取有关如何使用 Trilium 的灵感。
## 💻 贡献
或者克隆本仓库到本地,并运行
```shell
npm install
npm run start-server
```
## 👏 致谢
* [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://triliumnext.github.io/Docs/Wiki/relation-map)和[链接图](https://triliumnext.github.io/Docs/Wiki/link-map)
## 🤝 捐赠
你可以通过 GitHub Sponsors[PayPal](https://paypal.me/za4am) 或者比特币 (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2) 来捐赠。
## 🔑 许可证
本程序是自由软件:你可以再发布本软件和/或修改本软件,只要你遵循 Free Software Foundation 发布的 GNU Affero General Public License 的第三版或者任何(由你选择)更晚的版本。
+106
View File
@@ -0,0 +1,106 @@
# TriliumNext Notes
[English](./README.md) | [Chinese](./README-ZH_CN.md) | [Russian](./README.ru.md) | [Japanese](./README.ja.md) | [Italian](./README.it.md) | [Spanish](./README.es.md)
TriliumNext Notes es una aplicación de toma de notas jerárquicas multi-plataforma y de código libre con un enfoque en la construcción de grandes bases de conocimiento personal.
Vea estas [capturas de pantalla](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) para un vistazo rápido:
<a href="https://triliumnext.github.io/Docs/Wiki/screenshot-tour"><img src="https://github.com/TriliumNext/Docs/blob/main/Wiki/images/screenshot.png?raw=true" alt="Trilium Screenshot" width="1000"></a>
## ⚠️ ¿Por qué usar TriliumNext?
[El proyecto Trilium original está en modo de mantenimiento](https://github.com/zadam/trilium/issues/4620)
### ¿Cómo migrar desde Trilium?
No hay pasos de migración especiales para migrar de una instancia de zadam/Trilium a una instancia de TriliumNext/Notes. Simplemente actualice su instancia de Trilium a la última versión e [instale TriliumNext/Notes como de costumbre](#-Instalación)
## 💬 Discuta con nosotros
Siéntase libre de unirse a nuestras conversaciones oficiales. ¡Nos encantaría escuchar de las características, sugerencias o problemas que pueda tener!
- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (Para discusiones síncronas)
- La sala `General` es replicada a [XMPP](xmpp:discuss@trilium.thisgreat.party?join)
- [Discusiones de GitHub](https://github.com/TriliumNext/Notes/discussions) (Para discusiones asíncronas)
- [Wiki](https://triliumnext.github.io/Docs/) (Para preguntas frecuentes y guías de usuario)
## 🎁 Características
- Las notas pueden ser acomodadas en un árbol de profundidad arbitraria. Una sola nota puede ser colocada en múltiples lugares del árbol (vea [clonar](https://triliumnext.github.io/Docs/Wiki/cloning-notes)
- Edición de notas WYSIWYG enriquecida que incluye, por ejemplo, tablas, imágenes y [matemáticas](https://triliumnext.github.io/Docs/Wiki/text-notes) con [autoformato](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) markdown
- Soporte para editar [notas con código fuente](https://triliumnext.github.io/Docs/Wiki/code-notes), incluyendo resaltado de sintaxis
- Rápida y sencilla [navegación entre notas](https://triliumnext.github.io/Docs/Wiki/note-navigation), búsqueda de texto completo y [elevación de notas](https://triliumnext.github.io/Docs/Wiki/note-hoisting)
- [Versionado de notas](https://triliumnext.github.io/Docs/Wiki/note-revisions) sutil
- Los [atributos](https://triliumnext.github.io/Docs/Wiki/attributes) de las notas pueden utilizarse para organización, realizar consultas y [scripts](https://triliumnext.github.io/Docs/Wiki/scripts) avanzados
- [Sincronización](https://triliumnext.github.io/Docs/Wiki/synchronization) con servidor de sincronización propio
- existe un [servicio de terceros para alojar el servidor de sincronización](https://trilium.cc/paid-hosting)
- [Compartir](https://triliumnext.github.io/Docs/Wiki/sharing) (publicar) notas al Internet público
- Fuerte [encriptación de notas](https://triliumnext.github.io/Docs/Wiki/protected-notes) con granularidad para cada nota
- Esbozo de diagramas con Excalidraw incorporado (tipo de nota «canvas»)
- [Mapas de relaciones](<https://triliumnext.github.io/Docs/Wiki/relation-map>) y [mapas de enlaces](https://triliumnext.github.io/Docs/Wiki/link-map) para visualizar las notas y sus relaciones
- [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - vea [casos de uso avanzados](https://triliumnext.github.io/Docs/Wiki/advanced-showcases)
- [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) para automatización
- Escala bien tanto en uso como en rendimiento a partir de 100,000 notas
- [Interfaz móvil](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) optimizada para teléfonos inteligentes y tabletas
- [Tema nocturno](https://triliumnext.github.io/Docs/Wiki/themes)
- Importación y exportación de [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) y [Markdown](https://triliumnext.github.io/Docs/Wiki/markdown)
- [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) para guardar fácilmente contenido web
✨ Consulte los/las siguientes recursos/comunidades de terceros para obtener más información sobre complementos para TriliumNext:
- [awesome-trilium](https://github.com/Nriver/awesome-trilium) para temas, scripts, plugins y más de terceros.
- [TriliumRocks!](https://trilium.rocks/) para tutoriales, guías y mucho más.
## 🏗 Instalación
### Escritorio
Para usar TriliumNext en su máquina de escritorio (Linux, MacOS y Windows) tiene algunas opciones:
- Descargue la versión binaria para su plataforma desde la [página de lanzamientos](https://github.com/TriliumNext/Notes/releases/latest), descomprima el paquete y ejecute el ejecutable `trilium`.
- Acceda a TriliumNext a través de la interfaz web de una instalación de servidor (ver más abajo)
- Actualmente solo las últimas versiones de Chrome y Firefox son compatibles (y están probadas).
- (Próximamente) TriliumNext también se proporcionará como un Flatpak
### Móvil
Para usar TriliumNext en un dispositivo móvil:
- Utilice un navegador web móvil para acceder a la interfaz móvil de una instalación de servidor (ver más abajo)
- El uso de una aplicación móvil aún no está soportado ([vea aquí](https://github.com/TriliumNext/Notes/issues/72)) para seguir las mejoras móviles.
### Servidor
Para instalar TriliumNext en su servidor (incluyendo vía Docker desde [Dockerhub](https://hub.docker.com/r/triliumnext/notes)) siga la [documentación de instalación de servidor](https://triliumnext.github.io/Docs/Wiki/server-installation).
## 📝 Documentación
[Vea la Wiki para la lista completa de páginas de documentación.](https://triliumnext.github.io/Docs)
También puede leer [Patrones para una base de conocimiento personal](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) para obtener un poco de inspiración de como podría usar TriliumNext.
## 💻 Contribuir
Clone localmente y ejecute
```shell
npm install
npm run start-server
```
## 👏 Reconocimientos
- [CKEditor 5](https://github.com/ckeditor/ckeditor5) - el mejor editor WYSIWYG en el mercado, equipo muy interactivo y atento
- [FancyTree](https://github.com/mar10/fancytree) - biblioteca de árbol muy rica en funciones sin competencia real. TriliumNext Notes no sería lo mismo sin esta.
- [CodeMirror](https://github.com/codemirror/CodeMirror) - editor de código con soporte para una gran cantidad de lenguajes
- [jsPlumb](https://github.com/jsplumb/jsplumb) - biblioteca de conectividad visual sin competencia. Usado en [mapas de relación](https://triliumnext.github.io/Docs/Wiki/Relation-map) y [mapas de enlace](https://triliumnext.github.io/Docs/Wiki/Link-map)
## 🤝 Soporte
Puede apoyar al desarrollador original de Trilium usando GitHub Sponsors, [PayPal](https://paypal.me/za4am) o Bitcoin (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2).
Apoyo para la organización TriliumNext será posible en un futuro próximo.
## 🔑 Licencia
Este programa es software libre: puede redistribuirlo y/o modificarlo bajo los términos de la Licencia Pública General de Affero GNU publicada por la Free Software Foundation, ya sea la versión 3 de la Licencia, o (a su elección) cualquier versión posterior.
+93
View File
@@ -0,0 +1,93 @@
# TriliumNext Notes
[English](./README.md) | [Chinese](./README-ZH_CN.md) | [Russian](./README.ru.md) | [Japanese](./README.ja.md) | [Italian](./README.it.md) | [Spanish](./README.es.md)
TriliumNext Notes è un'applicazione per appunti ad organizzazione gerarchica, studiata per la costruzione di archivi di conoscenza personali di grandi dimensioni.
Vedi [fotografie](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) per una panoramica veloce:
<a href="https://triliumnext.github.io/Docs/Wiki/screenshot-tour"><img src="https://github.com/TriliumNext/Docs/blob/main/Wiki/images/screenshot.png?raw=true" alt="Trilium Screenshot" width="1000"></a>
## ⚠️ Perchè TriliumNext?
[Il progetto originale Trilium è in modalità di manutenzione](https://github.com/zadam/trilium/issues/4620)
## 🗭 Discuti con noi
Sentiti libero di unirti alle nostre discussioni ufficiali e alla nostra comunità. Siamo concentrati sullo sviluppo di Trilium e ci piacerebbe sapere quali funzioni, suggerimenti o eventuali problemi hai!
- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (Per discussioni sincrone)
- [Discussioni Github](https://github.com/TriliumNext/Notes/discussions) (Per discussioni asincrone)
- [Wiki](https://triliumnext.github.io/Docs/) (Per le domande più comuni e le guide per l'utente)
Le due stanze linkate sopra sono connesse e contengono gli stessi messaggi, quindi puoi usare XMPP o Matrix da qualsiasi client tu preferisca, praticamente su qualsiasi piattaforma!
### Comunità non ufficiali
[Trilium Rocks](https://discord.gg/aqdX9mXX4r)
## 🎁 Funzionalità
* Gli appunti possono essere organizzati in un albero di profondità arbitraria. Un singolo appunto può essere collocato in più posti nell'albero (vedi [clonazione](https://triliumnext.github.io/Docs/Wiki/cloning-notes))
* Ricco editor visuale (WYSIWYG), con supporto -tra l'altro- per tabelle, immagini ed [espressioni matematiche](https://triliumnext.github.io/Docs/Wiki/text-notes#math-support) e con [formattazione automatica](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) per markdown
* Supporto per la modifica di [appunti con codice sorgente](https://triliumnext.github.io/Docs/Wiki/code-notes), con evidenziazione della sintassi
* [Navigazione veloce](https://triliumnext.github.io/Docs/Wiki/note-navigation) tra gli appunti, ricerca testuale completa e [fissaggio degli appunti](https://triliumnext.github.io/Docs/Wiki/note-hoisting)
* Supporto integrato ed automatico per le [revisioni degli appunti](https://triliumnext.github.io/Docs/Wiki/note-revisions)
* Gli [attributi](https://triliumnext.github.io/Docs/Wiki/attributes) degli appunti possono essere utilizzati per l'organizzazione, per l'interrogazione e per lo scripting avanzato (prorgrammazione).
* [Sincronizzazione](https://triliumnext.github.io/Docs/Wiki/synchronization) con un server di sincronizzazione auto-ospitato
* c'è un [servizio di terze parti per ospitare server di sincronizzazione](https://trilium.cc/paid-hosting)
* [Condivisione](https://triliumnext.github.io/Docs/Wiki/sharing) (pubblicazione) di appunti sull'internet pubblico
* Robusta [crittografia](https://triliumnext.github.io/Docs/Wiki/protected-notes) configurabile singolarmente per ogni appunto
* Disegno di diagrammi con Excalidraw (tipo di appunto "canvas")
* [Mappe relazionali](https://triliumnext.github.io/Docs/Wiki/relation-map) e [mappe di collegamenti](https://triliumnext.github.io/Docs/Wiki/link-map) per visualizzare gli appunti e le loro relazioni
* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - vedi [Esempi avanzati](https://triliumnext.github.io/Docs/Wiki/advanced-showcases)
* [API REST](https://triliumnext.github.io/Docs/Wiki/etapi) per l'automazione
* Si adatta bene sia in termini di usabilità che di prestazioni fino ad oltre 100 000 appunti
* Interfaccia utente ottimizzata per il [mobile](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) (smartphone e tablet)
* [Tema Notturno](https://triliumnext.github.io/Docs/Wiki/themes)
* Supporto per importazione ed esportazione da e per [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) e [Markdown import](https://triliumnext.github.io/Docs/Wiki/markdown)
* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) per il salvataggio facile di contenuti web
✨ Dai un'occhiata alle seguenti risorse di terze parti per scoprire altre bellezze legate a TriliumNext:
-[awesome-trilium](https://github.com/Nriver/awesome-trilium) per temi, script, plugin e altro di terze parti.
- [TriliumRocks!](https://trilium.rocks/) per tutorial, guide e molto altro.
## 🏗 Rilasci
Trilium è fornito come applicazione desktop (Linux e Windows) o come applicazione web ospitata sul tuo server (Linux). La versione desktop per Mac OS è disponibile, ma [non è supportata](https://triliumnext.github.io/Docs/Wiki/faq#mac-os-support).
* Se vuoi usare Trilium sul tuo desktop, scarica il rilascio binario per la tua piattaforma dall'[ultimo rilascio](https://github.com/TriliumNext/Notes/releases/latest), decomprimi l'archivio e avvia l'eseguibile ```trilium```.
* Se vuoi installare Trilium su un server, segui [questa pagina](https://triliumnext.github.io/Docs/Wiki/server-installation).
* Per ora solo Chrome e Firefox sono i browser supportati (testati).
TriliumNext sarà fornito anche come Flatpak:
<img width="240" src="https://flathub.org/assets/badges/flathub-badge-en.png">
## 📝 Documentazione
[Vedi la wiki per una lista completa delle pagine di documentazione.](https://triliumnext.github.io/Docs/)
Puoi anche leggere ["Patterns of personal knowledge base"](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) per avere un'ispirazione su come potresti utilizzare Trilium.
## 💻 Contribuire
Clona localmente ed esegui
```shell
npm install
npm run start-server
```
## 👏 Riconoscimenti
* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - miglior editor visuale (WYSIWYG) sul mercato, squadra di sviluppo attenta e reattiva
* [FancyTree](https://github.com/mar10/fancytree) - libreria per alberi molto ricca di funzionalità, senza pari. Trilium Notes non sarebbe lo stesso senza di essa.
* [CodeMirror](https://github.com/codemirror/CodeMirror) - editor di codice con supporto per un'enorme quantità di linguaggi.
* [jsPlumb](https://github.com/jsplumb/jsplumb) - libreria per la connettività visuale senza pari. Utilizzata per [mappe relazionali](https://triliumnext.github.io/Docs/Wiki/relation-map) e [mappe di collegamenti](https://triliumnext.github.io/Docs/Wiki/link-map).
## 🤝 Supporto
Puoi sostenere lo sviluppatore originale di Trilium utilizzando gli sponsor di GitHub, [PayPal](https://paypal.me/za4am) o Bitcoin (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2).
Il supporto all'organizzazione TriliumNext sarà possibile nel prossimo futuro.
## 🔑 Licenza
Questo programma è software libero: è possibile redistribuirlo e/o modificarlo nei termini della GNU Affero General Public License come pubblicata dalla Free Software Foundation, sia la versione 3 della Licenza, o (a propria scelta) qualsiasi versione successiva.
+73
View File
@@ -0,0 +1,73 @@
# TriliumNext Notes
[English](./README.md) | [Chinese](./README-ZH_CN.md) | [Russian](./README.ru.md) | [Japanese](./README.ja.md) | [Italian](./README.it.md) | [Spanish](./README.es.md)
Trilium Notes は、大規模な個人知識ベースの構築に焦点を当てた、階層型ノートアプリケーションです。概要は[スクリーンショット](https://triliumnext.github.io/Docs/Wiki/screenshot-tour)をご覧ください:
<a href="https://triliumnext.github.io/Docs/Wiki/screenshot-tour"><img src="https://raw.githubusercontent.com/wiki/zadam/trilium/images/screenshot.png" alt="Trilium Screenshot" width="1000"></a>
## 🎁 特徴
* ノートは、任意の深さのツリーに配置できます。単一のノートをツリー内の複数の場所に配置できます ([cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes) を参照)
* マークダウン[オートフォーマット](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat)による、表、画像、[数学](https://triliumnext.github.io/Docs/Wiki/text-notes#math-support)などの豊富な WYSIWYG ノート編集機能
* シンタックスハイライトを含む[ソースコード付きノート](https://triliumnext.github.io/Docs/Wiki/code-notes)の編集をサポート
* [ノート間のナビゲーション](https://triliumnext.github.io/Docs/Wiki/note-navigation)、全文検索、[ノートホイスト](https://triliumnext.github.io/Docs/Wiki/note-hoisting)が高速かつ簡単に行えます
* シームレスな[ノートのバージョン管理](https://triliumnext.github.io/Docs/Wiki/note-revisions)
* ノート[属性](https://triliumnext.github.io/Docs/Wiki/Attributes)は、ノート整理、クエリ、高度な[スクリプト](https://triliumnext.github.io/Docs/Wiki/scripts)に使用できます
* 自己ホスト型同期サーバーとの[同期](https://triliumnext.github.io/Docs/Wiki/synchronization)
* [同期サーバーをホストするサードパーティ・サービス](https://trilium.cc/paid-hosting)があります
* 公開インターネットへのノートの[共有](https://triliumnext.github.io/Docs/Wiki/sharing)(公開)
* ノートごとの粒度を持つ強力な[ノート暗号化](https://triliumnext.github.io/Docs/Wiki/protected-notes)
* 組み込みの Excalidraw を使用した図のスケッチ (ノート タイプ"キャンバス")
* ノートとその関係を可視化するための[関係図](https://triliumnext.github.io/Docs/Wiki/relation-map)と[リンクマップ](https://triliumnext.github.io/Docs/Wiki/link-map)
* [スクリプティング](https://triliumnext.github.io/Docs/Wiki/scripts) - [高度なショーケース](https://triliumnext.github.io/Docs/Wiki/advanced-showcases)を参照
* 自動化のための [REST API](https://triliumnext.github.io/Docs/Wiki/etapi)
* ユーザビリティとパフォーマンスの両方で 100 000 ノート以上に拡張可能
* スマートフォンとタブレット向けのタッチ最適化[モバイルフロントエンド](https://triliumnext.github.io/Docs/Wiki/mobile-frontend)
* [ナイトテーマ](https://triliumnext.github.io/Docs/Wiki/themes)
* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) と [Markdown のインポートとエクスポート](https://triliumnext.github.io/Docs/Wiki/Markdown)
* Web コンテンツを簡単に保存するための [Web クリッパー](https://triliumnext.github.io/Docs/Wiki/web-clipper)
サードパーティのテーマ、スクリプト、プラグインなどは、 [awesome-trilium](https://github.com/Nriver/awesome-trilium) をチェックしてください。
## 🏗 ビルド
Trilium は、デスクトップアプリケーション(Linux、Windows)またはサーバー上でホストされるウェブアプリケーション(Linux)として提供されます。 Mac OS のデスクトップビルドも利用可能ですが、 [unsupported](https://triliumnext.github.io/Docs/Wiki/faq#mac-os-support) となっています。
* デスクトップで Trilium を使用したい場合は、 [latest release](https://github.com/TriliumNext/Notes/releases/latest) からお使いのプラットフォームのバイナリリリースをダウンロードし、パッケージを解凍して ``trilium`` の実行ファイルを実行してください。
* サーバーに Trilium をインストールする場合は、[このページ](https://triliumnext.github.io/Docs/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://triliumnext.github.io/Docs/)
また、[個人的な知識基盤のパターン](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge)を読むと、 Trilium の使い方のヒントを得ることができます。
## 💻 コントリビュート
または、ローカルにクローンして実行
```shell
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://triliumnext.github.io/Docs/Wiki/relation-map)、[リンク図](https://triliumnext.github.io/Docs/Wiki/link-map)で使用。
## 🤝 サポート
GitHub スポンサー、[PayPal](https://paypal.me/za4am)もしくは Bitcoin (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2) にて Trilium をサポートすることができます。
## 🔑 ライセンス
このプログラムはフリーソフトウェアです:フリーソフトウェア財団が発行した GNU Affero General Public License のバージョン3、またはそれ以降のバージョンのいずれかに従って、再配布および/または改変することができます。
+126
View File
@@ -0,0 +1,126 @@
# TriliumNext Notes
![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/notes) ![GitHub Downloads (all assets, all releases)](https://img.shields.io/github/downloads/triliumnext/notes/total)
[English](./README.md) | [Chinese](./README-ZH_CN.md) | [Russian](./README.ru.md) | [Japanese](./README.ja.md) | [Italian](./README.it.md) | [Spanish](./README.es.md)
TriliumNext Notes is an open-source, cross-platform hierarchical note taking application with focus on building large personal knowledge bases.
See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for quick overview:
<a href="https://triliumnext.github.io/Docs/Wiki/screenshot-tour"><img src="https://github.com/TriliumNext/Docs/blob/main/Wiki/images/screenshot.png?raw=true" alt="Trilium Screenshot" width="1000"></a>
## ⚠️ Why TriliumNext?
[The original Trilium project is in maintenance mode](https://github.com/zadam/trilium/issues/4620)
### Migrating from Trilium?
There are no special migration steps to migrate from a zadam/Trilium instance to a TriliumNext/Notes instance. Just upgrade your Trilium instance to the latest version and [install TriliumNext/Notes as usual](#-installation)
Versions up to and including [v0.90.4](https://github.com/TriliumNext/Notes/releases/tag/v0.90.4) are compatible with the latest zadam/trilium version of [v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later versions of TriliumNext have their sync versions incremented.
## 💬 Discuss with us
Feel free to join our official conversations. We would love to hear what features, suggestions, or issues you may have!
- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous discussions)
- The `General` Matrix room is also bridged to [XMPP](xmpp:discuss@trilium.thisgreat.party?join)
- [Github Discussions](https://github.com/TriliumNext/Notes/discussions) (For Asynchronous discussions)
- [Wiki](https://triliumnext.github.io/Docs/) (For common how-to questions and user guides)
## 🎁 Features
* Notes can be arranged into arbitrarily deep tree. Single note can be placed into multiple places in the tree (see [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes))
* Rich WYSIWYG note editing including e.g. tables, images and [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat)
* Support for editing [notes with source code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax highlighting
* Fast and easy [navigation between notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text search and [note hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting)
* Seamless [note versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions)
* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be used for note organization, querying and advanced [scripting](https://triliumnext.github.io/Docs/Wiki/scripts)
* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) with self-hosted sync server
* there's a [3rd party service for hosting synchronisation server](https://trilium.cc/paid-hosting)
* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes to public internet
* Strong [note encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with per-note granularity
* Sketching diagrams with built-in Excalidraw (note type "canvas")
* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing notes and their relations
* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases)
* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation
* Scales well in both usability and performance upwards of 100 000 notes
* Touch optimized [mobile frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for smartphones and tablets
* [Night theme](https://triliumnext.github.io/Docs/Wiki/themes)
* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown)
* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy saving of web content
✨ Check out the following third-party resources/communities for more TriliumNext related goodies:
- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party themes, scripts, plugins and more.
- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more.
## 🏗 Installation
### Desktop
To use TriliumNext on your desktop machine (Linux, MacOS, and Windows) you have a few options:
* Download the binary release for your platform from the [latest release page](https://github.com/TriliumNext/Notes/releases/latest), unzip the package and run the ```trilium``` executable.
* Access TriliumNext via the web interface of a server installation (see below)
* Currently only the latest versions of Chrome & Firefox are supported (and tested).
* (Coming Soon) TriliumNext will also be provided as a Flatpak
#### MacOS
Currently when running TriliumNext/Notes on MacOS, you may get the following error:
> Apple could not verify "TriliumNext Notes" is free of malware and may harm your Mac or compromise your privacy.
You will need to run the command on your shell to resolve the error (documented [here](https://github.com/TriliumNext/Notes/issues/329#issuecomment-2287164137)):
```bash
xattr -c "/path/to/Trilium Next.app"
```
### Mobile
To use TriliumNext on a mobile device:
* Use a mobile web browser to access the mobile interface of a server installation (see below)
* Use of a mobile app is not yet supported ([see here](https://github.com/TriliumNext/Notes/issues/72)) to track mobile improvements.
### Server
To install TriliumNext on your own server (including via Docker from [Dockerhub](https://hub.docker.com/r/triliumnext/notes)) follow [the server installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation).
## 📝 Documentation
[See wiki for complete list of documentation pages.](https://triliumnext.github.io/Docs)
You can also read [Patterns of personal knowledge base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) to get some inspiration on how you might use TriliumNext.
## 💻 Contribute
### Code
```shell
git clone https://github.com/TriliumNext/Notes.git
cd Notes
npm install
npm run start-server
```
### Documentation
Head on over to our [Docs repo](https://github.com/TriliumNext/Docs)
## 👏 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. TriliumNext 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://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map)
## 🤝 Support
You can support the original Trilium developer using GitHub Sponsors, [PayPal](https://paypal.me/za4am) or Bitcoin (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2).
Support for the TriliumNext organization will be possible in the near future.
## 🔑 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.
+59
View File
@@ -0,0 +1,59 @@
# TriliumNext Notes
[English](./README.md) | [Chinese](./README-ZH_CN.md) | [Russian](./README.ru.md) | [Japanese](./README.ja.md) | [Italian](./README.it.md) | [Spanish](./README.es.md)
Trilium Notes – это приложение для заметок с иерархической структурой, ориентированное на создание больших персональных баз знаний. Для быстрого ознакомления посмотрите [скриншот-тур](https://triliumnext.github.io/Docs/Wiki/screenshot-tour):
<a href="https://triliumnext.github.io/Docs/Wiki/screenshot-tour"><img src="https://github.com/TriliumNext/Docs/blob/main/Wiki/images/screenshot.png?raw=true" alt="Trilium Screenshot" width="1000"></a>
## 🎁 Возможности
* Заметки можно расположить в виде дерева произвольной глубины. Отдельную заметку можно разместить в нескольких местах дерева (см. [клонирование](https://triliumnext.github.io/Docs/Wiki/cloning-notes))
* Продвинутый визуальный редактор (WYSIWYG) позволяет работать с таблицами, изображениями, [формулами](https://triliumnext.github.io/Docs/Wiki/text-notes#math-support) и разметкой markdown, имеет [автоформатирование](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat)
* Редактирование [заметок с исходным кодом](https://triliumnext.github.io/Docs/Wiki/code-notes), включая подсветку синтаксиса
* Быстрая и простая [навигация между заметками](https://triliumnext.github.io/Docs/Wiki/note-navigation), полнотекстовый поиск и [выделение заметок](https://triliumnext.github.io/Docs/Wiki/note-hoisting) в отдельный блок
* Бесшовное [версионирование заметки](https://triliumnext.github.io/Docs/Wiki/note-revisions)
* Специальные [атрибуты](https://triliumnext.github.io/Docs/Wiki/attributes) позволяют гибко организовать структуру, используются для поиска и продвинутого [скриптинга](https://triliumnext.github.io/Docs/Wiki/scripts)
* [Синхронизация](https://triliumnext.github.io/Docs/Wiki/synchronization) заметок со своим сервером
* Надёжное [шифрование](https://triliumnext.github.io/Docs/Wiki/protected-notes) с детализацией по каждой заметке
* [Карты связей](https://triliumnext.github.io/Docs/Wiki/relation-map) и [карты ссылок](https://triliumnext.github.io/Docs/Wiki/link-map) для визуализации их взяимосвязей
* [Скрипты](https://triliumnext.github.io/Docs/Wiki/scripts) - см. [продвинутые примеры](https://triliumnext.github.io/Docs/Wiki/advanced-showcases)
* Хорошо масштабируется, как по удобству использования, так и по производительности до 100000 заметок
* Оптимизированный [мобильный фронтенд](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) смартфонов и планшетов
* [Темная тема](https://triliumnext.github.io/Docs/Wiki/themes)
* Импорт и экпорт [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) и данных в [markdown](https://triliumnext.github.io/Docs/Wiki/markdown) формате
* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) для удобного сохранения веб-контента
## 🏗 Сборки
Trilium предоставляется в виде десктопного приложения (Linux и Windows) или веб-приложения, размещенного на вашем сервере (Linux). Доступна сборка Mac OS, но она [не поддерживается](https://triliumnext.github.io/Docs/Wiki/faq#mac-os-support).
* Если вы хотите использовать Trilium на десктопе, скачайте архив для своей платформы со страницы [релизов](https://github.com/TriliumNext/Notes/releases/latest), распакуйте и запустите исполняемый файл ```trilium```.
* Если вы хотите установить Trilium на сервере, следуйте этой [инструкции](https://triliumnext.github.io/Docs/Wiki/server-installation).
* В данный момент поддерживаются (протестированы) последние версии браузеров Chrome и Firefox.
## 📝 Документация
[Полный список страниц документации доступен в Wiki.](https://triliumnext.github.io/Docs/)
Вы также можете ознакомиться с [шаблонами персональных баз знаний](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge), чтобы получить представление о том, как можно использовать Trilium.
## 💻 Участвуйте в разработке
Или склонируйте на своё устройство и запустите
```shell
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://triliumnext.github.io/Docs/Wiki/relation-map) и [картах ссылок](https://triliumnext.github.io/Docs/Wiki/link-map).
## 🔑 Лицензия
Эта программа является бесплатным программным обеспечением: вы можете распространять и/или изменять ее в соответствии с условиями GNU Affero General Public License, опубликованной Free Software Foundation, либо версии 3 Лицензии, либо (по вашему выбору) любой более поздней версии.
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long

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