Compare commits

...

1016 Commits

Author SHA1 Message Date
Elian Doran 78c8b17e33 chore(release): turn into beta
/ Check Docker build (Dockerfile) (push) Failing after 34s
/ Check Docker build (Dockerfile.alpine) (push) Failing after 36s
/ Build Docker images (Dockerfile, ubuntu-24.04-arm, linux/arm/v7) (push) Has been skipped
/ Build Docker images (Dockerfile, ubuntu-24.04-arm, linux/arm64) (push) Has been skipped
/ Build Docker images (Dockerfile.alpine, ubuntu-latest, linux/amd64) (push) Has been skipped
/ Merge manifest lists (push) Has been skipped
Release / Make Electron (arm64, map[forge_platform:linux image:ubuntu-latest name:linux shell:bash]) (push) Failing after 30s
Release / Make Electron (x64, map[forge_platform:linux image:ubuntu-latest name:linux shell:bash]) (push) Failing after 32s
Release / Build Linux Server (x64, ubuntu-latest) (push) Failing after 36s
Release / Make Electron (arm64, map[forge_platform:darwin image:macos-latest name:macos shell:bash]) (push) Has been cancelled
Release / Make Electron (arm64, map[forge_platform:win32 image:win-signing name:windows shell:cmd]) (push) Has been cancelled
Release / Make Electron (x64, map[forge_platform:darwin image:macos-latest name:macos shell:bash]) (push) Has been cancelled
Release / Make Electron (x64, map[forge_platform:win32 image:win-signing name:windows shell:cmd]) (push) Has been cancelled
Release / Build Linux Server (arm64, ubuntu-24.04-arm) (push) Has been cancelled
2025-03-30 20:51:08 +03:00
Elian Doran 60becbc38c fix(build): add dprint to optional dependencies to support ARMv7 (closes #1556) 2025-03-30 18:04:09 +03:00
Elian Doran d69ff1e3cf Merge pull request #1569 from TriliumNext/feature/fix_release
fix(release): appdmg not found
2025-03-30 17:59:48 +03:00
Elian Doran 2d3a1e9023 fix(build): flaky copy of the artifact 2025-03-30 17:43:34 +03:00
Elian Doran 7b2bbdd52a fix(release): unable to find appdmg 2025-03-30 17:23:20 +03:00
Elian Doran 93dc16de45 chore(package): update lock 2025-03-30 17:06:59 +03:00
Elian Doran 85000a2b7f Revert "fix(release): appdmg not found"
This reverts commit 095fbb7015.
2025-03-30 17:04:29 +03:00
Elian Doran a9c3c98fa5 chore(nighly): trigger on forge config change 2025-03-30 16:54:14 +03:00
Elian Doran fb800eb96b fix(forge): slashes in ref name breaking copying 2025-03-30 16:44:46 +03:00
Elian Doran 095fbb7015 fix(release): appdmg not found 2025-03-30 16:24:39 +03:00
Elian Doran 11dc52f0ce chore(release): prepare for 0.92.5 2025-03-30 15:32:43 +03:00
Elian Doran e01dc5751a Merge pull request #1566 from TriliumNext/tray
Fix program crash during initial setup and the tray not showing.
2025-03-30 14:50:11 +03:00
Elian Doran 283229d597 chore(client): add .mobile-only class 2025-03-30 14:30:18 +03:00
Elian Doran 30c14297d0 feat(backend-options): add a refresh floating button 2025-03-30 14:30:18 +03:00
Elian Doran a0d562e01b feat(backend-options): reduce padding 2025-03-30 14:30:18 +03:00
SiriusXT 10bc7a8bd6 Merge branch 'develop' into tray 2025-03-30 18:48:54 +08:00
SiriusXT 4c063251e0 Fix program crash during initial setup and the tray not showing. 2025-03-30 17:39:28 +08:00
Elian Doran 9c291e3d41 Merge pull request #1561 from TriliumNext/renovate/rollup-4.x-lockfile
chore(deps): update dependency rollup to v4.38.0
2025-03-30 12:16:05 +03:00
Elian Doran bc4918ed5b feat(backend_log): respect user's word wrapping (closes #1496) 2025-03-30 11:59:38 +03:00
Elian Doran fcd7df52ee Merge branch 'develop' into renovate/rollup-4.x-lockfile 2025-03-30 11:40:36 +03:00
Elian Doran fbb010edf4 Merge pull request #1560 from TriliumNext/renovate/mind-elixir-4.x
chore(deps): update dependency mind-elixir to v4.5.0
2025-03-30 11:38:14 +03:00
renovate[bot] 66f7ba0065 chore(deps): update dependency rollup to v4.38.0 2025-03-30 02:26:39 +00:00
renovate[bot] b9ae39a3d1 chore(deps): update dependency mind-elixir to v4.5.0 2025-03-30 02:26:30 +00:00
Elian Doran fd53e35f6f feat(autocomplete): don't search unless length is 3 2025-03-29 22:22:51 +02:00
Elian Doran 766b0723f7 feat(autocomplete): support default icons like on client 2025-03-29 22:18:42 +02:00
Elian Doran a9193fdcd4 feat(autocomplete): display note icon 2025-03-29 22:04:34 +02:00
Elian Doran eb097ec1ea fix(highlights): unable to navigate to italic links (closes #1555) 2025-03-29 14:12:17 +02:00
Elian Doran a44bf7fb49 chore(highlights): prevent crash if unable to find target element 2025-03-29 14:10:12 +02:00
Elian Doran 04a7ad8d4e fix(highlights): new italic format not displayed 2025-03-29 14:08:57 +02:00
Elian Doran 9a3f765d42 fix(import/markdown): unable to import code blocks with XML/HTML content if safe mode on (closes #1530) 2025-03-29 13:47:02 +02:00
Elian Doran fd76f8dac9 chore(vitest): switch to JSON for workspace config
Fixes random error due to the presence of the file in `build` directory.
2025-03-29 13:40:44 +02:00
Elian Doran 0982a0e503 feat(docs): improve documentation, add icons, reorganize 2025-03-29 13:07:28 +02:00
Elian Doran 5ae6b18762 fix(docs): remove accidentally added file 2025-03-29 13:07:28 +02:00
Elian Doran 49c41850ad feat(docs): add basic Bash script for ETAPI 2025-03-29 13:07:28 +02:00
Elian Doran 644d79b1ce feat(docs): improve documentation on note map/relation map 2025-03-29 13:07:28 +02:00
Elian Doran 80cfd73cae feat(docs): document some of the technologies used 2025-03-29 13:07:28 +02:00
Elian Doran fbfeb7d2bf feat(docs): document note source (viewing & editing) 2025-03-29 13:07:28 +02:00
Elian Doran 7be71fc6fa Merge pull request #401 from TriliumNext/feature/MFA
Feature addition: Multi-Factor Authentication
2025-03-29 13:06:00 +02:00
Jin ed58be1578 Merge branch 'develop' into feature/MFA 2025-03-29 11:23:38 +01:00
Jin 17b4bfca39 chore: 🤖 improve instruction 2025-03-29 11:23:00 +01:00
Elian Doran 96d3d661c2 chore(docs): sync import/export 2025-03-29 11:28:59 +02:00
Elian Doran e62137f245 fix(docs): meta for HTML documentation changing due to root notePosition 2025-03-29 11:28:31 +02:00
Elian Doran 4dd300b702 fix(docs): meta for HTML documentation changing due to isExpanded 2025-03-29 11:25:28 +02:00
Elian Doran ce9a2a258e Merge pull request #1550 from TriliumNext/renovate/sanitize-html-2.x
chore(deps): update dependency @types/sanitize-html to v2.15.0
2025-03-29 02:56:02 +02:00
Jin a8e37b5b92 Merge branch 'develop' into feature/MFA 2025-03-29 01:45:18 +01:00
Jin 02c4a269be feat: 🎸 upgrade db version 2025-03-29 01:44:25 +01:00
Jin 77f62b94cc refactor: 💡 refact recovery code 2025-03-29 01:40:17 +01:00
renovate[bot] c18e56d12f chore(deps): update dependency @types/sanitize-html to v2.15.0 2025-03-29 00:39:33 +00:00
Elian Doran d84e8c347a Merge pull request #1546 from TriliumNext/webpack
Move library loader to webpack
2025-03-29 02:38:34 +02:00
Elian Doran c7c8af28f7 fix(editor): header formatting remaining after cut to note (closes #687) 2025-03-29 02:07:29 +02:00
Jin 2eeb376d24 refactor: 💡 fix typo and imporve code quality 2025-03-29 01:00:08 +01:00
Elian Doran d8b9448b91 fix(editor): not being able to copy from the included note (closes #588) 2025-03-29 01:55:20 +02:00
Jin ce66397257 Merge branch 'develop' into webpack 2025-03-29 00:52:27 +01:00
Jin 608378193f fix: 🐛 fix mark.js load error 2025-03-29 00:51:36 +01:00
Elian Doran bd092e0119 chore(i18n): typo 2025-03-29 00:45:16 +02:00
Elian Doran f743cfc35c fix(options/mfa): double colons in warning 2025-03-29 00:44:51 +02:00
Elian Doran 4cde9253ed style(options/mfa): use admonitions 2025-03-29 00:42:20 +02:00
Elian Doran 9c835d0f7f chore(docs): always use LF on Windows 2025-03-29 00:22:49 +02:00
Elian Doran 68e1e68cfe chore(zen): change default keyboard shortcut to F9 (closes #1372) 2025-03-29 00:22:27 +02:00
Jin 534c146542 Merge branch 'develop' into webpack 2025-03-28 23:00:59 +01:00
Jin 47a363be0f refactor: 💡 improve image zoom 2025-03-28 22:28:09 +01:00
Jin 25aa08bb4c chore: 🤖 fix lock file 2025-03-28 22:07:43 +01:00
Jin 797ed2a494 Merge branch 'develop' into feature/MFA 2025-03-28 22:04:23 +01:00
Elian Doran df6c6647c7 chore(deps): remove leaflet from dist 2025-03-28 22:40:19 +02:00
Elian Doran 83890ba130 Merge pull request #1537 from TriliumNext/build_webpack-excalidraw-font
build: use webpack for excalidraw
2025-03-28 22:31:32 +02:00
Elian Doran 041c801065 Merge pull request #1539 from TriliumNext/renovate/node-22.x
chore(deps): update dependency @types/node to v22.13.14
2025-03-28 22:24:33 +02:00
Elian Doran 9585c6a55f fix(client): "Note not found" tooltip for some URLs 2025-03-28 22:22:42 +02:00
Elian Doran 4ac52e17da Merge pull request #1541 from TriliumNext/renovate/mime-types-3.x
fix(deps): update dependency mime-types to v3
2025-03-28 22:08:43 +02:00
Elian Doran bf1896f4fa Merge pull request #1540 from TriliumNext/renovate/electron-35.x
chore(deps): update dependency electron to v35.1.2
2025-03-28 22:08:12 +02:00
Elian Doran 597874250a fix(electron): spacing increases when entering Chinese and digits (fixes #1327) 2025-03-28 22:07:01 +02:00
Jin 4a2c075935 chore: 🤖 remove calendar css from library_loader 2025-03-28 17:08:34 +01:00
Jin accf245179 chore: 🤖 remove leaflet css from library_loader 2025-03-28 16:58:06 +01:00
Jin b30035834a chore: 🤖 remove mark.js from asset 2025-03-28 16:43:11 +01:00
Jin 3dc7636910 chore: 🤖 remove wheelzoom from asset 2025-03-28 16:40:48 +01:00
Jin 2476e0b504 chore: 🤖 move mark.js to webpack 2025-03-28 16:23:06 +01:00
Jin 94bc550c67 chore: 🤖 move wheel zoom to webpack 2025-03-28 16:16:33 +01:00
Jin 121f297fcb chore: 🤖 better oauth instruction 2025-03-28 12:08:32 +01:00
Jin b51814abeb fix: 🐛 remove oauth default config 2025-03-28 12:03:27 +01:00
Jin cb3627ed50 chore: 🤖 better totp instruction 2025-03-28 12:01:18 +01:00
Jin f19ec9b3c4 fix: 🐛 fix open id check error 2025-03-28 11:59:32 +01:00
Jin aaecb43f8a fix: 🐛 fix oauth logout error 2025-03-28 04:05:00 +01:00
Jin bde58e5836 fix: 🐛 fix login error 2025-03-28 04:01:18 +01:00
Jin 5987dedff8 Merge branch 'develop' into feature/MFA 2025-03-28 03:47:26 +01:00
Jin 2bd408cf8a feat: 🎸 better instruction 2025-03-28 03:46:58 +01:00
Jin 44c8b7d9ea feat: 🎸 improve oauth option page 2025-03-28 03:44:40 +01:00
Jin 7929aaf91a feat: 🎸 returen missing vars for oauth 2025-03-28 03:43:44 +01:00
renovate[bot] def9bbeac7 fix(deps): update dependency mime-types to v3 2025-03-28 02:43:35 +00:00
renovate[bot] 9fe40e2ce6 chore(deps): update dependency electron to v35.1.2 2025-03-28 02:43:19 +00:00
renovate[bot] bc76ba4149 chore(deps): update dependency @types/node to v22.13.14 2025-03-28 02:43:08 +00:00
Jin 332de4e67f feat: 🎸 add subtree translation 2025-03-28 03:42:59 +01:00
Jin c217ccd347 feat: 🎸 remove totp from config 2025-03-28 03:05:04 +01:00
Jin 243d7d0ee9 feat: 🎸 remove totp config 2025-03-28 03:02:55 +01:00
Jin c921982ae7 feat: 🎸 set generate totp function 2025-03-28 03:02:03 +01:00
Jin ea7fbb154f fix: 🐛 init error with totp 2025-03-28 02:38:51 +01:00
Jin 5742d3068e feat: 🎸 move totp services to encryption logic 2025-03-28 02:15:25 +01:00
Jin 687d506ca5 refactor: 💡 rename error class 2025-03-28 01:56:49 +01:00
Jin 18a417addd feat: 🎸 add totp encryption 2025-03-28 01:53:53 +01:00
Jin 04cbe9d3d1 style: 💄 restyle 2025-03-28 01:53:32 +01:00
Jin d4cd0e8eff feat: 🎸 restyle option page 2025-03-28 01:22:30 +01:00
Jin d92fa82ad0 feat: 🎸 set option status 2025-03-28 01:00:58 +01:00
Jin d42b839c32 feat: 🎸 init move mfa option 2025-03-28 00:39:59 +01:00
Panagiotis Papadopoulos 73fa06a06a deps: move react/react-dom to devDeps
these are only used for excalidraw and are bundled by webpack now
2025-03-28 00:20:00 +01:00
Panagiotis Papadopoulos c81fb5dd14 deps: move @excalidraw to devDeps
it is bundled by webpack now
2025-03-28 00:16:30 +01:00
Panagiotis Papadopoulos 98df7bcd83 chore(excalidraw): update comment about EXCALIDRAW_ASSET_PATH 2025-03-28 00:14:04 +01:00
Panagiotis Papadopoulos db959aa997 chore(excalidraw): update EXCALIDRAW_ASSET_PATH
used for the fonts excalidraw requires
2025-03-28 00:06:50 +01:00
Panagiotis Papadopoulos 1c49cb0569 build(webpack): fix copy-to path name
this will now end up in "src/public/app-dist/excalidraw/fonts/"

excalidraw *needs* the fonts to be in a folder called "fonts" as it appends the "EXCALIDRAW_ASSET_PATH" variable with "fonts" automatically -> therefore switch names around to fix the issue
2025-03-27 23:53:08 +01:00
Panagiotis Papadopoulos ee2ee2c291 build(webpack): copy required excalidraw fonts 2025-03-27 23:15:47 +01:00
Panagiotis Papadopoulos 7b6f04e30d deps: add copy-webpack-plugin
to be used for copying excalidraw fonts as assets
2025-03-27 23:12:24 +01:00
Elian Doran 1a312bf01c Merge pull request #1322 from TriliumNext/chore_dprint
chore: replace prettier with dprint
2025-03-27 22:57:58 +02:00
Panagiotis Papadopoulos e95172e2db build(scripts): replace prettier with dprint
also renaming the script from "dev:prettier" to a more "generic" term "dev:format"
2025-03-27 21:29:18 +01:00
Panagiotis Papadopoulos cdc6ce2118 chore: remove prettier
replaced by dprint due to its configurability
2025-03-27 21:26:39 +01:00
Panagiotis Papadopoulos f965be9f8f deps: add dprint as devDep 2025-03-27 21:24:51 +01:00
Panagiotis Papadopoulos 1c04aa9963 chore: add dprint config
add initial dprint configuration, settings partially taken from the prettier config,

still might need some finetuning
2025-03-27 21:22:07 +01:00
Panagiotis Papadopoulos 6336699618 build(server): improve "node" folder cleanup
* remove useless symlinks to non-existing files (npm, npx -> the actual file gets deleted by "rm -r $BUILD_DIR/node/lib/node_modules/npm"
=> fixes #1499
(this time fully ;-))

* remove unused corepack

* remove useless CHANGELOG.md (LICENSE and README.md should of course still remain)
2025-03-27 21:06:35 +01:00
Elian Doran 91242b6cab fix(next): regression in mica dark 2025-03-27 19:55:06 +02:00
Elian Doran 1b6ab7e7f2 fix(dropdowns): overlap with quick search results 2025-03-27 19:36:58 +02:00
Elian Doran 10f044aced Merge pull request #1436 from TriliumNext/build_copy-dist-trilium-merge
build: port copy-trilium.sh cleanup functionality to cross-platform TS
2025-03-27 19:26:34 +02:00
--global cbf3ee9f6e fix(ci): bring back ref name in artifact (fixes #1532) 2025-03-27 19:03:44 +02:00
Adorian Doran 04a41ca5f4 style(next): add some remarks 2025-03-27 18:50:26 +02:00
Adorian Doran 63efa8ffe4 style(next): improve the window dragging functionality for the vertical toolbar layout 2025-03-27 18:46:03 +02:00
Adorian Doran b6565c3b13 style(next): improve the window dragging functionality also for the vertical toolbar layout 2025-03-27 18:40:49 +02:00
Adorian Doran b9c4d83223 style(next): improve the window dragging functionality for the horizontal toolbar layout 2025-03-27 18:26:21 +02:00
Adorian Doran 66cebf4ebf style(next)/scrollbars: add a remark 2025-03-27 16:12:51 +02:00
Adorian Doran 25d83752e5 style(next): refactor 2025-03-27 16:08:34 +02:00
Adorian Doran 10ea58a368 style(next)/scrollbars: restore the support for custom background color 2025-03-27 16:06:53 +02:00
Adorian Doran 4ab70fcb8a style(next): rename CSS variable 2025-03-27 15:43:33 +02:00
Adorian Doran 01004ac425 Merge branch 'develop' of https://github.com/TriliumNext/Notes into develop 2025-03-27 15:41:27 +02:00
Adorian Doran 99bdf33236 style(next): fix scrollbar appearance in code blocks 2025-03-27 15:41:24 +02:00
Elian Doran 2ce1858d40 Merge pull request #1533 from FliegendeWurst/patch-1
README.md: TriliumDroid link, documentation update
2025-03-27 15:27:41 +02:00
Arne Keller 8c4e504cd4 README.md: link to old docs 2025-03-27 14:23:55 +01:00
Arne Keller a7d6f1e4d1 README.md: TriliumDroid link, documentation update 2025-03-27 12:50:39 +01:00
Panagiotis Papadopoulos 5a2c5d8047 Merge branch 'develop' into build_copy-dist-trilium-merge 2025-03-27 09:37:03 +01:00
Panagiotis Papadopoulos 9fe37465c7 build(electron-forge): use double quotes for the buildPath in afterPrune
attempt to fix failing Windows build in CI, which uses cmd shell, which apparently treats single apostrophes differently
2025-03-27 09:35:48 +01:00
Panagiotis Papadopoulos 6218ae6cd7 chore(docker): move exception below TODO comment 2025-03-27 09:07:29 +01:00
Panagiotis Papadopoulos fa0358662a build(docker): add missing cleanupNodeModules removal to Dockerfile
previously forgot to add this here as well -> had it only in the Dockerfile.alpine
2025-03-27 09:06:09 +01:00
Panagiotis Papadopoulos d5bc9841e3 build(docker): use absolute path to stay consistent 2025-03-27 09:05:17 +01:00
Panagiotis Papadopoulos e9fa37c4ee chore(docker): remove TODO 2025-03-27 09:04:10 +01:00
Panagiotis Papadopoulos 75431ca634 build: make running of npm ci in build scripts configurable
* moved the running of npm ci from copy-dist to cleanupNodeModules
* added flag to disable it (necessary for electron-forge)
2025-03-27 00:00:41 +01:00
Elian Doran cd5bfcf136 Merge branch 'develop' into feature/MFA 2025-03-26 22:33:15 +02:00
Elian Doran 683bf64100 Merge pull request #1528 from TriliumNext/renovate/mermaid-11.x
fix(deps): update dependency mermaid to v11.6.0
2025-03-26 22:31:42 +02:00
Adorian Doran cdcfab1011 style(next)/scrollbars: tweak size 2025-03-26 19:47:37 +02:00
Elian Doran b95dca71db Merge branch 'develop' into renovate/mermaid-11.x 2025-03-26 19:34:55 +02:00
Adorian Doran 733293c09a Merge branch 'develop' of https://github.com/TriliumNext/Notes into develop 2025-03-26 19:33:13 +02:00
Adorian Doran dcd64554eb style(next): fix Firefox scrollbar styles overriding WebKit scrollbar styles 2025-03-26 19:33:11 +02:00
Elian Doran 84d75c3ee8 Merge pull request #1487 from TriliumNext/tray
Fix tray exception when multiple windows
2025-03-26 19:32:22 +02:00
Elian Doran 51913ecccf Merge pull request #1520 from TriliumNext/renovate/electron-forge-monorepo
chore(deps): update electron-forge monorepo to v7.8.0
2025-03-26 19:16:54 +02:00
Adorian Doran 40e990d39a Merge branch 'develop' of https://github.com/TriliumNext/Notes into develop 2025-03-26 19:15:32 +02:00
Adorian Doran be9b19d81c style(next): improve CSS formatting 2025-03-26 19:15:29 +02:00
--global 4b1551f5ec Merge branch 'develop' of github.com:TriliumNext/Notes into develop 2025-03-26 19:11:13 +02:00
--global fd0018677c test(i18n): add refresh button click after language change 2025-03-26 19:11:07 +02:00
Adorian Doran 4b9ea651a1 style(next): restyle Firefox scrollbars 2025-03-26 19:06:22 +02:00
--global e85b7f5e79 chore(vscode): add playwright to recommendations 2025-03-26 18:56:28 +02:00
Adorian Doran c2d917b926 style(next): restyle WebKit scrollbars 2025-03-26 18:53:17 +02:00
--global 0cedd697cc fix(electron): not starting on an empty DB 2025-03-26 18:41:36 +02:00
Jin 647226858d feat: 🎸 Disable MFA on electron instance 2025-03-26 11:04:04 +01:00
Jin 0741c8546f feat: 🎸 fix electron login logic 2025-03-26 10:58:34 +01:00
Jin 347c644f23 Merge branch 'develop' into feature/MFA 2025-03-26 10:48:16 +01:00
Panagiotis Papadopoulos 0b428035ae build(cleanupNodeModules): move removal of elements to its own function
also added a logging function for debugging purposes
2025-03-26 09:48:06 +01:00
Panagiotis Papadopoulos 51f2e23c2f build(cleanupNodeModules): delete .bin folder
this is only needed for executing package scripts -> which we don't do in production

fixes #1499
2025-03-26 09:28:50 +01:00
Panagiotis Papadopoulos 1528703ed9 build(cleanupNodeModules): add some minimalistic logging 2025-03-26 09:26:22 +01:00
Panagiotis Papadopoulos 1150f78b15 build(cleanupNodeModules): use path.join and basePath for extraFoldersDelete 2025-03-26 09:18:16 +01:00
Panagiotis Papadopoulos 6fe23f9a13 chore(cleanupNodeModules): remove commented out paths
extra note on mermaid: that should be packed by webpack now, so we just need to move it to devDeps and and we should be good
2025-03-26 09:15:33 +01:00
Panagiotis Papadopoulos b457fa2e87 chore(cleanupNodeModules): rename nodeDir to nodeModulesContent 2025-03-26 09:12:22 +01:00
Panagiotis Papadopoulos 83da24b38d build(dockerignore): add cleanupNodeModules as exception 2025-03-26 08:12:48 +01:00
Panagiotis Papadopoulos 57ee61938d build(copy-trilium): delete now unused script
all of its functionality has been "absorbed" by the cross-platform copy-dist and cleanupNodeModules scripts, that can be used for all of our builds now
2025-03-26 08:12:48 +01:00
Panagiotis Papadopoulos f79b925e49 build(server): use cleanupNodeModules script 2025-03-26 08:12:48 +01:00
Panagiotis Papadopoulos 3e3344b329 chore(scripts): remove now unneeded electron-forge:prepare 2025-03-26 08:12:48 +01:00
Panagiotis Papadopoulos 1ceaafa1e8 build: move cleanupNodeModules to its own file
this is necessary, since for Docker and electron-forge, we need to run this as an extra step after copy-dist

for electron-forge: after it is done with its own "pruning", as we otherwise would need to also take care of certain electron related pruning

for Docker: as a last step in the build stage
2025-03-26 08:12:48 +01:00
Panagiotis Papadopoulos cd8401089d build(copy-trilium): update list of useless deps paths
* image-q/demo -> doesn't exist anymore (and even if it did - previous cleanup step, would've removed this anyways)
* @excalidraw/excalidraw/dist/* -> updated to point to the dev folder
* boxicons -> only fonts and css folders are used, so remove the other ones
* jimp -> updated paths and removed non-existent path

fixing here for historical reasons, next step is to move these over to copy-dist.ts
2025-03-26 08:12:48 +01:00
Panagiotis Papadopoulos 6749d8084b build(copy-dist): add further cleanupNodeModules functionality
deleting of ts and map files from node_modules folder,
adapted from copy-trilium.sh.
2025-03-26 08:12:48 +01:00
Panagiotis Papadopoulos 8275f3c867 build(copy-dist): execute filterableDirs cleanup in one chain 2025-03-26 08:12:48 +01:00
Panagiotis Papadopoulos a9643174cc build(copy-dist): add further folders to list of filterableDirs
same as before, but some of the modules use singular/plural, so just check for both
2025-03-26 08:12:48 +01:00
Panagiotis Papadopoulos 6260ea1532 build(copy-dist): add initial cleanupNodeModules functionality
adapted from copy-trilium.sh
2025-03-26 08:12:48 +01:00
Panagiotis Papadopoulos bee7793d32 build(copy-trilium): remove now unnecessary package.json patching
this is not needed anymore since commit 6b9d8f0d67
2025-03-26 08:12:48 +01:00
Panagiotis Papadopoulos 8feb201d3d build(electron-forge): set prune to false
since we our own more "sophisticated" pruning during copy-dist, we need to set this to false, as otherwise build will fail
2025-03-26 08:12:48 +01:00
Panagiotis Papadopoulos 6fb270e4f8 build(copy-dist): copy over existing node_modules
helps avoiding downloading the packages a 2nd time during our prune stage
2025-03-26 08:12:48 +01:00
Panagiotis Papadopoulos 8977492981 build(copy-dist): move "pruning" to copy-dist from copy-trilium.sh 2025-03-26 08:12:48 +01:00
Panagiotis Papadopoulos 1640000291 build(build-server): move "build:prepare-dist" call to build-server from copy-trilium
in preparation to get rid of the file altogether - rest of the functionality will be merged into copy-dist.ts
2025-03-26 08:12:48 +01:00
Panagiotis Papadopoulos 17d5fdb4b0 build(copy-dist): get rid of manual node_module copying
this is useless at the moment, as all build processes are running "npm ci --omit=dev" anyways, i.e. they will just install everything remaining again
2025-03-26 08:12:48 +01:00
Panagiotis Papadopoulos 1e713469e7 build(server): bump to latest node v22.14.0 -> fixes EBADENGINE warning
npm warn EBADENGINE Unsupported engine {
npm warn EBADENGINE   package: 'node-abi@4.2.0',
npm warn EBADENGINE   required: { node: '>=22.12.0' },
npm warn EBADENGINE   current: { node: 'v20.18.1', npm: '10.8.2' }
npm warn EBADENGINE }
2025-03-26 08:12:22 +01:00
Panagiotis Papadopoulos b97c28bc13 ci: bump to node v22 -> fixes EBADENGINE warning
npm warn EBADENGINE Unsupported engine {
npm warn EBADENGINE   package: 'node-abi@4.2.0',
npm warn EBADENGINE   required: { node: '>=22.12.0' },
npm warn EBADENGINE   current: { node: 'v20.18.1', npm: '10.8.2' }
npm warn EBADENGINE }
2025-03-26 08:10:04 +01:00
Elian Doran 5ec3d58f6f fix(electron): option does not exist 2025-03-26 08:30:56 +02:00
Jin d010e6cc73 Merge branch 'develop' into feature/MFA 2025-03-26 03:56:53 +01:00
Jin 7024166fc0 feat: 🎸 Add CN translation 2025-03-26 03:55:06 +01:00
Jin ce053323a9 feat: 🎸 Format code 2025-03-26 03:53:00 +01:00
Jin e2ea6f96ce feat: 🎸 Add CN translation 2025-03-26 03:51:09 +01:00
Jin 4959dbf126 feat: 🎸 Improve TOTP setting page 2025-03-26 03:22:57 +01:00
renovate[bot] e0522fcd48 fix(deps): update dependency mermaid to v11.6.0 2025-03-26 02:11:39 +00:00
Jin 979000c5c8 feat: 🎸 Fix recovery key error 2025-03-26 02:55:42 +01:00
Jin f2a29653b2 feat: 🎸 Fix SSO login 2025-03-26 02:39:29 +01:00
Jin d4b657e4d8 feat: 🎸 Fix import naming 2025-03-26 02:04:24 +01:00
Jin 4762287d61 feat: 🎸 Remove redundant func 2025-03-26 01:58:54 +01:00
Jin 886e63f128 feat: 🎸 Add SSO login button 2025-03-26 01:48:42 +01:00
Jin a30695b9fb feat: 🎸 Remove redundant check auth 2025-03-26 01:36:48 +01:00
Jin e957a17f1c feat: 🎸 Seperate auth check 2025-03-26 00:50:37 +01:00
Jin 083ee5d23b feat: 🎸 Fix TOTP not load correctly 2025-03-26 00:42:19 +01:00
Jin 8f157e04d4 feat: 🎸 Show correct login error to user 2025-03-26 00:13:56 +01:00
Jin c1ed471403 feat: 🎸 Ask user to login if any MFA configs are changed 2025-03-26 00:04:55 +01:00
Jin c2a6d517f0 feat: 🎸 Better naming for vars 2025-03-25 23:53:49 +01:00
Jin 1afccb4129 feat: 🎸 Fix app start error with MFA configs 2025-03-25 23:14:25 +01:00
Jin ae794a562f feat: 🎸 Use config.ini configure 2025-03-25 22:44:59 +01:00
Jin 3fa89b2eba feat: 🎸 Remove unuse gitignore file 2025-03-25 22:32:52 +01:00
Jin 924044ae52 feat: 🎸 Remove dotenv dep 2025-03-25 22:31:07 +01:00
Jin 94cd54f17e feat: 🎸 Use ini file to configure MFA 2025-03-25 22:30:14 +01:00
Jin 8d7339b50a feat: 🎸 Use i18n for text, remove unused vars 2025-03-25 21:00:32 +01:00
Elian Doran 5148ce64ae chore(i18n): translate missing Romanian messages 2025-03-25 21:51:40 +02:00
Elian Doran 03fd34eeb0 feat(settings/i18n): dedicated restart button 2025-03-25 21:48:02 +02:00
Elian Doran e408cc5b10 feat(settings/i18n): hide formatting locale on non-electron 2025-03-25 21:40:35 +02:00
Elian Doran f0b4acd15a style(settings): present i18n settings in a different fahsion 2025-03-25 21:23:32 +02:00
Elian Doran 90794fed88 fix(electron): wrong value for --lang 2025-03-25 20:26:21 +02:00
Elian Doran ab58671625 feat(options): restart when setting locale 2025-03-25 20:15:39 +02:00
Elian Doran a5a7a30cd5 feat(electron): respect formatting locale 2025-03-25 20:10:19 +02:00
Elian Doran 45208c8039 chore(i18n): define electron locales for all the supported languages 2025-03-25 19:59:05 +02:00
Elian Doran b923a23d95 feat(settings): make the formatting locale value adjustable 2025-03-25 19:56:07 +02:00
Elian Doran c4559749f1 feat(settings): display option to adjust formatting locale 2025-03-25 19:48:07 +02:00
Elian Doran 73fc7304c7 Merge branch 'develop' into renovate/electron-forge-monorepo 2025-03-25 19:08:50 +02:00
Elian Doran 90ab31329e Merge pull request #1507 from TriliumNext/feature/windows_signing_v3
Windows Signing
2025-03-25 17:51:12 +02:00
Elian Doran ec7b645d36 Merge pull request #1516 from TriliumNext/renovate/node-22.x
chore(deps): update dependency @types/node to v22.13.13
2025-03-25 11:53:07 +02:00
Elian Doran 3dbce19301 Merge pull request #1519 from TriliumNext/renovate/typescript-eslint-monorepo
chore(deps): update dependency typescript-eslint to v8.28.0
2025-03-25 11:52:52 +02:00
renovate[bot] 4aa834b23a chore(deps): update dependency @types/node to v22.13.13 2025-03-25 08:51:39 +00:00
Elian Doran efb0bf9e21 Merge branch 'develop' into renovate/typescript-eslint-monorepo 2025-03-25 10:50:24 +02:00
Elian Doran 19287f6474 Merge pull request #1517 from TriliumNext/renovate/react-monorepo
chore(deps): update dependency @types/react to v18.3.20
2025-03-25 10:49:45 +02:00
Elian Doran 9506d0774e Merge pull request #1518 from TriliumNext/renovate/supertest-6.x
chore(deps): update dependency @types/supertest to v6.0.3
2025-03-25 10:49:31 +02:00
Elian Doran 269cfc4689 feat(ci): trigger on renovate electron forge 2025-03-25 10:48:19 +02:00
Elian Doran d0549ebdf9 Merge branch 'develop' into feature/windows_signing_v3 2025-03-25 10:40:48 +02:00
renovate[bot] 9b96cb61cc chore(deps): update electron-forge monorepo to v7.8.0 2025-03-25 02:59:03 +00:00
renovate[bot] 220bcbd12c chore(deps): update dependency typescript-eslint to v8.28.0 2025-03-25 02:58:48 +00:00
renovate[bot] 042172cd53 chore(deps): update dependency @types/supertest to v6.0.3 2025-03-25 02:58:33 +00:00
renovate[bot] 19389e4ea0 chore(deps): update dependency @types/react to v18.3.20 2025-03-25 02:58:22 +00:00
Elian Doran bb1143e582 feat(note_icon): disable in note source (closes #1377) 2025-03-24 22:57:56 +02:00
Elian Doran 4ac57c6b46 fix(client): note icon not hiding after switching notes (closes #964) 2025-03-24 19:42:23 +02:00
Elian Doran 06e1b0f720 fix(client): tooltip overlapping with CKEditor pane (closes #844) 2025-03-24 19:36:42 +02:00
Elian Doran 0686c81a81 Merge pull request #1509 from TriliumNext/renovate/leaflet-1.x
chore(deps): update dependency @types/leaflet to v1.9.17
2025-03-24 19:25:30 +02:00
Elian Doran 76550b761e Merge pull request #1510 from TriliumNext/renovate/rollup-4.x-lockfile
chore(deps): update dependency rollup to v4.37.0
2025-03-24 19:25:08 +02:00
Elian Doran 9108ea9b8a fix(electron): disable the creation of desktop icon at runtime (closes #1488) 2025-03-24 19:21:04 +02:00
Elian Doran b0e584924b fix(eslint): disable linting of TypeScript due to types (closes #1503) 2025-03-24 19:17:54 +02:00
Adorian Doran 2c694fe5d7 style(next): remove useless CSS code 2025-03-24 19:13:28 +02:00
Elian Doran a7d6bf1bd8 feat(forge): match name for artifacts 2025-03-24 19:10:29 +02:00
Elian Doran 4108f7f353 chore(forge): ignore certain artifacts 2025-03-24 19:04:38 +02:00
Adorian Doran 2e15c926c5 style(next)/floating buttons/show table of contents: fix the rounded corners being placed on the wrong side 2025-03-24 18:42:08 +02:00
Adorian Doran 7a2eb81a81 style(next)/floating buttons: make sure the container will have a consistent height 2025-03-24 18:19:28 +02:00
Elian Doran 6f26f4d798 fix(forge): allow local building by ignoring the signing options 2025-03-24 17:53:04 +02:00
Elian Doran 9aef24eecc chore(ci): remove unnecessary extension input 2025-03-24 17:52:01 +02:00
Elian Doran 3e14ffe1e7 fix(test): flaky test due to concurrency 2025-03-24 17:42:38 +02:00
Adorian Doran e0007f7578 style(next)/floating buttons/backlink counter: fix rounded corners on hover 2025-03-24 17:34:33 +02:00
Elian Doran 04a8bb94b6 fix(ci): wrong runner for signing 2025-03-24 17:32:14 +02:00
Elian Doran c25d42cf5d chore(ci): solve issues after review 2025-03-24 17:30:37 +02:00
Adorian Doran 3159b19c46 style(next)/floating buttons/backlink counter: improve the appearance of the dropdown panel 2025-03-24 17:30:35 +02:00
Elian Doran 9f3fee2d06 chore(ci): remove now redundant input 2025-03-24 17:15:46 +02:00
Elian Doran 2045865df2 chore(ci): add back all platforms 2025-03-24 17:14:22 +02:00
Elian Doran 3acb5dad30 refactor(ci): remove redundant main workflow 2025-03-24 17:13:08 +02:00
Elian Doran 6a2818cea6 chore(ci): define forge_platform everywhere 2025-03-24 17:12:11 +02:00
Elian Doran d942daea94 chore(ci): customize shell per platform 2025-03-24 17:10:19 +02:00
Adorian Doran 283b8e9bc8 style(next)/floating buttons/backlink counter: fix the dropdown not showing up 2025-03-24 17:05:09 +02:00
Elian Doran 9aaada3f6e refactor(forge): deduplicate windows signing configuration 2025-03-24 17:04:22 +02:00
Adorian Doran 8cc7d02f36 client: add a CSS class to facilitate identifying visible widgets 2025-03-24 17:00:52 +02:00
Elian Doran 34043a8a70 feat(signing): use environment variables for the executable path 2025-03-24 17:00:37 +02:00
Elian Doran 3413c5e401 fix(nightly): double .zip in name 2025-03-24 16:55:47 +02:00
Elian Doran d4e8d9e942 fix(docker): missing sign windows script 2025-03-24 16:55:39 +02:00
Elian Doran 308632ea51 chore(ci): re-enable Windows signing logs 2025-03-24 13:30:37 +02:00
Elian Doran 18a5a55384 chore(ci): remove debug logs 2025-03-24 12:42:01 +02:00
Elian Doran d5a8387c06 Revert "chore(ci): try to use basic sign tool config"
This reverts commit 53860c4885.
2025-03-24 12:41:38 +02:00
Elian Doran 53860c4885 chore(ci): try to use basic sign tool config 2025-03-24 12:15:15 +02:00
Elian Doran 6f54ac7446 chore(ci): change signing log 2025-03-24 12:05:46 +02:00
Elian Doran 10d8cd95a6 chore(ci): enable windows installer logs 2025-03-24 12:05:34 +02:00
Elian Doran 58e9c7e389 feat(ci): pass signing to squirrel 2025-03-24 11:21:31 +02:00
Elian Doran bfdb3e2add fix(ci): double trigger for nightly 2025-03-24 09:25:19 +02:00
Elian Doran ad8b5c7c9d fix(ci): path for hook module script 2025-03-24 08:59:46 +02:00
renovate[bot] 728d2ccfaf chore(deps): update dependency rollup to v4.37.0 2025-03-24 01:55:36 +00:00
renovate[bot] cb7de2430d chore(deps): update dependency @types/leaflet to v1.9.17 2025-03-24 01:55:27 +00:00
Elian Doran 40f4fdab47 feat(ci): set up signing hook 2025-03-23 23:22:22 +02:00
Elian Doran ad0f844681 chore(ci): use signing runner 2025-03-23 23:20:13 +02:00
Elian Doran dd26762b1f feat(ci): upload test artifacts for nightly build 2025-03-23 23:17:54 +02:00
Elian Doran 5d2ea4337c fix(ci): use right directory for artifact gathering 2025-03-23 23:08:02 +02:00
Elian Doran fae9a1f796 chore(ci): use electron-forge hook for gathering artifacts 2025-03-23 23:06:41 +02:00
Elian Doran a709f68af9 chore(ci): set up node modules 2025-03-23 22:47:59 +02:00
Elian Doran 8e2a95b5c4 chore(ci): use different way of specifying app dir pt. 2 2025-03-23 22:41:26 +02:00
Elian Doran b4dc493a5f chore(ci): use different way of specifying app dir 2025-03-23 22:12:31 +02:00
Elian Doran ab927ad885 chore(ci): set up npm ci again 2025-03-23 21:55:48 +02:00
Elian Doran d128e9df25 chore(ci): run with debug 2025-03-23 21:48:40 +02:00
Elian Doran 9358f90b48 chore(ci): revert change 2025-03-23 21:41:27 +02:00
Elian Doran a13c9790bd chore(ci): try running npm i at build step 2025-03-23 21:35:11 +02:00
Elian Doran c477e728ea chore(ci): define forge platform at workflow level 2025-03-23 21:14:51 +02:00
Elian Doran 98013bc725 chore(ci): use cmd 2025-03-23 21:10:55 +02:00
Elian Doran c50a67f36b chore(ci): remove server build temporarily 2025-03-23 21:02:37 +02:00
Elian Doran d77b3a07e2 chore(ci): remove unnecessary shell 2025-03-23 21:02:16 +02:00
Elian Doran 89efc55d52 chore(ci): trigger windows only for now 2025-03-23 21:00:37 +02:00
Elian Doran 6aee38337e fix(mobile): width on tablet view 2025-03-23 20:03:24 +02:00
Elian Doran 6312bd8817 Merge pull request #1384 from TriliumNext/chore_lint-share
chore: fix lint issues in `src/share`
2025-03-23 13:20:50 +02:00
Elian Doran 8f25d4c810 Merge pull request #1500 from TriliumNext/revert-1495-renovate/apple-actions-import-codesign-certs-4.x
Revert "chore(deps): update apple-actions/import-codesign-certs action to v4"
2025-03-23 12:39:40 +02:00
Elian Doran 3173062f48 Revert "chore(deps): update apple-actions/import-codesign-certs action to v4" 2025-03-23 12:29:34 +02:00
Elian Doran f341bb3547 feat(ci): trigger nightly without publish on build-electron change 2025-03-23 12:29:13 +02:00
Elian Doran d52ca626e9 Merge branch 'develop' into chore_lint-share 2025-03-23 12:13:22 +02:00
Elian Doran 27875c4622 fix(e2e): broken after change in Mermaid 2025-03-23 12:10:11 +02:00
Elian Doran 613a7d72ad Merge pull request #1480 from jshprentz/develop
Add {isoMonth} month pattern to day notes
2025-03-23 09:53:40 +02:00
Elian Doran f815420d1f Merge pull request #1493 from TriliumNext/renovate/eslint-monorepo
chore(deps): update eslint monorepo to v9.23.0
2025-03-23 09:31:10 +02:00
Elian Doran 0994e33933 Merge pull request #1494 from TriliumNext/renovate/eslint-linter-browserify-9.x
fix(deps): update dependency eslint-linter-browserify to v9.23.0
2025-03-23 09:29:07 +02:00
Elian Doran be2b8d2080 Merge pull request #1495 from TriliumNext/renovate/apple-actions-import-codesign-certs-4.x
chore(deps): update apple-actions/import-codesign-certs action to v4
2025-03-23 09:28:28 +02:00
SiriusXT 87c70cb46e Fixed focusing on old windows when opening new windows from tray 2025-03-23 10:44:01 +08:00
Elian Doran 4af586e237 Merge branch 'develop' into renovate/eslint-monorepo 2025-03-23 00:28:03 +02:00
Elian Doran d2406a7574 Merge branch 'develop' into renovate/eslint-linter-browserify-9.x 2025-03-23 00:27:51 +02:00
Elian Doran 25c66e7c57 Merge branch 'develop' into renovate/apple-actions-import-codesign-certs-4.x 2025-03-23 00:27:37 +02:00
Elian Doran 0313b4b9c9 Merge pull request #1492 from TriliumNext/renovate/node-22.x
chore(deps): update dependency @types/node to v22.13.11
2025-03-23 00:27:15 +02:00
Elian Doran f5a4acc097 Merge branch 'develop' into tray 2025-03-22 19:00:06 +02:00
Elian Doran bc41deea14 Merge branch 'develop' into renovate/node-22.x 2025-03-22 18:59:48 +02:00
Elian Doran c97f6da615 Merge pull request #1498 from hasecilu/i18n/Spanish
chore(i18n): update Spanish translation
2025-03-22 18:43:32 +02:00
hasecilu 81e250f5c5 chore(i18n): update Spanish translation 2025-03-22 09:56:22 -06:00
Jin f42ecb2e83 Merge branch 'develop' into feature/MFA 2025-03-22 15:56:16 +01:00
Jin e3fb871e4f feat: 🎸 Reformat MFA option page 2025-03-22 15:55:14 +01:00
Elian Doran ccb98d69fa fix(mindmap): pane resizer not always working 2025-03-22 16:47:01 +02:00
Elian Doran ab4e9db864 feat(mindmap): add PNG export 2025-03-22 16:35:07 +02:00
Elian Doran 67bfeda3d9 chore(svg_export): change icon 2025-03-22 16:33:00 +02:00
Elian Doran 7cc8dd082d feat(mermaid): enable export as PNG (closes #536) 2025-03-22 16:30:19 +02:00
Jin 717ad3b97d feat: 🎸 Port MFA to ts 2025-03-22 14:56:17 +01:00
Elian Doran 047c4dc4ca fix(mermaid): not scrolling up properly (closes #282) 2025-03-22 15:55:55 +02:00
Elian Doran 9e75c32ded fix(mermaid): enforce vertical layout on mobile 2025-03-22 15:51:21 +02:00
Elian Doran 5282f9f0bf feat(mermaid): set right mime type 2025-03-22 15:48:03 +02:00
Elian Doran 858ad91708 feat(import/single): mermaid with .mmd extension 2025-03-22 15:45:36 +02:00
Jin 54a5f8164a feat: 🎸 Fix option defintions 2025-03-22 14:43:32 +01:00
Elian Doran 3dae771e90 feat(import/single): mermaid with .mermaid extension 2025-03-22 15:41:56 +02:00
Jin c3d3ab4330 Merge branch 'develop' into feature/MFA 2025-03-22 14:38:22 +01:00
Jin 9d49546bc9 feat: 🎸 Fix ts compile error 2025-03-22 14:35:37 +01:00
Elian Doran 16cbd2f793 feat(export/single): mermaid with right extension and MIME 2025-03-22 15:22:55 +02:00
Elian Doran 6ab820f172 refactor(export/single): make note type mapping testable 2025-03-22 15:20:58 +02:00
Elian Doran 60d3bafc8e fix(types): build errors due to CodeMirror opts 2025-03-22 15:04:31 +02:00
Elian Doran 7c9a7c9ff6 refactor(mermaid): move mermaid config to service 2025-03-22 15:02:04 +02:00
Elian Doran 1463411ad1 refactor(mermaid): stop using deprecated APIs 2025-03-22 14:57:11 +02:00
Elian Doran 26fa1ec420 fix(text/mermaid): not rendering due to webpack change 2025-03-22 14:51:13 +02:00
Elian Doran 985b1b7fce chore(mermaid): remove redundant message 2025-03-22 14:42:07 +02:00
Elian Doran 87209285df feat(mermaid): use admonition style for error messages 2025-03-22 14:39:43 +02:00
Elian Doran 5bea0680fb style(mermaid): preserve whitespace in error messages 2025-03-22 14:36:05 +02:00
Elian Doran 5a72d66321 feat(mermaid): recenter even when under error 2025-03-22 14:34:42 +02:00
Elian Doran 82cb31da53 style(mermaid): vertical layout for errors 2025-03-22 14:15:05 +02:00
Elian Doran 72c024fc26 fix(mermaid): toggle read-only for protected note 2025-03-22 14:12:24 +02:00
Elian Doran b777e916c4 feat(mermaid): hide layout switcher if in readonly mode 2025-03-22 14:10:38 +02:00
Elian Doran 3bbb2c3e80 feat(mermaid): save SVG attachment only when needed 2025-03-22 13:56:29 +02:00
Jin c8164c81be feat: 🎸 fix recovery_codes error 2025-03-22 12:47:49 +01:00
Jin b320553d18 feat: 🎸 fix open_id error 2025-03-22 12:46:59 +01:00
Jin 0871d16fbc feat: 🎸 remove conflict code 2025-03-22 12:41:22 +01:00
Elian Doran fd46cd7529 feat(mermaid): custom zoom buttons 2025-03-22 13:36:11 +02:00
Jin fdc10d0120 feat: 🎸 fix ts error 2025-03-22 12:35:37 +01:00
Jin 8df1e3263b Merge branch 'develop' into feature/MFA 2025-03-22 12:35:00 +01:00
Elian Doran 77fbeb4351 refactor(note_map): extract floating button style 2025-03-22 13:06:00 +02:00
Elian Doran 68b3c06c95 feat(mermaid): reintroduce editability basic widget 2025-03-22 12:58:36 +02:00
Elian Doran 2bbd9a4362 fix(mermaid): read-only button shown in view source 2025-03-22 12:57:32 +02:00
Elian Doran 831cd19d0b refactor(client): implement read-only toggle floating button 2025-03-22 12:55:30 +02:00
Elian Doran cd6ef4d3ab refactor(client): move edit button to floating buttons dir 2025-03-22 12:32:06 +02:00
Elian Doran 8996a56680 feat(mermaid): support readonly mode 2025-03-22 12:23:50 +02:00
Elian Doran ef9bec9dd4 feat(mermaid): custom title for switch layout button 2025-03-22 10:48:12 +02:00
Elian Doran b54603b7d7 feat(mermaid): change icon based on new layout 2025-03-22 10:43:24 +02:00
Elian Doran afa865765b fix(mermaid): split on vertical layout 2025-03-22 10:36:54 +02:00
Elian Doran 4860594758 feat(mermaid): react to layout change immediately 2025-03-22 10:34:22 +02:00
Elian Doran cf874b5ee8 feat(mermaid): add basic support for vertical layout 2025-03-22 10:27:42 +02:00
renovate[bot] 007817bbdb chore(deps): update apple-actions/import-codesign-certs action to v4 2025-03-22 01:59:15 +00:00
renovate[bot] 88e0aec3d6 fix(deps): update dependency eslint-linter-browserify to v9.23.0 2025-03-22 01:59:08 +00:00
renovate[bot] cc9b0987b2 chore(deps): update eslint monorepo to v9.23.0 2025-03-22 01:58:58 +00:00
renovate[bot] e8242e87fb chore(deps): update dependency @types/node to v22.13.11 2025-03-22 01:58:47 +00:00
Elian Doran 91dca2df35 feat(mermaid): disable line wrapping by default 2025-03-22 02:36:47 +02:00
Elian Doran acf6d9dc4f refactor(split_editor): allow different attachment name 2025-03-22 02:21:24 +02:00
Elian Doran 98e4d563ad chore(mermaid): remove old widget 2025-03-22 02:15:09 +02:00
Elian Doran 373c0799fe chore(mermaid): disable linter for now 2025-03-22 02:15:09 +02:00
Elian Doran 9985e9b623 feat(mermaid): add visual indicator for preview on error 2025-03-22 02:15:09 +02:00
Elian Doran f42a89a548 feat(mermaid): add an error display continer 2025-03-22 02:15:09 +02:00
Elian Doran d4cd550b7a feat(linter/mermaid): improve parsing of messages 2025-03-22 02:15:09 +02:00
Elian Doran 8b08e67fdc feat(linter/mermaid): better handling of zero position 2025-03-22 02:15:09 +02:00
Elian Doran 5d8ac3b9f7 feat(test): add test for mermaid linter 2025-03-22 02:15:09 +02:00
Elian Doran 44db1545a1 feat(mermaid): start implementing a basic linter 2025-03-22 02:15:09 +02:00
Elian Doran c416fca88a fix(mermaid): bring back export as SVG 2025-03-22 02:15:09 +02:00
Elian Doran 1fb2b5341d fix(mermaid): saving of attachment 2025-03-22 02:15:09 +02:00
Elian Doran b8a560354f refactor(mermaid): recenter on new note 2025-03-22 02:15:09 +02:00
Elian Doran 28c51cb38a refactor(client): use webpack for mermaid 2025-03-22 02:15:09 +02:00
Elian Doran f4d5b9fc29 feat(mermaid): swap preview and content 2025-03-22 02:15:09 +02:00
Elian Doran 8cab2aec0f fix(mermaid): bring back ELK rendering 2025-03-22 02:15:09 +02:00
Elian Doran 2b19675d1a feat(mermaid): smoother split drag 2025-03-22 02:15:09 +02:00
Elian Doran ae18b4b634 fix(mermaid): bring back auto resize on drag 2025-03-22 02:15:09 +02:00
Elian Doran cbc6efdad2 fix(mermaid): bring back pan/zoom 2025-03-22 02:15:09 +02:00
Elian Doran e0a8b64b4d fix(mermaid): refresh when editing 2025-03-22 02:15:09 +02:00
Elian Doran 67ab91267d fix(mermaid): bring back rendering 2025-03-22 02:15:09 +02:00
Elian Doran 8952ff512f feat(split_editor): make the two panes resizable 2025-03-22 02:15:09 +02:00
Elian Doran 395d76a156 feat(mermaid): basic horizontal layout 2025-03-22 02:15:09 +02:00
Elian Doran 56da5f7761 refactor(client/ts): start implementing experimental split type view for mermaid 2025-03-22 02:15:09 +02:00
Elian Doran 7a16774cdc feat(mermaid): make diagram full width for pan/zoom purposes 2025-03-22 02:15:09 +02:00
Adorian Doran 592a7fe771 style(next)/floating buttons: update the highlight animation 2025-03-22 01:28:53 +02:00
Adorian Doran 4292d67b95 style(next)/floating buttons: tweak 2025-03-22 01:08:57 +02:00
Adorian Doran 44419b7cb5 style/floating buttons: change some icons 2025-03-22 01:08:30 +02:00
Adorian Doran eab644248b style(next): use the new floating buttons style for the geo map notes as well 2025-03-22 00:04:02 +02:00
Adorian Doran 1299e0c855 Merge branch 'develop' of https://github.com/TriliumNext/Notes into develop 2025-03-21 20:21:46 +02:00
Adorian Doran 058983e98d style(next)/floating buttons: tweak 2025-03-21 20:21:44 +02:00
Elian Doran 772d07a60f Merge pull request #1466 from TriliumNext/feature/port_ts
client: port ts
2025-03-21 18:49:52 +02:00
Elian Doran eab10acc98 Merge branch 'develop' into feature/port_ts 2025-03-21 18:39:33 +02:00
Elian Doran 7008acf511 chore(client/ts): remove check_ts_progress script 2025-03-21 18:16:37 +02:00
Elian Doran c2a7b92660 chore(client/ts): port desktop_layout 2025-03-21 18:14:37 +02:00
Elian Doran 8e3a75ad57 chore(client/ts): reduce log level for syntax highlight widget 2025-03-21 17:48:54 +02:00
Elian Doran b876f98d69 fix(client/ts): fix rest of build errors 2025-03-21 17:39:18 +02:00
Elian Doran 1ab87be0e6 chore(client/ts): fix errors in editable_text 2025-03-21 17:34:39 +02:00
Elian Doran ebbf29b1a5 chore(client/ts): port syntax_highlight 2025-03-21 15:50:58 +02:00
Elian Doran 08df7e6484 Merge pull request #1481 from TriliumNext/renovate/electron-35.x
chore(deps): update dependency electron to v35.0.3
2025-03-21 13:43:30 +02:00
Elian Doran 7277c10f38 Merge pull request #1482 from TriliumNext/renovate/typedoc-0.x
chore(deps): update dependency typedoc to v0.28.1
2025-03-21 13:43:06 +02:00
Elian Doran 6569a72bc4 Merge pull request #1483 from TriliumNext/renovate/codemirror-5.x
fix(deps): update dependency codemirror to v5.65.19
2025-03-21 13:42:49 +02:00
Elian Doran cb630337ca Merge pull request #1484 from TriliumNext/renovate/force-graph-1.x
fix(deps): update dependency force-graph to v1.49.5
2025-03-21 13:42:24 +02:00
Elian Doran 60d5497a6c Merge pull request #1485 from TriliumNext/renovate/multer-1.x
fix(deps): update dependency multer to v1.4.5-lts.2
2025-03-21 13:41:48 +02:00
Elian Doran 98d3b54c5e Merge pull request #1486 from TriliumNext/renovate/supertest-7.x
chore(deps): update dependency supertest to v7.1.0
2025-03-21 13:41:11 +02:00
SiriusXT da59dd2ece Add Chinese translation 2025-03-21 13:56:21 +08:00
SiriusXT 21b17889ac Merge branch 'develop' into tray 2025-03-21 11:12:03 +08:00
SiriusXT be2064fbf0 Fix tray exception when multiple windows 2025-03-21 11:08:33 +08:00
renovate[bot] 90cdb5d641 chore(deps): update dependency supertest to v7.1.0 2025-03-21 02:40:58 +00:00
renovate[bot] 0e8cd3b4ba fix(deps): update dependency multer to v1.4.5-lts.2 2025-03-21 02:40:48 +00:00
renovate[bot] 1b5d665fbc fix(deps): update dependency force-graph to v1.49.5 2025-03-21 02:40:38 +00:00
renovate[bot] 8755c84dea fix(deps): update dependency codemirror to v5.65.19 2025-03-21 02:40:27 +00:00
renovate[bot] f9878962b8 chore(deps): update dependency typedoc to v0.28.1 2025-03-21 02:40:17 +00:00
renovate[bot] cf70dd0b4f chore(deps): update dependency electron to v35.0.3 2025-03-21 02:40:05 +00:00
Adorian Doran 6d82905ad4 style(next)/floating buttons: tweak 2025-03-21 04:12:12 +02:00
Adorian Doran 99bd803d81 style(next)/floating buttons: tweak the separator color 2025-03-21 03:40:07 +02:00
Adorian Doran 6b71efbfd3 style(next): restyle the floating buttons 2025-03-21 03:17:43 +02:00
Joel Shprentz c1e8542f74 Correct placeholder name in documentation 2025-03-21 00:59:45 +00:00
Joel Shprentz 5f26a503af In month note title patterns, replace {isoMonth} with e.g. "2025-03" for March 2025. 2025-03-20 22:59:20 +00:00
Elian Doran 5b82b750dc chore(client/ts): port editable_text 2025-03-20 23:42:32 +02:00
Elian Doran 1f69259a93 chore(client/ts): port abstract_text_type_widget 2025-03-20 23:09:06 +02:00
Adorian Doran 7202afab8e style(next)/options: add a gap between consecutive buttons 2025-03-20 22:22:39 +02:00
Elian Doran b44bb4053c refactor(deps): use webpack for jsplumb & panzoom 2025-03-20 21:51:03 +02:00
Elian Doran 3047957239 chore(client/ts): port type_widgets/relation_map 2025-03-20 21:07:10 +02:00
Adorian Doran 4cb866c0e6 client/options/sync: reorder the input fields 2025-03-20 19:59:13 +02:00
Adorian Doran 480292dc01 style(next)/options/appearance/fonts: refactor input groups 2025-03-20 19:02:46 +02:00
Adorian Doran b705e24a97 style(next): tweak number input groups 2025-03-20 18:58:19 +02:00
Elian Doran e682f01c47 chore(client/ts): port promoted_attributes 2025-03-20 18:39:04 +02:00
Elian Doran c27d5afdf2 chore(client/ts): port inherited_attribute_list 2025-03-20 18:28:37 +02:00
Elian Doran bd06d1d7b2 chore(client/ts): port image_properties 2025-03-20 18:25:17 +02:00
Adorian Doran 861f1efa5b Merge branch 'develop' of https://github.com/TriliumNext/Notes into develop 2025-03-20 18:22:44 +02:00
Elian Doran a2b6bb7ecf chore(client/ts): port file_properties 2025-03-20 18:22:42 +02:00
Adorian Doran 0086d645ef client/options/other/snapshot limit: specify the measurement unit inside of the input field 2025-03-20 18:22:35 +02:00
Elian Doran af0db5d508 style(next): fix regression in horizontal mica 2025-03-20 18:17:15 +02:00
Adorian Doran 113b42f32d Merge branch 'develop' of https://github.com/TriliumNext/Notes into develop 2025-03-20 18:04:39 +02:00
Adorian Doran e8a745c11a client/options/sync/timeout: specify the measurement unit inside of the input field 2025-03-20 18:04:36 +02:00
Elian Doran 947dea5e3a Merge pull request #1343 from TriliumNext/renovate/electron-35.x
chore(deps): update dependency electron to v35
2025-03-20 18:03:11 +02:00
Elian Doran 48e9e30efe Merge branch 'feature/port_ts' of ssh://github.com/TriliumNext/Notes into feature/port_ts 2025-03-20 17:57:16 +02:00
Adorian Doran 5e6fc5b183 client/options/images/JPEG quality: specify the measurement unit inside of the input field 2025-03-20 17:55:22 +02:00
Adorian Doran 772b69eebe client/options/images/max dimensions: specify the measurement unit inside of the input field 2025-03-20 17:53:07 +02:00
Adorian Doran 4f3bc20bac client/options/code notes/automatic read-only size: specify the measurement unit inside of the input field 2025-03-20 17:48:40 +02:00
Adorian Doran 65ee564518 client/options/text notes/automatic read-only size: specify the measurement unit inside of the input field 2025-03-20 17:45:22 +02:00
Adorian Doran de7b7e3d8f client/options/text notes/table of contents: specify the measurement unit inside of the input field 2025-03-20 17:41:30 +02:00
Adorian Doran bec15fb9c3 client/options/appearance/max content width: specify the measurement unit inside of the input field 2025-03-20 17:34:58 +02:00
Adorian Doran 7288757777 style(next)/options/appearance: tweak font size inputs 2025-03-20 17:23:29 +02:00
Adorian Doran d189f2b66b Merge branch 'develop' of https://github.com/TriliumNext/Notes into develop 2025-03-20 14:40:44 +02:00
Adorian Doran 57b5e47b5a style(next): reorganize CSS 2025-03-20 14:40:42 +02:00
JYC333 d70cf14947 Merge branch 'develop' into renovate/electron-35.x 2025-03-20 10:56:49 +01:00
Elian Doran 8f6fcee67d chore(client/ts): port import dialog 2025-03-20 10:41:19 +02:00
Elian Doran 3527ab2c5d chore(client/ts): port include dialog 2025-03-20 10:41:19 +02:00
Elian Doran 8d14092a91 chore(client/ts): port more dialogs 2025-03-20 10:41:19 +02:00
Elian Doran ffa463f1fc chore(client/ts): fix build errors 2025-03-20 10:41:19 +02:00
Elian Doran 7c805eb427 chore(client/ts): port find_in_html/text 2025-03-20 10:41:19 +02:00
Elian Doran ef59b636b1 client: port ts 2025-03-20 10:41:19 +02:00
Elian Doran 7ea6c97c6f feat(in-app-help): improve code block style 2025-03-20 10:28:24 +02:00
Elian Doran 911e112964 Merge pull request #1470 from TriliumNext/renovate/react-monorepo
chore(deps): update dependency @types/react to v18.3.19
2025-03-20 10:21:57 +02:00
Adorian Doran 5f12ddaa14 style(next): reorganize CSS 2025-03-20 10:20:25 +02:00
Adorian Doran 2191b1b9fd style(next): reorganize CSS 2025-03-20 10:04:05 +02:00
Adorian Doran 431ffa7820 style(next): reorganize CSS 2025-03-20 09:32:22 +02:00
Adorian Doran ea467c392d Merge branch 'develop' of https://github.com/TriliumNext/Notes into develop 2025-03-20 09:18:43 +02:00
Adorian Doran f6e0e93629 style(next): reorganize CSS 2025-03-20 09:18:39 +02:00
Elian Doran 7fe594d4ad chore(deps): update mind-elixir to latest (closes #1464) 2025-03-20 09:03:30 +02:00
Elian Doran 6d9c41f524 Merge pull request #1467 from TriliumNext/deps_move-mind-elixir_webpack
deps: bundle mind-elixir with webpack
2025-03-20 08:59:30 +02:00
Elian Doran 3e7d41c738 Merge pull request #1469 from TriliumNext/renovate/express-5.x
chore(deps): update dependency @types/express to v5.0.1
2025-03-20 08:56:36 +02:00
Elian Doran 7fda0dd572 Merge pull request #1474 from TriliumNext/renovate/typescript-eslint-monorepo
chore(deps): update dependency typescript-eslint to v8.27.0
2025-03-20 08:56:02 +02:00
Elian Doran 60a33d8279 Merge pull request #1475 from TriliumNext/renovate/sanitize-html-2.x
fix(deps): update dependency sanitize-html to v2.15.0
2025-03-20 08:55:29 +02:00
Elian Doran 50b9120bdc Merge pull request #1473 from TriliumNext/renovate/axios-1.x
fix(deps): update dependency axios to v1.8.4
2025-03-20 08:55:09 +02:00
Elian Doran bce4cfe731 chore(turndown-plugin-gfm): fix build warnings 2025-03-20 08:53:01 +02:00
Elian Doran 419d5ffd1b chore(deps): update turndown-plugin-gfm to latest deps 2025-03-20 08:53:01 +02:00
renovate[bot] b26555604c fix(deps): update dependency sanitize-html to v2.15.0 2025-03-20 02:13:24 +00:00
renovate[bot] 1e5f7ef6dd chore(deps): update dependency typescript-eslint to v8.27.0 2025-03-20 02:13:14 +00:00
renovate[bot] 3b9fcede0d fix(deps): update dependency axios to v1.8.4 2025-03-20 02:12:59 +00:00
renovate[bot] 0ae705b925 chore(deps): update dependency @types/react to v18.3.19 2025-03-20 02:11:14 +00:00
renovate[bot] 49a77790f2 chore(deps): update dependency @types/express to v5.0.1 2025-03-20 02:11:03 +00:00
Adorian Doran 2031882c0d style(next)/jump to note: tweak the modal's padding 2025-03-19 23:38:03 +02:00
Elian Doran 9eec7237de chore(client/ts): port include dialog 2025-03-19 23:27:52 +02:00
Elian Doran d0e33f8aaa chore(client/ts): port more dialogs 2025-03-19 23:06:16 +02:00
Elian Doran fac575bd4a Merge remote-tracking branch 'origin/develop' into feature/port_ts 2025-03-19 22:41:08 +02:00
Elian Doran 119bb38062 chore(client/ts): fix build errors 2025-03-19 22:39:49 +02:00
Elian Doran 89d51a9c4f chore(client/ts): port find_in_html/text 2025-03-19 22:00:41 +02:00
Panagiotis Papadopoulos 90d0c859fc chore(mind_map): import node-menu's style.css to allow webpack to bundle it
previously this was loaded from the node_modules folder and was exposed via a static asset path
-> since we got rid of this with the last commit, we need to instead let webpack bundle it "importing" the css here
2025-03-19 21:00:37 +01:00
Panagiotis Papadopoulos feb9fa03c3 chore(deps): move mind-elixir related packages to devDependencies
webpack takes care of bundling these, so we don't need the modules at runtime anymore
2025-03-19 20:03:24 +01:00
Elian Doran 7f87318f8f Merge pull request #1462 from TriliumNext/port_dialogs
Port dialogs to ts
2025-03-19 20:23:33 +02:00
JYC333 83d6e329ba Merge branch 'develop' into port_dialogs 2025-03-19 19:20:46 +01:00
Elian Doran d6d08cbb89 chore(deps): update package lock 2025-03-19 20:19:24 +02:00
Elian Doran 68f212a679 refactor(types): unnecessary any 2025-03-19 20:19:24 +02:00
Elian Doran d0948727df Merge pull request #1457 from TriliumNext/e2e_fix
refactor: 💡 Improve e2e test stability
2025-03-19 20:18:20 +02:00
Elian Doran 716f8ecc17 Merge pull request #1340 from TriliumNext/fix_tab
Fix bug after porting tab manager
2025-03-19 20:17:21 +02:00
Elian Doran 83afecdced Merge branch 'develop' into fix_tab 2025-03-19 20:10:38 +02:00
Elian Doran 80066fd2f5 chore(docs): update meta and sync import/export 2025-03-19 20:06:02 +02:00
Elian Doran 957642caaa fix(build): dependency issue when run under docker 2025-03-19 20:00:22 +02:00
Panagiotis Papadopoulos 33922c52f8 fix(mind_map): fix node-menu visibility
=> rename css class name to match upstream

the class name got changed from ".mind-elixir → .map-container" by upstream via https://github.com/SSShooter/mind-elixir-core/commit/294c2d5bb06970fd39270ccbeb0fdce44c865ae3

partially addresses #1464 → this allows us to see the node-menu sidebar again
2025-03-19 18:37:42 +01:00
Elian Doran 0408b3d260 chore(deps): remove @joplin/turndown-plugin-gfm 2025-03-19 19:24:06 +02:00
Elian Doran a4ae0ba628 chore(build): add turndown-plugin-gfm to copy-dist 2025-03-19 19:23:43 +02:00
Elian Doran 7315d38cb6 Merge remote-tracking branch 'origin/develop' into develop 2025-03-19 18:56:44 +02:00
Elian Doran 18a50c6339 feat(export/markdown): remove joplin table wrapper 2025-03-19 18:54:39 +02:00
Elian Doran 909b7f5d39 chore(docs): remove incorrect # or ~ prefix in calendar view 2025-03-19 18:50:39 +02:00
Elian Doran f23b45318d fix(export/markdown): fix code in tables 2025-03-19 18:42:40 +02:00
Elian Doran 884c5986ec chore(markdown/export): use in-tree plugin 2025-03-19 18:31:45 +02:00
Adorian Doran f14c101d6d style(next)/launcher bar: fix the focus outline for the global menu on the vertical layout 2025-03-19 18:26:13 +02:00
Elian Doran 2021c8f751 chore(turndown-plugin-gfm): align with upstream
https://github.com/laurent22/joplin/commit/219d5bcae332be2f2cb2c1425362100b03e363c7
2025-03-19 18:22:20 +02:00
Elian Doran d3423127d8 Add 'packages/turndown-plugin-gfm/' from commit '0f43299c17108e9508e7e6237369e86f504ea60a'
git-subtree-dir: packages/turndown-plugin-gfm
git-subtree-mainline: ebebdd0b07
git-subtree-split: 0f43299c17
2025-03-19 18:16:20 +02:00
Adorian Doran c93ac0445e style(next)/launcher bar: use a custom focus rectangle for the global menu button 2025-03-19 18:10:54 +02:00
Adorian Doran eb13b34429 style(next)/launcher bar: use a custom focus rectangle for buttons 2025-03-19 18:02:58 +02:00
Elian Doran ebebdd0b07 docs(calendar): mention different views 2025-03-19 18:01:52 +02:00
Elian Doran be5e2f529f fix(in-app-help): in-app help buttons not pointing to the right page 2025-03-19 17:53:40 +02:00
Adorian Doran 28cb621bea style(next)/launcher bar: tweak the appearance in the horizontal layout 2025-03-19 17:39:38 +02:00
Adorian Doran f2f5af1c4b style(next)/launcher bar: use distinct theme variables for the vertical / horizontal layouts 2025-03-19 17:30:30 +02:00
Jin a0c025014c fix: 🐛 Fix right click behavior
Fix the bug that when right click on unactive note and do move and clone
command, it still gonna move and clone the active note
2025-03-19 15:14:17 +01:00
Panagiotis Papadopoulos 20bbb80805 chore(deps): move @fullcalendar related to devDependencies
webpack takes care of bundling these, so we don't need the modules at runtime anymore
2025-03-19 14:47:51 +01:00
Jin 43ef9415d2 refactor: 💡 Port clone_to to ts 2025-03-19 14:27:33 +01:00
Jin 1aa6c17b56 refactor: 💡 Port bulk actions to ts 2025-03-19 14:22:40 +01:00
Jin 91a963fafd refactor: 💡 Port branch prefix to ts 2025-03-19 13:59:36 +01:00
SiriusXT 606e6bcca2 Click the icon to show the window 2025-03-19 15:35:12 +08:00
Jin 49d7fa1735 fix: 🐛 Fix playwright test 2025-03-18 22:01:08 +01:00
Jin ae1a4b7a80 fix: 🐛 Fix tab empty path behavior 2025-03-18 21:02:20 +01:00
Jin b18cfb5d20 refactor: 💡 Fix ts error 2025-03-18 21:02:20 +01:00
Jin e12be14dc9 refactor: 💡 remove redundant code 2025-03-18 21:02:20 +01:00
Jin 0858f531e4 fix: 🐛 can't move a tab to new window 2025-03-18 21:02:20 +01:00
Jin c9c18146f4 refactor: 💡 refactor serval event names
refactore serval event names to follow the current usage in repo
2025-03-18 21:02:20 +01:00
Jin a9d8d7d3c5 fix: 🐛 fix wrong triggerEvent usage 2025-03-18 21:02:20 +01:00
Jin 469c2c3ce9 Revert "Revert "port tab manager to ts""
This reverts commit 3855f0e75f.
2025-03-18 21:02:20 +01:00
Elian Doran 96e2cc29e0 fix(mermaid): diagram still displayed on error 2025-03-18 20:43:11 +02:00
Elian Doran 475374a04b feat(mermaid): reduce flicker when editing chart 2025-03-18 20:37:06 +02:00
Elian Doran b66677720d feat(mermaid): restore pan & zoom when changing chart 2025-03-18 20:35:47 +02:00
Elian Doran eeb88ea559 refactor(mermaid): deduplicate gutter size constant 2025-03-18 19:57:41 +02:00
Elian Doran b524f7876a feat(mermaid): add split between diagram and code 2025-03-18 19:35:23 +02:00
Elian Doran 3fe8fede9a fix(mermaid): event leak 2025-03-18 19:03:25 +02:00
Elian Doran 4e81e1e5a8 style(mermaid): redundant margins 2025-03-18 18:36:20 +02:00
Elian Doran 6f15169b18 feat(mermaid): better zoom mechanism (closes #474) 2025-03-18 18:31:22 +02:00
Jin 464084ebf4 refactor: 💡 Improve e2e test stability 2025-03-18 14:17:35 +01:00
Elian Doran 16cc543d59 Merge pull request #1454 from TriliumNext/renovate/helmet-8.x
fix(deps): update dependency helmet to v8.1.0
2025-03-18 09:17:01 +02:00
Elian Doran 165b5ad251 Merge branch 'develop' into renovate/helmet-8.x 2025-03-18 09:06:13 +02:00
Elian Doran 2f42fee9b3 Merge pull request #1452 from TriliumNext/renovate/better-sqlite3-11.x-lockfile
fix(deps): update dependency better-sqlite3 to v11.9.1
2025-03-18 09:05:43 +02:00
Elian Doran 71188ab98d Merge pull request #1440 from TriliumNext/renovate/better-sqlite3-11.x
fix(deps): update dependency better-sqlite3 to v11.9.1
2025-03-18 09:04:13 +02:00
Elian Doran ab38005817 Merge pull request #1450 from TriliumNext/renovate/playwright-monorepo
chore(deps): update dependency @playwright/test to v1.51.1
2025-03-18 09:03:45 +02:00
Elian Doran a07b734a91 Merge pull request #1451 from TriliumNext/renovate/vitest-monorepo
chore(deps): update vitest monorepo to v3.0.9
2025-03-18 09:03:20 +02:00
Elian Doran 1e3d7ce5df Merge pull request #1453 from TriliumNext/renovate/sass-1.x
chore(deps): update dependency sass to v1.86.0
2025-03-18 09:02:57 +02:00
Elian Doran 48d987d25d chore(package): get rid of tsyncserver (closes #1455) 2025-03-18 09:01:14 +02:00
renovate[bot] 0cfeeac4e3 fix(deps): update dependency helmet to v8.1.0 2025-03-18 02:55:36 +00:00
renovate[bot] 5ed25cbce7 fix(deps): update dependency better-sqlite3 to v11.9.1 2025-03-18 02:55:29 +00:00
renovate[bot] ce97d36500 chore(deps): update dependency sass to v1.86.0 2025-03-18 02:55:20 +00:00
renovate[bot] 7ae1f6e02b fix(deps): update dependency better-sqlite3 to v11.9.1 2025-03-18 02:55:10 +00:00
renovate[bot] 611d93cf20 chore(deps): update vitest monorepo to v3.0.9 2025-03-18 02:54:58 +00:00
renovate[bot] a5fe3788a4 chore(deps): update dependency @playwright/test to v1.51.1 2025-03-18 02:54:43 +00:00
Elian Doran f68347f92c client: port ts 2025-03-17 22:46:00 +02:00
Elian Doran 4f7f7c460a fix(admonitions): unnecessary right margin 2025-03-17 18:28:32 +02:00
Elian Doran 74064c8d49 fix(calendar): regression in multi-day selection 2025-03-16 21:56:19 +02:00
Elian Doran e34817d89f feat(docs): update calendar view 2025-03-16 21:31:58 +02:00
Elian Doran 2544294811 feat(calendar): save and restore selected view 2025-03-16 21:20:28 +02:00
Elian Doran e4bb8cb233 feat(calendar): add year view 2025-03-16 20:57:57 +02:00
Elian Doran d67dd27568 feat(calendar): add list view & improve styling 2025-03-16 20:53:54 +02:00
Elian Doran ceddc1b497 feat(calendar): add switch between day/month view 2025-03-16 20:46:59 +02:00
Elian Doran 4d55374784 feat(calendar): add now indicator 2025-03-16 20:40:14 +02:00
Elian Doran 2b24673019 chore(calendar): remove redundant log 2025-03-16 20:38:25 +02:00
Elian Doran d7e31f94fd feat(calendar): allow dragging timed events 2025-03-16 20:34:05 +02:00
Elian Doran ccd9bfc1e7 fix(calendar): end date when inserting with time 2025-03-16 20:26:03 +02:00
Elian Doran 55ccbfe1cc fix(calendar): handling of start time/end time 2025-03-16 20:16:52 +02:00
Elian Doran 680729de63 feat(calendar): allow dragging to set the time 2025-03-16 20:09:21 +02:00
Elian Doran 9412cfc19f feat(calendar): support missing end time 2025-03-16 20:00:43 +02:00
Elian Doran 9083c18392 feat(calendar): support start & end date 2025-03-16 19:54:27 +02:00
Elian Doran 7570205059 feat(calendar): set up time grid 2025-03-16 19:46:39 +02:00
Elian Doran 4e7572cf04 chore(client/ts): port more files 2025-03-16 18:31:31 +02:00
Elian Doran 7f4f8bcc75 chore(client/ts): port some more files 2025-03-16 17:31:28 +02:00
Elian Doran 62706a6af2 chore(release): 0.92.4
/ Check Docker build (Dockerfile) (push) Failing after 42s
/ Check Docker build (Dockerfile.alpine) (push) Failing after 31s
/ Build Docker images (Dockerfile, ubuntu-24.04-arm, linux/arm/v7) (push) Has been skipped
/ Build Docker images (Dockerfile, ubuntu-24.04-arm, linux/arm64) (push) Has been skipped
/ Build Docker images (Dockerfile.alpine, ubuntu-latest, linux/amd64) (push) Has been skipped
/ Merge manifest lists (push) Has been skipped
Release / Make Electron (arm64, map[extension:[deb rpm zip flatpak] image:ubuntu-latest name:linux]) (push) Failing after 36s
Release / Make Electron (x64, map[extension:[deb rpm zip flatpak] image:ubuntu-latest name:linux]) (push) Failing after 35s
Release / Build Linux Server (x64, ubuntu-latest) (push) Failing after 38s
Release / Make Electron (arm64, map[extension:[dmg zip] image:macos-latest name:macos]) (push) Has been cancelled
Release / Make Electron (arm64, map[extension:[exe zip] image:windows-latest name:windows]) (push) Has been cancelled
Release / Make Electron (x64, map[extension:[dmg zip] image:macos-latest name:macos]) (push) Has been cancelled
Release / Make Electron (x64, map[extension:[exe zip] image:windows-latest name:windows]) (push) Has been cancelled
Release / Build Linux Server (arm64, ubuntu-24.04-arm) (push) Has been cancelled
2025-03-16 16:04:21 +02:00
Elian Doran 79c82b16ce feat(docs): document admonitions 2025-03-16 16:00:10 +02:00
Elian Doran ba96806fab chore(docs): change order of top level elements 2025-03-16 15:56:59 +02:00
Elian Doran 8c1f4b0014 feat(docs): erase unnecessary attachments 2025-03-16 14:45:21 +02:00
Elian Doran 051cba9a6d fix(docs): content language attachment 2025-03-16 14:41:58 +02:00
Elian Doran 800424405a fix(import/zip): support special characters for attachments 2025-03-16 14:39:27 +02:00
Elian Doran 132a8f7c65 chore(docs): update to match new img handling 2025-03-16 14:05:38 +02:00
Elian Doran 3eaa68da23 feat(import/markdown): maintain consistency with CKEditor for images 2025-03-16 13:58:31 +02:00
Elian Doran 8aaf2367e9 feat(in-app-help): hide notes that are hidden from share 2025-03-16 13:33:07 +02:00
Elian Doran 6f799692e0 feat(in-app-help): render note list 2025-03-16 13:24:34 +02:00
Elian Doran 7df86dd60b Merge pull request #1439 from TriliumNext/renovate/better-sqlite3-11.x-lockfile
fix(deps): update dependency better-sqlite3 to v11.9.0
2025-03-16 12:27:32 +02:00
Elian Doran dd8818f0ac Merge pull request #1438 from TriliumNext/renovate/typedoc-0.x
chore(deps): update dependency typedoc to v0.28.0
2025-03-16 12:26:22 +02:00
Elian Doran 35dad6ffce Merge pull request #1437 from TriliumNext/renovate/mind-elixir-4.x
fix(deps): update dependency mind-elixir to v4.4.2
2025-03-16 12:24:51 +02:00
renovate[bot] b13cab411b fix(deps): update dependency better-sqlite3 to v11.9.0 2025-03-16 02:48:25 +00:00
renovate[bot] 09a1227b63 chore(deps): update dependency typedoc to v0.28.0 2025-03-16 02:48:13 +00:00
renovate[bot] 511c69bdb0 fix(deps): update dependency mind-elixir to v4.4.2 2025-03-16 02:48:00 +00:00
Elian Doran 2828b39f48 chore(client/ts): port some more files 2025-03-16 00:45:46 +02:00
Elian Doran ee5eba193a Merge pull request #1395 from TriliumNext/build_improve-electron-forge_v3
build(electron-forge): improve electron-forge build process
2025-03-15 23:53:56 +02:00
Elian Doran c1acaa0159 Merge branch 'develop' into build_improve-electron-forge_v3 2025-03-15 23:42:43 +02:00
Elian Doran bb14667bdf fix(text): PHP, Sass, TypeScript/JSX not rendered in code blocks 2025-03-15 23:12:07 +02:00
Elian Doran 7b1299a758 fix(client): error due to typings 2025-03-15 22:45:13 +02:00
Elian Doran 3c93fdc202 feat(markdown/import): remove space in admonition 2025-03-15 22:39:33 +02:00
Elian Doran 40d233dccc chore(deps): remove no longer necessary html-minifier 2025-03-15 22:20:43 +02:00
Elian Doran 182bccad39 chore(client/ts): port some dialogs 2025-03-15 22:14:21 +02:00
Elian Doran 1bf16bfa22 feat(import/markdown): remove spaces in lists 2025-03-15 21:30:19 +02:00
Elian Doran 30593eeeac refactor(import/markdown): change renderer instead of applying an uglifier 2025-03-15 21:07:02 +02:00
Elian Doran 36fa0af706 fix(docs): update calendar view documentation 2025-03-15 19:44:15 +02:00
Elian Doran 00106580ca fix(admonitions): floating images breaking out 2025-03-15 19:31:45 +02:00
Elian Doran ac419e8ab4 feat(docs): remove inline warnings and apply admonitions 2025-03-15 18:56:55 +02:00
Elian Doran 2b1bbd4ad3 fix(build): node ABI 2025-03-15 18:37:29 +02:00
Elian Doran 3734f81752 Merge pull request #1433 from TriliumNext/renovate/better-sqlite3-11.x
fix(deps): update dependency better-sqlite3 to v11.9.0
2025-03-15 18:25:56 +02:00
Elian Doran 103894f733 Merge pull request #1432 from TriliumNext/renovate/better-sqlite3-11.x-lockfile
fix(deps): update dependency better-sqlite3 to v11.9.0
2025-03-15 18:24:27 +02:00
Elian Doran bd9fce0a50 Merge branch 'develop' into renovate/electron-35.x 2025-03-15 18:24:10 +02:00
Elian Doran c27f13d49f fix(test): one more broken test 2025-03-15 18:18:17 +02:00
Elian Doran 2b966afbe1 fix(test): tests that got broken along the way 2025-03-15 17:51:10 +02:00
Elian Doran bc8cca664b feat(ci): trigger dev workflow on PR and main branch 2025-03-15 17:14:17 +02:00
Elian Doran e9a0c68a28 Merge branch 'develop' into build_improve-electron-forge_v3 2025-03-15 17:00:53 +02:00
Elian Doran 103b29d3de Revert "fix(flatpak): try setting different bin to avoid sandbox issue"
This reverts commit a778ec617f.
2025-03-15 13:44:30 +02:00
Panagiotis Papadopoulos 73305a5327 chore(share): remove unused args
addresses https://github.com/TriliumNext/Notes/pull/1384#discussion_r1989045491
2025-03-15 12:31:33 +01:00
Panagiotis Papadopoulos ae1ef55522 chore(share): remove unused "_next"
addresses https://github.com/TriliumNext/Notes/pull/1384#discussion_r1989044764
2025-03-15 12:27:02 +01:00
Panagiotis Papadopoulos a5a66a12e2 chore(share): fix tsc nagging about svg not existing on unknown
JSON and TS without using a validation library like zod, is really a bit of a pain in the backside...
2025-03-15 12:19:27 +01:00
Panagiotis Papadopoulos 2a5ac80c05 chore(utils/safeExtractMessageAndStackFromError): add explicit return type to have it as a named tuple 2025-03-15 12:19:27 +01:00
Panagiotis Papadopoulos c2aae45456 chore(share): fix no-unused-vars and prefer-const lint issues 2025-03-15 12:19:27 +01:00
Panagiotis Papadopoulos cd9d90323c chore(share): fix @typescript-eslint/no-unused-vars for unused note variable
there's no need to assign a variable, if we never use the value outside of the if check
2025-03-15 12:19:26 +01:00
Panagiotis Papadopoulos c2b75a6421 chore(share): fix @typescript-eslint/no-unused-vars for "next"
alternative solution, since they are unused and it is the last argument → remove it.
We can still go that route later on though, if we agree upon it.
2025-03-15 12:19:26 +01:00
Panagiotis Papadopoulos bdc829198c chore(share): use safeExtractMessageAndStackFromError to get rid of "any" in try/catch blocks 2025-03-15 12:19:26 +01:00
Panagiotis Papadopoulos 3b8c645cca Merge branch 'develop' into build_improve-electron-forge_v3 2025-03-15 12:09:52 +01:00
Elian Doran a778ec617f fix(flatpak): try setting different bin to avoid sandbox issue 2025-03-15 13:01:28 +02:00
Elian Doran df5939b201 feat(share): add basic support for admonitions 2025-03-15 12:30:07 +02:00
Elian Doran f841b139d9 fix(admonitions): missing style on mobile 2025-03-15 12:25:48 +02:00
Elian Doran 535233fec8 feat(import/markdown): basic support for admonitions 2025-03-15 11:58:11 +02:00
Elian Doran 6d67e69e2f feat(export/markdown): basic support for admonitions 2025-03-15 11:30:56 +02:00
Elian Doran b1e3ea4c80 fix(admonition): inserting new admonitions of given type not working 2025-03-15 10:50:04 +02:00
Elian Doran 0f41afe841 fix(tmp): files not cleaned up 2025-03-15 10:34:17 +02:00
Elian Doran aa6ee3fd60 fix(global_menu): double separator on mobile 2025-03-15 10:34:07 +02:00
Elian Doran 0f28bbb1be feat(server): use custom temporary directory within trilium-data 2025-03-15 10:11:54 +02:00
renovate[bot] 9136f07968 fix(deps): update dependency better-sqlite3 to v11.9.0 2025-03-15 02:52:57 +00:00
renovate[bot] bd39f38d1a fix(deps): update dependency better-sqlite3 to v11.9.0 2025-03-15 02:52:41 +00:00
Elian Doran 45b7d51db9 fix(zen): missing edit read-only note (closes #1371) 2025-03-15 02:21:00 +02:00
Elian Doran 6c1f631ddb fix(right_pane): buttons disappearing (force min width, closes #1419). 2025-03-15 02:08:46 +02:00
Elian Doran 6acb490df4 feat(editor): move code formatting back to main level (closes #1375) 2025-03-15 02:00:42 +02:00
Elian Doran 598413b56d test(editor): ensure both toolbars have same items 2025-03-15 01:57:53 +02:00
Elian Doran fd029ac451 fix(ribbon): exception about focusing 2025-03-15 01:40:46 +02:00
Elian Doran b4ea96b7c7 Merge pull request #1428 from pchemguy/bat-files-fixes
Fixes missing quotes in the `bat` files.
2025-03-15 01:20:37 +02:00
Elian Doran 63ad784021 feat(math/display): allow inserting in display in a list 2025-03-15 01:07:59 +02:00
Elian Doran 4db2aab47f feat(admonition): integrate autoformatting 2025-03-14 23:09:46 +02:00
Elian Doran 9ff1ea4b8f style(admonition): bottom margin for last item 2025-03-14 22:29:24 +02:00
Elian Doran 265d54e44b fix(export): remove non-functional PDF export type 2025-03-14 22:24:10 +02:00
Elian Doran d9764365cb feat(import): allow importing .excalidraw files 2025-03-14 22:13:31 +02:00
Elian Doran ad8c1a4a29 feat(export): use right extension for canvas 2025-03-14 22:01:04 +02:00
Elian Doran abddde910c refactor(canvas): use better approach to disabling export 2025-03-14 21:59:02 +02:00
Elian Doran 3c146cdb20 fix(canvas): unable to export as image (closes #1431) 2025-03-14 21:53:23 +02:00
Elian Doran ae3f0e0e4b fix(types): add missing dependency 2025-03-14 21:43:37 +02:00
Elian Doran 56d3cd038c fix(deps): add missing dependency 2025-03-14 21:42:59 +02:00
Elian Doran a2f0896c2a feat(import/markdown): collapse unnecessary whitespace when importing 2025-03-14 19:50:26 +02:00
Elian Doran c892c95aae chore(docs): collapse unnecessary whitespace 2025-03-14 19:47:08 +02:00
Elian Doran bbf6ae6aab feat(sql_console): preserve whitespace in columns 2025-03-14 18:53:04 +02:00
Elian Doran 8b0ddf6f9d chore(docs): update markdown documentation with proper keyboard shortcuts 2025-03-14 18:01:53 +02:00
Elian Doran 6b89bffffb feat(export/markdown): preserve keyboard shortcuts 2025-03-14 17:59:50 +02:00
Elian Doran 80421bb220 refactor(server): rename md -> markdown for consistency 2025-03-14 16:25:10 +02:00
PChemGuy df9a413ef8 Strip trailing backslash
%~dp0 always contains a trailing backslash. The way %DIR% is used in the following line, the trailing slash should be stripped. Alternatively, `%DIR%\\` may be replaced with `%DIR%`, but I would advice against. It is ok to have `%~dp0trilium-data`, which is a conventional pattern. Once %~dp0 is replaced with %DIR% (which is not really warranted here), stripping the trailing slash right after assignment is preferable.
2025-03-14 14:29:37 +03:00
PChemGuy 4971619b69 Missing quotes 2025-03-14 14:19:11 +03:00
Elian Doran 875e65284c feat(docs): use <kbd> for keyboard shortcuts 2025-03-14 12:11:09 +02:00
Elian Doran 806cd7129a fix(docs): rtl image 2025-03-14 11:34:27 +02:00
Elian Doran c8725ce6ef feat(docs): align documentation with new settings 2025-03-14 11:32:07 +02:00
Elian Doran 0c55b1eee8 feat(editor): rewrite <i> to <em> for compatibility with Markdown 2025-03-14 11:31:46 +02:00
Elian Doran 9b217a5b82 Merge pull request #1366 from rom1dep/calendar_enh_displayed
feat(calendar) improvements
2025-03-14 11:17:44 +02:00
Elian Doran a50b8c7f0a Merge pull request #1425 from TriliumNext/renovate/mermaid-11.x
fix(deps): update dependency mermaid to v11.5.0
2025-03-14 11:15:51 +02:00
Elian Doran 5efb5fd303 Merge pull request #1424 from TriliumNext/renovate/i18next-24.x
fix(deps): update dependency i18next to v24.2.3
2025-03-14 11:15:12 +02:00
renovate[bot] 2e436cdd46 chore(deps): update dependency electron to v35 2025-03-14 09:14:49 +00:00
Elian Doran 3656b1e0eb Merge pull request #1423 from TriliumNext/renovate/force-graph-1.x
fix(deps): update dependency force-graph to v1.49.4
2025-03-14 11:14:47 +02:00
Elian Doran b2060799c4 Merge pull request #1422 from TriliumNext/renovate/axios-1.x
fix(deps): update dependency axios to v1.8.3
2025-03-14 11:14:13 +02:00
Elian Doran b18e5a34c4 Merge pull request #1421 from TriliumNext/renovate/electron-34.x
chore(deps): update dependency electron to v34.3.3
2025-03-14 11:13:57 +02:00
Elian Doran 2578c2d4f6 Merge pull request #1398 from TriliumNext/renovate/happy-dom-monorepo
chore(deps): update dependency happy-dom to v17.4.4
2025-03-14 11:13:17 +02:00
renovate[bot] 618bba71da fix(deps): update dependency mermaid to v11.5.0 2025-03-14 02:53:05 +00:00
renovate[bot] 8bff71fed4 fix(deps): update dependency i18next to v24.2.3 2025-03-14 02:52:56 +00:00
renovate[bot] 839cfac2ac fix(deps): update dependency force-graph to v1.49.4 2025-03-14 02:52:45 +00:00
renovate[bot] ded979b6ff fix(deps): update dependency axios to v1.8.3 2025-03-14 02:52:32 +00:00
renovate[bot] 948c60277d chore(deps): update dependency electron to v34.3.3 2025-03-14 02:52:20 +00:00
Elian Doran f487348cc5 chore(admonitions): remove formatting plugin for now 2025-03-14 00:04:23 +02:00
Elian Doran ee76e81d1f feat(admonitions): integrate custom admonitions plugin 2025-03-14 00:02:55 +02:00
Elian Doran 507a594198 feat(admonitions): color the icon 2025-03-13 16:22:05 +02:00
Elian Doran 732252df5b feat(admonitions): add custom color per admonition 2025-03-13 16:19:58 +02:00
Elian Doran ba39769174 feat(admonitions): add icon 2025-03-13 16:13:16 +02:00
Panagiotis Papadopoulos 6a9342abce build(Docker): add a temporary exception for files that copy-dist tries to copy for electron-forge, as otherwise copy-dist will fail inside Docker build
this will be fixed in an upcoming PR where I overhaul copy-dist to allow for build target specific copying of files
2025-03-13 08:44:31 +01:00
Panagiotis Papadopoulos 67c752c11b ci: adjust build-electron action to use the newly introduced outDir "./dist" for electron-forge 2025-03-13 08:21:12 +01:00
Elian Doran adf5bee98f feat(admonitions): apply basic styling & configure for paragraphs 2025-03-13 09:15:11 +02:00
Panagiotis Papadopoulos cc0931b402 build(electron-forge): set outDir to ./dist, to have the same behaviour as the Server builds
since we run electron-forge inside the ./build folder, we need to go up a directory (using ../dist), to have it output to ./dist
2025-03-13 08:09:53 +01:00
Panagiotis Papadopoulos b48fbbe583 build(copy-dist): copy over desktop.ejs for electron-forge as well
it is required for Flatpak/Deb/RPM Linux packages
2025-03-13 07:59:12 +01:00
Panagiotis Papadopoulos 1877d26296 chore(scripts): electron-forge:prepare -> copy node_modules folder as is
electron-forge does not like, if we get rid of devDeps ourselves already it seems.
It *wants* to do it itself, otherwise build fails…

It does seem to correctly strip all the devDeps though, at least there's that.
2025-03-13 07:59:12 +01:00
Panagiotis Papadopoulos 4ce2c10d72 build(copy-dist): copy over the start scripts for now 2025-03-13 07:59:12 +01:00
Panagiotis Papadopoulos 11772860b6 build(electron-forge): stop copying unused .anonymize-database.sql as ressource 2025-03-13 07:59:12 +01:00
Panagiotis Papadopoulos 6b9d8f0d67 build(electron-forge): execute electron-forge commands in our "build" output context
since we build TS and webpack ourselves and are not using any electron-forge plugins (at least at the moment) -> we should use the "build" folder as build context for electron-forge:

in comparison to running electron-forge in the root folder of the project, this avoids electron-forge from packing the source code multiple times (e.g. once as uncompiled TS, then as compiled JS, and then (partially) a third time as webpack bundled JS files), same as some of the assets.

to achieve this, we run our usual TS/Webpack build process, but then install the npm dependencies *inside* the build folder (as otherwise electron-forge would choke on the missing node_modules it and abort building).

In theory we could avoid cd-ing into the build folder, by providing the "dir" as argument to electron-forge's CLI -- BUT that wouldn't play well with our CI, where we are passing --arch and --platform options to it, which need to come *before* the dir argument.

since we now cd into the "build" folder, we also need to adjust the path in package.json "main" again
2025-03-13 07:59:12 +01:00
Adorian Doran 10de4e798b client/options: fix failing test 2025-03-13 06:10:09 +02:00
Adorian Doran eb630c80d6 client/options: format code 2025-03-13 05:50:29 +02:00
Adorian Doran 5cab7eb403 client/options: reorder sections 2025-03-13 05:46:34 +02:00
Adorian Doran 04c6813b0a client/options: relocate the "Localization" section to the "Language & Region" page 2025-03-13 05:35:43 +02:00
Adorian Doran 1369a44d9b style/options/ETAPI: add an icon to the create token button 2025-03-13 05:25:34 +02:00
Adorian Doran 88aa9a4e79 client/options/code notes: create the "Editor" section, reorganize 2025-03-13 05:20:58 +02:00
Adorian Doran 0e748fbce0 style/options/ETAPI: update the icon of the edit token button 2025-03-13 04:30:42 +02:00
Adorian Doran 6c6d20a830 style: fix note title input overlapping with the zen mode exit button 2025-03-13 04:19:42 +02:00
Adorian Doran 69f95068f1 style(next)/shell/right pane: minor restyle 2025-03-13 04:04:08 +02:00
Adorian Doran 2066f821cb style(next)/ribbon/image properties: improve the layout 2025-03-13 03:24:04 +02:00
Adorian Doran 25a787f9dc Merge branch 'develop' of https://github.com/TriliumNext/Notes into develop 2025-03-12 22:30:51 +02:00
Adorian Doran a2b73feb25 style/image properties: add icons to buttons 2025-03-12 22:30:49 +02:00
Elian Doran 062955aa81 feat(editor): integrate styles support 2025-03-12 22:08:23 +02:00
Elian Doran b8cbd79ae1 refactor(client): rename ckeditor config file 2025-03-12 22:08:23 +02:00
Adorian Doran fc4712240c Merge branch 'develop' of https://github.com/TriliumNext/Notes into develop 2025-03-12 21:42:43 +02:00
Adorian Doran 18882d0b7e style(next)/toasts: change the dark mode colors 2025-03-12 21:42:39 +02:00
Elian Doran d469670a46 feat(docs): document formatting keyboard shortcuts + fix broken image 2025-03-12 19:03:33 +02:00
Elian Doran e0cebf1c00 style(next): apply kbd style to content 2025-03-12 18:08:39 +02:00
Elian Doran 383408e884 style(editor): add some separators to formatting toolbar 2025-03-12 18:06:34 +02:00
Elian Doran 87d28c8c2f style(editor): group some formatting options for floating toolbar 2025-03-12 18:04:20 +02:00
Elian Doran bec7a526ad feat(editor): add support for marking keyboard shortcuts 2025-03-12 17:58:12 +02:00
Adorian Doran bb8325cf8d Merge branch 'develop' of https://github.com/TriliumNext/Notes into develop 2025-03-12 15:08:26 +02:00
Adorian Doran da9a029f8f style(next)/note list: remove a no longer needed border 2025-03-12 15:08:22 +02:00
Elian Doran c02b5468a6 feat(docs): clean up RTL and reorder 2025-03-12 14:47:42 +02:00
Elian Doran 5dd5e8da91 feat(docs): document adjusting image alignment 2025-03-12 13:36:30 +02:00
Adorian Doran f991cee3ac Merge branch 'develop' of https://github.com/TriliumNext/Notes into develop 2025-03-12 13:31:07 +02:00
Adorian Doran 1426e43fb8 style(next): move color variables to color scheme-related stylesheets 2025-03-12 13:31:04 +02:00
Elian Doran 61899aa32d chore(edit-docs): ignore document.db 2025-03-12 13:14:09 +02:00
Elian Doran e90bbe31ba feat(docs): document the launch bar 2025-03-12 13:14:09 +02:00
Elian Doran 034998fa97 feat(docs): document vertical vs horizontal layout 2025-03-12 13:14:08 +02:00
Elian Doran 3a41d8fd11 feat(docs): improve note tree documentation 2025-03-12 13:14:08 +02:00
Elian Doran e9175d60ec feat(docs): improve documentation for code notes, code blocks 2025-03-12 13:14:08 +02:00
Adorian Doran 4f87bd101e Merge branch 'develop' of https://github.com/TriliumNext/Notes into develop 2025-03-12 12:55:57 +02:00
Adorian Doran 9c78415a1f style(next): restyle toasts 2025-03-12 12:55:55 +02:00
Elian Doran 06d848ba17 feat(code): support mips (closes #1406) 2025-03-12 10:54:44 +02:00
Elian Doran 42821d47c8 refactor(mime): sort alphabetically 2025-03-12 10:54:19 +02:00
Panagiotis Papadopoulos d7aedfbd36 build(copy-dist): exit on any caught error to make sure copy-dist fails during CI if any error occurs
if we don't exit, it will just log the issue - however we *want* it to fail it there is an error, so that it doesn't continue in the CI

alternative would be to rethrow the error, but then we'd print the error into the logs twice :-)

closes https://github.com/TriliumNext/Notes/issues/1413
2025-03-12 09:52:42 +01:00
Adorian Doran b730ca0033 Merge branch 'develop' of https://github.com/TriliumNext/Notes into develop 2025-03-12 10:44:04 +02:00
Adorian Doran bad7776076 style/toasts: get rid of some !important properties 2025-03-12 10:43:53 +02:00
Panagiotis Papadopoulos d088c8e5b2 build(copy-dist): fix path to excalidraw fonts 2025-03-12 08:57:05 +01:00
Elian Doran 2463e44bf8 chore(deps): downgrade to react 18 2025-03-12 09:15:37 +02:00
renovate[bot] b600b51fe8 chore(deps): update dependency happy-dom to v17.4.4 2025-03-12 02:59:14 +00:00
Adorian Doran ddd2babe21 style/content renderer: localize some strings 2025-03-12 03:40:56 +02:00
Adorian Doran b082f95d42 style/content renderer: add icons to the "download" and "open" buttons 2025-03-12 03:32:54 +02:00
Adorian Doran 79fb87d9ff style(next)/search: refactor 2025-03-12 03:13:41 +02:00
Adorian Doran 027577c709 style(next)/search: change the alignment of the search-related buttons 2025-03-12 03:12:22 +02:00
Adorian Doran dd62979d65 style/attachments page: add an icon to the upload button 2025-03-12 02:49:40 +02:00
Adorian Doran f86170f553 style/note revisions dialog: add icons to buttons 2025-03-12 02:38:34 +02:00
Adorian Doran 82b012a38b style(next)/ribbon/file properties: refactor 2025-03-12 02:13:32 +02:00
Adorian Doran 4b6998975f style(next)/ribbon/file properties: improve the layout 2025-03-12 02:06:29 +02:00
Adorian Doran 600585bfd3 style(next)/ribbon/file properties: improve the layout 2025-03-12 02:02:18 +02:00
Adorian Doran 0c8e7806f4 style/ribbon/file properties: add icons to buttons 2025-03-12 02:01:19 +02:00
Adorian Doran 62b5bbc9ce style(next): fix the submenu arrows overlapping the keyboard shortcuts 2025-03-12 00:57:16 +02:00
Elian Doran 3ae48bba00 chore(deps): update react to latest 2025-03-12 00:06:11 +02:00
Elian Doran cf76358dd7 fix(canvas): font loading 2025-03-11 23:03:34 +02:00
Elian Doran c2cb48a25c chore(deps): update to excalidraw 0.18.0 2025-03-11 22:59:16 +02:00
Elian Doran 39f3cb47fa Merge pull request #1393 from TriliumNext/build_hotfix-electron
fix(build/electron): hotfix for failing nightly electron builds
2025-03-11 22:20:17 +02:00
Elian Doran 15c04c38b9 chore(docs): add HTML user guide 2025-03-11 22:04:19 +02:00
Elian Doran 3723824246 chore(scripts): downgrade Electron to 33 for Nix 2025-03-11 22:02:05 +02:00
Elian Doran 5ee13623ee feat(edit-docs): generate HTML documentation as well 2025-03-11 21:58:32 +02:00
Elian Doran 9d161a007e feat(etc/reddit): add icon 2025-03-11 21:57:43 +02:00
Elian Doran 3457c2e4d8 feat(content_renderer): render docnotes 2025-03-11 21:57:33 +02:00
Elian Doran 32f84e8378 refactor(client): extract doc rendering to dedicated service 2025-03-11 21:32:48 +02:00
Panagiotis Papadopoulos 4494662d2a fix(build/electron): hot fix for failing nightly electron builds
this is caused by recently reverting the output of "build:prepare-dist" from "dist" to "build"

-> this is just a temporary fix -> I am working in parallel already on an improved electron-forge build process, whihc will be ready by end of the week
2025-03-11 20:24:11 +01:00
Elian Doran 4124c96e02 fix(docs): syntax highlighting for Nginx 2025-03-11 21:12:42 +02:00
Elian Doran b278bc8ce4 refactor(test): use matrix for testing import/export 2025-03-11 21:11:23 +02:00
Elian Doran 8c71e6aa90 fix(export/markdown): proper language tag for Nginx 2025-03-11 21:05:55 +02:00
Elian Doran 09c081fdcf feat(edit-docs): remove input file 2025-03-11 20:48:40 +02:00
Elian Doran ba17ce8616 fix(docs): numbering in Nginx 2025-03-11 20:46:50 +02:00
Elian Doran 34ffba54ac feat(edit-docs): do proper becca cleaning before starting 2025-03-11 20:42:53 +02:00
Elian Doran d3cfc1c88b feat(edit-docs): ignore options change 2025-03-11 20:40:25 +02:00
Elian Doran 4969cf7d5b feat(edit-docs): wait for import to finish before starting electron 2025-03-11 20:39:30 +02:00
Elian Doran ac4a8a44d4 chore(docs): import canvas note documentation 2025-03-11 20:27:54 +02:00
Elian Doran 69a39bca2f fix(docs): clean up documentation 2025-03-11 20:23:36 +02:00
Elian Doran c79eeea060 fix(docs): few broken image references 2025-03-11 19:50:29 +02:00
Elian Doran f86434523e fix(export): maintain same order of attachments 2025-03-11 18:27:08 +02:00
Elian Doran bb288c5c68 fix(edit-docs): consistency check issues 2025-03-11 18:26:49 +02:00
Elian Doran 0af357ece8 chore(docs): update with deterministic order 2025-03-11 18:05:42 +02:00
Elian Doran a2795f3440 fix(import/markdown): title deduplication breaking special chars 2025-03-11 17:51:35 +02:00
Elian Doran 3d10ac5e1f chore(docs): solve import/export errors 2025-03-11 17:36:42 +02:00
Elian Doran 997e962fbe fix(edit-docs): attachments duplication 2025-03-11 17:24:29 +02:00
Elian Doran e939b7b3d9 fix(docs): unescaped URL in images 2025-03-11 17:24:15 +02:00
Elian Doran a441ea2461 feat(md): rewrite image URL with spaces 2025-03-11 17:12:56 +02:00
Elian Doran f67e2ebcd5 chore(edit-docs): move Markdown documentation outside src for now 2025-03-11 16:11:16 +02:00
Elian Doran 971b388d1a Merge pull request #1392 from TriliumNext/Note_Revisions
Fix the bug where note revisions cannot be previewed.
2025-03-11 13:39:00 +02:00
Elian Doran a33d532958 Merge pull request #1382 from TriliumNext/renovate/happy-dom-monorepo
chore(deps): update dependency happy-dom to v17.4.3
2025-03-11 13:38:25 +02:00
Elian Doran 80d1985882 Merge pull request #1381 from TriliumNext/renovate/autoprefixer-10.x
chore(deps): update dependency autoprefixer to v10.4.21
2025-03-11 13:38:05 +02:00
Elian Doran ecc5e0f3b8 Merge pull request #1388 from TriliumNext/build_electron-dump-db
build(electron-forge): stop packing dump-db folder
2025-03-11 13:37:19 +02:00
Elian Doran 5252fe3d1e Merge pull request #1390 from TriliumNext/renovate/typescript-eslint-monorepo
chore(deps): update dependency typescript-eslint to v8.26.1
2025-03-11 13:34:45 +02:00
Elian Doran 182da7717f Merge pull request #1389 from TriliumNext/renovate/electron-34.x
chore(deps): update dependency electron to v34.3.2
2025-03-11 13:34:21 +02:00
Elian Doran 6b3bf1151a Merge branch 'develop' into renovate/happy-dom-monorepo 2025-03-11 13:27:41 +02:00
Elian Doran c16f240f31 Merge branch 'develop' into renovate/autoprefixer-10.x 2025-03-11 13:27:38 +02:00
SiriusXT 4b269c2859 Fix the bug where note revisions cannot be previewed. 2025-03-11 16:24:35 +08:00
renovate[bot] 5299da6525 chore(deps): update dependency typescript-eslint to v8.26.1 2025-03-11 02:37:37 +00:00
renovate[bot] ca6253f3bb chore(deps): update dependency electron to v34.3.2 2025-03-11 02:37:19 +00:00
Elian Doran d639798fa8 refactor(server): deduplicate options init 2025-03-10 21:21:59 +02:00
Elian Doran e79f18f001 fix(edit-docs): convert to Markdown 2025-03-10 21:15:33 +02:00
Elian Doran d134ee0552 fix(edit-docs): preserve attachment IDs 2025-03-10 20:50:57 +02:00
Elian Doran b412f06b79 fix(edit-docs): doubly nested directories 2025-03-10 20:16:56 +02:00
Elian Doran 7a4b1b41b4 feat(edit-docs): periodic export 2025-03-10 19:34:10 +02:00
Elian Doran 841bc54f78 feat(edit-docs): preserve IDs when importing 2025-03-10 19:14:46 +02:00
Panagiotis Papadopoulos 02a00000fb build(electron-forge): stop packing dump-db folder
see https://github.com/TriliumNext/Notes/issues/1115
2025-03-10 18:11:56 +01:00
Elian Doran 966ad36919 fix(edit-docs): allow import of contents 2025-03-10 18:56:00 +02:00
Elian Doran 8ac5d01f43 feat(edit-docs): start importing zip 2025-03-10 18:51:40 +02:00
Elian Doran 15936ff8b8 fix(edit-docs): relative path 2025-03-10 17:57:56 +02:00
Elian Doran a1918ad491 feat(edit-docs): start creating input zip file 2025-03-10 17:50:58 +02:00
Elian Doran 2b891adc34 feat(edit-docs): create child note for importing 2025-03-10 17:41:13 +02:00
Elian Doran 42d3236fe7 fix(edit-docs): stop initializing if DB is already so 2025-03-10 17:08:40 +02:00
Elian Doran f3d753cc46 feat(edit-docs): initialize database automatically 2025-03-10 17:04:17 +02:00
Elian Doran 6a549af34a feat(edit-docs): clean up meta 2025-03-10 16:37:39 +02:00
Elian Doran bffb0963df feat(edit-docs): clean up ZIP file 2025-03-10 16:31:44 +02:00
Elian Doran df2a9aed44 feat(edit-docs): automatically write documentation on start-up 2025-03-10 16:20:48 +02:00
Elian Doran 2530c01a31 chore(docs): update in-app documentation 2025-03-10 16:20:13 +02:00
Elian Doran 054a919fad chore(docs): small structure update 2025-03-10 15:04:04 +02:00
Elian Doran 9fa19469fd chore(docs): improvements + new doc 2025-03-10 14:21:53 +02:00
Elian Doran b9c409ec33 chore(scripts): edit documentation with Nix 2025-03-10 10:53:49 +02:00
Elian Doran 6c845102d3 fix(build): missing arguments in eslint.spec.ts 2025-03-10 09:25:33 +02:00
Elian Doran e6c04e70e4 Merge pull request #1369 from TriliumNext/build_improve-server-build
build: fix/improve server build
2025-03-10 09:19:09 +02:00
renovate[bot] 9dcfae56a1 chore(deps): update dependency happy-dom to v17.4.3 2025-03-10 02:33:38 +00:00
renovate[bot] 05b2f8c097 chore(deps): update dependency autoprefixer to v10.4.21 2025-03-10 02:33:29 +00:00
Romain DEP. 5658f22f9a feat(calendar): do no longer require # or ~ to be specified by the user
to signify that the provided attribute is a label or a relation. It will now
work either way, giving preference to the label if one is found.
2025-03-09 22:44:45 +01:00
Elian Doran 0232fee905 chore(docs): reorder and improve slightly 2025-03-09 23:29:01 +02:00
Romain DEP. 85917d7207 feat(calendar): support displaying of attributes and realtions with multiple cardinality 2025-03-09 21:26:41 +01:00
Elian Doran e129e0369d server(attachments): render empty SVGs properly (closes #1378) 2025-03-09 22:23:01 +02:00
Elian Doran be6e56fbe8 feat(eslint): add support for module.exports 2025-03-09 21:41:13 +02:00
Elian Doran 1fb4634b7b feat(eslint): add globals for jQuery 2025-03-09 21:38:16 +02:00
Panagiotis Papadopoulos afe4fc2d1a build(build-server): add more detail to status "echo"s 2025-03-09 18:59:54 +01:00
Panagiotis Papadopoulos 3450066214 build(build.sh): remove unused build script
this is not used anymore at all, it was replaced by GitHub CI Actions

it even mentions several other scripts, that got removed in the meantime as well
2025-03-09 18:59:54 +01:00
Panagiotis Papadopoulos 36fad35be5 build(build-server): rename archive name to the same naming scheme used in the Github CI 2025-03-09 18:59:54 +01:00
Panagiotis Papadopoulos 56340009ca build(build-server): remove now unused DONTCOPY check 2025-03-09 18:59:54 +01:00
Panagiotis Papadopoulos d110c8b067 build(build-server): add some status "echo"s 2025-03-09 18:59:54 +01:00
Panagiotis Papadopoulos d8ad018819 build(build-server): also delete electron map files 2025-03-09 18:59:54 +01:00
Panagiotis Papadopoulos 33de342842 build(build-server): download and extract node in a single step 2025-03-09 18:59:54 +01:00
Panagiotis Papadopoulos 4bba061629 build(build-server): get rid of now unnecessary arch handling for node
directly use "ARCH" instead of creating 2 variables with the identical content as "ARCH"
2025-03-09 18:59:54 +01:00
Panagiotis Papadopoulos 87d37366e4 build(build-server): remove unnecessary copying of translations
already happens during build:prepare-dist step
2025-03-09 18:59:54 +01:00
Panagiotis Papadopoulos 1324cc2e53 build(build-server): add TODO remark 2025-03-09 18:59:54 +01:00
Panagiotis Papadopoulos 80d6cd0356 build(build-server): delete temp build dir copy in dist folder 2025-03-09 18:59:54 +01:00
Panagiotis Papadopoulos e0413b528f build(build-server): use a single "rm" command 2025-03-09 18:59:54 +01:00
Panagiotis Papadopoulos 19abd14058 build(build-server): use build dir for build and dist for final archive output 2025-03-09 18:59:54 +01:00
Panagiotis Papadopoulos 9bd31698e1 build(copy-trilium): use "|" as sed separator
allows us to avoid having to escape "/"
2025-03-09 18:59:54 +01:00
Panagiotis Papadopoulos 1ae5c43010 build(copy-trilium): do all the work inside build dir, no target directory needed anymore
-> all of these steps will eventually be merged with copy-dist script to have a unified copying script
2025-03-09 18:59:54 +01:00
Panagiotis Papadopoulos f8b06f0634 build(copy-trilium): get rid of unecessary copying of files
-> already handled by "build:prepare-dist" step
2025-03-09 18:59:54 +01:00
Panagiotis Papadopoulos 930be2de05 build(copy-dist): copy LICENSE and README as well
copied over from copy-trilium.sh script
2025-03-09 18:59:54 +01:00
Panagiotis Papadopoulos c89d86acb1 build(copy-trilium): use "build:prepare-dist" build script 2025-03-09 18:59:54 +01:00
Panagiotis Papadopoulos d65281bfa5 build(copy-trilium): use npm ci 2025-03-09 18:59:54 +01:00
Panagiotis Papadopoulos 607f9096aa build: output into "build" folder again → "dist" will be used for the final output in archive form
this will allow for cleaner separation -> build for the output from the build stage (i.e. TS/Webpack + asset copying) and dist for the archive format of the build folder
2025-03-09 18:59:54 +01:00
Romain DEP. 6c1cb71c9f feat(calendar): make it so that events with customized calendar:startDate and calendar:endDate can be drag&dropped on the calendar view 2025-03-09 13:03:15 +01:00
Elian Doran 064799e8cb feat(docs): add v1 of the full documentation 2025-03-09 13:19:48 +02:00
Elian Doran b7cb2e6e97 feat(docs): basic integration with shared db 2025-03-09 13:19:38 +02:00
Elian Doran b00224c63c Merge pull request #1367 from TriliumNext/renovate/node-22.x
chore(deps): update dependency @types/node to v22.13.10
2025-03-09 09:41:29 +02:00
Elian Doran 5b5fb6bbd9 Merge pull request #1368 from TriliumNext/renovate/happy-dom-monorepo
chore(deps): update dependency happy-dom to v17.4.2
2025-03-09 09:40:42 +02:00
renovate[bot] 4ef1c5d4e2 chore(deps): update dependency happy-dom to v17.4.2 2025-03-09 01:53:34 +00:00
renovate[bot] 56c575cec2 chore(deps): update dependency @types/node to v22.13.10 2025-03-09 01:53:24 +00:00
Romain DEP. 3fe78cad61 feat(calendar): rename "promotedAttributes" into "displayedAttributes" and permit non-promoted attributes to be displayed 2025-03-08 22:17:58 +01:00
Adorian Doran eb9d7dd172 style/login: prevent the page content being rendered before the stylesheet is loaded 2025-03-08 20:53:54 +02:00
Adorian Doran 7434fb372e style/login: prevent the icon from being dragged 2025-03-08 20:45:12 +02:00
Adorian Doran d17513bec0 style(next): tweak the style of the login page 2025-03-08 20:40:00 +02:00
Adorian Doran fc87f64840 style(next)/options: restyle the warning boxes 2025-03-08 19:32:56 +02:00
Adorian Doran f6e869f2ac Merge branch 'develop' of https://github.com/TriliumNext/Notes into develop 2025-03-08 19:17:13 +02:00
Adorian Doran 69fab9a6d6 style(next)/options/shortcuts: improve the appearance of the page 2025-03-08 19:16:48 +02:00
Elian Doran 14c3fd5892 Merge pull request #1347 from TriliumNext/chore_eslint-fixes_src-routes
chore(lint): fix eslint issues in `src/routes`
2025-03-08 18:25:47 +02:00
Panagiotis Papadopoulos c120132cbb Merge branch 'develop' into chore_eslint-fixes_src-routes 2025-03-08 17:15:53 +01:00
Panagiotis Papadopoulos ecf1a0e4ad refactor(utils): add safeExtractMessageAndStackFromError util to remove code duplication 2025-03-08 17:07:25 +01:00
Panagiotis Papadopoulos e20b662ea7 chore(routes): fix no-explicit-any lint/ts error for restoreRevision 2025-03-08 16:12:37 +01:00
Panagiotis Papadopoulos 7bd9be7b29 chore: use more narrow NoteType for RevisionRow 2025-03-08 16:11:58 +01:00
Panagiotis Papadopoulos e3d0c53d03 chore(routes): fix no-explicit-any lint/ts error for catch blocks 2025-03-08 16:03:30 +01:00
Panagiotis Papadopoulos 272d7cd652 chore(routes/api/clipper): fix prefer-const lint errors 2025-03-08 15:31:12 +01:00
Panagiotis Papadopoulos dd9e1e69d7 fix(routes/api/clipper): fix typo in error message 2025-03-08 15:27:39 +01:00
Panagiotis Papadopoulos 08a6053c38 refactor(routes/api/clipper): get rid of second htmlSanitizer call for pageUrl
-> the value is already sanitized in line 112, there's no need to call htmlSanitizer a second time here
2025-03-08 15:27:04 +01:00
Elian Doran 4cffc50218 Merge pull request #1361 from TriliumNext/themeUseNextAsBase
Theme use next as base
2025-03-08 09:55:11 +02:00
SiriusXT 1a54b8f5a5 Add themes that can be base 2025-03-08 15:10:38 +08:00
SiriusXT e2c317f59c Add themes that can be base 2025-03-08 14:58:19 +08:00
Adorian Doran 1e81831ea0 style(next)/options: improve (again) the layout of the option cards 2025-03-08 05:49:18 +02:00
Adorian Doran 240ee2b6ac style(next)/options: improve the layout of the option cards 2025-03-08 05:34:43 +02:00
Adorian Doran d47350363a style(next): remove no longer unused style 2025-03-08 04:45:55 +02:00
Adorian Doran 6a1f1948f0 Merge branch 'develop' of https://github.com/TriliumNext/Notes into develop 2025-03-08 04:44:26 +02:00
Adorian Doran db4c5bcac2 client/options/advanced: use a table for "Existing anonymized databases" 2025-03-08 04:44:23 +02:00
Elian Doran 268b666d52 feat(template): duplicate content for geomap & mindmap (closes #357) 2025-03-08 04:28:24 +02:00
Elian Doran ed06a3ee97 feat(template): duplicate content for relation map 2025-03-08 04:26:30 +02:00
Elian Doran 5d9bea8987 feat(template): duplicate content for canvas 2025-03-08 04:24:09 +02:00
Elian Doran c7b99adb6a feat(template): duplicate content for mermaid diagrams 2025-03-08 04:23:05 +02:00
Adorian Doran 82a63a65da style(next)/options/shortcuts: tweak group headings 2025-03-08 04:17:16 +02:00
Adorian Doran 7582b1c43d style/options/appearance: fix the width of the "Main font" combo box 2025-03-08 04:01:49 +02:00
Adorian Doran fa60e66a75 Merge branch 'develop' of https://github.com/TriliumNext/Notes into develop 2025-03-08 03:52:31 +02:00
Adorian Doran d16708cf75 style(next)/options: tweak labels 2025-03-08 03:52:14 +02:00
Elian Doran 4f671738e6 fix(client): remove misleading message about removing revisions (closes #1308) 2025-03-08 03:45:02 +02:00
Adorian Doran decf62c58c style: add a gap between consecutive radios / check boxes 2025-03-08 03:33:02 +02:00
Adorian Doran 9626b42443 style(next): add a gap between consecutive radios / check boxes 2025-03-08 03:27:59 +02:00
Adorian Doran 15d3285a90 client/options/text notes: convert the "Heading Style" combo box into radio buttons 2025-03-08 03:21:32 +02:00
Adorian Doran a694017c87 Merge branch 'develop' of https://github.com/TriliumNext/Notes into develop 2025-03-08 03:18:57 +02:00
Adorian Doran 2cfb83a93c client/options/appearance: convert the "First day of the week" combo box into radio buttons 2025-03-08 03:18:42 +02:00
Elian Doran 4839edb3d7 feat(dump-db): use tsx instead of esrun 2025-03-08 03:14:38 +02:00
Elian Doran 9db5557cc1 Merge pull request #1359 from TriliumNext/renovate/eslint-monorepo
chore(deps): update eslint monorepo to v9.22.0
2025-03-08 03:10:33 +02:00
Elian Doran acedb0e94c Merge pull request #1225 from TriliumNext/build_improve-ts-webpack
build: improvements for TS & Webpack & Docker
2025-03-08 03:08:30 +02:00
Elian Doran d2ffd4a8cd Merge pull request #1358 from TriliumNext/renovate/happy-dom-monorepo
chore(deps): update dependency happy-dom to v17.4.0
2025-03-08 03:05:41 +02:00
Elian Doran 2ff7d7bc6d Merge branch 'develop' into renovate/eslint-monorepo 2025-03-08 03:03:00 +02:00
Elian Doran 7ade401018 feat(eslint): downgrade unused variables to warning 2025-03-08 03:02:25 +02:00
Elian Doran 3756524ad3 feat(test): basic tests for ESLint 2025-03-08 02:55:59 +02:00
Elian Doran 770b4afff3 Merge pull request #1360 from TriliumNext/renovate/eslint-linter-browserify-9.x
fix(deps): update dependency eslint-linter-browserify to v9.22.0
2025-03-08 02:50:24 +02:00
renovate[bot] e530df8645 fix(deps): update dependency eslint-linter-browserify to v9.22.0 2025-03-08 00:46:50 +00:00
renovate[bot] 9d6adef5bf chore(deps): update dependency happy-dom to v17.4.0 2025-03-08 00:46:41 +00:00
Elian Doran 79adb0b20e feat(client): add recommended rules 2025-03-08 02:45:40 +02:00
Elian Doran 0273fad0ba refactor(deps): use different approach for eslint 2025-03-08 02:37:29 +02:00
renovate[bot] 7d21bcd611 chore(deps): update eslint monorepo to v9.22.0 2025-03-08 00:37:21 +00:00
Elian Doran c4f8e9605f fix(client): update ESLint to latest 2025-03-08 02:20:56 +02:00
Elian Doran 3c84d0558d fix(style): login in dark mode not rendering correctly 2025-03-08 02:10:14 +02:00
Elian Doran f8d759cbc3 chore(lock): version 2025-03-08 02:10:14 +02:00
Elian Doran c297f88395 chore(server): remove unnecessary log 2025-03-08 02:10:14 +02:00
Adorian Doran e74de6105a client/options: minor tweaks 2025-03-08 01:59:29 +02:00
Panagiotis Papadopoulos 91c37fa235 chore(routes/electron): disable lint rule for specific line
in this case using "{}" allows all primitive values, which seems to be what is required here.
so let's disable the rule "@typescript-eslint/no-empty-object-type" for this line
2025-03-08 00:54:29 +01:00
Panagiotis Papadopoulos b56ff558a4 refactor(routes/api/import): get rid of "any" type in catch blocks 2025-03-08 00:39:01 +01:00
Panagiotis Papadopoulos 07fd5327b1 refactor(routes/custom): get rid of "any" type catch blocks 2025-03-08 00:22:12 +01:00
Panagiotis Papadopoulos 4b6972fb21 refactor(error_handlers): get rid of "any" type in csrf error handler 2025-03-08 00:15:46 +01:00
Panagiotis Papadopoulos 76574f0938 refactor(error_handlers): use HttpError classes in errorHandler
also gets rid of "any" type :-)
2025-03-08 00:14:24 +01:00
Adorian Doran 6d39c404c4 client/options/appearance/ribbon widgets: place checkboxes on separate lines 2025-03-08 01:01:05 +02:00
Adorian Doran d24b5a232f style: fix the form text color 2025-03-08 00:54:53 +02:00
Adorian Doran 9a09a89066 client/options/appearance: change the layout of the "Native title bar" and "Enable background effects" options 2025-03-08 00:52:02 +02:00
Panagiotis Papadopoulos 0c8df7f885 refactor(error_handlers): use newly added ForbiddenError class 2025-03-07 23:30:12 +01:00
Panagiotis Papadopoulos 70e227f4c3 build(Docker): improve image size, by deleting node-compile-cache 2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos 907b8c503e build: copy package-lock.json into dist folder as well 2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos 38690053a8 build(Docker): improve image size, by deleting unnecessary node_modules fodler from dist folder
added a TODO as well, to get rid of this strange step here at some point
2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos 3553d64060 build(Docker/ci): get rid of running partial build locally
this is now handled fully inside Docker.

exception for "test_docker" job in "main-docker"
-> it seems that one needs to be there still, since it runs Playwright tests from outside the container
2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos f544a84f6d build(Docker): simplify Docker alpine build and runtime stage
same changes as for the "non-alpine" Dockerfile previously commited, but adapted to Alpine.

this Dockerfile is aimed at production builds, i.e. trying to keep size as small as possible at the cost of "rebuild speed", due to missed docker cache opportunities.

Build Stage:
* do the complete build inside docker as oposed to the previous "hybrid", where tsc was run locally and the output got copied into the Docker build stage → you can now build this with Docker, without having to install the whole node/TS env locally

* build into a "build" subfolder, for easier clean up during build stage

* get rid of now unnecessary extra file/asset handling, as this is now handled by `npm run build:prepare-dist`

* no `npm prune` needed here, as we delete the whole build folder anyways in the last build step

Runtime stage:
* move the "electron" dep removal from the builder stage to the runtime stage, before installing the dependencies

* move to `npm ci` for reproducible installations – but only installing runtime deps here

* get rid of now unnecessary copying commands from the builder stage, as everything is now neatly available in "/usr/src/app"
2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos 68875683af build(Docker): get rid of apparently unused packages at build stage 2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos e9824c4568 build(dockerignore): ignore unnecessary files 2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos c68b0b02e4 build(Docker): simplify Docker build and runtime stage
this Dockerfile is aimed at production builds, i.e. trying to keep size as small as possible at the cost of "rebuild speed", due to missed docker cache opportunities.

Build Stage:
* do the complete build inside docker as oposed to the previous "hybrid", where tsc was run locally and the output got copied into the Docker build stage → you can now build this with Docker, without having to install the whole node/TS env locally

* build into a "build" subfolder, for easier clean up during build stage

* get rid of now unnecessary extra file/asset handling, as this is now handled by `npm run build:prepare-dist`

* no `npm prune` needed here, as we delete the whole build folder anyways in the last build step

Runtime stage:
* move the "electron" dep removal from the builder stage to the runtime stage, before installing the dependencies

* move to `npm ci` for reproducible installations – but only installing runtime deps here

* get rid of now unnecessary copying commands from the builder stage, as everything is now neatly available in "/usr/src/app"
2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos 2973d38db0 build(Docker): move server-package.json preparation into Dockerfile 2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos bb7a4f9bc3 build(Docker): comment out seemingly useless installation of build dependencies 2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos e389592017 build(copy-dist): copying build folder is not required anymore
TS and Webpack build into the dist folder directly now
2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos 5e289ea12d build: get rid of intermediary "build" folder -> use "dist" directly 2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos 3032156b45 build(copy-dist): execute code in try/catch -> get rid of function
since we don't export this anywhere, might as well just call the steps directly
2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos d75cf8c11e build(copy-dist): consolidate nodeModules copying into a single loop 2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos a816abb372 build(copy-dist): use sync copying
since this is a "standalone" script we are running and no other JS scritps are running "in the background", there's no real benefit for async here.
2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos 37f1525d0e build(copy-dist): remove unused paths 2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos dbeae62709 build(copy-dist): simplify "copyNodeModuleFileOrFolder" copying
there's no benefit from stripping "node_modules/" from the string, to later add it again using the `DEST_DIR_NODE_MODULES` constant

=> just copy directly into the `DEST_DIR` folder and preserver the `node_modules` part in the path
2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos ac3e96291a build(copy-dist): simplify "build" copying
there's no need to read the folder structure and then copy each single file in a loop

=> just copy the whole folder and be done with it :-)
2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos 9ac451e2b2 build(copy-dist): consolidate files and folder copying into one asset copying job
there's no benefit in having them split up like before
2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos dbc2df0820 build(copy-dist): consolidate folder copying
the "srcDirsToCopy" block is useless now, we can just use the previous dirsToCopy to achieve the exact same thing
2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos 24382d8176 build(copy-dist): avoid copying over the app dir into dist
we have the bundled "app-dist" already in the "dist", copying over the original unbundled "app" folder serves no benefit here
2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos af5e4ee3b5 build(copy-dist): copy over required folders/files from "public" folder 2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos 135101f57b build(copy-dist): do not copy build folder into src folder
stop the build folder from being copied into the dist/src subfolder
→ there is no sense in doing that
→ the contents of the build folder are corretly copied previously already (see line 26ff)
2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos 60a2b56636 chore(copy-dist): removee unnecesary copy of tsconfig.webpack.json
webpack bundling already ran before this script, so there is no need to copy this file over
2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos e483cbca3c build(tsconfig): remove unnecessary exclude lines
these folder are already "excluded" implicitly, since we only include "./src" folder
2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos 3e307f4711 build(scripts): add "build:clean" script for removing dist and build folders 2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos 6c4a1732ad build(copy-trilium): use npm run build:ts 2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos d0bb5f9768 build(scripts): add webpack progress flag 2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos 3a87d71073 build(scripts): add build:ts and update build:prepare-dist
since we build into the build folder -> we should also clean the folder before building as well

also it makes sense to run tsc first, as it runs faster, so if there's any TS errors, we will have a faster failing build
2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos e0c0086eb3 build(tsconfig): fix glob for build config
not sure why, but seems like it doesn't like `[jt]s` – which causes it to skip certain .d.ts files, making tsc fail
2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos 2be9389f3b build(webpack): change to nosources-source-map
as per https://webpack.js.org/configuration/devtool/#production

serving the `source-map` file to "normal" users seems to be not recommended, so instead let's go with `nosources-source-map`:

a) this drastically reduces app-dist folder size from 20MB down to 8.7MB
b) it still allows for stack traces
2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos 745b294ca1 build(webpack): output webpack build in build folder
output the bundled files directly in the build folder
a) keeps the src folder clean from build output
b) it saves us some "manual" copying work
2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos cefc402263 build: add separate tsconfig.build.json
this prevents tsc from unnecessarily transpiling the frontend part as well:
previously it was transpiled by tsc, but the files got discarded and replaced by the files built by webpack.

speeds up tsc command a bit as well:
from 14 seconds to ~8 secs
2025-03-07 23:14:56 +01:00
Panagiotis Papadopoulos 2c91f6e7bc refactor(errors): add HttpError class and extend existing errors from it 2025-03-07 22:47:03 +01:00
Panagiotis Papadopoulos 39d45dc11b refactor(error_handlers): use existing NotFoundError class
also gets rid of "any" type :-)
2025-03-07 22:31:55 +01:00
Panagiotis Papadopoulos d8ce385134 refactor(routes): refactor handleException and get rid of "any" type 2025-03-07 22:27:13 +01:00
Panagiotis Papadopoulos ba5152de40 refactor(errors): extend errors from Error and add/assign statusCode
this is in preparation for updating the routes/handleException method, to get rid of "any" (and improve in general)
2025-03-07 22:22:44 +01:00
Panagiotis Papadopoulos 04f3b637f9 chore(lint): fix no-explicit-any in export.ts 2025-03-06 23:32:05 +01:00
Panagiotis Papadopoulos 7feb38ffa1 chore(lint): fix no-unused-vars errors 2025-03-06 23:21:47 +01:00
Panagiotis Papadopoulos c8e36942fc chore(lint): get rid of "any" in attachments
req.file is of type "Express.Multer.File | undefined".
Returning with an "uploaded: false" type object -> same handling as in
image.ts
2025-03-06 23:09:24 +01:00
Panagiotis Papadopoulos dfb8982a99 chore(lint): improve type and get rid of "any" 2025-03-06 22:44:54 +01:00
Panagiotis Papadopoulos 0f0e55deb2 chore(lint): fix lint issues in src/routes 2025-03-05 18:09:44 +01:00
Elian Doran 0916d87e3d feat(client/mfa): improve headings 2024-12-24 14:02:52 +02:00
Elian Doran e20e53f606 feat(client/mfa): improve layout by separating into multiple sections 2024-12-24 14:02:00 +02:00
Elian Doran 2eb4d4fb66 Merge remote-tracking branch 'origin/develop' into feature/MFA 2024-12-24 13:30:37 +02:00
chesspro13 120f1677e8 Removed unused import 2024-09-14 10:12:14 -07:00
chesspro13 d92820280d Fixed problem with using existing databases. 2024-09-14 10:04:39 -07:00
chesspro13 2e21a45fc1 Merge branch 'develop' into feature/MFA 2024-09-09 16:30:18 -07:00
Chesspro13 fa5c5ce183 Added OpenID and TOTP to readme 2024-09-09 12:29:32 -07:00
Chesspro13 953f539dcc Changed wording from "Regerate TOTP Secret" to "Generate TOTP Secret" 2024-09-09 12:07:48 -07:00
Chesspro13 d8c8fe0a6d Added check for running both OpenID and TOTP at the same time. 2024-09-09 12:01:41 -07:00
chesspro13 55b0f0e3f4 Simplified .env 2024-09-07 15:00:12 -07:00
chesspro13 06da11ff41 Disabled TOTP checkbox 2024-09-07 14:38:08 -07:00
chesspro13 ede7bbd8ed Fixed recovery code refresh bug. 2024-09-07 14:37:09 -07:00
chesspro13 9dd185e37e Removed unused files/code/imports/comments. 2024-09-07 14:25:48 -07:00
chesspro13 13937a2568 Removed outdated comments 2024-09-07 14:19:16 -07:00
chesspro13 d76396056a Removed unused script 2024-09-07 14:17:34 -07:00
chesspro13 df3cbf85e1 Removed references to disconnecting OpenID Accounts. For now. 2024-09-07 14:12:27 -07:00
chesspro13 c74da18e23 OAuth working 2024-09-07 13:18:47 -07:00
chesspro13 1a8625b558 Added package-lock.json 2024-09-07 11:53:26 -07:00
chesspro13 494721f38f Changed Verification order. 2024-09-07 11:51:29 -07:00
chesspro13 37b4bf6b58 Fixed login errors 2024-09-07 11:47:29 -07:00
chesspro13 e232c6634e TOTP working 2024-09-07 11:41:54 -07:00
chesspro13 9c748f326a Ported from branch OIDC 2024-09-07 10:21:41 -07:00
Laurent 0f43299c17 Update README.md 2021-06-27 11:45:17 +01:00
Laurent Cozic d160d5c8d5 1.0.12 2020-01-08 16:52:08 +00:00
Laurent Cozic 0b2f3dc10a Fixed issue with tables that contain only one cell 2020-01-08 16:51:43 +00:00
Laurent Cozic 9a12000eb0 1.0.11 2019-10-12 19:33:40 +02:00
Laurent Cozic 4368e08c32 1.0.10 2019-10-12 19:33:01 +02:00
Laurent Cozic 4304c3ad92 1.0.9 2019-10-12 19:32:48 +02:00
Laurent Cozic c00d538f88 Fixes #1: Some tables were imported with an extra header 2019-10-12 19:32:33 +02:00
Laurent Cozic 6fb98621ce Publis script 2019-09-07 10:28:14 +01:00
Laurent Cozic a120d4ec9c Fix importing tables that contain pipes 2019-09-07 10:27:34 +01:00
Laurent Cozic 3358d85996 Fix importing tables that contain pipes 2019-09-07 10:27:01 +01:00
Laurent Cozic b33431774b Fix security issues 2019-09-07 10:18:23 +01:00
Laurent Cozic 7051ce787c 1.0.8 2019-05-11 00:26:38 +01:00
Laurent Cozic 1452200c79 Fixed handling of tables with empty headers 2019-05-11 00:26:27 +01:00
Laurent Cozic 54f84c12fd 1.0.7 2018-06-09 19:41:25 +01:00
Laurent Cozic 118a856ee7 Merge branch 'master' of github.com:laurent22/joplin-turndown-plugin-gfm 2018-06-09 19:41:11 +01:00
Laurent Cozic 11225771b6 Don't render table outline if it contains only one cell, or no cell at all 2018-06-09 19:40:57 +01:00
Laurent Cozic 18e93d7c0b Update package.json 2018-05-24 12:34:39 +01:00
Laurent Cozic ec895d31fb 1.0.6 2018-05-24 12:31:46 +01:00
Laurent Cozic 59153ece46 Handle colspan in TD tags 2018-05-24 12:31:40 +01:00
Laurent Cozic 44aa7353f0 1.0.5 2018-05-22 00:15:34 +01:00
Laurent Cozic ecb6142c5a Fixed: Ensure there are no blank lines inside tables 2018-05-22 00:15:21 +01:00
Laurent Cozic a2d99a266b 1.0.4 2018-05-21 23:56:00 +01:00
Laurent Cozic 36179a8394 Make table cells at least 3 char long 2018-05-21 23:55:53 +01:00
Laurent Cozic 90cff86ac0 1.0.3 2018-05-21 23:42:28 +01:00
Laurent Cozic a1fa10e997 Merge branch 'master' of github.com:laurent22/joplin-turndown-plugin-gfm 2018-05-21 23:42:14 +01:00
Laurent Cozic 7af39b57f0 Replace newlines inside table cells so that resulting markdown is valid 2018-05-21 23:42:02 +01:00
Laurent Cozic d1563a336a Update README.md 2018-05-21 23:23:19 +01:00
Laurent Cozic 0f64fe53cb Merge branch 'master' of github.com:laurent22/joplin-turndown-plugin-gfm 2018-05-21 23:22:44 +01:00
Laurent Cozic 36263e6295 Moved package to different namespace so that it can be published to npm 2018-05-21 23:22:32 +01:00
Laurent Cozic 616cc129e2 Don't render the border of tables that contain other tables 2018-05-21 23:21:37 +01:00
Laurent Cozic 9bcb5ec3a9 Update README.md 2018-05-21 23:20:53 +01:00
Laurent Cozic 813b9a61b0 Fix trailing space issue 2018-05-17 01:29:33 +01:00
Laurent Cozic e77328fb23 Handle tables with no headers by creating an empty Markdown header 2018-05-17 01:01:36 +01:00
Dom Christie 61a981b8c6 1.0.2 2018-05-11 12:05:19 +01:00
Dom Christie 22f423429c Merge pull request #9 from domchristie/tables_with_no_heading_row
Keep tables with no definitive heading row
2018-05-11 12:03:16 +01:00
Dom Christie 93d5aed1fe Keep tables with no definitive heading row 2018-05-11 11:55:21 +01:00
Dom Christie 7eeb773b6b Update security vulnerabilities according to npm audit 2018-05-11 11:20:17 +01:00
Dom Christie cbe8dc5e5c 1.0.1 2017-12-19 10:01:33 +00:00
Dom Christie aa1b4789ca Merge pull request #2 from domchristie/update_turndown_4.0.1
Update turndown dev dependency to latest version
2017-12-19 10:01:00 +00:00
Dom Christie b80a6dcb27 Update turndown dev dependency to latest version 2017-12-19 09:55:46 +00:00
Dom Christie 27e789a749 Merge pull request #1 from Galadirith/fix-unpkg-url
Use correct unpkg url for plugin
2017-12-18 18:30:04 +00:00
Edward Fauchon-Jones 1830087ab8 Use correct unpkg url for plugin 2017-12-18 14:03:52 +00:00
Dom Christie 874b9c7ecb 1.0.0 2017-12-17 12:26:55 +00:00
Dom Christie 77c6234c2f Add repository field 2017-12-17 12:26:45 +00:00
Dom Christie 81077a68dd Clarify module files 2017-12-17 12:25:01 +00:00
Dom Christie 20bde1cef6 Update turndown version 2017-12-17 12:24:03 +00:00
Dom Christie 4730ad37bc Fix turndown require path 2017-12-15 08:45:56 +00:00
Dom Christie a999761fa0 Add travis config 2017-12-15 08:36:34 +00:00
Dom Christie ac25f96d4c Update package-lock 2017-12-15 08:32:40 +00:00
Dom Christie 37fadbdcf1 0.0.3 2017-12-13 20:53:12 +00:00
Dom Christie 7354350a22 Use widely-supported method to get align attribute 2017-12-12 22:55:54 +00:00
Dom Christie abd6a18b50 0.0.2 2017-11-24 11:26:12 +00:00
Dom Christie 5603573b6d Build test in build script 2017-11-24 11:26:00 +00:00
Dom Christie 5663b4e006 Do not track test browser build 2017-11-24 11:20:42 +00:00
Dom Christie b2f021ee9e Remove gfm test browser build 2017-11-24 11:20:22 +00:00
Dom Christie 611f0f037c Add highlighted code block rules 2017-11-24 11:19:37 +00:00
Dom Christie a4ef6870b7 Improve table heading row conversion 2017-11-24 11:18:27 +00:00
Dom Christie 42e4a09b57 Add gfm plugins 2017-11-10 14:21:46 +00:00
Dom Christie 216791b9da Use minimal gitignore 2017-11-10 14:14:35 +00:00
Dom Christie 202027774a Initial commit 2017-11-10 14:09:07 +00:00
998 changed files with 51007 additions and 121409 deletions
+40 -6
View File
@@ -1,10 +1,44 @@
.git
.idea
# ignored Files
.dockerignore
.editorconfig
.git*
.prettier*
electron*
entitlements.plist
nodemon.json
renovate.json
trilium.iml
Dockerfile
Dockerfile.*
npm-debug.log
/src/**/*.spec.ts
# ignored folders
/.cache
/.git
/.github
/.idea
/.vscode
/bin
/build
/dist
/docs
/npm-debug.log
node_modules
/dump-db
/e2e
/integration-tests
/spec
/test
/test-etapi
/node_modules
src/**/*.ts
!src/services/asset_path.ts
# exceptions
!/bin/copy-dist.ts
!/bin/cleanupNodeModules.ts
# temporary exception to make copy-dist inside Docker build not fail
# TriliumNextTODO: make copy-dist *not* requiring to copy these file for builds other than electron-forge
!forge.config.cjs
!/bin/tpl
!/bin/electron-forge/desktop.ejs
!/bin/electron-forge/sign-windows.cjs
+44
View File
@@ -0,0 +1,44 @@
{
"typescript": {
"indentWidth": 4,
"quoteStyle": "preferDouble",
"semiColons": "prefer",
"quoteProps": "asNeeded",
"newLineKind": "lf",
"lineWidth": 200,
"trailingCommas": "never",
"arrayPattern.spaceAround": true,
"arrayExpression.spaceAround": true
},
"json": {
},
"markdown": {
},
"dockerfile": {
},
"malva": {
},
"markup": {
},
"yaml": {
},
"excludes": [
"**/node_modules",
"**/*-lock.json",
"*.html",
"*.md",
"*.yml",
"libraries/*",
"docs/*",
"src/public/app/doc_notes"
],
"plugins": [
"https://plugins.dprint.dev/typescript-0.94.0.wasm",
"https://plugins.dprint.dev/json-0.20.0.wasm",
"https://plugins.dprint.dev/markdown-0.18.0.wasm",
"https://plugins.dprint.dev/dockerfile-0.3.2.wasm",
"https://plugins.dprint.dev/g-plane/malva-v0.11.1.wasm",
"https://plugins.dprint.dev/g-plane/markup_fmt-v0.19.0.wasm",
"https://plugins.dprint.dev/g-plane/pretty_yaml-v0.5.0.wasm"
]
}
+2
View File
@@ -1,3 +1,5 @@
package-lock.json linguist-generated=true
**/package-lock.json linguist-generated=true
src/public/app/doc_notes/en/User[[:space:]]Guide/** linguist-generated=true
src/public/app/doc_notes/en/User[[:space:]]Guide/**/*.md eol=lf
libraries/** linguist-vendored
+20 -70
View File
@@ -8,8 +8,11 @@ inputs:
arch:
description: "The architecture to build for: x64, arm64"
required: true
extension:
description: "Platform specific extensions to copy in the output: dmg, deb, rpm, exe, zip"
shell:
description: "Which shell to use"
required: true
forge_platform:
description: "The --platform to pass to Electron Forge"
required: true
runs:
@@ -38,21 +41,21 @@ runs:
- name: Verify certificates
if: inputs.os == 'macos'
shell: bash
shell: ${{ inputs.shell }}
run: |
echo "Available signing identities:"
security find-identity -v -p codesigning build.keychain
- name: Set up Python and other macOS dependencies
if: ${{ inputs.os == 'macos' }}
shell: bash
shell: ${{ inputs.shell }}
run: |
brew install python-setuptools
brew install create-dmg
- name: Install dependencies for RPM and Flatpak package building
if: ${{ inputs.os == 'linux' }}
shell: bash
shell: ${{ inputs.shell }}
run: |
sudo apt-get update && sudo apt-get install rpm flatpak-builder elfutils
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
@@ -62,42 +65,35 @@ runs:
# Build setup
- name: Install dependencies
shell: bash
shell: ${{ inputs.shell }}
run: npm ci
- name: Update build info
shell: bash
shell: ${{ inputs.shell }}
run: npm run chore:update-build-info
# Critical debugging configuration
- name: Run electron-forge build with enhanced logging
shell: bash
shell: ${{ inputs.shell }}
env:
# Pass through required environment variables for signing and notarization
APPLE_TEAM_ID: ${{ env.APPLE_TEAM_ID }}
APPLE_ID: ${{ env.APPLE_ID }}
APPLE_ID_PASSWORD: ${{ env.APPLE_ID_PASSWORD }}
WINDOWS_SIGN_EXECUTABLE: ${{ env.WINDOWS_SIGN_EXECUTABLE }}
TRILIUM_ARTIFACT_NAME_HINT: TriliumNextNotes-${{ github.ref_name }}-${{ inputs.os }}-${{ inputs.arch }}
run: |
# Map OS names to Electron Forge platform names
if [ "${{ inputs.os }}" = "macos" ]; then
PLATFORM="darwin"
elif [ "${{ inputs.os }}" = "windows" ]; then
PLATFORM="win32"
else
PLATFORM="${{ inputs.os }}"
fi
npm run electron-forge:make -- \
--arch=${{ inputs.arch }} \
--platform=$PLATFORM
--platform=${{ inputs.forge_platform }}
# Add DMG signing step
- name: Sign DMG
if: inputs.os == 'macos'
shell: bash
shell: ${{ inputs.shell }}
run: |
echo "Signing DMG file..."
dmg_file=$(find out -name "*.dmg" -print -quit)
dmg_file=$(find ./dist -name "*.dmg" -print -quit)
if [ -n "$dmg_file" ]; then
echo "Found DMG: $dmg_file"
# Get the first valid signing identity from the keychain
@@ -119,13 +115,13 @@ runs:
- name: Verify code signing
if: inputs.os == 'macos'
shell: bash
shell: ${{ inputs.shell }}
run: |
echo "Verifying code signing for all artifacts..."
# First check the .app bundle
echo "Looking for .app bundle..."
app_bundle=$(find out -name "*.app" -print -quit)
app_bundle=$(find ./dist -name "*.app" -print -quit)
if [ -n "$app_bundle" ]; then
echo "Found app bundle: $app_bundle"
echo "Verifying app bundle signing..."
@@ -144,7 +140,7 @@ runs:
# Then check DMG if it exists
echo "Looking for DMG..."
dmg_file=$(find out -name "*.dmg" -print -quit)
dmg_file=$(find ./dist -name "*.dmg" -print -quit)
if [ -n "$dmg_file" ]; then
echo "Found DMG: $dmg_file"
echo "Verifying DMG signing..."
@@ -160,54 +156,8 @@ runs:
# Finally check ZIP if it exists
echo "Looking for ZIP..."
zip_file=$(find out -name "*.zip" -print -quit)
zip_file=$(find ./dist -name "*.zip" -print -quit)
if [ -n "$zip_file" ]; then
echo "Found ZIP: $zip_file"
echo "Note: ZIP files are not code signed, but their contents should be"
fi
- name: Prepare artifacts
shell: bash
run: |
mkdir -p upload
if [ "${{ inputs.os }}" = "macos" ]; then
# For macOS, we need to look in specific directories based on the maker
echo "Collecting macOS artifacts..."
# Look for DMG files recursively
echo "Looking for DMG files..."
dmg_file=$(find out -name "*.dmg" -print -quit)
if [ -n "$dmg_file" ]; then
echo "Found DMG: $dmg_file"
cp "$dmg_file" "upload/TriliumNextNotes-${{ github.ref_name }}-macos-${{ inputs.arch }}.dmg"
else
echo "Warning: No DMG file found"
fi
# Look for ZIP files recursively
echo "Looking for ZIP files..."
zip_file=$(find out -name "*.zip" -print -quit)
if [ -n "$zip_file" ]; then
echo "Found ZIP: $zip_file"
cp "$zip_file" "upload/TriliumNextNotes-${{ github.ref_name }}-macos-${{ inputs.arch }}.zip"
else
echo "Warning: No ZIP file found"
fi
else
# For other platforms, use the existing logic but with better error handling
echo "Collecting artifacts for ${{ inputs.os }}..."
for ext in ${{ inputs.extension }}; do
echo "Looking for .$ext files..."
file=$(find out -name "*.$ext" -print -quit)
if [ -n "$file" ]; then
echo "Found $file for extension $ext"
cp "$file" "upload/TriliumNextNotes-${{ github.ref_name }}-${{ inputs.os }}-${{ inputs.arch }}.$ext"
else
echo "Warning: No file found with extension .$ext"
fi
done
fi
echo "Final contents of upload directory:"
ls -la upload/
+1 -1
View File
@@ -11,7 +11,7 @@ runs:
- name: Set up node & dependencies
uses: actions/setup-node@v4
with:
node-version: 20
node-version: 22
cache: "npm"
- name: Install dependencies
shell: bash
+4 -28
View File
@@ -1,9 +1,9 @@
name: Dev
on:
push:
branches-ignore:
- 'develop'
- 'feature/update**'
branches: [ develop ]
pull_request:
branches: [ develop ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
@@ -26,7 +26,7 @@ jobs:
- name: Set up node & dependencies
uses: actions/setup-node@v4
with:
node-version: 20
node-version: 22
cache: "npm"
- run: npm ci
@@ -44,16 +44,6 @@ jobs:
- test_dev
steps:
- 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
- name: Create server-package.json
run: cat package.json | grep -v electron > server-package.json
- uses: docker/setup-buildx-action@v3
- uses: docker/build-push-action@v6
with:
@@ -82,20 +72,6 @@ jobs:
- 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:
+1 -16
View File
@@ -45,7 +45,7 @@ jobs:
- name: Set up node & dependencies
uses: actions/setup-node@v4
with:
node-version: 20
node-version: 22
cache: "npm"
- name: Install npm dependencies
@@ -57,9 +57,6 @@ jobs:
- 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:
@@ -154,18 +151,6 @@ jobs:
- 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: Login to GHCR
uses: docker/login-action@v3
with:
-93
View File
@@ -1,93 +0,0 @@
name: Main
on:
push:
branches:
- "feature/update**"
- "feature/server_esm**"
paths-ignore:
- "docs/**"
- ".github/workflows/main-docker.yml"
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
make-electron:
name: Make Electron
strategy:
fail-fast: false
matrix:
arch: [x64, arm64]
os:
- name: macos
image: macos-latest
extension: [dmg, zip]
- name: linux
image: ubuntu-latest
extension: [deb, rpm, zip, flatpak]
- name: windows
image: windows-latest
extension: [exe, zip]
runs-on: ${{ matrix.os.image }}
steps:
- uses: actions/checkout@v4
- name: Set up node & dependencies
uses: actions/setup-node@v4
with:
node-version: 20
- name: Run the build
uses: ./.github/actions/build-electron
with:
os: ${{ matrix.os.name }}
arch: ${{ matrix.arch }}
extension: ${{ matrix.os.extension }}
env:
APPLE_APP_CERTIFICATE_BASE64: ${{ secrets.APPLE_APP_CERTIFICATE_BASE64 }}
APPLE_APP_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_APP_CERTIFICATE_PASSWORD }}
APPLE_INSTALLER_CERTIFICATE_BASE64: ${{ secrets.APPLE_INSTALLER_CERTIFICATE_BASE64 }}
APPLE_INSTALLER_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_INSTALLER_CERTIFICATE_PASSWORD }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }}
# Clean up keychain after build
- name: Clean up keychain
if: matrix.os.name == 'macos' && always()
run: |
security delete-keychain build.keychain
- name: Publish artifacts
uses: actions/upload-artifact@v4
with:
name: TriliumNextNotes ${{ matrix.os.name }} ${{ matrix.arch }}.zip
path: upload/*.zip
- name: Publish installer artifacts
uses: actions/upload-artifact@v4
with:
name: TriliumNextNotes ${{ matrix.os.name }} ${{ matrix.arch }}.${{matrix.os.extension}}
path: upload/*.${{ matrix.os.extension }}
build_linux_server:
name: Build Linux Server
strategy:
fail-fast: false
matrix:
arch: [x64, arm64]
include:
- arch: x64
runs-on: ubuntu-latest
- arch: arm64
runs-on: ubuntu-24.04-arm
runs-on: ${{ matrix.runs-on }}
steps:
- uses: actions/checkout@v4
- name: Run the build
uses: ./.github/actions/build-server
with:
arch: ${{ matrix.arch }}
- uses: actions/upload-artifact@v4
with:
name: TriliumNextNotes linux server ${{ matrix.arch }}
path: upload/TriliumNextNotes-linux-${{ matrix.arch }}-${{ github.ref_name }}.tar.xz
+24 -37
View File
@@ -5,6 +5,13 @@ on:
- cron: "0 2 * * *" # run at 2 AM UTC
# This can be used to allow manually triggering nightlies from the web interface
workflow_dispatch:
push:
branches:
- renovate/electron-forge*
pull_request:
paths:
- .github/actions/build-electron/*
- forge.config.cjs
env:
GITHUB_UPLOAD_URL: https://uploads.github.com/repos/TriliumNext/Notes/releases/179589950/assets{?name,label}
GITHUB_RELEASE_ID: 179589950
@@ -20,22 +27,24 @@ jobs:
os:
- name: macos
image: macos-latest
extension: [dmg, zip]
shell: bash
forge_platform: darwin
- name: linux
image: ubuntu-latest
extension: [deb, rpm, zip, flatpak]
shell: bash
forge_platform: linux
- name: windows
image: windows-latest
extension: [exe, zip]
image: win-signing
shell: cmd
forge_platform: win32
runs-on: ${{ matrix.os.image }}
steps:
- uses: actions/checkout@v4
- name: Set up node & dependencies
uses: actions/setup-node@v4
with:
node-version: 20
node-version: 22
- name: Install dependencies
shell: bash
run: npm ci
- name: Update nightly version
run: npm run chore:ci-update-nightly-version
@@ -44,7 +53,8 @@ jobs:
with:
os: ${{ matrix.os.name }}
arch: ${{ matrix.arch }}
extension: ${{ join(matrix.os.extension, ' ') }}
shell: ${{ matrix.os.shell }}
forge_platform: ${{ matrix.os.forge_platform }}
env:
APPLE_APP_CERTIFICATE_BASE64: ${{ secrets.APPLE_APP_CERTIFICATE_BASE64 }}
APPLE_APP_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_APP_CERTIFICATE_PASSWORD }}
@@ -53,9 +63,11 @@ jobs:
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }}
WINDOWS_SIGN_EXECUTABLE: ${{ vars.WINDOWS_SIGN_EXECUTABLE }}
- name: Publish release
uses: softprops/action-gh-release@v2
if: ${{ github.event_name != 'pull_request' }}
with:
make_latest: false
prerelease: true
@@ -65,34 +77,9 @@ jobs:
tag_name: nightly
name: Nightly Build
nightly-server:
name: Deploy server nightly
strategy:
fail-fast: false
matrix:
arch: [x64, arm64]
include:
- arch: x64
runs-on: ubuntu-latest
- arch: arm64
runs-on: ubuntu-24.04-arm
runs-on: ${{ matrix.runs-on }}
steps:
- uses: actions/checkout@v4
- name: Run the build
uses: ./.github/actions/build-server
- name: Publish artifacts
uses: actions/upload-artifact@v4
if: ${{ github.event_name == 'pull_request' }}
with:
os: linux
arch: ${{ matrix.arch }}
- name: Publish release
uses: softprops/action-gh-release@v2
with:
make_latest: false
prerelease: true
draft: false
fail_on_unmatched_files: true
files: upload/*.*
tag_name: nightly
name: Nightly Build
name: TriliumNextNotes ${{ matrix.os.name }} ${{ matrix.arch }}
path: upload
+11 -6
View File
@@ -20,26 +20,30 @@ jobs:
os:
- name: macos
image: macos-latest
extension: [dmg, zip]
shell: bash
forge_platform: darwin
- name: linux
image: ubuntu-latest
extension: [deb, rpm, zip, flatpak]
shell: bash
forge_platform: linux
- name: windows
image: windows-latest
extension: [exe, zip]
image: win-signing
shell: cmd
forge_platform: win32
runs-on: ${{ matrix.os.image }}
steps:
- uses: actions/checkout@v4
- name: Set up node & dependencies
uses: actions/setup-node@v4
with:
node-version: 20
node-version: 22
- name: Run the build
uses: ./.github/actions/build-electron
with:
os: ${{ matrix.os.name }}
arch: ${{ matrix.arch }}
extension: ${{ join(matrix.os.extension, ' ') }}
shell: ${{ matrix.os.shell }}
forge_platform: ${{ matrix.os.forge_platform }}
env:
APPLE_APP_CERTIFICATE_BASE64: ${{ secrets.APPLE_APP_CERTIFICATE_BASE64 }}
APPLE_APP_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_APP_CERTIFICATE_PASSWORD }}
@@ -48,6 +52,7 @@ jobs:
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }}
WINDOWS_SIGN_EXECUTABLE: ${{ vars.WINDOWS_SIGN_EXECUTABLE }}
- name: Publish release
uses: softprops/action-gh-release@v2
+7 -1
View File
@@ -36,4 +36,10 @@ images/app-icons/mac/*.png
/playwright-report/
/blob-report/
/playwright/.cache/
/playwright/.auth/
/playwright/.auth/
data-docs/backup
data-docs/log
data-docs/session
data-docs/session_secret.txt
data-docs/document.*
-6
View File
@@ -1,6 +0,0 @@
*.html
*.md
*.yml
libraries/*
docs/*
src/public/app/doc_notes/**/*
-22
View File
@@ -1,22 +0,0 @@
{
"printWidth": 200,
"tabWidth": 4,
"useTabs": false,
"semi": true,
"singleQuote": false,
"quoteProps": "as-needed",
"trailingComma": "none",
"bracketSpacing": true,
"arrowParens": "always",
"proseWrap": "preserve",
"htmlWhitespaceSensitivity": "css",
"endOfLine": "lf",
"overrides": [
{
"files": ["*.json"],
"options": {
"tabWidth": 2
}
}
]
}
+2 -1
View File
@@ -2,6 +2,7 @@
"recommendations": [
"lokalise.i18n-ally",
"editorconfig.editorconfig",
"vitest.explorer"
"vitest.explorer",
"ms-playwright.playwright"
]
}
+31 -44
View File
@@ -1,62 +1,49 @@
# Build stage
FROM node:22.14.0-bullseye-slim AS builder
# Configure build dependencies in a single layer
RUN apt-get update && apt-get install -y --no-install-recommends \
autoconf \
automake \
g++ \
gcc \
libtool \
make \
nasm \
libpng-dev \
python3 \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /usr/src/app
WORKDIR /usr/src/app/build
# Copy only necessary files for build
COPY . .
COPY server-package.json package.json
# Build and cleanup in a single layer
RUN cp -R build/src/* src/. && \
cp build/docker_healthcheck.js . && \
rm docker_healthcheck.ts && \
npm install && \
npm run build:webpack && \
npm prune --omit=dev && \
RUN npm ci && \
npm run build:prepare-dist && \
npm cache clean --force && \
cp -r src/public/app/doc_notes src/public/app-dist/. && \
rm -rf src/public/app/* && \
mkdir -p src/public/app/services && \
cp -r build/src/public/app/services/mime_type_definitions.js src/public/app/services/mime_type_definitions.js && \
rm src/services/asset_path.ts && \
rm -r build
rm -rf build/node_modules && \
mv build/* \
start-docker.sh \
/usr/src/app/ && \
rm -rf \
/usr/src/app/build \
/tmp/node-compile-cache
#TODO: improve node_modules handling in copy-dist/Dockerfile -> remove duplicated work
# currently copy-dist will copy certain node_module folders, but in the Dockerfile we delete them again (to keep image size down),
# as we install necessary dependencies in runtime buildstage anyways
# Runtime stage
FROM node:22.14.0-bullseye-slim
# Install only runtime dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
gosu \
&& rm -rf /var/lib/apt/lists/* && \
rm -rf /var/cache/apt/*
WORKDIR /usr/src/app
# Copy only necessary files from builder
COPY --from=builder /usr/src/app/node_modules ./node_modules
COPY --from=builder /usr/src/app/src ./src
COPY --from=builder /usr/src/app/db ./db
COPY --from=builder /usr/src/app/docker_healthcheck.js .
COPY --from=builder /usr/src/app/start-docker.sh .
COPY --from=builder /usr/src/app/package.json .
COPY --from=builder /usr/src/app/config-sample.ini .
COPY --from=builder /usr/src/app/images ./images
COPY --from=builder /usr/src/app/translations ./translations
COPY --from=builder /usr/src/app/libraries ./libraries
# Install only runtime dependencies
RUN apt-get update && \
apt-get install -y --no-install-recommends \
gosu && \
rm -rf \
/var/lib/apt/lists/* \
/var/cache/apt/*
COPY --from=builder /usr/src/app ./
RUN sed -i "/electron/d" package.json && \
npm ci --omit=dev && \
node --experimental-strip-types ./bin/cleanupNodeModules.ts . --skip-prune-dev-deps && \
npm cache clean --force && \
rm -rf \
/tmp/node-compile-cache \
/usr/src/app/bin/cleanupNodeModules.ts
# Configure container
EXPOSE 8080
+23 -37
View File
@@ -1,38 +1,26 @@
# Build stage
FROM node:22.14.0-alpine AS builder
# Configure build dependencies
RUN apk add --no-cache --virtual .build-dependencies \
autoconf \
automake \
g++ \
gcc \
libtool \
make \
nasm \
libpng-dev \
python3
WORKDIR /usr/src/app
WORKDIR /usr/src/app/build
# Copy only necessary files for build
COPY . .
COPY server-package.json package.json
# Build and cleanup in a single layer
RUN cp -R build/src/* src/. && \
cp build/docker_healthcheck.js . && \
rm docker_healthcheck.ts && \
npm install && \
npm run build:webpack && \
npm prune --omit=dev && \
RUN npm ci && \
npm run build:prepare-dist && \
npm cache clean --force && \
cp -r src/public/app/doc_notes src/public/app-dist/. && \
rm -rf src/public/app && \
mkdir -p src/public/app/services && \
cp -r build/src/public/app/services/mime_type_definitions.js src/public/app/services/mime_type_definitions.js && \
rm src/services/asset_path.ts && \
rm -r build
rm -rf build/node_modules && \
mv build/* \
start-docker.sh \
/usr/src/app/ && \
rm -rf \
/usr/src/app/build \
/tmp/node-compile-cache
#TODO: improve node_modules handling in copy-dist/Dockerfile -> remove duplicated work
# currently copy-dist will copy certain node_module folders, but in the Dockerfile we delete them again (to keep image size down),
# as we install necessary dependencies in runtime buildstage anyways
# Runtime stage
FROM node:22.14.0-alpine
@@ -42,17 +30,15 @@ RUN apk add --no-cache su-exec shadow
WORKDIR /usr/src/app
# Copy only necessary files from builder
COPY --from=builder /usr/src/app/node_modules ./node_modules
COPY --from=builder /usr/src/app/src ./src
COPY --from=builder /usr/src/app/db ./db
COPY --from=builder /usr/src/app/docker_healthcheck.js .
COPY --from=builder /usr/src/app/start-docker.sh .
COPY --from=builder /usr/src/app/package.json .
COPY --from=builder /usr/src/app/config-sample.ini .
COPY --from=builder /usr/src/app/images ./images
COPY --from=builder /usr/src/app/translations ./translations
COPY --from=builder /usr/src/app/libraries ./libraries
COPY --from=builder /usr/src/app ./
RUN sed -i "/electron/d" package.json && \
npm ci --omit=dev && \
node --experimental-strip-types ./bin/cleanupNodeModules.ts . --skip-prune-dev-deps && \
npm cache clean --force && \
rm -rf \
/tmp/node-compile-cache \
/usr/src/app/bin/cleanupNodeModules.ts
# Add application user
RUN adduser -s /bin/false node; exit 0
+7 -4
View File
@@ -37,6 +37,7 @@ Feel free to join our official conversations. We would love to hear what feature
* 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)
* Direct OpenID and TOTP integration for more secure login
* [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
@@ -79,10 +80,11 @@ xattr -c "/path/to/Trilium Next.app"
### Mobile
To use TriliumNext on a mobile device:
To use TriliumNext on a mobile device, you can use a mobile web browser to access the mobile interface of a server installation (see below).
* 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.
If you prefer a native Android app, you can use [TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). Report bugs and missing features at [their repository](https://github.com/FliegendeWurst/TriliumDroid).
See issue https://github.com/TriliumNext/Notes/issues/72 for more information on mobile app support.
### Server
@@ -107,7 +109,8 @@ npm run server:start
### Documentation
Head on over to our [Docs repo](https://github.com/TriliumNext/Docs)
We are currently transitioning to a new documentation mechanism.
Meanwhile you can still view the [archived Docs repository](https://github.com/TriliumNext/Docs).
## 👏 Shoutouts
-13
View File
@@ -1,13 +0,0 @@
#!/usr/bin/env bash
cd src/public
echo Summary
cloc HEAD \
--git --md \
--include-lang=javascript,typescript
echo By file
cloc HEAD \
--git --md \
--include-lang=javascript,typescript \
--by-file | grep \.js\|
-5
View File
@@ -5,11 +5,6 @@ set -e # Fail on any command error
VERSION=`jq -r ".version" package.json`
SERIES=${VERSION:0:4}-latest
cat package.json | grep -v electron > server-package.json
echo "Compiling typescript..."
npx tsc
sudo docker build -t triliumnext/notes:$VERSION --network host -t triliumnext/notes:$SERIES .
if [[ $VERSION != *"beta"* ]]; then
+35 -36
View File
@@ -21,54 +21,53 @@ fi
echo "Selected Arch: $ARCH"
# Set Node.js version and architecture-specific filename
NODE_VERSION=20.15.1
NODE_ARCH=$ARCH
NODE_VERSION=22.14.0
# Debug output
echo "Node arch: $NODE_ARCH"
BUILD_DIR="./build"
DIST_DIR="./dist"
CLEANUP_SCRIPT="./bin/cleanupNodeModules.ts"
# Special case for x64 in Node.js downloads
if [ "$NODE_ARCH" = "x64" ]; then
NODE_FILENAME="x64"
elif [ "$NODE_ARCH" = "arm64" ]; then
NODE_FILENAME="arm64"
fi
# Debug output
echo "Node filename: $NODE_FILENAME"
# Trigger the build
echo "Build start"
npm run build:prepare-dist
echo "Build finished"
PKG_DIR=dist/trilium-linux-${ARCH}-server
echo "Package directory: $PKG_DIR"
# pruning of unnecessary files and devDeps in node_modules
node --experimental-strip-types $CLEANUP_SCRIPT $BUILD_DIR
if [ "$1" != "DONTCOPY" ]
then
# Need to modify copy-trilium.sh to accept the target directory
./bin/copy-trilium.sh "$PKG_DIR"
fi
NODE_FILENAME=node-v${NODE_VERSION}-linux-${ARCH}
cd dist
wget https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${NODE_FILENAME}.tar.xz
tar xfJ node-v${NODE_VERSION}-linux-${NODE_FILENAME}.tar.xz
rm node-v${NODE_VERSION}-linux-${NODE_FILENAME}.tar.xz
echo "Downloading Node.js runtime $NODE_FILENAME..."
cd $BUILD_DIR
wget -qO- https://nodejs.org/dist/v${NODE_VERSION}/${NODE_FILENAME}.tar.xz | tar xfJ -
mv $NODE_FILENAME node
cd ..
mv dist/node-v${NODE_VERSION}-linux-${NODE_FILENAME} $PKG_DIR/node
rm -r $PKG_DIR/node/lib/node_modules/npm
rm -r $PKG_DIR/node/include/node
rm -r $BUILD_DIR/node/lib/node_modules/{npm,corepack} \
$BUILD_DIR/node/bin/{npm,npx,corepack} \
$BUILD_DIR/node/CHANGELOG.md \
$BUILD_DIR/node/include/node \
$BUILD_DIR/node_modules/electron* \
$BUILD_DIR/electron*.{js,map}
rm -r $PKG_DIR/node_modules/electron*
rm -r $PKG_DIR/electron*.js
printf "#!/bin/sh\n./node/bin/node src/main" > $BUILD_DIR/trilium.sh
chmod 755 $BUILD_DIR/trilium.sh
printf "#!/bin/sh\n./node/bin/node src/main" > $PKG_DIR/trilium.sh
chmod 755 $PKG_DIR/trilium.sh
cp bin/tpl/anonymize-database.sql $PKG_DIR/
cp -r translations $PKG_DIR/
# TriliumNextTODO: is this still required? If yes → move to copy-dist/copy-trilium
cp bin/tpl/anonymize-database.sql $BUILD_DIR/
VERSION=`jq -r ".version" package.json`
cd dist
tar cJf trilium-linux-${ARCH}-server-${VERSION}.tar.xz trilium-linux-${ARCH}-server
ARCHIVE_NAME="TriliumNextNotes-Server-${VERSION}-linux-${ARCH}"
echo "Creating Archive $ARCHIVE_NAME..."
mkdir $DIST_DIR
cp -r "$BUILD_DIR" "$DIST_DIR/$ARCHIVE_NAME"
cd $DIST_DIR
tar cJf "$ARCHIVE_NAME.tar.xz" "$ARCHIVE_NAME"
rm -rf "$ARCHIVE_NAME"
echo "Server Build Completed!"
-53
View File
@@ -1,53 +0,0 @@
#!/usr/bin/env bash
set -e # Fail on any command error
if ! command -v jq &> /dev/null; then
echo "Missing command: jq"
exit 1
fi
if ! command -v fakeroot &> /dev/null; then
echo "Missing command: fakeroot"
exit 1
fi
if ! command -v dpkg-deb &> /dev/null; then
echo "Missing command: dpkg-deb"
exit 1
fi
if dpkg-deb 2>&1 | grep BusyBox &> /dev/null; then
echo "The dpkg-deb binary provided by BusyBox is not compatible. The Debian tool needs to be used instead."
exit 1
fi
if ! command -v wine &> /dev/null; then
echo "Missing command: wine"
exit 1
fi
echo "Deleting existing builds"
rm -rf dist/*
SRC_DIR=dist/trilium-src
bin/copy-trilium.sh $SRC_DIR
# we'll just copy the same SRC dir to all the builds so we don't have to do npm install in each separately
cp -r $SRC_DIR ./dist/trilium-linux-x64-src
cp -r $SRC_DIR ./dist/trilium-linux-x64-server
cp -r $SRC_DIR ./dist/trilium-windows-x64-src
cp -r $SRC_DIR ./dist/trilium-mac-x64-src
cp -r $SRC_DIR ./dist/trilium-mac-arm64-src
bin/build-win-x64.sh DONTCOPY
bin/build-mac-x64.sh DONTCOPY
bin/build-mac-arm64.sh DONTCOPY
bin/build-linux-x64.sh DONTCOPY
bin/build-server.sh DONTCOPY
+109
View File
@@ -0,0 +1,109 @@
import fs from "fs-extra";
import path from "path";
import type { Dirent } from "fs-extra";
import { execSync } from "node:child_process";
/**
* Example usage with node >= v22:
* node --experimental-strip-types bin/cleanupNodeModules.ts /path/to/build/folder [--skip-prune-dev-deps]
* Example usage with tsx:
* tsx bin/cleanupNodeModules.ts /path/to/build/folder [--skip-prune-dev-deps]
*/
function main() {
if (process.argv.length > 4 || process.argv.length < 3) {
console.error("Usage: cleanupNodeModules.ts [path-to-build-folder] [--skip-prune-dev-deps]");
process.exit(1);
}
const basePath = process.argv[2];
const pruneDevDeps = process.argv[3] !== "--skip-prune-dev-deps";
if (!fs.existsSync(basePath)) {
console.error(`Supplied path '${basePath}' does not exist. Aborting.`);
process.exit(1);
}
console.log(`Starting pruning of node_modules ${!pruneDevDeps ? '(skipping npm pruning)' : ''} in '${basePath}'...`);
cleanupNodeModules(basePath, pruneDevDeps);
console.log("Successfully pruned node_modules.");
}
function cleanupNodeModules(basePath: string, pruneDevDeps: boolean = true) {
// This needs to run for the server and Docker build,
// but needs to be skipped for electron-forge: its
// built-in pruning takes care of it already
if (pruneDevDeps) {
execSync(`npm ci --omit=dev --prefix ${basePath}`);
}
const nodeModulesDirPath = path.join(basePath, "node_modules");
const nodeModulesContent = fs.readdirSync(nodeModulesDirPath, { recursive: true, withFileTypes: true });
//const libDir = fs.readdirSync(path.join(basePath, "./libraries"), { recursive: true, withFileTypes: true });
/**
* Delete unnecessary folders
*/
const filterableDirs = new Set([
"demo",
"demos",
"doc",
"docs",
"example",
"examples",
"test",
"tests"
]);
nodeModulesContent
.filter(el => el.isDirectory() && filterableDirs.has(el.name))
.forEach(dir => removeDirent(dir));
/**
* Delete unnecessary files based on file extension
* TODO filter out useless (README).md files
*/
const filterableFileExt = new Set([
"ts",
"map"
]);
nodeModulesContent
// TriliumNextTODO: check if we can improve this naive file ext matching, without introducing any additional dependency
.filter(el => el.isFile() && filterableFileExt.has(el.name.split(".").at(-1) || ""))
.forEach(dir => removeDirent(dir));
/**
* Delete specific unnecessary folders
* TODO: check if we want removeSync to throw an error, if path does not exist anymore -> currently it will silently fail
*/
const extraFoldersDelete = new Set([
path.join(nodeModulesDirPath, ".bin"),
path.join(nodeModulesDirPath, "@excalidraw", "excalidraw", "dist", "dev"),
path.join(nodeModulesDirPath, "boxicons", "svg"),
path.join(nodeModulesDirPath, "boxicons", "node_modules"),
path.join(nodeModulesDirPath, "boxicons", "src"),
path.join(nodeModulesDirPath, "boxicons", "iconjar"),
path.join(nodeModulesDirPath, "@jimp", "plugin-print", "fonts"),
path.join(nodeModulesDirPath, "jimp", "dist", "browser") // missing "@" in front of jimp is not a typo here
]);
nodeModulesContent
.filter(el => el.isDirectory() && extraFoldersDelete.has(path.join(el.parentPath, el.name)))
.forEach(dir => removeDirent(dir))
}
function removeDirent(el: Dirent) {
const elementToDelete = path.join(el.parentPath, el.name);
fs.removeSync(elementToDelete);
if (process.env.VERBOSE) {
console.log(`Deleted ${elementToDelete}`);
}
}
main()
+38 -89
View File
@@ -1,9 +1,7 @@
import fs from "fs-extra";
import path from "path";
const DEST_DIR = "./dist";
const DEST_DIR_SRC = path.join(DEST_DIR, "src");
const DEST_DIR_NODE_MODULES = path.join(DEST_DIR, "node_modules");
const DEST_DIR = "./build";
const VERBOSE = process.env.VERBOSE;
@@ -13,43 +11,40 @@ function log(...args: any[]) {
}
}
async function copyNodeModuleFileOrFolder(source: string) {
const adjustedSource = source.substring(13);
const destination = path.join(DEST_DIR_NODE_MODULES, adjustedSource);
try {
log(`Copying ${source} to ${destination}`);
await fs.ensureDir(path.dirname(destination));
await fs.copy(source, destination);
}
const copy = async () => {
for (const srcFile of fs.readdirSync("build")) {
const destFile = path.join(DEST_DIR, path.basename(srcFile));
log(`Copying source ${srcFile} -> ${destFile}.`);
fs.copySync(path.join("build", srcFile), destFile, { recursive: true });
}
const filesToCopy = [
"config-sample.ini",
"tsconfig.webpack.json",
const assetsToCopy = new Set([
// copy node_module, to avoid downloading packages a 2nd time during pruning
"./node_modules",
"./images",
"./libraries",
"./translations",
"./db",
"./config-sample.ini",
"./package-lock.json",
"./package.json",
"./LICENSE",
"./README.md",
"./forge.config.cjs",
"./bin/tpl/",
"./bin/cleanupNodeModules.ts",
"./bin/electron-forge/desktop.ejs",
"./bin/electron-forge/sign-windows.cjs",
"./src/views/",
"./src/etapi/etapi.openapi.yaml",
"./src/routes/api/openapi.json"
];
for (const file of filesToCopy) {
log(`Copying ${file}`);
await fs.copy(file, path.join(DEST_DIR, file));
}
"./src/routes/api/openapi.json",
"./src/public/icon.png",
"./src/public/manifest.webmanifest",
"./src/public/robots.txt",
"./src/public/fonts",
"./src/public/stylesheets",
"./src/public/translations",
"./packages/turndown-plugin-gfm/src"
]);
const dirsToCopy = ["images", "libraries", "translations", "db"];
for (const dir of dirsToCopy) {
log(`Copying ${dir}`);
await fs.copy(dir, path.join(DEST_DIR, dir));
}
const srcDirsToCopy = ["./src/public", "./src/views", "./build"];
for (const dir of srcDirsToCopy) {
log(`Copying ${dir}`);
await fs.copy(dir, path.join(DEST_DIR_SRC, path.basename(dir)));
for (const asset of assetsToCopy) {
log(`Copying ${asset}`);
fs.copySync(asset, path.join(DEST_DIR, asset));
}
/**
@@ -58,59 +53,13 @@ const copy = async () => {
const publicDirsToCopy = ["./src/public/app/doc_notes"];
const PUBLIC_DIR = path.join(DEST_DIR, "src", "public", "app-dist");
for (const dir of publicDirsToCopy) {
await fs.copy(dir, path.join(PUBLIC_DIR, path.basename(dir)));
fs.copySync(dir, path.join(PUBLIC_DIR, path.basename(dir)));
}
const nodeModulesFile = [
"node_modules/react/umd/react.production.min.js",
"node_modules/react/umd/react.development.js",
"node_modules/react-dom/umd/react-dom.production.min.js",
"node_modules/react-dom/umd/react-dom.development.js",
"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/@mind-elixir/node-menu/dist/node-menu.umd.cjs"
];
console.log("Copying complete!")
for (const file of nodeModulesFile) {
await copyNodeModuleFileOrFolder(file);
}
} catch(err) {
console.error("Error during copy:", err)
process.exit(1)
}
const nodeModulesFolder = [
"node_modules/@excalidraw/excalidraw/dist/",
"node_modules/katex/dist/",
"node_modules/dayjs/",
"node_modules/boxicons/css/",
"node_modules/boxicons/fonts/",
"node_modules/mermaid/dist/",
"node_modules/jquery/dist/",
"node_modules/jquery-hotkeys/",
"node_modules/split.js/dist/",
"node_modules/panzoom/dist/",
"node_modules/i18next/",
"node_modules/i18next-http-backend/",
"node_modules/jsplumb/dist/",
"node_modules/vanilla-js-wheel-zoom/dist/",
"node_modules/mark.js/dist/",
"node_modules/normalize.css/",
"node_modules/jquery.fancytree/dist/",
"node_modules/autocomplete.js/dist/",
"node_modules/codemirror/lib/",
"node_modules/codemirror/addon/",
"node_modules/codemirror/mode/",
"node_modules/codemirror/keymap/",
"node_modules/mind-elixir/dist/",
"node_modules/@highlightjs/cdn-assets/languages",
"node_modules/@highlightjs/cdn-assets/styles",
"node_modules/leaflet/dist"
];
for (const folder of nodeModulesFolder) {
await copyNodeModuleFileOrFolder(folder);
}
};
copy()
.then(() => console.log("Copying complete!"))
.catch((err) => console.error("Error during copy:", err));
-74
View File
@@ -1,74 +0,0 @@
#!/usr/bin/env bash
set -e # Fail on any command error
shopt -s globstar
if [[ $# -eq 0 ]] ; then
echo "Missing argument of target directory"
exit 1
fi
if ! [[ $(which npm) ]]; then
echo "Missing npm"
exit 1
fi
# Trigger the TypeScript build
echo TypeScript build start
npx tsc
echo TypeScript build finished
# Copy the TypeScript artifacts
DIR="$1"
rm -rf "$DIR"
mkdir -pv "$DIR"
echo Webpack start
npm run build:webpack
echo Webpack finish
echo "Copying Trilium to build directory $DIR"
for d in 'images' 'libraries' 'src' 'db'; do
cp -r "$d" "$DIR"/
done
for f in 'package.json' 'package-lock.json' 'README.md' 'LICENSE' 'config-sample.ini'; do
cp "$f" "$DIR"/
done
# Patch package.json main
sed -i 's/.\/dist\/electron-main.js/electron-main.js/g' "$DIR/package.json"
script_dir=$(realpath $(dirname $0))
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 --legacy-peer-deps)
if [[ -d "$DIR"/node_modules ]]; then
# cleanup of useless files in dependencies
for d in 'image-q/demo' \
'@excalidraw/excalidraw/dist/excalidraw-assets-dev' '@excalidraw/excalidraw/dist/excalidraw.development.js' '@excalidraw/excalidraw/dist/excalidraw-with-preact.development.js' \
'mermaid/dist/mermaid.js' \
'boxicons/svg' 'boxicons/node_modules/react'/* \
'@jimp/plugin-print/fonts' 'jimp/browser' 'jimp/fonts'; do
[[ -e "$DIR"/node_modules/"$d" ]] && rm -r "$DIR"/node_modules/"$d"
done
# delete all tests (there are often large images as test file for jimp etc.)
for d in 'test' 'docs' 'demo' 'example'; do
find "$DIR"/node_modules -name "$d" -exec rm -rf {} +
done
fi
find $DIR/libraries -name "*.map" -type f -delete
find $DIR/node_modules -name "*.map" -type f -delete
find $DIR -name "*.ts" -type f -delete
d="$DIR"/src/public
[[ -d "$d"/app-dist ]] || mkdir -pv "$d"/app-dist
cp -r "$d"/app/doc_notes "$d"/app-dist/
rm -rf "$d"/app
unset f d DIR
+14
View File
@@ -0,0 +1,14 @@
const child_process = require("child_process");
module.exports = function (filePath) {
const { WINDOWS_SIGN_EXECUTABLE } = process.env;
if (!WINDOWS_SIGN_EXECUTABLE) {
console.warn("[Sign] Skip signing due to missing environment variable.");
return;
}
const command = `${WINDOWS_SIGN_EXECUTABLE} --executable "${filePath}"`;
console.log(`[Sign] ${command}`);
child_process.execSync(command);
}
+1 -1
View File
@@ -16,7 +16,7 @@ chcp 65001
:: Get Current Trilium executable directory and compute data directory
SET DIR=%~dp0
set NODE_TLS_REJECT_UNAUTHORIZED=0
cd %DIR%
cd "%DIR%"
start trilium.exe
GOTO END
+2 -1
View File
@@ -15,8 +15,9 @@ chcp 65001
:: Get Current Trilium executable directory and compute data directory
SET DIR=%~dp0
SET DIR=%DIR:~0,-1%
SET TRILIUM_DATA_DIR=%DIR%\trilium-data
cd %DIR%
cd "%DIR%"
start trilium.exe
GOTO END
+1 -1
View File
@@ -16,7 +16,7 @@ chcp 65001
:: Get Current Trilium executable directory and compute data directory
SET DIR=%~dp0
SET TRILIUM_SAFE_MODE=1
cd %DIR%
cd "%DIR%"
start trilium.exe --disable-gpu
GOTO END
+14 -4
View File
@@ -8,9 +8,6 @@ noAuthentication=false
# set to true to disable backups (e.g. because of limited space on server)
noBackup=false
# Disable automatically generating desktop icon
# noDesktopIcon=true
[Network]
# host setting is relevant only for web deployments - set the host on which the server will listen
# host=0.0.0.0
@@ -46,4 +43,17 @@ cookieMaxAge=1814400
[Sync]
#syncServerHost=
#syncServerTimeout=
#syncServerProxy=
#syncServerProxy=
[MultiFactorAuthentication]
# Set the base URL for OAuth/OpenID authentication
# This is the URL of the service that will be used to verify the user's identity
oauthBaseUrl=
# Set the client ID for OAuth/OpenID authentication
# This is the ID of the client that will be used to verify the user's identity
oauthClientId=
# Set the client secret for OAuth/OpenID authentication
# This is the secret of the client that will be used to verify the user's identity
oauthClientSecret=
+49
View File
@@ -0,0 +1,49 @@
[General]
# Instance name can be used to distinguish between different instances using backend api.getInstanceName()
instanceName=
# set to true to allow using Trilium without authentication (makes sense for server build only, desktop build doesn't need password)
noAuthentication=false
# set to true to disable backups (e.g. because of limited space on server)
noBackup=false
# Disable automatically generating desktop icon
# noDesktopIcon=true
[Network]
# host setting is relevant only for web deployments - set the host on which the server will listen
# host=0.0.0.0
# port setting is relevant only for web deployments, desktop builds run on a fixed port (changeable with TRILIUM_PORT environment variable)
port=8080
# true for TLS/SSL/HTTPS (secure), false for HTTP (insecure).
https=false
# path to certificate (run "bash bin/generate-cert.sh" to generate self-signed certificate). Relevant only if https=true
certPath=
keyPath=
# setting to give trust to reverse proxies, a comma-separated list of trusted rev. proxy IPs can be specified (CIDR notation is permitted),
# alternatively 'true' will make use of the leftmost IP in X-Forwarded-For, ultimately an integer can be used to tell about the number of hops between
# Trilium (which is hop 0) and the first trusted rev. proxy.
# once set, expressjs will use the X-Forwarded-For header set by the rev. proxy to determinate the real IPs of clients.
# expressjs shortcuts are supported: loopback(127.0.0.1/8, ::1/128), linklocal(169.254.0.0/16, fe80::/10), uniquelocal(10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, fc00::/7)
trustedReverseProxy=false
[Session]
# Use this setting to set a custom value for the "Path" Attribute value of the session cookie.
# This can be useful, when you have several instances running on the same domain, under different paths (e.g. by using a reverse proxy).
# It prevents your instances from overwriting each others' cookies, allowing you to stay logged in multiple instances simultanteously.
# E.g. if you have instances running under https://your-domain.com/triliumNext/instanceA and https://your-domain.com/triliumNext/instanceB
# you would want to set the cookiePath value to "/triliumNext/instanceA" for your first and "/triliumNext/instanceB" for your second instance
cookiePath=/
# Use this setting to set a custom value for the "Max-Age" Attribute of the session cookie.
# This controls how long your session will be valid, before it expires and you need to log in again, when you use the "Remember Me" option.
# Value needs to be entered in Seconds.
# Default value is 1814400 Seconds, which is 21 Days.
cookieMaxAge=1814400
[Sync]
#syncServerHost=
#syncServerTimeout=
#syncServerProxy=
@@ -0,0 +1,14 @@
-- Add the oauth user data table
CREATE TABLE IF NOT EXISTS "user_data"
(
tmpID INT,
username TEXT,
email TEXT,
userIDEncryptedDataKey TEXT,
userIDVerificationHash TEXT,
salt TEXT,
derivedKey TEXT,
isSetup TEXT DEFAULT "false",
UNIQUE (tmpID),
PRIMARY KEY (tmpID)
);
+13
View File
@@ -126,6 +126,19 @@ CREATE TABLE IF NOT EXISTS "attachments"
utcDateScheduledForErasureSince TEXT DEFAULT NULL,
isDeleted INT not null,
deleteId TEXT DEFAULT NULL);
CREATE TABLE IF NOT EXISTS "user_data"
(
tmpID INT,
username TEXT,
email TEXT,
userIDEncryptedDataKey TEXT,
userIDVerificationHash TEXT,
salt TEXT,
derivedKey TEXT,
isSetup TEXT DEFAULT "false",
UNIQUE (tmpID),
PRIMARY KEY (tmpID)
);
CREATE INDEX IDX_attachments_ownerId_role
on attachments (ownerId, role);
File diff suppressed because it is too large Load Diff
+2
View File
@@ -0,0 +1,2 @@
# User Guide
The sub-children of this note are automatically synced.
Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

@@ -0,0 +1,9 @@
# Advanced Showcases
Trilium offers advanced functionality through [Scripts](../Note%20Types/Code/Scripts.md) and [Promoted Attributes](Attributes/Promoted%20Attributes.md). To illustrate these features, we've prepared several showcases available in the [demo notes](Database.md):
* [Relation Map](../Note%20Types/Relation%20Map.md)
* [Day Notes](Advanced%20Showcases/Day%20Notes.md)
* [Weight Tracker](Advanced%20Showcases/Weight%20Tracker.md)
* [Task Manager](Advanced%20Showcases/Task%20Manager.md)
It's important to note that these examples are not natively supported by Trilium out of the box; instead, they demonstrate what you can build within Trilium.
Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

@@ -0,0 +1,60 @@
# Day Notes
A common pattern in note-taking is that a lot of notes will be centered around a certain date - e.g. you have some tasks which needs to be done on a certain date, you have meeting minutes from a certain date, you have your thoughts etc. and it all revolves around a date on which they occurred. For this reason, it makes sense to create a certain "day workspace" which will centralize all those notes relevant for a certain date.
For this, Trilium provides a concept of "day note". Trilium semi-automatically generates a single note for each day. Under this note you can save all those relevant notes.
Select an existing day note, and the menubar contains a calendar widget. Select any day to create a note for that day. 
![](1_Day%20Notes_image.png)
This pattern works well also because of [Cloning Notes](../../Basic%20Concepts%20and%20Features/Notes/Cloning%20Notes.md) functionality - note can appear in multiple places in the note tree, so besides appearing under day note, it can also be categorized into other notes.
## Demo
![](Day%20Notes_image.png)
You can see the structure of day notes appearing under "Journal" note - there's a note for the whole year 2017, under it, you have "12 - December" which then contains "18 - Monday". This is our "day note" which contains some text in its content and also has some child notes (some of them are from [Task manager](Task%20Manager.md)).
You can also notice how this day note has [promoted attribute](../Attributes/Promoted%20Attributes.md) "weight" where you can track your daily weight. This data is then used in [Weight tracker](Weight%20Tracker.md).
## Templates
Trilium provides [template](../Attributes/Template.md) functionality, and it could be used together with day notes.
You can define one of the following relations on the root of the journal (identified by `#calendarRoot` label):
* yearTemplate
* monthTemplate
* dateTemplate
All of these are relations. When Trilium creates a new note for year or month or date, it will take a look at the root and attach a corresponding `~template` relation to the newly created role. Using this, you can e.g. create your daily template with e.g. checkboxes for daily routine etc.
## Date pattern
It's possible to customize the title of generated date notes by defining a `#datePattern` label on a root calendar note (identified by `#calendarRoot` label). Following are possible values:
* `{dayInMonthPadded} - {weekDay}` day notes are named e.g. "24 - Monday"
* `{dayInMonthPadded}: {weekDay3}` day notes are named e.g. "24: Mon"
* `{dayInMonthPadded}: {weekDay2}` day notes are named e.g. "24: Mo"
* `{isoDate} - {weekDay}` day notes are named e.g. "2020-12-24 - Monday"
* `{ordinal}` is replaced with the ordinal date (e.g. 1st, 2nd, 3rd) etc.
## Month pattern
It is also possible to customize the title of generated month notes through the `#monthPattern` attribute, much like `#datePattern`. The options are:
* `{isoMonth}` results in an ISO 8061 formatted month (e.g. "2025-03" for March 2025)
* `{monthNumberPadded}` results in a number like `09` for September, and `11` for November
* `{month}` results in the full month name (e.g. `September` or `October`)
* `{shortMonth3}` is replaced with the first 3 letters of the month, e.g. Jan, Feb, etc.
* `{shortMonth4}` is replaced with the first 4 letters of the month, e.g. Sept, Octo, etc.
The default is `{monthNumberPadded} - {month}`
## Implementation
Trilium has some special support for day notes in the form of [backend Script API](https://triliumnext.github.io/Notes/backend_api/BackendScriptApi.html) - see e.g. getDayNote() function.
Day (and year, month) notes are created with a label - e.g. `#dateNote="2018-08-16"` this can then be used by other scripts to add new notes to day note etc.
Journal also has relation `child:child:child:template=Day template` (see \[\[attribute inheritance\]\]) which effectively adds \[\[template\]\] to day notes (grand-grand-grand children of Journal).
Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

@@ -0,0 +1,63 @@
# Task Manager
Task Manager is a [promoted attributes](../Attributes/Promoted%20Attributes.md) and [scripts](../../Note%20Types/Code/Scripts.md)showcase present in the [demo notes](../Database.md).
## Demo
![](../../Attachments/task-manager.png)
Task Manager manages outstanding (TODO) tasks and finished tasks (non-empty doneDate attribute). Outstanding tasks are further categorized by location and arbitrary tags - whenever you change tag attribute in the task note, this task is then automatically moved to appropriate location.
Task Manager also integrates with [day notes](Day%20Notes.md) - notes are [cloned](../../Basic%20Concepts%20and%20Features/Notes/Cloning%20Notes.md) into day note to both todoDate note and doneDate note (with [prefix](../../Basic%20Concepts%20and%20Features/Navigation/Tree%20Concepts.md) of either "TODO" or "DONE").
## Implementation
New tasks are created in the TODO note which has `~child:template` [relation](../Attributes.md)(see [attribute inheritance](../Attributes/Attribute%20Inheritance.md)) pointing to the task template.
### Attributes
Task template defines several [promoted attributes](../Attributes/Promoted%20Attributes.md) - todoDate, doneDate, tags, location. Importantly it also defines `~runOnAttributeChange` relation - [event](../../Note%20Types/Code/Events.md) handler which is run on attribute change. This [script](../../Note%20Types/Code/Scripts.md) handles when e.g. we fill out the doneDate attribute - meaning the task is done and should be moved to "Done" note and removed from TODO, locations and tags.
### New task button
There's also "button" note which contains simple script which adds a button to create new note (task) in the TODO note.
```
api.addButtonToToolbar({
title: 'New task',
icon: 'check',
shortcut: 'alt+n',
action: async () => {
// creating notes is backend (server) responsibility so we need to pass
// the control there
const taskNoteId = await api.runOnBackend(async () => {
const todoRootNote = await api.getNoteWithLabel('taskTodoRoot');
const {note} = await api.createNote(todoRootNote.noteId, 'new task', '');
return note.noteId;
});
// we got an ID of newly created note and we want to immediatelly display it
await api.activateNewNote(taskNoteId);
}
});
```
### CSS
In the demo screenshot above you may notice that TODO tasks are in red color and DONE tasks are green.
This is done by having this CSS [code note](../../Note%20Types/Code.md) which defines extra CSS classes:
```
span.fancytree-node.todo .fancytree-title {
color: red !important;
}
span.fancytree-node.done .fancytree-title {
color: green !important;
}
```
This [code note](../../Note%20Types/Code.md) has `#appCss` [label](../Attributes.md)which is recognized by Trilium on startup and loaded as CSS into the application.
Second part of this functionality is based in event handler described above which assigns `#cssClass` label to the task to either "done" or "todo" based on the task status.
@@ -0,0 +1,70 @@
# Weight Tracker
![](Weight%20Tracker_image.png)
The `Weight Tracker` is a [Script API](../../Note%20Types/Code/Script%20API.md) showcase present in the [demo notes](../Database.md).
By adding `weight` as a [promoted attribute](../Attributes/Promoted%20Attributes.md) in the [template](../Attributes/Template.md) from which [day notes](Day%20Notes.md) are created, you can aggregate the data and plot weight change over time.
## Implementation
The `Weight Tracker` note in the screenshot above is of the type `Render Note`. That type of note doesn't have any useful content itself. Instead it is a placeholder where a [script](../../Note%20Types/Code/Scripts.md) can render its output.
Scripts for `Render Notes` are defined in a [relation](../Attributes.md) called `~renderNote`. In this example, it's the `Weight Tracker`'s child `Implementation`. The Implementation consists of two [code notes](../../Note%20Types/Code.md) that contain some HTML and JavaScript respectively, which load all the notes with a `weight` attribute and display their values in a chart.
To actually render the chart, we're using a third party library called [chart.js](https://www.chartjs.org/)which is imported as an attachment, since it's not built into Trilium.
### Code
Here's the content of the script which is placed in a [code note](../../Note%20Types/Code.md) of type `JS Frontend`:
```
async function getChartData() {
const days = await api.runOnBackend(async () => {
const notes = api.getNotesWithLabel('weight');
const days = [];
for (const note of notes) {
const date = note.getLabelValue('dateNote');
const weight = parseFloat(note.getLabelValue('weight'));
if (date && weight) {
days.push({ date, weight });
}
}
days.sort((a, b) => a.date > b.date ? 1 : -1);
return days;
});
const datasets = [
{
label: "Weight (kg)",
backgroundColor: 'red',
borderColor: 'red',
data: days.map(day => day.weight),
fill: false,
spanGaps: true,
datalabels: {
display: false
}
}
];
return {
datasets: datasets,
labels: days.map(day => day.date)
};
}
const ctx = $("#canvas")[0].getContext("2d");
new chartjs.Chart(ctx, {
type: 'line',
data: await getChartData()
});
```
## How to remove the Weight Tracker button from the top bar
In the link map of the `Weight Tracker`, there is a note called `Button`. Open it and delete or comment out its contents. The `Weight Tracker` button will disappear after you restart Trilium.
Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

@@ -0,0 +1,82 @@
# Attributes
In Trilium, attributes are key-value pairs assigned to notes, providing additional metadata or functionality. There are two primary types of attributes:
1. **Labels**: Simple key-value text records
2. **Relations**: Named links to other notes
These attributes play a crucial role in organizing, categorising, and enhancing the functionality of notes.
![](Attributes_image.png)
## Labels
Labels in Trilium can be used for a variety of purposes:
* **Metadata**: Assign labels with optional values for categorization, such as `#year=1999`, `#genre="sci-fi"`, or `#author="Neal Stephenson"`
* **Configuration**: Labels can configure advanced features or settings
* **Scripts and Plugins**: Used to tag notes with special metadata, such as the "weight" attribute in the [Weight Tracker](Advanced%20Showcases/Weight%20Tracker.md)
Labels are also searchable, enhancing note retrieval.
### Common Labels for Advanced Configuration
* `**disableVersioning**`: Disables automatic versioning, ideal for large, unimportant notes like script libraries
* `**versioningLimit**`: Used to limit the number of revisions for a single note
* `**calendarRoot**`: Marks the note as the root for [day notes](Advanced%20Showcases/Day%20Notes.md). Only one note should carry this label
* `**archived**`: Hides notes from default search results and dialogs
* `**excludeFromExport**`: Excludes notes and their subtrees from export operations
* `**run**`: Specifies events to trigger scripts (e.g., `frontendStartup`, `hourly`)
* `**runAtHour**`: Defines specific hours for scripts to run, used with `#run=hourly`
* `**disableInclusion**`: Prevents a script from being included in parent script executions
* `**sorted**`: Automatically sorts child notes alphabetically by title
* `**top**`: Keeps the note at the top of its parent's list, useful with `sorted`
* `**hidePromotedAttributes**`: Hides certain attributes in the note's display
* `**readOnly**`: Sets the note to read-only mode, applicable to text and code notes
* `**autoReadOnlyDisabled**`: Disables automatic read-only mode for large notes
* `**appCss**`: Marks CSS notes used to modify Triliums appearance
* `**appTheme**`: Marks full CSS themes available in Trilium's options
* `**cssClass**`: Adds a CSS class to the note's representation in the tree
* `**iconClass**`: Adds a CSS class to the note's icon, useful for distinguishing notes visually. See [note icons](../Basic%20Concepts%20and%20Features/Notes/Note%20Icons.md)
* `**pageSize**`: Specifies the number of items per page in note listings
* `**customRequestHandler**` **and** `**customResourceProvider**`: Refer to [Custom request handler](Custom%20Request%20Handler.md)
* `**widget**`: Marks a note as a custom widget, added to Trilium's component tree
* `**workspace**` **and related attributes**: See [Workspace](../Basic%20Concepts%20and%20Features/Navigation/Workspace.md) for more details
* `**searchHome**`: Specifies the parent for new search notes
* `**inbox**`: Designates a default location for new notes created via the sidebar
* `**sqlConsoleHome**`: Default location for SQL console notes
* `**bookmarked**` **and** `**bookmarkFolder**`: See [Bookmarks](../Basic%20Concepts%20and%20Features/Navigation/Bookmarks.md)
* `**shareXXX**`: See [Sharing](Sharing.md)
* `**keyboardShortcut**`: Assigns a keyboard shortcut to open the note
* `**displayRelations**` **and** `**hideRelations**`: Manages the display of note relations
* `**titleTemplate**`: See [Default note title](Default%20Note%20Title.md)
* `**template**`: Makes the note available as a template
* `**toc**`: Controls the visibility of the table of contents
* `**color**`: Defines the color of the note in the tree and links
* `**hideChildrenOverview**`: Hides child notes in the parent note's editor
* `**viewType**`: Sets the view of child notes (grid or list)
## Relations
Relations define connections between notes, similar to links.
### Uses
* **Metadata Relationships**: For example, linking a book note to an author note
* **Scripting**: Attaching scripts to events or conditions related to the note
### Common Relations
* **Event-based Relations**: Such as `runOnNoteCreation` or `runOnNoteChange`, which trigger scripts on specific actions
* **Other Relations**: Include `template`, `renderNote`, `widget`, and sharing-related relations
## Multiplicity
Attributes in Trilium can be "multivalued", meaning multiple attributes with the same name can coexist.
## Attribute Definitions and Promoted Attributes
Special labels create "label/attribute" definitions, enhancing the organization and management of attributes. For more details, see [Promoted attributes](Attributes/Promoted%20Attributes.md).
## Attribute Inheritance
Trilium supports attribute inheritance, allowing child notes to inherit attributes from their parents. For more information, see [Attribute inheritance](Attributes/Attribute%20Inheritance.md).
@@ -0,0 +1,25 @@
# Attribute Inheritance
## 1\. Standard Inheritance
In Trilium, attributes can be automatically inherited by child notes if they have the `isInheritable` flag set to `true`. This means the attribute (a key-value pair) is applied to the note and all its descendants.
### Example Use Case
The `archived` label can be set to be inheritable, allowing you to hide a whole subtree of notes from searches and other dialogs by applying this label at the top level.
## 2\. Copying Inheritance
Copying inheritance differs from standard inheritance by using a `child:` prefix in the attribute name. This prefix causes new child notes to automatically receive specific attributes from the parent note. These attributes are independent of the parent and will persist even if the note is moved elsewhere.
### How to Use
* **Syntax:** `#child:attributeName`
* **Chained Inheritance:** You can chain this inheritance, such as `#child:child:attributeName`, where each child down the hierarchy receives the appropriate attribute.
### Example
If a parent note has the label `#child:exampleAttribute`, all newly created child notes will inherit the `#exampleAttribute` label. This can be useful for setting default properties for notes in a specific section.
## 3\. Template Inheritance
Attributes can also be inherited from [templates](Template.md). When a new note is created using a template, it inherits the attributes defined in that template. This is particularly useful for maintaining consistency across notes that follow a similar structure or function.
@@ -0,0 +1,32 @@
# Promoted Attributes
Promoted attributes are [attributes](../Attributes.md) which are considered important and thus are "promoted" onto the main note UI. See example below:
![](../../Attachments/promoted-attributes.png)
You can see the note having kind of form with several fields. Each of these is just regular attribute, the only difference is that they appear on the note itself.
Attributes can be pretty useful since they allow for querying and script automation etc. but they are also inconveniently hidden. This allows you to select few of the important ones and push them to the front of the user.
Now, how do we make attribute to appear on the UI?
## Attribute definition
Attribute is always name-value pair where both name and value are strings.
_Attribute definition_ specifies how should this value be interpreted - is it just string, or is it a date? Should we allow multiple values or note? And importantly, should we _promote_ the attribute or not?
![](Promoted%20Attributes_image.png)
You can notice tag attribute definition. These "definition" attributes define how the "value" attributes should behave.
So there's one attribute for value and one for definition. But notice how definition attribute is [Inheritable](Attribute%20Inheritance.md), meaning that it's also applied to all descendant note. So in a way, this definition is used for the whole subtree while "value" attributes are applied only for this note.
### Inverse relation
Some relations always occur in pairs - my favorite example is on the family. If you have a note representing husband and note representing wife, then there might be a relation between those two of `isPartnerOf`. This is bidirectional relationship - meaning that if a relation is pointing from husband to wife then there should be always another relation pointing from wife to husband.
Another example is with parent - child relationship. Again these always occur in pairs, but in this case it's not exact same relation - the one going from parent to child might be called `isParentOf` and the other one going from child to parent might be called `isChildOf`.
Relation definition allows you to specify such "inverse relation" - for the relation you just define you specify which is the inverse relation. Note that in the second example we should have two relation definitions - one for `isParentOf` which defines `isChildOf` as inverse relation and then second relation definition for `isChildOf` which defines `isParentOf` as inverse relation.
What this does internally is that whenever we save a relation which has defined inverse relation, we check that this inverse relation exists on the relation target note. Similarly, when we delete relation, we also delete inverse relation on the target note.
Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

@@ -0,0 +1,36 @@
# Template
A template in Trilium serves as a predefined structure for other notes, referred to as instance notes. Assigning a template to a note brings three main effects:
1. **Attribute Inheritance**: All attributes from the template note are [inherited](Attribute%20Inheritance.md) by the instance notes. Even attributes with `#isInheritable=false` are inherited by the instance notes, although only inheritable attributes are further inherited by the children of the instance notes.
2. **Content Duplication**: The content of the template note is copied to the instance note, provided the instance note is empty at the time of template assignment.
3. **Child Note Duplication**: All child notes of the template are deep-duplicated to the instance note.
## Example
A typical example would be a "Book" template note, which might include:
* **Promoted Attributes**: Such as publication year, author, etc. (see [promoted attributes](Promoted%20Attributes.md)).
* **Outline**: An outline for a book review, including sections like themes, conclusion, etc.
* **Child Notes**: Additional notes for highlights, summary, etc.
![Template Example](../../Attachments/template.png)
## Instance Note
An instance note is a note related to a template note. This relationship means the instance note's content is initialized from the template, and all attributes from the template are inherited.
To create an instance note through the UI:
![show child note templates](../../Attachments/template-create-instance-n.png)
For the template to appear in the menu, the template note must have the `#template` label. Do not confuse this with the `~template` relation, which links the instance note to the template note. If you use [workspaces](../../Basic%20Concepts%20and%20Features/Navigation/Workspace.md), you can also mark templates with `#workspaceTemplate` to display them only in the workspace.
Templates can also be added or changed after note creation by creating a `~template` relation pointing to the desired template note.
## Additional Notes
From a visual perspective, templates can define `#iconClass` and `#cssClass` attributes, allowing all instance notes (e.g., books) to display a specific icon and CSS style.
Explore the concept further in the [demo notes](../Database.md), including examples like the [Relation Map](../../Note%20Types/Relation%20Map.md), [Task Manager](../Advanced%20Showcases/Task%20Manager.md), and [Day Notes](../Advanced%20Showcases/Day%20Notes.md).
Additionally, see [default note title](../Default%20Note%20Title.md) for creating title templates. Note templates and title templates can be combined by creating a `#titleTemplate` for a template note.
Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

@@ -0,0 +1,16 @@
# Bulk actions
### Execute script
For more complex scenarios, it is possible to type in a JavaScript expression in order to apply the necessary changes.
To apply a suffix (`- suffix` in this example), to the note title:
```javascript
note.title = note.title + " - suffix";
```
To alter attributes of a note in a bulk action, such as setting the `#shareAlias` label to the title of the note:
```javascript
note.setLabel("shareAlias", note.title)
```
@@ -0,0 +1,30 @@
# Configuration (config.ini or environment variables)
Trilium supports configuration via a file named `config.ini` and environment variables. Please review the file named [config-sample.ini](https://github.com/TriliumNext/Notes/blob/develop/config-sample.ini) in the [Notes](https://github.com/TriliumNext/Notes) repository to see what values are supported.
You can provide the same values via environment variables instead of the `config.ini` file, and these environment variables use the following format:
1. Environment variables should be prefixed with `TRILIUM_` and use underscores to represent the INI section structure.
2. The format is: `TRILIUM_<SECTION>_<KEY>=<VALUE>`
3. The environment variables will override any matching values from config.ini
For example, if you have this in your config.ini:
```
[Network]
host=localhost
port=8080
```
You can override these values using environment variables:
```
TRILIUM_NETWORK_HOST=0.0.0.0
TRILIUM_NETWORK_PORT=9000
```
The code will:
1. First load the `config.ini` file as before
2. Then scan all environment variables for ones starting with `TRILIUM_`
3. Parse these variables into section/key pairs
4. Merge them with the config from the file, with environment variables taking precedence
@@ -0,0 +1,88 @@
# Custom Request Handler
Trilium provides a mechanism for [scripts](../Note%20Types/Code/Scripts.md) to open a public REST endpoint. This opens a way for various integrations with other services - a simple example would be creating new note from Slack by issuing a slash command (e.g. `/trilium buy milk`).
## Create note from outside Trilium
Let's take a look at an example. The goal is to provide a REST endpoint to which we can send title and content and Trilium will create a note.
We'll start with creating a JavaScript backend [code note](../Note%20Types/Code.md) containing:
```
const {req, res} = api;
const {secret, title, content} = req.body;
if (req.method == 'POST' && secret === 'secret-password') {
// notes must be saved somewhere in the tree hierarchy specified by a parent note.
// This is defined by a relation from this code note to the "target" parent note
// alternetively you can just use constant noteId for simplicity (get that from "Note Info" dialog of the desired parent note)
const targetParentNoteId = api.currentNote.getRelationValue('targetNote');
const {note} = api.createTextNote(targetParentNoteId, title, content);
const notePojo = note.getPojo();
res.status(201).json(notePojo);
}
else {
res.send(400);
}
```
This script note has also following two attributes:
* label `#customRequestHandler` with value `create-note`
* relation `~targetNote` pointing to a note where new notes should be saved
### Explanation
Let's test this by using an HTTP client to send a request:
```
POST http://my.trilium.org/custom/create-note
Content-Type: application/json
{
"secret": "secret-password",
"title": "hello",
"content": "world"
}+++++++++++++++++++++++++++++++++++++++++++++++
```
Notice the `/custom` part in the request path - Trilium considers any request with this prefix as "custom" and tries to find a matching handler by looking at all notes which have `customRequestHandler` [label](Attributes.md). Value of this label then contains a regular expression which will match the request path (in our case trivial regex "create-note").
Trilium will then find our code note created above and execute it. `api.req`, `api.res` are set to [request](https://expressjs.com/en/api.html#req) and [response](https://expressjs.com/en/api.html#res)objects from which we can get details of the request and also respond.
In the code note we check the request method and then use trivial authentication - keep in mind that these endpoints are by default totally unauthenticated, and you need to take care of this yourself.
Once we pass these checks we will just create the desired note using [Script API](../Note%20Types/Code/Script%20API.md).
## Custom resource provider
Another common use case is that you want to just expose a file note - in such case you create label `customResourceProvider` (value is again path regex).
For more information, see [Custom Resource Providers](Custom%20Resource%20Providers.md).
## Advanced concepts
`api.req` and `api.res` are Express.js objects - you can always look into its [documentation](https://expressjs.com/en/api.html) for details.
### Parameters
REST request paths often contain parameters in the URL, e.g.:
```
http://my.trilium.org/custom/notes/123
```
The last part is dynamic so the matching of the URL must also be dynamic - for this reason the matching is done with regular expressions. Following `customRequestHandler` value would match it:
```
notes/([0-9]+)
```
Additionally, this also defines a matching group with the use of parenthesis which then makes it easier to extract the value. The matched groups are available in `api.pathParams`:
```
const noteId = api.pathParams[0];
```
Often you also need query params (as in e.g. `http://my.trilium.org/custom/notes?noteId=123`), you can get those with standard express `req.query.noteId`.
@@ -0,0 +1,34 @@
# Custom Resource Providers
A custom resource provider allows any file imported into Trilium (images, fonts, stylesheets) to be publicly accessible via a URL.
A potential use case for this is to add embed a custom font alongside a theme.
## Steps for creating a custom resource provider
1. Import a file such as an image or a font into Trilium by drag & drop.
2. Select the file and go to the _Owned Attributes_ section.
3. Add the label `#customResourceProvider=hello`.
4. To test if it is working, use a browser to navigate to `<protocol>://<host>/custom/hello` (where `<protocol>` is either `http` or `https` based on your setup, and `<host>` is the host or IP to your Trilium server instance). If you are running the TriliumNext application without a server, use `http://localhost:37840` as the base URL.
5. If everything went well, at the previous step the browser should have downloaded the file uploaded in the first step.
Instead of `hello`, the name can be:
* A path, such as `fonts/Roboto.ttf`, which would be accessible via `<host>/custom/fonts/Roboto.ttf`.
* As a more advanced use case, a regular expression to match multiple routes, such as `hello/.*` which will be accessible via `/custom/hello/1`, `/custom/hello/2`, `/custom/hello/world`, etc.
## Using it in a theme
For example, if you have a custom font to be imported by the theme, first upload a font file into Trilium and assign it the `#customResourceProvider=fonts/myfont.ttf` attribute.
Then modify the theme CSS to point to:
```css
@font-face {
font-family: customFont;
src: url("/custom/fonts/myfont.ttf");
}
div {
font-family: customFont;
}
```
@@ -0,0 +1,37 @@
# Database
Your Trilium data is stored in a [SQLite](https://www.sqlite.org) database which contains all notes, tree structure, metadata, and most of the configuration. The database file is named `document.db` and is stored in the application's default [Data directory](../Installation%20%26%20Setup/Data%20directory.md).
## Demo Notes
When you run Trilium for the first time, it will generate a new database containing demo notes. These notes showcase its many features, such as:
* [Relation Map](../Note%20Types/Relation%20Map.md)
* [Day Notes](Advanced%20Showcases/Day%20Notes.md)
* [Weight Tracker](Advanced%20Showcases/Weight%20Tracker.md)
* [Task Manager](Advanced%20Showcases/Task%20Manager.md)
* [Custom CSS Themes](../Basic%20Concepts%20and%20Features/Themes.md)
### Restoring Demo Notes
There are some cases in which you may want to restore the original demo notes. For example, if you experimented with some of the more advanced features and want to see the original reference, or if you simply want to explore the latest version of the demo notes, which might showcase new features.
You can easily restore the demo notes by using Trilium's built-in import feature by importing them:
* Download [this .zip archive](https://github.com/TriliumNext/Notes/raw/develop/db/demo.zip) with the latest version of the demo notes
* Right click on any note in your tree under which you would like the demo notes to be imported
* Click "Import into note"
* Select the .zip archive to import it
## Manually Modifying the Database
Trilium provides a lot of flexibility, and with it, opportunities for advanced users to tweak it. If you need to explore or modify the database directly, you can use a tool such as [SQLite Browser](https://sqlitebrowser.org/) to work directly on the database file.
See [Manually altering the database](Database/Manually%20altering%20the%20database.md) for more information.
## How to Reset the Database
If you are experimenting with Trilium and want to return it to its original state, you can do that by deleting the current database. When you restart the application, it will generate a new database containing the original demo notes.
To delete the database, simply go to the [data directory](../Installation%20%26%20Setup/Data%20directory.md) and delete the `document.db` file (and any other files starting with `document.db`).
If you do not need to preserve any configurations that might be stored in the `config.ini` file, you can just delete all of the [data directory's](../Installation%20%26%20Setup/Data%20directory.md) contents to fully restore the application to its original state. You can also review the [configuration](Configuration%20\(config.ini%20or%20e.md) file to provide all `config.ini` values as environment variables instead.
Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

@@ -0,0 +1,42 @@
# Manually altering the database
There are some situations where modifying the SQLite database that Trilium uses is desirable.
If you are doing any advanced development or troubleshooting where you manually modify the database, you might want to consider creating backups of your `document.db` file.
## Modifying it internally using the SQL Console
The SQL Console is Trilium's built-in database editor.
See [SQL Console](Manually%20altering%20the%20database/SQL%20Console.md).
## Externally modifying the database
Sometimes the SQL Console cannot be used (for example if the application cannot start).
When making external modifications, consider closing the desktop application. If modifying the server database, then stop the service or Docker container.
### Using DB Browser for SQLite
DB Browser for SQLite is a cross-platform editor that can be used to alter the database using a graphical user interface.
To do so:
1. In the main menu, select File → Open database… and navigate to the database in the [Data directory](../../Installation%20%26%20Setup/Data%20directory.md).
2. Select the _Execute SQL_ tab.
3. Type in the desired SQL statement.
4. Press the "Play" button in the toolbar underneath the "Execute SQL" tab (or F5 key).
5. Press "Write Changes" in the main toolbar.
6. Close the application or close the database.
![](Manually%20altering%20the%20data.png)
### Using the SQLite CLI
First, start the SQLite 3 CLI by specifying the path to the database:
```
sqlite3 ~/.local/share/trilium-data/document.db
```
* In the prompt simply type the statement and make sure it ends with a `;` character.
* To exit, simply type `.quit` and enter.
Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 508 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 542 B

@@ -0,0 +1,28 @@
# SQL Console
The SQL Console is Trilium's built-in database editor.
It can be accessed by going to the [global menu](../../../Basic%20Concepts%20and%20Features/UI%20Elements) → Advanced → Open SQL Console.
![](SQL%20Console_image.png)
### Interaction
* Hovering the mouse over one of the tables listed at the top of the document will show the columns and their data type.
* Only one SQL statement can be run at once.
* To run the statement, press the ![](3_SQL%20Console_image.png)icon.
* For queries that return a result, the data will displayed in a table.
![](1_SQL%20Console_image.png)
### Saved SQL console
SQL queries or commands can be saved into a dedicated note.
To do so, simply write the query and press the ![](2_SQL%20Console_image.png)button. Once saved, the note will appear in [Day Notes](../../Advanced%20Showcases/Day%20Notes.md).
* The SQL expression will not be displayed by default, but it can still be viewed by going to the note context menu and selecting _Note source_.
* The expression cannot be modified. If needed, recreate it by copying the statement back into the SQL console and then saving it again.
Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

@@ -0,0 +1,30 @@
# Default Note Title
When a new note is created, its name is by default "new note". In some cases, it can be desirable to have a different or even a dynamic default note title.
For this use case, Trilium (since v0.52) supports `#titleTemplate` [label](Attributes.md). You can create such a label for a given note, assign it a value, and this value will be used as a default title when creating child notes. As with other labels, you can make it inheritable to apply recursively, and you can even place it on the root note to have it applied globally everywhere.
As an example use case, imagine you collect books you've read in a given year like this:
* 2022 Books
* Neal Stephenson: Anathem, 2008
* Franz Kafka: Die Verwandlung, 1915
Now, to the parent note "2022 Books" you can assign label `#titleTemplate="[Author name]: [Book title], [Publication year]"`.
And all children of "2022 Books" will be created with initial title "\[Author name\]: \[Book title\], \[Publication year\]". There's no artificial intelligence here, the idea is to just prompt you to manually fill in the pieces of information into the note title by yourself.
## Dynamic value
The value of `#titleTemplate` is evaluated at the point of note's creation as a JavaScript string, which means it can be enriched with the help of JS string interpolation with dynamic data.
As an example, imagine you collect server outage incidents and write some notes. It looks like this:
* Incidents
* 2022-05-09: System crash
* 2022-05-15: Backup delay
You can automatize the date assignment by assigning a label `#titleTemplate="${now.format('YYYY-MM-DD')}: "` to the parent note "Incidents". Whenever a new child note is created, the title template is evaluated with the injected [now](https://day.js.org/docs/en/display/format) object.
Second variable injected is [parentNote](https://triliumnext.github.io/Notes/backend_api/BNote.html), an example could be `#titleTemplate="${parentNote.getLabelValue('authorName')}'s literary works"`.
See also \[\[[template](Attributes/Template.md)\]\] which provides similar capabilities, including default note's content.
@@ -0,0 +1,54 @@
# ETAPI (REST API)
ETAPI is Trilium's public/external REST API. It is available since Trilium v0.50.
The documentation is in OpenAPI format, available [here](https://github.com/TriliumNext/Notes/blob/master/src/etapi/etapi.openapi.yaml).
## API clients
As an alternative to calling the API directly, there are client libraries to simplify this
* [trilium-py](https://github.com/Nriver/trilium-py), you can use Python to communicate with Trilium.
## Authentication
All operations have to be authenticated using a token. You can get this token either from Options -> ETAPI or programmatically using the `/auth/login` REST call (see the [spec](https://github.com/TriliumNext/Notes/blob/master/src/etapi/etapi.openapi.yaml)):
```
GET https://myserver.com/etapi/app-info
Authorization: ETAPITOKEN
```
Alternatively, since 0.56 you can also use basic auth format:
```
GET https://myserver.com/etapi/app-info
Authorization: Basic BATOKEN
```
* Where `BATOKEN = BASE64(username + ':' + password)` - this is a standard Basic Auth serialization
* Where `username` is "etapi"
* And `password` is the generated ETAPI token described above.
Basic Auth is meant to be used with tools which support only basic auth.
## Interaction using Bash scripts
It is possible to write simple Bash scripts to interact with Trilium. As an example, here's how to obtain the HTML content of a note:
```sh
#!/usr/bin/env bash
# Configuration
TOKEN=z1vA4fkGxjOR_ZXLrZeqHEFOv65yV3882iFCRtNIK9k9iWrHliITNSLQ=
SERVER=http://localhost:8080
# Download a note by ID
NOTE_ID="i6ra4ZshJhgN"
curl "$SERVER/etapi/notes/$NOTE_ID/content" -H "Authorization: $TOKEN"
```
Make sure to replace the values of:
* `TOKEN` with your ETAPI token.
* `SERVER` with the correct protocol, host name and port to your Trilium instance.
* `NOTE_ID` with an existing note ID to download.
Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

@@ -0,0 +1,32 @@
# Note Map (Link map, Tree map)
Note map is a visualisation of connections between notes.
This provides an insight into a structure ("web") of notes.
There are two types of note map:
* Link Map, which shows relations between notes.
* Note Map, which shows the hierarchical tree structure.
## Link Map
Shows [relations](Attributes.md) between notes:
![](1_Note%20Map%20\(Link%20map,%20Tree%20m.png)
## Tree Map
Shows hierarchical map of notes:
![](Note%20Map%20\(Link%20map,%20Tree%20m.png)
## Dedicated note type
Apart from the note map feature which can be accessed from any note, it is also possible to create a dedicated note which will display the relations in full screen. See [Note Map](../Note%20Types/Note%20Map.md) for more information.
## See also
[Relation map](../Note%20Types/Relation%20Map.md) is a similar concept, with some differences:
* note map is automatically generated while relation map must be created manually
* relation map is a type of note while a link map is just virtual visualization
@@ -0,0 +1,55 @@
# Note source
## Understanding the source code of the different notes
Internally, the structure of the content of each note is different based on the [Note Types](../Note%20Types).
For example:
* [Text Notes](#root/_hidden/_options/_optionsTextNotes) are represented internally as HTML, using the [CKEditor](Technologies%20used/CKEditor.md) representation. Note that due to the custom plugins, some HTML elements are specific to Trilium only, for example the admonitions.
* [Code Notes](#root/_hidden/_options/_optionsCodeNotes) are plain text and are represented internally as-is.
* [Geo map](../Note%20Types/Geo%20map.md) notes contain only minimal information (viewport, zoom) as a JSON.
* [Canvas](../Note%20Types/Canvas.md) notes are represented as JSON, with Trilium's own information alongside with [Excalidraw](Technologies%20used/Excalidraw.md)'s internal JSON representation format.
* [Mind Map](../Note%20Types/Mind%20Map.md) notes are represented as JSON, with the internal format of [MindElixir](Technologies%20used/MindElixir.md).
Note that some information is also stored as [Attachments](../Attachments). For example [Canvas](../Note%20Types/Canvas.md) notes use the attachments feature to store the custom libraries, and alongside with [Mind Map](../Note%20Types/Mind%20Map.md) and other similar note types it stores an SVG representation of the content for use in other features such as including in other notes, shared notes, etc.
Here's part of the HTML representation of this note, as it's stored in the database (but prettified).
```html
<h2>
Understanding the source code of the different notes
</h2>
<p>
Internally, the structure of the content of each note is different based on the&nbsp;
<a class="reference-link" href="../Note%20Types">
Note Types
</a>
.
</p>
```
## Viewing the source code
It is possible to view the source code of a note by pressing the contextual menu in [Note buttons](../Basic%20Concepts%20and%20Features/UI%20Elements/Note%20buttons.md) and selecting _Note source_.
![](Note%20source_image.png)
The source code will be displayed in a new tab.
For some note types, such as text notes, the source code is also formatted in order to be more easily readable.
## Modifying the source code
It is possible to modify the source code of a note directly, however not via the _Note source_ functionality. 
To do so:
1. Change the note type from the real note type (e.g. Canvas, Geo Type) to Code (plain text) or the corresponding format such as JSON or HTML.
2. Confirm the warning about changing the note type.
3. The source code will appear, make the necessary modifications.
4. Change the note type back to the real note type.
> [!WARNING]
> Depending on the changes made, there is a risk that the note will not render properly. It's best to save a revision before making any big changes.
>
> If the note does not render properly, modify the source code again or revert to a prior revision. Since the error handling for unexpected changes might not always be perfect, it be required to refresh the application.
Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

@@ -0,0 +1,101 @@
# Sharing
Trilium allows you to share selected notes as **publicly accessible** read-only documents. This feature is particularly useful for publishing content directly from your Trilium notes, making it accessible to others online.
## Prerequisites
To use the sharing feature, you must have a [server installation](../Installation%20%26%20Setup/Server%20Installation.md) of Trilium. This is necessary because the notes will be hosted from the server.
## How to Share a Note
1. **Enable Sharing**: To share a note, toggle the `Shared` switch within the note's interface. Once sharing is enabled, an URL will appear, which you can click to access the shared note.
![Share Note](../Attachments/share-single-note.png)
2. **Access the Shared Note**: The link provided will open the note in your browser. If your server is not configured with a public IP, the URL will refer to `localhost (127.0.0.1)`.
![Shared Note Example](../Attachments/share-single-note-web.png)
## Sharing a Note Subtree
When you share a note, you actually share the entire subtree of notes beneath it. If the note has child notes, they will also be included in the shared content. For example, sharing the "Formatting" subtree will display a page with basic navigation for exploring all the notes within that subtree.
![Shared Subtree Example](../Attachments/share-multiple-notes-web.png)
## Viewing All Shared Notes
You can view a list of all shared notes by clicking on "Show Shared Notes Subtree." This allows you to manage and navigate through all the notes you have made public.
## Security Considerations
Shared notes are published on the open internet and can be accessed by anyone with the URL. The URL's randomness does not provide security, so it is crucial not to share sensitive information through this feature.
### Password Protection
To protect shared notes with a username and password, you can use the `#shareCredentials` attribute. Add this label to the note with the format `#shareCredentials="username:password"`. To protect an entire subtree, make sure the label is [inheritable](Attributes/Attribute%20Inheritance.md).
## Advanced Sharing Options
### Customizing the Appearance of Shared Notes
The default shared page is basic in design, but you can customize it using your own CSS:
* **Custom CSS**: Link a CSS [code note](../Note%20Types/Code.md) to the shared page by adding a `~shareCss` relation to the note. If you want this style to apply to the entire subtree, make the label inheritable. You can hide the CSS code note from the tree navigation by adding the `#shareHiddenFromTree` label.
* **Omitting Default CSS**: For extensive styling changes, use the `#shareOmitDefaultCss` label to avoid conflicts with Trilium's [default stylesheet](../Basic%20Concepts%20and%20Features/Themes.md).
### Adding JavaScript
You can inject custom JavaScript into the shared note using the `~shareJs` relation. This allows you to access note attributes or traverse the note tree using the `fetchNote()` API, which retrieves note data based on its ID.
Example:
```javascript
const currentNote = await fetchNote();
const parentNote = await fetchNote(currentNote.parentNoteIds[0]);
for (const attr of parentNote.attributes) {
console.log(attr.type, attr.name, attr.value);
}
```
### Creating Human-Readable URL Aliases
Shared notes typically have URLs like `http://domain.tld/share/knvU8aJy4dJ7`, where the last part is the note's ID. You can make these URLs more user-friendly by adding the `#shareAlias` label to individual notes (e.g., `#shareAlias=highlighting`). This will change the URL to `http://domain.tld/share/highlighting`.
**Important**:
1. Ensure that aliases are unique.
2. Using slashes (`/`) within aliases to create subpaths is not supported.
### Viewing and Managing Shared Notes
All shared notes are grouped under an automatically managed "Shared Notes" section. From here, you can view, share, or unshare notes by moving or cloning them within this section.
![Shared Notes List](../Attachments/shared-list.png)
### Setting a Custom Favicon
To customize the favicon for your shared pages, create a relation `~shareFavicon` pointing to a file note containing the favicon (e.g., in `.ico` format).
### Sharing a Note as the Root
You can designate a specific note or folder as the root of your shared content by adding the `#shareRoot` label. This note will be linked when visiting `[http://domain.tld/share](http://domain/share)`, making it easier to use Trilium as a fully-fledged website. Consider combining this with the `#shareIndex` label, which will display a list of all shared notes.
## Additional Options
* **Raw Note Sharing**: Use the `#shareRaw` label to share a note without any HTML wrapper.
* **Disallow Robot Indexing**: Add the `#shareDisallowRobotIndexing` label to prevent search engines from indexing the shared page by including a `noindex, follow` meta tag and `X-Robots-Tag: noindex` header.
* **Shared Notes Index**: For text notes with the `#shareIndex` label, the content will display a list of all shared note roots.
## Limitations
While the sharing feature is powerful, it has some limitations:
* **No Relation Map Support**
* **Book Notes**: Only show a list of child notes.
* **Code Notes**: No syntax highlighting.
* **Static Note Tree**
* **Protected Notes**: Cannot be shared.
* **Include Notes**: Not supported.
Some of these limitations may be addressed in future updates.
@@ -0,0 +1,16 @@
# Serving directly the content of a note
When accessing a shared note, Trilium will render it as a web page. Sometimes it's desirable to serve the content directly so that it can be used in a script or downloaded by the user.
| A note displayed as a web page (HTML) | A note displayed as a raw format |
| --- | --- |
| ![](1_Serving%20directly%20the%20conte.png) | ![](Serving%20directly%20the%20conte.png) |
## By adding an attribute to the note
Simply add the `#shareRaw` attribute and the note will always be rendered _raw_ when accessed from the share URL.
## By altering the URL
Append `?raw` to the URL to display a note in its raw format regardless of whether the `#shareRaw` attribute is added on the note.
![](Serving%20directly%20the%20conte.png)
@@ -0,0 +1,4 @@
# Technologies used
One core aspect of Trilium that allows it to have support for multiple [Note Types](../Note%20Types) is the fact that it makes use of various off-the-shelf or reusable libraries.
The sub-pages showcase some of the technologies used, for a better understanding of how Trilium works but also to credit the developers of that particular technology.
@@ -0,0 +1,34 @@
# CKEditor
## Editor core
The CKEditor is the WYSIWYG (standing for What You See Is What You Get) editor behind [Text](../../Note%20Types/Text.md) notes.
Their website is [ckeditor.com](https://ckeditor.com/).
CKEditor by itself is a commercial product, but the core is open-source. As described in [its documentation](https://ckeditor.com/docs/ckeditor5/latest/features/index.html), the editor supports quite a large number of features. Do note that not all the features are enabled in Trilium.
## Premium features
Some features are marked as premium in the CKEditor feature set. This means that they cannot be used without a license.
Trilium cannot benefit from any of these premium features as they require a commercial license, however we are in discussions with the CKEditor team to allow us to use a subset of these premium features such as [Slash commands](https://ckeditor.com/docs/ckeditor5/latest/features/slash-commands.html).
## Plugins
The CKEditor ecosystem is quite extensible, in the sense that custom plugins can be written to extend the functionality of the editor beyond its original scope.
Trilium makes use of such features:
* The math feature is added by a version of [isaul32/ckeditor5-math: Math feature for CKEditor 5.](https://github.com/isaul32/ckeditor5-math) modified by us to fit our needs.
* We also make use of modified upstream plugins such as [ckeditor/ckeditor5-mermaid](https://github.com/ckeditor/ckeditor5-mermaid) to allow inline Mermaid code.
* [mlewand/ckeditor5-keyboard-marker: Plugin adds support for the keyboard input element (<kbd>) to CKEditor 5.](https://github.com/mlewand/ckeditor5-keyboard-marker)
* A modified version of [ThomasAitken/ckeditor5-footnotes: Footnotes plugin for CKEditor5](https://github.com/ThomasAitken/ckeditor5-footnotes) to allow footnotes.
Apart from that, Trilium also has its own set of specific plugins such as:
* Cut to note
* Include note
* Mentions, for linking pages.
* Markdown import.
* Reference links.
* etc.
@@ -0,0 +1,4 @@
# Excalidraw
[Excalidraw](https://excalidraw.com/) is the technology behind the [Canvas](../../Note%20Types/Canvas.md) notes. The source code of the library is available on [GitHub](https://github.com/excalidraw/excalidraw).
We are using an unmodified version of it, so it shares the same [issues](https://github.com/excalidraw/excalidraw/issues) as the original.
@@ -0,0 +1,10 @@
# Leaflet
Leaflet is the library behind [Geo map](../../Note%20Types/Geo%20map.md) notes.
## Plugins
Leaflet is also highly customizable via external plugins.
Currently we use:
* [mpetazzoni/leaflet-gpx: A GPX track plugin for Leaflet.js](https://github.com/mpetazzoni/leaflet-gpx)
@@ -0,0 +1,12 @@
# MindElixir
MindElixir is the library we are using for the [Mind Map](../../Note%20Types/Mind%20Map.md) note types.
The main library is available on [GitHub as mind-elixir-core](https://github.com/SSShooter/mind-elixir-core/issues).
The library is embedded as-is without additional modifications.
Issues with its functionality should generally be reported [upstream](https://github.com/ssshooter/mind-elixir-core).
## Plugins
MindElixir supports plugins, and one such plugin we are making use of is [SSShooter/node-menu: A node menu plugin of mind-elixir](https://github.com/SSShooter/node-menu), which allows editing the fonts, colors, links of nodes.
Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 305 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 533 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 367 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 356 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="147px" height="32px" viewBox="0 0 147 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<!-- Generator: Sketch 3.0.4 (8053) - http://www.bohemiancoding.com/sketch -->
<title>button</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
<g id="button" sketch:type="MSLayerGroup">
<rect id="Background" fill="#7056BF" sketch:type="MSShapeGroup" x="0" y="0" width="147" height="32" rx="4"></rect>
<g id="Icon" transform="translate(10.000000, 8.000000)" fill="#FFFFFF" sketch:type="MSShapeGroup">
<path d="M14.819,3.216 L9.103,0.25 C8.464,-0.082 7.536,-0.081 6.898,0.25 L1.181,3.216 C0.496,3.571 0,4.365 0,5.102 L0,11.035 C0,11.774 0.497,12.566 1.181,12.921 L4.039,14.404 C4.529,14.656 5.134,14.467 5.388,13.978 C5.642,13.487 5.451,12.884 4.961,12.629 L2.106,11.148 C2.068,11.124 2.008,11.039 2,11.035 L1.996,5.143 C2.008,5.098 2.068,5.013 2.103,4.991 L7.816,2.026 C7.897,1.991 8.106,1.992 8.181,2.025 L13.894,4.989 C13.932,5.013 13.992,5.098 14,5.102 L14.003,10.995 C13.992,11.039 13.932,11.124 13.898,11.146 L11.039,12.629 C10.549,12.884 10.358,13.487 10.612,13.978 C10.79,14.32 11.14,14.517 11.501,14.517 C11.656,14.517 11.814,14.481 11.961,14.404 L14.818,12.921 C15.503,12.566 16,11.774 16,11.035 L16,5.102 C16,4.365 15.504,3.571 14.819,3.216" id="App"></path>
<path d="M11.707,9.707 C12.098,9.316 12.098,8.684 11.707,8.293 L8.708,5.294 C8.616,5.201 8.505,5.128 8.382,5.077 C8.138,4.976 7.862,4.976 7.618,5.077 C7.495,5.128 7.385,5.201 7.292,5.294 L4.293,8.293 C3.902,8.684 3.902,9.316 4.293,9.707 C4.488,9.902 4.744,10 5,10 C5.256,10 5.512,9.902 5.707,9.707 L7,8.414 L7,15 C7,15.553 7.447,16 8,16 C8.553,16 9,15.553 9,15 L9,8.414 L10.293,9.707 C10.488,9.902 10.744,10 11,10 C11.256,10 11.512,9.902 11.707,9.707" id="Arrow"></path>
</g>
<path d="M81.393,21.091 C81.744,21.091 82.173,21.052 82.368,21.013 L82.368,20.09 C82.186,20.142 81.913,20.181 81.666,20.181 C80.834,20.181 80.6,19.817 80.6,19.089 L80.6,15.059 L82.381,15.059 L82.381,14.136 L80.6,14.136 L80.6,11.692 L79.482,11.692 L79.482,14.136 L78.286,14.136 L78.286,15.059 L79.482,15.059 L79.482,19.336 C79.482,20.532 79.95,21.091 81.393,21.091 Z M86.697,21.143 C88.374,21.143 89.882,19.921 89.882,17.568 C89.882,15.202 88.374,13.993 86.697,13.993 C85.007,13.993 83.499,15.202 83.499,17.568 C83.499,19.921 85.02,21.143 86.697,21.143 Z M86.697,20.194 C85.306,20.194 84.63,19.024 84.63,17.568 C84.63,16.021 85.384,14.955 86.697,14.955 C88.062,14.955 88.751,16.138 88.751,17.568 C88.751,19.141 87.997,20.194 86.697,20.194 Z M94.705,21 L95.849,21 L95.849,16.463 L100.802,16.463 L100.802,21 L101.946,21 L101.946,11.38 L100.802,11.38 L100.802,15.41 L95.849,15.41 L95.849,11.38 L94.705,11.38 L94.705,21 Z M106.834,21.143 C108.121,21.143 108.992,20.597 109.629,19.687 L108.979,19.115 C108.459,19.83 107.9,20.233 106.912,20.233 C105.781,20.233 104.884,19.401 104.845,17.854 L109.694,17.854 L109.694,17.62 C109.694,15.137 108.459,13.993 106.834,13.993 C105.391,13.993 103.727,15.072 103.727,17.568 C103.727,19.96 105.209,21.143 106.834,21.143 Z M104.871,16.983 C105.027,15.566 105.898,14.929 106.821,14.929 C107.952,14.929 108.537,15.761 108.628,16.983 L104.871,16.983 Z M111.293,21 L112.411,21 L112.411,16.567 C112.918,15.592 113.737,15.02 114.829,15.02 C114.868,15.02 115.115,15.02 115.154,15.033 L115.232,13.993 L115.089,13.993 C113.75,13.993 112.944,14.617 112.437,15.41 L112.411,15.41 L112.411,14.136 L111.293,14.136 L111.293,21 Z M119.301,21.143 C120.978,21.143 122.486,19.921 122.486,17.568 C122.486,15.202 120.978,13.993 119.301,13.993 C117.611,13.993 116.103,15.202 116.103,17.568 C116.103,19.921 117.624,21.143 119.301,21.143 Z M119.301,20.194 C117.91,20.194 117.234,19.024 117.234,17.568 C117.234,16.021 117.988,14.955 119.301,14.955 C120.666,14.955 121.355,16.138 121.355,17.568 C121.355,19.141 120.601,20.194 119.301,20.194 Z M124.072,21 L125.19,21 L125.19,18.894 L126.555,17.425 L128.583,21 L129.779,21 L127.283,16.593 L129.532,14.136 L128.258,14.136 L125.19,17.568 L125.19,11.38 L124.072,11.38 L124.072,21 Z M133.055,21.13 C134.173,21.13 135.031,20.558 135.629,19.973 L135.629,21 L136.76,21 L136.76,14.136 L135.629,14.136 L135.629,19.089 C134.914,19.765 134.238,20.194 133.406,20.194 C132.535,20.194 132.145,19.765 132.145,18.855 L132.145,14.136 L131.027,14.136 L131.027,19.089 C131.027,20.389 131.742,21.13 133.055,21.13 L133.055,21.13 Z" id="to-Heroku" fill="#B7A7D5" sketch:type="MSShapeGroup"></path>
<path d="M34.183,21 L36.718,21 C39.773,21 41.567,19.427 41.567,16.164 C41.567,12.94 39.812,11.38 36.718,11.38 L34.183,11.38 L34.183,21 Z M35.327,19.973 L35.327,12.433 L36.835,12.433 C39.175,12.433 40.423,13.577 40.423,16.164 C40.423,18.842 39.188,19.973 36.861,19.973 L35.327,19.973 Z M46,21.143 C47.287,21.143 48.158,20.597 48.795,19.687 L48.145,19.115 C47.625,19.83 47.066,20.233 46.078,20.233 C44.947,20.233 44.05,19.401 44.011,17.854 L48.86,17.854 L48.86,17.62 C48.86,15.137 47.625,13.993 46,13.993 C44.557,13.993 42.893,15.072 42.893,17.568 C42.893,19.96 44.375,21.143 46,21.143 Z M44.037,16.983 C44.193,15.566 45.064,14.929 45.987,14.929 C47.118,14.929 47.703,15.761 47.794,16.983 L44.037,16.983 Z M50.459,23.6 L51.577,23.6 L51.577,20.116 C52.162,20.727 52.877,21.104 53.722,21.104 C55.399,21.104 56.634,19.947 56.634,17.555 C56.634,15.163 55.412,13.993 53.839,13.993 C52.812,13.993 52.097,14.513 51.577,15.085 L51.577,14.136 L50.459,14.136 L50.459,23.6 Z M53.566,20.194 C52.838,20.194 52.175,19.83 51.577,19.154 L51.577,16.008 C52.149,15.384 52.786,14.955 53.579,14.955 C54.684,14.955 55.516,15.813 55.516,17.568 C55.516,19.388 54.762,20.194 53.566,20.194 Z M58.324,21 L59.442,21 L59.442,11.38 L58.324,11.38 L58.324,21 Z M64.304,21.143 C65.981,21.143 67.489,19.921 67.489,17.568 C67.489,15.202 65.981,13.993 64.304,13.993 C62.614,13.993 61.106,15.202 61.106,17.568 C61.106,19.921 62.627,21.143 64.304,21.143 Z M64.304,20.194 C62.913,20.194 62.237,19.024 62.237,17.568 C62.237,16.021 62.991,14.955 64.304,14.955 C65.669,14.955 66.358,16.138 66.358,17.568 C66.358,19.141 65.604,20.194 64.304,20.194 Z M69.465,23.639 C70.804,23.639 71.337,22.989 71.805,21.78 L74.743,14.136 L73.612,14.136 L71.597,19.687 L71.571,19.687 L69.556,14.136 L68.373,14.136 L71.025,21.039 L70.765,21.715 C70.492,22.391 70.154,22.69 69.452,22.69 C68.971,22.69 68.633,22.625 68.438,22.573 L68.178,23.47 C68.477,23.561 68.854,23.639 69.465,23.639 L69.465,23.639 Z" id="Deploy" fill="#FFFFFF" sketch:type="MSShapeGroup"></path>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 714 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

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