Compare commits

...

1795 Commits

Author SHA1 Message Date
Elian Doran
fd25c735c1 chore(release): bump version 2025-07-21 17:52:08 +03:00
Elian Doran
7de33907c5 docs(release): add change log for v0.97.1 2025-07-21 17:51:13 +03:00
Elian Doran
a3014434cf chore(release): update version number 2025-07-20 23:39:58 +03:00
Elian Doran
3ebab2c126 docs(release): add changelog 2025-07-20 21:30:17 +03:00
Elian Doran
954619bd36 fix(views/table): note ID column being editable 2025-07-20 21:21:01 +03:00
Elian Doran
6995fbfd06 chore(deps): update dependency esbuild to v0.25.8 (#6404) 2025-07-20 16:07:54 +03:00
Elian Doran
83b72eafa6 Merge branch 'main' into renovate/esbuild-0.x-lockfile 2025-07-20 11:31:50 +03:00
Elian Doran
757a6777be chore(deps): update dependency svelte to v5.36.10 (#6405) 2025-07-20 11:30:49 +03:00
renovate[bot]
d003e91b89 chore(deps): update dependency svelte to v5.36.10 2025-07-20 01:09:12 +00:00
renovate[bot]
4a35df745a chore(deps): update dependency esbuild to v0.25.8 2025-07-20 01:08:07 +00:00
Adorian Doran
713a0f5b09 Merge branch 'main' of https://github.com/TriliumNext/Trilium 2025-07-19 16:28:56 +03:00
Adorian Doran
2cf9c98b43 style/table view: tweak table footer 2025-07-19 16:28:52 +03:00
Elian Doran
d7af196a0c feat(views/table): hide multiplicity when adding a new column 2025-07-19 16:03:58 +03:00
Adorian Doran
c363be57b7 client/table view: tweak icons 2025-07-19 16:02:11 +03:00
Adorian Doran
10645790de Merge branch 'main' of https://github.com/TriliumNext/Trilium 2025-07-19 15:55:06 +03:00
Adorian Doran
8b18cf382c style(next)/dropdown menus: fix rotated icons 2025-07-19 15:54:56 +03:00
Elian Doran
7a131e0bcc feat(views/table): support color class for title 2025-07-19 15:44:43 +03:00
Elian Doran
3d264379cc fix(views/table): color no longer shown for reference links 2025-07-19 15:44:42 +03:00
Elian Doran
f405682ec1 Merge branch 'main' of https://github.com/TriliumNext/trilium 2025-07-19 14:56:21 +03:00
Elian Doran
3debf3ce1c fix(views/calendar): not refreshing on note title change 2025-07-19 14:53:27 +03:00
Adorian Doran
5a76883969 Merge branch 'main' of https://github.com/TriliumNext/Trilium 2025-07-19 14:41:51 +03:00
Adorian Doran
6f51c5e0cc style/attribute detail dialog: fix stretched close button 2025-07-19 14:41:48 +03:00
Elian Doran
2c730d1f0b Merge branch 'main' of https://github.com/TriliumNext/trilium 2025-07-19 14:24:12 +03:00
Elian Doran
d487da0b2f feat(views/table): update new column in context menu to support relations also 2025-07-19 14:23:42 +03:00
Elian Doran
cb8a5cbb62 chore(views/table): add icons to add new column/row context menu 2025-07-19 14:06:00 +03:00
Elian Doran
ceb08593d8 chore(views/table): use translations for new label/relation 2025-07-19 14:04:25 +03:00
Elian Doran
9dd0eb7b9b fix(views/table): not reacting to external attribute changes 2025-07-19 14:02:19 +03:00
Elian Doran
ebff644d24 fix(views/table): changing column inheritability not working 2025-07-19 13:31:46 +03:00
Elian Doran
beb1c15fa5 fix(views/table): inheritable checkbox not respected 2025-07-19 13:25:54 +03:00
Elian Doran
40a5eee211 docs(views/table): describe exactly how to remove relation 2025-07-19 13:00:08 +03:00
Elian Doran
8f393d0bae refactor(bulk_action): fix type error 2025-07-19 12:57:58 +03:00
Elian Doran
94dad49e2f refactor(bulk_action): full type safety for client 2025-07-19 12:56:37 +03:00
Elian Doran
409638151c refactor(bulk_action): add basic type safety for client 2025-07-19 12:54:16 +03:00
Elian Doran
0d3de92890 refactor(views/table): move bulk action implementation in service 2025-07-19 12:46:38 +03:00
Elian Doran
5d619131ec fix(views/table): bulk actions sometimes not working 2025-07-19 12:44:55 +03:00
Elian Doran
e2c8443778 refactor(bulk_action): remake types & change method signature 2025-07-19 12:32:47 +03:00
Elian Doran
daa4743967 refactor(server): add some type safety to bulk actions 2025-07-19 12:15:33 +03:00
Elian Doran
56553078ef docs(views/table): update documentation 2025-07-19 09:47:10 +03:00
Elian Doran
5584a06cb3 chore(deps): update nx monorepo to v21.3.0 (#6398) 2025-07-19 09:28:55 +03:00
renovate[bot]
cfeb69ace6 chore(deps): update nx monorepo to v21.3.0 2025-07-19 06:03:54 +00:00
Elian Doran
b0c8f110de chore(deps): update dependency @types/node to v22.16.5 (#6392) 2025-07-19 09:00:33 +03:00
Elian Doran
aba1266c45 chore(deps): update svelte monorepo (#6395) 2025-07-19 08:59:56 +03:00
Elian Doran
c331e0103d chore(deps): update dependency eslint-config-prettier to v10.1.8 (#6394) 2025-07-19 08:56:51 +03:00
Elian Doran
13978574e0 chore(deps): update dependency stylelint to v16.22.0 (#6397) 2025-07-19 08:56:25 +03:00
renovate[bot]
be85963558 chore(deps): update dependency stylelint to v16.22.0 2025-07-19 05:55:03 +00:00
Elian Doran
8c19261ced fix(deps): update dependency marked to v16.1.1 (#6396) 2025-07-19 08:53:07 +03:00
Elian Doran
7ca17fa609 chore(deps): update dependency esbuild to v0.25.7 (#6393) 2025-07-19 08:52:36 +03:00
renovate[bot]
3d107572df fix(deps): update dependency marked to v16.1.1 2025-07-19 01:52:34 +00:00
renovate[bot]
f7488655a7 chore(deps): update svelte monorepo 2025-07-19 01:51:41 +00:00
renovate[bot]
876e0a29d4 chore(deps): update dependency eslint-config-prettier to v10.1.8 2025-07-19 01:50:50 +00:00
renovate[bot]
af74375695 chore(deps): update dependency esbuild to v0.25.7 2025-07-19 01:50:00 +00:00
renovate[bot]
896965fec5 chore(deps): update dependency @types/node to v22.16.5 2025-07-19 01:49:07 +00:00
Elian Doran
ba5ef93c1a fix(views/table): wrong type when renaming relations 2025-07-18 21:07:29 +03:00
Elian Doran
ef1153d336 fix(views/table): insert direction no longer working 2025-07-18 20:37:16 +03:00
Elian Doran
0d347f8823 feat(views/table): allow creating relations 2025-07-18 16:52:13 +03:00
Elian Doran
897cdc26ae chore(deps): update dependency express-session to v1.18.2 (#6372) 2025-07-18 11:53:17 +03:00
Elian Doran
aba621c099 fix(deps): update dependency mermaid to v11.9.0 (#6384) 2025-07-18 11:53:03 +03:00
renovate[bot]
839813ebde fix(deps): update dependency mermaid to v11.9.0 2025-07-18 08:35:57 +00:00
renovate[bot]
545e2ddbfc chore(deps): update dependency express-session to v1.18.2 2025-07-18 08:35:17 +00:00
Elian Doran
1d63a5903a fix(deps): update dependency marked to v16.1.0 (#6383) 2025-07-18 11:31:35 +03:00
Elian Doran
2b34c00a0c chore(deps): update dependency openai to v5.10.1 (#6378) 2025-07-18 11:31:17 +03:00
Elian Doran
123068062a chore(deps): update dependency @stylistic/eslint-plugin to v5.2.0 (#6376) 2025-07-18 11:31:01 +03:00
Elian Doran
9a668e8709 chore(deps): update node.js to v22.17.1 (#6374) 2025-07-18 11:30:51 +03:00
Elian Doran
f6f8937d64 chore(deps): update dependency express-rate-limit to v8.0.1 (#6371) 2025-07-18 11:30:24 +03:00
Elian Doran
c9f53a2880 chore(deps): update dependency compression to v1.8.1 (#6369) 2025-07-18 11:30:17 +03:00
Elian Doran
2887e712c3 chore(deps): update dependency multer to v2.0.2 [security] (#6368) 2025-07-18 11:29:21 +03:00
renovate[bot]
5d3a0ed1b4 fix(deps): update dependency marked to v16.1.0 2025-07-18 08:06:03 +00:00
renovate[bot]
334b6319de chore(deps): update dependency openai to v5.10.1 2025-07-18 08:05:15 +00:00
renovate[bot]
4c118c0fd4 chore(deps): update dependency @stylistic/eslint-plugin to v5.2.0 2025-07-18 08:04:29 +00:00
renovate[bot]
db00d60684 chore(deps): update node.js to v22.17.1 2025-07-18 08:04:25 +00:00
renovate[bot]
25b74af363 chore(deps): update dependency express-rate-limit to v8.0.1 2025-07-18 08:03:31 +00:00
renovate[bot]
eb57cf97ad chore(deps): update dependency compression to v1.8.1 2025-07-18 08:02:36 +00:00
renovate[bot]
c92e24363f chore(deps): update dependency multer to v2.0.2 [security] 2025-07-18 08:01:44 +00:00
Elian Doran
8d5d00ac0f chore(deps): update nx monorepo to v21.2.4 (#6375) 2025-07-18 10:59:33 +03:00
renovate[bot]
8b457384ba chore(deps): update nx monorepo to v21.2.4 2025-07-18 07:27:59 +00:00
Elian Doran
fab2d53ece chore(deps): update dependency vite to v7.0.5 (#6373) 2025-07-18 10:25:50 +03:00
renovate[bot]
774f27d8d2 chore(deps): update dependency vite to v7.0.5 2025-07-18 07:10:21 +00:00
Elian Doran
d7f02ef1b3 chore(deps): update dependency webdriverio to v9.18.1 (#6380) 2025-07-18 10:07:52 +03:00
renovate[bot]
97eaa6294c chore(deps): update dependency webdriverio to v9.18.1 2025-07-18 06:44:57 +00:00
Elian Doran
dc02bb0850 chore(deps): update svelte monorepo (#6382) 2025-07-18 09:41:49 +03:00
renovate[bot]
2c8c041e1c chore(deps): update svelte monorepo 2025-07-18 06:04:00 +00:00
Elian Doran
874b1c6654 chore(deps): update dependency electron to v37.2.3 (#6370) 2025-07-18 09:02:15 +03:00
Elian Doran
fb982c7097 fix(views/table): regression in restoring column width 2025-07-18 09:01:24 +03:00
Elian Doran
b7f5ce600e chore(renovate): add more packages to svelte monorepo 2025-07-18 08:58:35 +03:00
renovate[bot]
91604c9e26 chore(deps): update dependency electron to v37.2.3 2025-07-18 01:55:54 +00:00
Elian Doran
c874333a37 chore(client): fix type errors 2025-07-17 22:38:00 +03:00
Elian Doran
1298b968f2 fix(views/table): relation display sometimes not showing up 2025-07-17 22:31:54 +03:00
Elian Doran
6fe5a854a7 feat(views/table): allow deleting relations 2025-07-17 21:44:09 +03:00
Elian Doran
aba3b5cb19 feat(views/table): hide all buttons in relation editor 2025-07-17 21:07:44 +03:00
Elian Doran
282aed22b5 feat(views/geomap): support recursive notes 2025-07-17 20:51:15 +03:00
Elian Doran
669a3d9dcf feat(views/table): automatic index col width 2025-07-17 20:44:31 +03:00
Elian Doran
9d7455d28a fix(views/table): expander style affecting row number 2025-07-17 20:44:00 +03:00
Elian Doran
4f0c8b081c feat(views): improve style in collections properties 2025-07-17 19:56:14 +03:00
Elian Doran
a5db5298a0 feat(views/table): integrate depth limit into collection properties 2025-07-17 19:44:34 +03:00
Elian Doran
876c6e9252 feat(views/table): allow limiting depth 2025-07-17 19:34:29 +03:00
Elian Doran
aef824d262 feat(views/table): add a context menu for the header outside columns 2025-07-17 15:36:33 +03:00
Elian Doran
a25ce42490 feat(views/table): allow hiding number row & title 2025-07-17 15:00:19 +03:00
Elian Doran
8b0fdaccf4 feat(views/table): improve alignment for first level + increase indentation 2025-07-17 14:45:38 +03:00
Elian Doran
bd840a2421 feat(views/table): align items expanders 2025-07-17 14:40:44 +03:00
Elian Doran
27d515f289 refactor(views/table): use builtin way of disabling branch elements 2025-07-17 14:34:40 +03:00
Elian Doran
df3b9faf8d fix(client): tree operations no longer working due to loss of focus 2025-07-17 14:05:19 +03:00
Elian Doran
0f129734ae fix(link): popup triggering with bare right click 2025-07-17 11:19:29 +03:00
Elian Doran
275aacfba9 chore(vscode): add search excludes 2025-07-16 21:40:14 +03:00
Elian Doran
e7f47a0663 feat(views/table): delete column definition as well 2025-07-16 21:40:01 +03:00
Elian Doran
66486541fe feat(client): batch delete column values 2025-07-16 21:30:16 +03:00
Elian Doran
34f1a84769 fix(views/table): wrong position when renaming column 2025-07-16 09:23:06 +03:00
Elian Doran
2244f0368f fix(views/table): index column ends up in the wrong position 2025-07-16 09:16:47 +03:00
Elian Doran
9d85005255 chore(deps): update dependency express-rate-limit to v8 (#6362) 2025-07-16 08:32:51 +03:00
Elian Doran
ad8629dca6 chore(deps): update typescript-eslint monorepo to v8.37.0 (#6361) 2025-07-16 08:31:56 +03:00
Elian Doran
cccfe0e05a chore(deps): update svelte monorepo (#6360) 2025-07-16 08:31:36 +03:00
Elian Doran
a8874257e8 fix(deps): update dependency @codemirror/view to v6.38.1 (#6359) 2025-07-16 08:29:40 +03:00
Elian Doran
f689c55f56 chore(deps): update node.js to v22.17.1 (#6358) 2025-07-16 08:28:48 +03:00
Elian Doran
853c7be8b8 chore(deps): update dependency openai to v5.9.2 (#6357) 2025-07-16 08:28:39 +03:00
Elian Doran
823df1e12d chore(deps): update dependency electron to v37.2.2 (#6356) 2025-07-16 08:14:56 +03:00
renovate[bot]
7570f818e9 chore(deps): update dependency express-rate-limit to v8 2025-07-16 02:39:01 +00:00
renovate[bot]
03aa5aea2c chore(deps): update typescript-eslint monorepo to v8.37.0 2025-07-16 02:38:09 +00:00
renovate[bot]
a4e86ac353 chore(deps): update svelte monorepo 2025-07-16 02:36:37 +00:00
renovate[bot]
cf6efc050a fix(deps): update dependency @codemirror/view to v6.38.1 2025-07-16 02:35:51 +00:00
renovate[bot]
3e0802176b chore(deps): update node.js to v22.17.1 2025-07-16 02:35:04 +00:00
renovate[bot]
697954d4d9 chore(deps): update dependency openai to v5.9.2 2025-07-16 02:34:06 +00:00
renovate[bot]
741f6c1114 chore(deps): update dependency electron to v37.2.2 2025-07-16 02:33:19 +00:00
Adorian Doran
b2237ffa51 style/collections/tables: tweak nested rows 2025-07-16 05:23:13 +03:00
Adorian Doran
7b6d11bffa style/collections/tables: fix frozen cells overlapping with the outline of the left-side cells 2025-07-16 05:04:06 +03:00
Adorian Doran
97565e8f36 style(next)/collection/tables: improve the color scheme 2025-07-16 04:22:43 +03:00
perf3ct
c0dfee8439 fix(metrics): don't assign a timestamp to Prometheus metrics, let the scraper assign the timestamp to the time series 2025-07-15 20:39:36 +00:00
Elian Doran
fc98240614 chore(client): fix type error 2025-07-15 22:36:30 +03:00
Elian Doran
169d1203c2 fix(views/table): some context menu items active when they shouldn't 2025-07-15 22:30:52 +03:00
Elian Doran
f3350bc8f5 refactor(views/table): better cleanup 2025-07-15 22:06:32 +03:00
Elian Doran
504a19275c feat(views/table): basic renaming of fields 2025-07-15 21:48:16 +03:00
Elian Doran
14cdc52670 feat(views/table): support renaming columns 2025-07-15 20:42:47 +03:00
Elian Doran
cf8063f311 feat(views/table): format note ID as monospace 2025-07-15 19:32:13 +03:00
Elian Doran
aa8902f5b9 fix(client): popup not displayed for existing attributes (closes #5718) 2025-07-15 18:55:29 +03:00
Elian Doran
7cd0e664ac feat(views/table): basic editing of columns (rename not supported) 2025-07-15 18:51:51 +03:00
Elian Doran
a04804d3fa fix(views/table): wrong specs when restoring columns 2025-07-15 18:39:20 +03:00
Elian Doran
86f90e6685 fix(api): also rate limit etapi docs endpoint (#6352) 2025-07-15 17:06:52 +03:00
Elian Doran
8131a4b3d2 fix(views/table): events/commands not well sent 2025-07-15 15:49:32 +03:00
Elian Doran
b91a3e13b0 refactor(views/table): move row editing to own component 2025-07-15 15:32:30 +03:00
Elian Doran
5a7a0d32d1 refactor(views/table): move col editing to own component 2025-07-15 14:53:18 +03:00
perf3ct
3f5df18d6c fix(api): also rate limit etapi docs endpoint 2025-07-14 21:12:00 +00:00
Elian Doran
df2cede075 fix(views/calendar): nested entries in calendar view 2025-07-14 23:12:55 +03:00
Elian Doran
4321c161ac fix(views/calendar): duplicate entries in calendar view 2025-07-14 23:07:26 +03:00
Elian Doran
b1f0c64ef2 chore(views/geo): typing issue 2025-07-14 22:52:37 +03:00
Elian Doran
c9b37dcc77 refactor(views/table): rename event 2025-07-14 21:06:44 +03:00
Elian Doran
ab093ed9a0 chore(views/table): add translations 2025-07-14 20:59:29 +03:00
Elian Doran
cf31367acd feat(views/table): insert column to the right 2025-07-14 20:42:37 +03:00
Elian Doran
e3d306cac3 fix(views/table): wrong insert position for insert left 2025-07-14 20:34:05 +03:00
Elian Doran
960d321019 fix(views/table): position not restored after new columns (closes #6285) 2025-07-14 20:32:24 +03:00
Elian Doran
2d4ac93221 feat(views/table): basic implementation for inserting columns at position 2025-07-14 19:14:10 +03:00
Elian Doran
d4a4f15416 refactor(views/table): move attribute detail widget to view 2025-07-14 17:29:20 +03:00
Elian Doran
504a842d37 feat(views/table): force a refresh if #sorted is changed 2025-07-14 17:02:07 +03:00
Elian Doran
ded5b1f5d2 feat(views/table): expand child notes by default 2025-07-14 17:00:01 +03:00
Elian Doran
fcbbc21a80 feat(views/table): force a refresh if data tree changes 2025-07-14 16:58:14 +03:00
Elian Doran
38fce25b86 fix(views/table): show/hide columns not always updated properly 2025-07-14 16:51:20 +03:00
Elian Doran
4cc2fa5300 fix(snippets): warning about missing note IDs when deleting 2025-07-14 16:49:42 +03:00
Elian Doran
4a82c3f65a fix(views/table): insert above/below not working in nested trees 2025-07-14 16:49:29 +03:00
Elian Doran
b255d70e18 fix(views/table): context menu remains active while clicking on an expand/collapse button 2025-07-14 16:24:54 +03:00
Elian Doran
caa842cd55 fix(views/table): unable to update state for newly created rows 2025-07-14 16:16:55 +03:00
Elian Doran
cd338085fb refactor(views/table): clean up 2025-07-14 15:52:21 +03:00
Elian Doran
e703ce92a8 refactor(views/table): simplify context menu handling 2025-07-14 15:46:22 +03:00
Elian Doran
84479a2c2a feat(views/table): focus if creating child note 2025-07-14 15:38:57 +03:00
Elian Doran
c13969217c feat(views/table): insert child note 2025-07-14 13:37:18 +03:00
Elian Doran
402540f483 feat(views/table): support recursive children update 2025-07-14 13:15:41 +03:00
Elian Doran
8c56315313 refactor(views): move full height detection to rendererer 2025-07-14 12:56:17 +03:00
Elian Doran
b29c3eff6e refactor(views): prepare for supporting subtrees 2025-07-14 12:53:11 +03:00
Elian Doran
ec7dacfc9b feat(views/table): improve expand/collapse button 2025-07-14 12:04:13 +03:00
Elian Doran
5f9a6a9f76 feat(views/table): integrate expander into note title section 2025-07-14 11:39:12 +03:00
Elian Doran
28f4aea3d5 refactor(views/table): use slightly more performant formatter for row number 2025-07-14 11:30:46 +03:00
Elian Doran
8d29c5fe1b feat(views/table): hide draggable rows if not supported 2025-07-14 11:29:14 +03:00
Elian Doran
ccd935b562 refactor(views/table): don't configure reordering rows if not available 2025-07-14 11:22:32 +03:00
Elian Doran
d77a49857b feat(views/table): basic nested tree support 2025-07-14 11:11:08 +03:00
Elian Doran
e30478e5d4 chore(views/table): disable menu module since it's no longer necessary 2025-07-14 10:45:01 +03:00
Elian Doran
71863752cd feat(views/table): display both promoted and non-promoted attributes 2025-07-14 10:38:45 +03:00
Elian Doran
e4a2a8e56d fix(text): selection and cursor not maintained properly when switching tabs 2025-07-14 09:58:58 +03:00
Elian Doran
0f1c505823 fix(tab): editor not focused after switching tabs 2025-07-14 09:58:58 +03:00
Elian Doran
1ecce11113 chore(deps): update dependency vite-plugin-static-copy to v3.1.1 (#6345) 2025-07-14 08:10:18 +03:00
renovate[bot]
2287d67fb5 chore(deps): update dependency vite-plugin-static-copy to v3.1.1 2025-07-13 19:16:04 +00:00
Elian Doran
5b4f17ef3d Update README.md (#6344) 2025-07-13 22:14:33 +03:00
Elian Doran
3720ab6df6 fix(views/table): not reacting to title changes 2025-07-13 21:38:23 +03:00
diyoyo
3c893d69e5 Update README.md
updating from `Notes` to `Trilium` in the `Contribute`section.
2025-07-13 20:29:02 +02:00
Elian Doran
b93a4a3e42 fix(views/table): booleans not working 2025-07-13 21:06:41 +03:00
Elian Doran
23cef0ab94 chore(views/table): translate row menu 2025-07-13 16:56:03 +03:00
Elian Doran
c8ffb8d694 chore(views/table): translate column menu 2025-07-13 16:52:29 +03:00
Elian Doran
08e08d8920 feat(views/table): improve column context menu 2025-07-13 16:45:04 +03:00
Elian Doran
7acd300163 feat(views/table): add option to clear sorting 2025-07-13 16:41:43 +03:00
Elian Doran
d8d95db4ec feat(views/table): add sort by 2025-07-13 16:37:45 +03:00
Elian Doran
af97d3ef1d feat(views/table): add back show/hide columns 2025-07-13 16:22:57 +03:00
Elian Doran
c65ec14943 feat(views/table): hide column in contetx menu 2025-07-13 14:37:13 +03:00
Elian Doran
adfdc7edb4 feat(views/table): drag handle to avoid editing issues 2025-07-13 14:24:12 +03:00
Elian Doran
8cced607eb feat(views/table): insert row before 2025-07-13 14:10:37 +03:00
Elian Doran
5dd5af90c2 feat(views/table): insert row below 2025-07-13 13:06:53 +03:00
Elian Doran
7a48333b4f chore(deps): update dependency @sveltejs/vite-plugin-svelte to v6 (#6341) 2025-07-13 08:22:24 +03:00
Elian Doran
7044533398 fix(deps): update dependency mind-elixir to v5.0.2 (#6340) 2025-07-13 08:21:06 +03:00
renovate[bot]
560aad8df6 chore(deps): update dependency @sveltejs/vite-plugin-svelte to v6 2025-07-13 01:34:38 +00:00
renovate[bot]
36c2099b2e fix(deps): update dependency mind-elixir to v5.0.2 2025-07-13 01:33:47 +00:00
Elian Doran
6c157675d7 feat(views/table): open in new tab/quick edit 2025-07-13 00:44:44 +03:00
Elian Doran
458d66cb21 feat(views/table): delete row from context menu (closes #6288) 2025-07-13 00:36:34 +03:00
Elian Doran
201e8911c5 chore: prefer short name 2025-07-12 23:48:42 +03:00
Elian Doran
1b1ed2408f feat(funding): add Buy Me a Coffee 2025-07-12 23:28:07 +03:00
Elian Doran
62487d21d8 feat(funding): add LiberaPay 2025-07-12 23:20:55 +03:00
Elian Doran
bc752bdb0b fix(popup_editor): note icon overlapping with classic editor 2025-07-12 22:38:20 +03:00
Elian Doran
9e00d421fb fix(ckeditor): color and font mismatch after update 2025-07-12 22:34:27 +03:00
Elian Doran
e7f02fe22b fix(deps): update ckeditor monorepo (major) (#6283) 2025-07-12 22:03:15 +03:00
Elian Doran
6d694f8e53 chore(client): update types 2025-07-12 20:20:41 +03:00
Elian Doran
977befd0a7 chore(ckeditor5): update ckeditor theme variable names 2025-07-12 20:00:01 +03:00
Elian Doran
1566ae4fbd chore(ckeditor5): fix references: DocumentSelection -> ModelDocumentSelection 2025-07-12 19:45:00 +03:00
Elian Doran
4e97490cc6 chore(ckeditor5): fix references: Selectable -> ModelSelectable 2025-07-12 19:44:38 +03:00
Elian Doran
446d5a0fcc chore(ckeditor5): fix references: Item -> ModelItem 2025-07-12 19:44:12 +03:00
Elian Doran
1fd6465012 chore(ckeditor5): fix references: NodeAttributes -> ModelNodeAttributes 2025-07-12 19:43:48 +03:00
Elian Doran
6cea8e3b87 chore(ckeditor5): fix references: Range -> ModelRange 2025-07-12 19:43:18 +03:00
Elian Doran
28a63e0326 chore(ckeditor5): fix references: DocumentFragment -> ModelDocumentFragment 2025-07-12 19:42:54 +03:00
Elian Doran
b73da46111 chore(ckeditor5): fix references: Writer -> ModelWriter 2025-07-12 19:42:26 +03:00
Elian Doran
abafa8c2d2 chore(ckeditor5): fix references: Position -> ModelPosition 2025-07-12 19:41:30 +03:00
Elian Doran
4ae3272cdf chore(ckeditor5): fix references: Element -> ModelElement 2025-07-12 19:40:24 +03:00
Elian Doran
6aa3b8dbd7 chore(ckeditor5-admonition): fix references 2025-07-12 19:38:36 +03:00
Elian Doran
395e9b2228 chore(ckeditor5-admonition): fix references: DocumentFragment -> ViewDocumentFragment 2025-07-12 19:29:51 +03:00
Elian Doran
be33f68c52 chore(ckeditor5-math): fix references: DowncastWriter -> ViewDowncastWriter 2025-07-12 19:28:28 +03:00
Elian Doran
29d96381fa chore(ckeditor5-math): fix references: LiveRange -> ModelLiveRange 2025-07-12 19:27:46 +03:00
Elian Doran
da8eecf774 chore(ckeditor5-math): fix references: LivePosition -> ModelLivePosition 2025-07-12 19:27:22 +03:00
Elian Doran
de91326c12 chore(ckeditor5-math): fix references: Element -> ModelElement 2025-07-12 19:26:52 +03:00
Elian Doran
ee1c3c35d7 chore(ckeditor5-mermaid): fix references: {Item,Node} -> Model{Item,Node} 2025-07-12 19:25:40 +03:00
Elian Doran
70eece1429 chore(ckeditor5-mermaid): fix references: Element -> ModelElement 2025-07-12 19:24:39 +03:00
Elian Doran
b4f2be332b chore(ckeditor5-footnotes): fix references: Schema -> ModelSchema 2025-07-12 19:23:44 +03:00
Elian Doran
23fe76989b chore(ckeditor5-footnotes): fix references: Writer -> ModelWriter 2025-07-12 19:23:40 +03:00
Elian Doran
275d07659d chore(ckeditor5-footnotes): fix references: Range -> ModelRange 2025-07-12 19:23:37 +03:00
Elian Doran
a901e92573 chore(ckeditor5-footnotes): fix references: Element -> ModelElement 2025-07-12 19:23:33 +03:00
Elian Doran
6ead31b45f chore(ckeditor5-footnotes): fix references: RootElement -> ModelRootElement 2025-07-12 19:23:30 +03:00
Elian Doran
d4ce12dca9 chore(ckeditor5-footnotes): fix references: TextProxy -> ModelTextProxy 2025-07-12 19:23:25 +03:00
Elian Doran
bb6e22cdb7 chore(ckeditor5-footnotes): fix references: Text -> ModelText 2025-07-12 19:23:13 +03:00
Elian Doran
2c9fc4812e chore(deps): update dependency electron to v37.2.1 (#6303) 2025-07-12 19:05:18 +03:00
Elian Doran
60f4554afa Merge branch 'main' of https://github.com/TriliumNext/trilium 2025-07-12 19:04:43 +03:00
Elian Doran
3c486bfd1b chore(ci): set personal access token for conflict checker 2025-07-12 19:04:41 +03:00
Elian Doran
26b9a95bb2 chore(deps): update svelte monorepo (#6316) 2025-07-12 19:00:30 +03:00
Elian Doran
f7c9217cea Table Collections: restyle (#6298) 2025-07-12 18:59:56 +03:00
Elian Doran
e92022b73c Tree Context Menu: relocate the "Duplicate subtree" menu item (#6299) 2025-07-12 18:52:35 +03:00
Elian Doran
61ff2353c8 docs(help): update documentation on duplicate subtree 2025-07-12 18:52:12 +03:00
Elian Doran
c8cca26ca4 Merge remote-tracking branch 'origin/main' into feat/tree-context-menu/relocate-duplicate-note-command 2025-07-12 18:41:58 +03:00
Elian Doran
aa556ed4d5 Merge branch 'main' of https://github.com/TriliumNext/trilium 2025-07-12 18:40:28 +03:00
Elian Doran
5d694a7bdf chore(ci): permissions issue with merge checker 2025-07-12 18:40:25 +03:00
renovate[bot]
c4787dae23 fix(deps): update ckeditor monorepo 2025-07-12 10:57:11 +00:00
renovate[bot]
9f5f329c53 chore(deps): update dependency electron to v37.2.1 2025-07-12 10:55:36 +00:00
Elian Doran
f82b96fcc4 chore(deps): update dependency @types/node to v22.16.3 (#6302) 2025-07-12 13:53:21 +03:00
renovate[bot]
d4b24fa427 chore(deps): update svelte monorepo 2025-07-12 10:41:27 +00:00
renovate[bot]
c852f67c59 chore(deps): update dependency @types/node to v22.16.3 2025-07-12 10:39:43 +00:00
Elian Doran
92c228a3c9 chore(deps): update nx monorepo to v21.2.3 (#6306) 2025-07-12 13:17:34 +03:00
renovate[bot]
42f948e2b3 chore(deps): update nx monorepo to v21.2.3 2025-07-12 08:59:08 +00:00
Elian Doran
13e8932117 chore(deps): update dependency @playwright/test to v1.54.1 (#6308) 2025-07-12 11:55:42 +03:00
renovate[bot]
910d34bd42 chore(deps): update dependency @playwright/test to v1.54.1 2025-07-12 07:57:58 +00:00
Elian Doran
b204ba29e7 fix(deps): update eslint monorepo to v9.31.0 (#6311) 2025-07-12 10:54:00 +03:00
Elian Doran
d49244cbc8 Merge branch 'main' of https://github.com/TriliumNext/trilium 2025-07-12 10:08:35 +03:00
Elian Doran
ef2f2f17b4 feat(ci): mark PRs with merge conflicts 2025-07-12 10:08:33 +03:00
renovate[bot]
b9f21dcf4c fix(deps): update eslint monorepo to v9.31.0 2025-07-12 07:03:21 +00:00
Elian Doran
808fe690cc chore(deps): update dependency openai to v5.9.0 (#6309) 2025-07-12 10:01:18 +03:00
Elian Doran
901eec04e5 chore(deps): update dependency vite to v7.0.4 (#6305) 2025-07-12 10:01:02 +03:00
Elian Doran
9272394ada fix(deps): update dependency eslint-linter-browserify to v9.31.0 (#6310) 2025-07-12 09:59:19 +03:00
Elian Doran
4457982fae chore(deps): update ckeditor5 config packages to v12 (major) (#6312) 2025-07-12 09:59:05 +03:00
Elian Doran
7f67b2b461 chore(deps): update dependency dotenv to v17.2.0 (#6279) 2025-07-12 09:58:05 +03:00
Elian Doran
7f3934f4c3 chore(renovate): group svelte as monorepo 2025-07-12 09:57:29 +03:00
renovate[bot]
a3b80a2cc4 chore(deps): update ckeditor5 config packages to v12 2025-07-12 01:37:21 +00:00
renovate[bot]
6d967e5e51 fix(deps): update dependency eslint-linter-browserify to v9.31.0 2025-07-12 01:34:54 +00:00
renovate[bot]
b674ca90d1 chore(deps): update dependency openai to v5.9.0 2025-07-12 01:34:03 +00:00
renovate[bot]
95edb60a84 chore(deps): update dependency vite to v7.0.4 2025-07-12 01:29:46 +00:00
Adorian Doran
40add78ccb client/tree context menu: update translations 2025-07-12 02:22:00 +03:00
Adorian Doran
1029c24c06 client/tree context menu: relocate the "Duplicate subtree" menu item 2025-07-12 02:21:22 +03:00
Adorian Doran
94d94fe8fb Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/style/collections/table 2025-07-12 01:56:04 +03:00
Adorian Doran
49489c0f45 style/table collections: refactor 2025-07-12 01:55:07 +03:00
Adorian Doran
215833a2c9 style/table collections: tweak table footer 2025-07-12 01:40:18 +03:00
Adorian Doran
a7471a3d47 style/table collections: tweak checkbox cells 2025-07-12 01:34:22 +03:00
Adorian Doran
909aaefbd7 style/table collections: restyle context menus 2025-07-12 01:17:09 +03:00
Elian Doran
15c2f56bf2 fix(options): display a less ambiguous/scary message after performing… (#6284) 2025-07-12 00:34:23 +03:00
Elian Doran
84cdfec415 Popup editor (#6292) 2025-07-12 00:30:33 +03:00
Elian Doran
91572ab8b9 fix(popup_editor): use cmd on macos 2025-07-11 22:53:14 +03:00
Adorian Doran
ed758f4c92 style/table collections: tweak appearance 2025-07-11 22:39:49 +03:00
Elian Doran
f1fc15e115 fix(link): popup menu no longer triggering 2025-07-11 22:34:41 +03:00
Adorian Doran
22300e8151 style/table collections: tweak appearance 2025-07-11 21:52:35 +03:00
Elian Doran
292646e14a fix(popup_editor): styles showing up when classic toolbar is shown 2025-07-11 20:46:48 +03:00
Elian Doran
b4921a20d8 fix(client): type errors 2025-07-11 20:08:35 +03:00
Elian Doran
54be79a725 feat(in-app-help): link grid/list book types 2025-07-11 19:43:12 +03:00
Elian Doran
4fc47370fe docs(help): fix some old references to books 2025-07-11 19:42:19 +03:00
Elian Doran
9e30bcf233 docs(help): improve documentation on collections 2025-07-11 19:40:54 +03:00
Elian Doran
e5712c54e6 docs(help): add a section on feature highlights 2025-07-11 19:09:42 +03:00
Elian Doran
2a4fe21a39 docs(help): document keyboard shortcuts for note tree 2025-07-11 18:50:56 +03:00
Elian Doran
b259558f0f docs(help): document note tooltip 2025-07-11 18:33:16 +03:00
Elian Doran
e2f6d9e0d6 docs(help): document quick edit 2025-07-11 18:27:55 +03:00
Elian Doran
4fc2b0fa5e feat(popup_editor): focus on editor automatically for easier editing 2025-07-11 16:52:13 +03:00
Elian Doran
8dca79ecf2 fix(popup_editor): block toolbar from behind modal interfering 2025-07-11 16:52:13 +03:00
Elian Doran
c7f49f0e21 chore(popup_editor): switch keyboard combo to Ctrl+right click 2025-07-11 16:52:13 +03:00
Elian Doran
bce2094fb2 fix(tree): middle click triggering paste 2025-07-11 16:52:13 +03:00
renovate[bot]
65c33e1aa0 chore(deps): update dependency webdriverio to v9.17.0 2025-07-11 16:52:13 +03:00
renovate[bot]
8e108bc5e2 chore(deps): update dependency svelte to v5.35.5 2025-07-11 16:52:13 +03:00
renovate[bot]
4e75ce7fdb chore(deps): update pnpm to v10.13.1 2025-07-11 16:52:13 +03:00
renovate[bot]
1e42574d28 fix(deps): update dependency i18next to v25.3.2 2025-07-11 16:52:13 +03:00
renovate[bot]
85ebaf6afa chore(deps): update dependency dotenv to v17.2.0 2025-07-11 16:52:13 +03:00
renovate[bot]
661c7e4056 chore(deps): update dependency @sveltejs/kit to v2.22.4 2025-07-11 16:52:13 +03:00
Elian Doran
1e8ea54dbc feat(popup_editor): smoother operation 2025-07-11 12:16:56 +03:00
Elian Doran
ddbe7e9936 chore(popup_editor): clean up after closing modal 2025-07-11 12:00:32 +03:00
Elian Doran
cab86175ef fix(file): pdf having a 10px margin at the bottom 2025-07-11 11:28:10 +03:00
Elian Doran
ec7414b174 fix(popup_editor): collections being displayed under a full empty screen 2025-07-11 10:47:06 +03:00
Elian Doran
8343a5d1dd feat(popup_editor): add mobile support 2025-07-11 09:06:06 +03:00
Adorian Doran
18c55784c7 style/table collections: add a placeholder style for rows and cells 2025-07-11 00:16:15 +03:00
Elian Doran
39eac83d38 fix(popup_editor): mermaid not rendering properly 2025-07-10 23:21:37 +03:00
Elian Doran
55bd6fb57d feat(popup_editor): properly support file note types 2025-07-10 22:55:16 +03:00
Elian Doran
6fdec52332 fix(popup_editor): mind map not rendering properly 2025-07-10 22:48:33 +03:00
Adorian Doran
824a3c5fcc style/table collections: fix an issue with column headers 2025-07-10 21:54:32 +03:00
Adorian Doran
87da644027 style/table collections: add a placeholder style for column headers 2025-07-10 21:52:09 +03:00
Adorian Doran
4f42f543d8 style/table collections: create a stylesheet dedicated to the table view 2025-07-10 21:20:48 +03:00
Elian Doran
97ea3ac3fc fix(popup_editor): block popup not working 2025-07-10 20:54:50 +03:00
Elian Doran
f04b75fd36 feat(popup_editor): add shortcut in links 2025-07-10 19:56:13 +03:00
Elian Doran
f5bffc38f1 feat(popup_editor): add shortcut in note tree 2025-07-10 19:54:51 +03:00
Elian Doran
27738acefc feat(popup_editor): support collections 2025-07-10 19:39:08 +03:00
Elian Doran
59ce2072c5 feat(popup_editor): display promoted attributes 2025-07-10 19:19:44 +03:00
Elian Doran
ed68dda70b feat(popup_editor): integrate with note tooltip 2025-07-10 18:57:13 +03:00
Elian Doran
892ab02f06 feat(popup_editor): integrate with geomap 2025-07-10 18:21:12 +03:00
Elian Doran
7d9196d5e1 feat(popup_editor): integrate with calendar for day notes 2025-07-10 18:14:23 +03:00
Elian Doran
dccdb5ceb7 feat(popup_editor): integrate with calendar for existing notes 2025-07-10 17:54:27 +03:00
Elian Doran
f961698e44 feat(popup_editor): improve fit for wider notes 2025-07-10 17:40:57 +03:00
Elian Doran
278fe3262e feat(popup_editor): improve fit for full-height note types 2025-07-10 17:33:00 +03:00
Elian Doran
1fc860b052 feat(popup_editor): integrate with tree context menu 2025-07-10 17:26:40 +03:00
Elian Doran
88a8311173 feat(popup_editor): integrate with note link context menu 2025-07-10 17:19:10 +03:00
Elian Doran
63dc5697dd fix(popup_editor): classic editor toolbar displayed when it shouldn't 2025-07-10 16:37:34 +03:00
Elian Doran
b595d1fade fix(popup_editor): ckeditor modals not showing 2025-07-10 16:35:44 +03:00
Elian Doran
d91c59b7d0 feat(popup_editor): floating classic toolbar 2025-07-10 16:16:09 +03:00
Elian Doran
aa2ab0da31 feat(popup_editor): limit max height & reduce padding 2025-07-10 16:12:38 +03:00
Elian Doran
91f94106fb feat(popup_editor): integrate classic editor toolbar 2025-07-10 16:09:34 +03:00
Elian Doran
308f319138 feat(popup_editor): normalize paddings 2025-07-10 15:28:55 +03:00
Elian Doran
fa0c01591a feat(popup_editor): integrate note title + icon into modal header 2025-07-10 15:25:07 +03:00
Elian Doran
cb5a771490 feat(popup_editor): add editable note title and icon 2025-07-10 15:07:48 +03:00
Elian Doran
0c17a13462 fix(popup_editor): current tab events interfering 2025-07-10 14:57:32 +03:00
Romain DEP.
04593cb2d7 fix(options): display a less ambiguous/scary message after performing a consistency check.
The current message could easily be misinterpreted as an instruction for the user to go fix issues
2025-07-10 13:15:41 +02:00
Elian Doran
b6f50b6af0 chore(deps): update dependency webdriverio to v9.17.0 (#6281) 2025-07-10 13:57:25 +03:00
renovate[bot]
fc454cba03 chore(deps): update dependency webdriverio to v9.17.0 2025-07-10 09:54:03 +00:00
Elian Doran
6f165df29e chore(deps): update dependency svelte to v5.35.5 (#6277) 2025-07-10 12:49:50 +03:00
Elian Doran
d16468071d chore(deps): update pnpm to v10.13.1 (#6282) 2025-07-10 12:49:38 +03:00
renovate[bot]
20a492523f chore(deps): update dependency svelte to v5.35.5 2025-07-10 07:43:08 +00:00
Elian Doran
1216f51c78 fix(deps): update dependency i18next to v25.3.2 (#6278) 2025-07-10 10:42:16 +03:00
Elian Doran
ea3ac1041b chore(deps): update dependency dotenv to v17.2.0 (#6280) 2025-07-10 10:41:45 +03:00
Elian Doran
d838e8baf0 chore(deps): update dependency @sveltejs/kit to v2.22.4 (#6276) 2025-07-10 10:41:01 +03:00
renovate[bot]
60a7347d7d chore(deps): update pnpm to v10.13.1 2025-07-10 02:40:45 +00:00
renovate[bot]
4e05e79426 chore(deps): update dependency dotenv to v17.2.0 2025-07-10 02:39:34 +00:00
renovate[bot]
aa872f47f2 chore(deps): update dependency dotenv to v17.2.0 2025-07-10 02:38:39 +00:00
renovate[bot]
fbd833ad86 fix(deps): update dependency i18next to v25.3.2 2025-07-10 02:37:42 +00:00
renovate[bot]
bee65ed32c chore(deps): update dependency @sveltejs/kit to v2.22.4 2025-07-10 02:35:48 +00:00
Elian Doran
5adca76a9a refactor(popup_editor): better error handling 2025-07-09 21:56:11 +03:00
Elian Doran
e7467f6446 feat(popup_editor): get editor to show up if note is open somewhere else 2025-07-09 21:44:42 +03:00
Elian Doran
e49473fbd3 refactor(client): unused import 2025-07-09 21:20:24 +03:00
Elian Doran
bfec44aa5a refactor(popup_editor): inject note detail widget 2025-07-09 21:20:16 +03:00
Elian Doran
55b3bf6036 feat(popup_editor): create an empty modal with auto-trigger 2025-07-09 21:12:18 +03:00
Elian Doran
c9c07f0cb0 chore(book_properties): add config for all note types 2025-07-09 20:53:35 +03:00
Elian Doran
e25727441d chore(book_properties): add translations 2025-07-09 20:40:04 +03:00
Elian Doran
51b7955ccd refactor(book_properties): move rendering to book_properties 2025-07-09 20:37:05 +03:00
Elian Doran
196bba9cda refactor(book_properties): list buttons are now declarative 2025-07-09 20:29:58 +03:00
Elian Doran
430ed78d85 feat(book_properties): improve layout & accessibility 2025-07-09 20:14:42 +03:00
Elian Doran
2d11ed805d feat(book_properties): react to external changes 2025-07-09 20:13:08 +03:00
Elian Doran
f55426bdb0 feat(collections): basic properties for calendar 2025-07-09 20:10:25 +03:00
Elian Doran
87b5068fec chore(collections): rename references to book 2025-07-09 19:40:35 +03:00
Elian Doran
9ddd1a4ae2 feat(collections): add i18n 2025-07-09 19:37:10 +03:00
Elian Doran
736bc9c9bd chore(insert_note): improve layout slightly 2025-07-09 19:32:29 +03:00
Elian Doran
5a2da62992 feat(collections): hide book default note type 2025-07-09 19:28:44 +03:00
Elian Doran
1a72eb91ee feat(collections): display grid/view in collections list 2025-07-09 19:22:12 +03:00
Elian Doran
0d3c5b06e2 feat(collections): add calendar as a standalone template 2025-07-09 19:05:05 +03:00
Elian Doran
035b72a08d feat(insert_note): add dedicated section for collections 2025-07-09 18:55:08 +03:00
Elian Doran
fc4a595725 feat(insert_note): display on two columns 2025-07-09 18:37:09 +03:00
Elian Doran
444969bcf4 chore(deps): update dependency @types/node to v22.16.2 (#6267) 2025-07-09 08:47:37 +03:00
renovate[bot]
2cb6b14eca chore(deps): update dependency @types/node to v22.16.2 2025-07-09 05:23:39 +00:00
Elian Doran
468b5022a4 chore(deps): update dependency @types/express-serve-static-core to v5.0.7 (#6265) 2025-07-09 08:20:41 +03:00
Elian Doran
c1897563ca chore(deps): update dependency @types/leaflet to v1.9.20 (#6266) 2025-07-09 08:20:28 +03:00
Elian Doran
5e533896b9 chore(deps): update dependency openai to v5.8.3 (#6268) 2025-07-09 08:20:11 +03:00
Elian Doran
d3ceb7cfc1 chore(deps): update dependency vite to v7.0.3 (#6269) 2025-07-09 08:19:59 +03:00
Elian Doran
731f74f421 chore(deps): update dependency is-svg to v6.1.0 (#6270) 2025-07-09 08:19:40 +03:00
renovate[bot]
46d82651a3 chore(deps): update dependency is-svg to v6.1.0 2025-07-09 02:08:18 +00:00
renovate[bot]
b3108c7e2b chore(deps): update dependency vite to v7.0.3 2025-07-09 02:07:23 +00:00
renovate[bot]
0cb988470e chore(deps): update dependency openai to v5.8.3 2025-07-09 02:06:29 +00:00
renovate[bot]
5a030014b0 chore(deps): update dependency @types/leaflet to v1.9.20 2025-07-09 02:04:53 +00:00
renovate[bot]
2a43ef4dae chore(deps): update dependency @types/express-serve-static-core to v5.0.7 2025-07-09 02:04:03 +00:00
Elian Doran
6b5f9fc6ff Merge branch 'main' of https://github.com/TriliumNext/trilium 2025-07-08 22:33:44 +03:00
Elian Doran
b3a156c20d Update docker-compose.yml with new container image (#6263) 2025-07-08 21:33:51 +03:00
Elian Doran
24340d3a8e refactor(next): remove use of :has for performance reasons 2025-07-08 21:24:18 +03:00
Elian Doran
2fac2a8c5e chore(next): improve performance of a specific selector 2025-07-08 21:09:13 +03:00
Elian Doran
decb0c702d chore(nx): disable cache for rebuild-deps 2025-07-08 20:54:14 +03:00
Elian Doran
d45ff6cca5 fix(next): another non-performant CSS selector 2025-07-08 20:53:06 +03:00
DeveloperCrocodiles
83833e668c Update docker-compose.yml with new container image
Update docker-compose.yml to use the new container image triliumnext/trilium rather than triliumnext/notes.
2025-07-08 16:51:10 +01:00
Elian Doran
2cc181d1ac fix(tree): pasting in editor on middle click (closes #5812) 2025-07-08 15:51:19 +03:00
Elian Doran
a946ce3534 chore(deps): update dependency dotenv to v17.1.0 (#6255) 2025-07-08 09:05:40 +03:00
renovate[bot]
3e9f476b37 chore(deps): update dependency dotenv to v17.1.0 2025-07-08 05:21:18 +00:00
Elian Doran
de65c748a4 chore(deps): update dependency esbuild to v0.25.6 (#6249) 2025-07-08 08:18:57 +03:00
Elian Doran
8a2bfb9d7b chore(deps): update dependency supertest to v7.1.3 (#6250) 2025-07-08 08:18:20 +03:00
Elian Doran
a1ced31fea chore(deps): update dependency svelte to v5.35.4 (#6251) 2025-07-08 08:18:08 +03:00
Elian Doran
989a9f506e fix(deps): update dependency @electron/remote to v2.1.3 (#6252) 2025-07-08 08:17:58 +03:00
Elian Doran
59d55e2489 fix(deps): update dependency mermaid to v11.8.1 (#6253) 2025-07-08 08:17:47 +03:00
Elian Doran
2b312a9234 chore(deps): update typescript-eslint monorepo to v8.36.0 (#6256) 2025-07-08 08:17:31 +03:00
Elian Doran
16d9b982c2 chore(deps): update dependency dotenv to v17.1.0 (#6254) 2025-07-08 08:17:19 +03:00
renovate[bot]
a5600e75f5 chore(deps): update typescript-eslint monorepo to v8.36.0 2025-07-08 02:01:43 +00:00
renovate[bot]
f91dea62b6 chore(deps): update dependency dotenv to v17.1.0 2025-07-08 01:59:19 +00:00
renovate[bot]
4915ffcf2a fix(deps): update dependency mermaid to v11.8.1 2025-07-08 01:58:31 +00:00
renovate[bot]
9dbea2aa18 fix(deps): update dependency @electron/remote to v2.1.3 2025-07-08 01:57:38 +00:00
renovate[bot]
45f6a70fb8 chore(deps): update dependency svelte to v5.35.4 2025-07-08 01:56:42 +00:00
renovate[bot]
96b4c611cc chore(deps): update dependency supertest to v7.1.3 2025-07-08 01:55:48 +00:00
renovate[bot]
4e559d6594 chore(deps): update dependency esbuild to v0.25.6 2025-07-08 01:54:54 +00:00
Elian Doran
db1a599f95 fix(deps): update dependency mind-elixir to v5 (#6239) 2025-07-07 22:12:14 +03:00
Elian Doran
040964bbb7 chore(env): add variable for inspector 2025-07-07 22:10:07 +03:00
Elian Doran
dc6a303154 fix(mindmap): update deps to reintegrate features 2025-07-07 20:59:31 +03:00
Elian Doran
f88f14c983 Merge remote-tracking branch 'origin/main' into renovate/mind-elixir-5.x 2025-07-07 20:50:23 +03:00
Elian Doran
f870649256 Geomap improvements & conversion to book type (#6241) 2025-07-07 20:27:07 +03:00
Elian Doran
ed4dc30a6e refator(client): type error 2025-07-07 20:07:04 +03:00
Elian Doran
ce9010ff13 chore(client): add some documentation 2025-07-07 20:04:17 +03:00
Elian Doran
994e9fa852 docs(views/geomap): update user manual to reflect newly added features 2025-07-07 19:54:06 +03:00
Elian Doran
9df7d6227e Merge branch 'feature/geomap_collection' of https://github.com/TriliumNext/trilium into feature/geomap_collection 2025-07-07 19:20:24 +03:00
Elian Doran
242a576548 refactor(views/geomap): solve type errors 2025-07-07 19:15:38 +03:00
Elian Doran
c1a5808f37 feat(views/geomap): allow disabling editing 2025-07-07 19:04:47 +03:00
Elian Doran
5c6bb99d78 refactor(views/geomap): integrate drag into editing 2025-07-07 18:04:17 +03:00
Elian Doran
63c408c45b feat(views/geomap): dragging notes that are not children 2025-07-07 18:02:32 +03:00
Elian Doran
2a665dffbc feat(views/geomap): dragging notes that are children 2025-07-07 17:55:16 +03:00
Elian Doran
6509acd6ee feat(views/geomap): add open location to blank item as well 2025-07-07 17:24:42 +03:00
Elian Doran
4853d45609 chore(nix): switch to master for electron 37 (closes #6217) 2025-07-07 14:28:50 +03:00
Jon Fuller
fe78c1fee3 fix(api): implement better rate limiting controls for pre-auth endpoints (#6243) 2025-07-06 14:15:24 -07:00
Elian Doran
8102172557 feat(views/geomap): display geolocation in both context menus 2025-07-06 23:48:51 +03:00
Elian Doran
a1341e6036 feat(views/geomap): display geolocation in empty menu 2025-07-06 23:48:29 +03:00
Elian Doran
d31af2ddc2 feat(views/geomap): add a context menu for empty area 2025-07-06 23:34:07 +03:00
Elian Doran
a563330136 feat(import/zip): improve geomap compatibility 2025-07-06 23:05:21 +03:00
Elian Doran
a58e5789bc feat(import/zip): backward compatibility 2025-07-06 22:33:19 +03:00
Elian Doran
68e258f23b fix(views/geomap): unable to change note type to geomap 2025-07-06 22:32:24 +03:00
Elian Doran
dd18866156 refactor(server): convert to switch 2025-07-06 22:22:19 +03:00
Elian Doran
1b1f1957c3 chore(views/help): reintroduce help button 2025-07-06 22:11:03 +03:00
Elian Doran
ff6b4effbd fix(views/geomap): tooltip not showing 2025-07-06 21:29:42 +03:00
Elian Doran
06fa59239c chore(views/geomap): remove old files 2025-07-06 21:12:05 +03:00
Elian Doran
557bfbd1d6 feat(views/geomap): remove old geo map type 2025-07-06 20:23:50 +03:00
Elian Doran
f5a6dfa629 feat(views/geomap): migrate db to new collection type 2025-07-06 20:17:15 +03:00
Elian Doran
ce33dfb003 feat(views): delete duplicate attachments 2025-07-06 20:16:47 +03:00
Elian Doran
7b1c058d29 feat(views/geomap): add template 2025-07-06 19:21:53 +03:00
perf3ct
04c8f8a123 fix(api): implement better rate limiting controls for pre-auth endpoints 2025-07-06 16:19:08 +00:00
Elian Doran
d15fccb1d8 chore(views/geomap): integrate context menu options 2025-07-06 18:36:36 +03:00
Elian Doran
229dd9cd18 chore(views/geomap): integrate touchbar 2025-07-06 18:25:53 +03:00
Elian Doran
a4faaa406b fix(views/geomap): proper refresh 2025-07-06 17:54:13 +03:00
Elian Doran
b6d2de54b2 chore(views/geomap): reintroduce adding notes 2025-07-06 17:51:57 +03:00
Elian Doran
d5e81d77a2 refactor(views/geomap): move context menu 2025-07-06 12:28:24 +03:00
Elian Doran
939e99637f chore(views/geomap): reintroduce moving markers 2025-07-06 12:22:51 +03:00
Elian Doran
579a261612 chore(views/geomap): reintroduce display of tracks 2025-07-06 12:19:09 +03:00
Elian Doran
6d03304cbb chore(views/geomap): reintroduce display of markers 2025-07-06 12:12:59 +03:00
Elian Doran
b8d41b3421 chore(views/geomap): reintroduce viewport storage 2025-07-06 11:47:37 +03:00
Elian Doran
6a5bb1f5c8 chore(views/geomap): reintroduce map init 2025-07-06 11:36:59 +03:00
Elian Doran
cd742a4617 chore(views/geomap): basic initialization 2025-07-06 11:30:24 +03:00
Elian Doran
54063b97ad feat(views/geomap): display even if empty 2025-07-06 11:22:49 +03:00
Elian Doran
7abb67e737 feat(views/geomap): display in view type 2025-07-06 11:21:25 +03:00
Elian Doran
00fd1ba137 feat(views/geomap): make full-height 2025-07-06 11:15:28 +03:00
Elian Doran
7ea37b9eb9 feat(views/geomap): create empty view type 2025-07-06 11:13:17 +03:00
Elian Doran
b749de8fe1 fix(mind_map): styles no longer loading after major update 2025-07-06 10:08:45 +03:00
Elian Doran
8efef6842d Note Type Badges (#6229) 2025-07-06 09:54:27 +03:00
renovate[bot]
dc206f38d5 fix(deps): update dependency mind-elixir to v5 2025-07-06 01:15:10 +00:00
Elian Doran
29a00a6c0e Merge branch 'main' of github.com:TriliumNext/trilium 2025-07-05 22:31:08 +03:00
Elian Doran
fe678230a8 feat(webview): allow popups (closes #5698) 2025-07-05 22:31:04 +03:00
Adorian Doran
9cdbeb061f Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/context-menu/menu-items-badge-support 2025-07-05 22:06:39 +03:00
Adorian Doran
6c308f35c1 style(next)/badges: tweak appearance 2025-07-05 21:35:00 +03:00
Adorian Doran
34b89cf2e8 style/badges: tweak appearance 2025-07-05 20:46:45 +03:00
Elian Doran
b566a188dc chore(client): crash during serialization for CKEditor errors 2025-07-05 20:31:48 +03:00
Elian Doran
998432e236 chore(deps): update dependency @ckeditor/ckeditor5-package-tools to v4.0.1 (#6178) 2025-07-05 20:20:02 +03:00
Adorian Doran
1af8edfe4d client/note type chooser: add support for badges 2025-07-05 19:31:59 +03:00
Adorian Doran
5bf01106c5 client/context menus/insert note: refactor 2025-07-05 19:13:34 +03:00
Adorian Doran
a45289e385 client/context menus/insert note: fix a typo again 2025-07-05 18:54:22 +03:00
Adorian Doran
4ffd005b09 client/context menus/insert note: fix a typo 2025-07-05 18:53:40 +03:00
Adorian Doran
e6ca89fea8 client/context menus/insert note: fix a comment 2025-07-05 18:53:03 +03:00
Adorian Doran
2225aea756 client/context menus/insert note: fix a console log 2025-07-05 18:49:22 +03:00
Adorian Doran
bfc4a84020 client/context menus/insert note: avoid highlighting predefined templates as "new" 2025-07-05 18:46:52 +03:00
Elian Doran
5390bfdcab fix(help): ligatures in code causing confusion (closes #6224) 2025-07-05 18:32:55 +03:00
Elian Doran
301211ff41 chore(client): remove comment 2025-07-05 18:25:52 +03:00
renovate[bot]
64139e4e08 chore(deps): update dependency @ckeditor/ckeditor5-package-tools to v4.0.1 2025-07-05 15:22:56 +00:00
Elian Doran
e6485cde92 chore(deps): update dependency webdriverio to v9.16.2 (#6193) 2025-07-05 18:20:30 +03:00
Adorian Doran
891f6ba66f client/context menus/insert note: highlight new templates based on their creation date 2025-07-05 18:10:36 +03:00
Elian Doran
5d3c1e3fec chore(client,website): bypass issue with plugins 2025-07-05 17:58:36 +03:00
Elian Doran
087e755390 Revert "chore(client): bypass issue with plugins"
This reverts commit 025dc1ce75.
2025-07-05 17:48:53 +03:00
Elian Doran
025dc1ce75 chore(client): bypass issue with plugins 2025-07-05 17:44:54 +03:00
Elian Doran
703200338d Merge remote-tracking branch 'origin/main' into renovate/webdriverio-monorepo 2025-07-05 17:15:39 +03:00
Elian Doran
377c93ca0b chore(deps): update dependency @anthropic-ai/sdk to v0.56.0 (#6211) 2025-07-05 14:50:20 +03:00
renovate[bot]
69394ffe29 chore(deps): update dependency webdriverio to v9.16.2 2025-07-05 11:38:36 +00:00
renovate[bot]
f85231d74a chore(deps): update dependency @anthropic-ai/sdk to v0.56.0 2025-07-05 11:37:47 +00:00
Elian Doran
b93d8b0159 chore(deps): update dependency @types/tabulator-tables to v6.2.7 (#6220) 2025-07-05 10:16:45 +03:00
Elian Doran
67b9329903 chore(deps): update dependency vite to v7.0.2 (#6221) 2025-07-05 10:16:10 +03:00
Elian Doran
c0edd4ea4f fix(deps): update dependency i18next to v25.3.1 (#6222) 2025-07-05 10:15:41 +03:00
renovate[bot]
8eaf2786e8 fix(deps): update dependency i18next to v25.3.1 2025-07-05 02:42:27 +00:00
renovate[bot]
25622df464 chore(deps): update dependency vite to v7.0.2 2025-07-05 02:41:34 +00:00
renovate[bot]
a48900e178 chore(deps): update dependency @types/tabulator-tables to v6.2.7 2025-07-05 02:40:46 +00:00
Elian Doran
ac8b0535d2 Introduce the table view (#6097) 2025-07-04 23:34:34 +03:00
Elian Doran
6ce25a825b feat(help): link table note type 2025-07-04 23:19:33 +03:00
Elian Doran
b3f56851b8 docs(guide): document table functionality 2025-07-04 23:03:50 +03:00
Elian Doran
4b86fedce1 Merge remote-tracking branch 'origin/main' into feature/table_view
; Conflicts:
;	pnpm-lock.yaml
2025-07-04 21:47:26 +03:00
Elian Doran
1ebb70c4d2 fix(views/table): refresh when relation changes 2025-07-04 21:43:56 +03:00
Elian Doran
3de7b81be8 refactor(views/table): fix some type errors 2025-07-04 21:31:43 +03:00
Elian Doran
d08225339c style(views/table): reintroduce horizontal padding 2025-07-04 21:27:45 +03:00
Elian Doran
ba22d0706f chore(views/table): unnecessary code 2025-07-04 21:25:27 +03:00
Elian Doran
ef80f104c0 fix(views/table): scroll lost when updating data 2025-07-04 21:22:13 +03:00
Elian Doran
af296a1e4e refactor(views/table): split column & rows into separate file 2025-07-04 21:18:52 +03:00
Elian Doran
28a755306a feat(views/table): deduplicate columns 2025-07-04 21:15:10 +03:00
Elian Doran
461e085eff fix(views/table): column width or visibility lost after adding new column 2025-07-04 21:11:50 +03:00
Elian Doran
fbda049c32 fix(views/table): column context menu disappearing after update 2025-07-04 20:57:39 +03:00
Elian Doran
4ded5e2b98 feat(views/table): hide footer in search 2025-07-04 20:56:10 +03:00
Elian Doran
63537aff20 feat(views/table): disable reordering in search 2025-07-04 20:43:16 +03:00
Elian Doran
0f7a2adf15 feat(views/table): improve layout 2025-07-04 20:38:48 +03:00
Elian Doran
60963abe2c refactor(views/table): reduce duplication 2025-07-04 20:33:48 +03:00
Elian Doran
08cf95aa38 feat(views/table): merge open note and icon into title 2025-07-04 20:22:55 +03:00
Elian Doran
e5b10ab16a feat(views/table): set up relations not as a link 2025-07-04 20:08:41 +03:00
Elian Doran
7f5a1ee45a feat(ribbon): stop focusing book tab by default 2025-07-04 19:47:52 +03:00
Elian Doran
15c593f68e feat(views/table): automatically focus on title when creating new row 2025-07-04 19:46:37 +03:00
Elian Doran
5f8ef0395b feat(views/table): improve default layout 2025-07-04 19:37:05 +03:00
Elian Doran
513636e1e0 feat(views/table): hide column titles for small ones 2025-07-04 19:32:22 +03:00
Elian Doran
ae9b2c08a9 feat(views/table): hide context menu for small columns 2025-07-04 19:29:33 +03:00
Elian Doran
d5327b3b4a feat(views/table): get rid of note position column 2025-07-04 19:26:06 +03:00
Elian Doran
323e3d3cac feat(views/table): hide note ID by default 2025-07-04 19:25:08 +03:00
Elian Doran
01b2257063 feat(views/table): relocate new row/column buttons 2025-07-04 19:23:26 +03:00
Elian Doran
c69ef611a0 feat(views/table): basic reordering mechanism 2025-07-04 18:53:31 +03:00
Elian Doran
dcad23316d style(views/table): improve autocomplete styling 2025-07-04 18:26:24 +03:00
Elian Doran
e411f9932f feat(views/table): display note title when editing relation 2025-07-04 18:13:07 +03:00
Elian Doran
854969e1b8 feat(views/table): react to external attribute changes 2025-07-04 18:05:24 +03:00
Elian Doran
4ac7b6e9e8 feat(views/table): allow creation of new notes 2025-07-04 17:17:39 +03:00
Elian Doran
ac70908c5a feat(views/table): integrate reference-like for relations 2025-07-04 16:14:14 +03:00
Elian Doran
45ac70b78f feat(views/table): proper storage of relations 2025-07-04 15:07:40 +03:00
Elian Doran
a4664576fe feat(views/table): separate data model for relations 2025-07-04 15:05:00 +03:00
Elian Doran
b293643398 feat(views/table): basic formatter for relations 2025-07-04 15:02:10 +03:00
Elian Doran
a2e197facd feat(views/table): set up relation editor 2025-07-04 14:50:07 +03:00
Elian Doran
8614d39ef4 chore(views/table): remove unnecessary log 2025-07-04 14:42:04 +03:00
Elian Doran
6456bb34ae chore(views/table): start implementing a relation editor 2025-07-04 14:29:40 +03:00
Elian Doran
f5dc4de1c1 feat(views/table): parse relations 2025-07-04 14:12:36 +03:00
Adorian Doran
d869056910 client/note types mapping: add a way to highlight newly introduced types 2025-07-04 13:47:50 +03:00
Adorian Doran
821e4b17cb client/refactor: de-duplicate the note type mapping 2025-07-04 13:38:02 +03:00
Elian Doran
d8cb5efd2d Merge remote-tracking branch 'origin/main' into feature/table_view 2025-07-04 12:59:03 +03:00
Adorian Doran
f90e2fb484 client/tree context menu/insert note: mark the beta note types with a badge 2025-07-04 11:46:10 +03:00
Adorian Doran
2c9a7144da Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/context-menu/menu-items-badge-support 2025-07-04 11:36:43 +03:00
Adorian Doran
88d1af7210 style/refactor: make the current badge style to be global 2025-07-04 11:33:29 +03:00
Elian Doran
300e5a5528 chore(deps): update dependency svelte to v5.35.2 (#6209) 2025-07-04 09:36:34 +03:00
renovate[bot]
4418fefe4b chore(deps): update dependency svelte to v5.35.2 2025-07-04 06:15:18 +00:00
Elian Doran
fe5d1cac9a Feature/note map filter (#6104) 2025-07-04 09:12:20 +03:00
Elian Doran
49d17fff9b chore(deps): update dependency globals to v16.3.0 (#6190) 2025-07-04 09:11:53 +03:00
Elian Doran
557c6d2d8b chore(deps): update dependency stylelint to v16.21.1 (#6208) 2025-07-04 09:11:40 +03:00
Elian Doran
45fc62357d chore(deps): update dependency vite to v7.0.1 (#6210) 2025-07-04 09:11:26 +03:00
Elian Doran
840e3cc22f fix(deps): update dependency force-graph to v1.50.1 (#6212) 2025-07-04 09:11:16 +03:00
Elian Doran
c158c7fc88 fix(deps): update dependency mermaid to v11.8.0 (#6213) 2025-07-04 09:09:37 +03:00
renovate[bot]
bc6f8fc2dd fix(deps): update dependency mermaid to v11.8.0 2025-07-04 01:40:34 +00:00
renovate[bot]
117730acb2 fix(deps): update dependency force-graph to v1.50.1 2025-07-04 01:39:40 +00:00
renovate[bot]
595a7dac83 chore(deps): update dependency vite to v7.0.1 2025-07-04 01:38:08 +00:00
renovate[bot]
64a4d70df4 chore(deps): update dependency stylelint to v16.21.1 2025-07-04 01:36:34 +00:00
renovate[bot]
be36199fe1 chore(deps): update dependency globals to v16.3.0 2025-07-03 21:26:15 +00:00
Elian Doran
e46ad25677 Merge branch 'main' into feat/note-map-filter 2025-07-04 00:20:44 +03:00
Elian Doran
d5ee663922 Tree context menu: reorder the note types of "Insert (child) note..." (#6206) 2025-07-04 00:16:52 +03:00
Elian Doran
a7ab4be055 chore(deps): update vitest monorepo to v3.2.4 (#6186) 2025-07-03 23:39:37 +03:00
Elian Doran
6bbf29e75a Merge branch 'main' into renovate/vitest-monorepo 2025-07-03 23:39:08 +03:00
Adorian Doran
0a06c60cb7 client/context menus: add support to display badges for menu items 2025-07-03 23:27:02 +03:00
Adorian Doran
03658575eb client/context menu/insert note: reorder note types 2025-07-03 22:45:49 +03:00
Adorian Doran
38114bddb9 style(next)/ribbon/file & image properties: tweak the vertical alignment of properties 2025-07-03 21:36:37 +03:00
Adorian Doran
0711a197db style(next): tweak the "Delete notes preview" dialog width 2025-07-03 20:52:38 +03:00
Adorian Doran
f8f818b211 style(next): fix a performance-heavy selector 2025-07-03 20:00:46 +03:00
Elian Doran
988932209c chore(deps): update dependency svelte to v5.35.1 (#6192) 2025-07-03 11:53:59 +03:00
Elian Doran
2aa56cec30 chore(deps): update typescript-eslint monorepo to v8.35.1 (#6194) 2025-07-03 11:53:45 +03:00
renovate[bot]
93d493650c chore(deps): update typescript-eslint monorepo to v8.35.1 2025-07-03 08:25:21 +00:00
renovate[bot]
c6162ddcb4 chore(deps): update dependency svelte to v5.35.1 2025-07-03 08:24:09 +00:00
renovate[bot]
038517eda4 chore(deps): update vitest monorepo to v3.2.4 2025-07-03 08:23:31 +00:00
Elian Doran
30a9db73ab chore(deps): update dependency stylelint to v16.21.0 (#6191) 2025-07-03 11:21:09 +03:00
Elian Doran
a50aa41bdb fix(deps): update eslint monorepo to v9.30.1 (#6198) 2025-07-03 11:20:43 +03:00
renovate[bot]
cbb322fdb8 fix(deps): update eslint monorepo to v9.30.1 2025-07-03 06:23:39 +00:00
renovate[bot]
026e2a020d chore(deps): update dependency stylelint to v16.21.0 2025-07-03 06:20:49 +00:00
Elian Doran
07aab1d005 chore(deps): update ckeditor5 config packages to v11 (major) (#6199) 2025-07-03 09:14:38 +03:00
Elian Doran
26f0f7b188 fix(deps): update dependency tsx to v4.20.3 (#6197) 2025-07-03 09:13:57 +03:00
Elian Doran
1efde3b86b fix(deps): update dependency better-sqlite3 to v12.2.0 (#6196) 2025-07-03 09:13:23 +03:00
Elian Doran
8c1318f379 fix(deps): update dependency @inlang/paraglide-js to v2.2.0 (#6195) 2025-07-03 09:13:10 +03:00
Elian Doran
40e67e8e17 chore(deps): update dependency eslint-plugin-svelte to v3.10.1 (#6189) 2025-07-03 09:12:33 +03:00
Elian Doran
04466f52fd chore(deps): update dependency electron to v37.2.0 (#6188) 2025-07-03 09:11:59 +03:00
Elian Doran
06baa5fb57 chore(deps): update dependency @sveltejs/kit to v2.22.2 (#6187) 2025-07-03 09:11:23 +03:00
Elian Doran
04e1657628 chore(deps): update tailwindcss monorepo to v4.1.11 (#6185) 2025-07-03 09:10:31 +03:00
Elian Doran
7816c8cab0 chore(deps): update nx monorepo to v21.2.2 (#6184) 2025-07-03 09:10:18 +03:00
Elian Doran
6636e658a4 chore(deps): update dependency svelte-check to v4.2.2 (#6183) 2025-07-03 09:09:59 +03:00
Elian Doran
2a06f0daef chore(deps): update dependency lint-staged to v16.1.2 (#6182) 2025-07-03 09:09:43 +03:00
Elian Doran
883cfa588c chore(deps): update dependency dotenv to v17.0.1 (#6181) 2025-07-03 09:09:23 +03:00
Elian Doran
68011a0b5a Merge pull request #6180 from TriliumNext/renovate/mime-types-3.x-lockfile
chore(deps): update dependency @types/mime-types to v3.0.1
2025-07-03 09:08:59 +03:00
Elian Doran
5247d1a371 Merge pull request #6179 from TriliumNext/renovate/eslint-compat-1.x-lockfile
chore(deps): update dependency @eslint/compat to v1.3.1
2025-07-03 09:08:20 +03:00
renovate[bot]
cabdd528d4 chore(deps): update ckeditor5 config packages to v11 2025-07-03 00:19:09 +00:00
renovate[bot]
2bacbb796b fix(deps): update dependency tsx to v4.20.3 2025-07-03 00:17:08 +00:00
renovate[bot]
aa0ed6434a fix(deps): update dependency better-sqlite3 to v12.2.0 2025-07-03 00:16:25 +00:00
renovate[bot]
5b2215d646 fix(deps): update dependency @inlang/paraglide-js to v2.2.0 2025-07-03 00:15:46 +00:00
renovate[bot]
0e760e25f2 chore(deps): update dependency eslint-plugin-svelte to v3.10.1 2025-07-03 00:10:18 +00:00
renovate[bot]
acbb85b409 chore(deps): update dependency electron to v37.2.0 2025-07-03 00:09:29 +00:00
renovate[bot]
ea1d4b97ad chore(deps): update dependency @sveltejs/kit to v2.22.2 2025-07-03 00:08:38 +00:00
renovate[bot]
a81839c13f chore(deps): update tailwindcss monorepo to v4.1.11 2025-07-03 00:06:48 +00:00
renovate[bot]
b9d4668d4d chore(deps): update nx monorepo to v21.2.2 2025-07-03 00:05:55 +00:00
renovate[bot]
42b27f5965 chore(deps): update dependency svelte-check to v4.2.2 2025-07-03 00:05:03 +00:00
renovate[bot]
9cc8222b1c chore(deps): update dependency lint-staged to v16.1.2 2025-07-03 00:04:08 +00:00
renovate[bot]
e8479338df chore(deps): update dependency dotenv to v17.0.1 2025-07-03 00:03:19 +00:00
renovate[bot]
fa9e6c9fc0 chore(deps): update dependency @types/mime-types to v3.0.1 2025-07-03 00:02:32 +00:00
renovate[bot]
5366173b52 chore(deps): update dependency @eslint/compat to v1.3.1 2025-07-03 00:01:45 +00:00
Elian Doran
63520c55b3 Merge branch 'main' into feat/note-map-filter 2025-07-02 23:37:56 +03:00
Elian Doran
86f6d9b14a feat(export/zip): handle empty title for archive 2025-07-02 22:28:19 +03:00
Elian Doran
5270cf6284 feat(export/zip): handle empty notes for subtree 2025-07-02 22:28:03 +03:00
Elian Doran
4f46d81e1b fix(export/zip): missing note meta for empty file (closes #6146) 2025-07-02 21:59:58 +03:00
Elian Doran
294a2e6fdb feat(export/zip): improve error handling 2025-07-02 21:56:22 +03:00
Elian Doran
b20a8bc90b chore(backend_api): document week note behaviour 2025-07-02 21:41:12 +03:00
Elian Doran
68bdd1336f Merge pull request #6168 from TriliumNext/renovate/node-22.x
chore(deps): update dependency @types/node to v22.16.0
2025-07-02 20:35:02 +03:00
renovate[bot]
e62ccd932d chore(deps): update dependency @types/node to v22.16.0 2025-07-02 13:54:50 +00:00
Elian Doran
d6c188df6e Merge pull request #6170 from TriliumNext/renovate/i18next-25.x 2025-07-02 16:53:00 +03:00
Elian Doran
004000b5d2 Merge pull request #6171 from TriliumNext/renovate/eslint-monorepo 2025-07-02 16:52:25 +03:00
renovate[bot]
633c8a3444 fix(deps): update eslint monorepo to v9.30.1 2025-07-02 08:28:18 +00:00
renovate[bot]
2f59a20b6b fix(deps): update dependency i18next to v25.3.0 2025-07-02 08:27:21 +00:00
Elian Doran
593c435f75 Merge pull request #6172 from TriliumNext/renovate/multer-2.x
chore(deps): update dependency @types/multer to v2
2025-07-02 11:24:18 +03:00
Elian Doran
20ec45be57 Merge pull request #6169 from TriliumNext/renovate/globals-16.x
fix(deps): update dependency globals to v16.3.0
2025-07-02 11:23:17 +03:00
Elian Doran
d2a0e12409 Merge pull request #6167 from TriliumNext/renovate/fullcalendar-monorepo
fix(deps): update fullcalendar monorepo to v6.1.18
2025-07-02 11:22:51 +03:00
Elian Doran
33eebe117b Merge pull request #6166 from TriliumNext/renovate/eslint-linter-browserify-9.x
fix(deps): update dependency eslint-linter-browserify to v9.30.1
2025-07-02 11:22:29 +03:00
Elian Doran
ef0cfc2e7c Merge pull request #6165 from TriliumNext/renovate/dotenv-17.x
chore(deps): update dependency dotenv to v17.0.1
2025-07-02 11:22:07 +03:00
Elian Doran
b6e17ae543 Merge pull request #6164 from TriliumNext/renovate/playwright-monorepo
chore(deps): update dependency @playwright/test to v1.53.2
2025-07-02 11:21:51 +03:00
Elian Doran
8a33e2be89 Merge pull request #6163 from TriliumNext/renovate/anthropic-ai-sdk-0.x
chore(deps): update dependency @anthropic-ai/sdk to v0.55.1
2025-07-02 11:21:36 +03:00
renovate[bot]
5f91097987 chore(deps): update dependency @types/multer to v2 2025-07-02 02:56:29 +00:00
renovate[bot]
0fd4f02951 fix(deps): update dependency globals to v16.3.0 2025-07-02 02:52:17 +00:00
renovate[bot]
106e78ed62 fix(deps): update fullcalendar monorepo to v6.1.18 2025-07-02 02:47:34 +00:00
renovate[bot]
8855868b27 fix(deps): update dependency eslint-linter-browserify to v9.30.1 2025-07-02 02:46:36 +00:00
renovate[bot]
bfc3e8a907 chore(deps): update dependency dotenv to v17.0.1 2025-07-02 02:44:43 +00:00
renovate[bot]
154371e052 chore(deps): update dependency @playwright/test to v1.53.2 2025-07-02 02:43:47 +00:00
renovate[bot]
ab4a4d3d72 chore(deps): update dependency @anthropic-ai/sdk to v0.55.1 2025-07-02 02:42:29 +00:00
Elian Doran
5a4de02db7 Merge pull request #6105 from TriliumNext/renovate/ckeditor-monorepo
chore(deps): update dependency @ckeditor/ckeditor5-package-tools to v4.0.1
2025-07-01 22:22:05 +03:00
renovate[bot]
43cbc8c6e8 chore(deps): update dependency @ckeditor/ckeditor5-package-tools to v4.0.1 2025-07-01 19:09:31 +00:00
Elian Doran
5938aa7b50 Merge pull request #6110 from TriliumNext/renovate/openai-5.x
chore(deps): update dependency openai to v5.8.2
2025-07-01 22:06:06 +03:00
Elian Doran
a49252b2f5 Merge pull request #6121 from TriliumNext/renovate/codemirror
fix(deps): update dependency @codemirror/view to v6.38.0
2025-07-01 22:05:55 +03:00
Elian Doran
0be885d9bf Merge pull request #6123 from TriliumNext/renovate/eslint-linter-browserify-9.x
fix(deps): update dependency eslint-linter-browserify to v9.30.0
2025-07-01 22:05:14 +03:00
renovate[bot]
ae1e8353f2 fix(deps): update dependency eslint-linter-browserify to v9.30.0 2025-07-01 18:50:46 +00:00
renovate[bot]
98fe88581f fix(deps): update dependency @codemirror/view to v6.38.0 2025-07-01 18:49:50 +00:00
renovate[bot]
d66475576f chore(deps): update dependency openai to v5.8.2 2025-07-01 18:48:54 +00:00
Elian Doran
65ff7be776 Merge pull request #6093 from TriliumNext/renovate/vite-7.x
chore(deps): update dependency vite to v7
2025-07-01 21:31:57 +03:00
Elian Doran
190b079494 fix(website): typecheck dependency not well set 2025-07-01 21:30:59 +03:00
renovate[bot]
b020a30bd4 chore(deps): update dependency vite to v7 2025-07-01 18:08:46 +00:00
Elian Doran
81f8453c38 fix(client): type error due to use of intersection 2025-07-01 21:01:54 +03:00
Elian Doran
533e3cf42d Merge pull request #6125 from TriliumNext/renovate/eslint-monorepo
fix(deps): update eslint monorepo to v9.30.0
2025-07-01 20:55:26 +03:00
Elian Doran
69ee73492d Merge pull request #6142 from TriliumNext/renovate/rollup-plugin-webpack-stats-2.x
chore(deps): update dependency rollup-plugin-webpack-stats to v2.1.0
2025-07-01 20:55:16 +03:00
renovate[bot]
4a902d04b2 fix(deps): update eslint monorepo to v9.30.0 2025-07-01 17:18:00 +00:00
renovate[bot]
2e48e316c2 chore(deps): update dependency rollup-plugin-webpack-stats to v2.1.0 2025-07-01 17:16:31 +00:00
Elian Doran
bbe5dddb83 Merge pull request #6131 from TriliumNext/renovate/node-22.x
chore(deps): update dependency @types/node to v22.15.34
2025-07-01 20:14:23 +03:00
Elian Doran
7c943fe4ac chore(view/table): leftover files 2025-07-01 12:10:01 +03:00
Elian Doran
2cbb49681a fix(view/table): most type errors 2025-07-01 12:09:13 +03:00
Elian Doran
84db4ed57c docs(release): fix link 2025-07-01 11:56:05 +03:00
Elian Doran
e155642ce4 Merge remote-tracking branch 'origin/main' into feature/table_view 2025-07-01 11:55:45 +03:00
Elian Doran
87c4df60d3 Merge pull request #6126 from TriliumNext/renovate/major-ckeditor5-config-packages
chore(deps): update ckeditor5 config packages to v11 (major)
2025-07-01 11:45:01 +03:00
Elian Doran
ff412835e4 Merge pull request #6119 from TriliumNext/renovate/webdriverio-monorepo
chore(deps): update dependency webdriverio to v9.16.2
2025-07-01 11:44:39 +03:00
Elian Doran
ad15828157 Merge pull request #6111 from TriliumNext/renovate/svelte-5.x-lockfile
chore(deps): update dependency svelte to v5.34.9
2025-07-01 11:43:34 +03:00
renovate[bot]
b2fc7f934e chore(deps): update dependency @types/node to v22.15.34 2025-07-01 08:43:30 +00:00
Elian Doran
2fac4d91d6 Merge pull request #6112 from TriliumNext/renovate/svelte-check-4.x-lockfile
chore(deps): update dependency svelte-check to v4.2.2
2025-07-01 11:43:22 +03:00
Elian Doran
125cd96354 Merge pull request #6113 from TriliumNext/renovate/typedoc-0.x
chore(deps): update dependency typedoc to v0.28.7
2025-07-01 11:43:03 +03:00
Elian Doran
af02e6b714 Merge pull request #6116 from TriliumNext/renovate/dotenv-16.x-lockfile
chore(deps): update dependency dotenv to v16.6.1
2025-07-01 11:42:55 +03:00
Elian Doran
0c87b25244 Merge pull request #6117 from TriliumNext/renovate/eslint-plugin-svelte-3.x-lockfile
chore(deps): update dependency eslint-plugin-svelte to v3.10.1
2025-07-01 11:42:41 +03:00
Elian Doran
e87ada6e79 Merge pull request #6118 from TriliumNext/renovate/stylelint-16.x-lockfile
chore(deps): update dependency stylelint to v16.21.0
2025-07-01 11:42:33 +03:00
Elian Doran
282c8e58bd Merge pull request #6120 from TriliumNext/renovate/typescript-eslint-monorepo
chore(deps): update typescript-eslint monorepo to v8.35.1
2025-07-01 11:42:17 +03:00
Elian Doran
475b66b115 Merge pull request #6122 from TriliumNext/renovate/better-sqlite3-12.x-lockfile
fix(deps): update dependency better-sqlite3 to v12.2.0
2025-07-01 11:42:02 +03:00
Elian Doran
5bb971e61a Merge pull request #6124 from TriliumNext/renovate/tsx-4.x-lockfile
fix(deps): update dependency tsx to v4.20.3
2025-07-01 11:41:36 +03:00
Elian Doran
ebad9ba723 Merge pull request #6127 from TriliumNext/renovate/dotenv-17.x
chore(deps): update dependency dotenv to v17
2025-07-01 11:41:20 +03:00
Elian Doran
6ece2a839e Merge pull request #6128 from TriliumNext/renovate/marked-16.x
fix(deps): update dependency marked to v16
2025-07-01 11:40:55 +03:00
Elian Doran
8d6527fb75 Merge pull request #6132 from TriliumNext/renovate/ws-8.x
chore(deps): update dependency ws to v8.18.3
2025-07-01 11:40:27 +03:00
Elian Doran
6bfff38182 Merge pull request #6115 from TriliumNext/renovate/sveltejs-kit-2.x-lockfile
chore(deps): update dependency @sveltejs/kit to v2.22.2
2025-07-01 11:39:54 +03:00
Elian Doran
9e446717fa Merge pull request #6114 from TriliumNext/renovate/tailwindcss-monorepo
chore(deps): update tailwindcss monorepo to v4.1.11
2025-07-01 11:39:42 +03:00
Elian Doran
408b48f606 Merge pull request #6133 from TriliumNext/renovate/better-sqlite3-12.x
fix(deps): update dependency better-sqlite3 to v12.2.0
2025-07-01 11:39:32 +03:00
renovate[bot]
8d077ad46d chore(deps): update dependency dotenv to v17 2025-07-01 08:39:18 +00:00
Elian Doran
db72465e0b Merge pull request #6140 from TriliumNext/renovate/mind-elixir-4.x
fix(deps): update dependency mind-elixir to v4.6.2
2025-07-01 11:38:22 +03:00
Elian Doran
ba9f5e1688 Merge pull request #6141 from TriliumNext/renovate/eslint-stylistic-monorepo
chore(deps): update dependency @stylistic/eslint-plugin to v5.1.0
2025-07-01 11:37:57 +03:00
Elian Doran
caf40cd272 Merge pull request #6109 from TriliumNext/renovate/lint-staged-16.x-lockfile
chore(deps): update dependency lint-staged to v16.1.2
2025-07-01 11:37:02 +03:00
Elian Doran
3edccd224a Merge pull request #6107 from TriliumNext/renovate/mime-types-3.x-lockfile
chore(deps): update dependency @types/mime-types to v3.0.1
2025-07-01 11:36:28 +03:00
Elian Doran
f48931a969 Merge pull request #6106 from TriliumNext/renovate/eslint-compat-1.x-lockfile
chore(deps): update dependency @eslint/compat to v1.3.1
2025-07-01 11:36:12 +03:00
Elian Doran
84f23aa997 Merge pull request #6092 from TriliumNext/renovate/electron-37.x
chore(deps): update dependency electron to v37
2025-07-01 11:35:46 +03:00
Elian Doran
1965da6a85 docs(release): mention docker image changing 2025-07-01 10:15:10 +03:00
Elian Doran
57649d47ec fix(release): discussion category name 2025-07-01 10:13:35 +03:00
Elian Doran
089ae04542 chore(release): prepare for v0.96.0 2025-06-30 23:02:31 +03:00
renovate[bot]
441ae3e25b chore(deps): update typescript-eslint monorepo to v8.35.1 2025-06-30 18:35:19 +00:00
Elian Doran
1016f98867 docs(release): v0.96.0 2025-06-30 21:29:48 +03:00
Elian Doran
1f022aea4e chore(rebrand): update GitHub repo in source files 2025-06-30 20:39:29 +03:00
renovate[bot]
7f612711a0 chore(deps): update dependency typedoc to v0.28.7 2025-06-30 04:54:36 +00:00
renovate[bot]
92eb4aa822 chore(deps): update dependency @stylistic/eslint-plugin to v5.1.0 2025-06-30 01:36:17 +00:00
renovate[bot]
08ec522ae7 fix(deps): update dependency mind-elixir to v4.6.2 2025-06-30 01:36:11 +00:00
Elian Doran
c5cc1fcc1e feat(views/table): introduce hiding of columns 2025-06-29 22:26:25 +03:00
Elian Doran
cedf91ea1a chore(views/table): reintroduce column reordering 2025-06-29 16:56:34 +03:00
Elian Doran
51b462f043 chore(views/table): bring back restore state 2025-06-29 16:16:15 +03:00
Elian Doran
727eeb6c74 chore(views/table): bring back persistence 2025-06-29 16:08:27 +03:00
Elian Doran
a114fba062 chore(views/table): set up frozen columns 2025-06-29 15:11:09 +03:00
Elian Doran
cf322b5c2a chore(views/table): back to bootstrap5 theme 2025-06-29 10:09:39 +03:00
renovate[bot]
92116f1671 fix(deps): update dependency better-sqlite3 to v12.2.0 2025-06-29 00:37:40 +00:00
renovate[bot]
bc479248d7 chore(deps): update dependency ws to v8.18.3 2025-06-29 00:35:22 +00:00
Elian Doran
8ee12f2950 chore(views/table): bring back resizing columns 2025-06-28 23:50:54 +03:00
Elian Doran
dcea4c30ef chore(views/table): improve editing for date types 2025-06-28 23:33:52 +03:00
Elian Doran
e7ca56e061 chore(views/table): support more data types 2025-06-28 23:29:31 +03:00
Elian Doran
09b800b9ad chore(views/table): bring back editing attributes 2025-06-28 23:23:29 +03:00
Elian Doran
9a6a8580de chore(views/table): bring back editing title 2025-06-28 23:19:54 +03:00
Elian Doran
a31ac17792 chore(views/table): set row ID as index 2025-06-28 22:49:40 +03:00
Elian Doran
0e27cd0801 feat(views/table): add row number 2025-06-28 22:47:49 +03:00
Elian Doran
bc36676fa1 chore(views/table): disable sorting for note action button 2025-06-28 17:45:11 +03:00
Elian Doran
3d2db23f33 fix(views/table): use a more stable loading mechanism 2025-06-28 17:24:18 +03:00
Elian Doran
56d366a286 feat(views/table): add column to open note 2025-06-28 17:23:42 +03:00
Elian Doran
4a26f30d65 feat(views/table): render note icon 2025-06-28 17:07:11 +03:00
Elian Doran
8e51469de5 chore(views/table): re-enable sorting 2025-06-28 16:56:36 +03:00
Elian Doran
50ebcd552c fix(views/table): error when adding a new column 2025-06-28 16:51:24 +03:00
Elian Doran
ada39cd3c7 fix(views/table): error when adding a new row 2025-06-28 16:48:01 +03:00
Elian Doran
b2d20af51a fix(views/table): refreshing of columns 2025-06-28 16:39:24 +03:00
Elian Doran
f528fa25d1 feat(views/table): switch to bootstrap theme 2025-06-28 12:51:19 +03:00
Elian Doran
e09a7fb6e0 chore(views/table): reintroduce rows 2025-06-28 12:24:40 +03:00
Elian Doran
30f7939616 chore(views/table): reintroduce column definitions 2025-06-28 12:18:24 +03:00
Elian Doran
16b9375b9d chore(views/table): add types 2025-06-28 12:18:17 +03:00
Elian Doran
4ef93569a1 refactor(views/table): start switching to tabulator 2025-06-28 12:00:50 +03:00
renovate[bot]
1ce2aaeaf1 fix(deps): update dependency marked to v16 2025-06-28 02:47:26 +00:00
renovate[bot]
6bfe8dfcf0 chore(deps): update ckeditor5 config packages to v11 2025-06-28 02:45:32 +00:00
renovate[bot]
8d8f4795e2 fix(deps): update dependency tsx to v4.20.3 2025-06-28 02:42:36 +00:00
renovate[bot]
6f6d06377b fix(deps): update dependency better-sqlite3 to v12.1.1 2025-06-28 02:40:39 +00:00
renovate[bot]
f22823fcf6 chore(deps): update dependency webdriverio to v9.16.2 2025-06-28 02:37:40 +00:00
renovate[bot]
93ce57ee1a chore(deps): update dependency stylelint to v16.21.0 2025-06-28 02:36:39 +00:00
renovate[bot]
97dd747252 chore(deps): update dependency eslint-plugin-svelte to v3.10.1 2025-06-28 02:35:40 +00:00
renovate[bot]
bc8c136458 chore(deps): update dependency dotenv to v16.6.1 2025-06-28 02:34:42 +00:00
renovate[bot]
0774252dc1 chore(deps): update dependency @sveltejs/kit to v2.22.2 2025-06-28 02:33:38 +00:00
renovate[bot]
ae30ae4be6 chore(deps): update tailwindcss monorepo to v4.1.11 2025-06-28 02:32:27 +00:00
renovate[bot]
a2b8935763 chore(deps): update dependency svelte-check to v4.2.2 2025-06-28 02:31:19 +00:00
renovate[bot]
703efb74d3 chore(deps): update dependency svelte to v5.34.8 2025-06-28 02:30:18 +00:00
renovate[bot]
b2c6062e9a chore(deps): update dependency lint-staged to v16.1.2 2025-06-28 02:28:22 +00:00
renovate[bot]
c9e7e461b1 chore(deps): update dependency @types/mime-types to v3.0.1 2025-06-28 02:26:47 +00:00
renovate[bot]
6aaddfc5a4 chore(deps): update dependency @eslint/compat to v1.3.1 2025-06-28 02:25:51 +00:00
Elian Doran
7f2c41940d feat(views/table): add basic row creation mechanism 2025-06-28 00:07:14 +03:00
Elian Doran
d31ba39a91 feat(views/table): basic dark mode support 2025-06-27 23:40:00 +03:00
Elian Doran
c058673e33 feat(views/table): smooth column update 2025-06-27 23:01:15 +03:00
Elian Doran
44ce6a5169 feat(views/table): refresh on attribute change 2025-06-27 22:50:27 +03:00
Elian Doran
0fb0be4ffc feat(views/table): actually add attributes 2025-06-27 22:43:29 +03:00
Kieran
e70ba00929 docs(map): document relation filtering 2025-06-27 20:25:09 +01:00
Elian Doran
fe1dbb4cbf feat(views/table): display a dialog to add a new column 2025-06-27 22:19:09 +03:00
Kieran
31df2341c3 feat(map): add mapIncludeRelation and mapExcludeRelation to builtin_attributes 2025-06-27 20:18:28 +01:00
Kieran
9d99da14e1 feat(map): add mapIncludeRelation and mapExcludeRelation to include only or exclude specific relation types 2025-06-27 20:15:59 +01:00
Elian Doran
f8e10f36db refactor(note_list): use object for constructor arg 2025-06-27 21:51:38 +03:00
Elian Doran
bb0f384a39 feat(views/table): disable drag if sorted 2025-06-27 20:30:36 +03:00
Elian Doran
6a0b24f032 chore(views/table): remove logs 2025-06-27 20:08:41 +03:00
Elian Doran
80d5536503 feat(views/table): basic drag support 2025-06-27 19:53:40 +03:00
Elian Doran
9dcd79bd94 feat(views/table): add debouncing 2025-06-27 17:58:25 +03:00
Elian Doran
c5020b8884 refactor(views/table): move table view into its own folder 2025-06-27 17:44:29 +03:00
Elian Doran
0b74de275c refactor(views/table): integrate parser into data 2025-06-27 17:43:19 +03:00
Elian Doran
e66aef17df refactor(views/table): merge storage into table view 2025-06-27 17:40:56 +03:00
Elian Doran
19eff5e6d6 refactor(views/table): merge renderer into table view 2025-06-27 17:39:57 +03:00
Elian Doran
88b4fc73de chore(views/table): remove placeholder text 2025-06-27 17:22:47 +03:00
Elian Doran
70694542eb feat(views/table): allow in search 2025-06-27 17:18:52 +03:00
Elian Doran
360e5e3102 Merge remote-tracking branch 'origin/main' into feature/table_view 2025-06-27 17:08:23 +03:00
Elian Doran
06b507fdc5 Merge pull request #6085 from TriliumNext/renovate/ckeditor-monorepo
fix(deps): update ckeditor monorepo
2025-06-27 16:00:17 +03:00
Elian Doran
256ffe39f2 fix(server): saving revision of note with empty title not supported (closes #6103) 2025-06-27 14:22:08 +03:00
renovate[bot]
6e89a232e6 chore(deps): update dependency electron to v37 2025-06-27 06:48:15 +00:00
Elian Doran
45a3fb15e6 Merge pull request #6101 from TriliumNext/renovate/electron-36.x
chore(deps): update dependency electron to v36.6.0
2025-06-27 09:45:39 +03:00
renovate[bot]
4139a401e6 chore(deps): update dependency electron to v36.6.0 2025-06-27 06:30:28 +00:00
Elian Doran
4d617ccdb3 Merge pull request #6099 from TriliumNext/renovate/pnpm-10.x
chore(deps): update pnpm to v10.12.4
2025-06-27 09:28:51 +03:00
Elian Doran
57039ae8f2 Merge pull request #6102 from TriliumNext/renovate/openai-5.x
chore(deps): update dependency openai to v5.8.1
2025-06-27 09:28:26 +03:00
Elian Doran
9a4dcda985 Merge pull request #6100 from TriliumNext/renovate/dotenv-16.x
chore(deps): update dependency dotenv to v16.6.0
2025-06-27 09:27:59 +03:00
renovate[bot]
c13ae40ea4 chore(deps): update dependency openai to v5.8.1 2025-06-27 01:57:11 +00:00
renovate[bot]
0b963db405 chore(deps): update dependency dotenv to v16.6.0 2025-06-27 01:53:59 +00:00
renovate[bot]
78b946b208 chore(deps): update pnpm to v10.12.4 2025-06-27 01:51:41 +00:00
JYC333
4e8ddef915 Merge branch 'main' into renovate/ckeditor-monorepo 2025-06-26 23:17:52 +02:00
Elian Doran
0aa08cd297 Merge pull request #6091 from TriliumNext/renovate/node-22.x
chore(deps): update node.js to v22.17.0
2025-06-26 22:10:39 +03:00
Elian Doran
a89ce5d931 chore(rebrand): adjust artifact names 2025-06-26 20:18:31 +03:00
Elian Doran
fe3350f39f feat(server/script): enable a few dayjs plugins (closes #6080) 2025-06-26 20:13:01 +03:00
Elian Doran
f32f9d4326 test(server/script): dayjs is available 2025-06-26 18:34:00 +03:00
renovate[bot]
2ed24e8f9c fix(deps): update ckeditor monorepo 2025-06-26 08:48:14 +00:00
Elian Doran
537c282156 chore(renovate): mark premium features of ckeditor as group 2025-06-26 11:45:31 +03:00
renovate[bot]
61f253787a chore(deps): update node.js to v22.17.0 2025-06-26 06:52:50 +00:00
Elian Doran
ddad800771 Merge pull request #6090 from TriliumNext/renovate/eslint-monorepo
chore(deps): update eslint monorepo to v9.29.0
2025-06-26 09:48:47 +03:00
Elian Doran
69c24ef806 Merge pull request #6089 from TriliumNext/renovate/vite-plugin-static-copy-3.x
chore(deps): update dependency vite-plugin-static-copy to v3.1.0
2025-06-26 09:48:32 +03:00
Elian Doran
df7fe2bf13 Merge pull request #6088 from TriliumNext/renovate/anthropic-ai-sdk-0.x
chore(deps): update dependency @anthropic-ai/sdk to v0.55.0
2025-06-26 09:47:45 +03:00
Elian Doran
c47d3514be Merge pull request #6086 from TriliumNext/renovate/better-sqlite3-12.x
fix(deps): update dependency better-sqlite3 to v12.1.1
2025-06-26 09:47:25 +03:00
Elian Doran
2b979f46ab Merge pull request #6084 from TriliumNext/renovate/vitest-monorepo
chore(deps): update vitest monorepo to v3.2.4
2025-06-26 09:45:36 +03:00
Elian Doran
edc47eba05 Merge pull request #6083 from TriliumNext/renovate/pnpm-10.x
chore(deps): update pnpm to v10.12.3
2025-06-26 09:44:49 +03:00
Elian Doran
f3b46d6bc7 Merge pull request #6082 from TriliumNext/renovate/leaflet-1.x
chore(deps): update dependency @types/leaflet to v1.9.19
2025-06-26 09:44:26 +03:00
renovate[bot]
69d6d6a4fd chore(deps): update eslint monorepo to v9.29.0 2025-06-26 01:24:05 +00:00
renovate[bot]
5916b7d2a3 chore(deps): update dependency vite-plugin-static-copy to v3.1.0 2025-06-26 01:23:00 +00:00
renovate[bot]
fbb2c67edb chore(deps): update dependency @anthropic-ai/sdk to v0.55.0 2025-06-26 01:21:27 +00:00
renovate[bot]
7e1712712e fix(deps): update dependency better-sqlite3 to v12.1.1 2025-06-26 01:20:15 +00:00
renovate[bot]
aa846e9703 chore(deps): update vitest monorepo to v3.2.4 2025-06-26 01:18:54 +00:00
renovate[bot]
6ed9ec0851 chore(deps): update pnpm to v10.12.3 2025-06-26 01:18:05 +00:00
renovate[bot]
3a0a79119d chore(deps): update dependency @types/leaflet to v1.9.19 2025-06-26 01:14:26 +00:00
Elian Doran
ecd3b7039f feat(book/table): add template 2025-06-25 19:31:25 +03:00
Elian Doran
4a22e3d2d4 feat(book/table): hide promoted attributes 2025-06-25 19:25:01 +03:00
Elian Doran
dcb4ebe5d9 feat(book/table): display even if empty 2025-06-25 18:31:45 +03:00
Elian Doran
dd379bf18d refactor(book/table): fix some lack of generics 2025-06-25 18:30:44 +03:00
Elian Doran
c9b556160f feat(book/table): support changing note title 2025-06-25 17:56:47 +03:00
Elian Doran
168e224d3e refactor(book/table): make clear what kind of attribute is being changed 2025-06-25 17:54:00 +03:00
Elian Doran
9e57c14130 feat(attachments): add pretty formatting to JSON 2025-06-25 17:45:11 +03:00
Elian Doran
9c137a1c48 feat(book/table): display attachment JSON 2025-06-25 17:43:58 +03:00
Elian Doran
ccb9b7e5fb feat(book/table): store hidden columns 2025-06-25 16:18:34 +03:00
Elian Doran
c7b16cd043 feat(book/table): allow show/hide columns 2025-06-25 13:52:53 +03:00
Elian Doran
7e20e41521 feat(book/table): allow editing cell values 2025-06-25 13:06:38 +03:00
Elian Doran
66761a69d3 refactor(book/table): clean up 2025-06-25 12:10:08 +03:00
Elian Doran
fb32d26479 feat(book/table): support boolean type 2025-06-25 12:05:10 +03:00
Elian Doran
b6398fdb5d refactor(book/table): extract gathering definitions 2025-06-25 12:03:17 +03:00
Elian Doran
d9443527ee feat(book/table): support date type 2025-06-25 11:56:30 +03:00
Elian Doran
7c175da9f1 chore(book/table): ignore multi attributes 2025-06-25 11:45:46 +03:00
Elian Doran
05aa087851 feat(book/table): support basic text columns 2025-06-25 11:23:34 +03:00
Elian Doran
592e968f9f feat(book/table): display note titles 2025-06-25 11:06:49 +03:00
Elian Doran
894a26cc67 feat(book/table): set up sample grid 2025-06-25 10:49:33 +03:00
Elian Doran
1b5dd4638d chore(book/table): install ag-grid 2025-06-25 10:40:11 +03:00
Elian Doran
a19186c508 feat(book/table): set full height 2025-06-25 10:40:04 +03:00
Elian Doran
5450bdeae9 feat(book/table): hide no children warning 2025-06-25 10:34:03 +03:00
Elian Doran
fcd71957ff feat(book/table): create new view type 2025-06-25 10:31:41 +03:00
Elian Doran
1ff7228ca5 feat(scripts): add script to port discussions 2025-06-24 23:18:34 +03:00
Elian Doran
f0f79b65e2 Merge pull request #5860 from TriliumNext/renovate/openai-5.x
chore(deps): update dependency openai to v5.7.0
2025-06-24 09:06:32 +03:00
Elian Doran
63610fd579 chore(deps): sync package lock 2025-06-24 08:54:09 +03:00
Elian Doran
eab84bd34e Merge branch 'main' into renovate/openai-5.x 2025-06-24 08:52:59 +03:00
Elian Doran
72f4c40a8a Merge pull request #5862 from TriliumNext/renovate/better-sqlite3-12.x
fix(deps): update dependency better-sqlite3 to v12.1.0
2025-06-24 08:52:00 +03:00
Elian Doran
482356206b chore(deps): remove override 2025-06-24 08:51:41 +03:00
Elian Doran
5aa09fd881 Merge pull request #5861 from TriliumNext/renovate/typescript-eslint-monorepo
chore(deps): update typescript-eslint monorepo to v8.35.0
2025-06-24 08:50:14 +03:00
renovate[bot]
81f50c46ed fix(deps): update dependency better-sqlite3 to v12.1.0 2025-06-24 02:10:12 +00:00
renovate[bot]
938dfe7f38 chore(deps): update typescript-eslint monorepo to v8.35.0 2025-06-24 02:08:32 +00:00
renovate[bot]
ea71439f27 chore(deps): update dependency openai to v5.7.0 2025-06-24 02:04:04 +00:00
Elian Doran
9dc157b970 chore(options): use translations 2025-06-23 23:30:13 +03:00
Elian Doran
b7f5c0e07a feat(mention): disable auto-completion 2025-06-23 23:20:51 +03:00
Elian Doran
3988bb5321 feat(emoji): disable auto-completion only 2025-06-23 22:40:57 +03:00
Elian Doran
ba94616b87 feat(emoji): add an option to disable them (closes #5852) 2025-06-23 22:10:41 +03:00
Elian Doran
1ac086b88e fix(release): build on ubuntu-22.04 for compatibility 2025-06-23 15:33:37 +03:00
Elian Doran
3b4efef4f0 Merge pull request #5850 from TriliumNext/renovate/pnpm-10.x
chore(deps): update pnpm to v10.12.2
2025-06-23 14:08:43 +03:00
Elian Doran
9dc0807f78 Merge pull request #5851 from TriliumNext/renovate/major-eslint-stylistic-monorepo
chore(deps): update dependency @stylistic/eslint-plugin to v5
2025-06-23 14:08:04 +03:00
renovate[bot]
22783662c5 chore(deps): update dependency @stylistic/eslint-plugin to v5 2025-06-23 09:56:52 +00:00
renovate[bot]
64086592ef chore(deps): update pnpm to v10.12.2 2025-06-23 09:50:30 +00:00
Elian Doran
2bebed1b0f fix(desktop): share theme not loaded 2025-06-23 12:17:47 +03:00
Elian Doran
2262d300f7 e2e(desktop): sharing 2025-06-23 08:43:05 +03:00
Elian Doran
dba98d6fc1 test(desktop): test onboarding 2025-06-23 08:43:04 +03:00
Elian Doran
d8b85aad7c chore(rebrand): change product name 2025-06-23 08:43:04 +03:00
Elian Doran
5a3503c577 Merge pull request #5840 from TriliumNext/renovate/express-rate-limit-7.x
chore(deps): update dependency express-rate-limit to v7.5.1
2025-06-22 14:29:06 +03:00
Elian Doran
18c96cd2bc Merge branch 'main' into renovate/express-rate-limit-7.x 2025-06-22 14:12:21 +03:00
Elian Doran
b1bb1ed9af Merge pull request #5841 from TriliumNext/renovate/mermaid-js-layout-elk-0.x
fix(deps): update dependency @mermaid-js/layout-elk to v0.1.8
2025-06-22 14:11:44 +03:00
renovate[bot]
bc1ea98827 fix(deps): update dependency @mermaid-js/layout-elk to v0.1.8 2025-06-22 11:11:20 +00:00
Elian Doran
b984d612fd Merge pull request #5842 from TriliumNext/renovate/openai-5.x
chore(deps): update dependency openai to v5.6.0
2025-06-22 14:10:20 +03:00
Elian Doran
f53eecbf88 Merge pull request #5843 from TriliumNext/renovate/mermaid-11.x
fix(deps): update dependency mermaid to v11.7.0
2025-06-22 14:08:50 +03:00
Elian Doran
1a2c2dbfb8 Merge pull request #5844 from TriliumNext/renovate/better-sqlite3-12.x
fix(deps): update dependency better-sqlite3 to v12
2025-06-22 14:05:10 +03:00
renovate[bot]
78a0637283 fix(deps): update dependency better-sqlite3 to v12 2025-06-22 08:23:25 +00:00
renovate[bot]
e01858c86b fix(deps): update dependency mermaid to v11.7.0 2025-06-22 08:21:46 +00:00
renovate[bot]
ee080638be chore(deps): update dependency openai to v5.6.0 2025-06-22 08:20:13 +00:00
renovate[bot]
6db7ef415d chore(deps): update dependency express-rate-limit to v7.5.1 2025-06-22 08:15:35 +00:00
Elian Doran
cf171ff0b1 chore(ci): disable RelativeCI until project switch 2025-06-22 10:15:26 +03:00
Elian Doran
fdddc29092 fix(ci): don't run failing electron-based tests 2025-06-22 09:31:44 +03:00
Elian Doran
d6545e1280 Merge branch 'main' of https://github.com/TriliumNext/trilium 2025-06-22 09:17:57 +03:00
Elian Doran
759fe04e37 fix(docker): repository name 2025-06-22 09:17:50 +03:00
Elian Doran
e0c5f15480 Merge remote-tracking branch 'next/develop' 2025-06-21 23:21:48 +03:00
Elian Doran
f529cfd928 chore(i18n): update Spanish translation (#2371) 2025-06-21 23:18:28 +03:00
Elian Doran
2a1a099dc9 feat(scripts): add script used to migrate releases 2025-06-21 22:18:09 +03:00
hasecilu
26d0ba04ab chore(i18n): update Spanish translation 2025-06-21 11:19:57 -06:00
hasecilu
f85ef444f4 fix(script): paths on translation script 2025-06-21 11:19:55 -06:00
Elian Doran
87aa4422c0 chore(rebrand): change references from develop to main 2025-06-21 17:52:47 +03:00
Elian Doran
f497b71d37 chore(rebrand): change references from master to main 2025-06-21 17:51:34 +03:00
Elian Doran
24ba17b3f3 docs(readme): fix leftover merge marker 2025-06-21 17:24:06 +03:00
Elian Doran
e8cbce855e Merge remote-tracking branch 'old/develop' 2025-06-21 17:22:40 +03:00
Elian Doran
f97bd77117 Update README.md 2025-06-21 17:11:25 +03:00
Elian Doran
962066fd60 chore(scripts): add script used to port issues 2025-06-21 16:38:22 +03:00
Elian Doran
ff917e93c9 e2e(desktop): fix process leak 2025-06-21 14:28:57 +03:00
Elian Doran
a7091779b7 e2e(desktop): create empty project 2025-06-21 14:23:47 +03:00
Elian Doran
520b862551 Revert "feat(ci): experiment with building Windows on same runner"
This reverts commit ce305f0f45.
2025-06-21 14:18:41 +03:00
Elian Doran
5fbd34c7c1 Revert "chore(forge): add an arbitrary wait to see if it solves some CI errors"
This reverts commit 4f6729857b.
2025-06-21 14:18:36 +03:00
Elian Doran
c827b20e26 Revert "chore(forge): add a pre-make wait as well"
This reverts commit a150047432.
2025-06-21 14:18:31 +03:00
Elian Doran
a150047432 chore(forge): add a pre-make wait as well 2025-06-21 13:40:47 +03:00
Elian Doran
4f6729857b chore(forge): add an arbitrary wait to see if it solves some CI errors 2025-06-21 13:19:35 +03:00
Elian Doran
ce305f0f45 feat(ci): experiment with building Windows on same runner 2025-06-21 10:57:45 +03:00
Elian Doran
3a50ffede1 refactor(forge): add types to config 2025-06-21 10:46:12 +03:00
Elian Doran
41e88614d7 docs(guide): improve and update supported syntax for Markdown import 2025-06-21 09:49:26 +03:00
Elian Doran
002c567ae9 feat(ci): display trace if playwright fails in docker 2025-06-21 09:26:05 +03:00
Elian Doran
a9c07af402 fix(client): failing with duplicate modules 2025-06-21 09:00:07 +03:00
Elian Doran
3048c39877 Revert "chore(env): remove 4GB override"
This reverts commit 3280123414.
2025-06-21 01:20:41 +03:00
Elian Doran
a95dc14d24 test(import/zip): test silverbullet import 2025-06-21 01:09:03 +03:00
Elian Doran
24c82fa7b6 fix(import/zip): regression in normal import 2025-06-20 22:13:36 +03:00
Elian Doran
02a0624e8f feat(import/zip): support image with absolute path 2025-06-20 21:59:11 +03:00
Elian Doran
e6e276a0cf feat(import/markdown): support image via wikilink 2025-06-20 21:40:23 +03:00
Elian Doran
8d90231f76 fix(import/markdown): support wikilinks in other elements other than paragraphs 2025-06-20 21:00:39 +03:00
Elian Doran
4a40b22c9a feat(import/zip): support root-relative paths 2025-06-20 20:56:25 +03:00
Elian Doran
79b3b92ec9 chore(client): skip dynamic imports in cyclic check 2025-06-20 18:32:32 +03:00
Elian Doran
ae1a4fbbf6 fix(client): cyclic dependency server <-> ws 2025-06-20 18:32:20 +03:00
Elian Doran
3190aa6fe6 feat(import/markdown): start parsing wikilinks 2025-06-20 18:28:08 +03:00
Elian Doran
1c3cd9e7ca chore(deps): update vitest monorepo to v3.2.4 (#2364) 2025-06-20 15:52:42 +03:00
Elian Doran
c61713333d Merge remote-tracking branch 'origin/develop' into renovate/vitest-monorepo 2025-06-20 15:35:27 +03:00
Elian Doran
a861defbee feat(server): lint for trailing slashes in sync URL and extra slashes… (#2345) 2025-06-20 10:55:46 +03:00
Elian Doran
ea0b570910 chore(deps): update dependency @playwright/test to v1.53.1 (#2362) 2025-06-20 09:51:22 +03:00
renovate[bot]
8d46ab3806 chore(deps): update dependency @playwright/test to v1.53.1 2025-06-20 06:28:12 +00:00
Elian Doran
058b3f8241 chore(deps): update nx monorepo to v21.2.1 (#2363) 2025-06-20 08:27:22 +03:00
Elian Doran
57a688b6b6 fix(deps): update codemirror to v6.0.2 (#2365) 2025-06-20 08:26:16 +03:00
Elian Doran
ad18d853e2 chore(deps): update dependency electron to v36.5.0 (#2366) 2025-06-20 08:25:12 +03:00
renovate[bot]
8f5be936a7 chore(deps): update dependency electron to v36.5.0 2025-06-20 02:47:20 +00:00
renovate[bot]
f2c02f869e fix(deps): update codemirror to v6.0.2 2025-06-20 02:46:24 +00:00
renovate[bot]
cf28777119 chore(deps): update nx monorepo to v21.2.1 2025-06-20 02:43:32 +00:00
Elian Doran
cca8504796 refactor(client): circular dep in utils 2025-06-19 22:44:02 +03:00
Elian Doran
09391a92e5 refactor(client): circular dep: toast <-> ws 2025-06-19 22:29:44 +03:00
Elian Doran
50db8ef9c3 refactor(client): circular dependency in fnote 2025-06-19 22:23:17 +03:00
Elian Doran
8ab21f3bab chore(client): add tool to view circular deps 2025-06-19 22:03:01 +03:00
Elian Doran
efdf79feaa refactor(client): circular dependency causing test failure 2025-06-19 22:01:01 +03:00
Elian Doran
9418055b69 chore(test): fix imports 2025-06-19 21:30:42 +03:00
Elian Doran
5070633257 refactor(client): remove unnecessary files 2025-06-19 21:30:26 +03:00
Elian Doran
764917562e chore(test): fix set up 2025-06-19 21:30:10 +03:00
Elian Doran
54290a1373 chore(tsconfig): remove src for forge config 2025-06-19 21:01:23 +03:00
Elian Doran
0325bee425 feat(ckeditor): fallback to GPL if license key fails 2025-06-19 19:38:10 +03:00
Elian Doran
e280968271 feat(ckeditor): allow use of GPL license 2025-06-19 18:55:02 +03:00
Elian Doran
b809137c93 refactor(text): move license key management to config 2025-06-19 18:47:41 +03:00
Elian Doran
248f6d6a7d refactor(forge): switch to TypeScript 2025-06-19 15:45:39 +03:00
Elian Doran
0744a85421 feat(flake): handle StartupWMClass 2025-06-19 15:34:09 +03:00
Elian Doran
e5a6f53f98 Revert "feat(flake); set up overlay"
This reverts commit 751de1d43c.
2025-06-19 12:55:04 +03:00
Elian Doran
751de1d43c feat(flake); set up overlay 2025-06-19 12:49:26 +03:00
perf3ct
2704b1546b feat(server): fix lint type errors for normalizing server URLs 2025-06-18 21:07:12 +00:00
perf3ct
acd68817e9 feat(server): fix lint type errors for normalizing server URLs 2025-06-18 20:46:11 +00:00
Elian Doran
8b841c5aa7 feat(autocomplete): support specifying path when creating a new note (#2342) 2025-06-18 23:14:46 +03:00
Elian Doran
a37af29c6c fix(client): link to API documentation (#2356) 2025-06-18 23:10:00 +03:00
Elian Doran
ade0d4bb1a fix(website): update README.md instructions (#2357) 2025-06-18 23:08:56 +03:00
Arne Keller
d79c491777 fix(website): update README.md instructions 2025-06-18 19:08:24 +02:00
FliegendeWurst
f9cf542e66 fix(client): link to API documentation
Fixes https://github.com/TriliumNext/Notes/issues/1779
2025-06-18 17:58:29 +02:00
Elian Doran
609ed6274e fix(code): respect user font selection 2025-06-18 17:42:03 +03:00
Elian Doran
7faaefee20 feat(help): display contextual button text snippets 2025-06-18 15:35:56 +03:00
Elian Doran
578310a1c0 test(ckeditor5): add check for translation override 2025-06-18 14:44:56 +03:00
Elian Doran
93f544a221 feat(text-snippets): rewrite CKEditor translations 2025-06-18 13:13:59 +03:00
Elian Doran
9c80ab22af chore(client): use production ckeditor key for dev as well 2025-06-18 11:06:57 +03:00
Elian Doran
7decbc34c7 chore(deps): update dependency @types/node to v22.15.32 (#2347) 2025-06-18 11:02:07 +03:00
Elian Doran
e606276f19 chore(deps): update typescript-eslint monorepo to v8.34.1 (#2348) 2025-06-18 11:01:42 +03:00
SiriusXT
a78e4d7a58 chore(i18n): update path selection prompt 2025-06-18 14:28:43 +08:00
renovate[bot]
426c9a377a chore(deps): update typescript-eslint monorepo to v8.34.1 2025-06-18 06:16:35 +00:00
renovate[bot]
d2a3ae2a6f chore(deps): update dependency @types/node to v22.15.32 2025-06-18 06:15:35 +00:00
renovate[bot]
fbd6b7d22b chore(deps): update vitest monorepo to v3.2.4 2025-06-18 06:11:31 +00:00
Elian Doran
a42375931f chore(deps): update vitest monorepo to v3.2.4 (#2349) 2025-06-18 09:08:41 +03:00
Elian Doran
d894bff2a0 fix(deps): update dependency bootstrap to v5.3.7 (#2350) 2025-06-18 09:07:48 +03:00
Elian Doran
4515ed600c fix(deps): update dependency mind-elixir to v4.6.1 (#2351) 2025-06-18 09:07:10 +03:00
Elian Doran
4df3cdd975 chore(deps): update dependency openai to v5.5.1 (#2352) 2025-06-18 09:06:31 +03:00
SiriusXT
5fc0a0460d Merge branch 'develop' into note-create 2025-06-18 11:21:32 +08:00
renovate[bot]
74851a859b chore(deps): update dependency openai to v5.5.1 2025-06-18 02:56:07 +00:00
renovate[bot]
9bb94513ca fix(deps): update dependency mind-elixir to v4.6.1 2025-06-18 02:55:10 +00:00
renovate[bot]
bb74aa7976 fix(deps): update dependency bootstrap to v5.3.7 2025-06-18 02:54:19 +00:00
renovate[bot]
12318b38ee chore(deps): update vitest monorepo to v3.2.4 2025-06-18 02:53:25 +00:00
Jon Fuller
bb70c2a3fa Merge branch 'develop' into fix/lint-server-url 2025-06-17 16:00:36 -07:00
perf3ct
b47180a219 feat(server): create unit tests for normalizing server URL, and fix logic based on feedback 2025-06-17 21:32:27 +00:00
Elian Doran
4eb64357a1 chore(website): add macos screenshots 2025-06-17 23:39:25 +03:00
perf3ct
0fe89115d1 feat(server): lint for trailing slashes in sync URL and extra slashes in customRequestHandler 2025-06-17 19:37:40 +00:00
Elian Doran
330932adde fix(website): script errors due to double body 2025-06-17 22:08:34 +03:00
Elian Doran
b9daca5b9c website: favicon / dark mode / more content (#2343) 2025-06-17 21:38:24 +03:00
Elian Doran
c6c48d84ab flake: fix Electron version, fix Wayland support, fix source filter (#2329) 2025-06-17 21:33:45 +03:00
Elian Doran
2c87721953 docs(guide): premium features 2025-06-17 21:01:01 +03:00
Elian Doran
45a446d0f6 chore(text): set up production key 2025-06-17 20:55:38 +03:00
Elian Doran
40086434ec refactor(subtree): duplicate bx in icon name 2025-06-17 20:55:38 +03:00
Elian Doran
bde3f0a55c fix(nx): revert infinite watching causing severe issues with the daemon
See https://github.com/TriliumNext/Notes/pull/2285#issuecomment-2981118813
2025-06-17 20:55:37 +03:00
Elian Doran
9adae105e2 docs: regex search / Nix flake / restore dev docs (#2341) 2025-06-17 20:53:43 +03:00
Elian Doran
60dbf9dd67 Text snippets (#2344) 2025-06-17 19:29:53 +03:00
Elian Doran
374309a40c fix(templates): description displayed on separate lines 2025-06-17 19:21:21 +03:00
Elian Doran
dcccb5ad30 feat(builtin_templates): add icon for text snippets 2025-06-17 19:21:21 +03:00
Elian Doran
47eaee8b70 feat(builtin_templates): add description field for text snippets 2025-06-17 19:21:21 +03:00
Elian Doran
9687a9d8ff refactor(note_types): separate user templates into own method 2025-06-17 19:21:21 +03:00
Elian Doran
fa11295693 feat(templates): add support for built-in templates 2025-06-17 19:21:21 +03:00
Elian Doran
7e399cc10c feat(text-snippets): support description 2025-06-17 19:21:20 +03:00
Elian Doran
59e0857bb5 feat(text-snippets): add default icon for templates 2025-06-17 19:21:20 +03:00
Elian Doran
4f9bd970af feat(text-snippets): better reaction to removing templates 2025-06-17 19:21:20 +03:00
Elian Doran
3e40a35c19 feat(text-snippets): reload when a new template is added 2025-06-17 19:21:20 +03:00
Elian Doran
97799bfacc feat(text-snippets): handle renames by refreshing the editor 2025-06-17 19:21:20 +03:00
Elian Doran
fb1a74a96d feat(text-snippets): debounce updates to avoid duplication 2025-06-17 19:21:20 +03:00
Elian Doran
9f82e0a6d6 refactor(text-snippets): use a map instead of an object 2025-06-17 19:21:20 +03:00
Elian Doran
421e125882 feat(text-snippets): handle content changes 2025-06-17 19:21:20 +03:00
Elian Doran
17ede00fb2 feat(text-snippets): reload editors when templates change 2025-06-17 19:21:20 +03:00
Elian Doran
502638bae7 feat(text-snippets): add toolbar entry 2025-06-17 19:21:20 +03:00
Elian Doran
af8a905150 feat(text-snippets): basic integration 2025-06-17 19:21:20 +03:00
FliegendeWurst
6c2a228267 fix(website): feature block descriptions 2025-06-17 18:10:56 +02:00
FliegendeWurst
f9ecfd1ad0 feat(website): dark mode 2025-06-17 18:10:56 +02:00
FliegendeWurst
2c3cbcb1f9 website: refactor feature blocks, add more 2025-06-17 18:10:56 +02:00
FliegendeWurst
d1583ca091 fix(website): normal link styling 2025-06-17 18:10:56 +02:00
FliegendeWurst
3c21d97a8a fix(website): page titles 2025-06-17 18:10:56 +02:00
FliegendeWurst
8f7468cd60 website: link to distribution packages 2025-06-17 18:10:56 +02:00
FliegendeWurst
6668e639d5 fix(website): proper favicon 2025-06-17 18:10:56 +02:00
SiriusXT
bcc689cae3 Merge branch 'develop' into note-create 2025-06-17 21:18:06 +08:00
SiriusXT
20173d544b feat(autocomple): support specifying path when creating a new note 2025-06-17 20:41:23 +08:00
Arne Keller
e90d4cf86f docs: add section on Nix flake 2025-06-17 13:05:20 +02:00
Arne Keller
1de02b85b3 chore(docs): restore dev docs 2025-06-17 13:05:20 +02:00
FliegendeWurst
dab43d9372 docs: mention escaped backslashes in regex search 2025-06-17 13:05:20 +02:00
Elian Doran
3b579a3b7b Slash commands (#2336) 2025-06-17 12:49:26 +03:00
Elian Doran
a4a5e0bdf0 refactor(ckeditor5): class name 2025-06-16 23:52:16 +03:00
Elian Doran
9cb227c1ca fix(context menu): not auto-closing on mobile (#2331) 2025-06-16 23:49:41 +03:00
Elian Doran
c4c7321f60 fix(slash): layout on legacy theme 2025-06-16 23:06:34 +03:00
Elian Doran
cce27900b8 feat(slash): add a few aliases 2025-06-16 22:57:47 +03:00
Elian Doran
32f4d7be39 fix(slash): adding links not focusing box 2025-06-16 22:52:54 +03:00
Elian Doran
bbeb4e25f3 refactor(ckeditor): use vite environment variables for inspector 2025-06-16 22:01:05 +03:00
Elian Doran
88f78f3e32 feat(slash): better icons for admonitions 2025-06-16 21:42:31 +03:00
Adorian Doran
36581ba882 style(next)/dialogs/note type chooser: stop highlighting the default item 2025-06-16 21:30:34 +03:00
Elian Doran
1a64b3ce8e feat(slash): alignment 2025-06-16 21:21:42 +03:00
Elian Doran
32ee75ea43 feat(slash): markdown import 2025-06-16 21:14:46 +03:00
Elian Doran
06ebe0a9b3 feat(slash): include page break 2025-06-16 21:11:03 +03:00
Elian Doran
6069518749 feat(slash): include note 2025-06-16 20:58:42 +03:00
Elian Doran
c09a9aa7d3 feat(slash): insert math 2025-06-16 20:55:02 +03:00
Elian Doran
13afcb8a49 feat(slash): insert internal link 2025-06-16 20:48:01 +03:00
Elian Doran
9bfff03cff feat(slash): insert date/time 2025-06-16 20:42:55 +03:00
Adorian Doran
8780debc90 style(next)/dialogs/note type chooser: improve appearance 2025-06-16 20:31:57 +03:00
Elian Doran
6f386f50ff chore(slash): change title of admonitions 2025-06-16 20:22:37 +03:00
Elian Doran
43eff08004 feat(slash): insert footnote command 2025-06-16 20:21:54 +03:00
Elian Doran
3a0b616800 feat(slash): admonition types 2025-06-16 20:15:44 +03:00
Adorian Doran
cb65d02dc6 style(next)/quick search: avoid text shadow for the focused search result items 2025-06-16 20:11:38 +03:00
Adorian Doran
bef485c676 style: switch to the new link style 2025-06-16 20:01:41 +03:00
Adorian Doran
9e4d350848 style(next)/launcher calendar: fix the hover state for the month field 2025-06-16 19:46:20 +03:00
Adorian Doran
ccc7a8010e style(next)/combo box: properly handle the hover state when the dropdown arrow is not defined 2025-06-16 19:44:07 +03:00
Adorian Doran
7269c46de3 style(next): note attachments page: tweak header font size 2025-06-16 19:32:05 +03:00
Elian Doran
178df38377 chore(text): increase mention list max height 2025-06-16 19:25:06 +03:00
Elian Doran
1201f7138a style(next): slash commands layout 2025-06-16 19:24:42 +03:00
Elian Doran
9ff4be8871 feat(text): set up slash commands 2025-06-16 19:24:23 +03:00
Adorian Doran
0a17fb586c Merge branch 'develop' of https://github.com/TriliumNext/Notes into develop 2025-06-16 19:08:08 +03:00
Adorian Doran
1f8713f57e style(next): tweak the note icon selection button 2025-06-16 19:07:56 +03:00
Elian Doran
507fc17701 feat(text): set up license key for development 2025-06-16 18:38:06 +03:00
Elian Doran
26ad428b24 Merge branch 'jshprentz/develop' into develop 2025-06-16 17:51:22 +03:00
Elian Doran
26af3a9d68 Highlight Elixir in code notes (#2327) 2025-06-16 17:50:51 +03:00
Elian Doran
8ecf6ad78e feat(codemirror): add elixir support 2025-06-16 17:48:20 +03:00
SiriusXT
45977efd5f fix(context menu): not auto-closing on mobile 2025-06-16 17:21:44 +08:00
FliegendeWurst
c0b746e03f fix(desktop): proper icon path
The previous value points to a file that no longer exists in the
release builds. This file also only exists in the flake build.
2025-06-16 08:34:46 +02:00
FliegendeWurst
a13e4d5d79 fix(flake): set resourceDir explicitly 2025-06-16 08:28:44 +02:00
FliegendeWurst
e8f2f0f577 feat(flake): Wayland support 2025-06-16 08:08:04 +02:00
FliegendeWurst
f56ba7295a chore(flake): note differences to electron-forge build 2025-06-16 08:04:43 +02:00
FliegendeWurst
8cdb1859e3 fix(flake): use same Electron version as normal build
Also fix the source filtering logic to work properly.
2025-06-16 07:51:26 +02:00
Joel Shprentz
6bfc78e148 Merge branch 'develop' of https://github.com/jshprentz/TriliumNextNotes into develop 2025-06-16 02:28:50 +00:00
Joel Shprentz
cc97ec332d Codemirror does not support Elixir. Remove Elixir from the list. 2025-06-16 02:25:57 +00:00
Joel Shprentz
f2e4dad318 Merge branch 'TriliumNext:develop' into develop 2025-06-15 22:12:08 -04:00
Joel Shprentz
9c45e9fa1a Support highlighting Elixir code notes. 2025-06-16 01:54:31 +00:00
Elian Doran
e1e2afc3cd docs(release): sync description with GitHub 2025-06-16 00:14:52 +03:00
Elian Doran
b9ae226569 chore(release): bump version 2025-06-15 23:32:26 +03:00
Elian Doran
e23e5227a4 docs(user): improve documentation on sharing 2025-06-15 23:32:26 +03:00
Elian Doran
dd647dbb0b docs(release): v0.95.0 2025-06-15 23:32:26 +03:00
Elian Doran
04794c38d8 fix(forge): locales with dash on non-mac 2025-06-15 21:27:53 +03:00
Elian Doran
8d868b77d0 feat(forge): English locale on Linux 2025-06-15 21:16:02 +03:00
Elian Doran
3435f20baa feat(forge): remove unused locales on macOS 2025-06-15 21:06:01 +03:00
Elian Doran
7427507aca fix(forge): adapt removing lproj on macOS 2025-06-15 20:49:07 +03:00
Elian Doran
3d7784ca18 Revert "fix(desktop): use plugin to clean up languages"
This reverts commit cbcc219f1f.
2025-06-15 19:57:48 +03:00
Elian Doran
0414500c17 Revert "fix(forge): English locale still missing"
This reverts commit 385ebb486e.
2025-06-15 19:57:37 +03:00
Elian Doran
385ebb486e fix(forge): English locale still missing 2025-06-15 19:30:22 +03:00
Elian Doran
cbcc219f1f fix(desktop): use plugin to clean up languages 2025-06-15 19:06:06 +03:00
Elian Doran
58e2bc2b6c Merge pull request #2324 from TriliumNext/renovate/major-ckeditor5-config-packages
chore(deps): update ckeditor5 config packages to v11 (major)
2025-06-15 18:51:19 +03:00
Elian Doran
c1e53c09d6 Merge pull request #2305 from TriliumNext/renovate/mime-types-3.x-lockfile
chore(deps): update dependency @types/mime-types to v3.0.1
2025-06-15 18:50:20 +03:00
Elian Doran
f7a6a10c7a Merge branch 'develop' into renovate/mime-types-3.x-lockfile 2025-06-15 18:08:24 +03:00
Elian Doran
e739aee95f Merge pull request #2318 from TriliumNext/renovate/eslint-monorepo
chore(deps): update eslint monorepo to v9.29.0
2025-06-15 18:01:49 +03:00
Elian Doran
1b6c2cdad1 Merge pull request #2320 from TriliumNext/renovate/tsx-4.x-lockfile
fix(deps): update dependency tsx to v4.20.3
2025-06-15 18:01:16 +03:00
Elian Doran
e56d7e3aa0 Merge pull request #2306 from TriliumNext/renovate/typescript-eslint-monorepo
chore(deps): update dependency @typescript-eslint/parser to v8.34.0
2025-06-15 18:00:34 +03:00
Elian Doran
354c4ff8db Merge pull request #2317 from TriliumNext/renovate/axios-1.x
chore(deps): update dependency axios to v1.10.0
2025-06-15 17:59:39 +03:00
Elian Doran
681b61e166 Merge pull request #2316 from TriliumNext/renovate/vite-plugin-static-copy-3.x
chore(deps): update dependency vite-plugin-static-copy to v3.0.2
2025-06-15 17:59:11 +03:00
Elian Doran
74c6c5d8cf Merge pull request #2315 from TriliumNext/renovate/svelte-5.x-lockfile
chore(deps): update dependency svelte to v5.34.3
2025-06-15 17:57:53 +03:00
Elian Doran
8746df4907 Merge pull request #2314 from TriliumNext/renovate/lint-staged-16.x-lockfile
chore(deps): update dependency lint-staged to v16.1.2
2025-06-15 17:57:02 +03:00
Elian Doran
acbd4c5c3e Merge pull request #2288 from TriliumNext/renovate/vitest-monorepo
chore(deps): update vitest monorepo to v3.2.3
2025-06-15 17:56:34 +03:00
renovate[bot]
edd1571c4e chore(deps): update ckeditor5 config packages to v11 2025-06-15 14:43:06 +00:00
renovate[bot]
8289dff3e8 fix(deps): update dependency tsx to v4.20.3 2025-06-15 14:42:18 +00:00
renovate[bot]
d654bb5d16 chore(deps): update eslint monorepo to v9.29.0 2025-06-15 14:41:28 +00:00
renovate[bot]
b985796139 chore(deps): update dependency axios to v1.10.0 2025-06-15 14:40:40 +00:00
renovate[bot]
99fd7b275b chore(deps): update dependency @typescript-eslint/parser to v8.34.0 2025-06-15 14:39:53 +00:00
renovate[bot]
161671e112 chore(deps): update vitest monorepo to v3.2.3 2025-06-15 14:39:00 +00:00
renovate[bot]
02a0173c91 chore(deps): update dependency vite-plugin-static-copy to v3.0.2 2025-06-15 14:38:03 +00:00
renovate[bot]
4f7069a7c3 chore(deps): update dependency svelte to v5.34.3 2025-06-15 14:37:15 +00:00
renovate[bot]
fa4e17c273 chore(deps): update dependency lint-staged to v16.1.2 2025-06-15 14:36:22 +00:00
renovate[bot]
7edd20d179 chore(deps): update dependency @types/mime-types to v3.0.1 2025-06-15 14:35:27 +00:00
Elian Doran
f423d3a145 Merge pull request #2322 from TriliumNext/feature/fix_nx_ignore
Feature/fix nx ignore
2025-06-15 17:10:54 +03:00
Elian Doran
3aba961f5e Revert "test(server): skip failing test"
This reverts commit 82be37b4af.
2025-06-15 17:09:23 +03:00
Elian Doran
d2cfb5e94f chore(nx): have website:typecheck depend on build 2025-06-15 17:03:02 +03:00
Elian Doran
cb22c2cc7f chore(pnpm): align only built dependencies 2025-06-15 16:42:18 +03:00
Elian Doran
3280123414 chore(env): remove 4GB override 2025-06-15 16:11:39 +03:00
Elian Doran
82be37b4af test(server): skip failing test 2025-06-15 16:03:12 +03:00
Elian Doran
0e51a35842 feat(ci): run test-build in affected 2025-06-15 15:42:33 +03:00
Elian Doran
86dc3762b6 fix(nx): patch asset copying to ignore .gitignore 2025-06-15 15:41:10 +03:00
Elian Doran
edc341f024 test(server): ensure build artifacts exist 2025-06-15 15:40:54 +03:00
Elian Doran
f2bef879ce chore(nx): remove dist & node_modules from .nxignore 2025-06-15 14:52:27 +03:00
Elian Doran
a5c6a8e0a9 Revert "test(server): disable file parallelism to avoid CI failures"
This reverts commit 17f27e520c.
2025-06-15 14:41:51 +03:00
Elian Doran
641d2b0527 test(server): skip streaming tests 2025-06-15 14:41:29 +03:00
Elian Doran
e7d129f2f7 chore(renovate): disable bun 2025-06-15 14:41:29 +03:00
Elian Doran
bfc778f002 chore(test): use verbose reporter 2025-06-15 14:28:47 +03:00
Elian Doran
8d2d5504dd test(server): skip memory leak test to see if it breaks the CI 2025-06-15 14:17:18 +03:00
Elian Doran
17f27e520c test(server): disable file parallelism to avoid CI failures 2025-06-15 14:00:54 +03:00
Elian Doran
f8c1dabfd5 Revert "chore(test): skip test breaking the CI"
This reverts commit f3b6817aa7.
2025-06-15 13:59:56 +03:00
Elian Doran
f3b6817aa7 chore(test): skip test breaking the CI 2025-06-15 13:46:13 +03:00
Elian Doran
61d405da68 chore(ci): run server in sequential tests 2025-06-15 13:01:37 +03:00
Elian Doran
d4be6b1de0 chore(renovate): disable HTML manager
Hopefully to reduce the time it takes for renovate to process the repo.
2025-06-15 12:49:08 +03:00
Elian Doran
d199fc322e refactor(client): set up manual chunk for CKEditor 2025-06-15 12:41:03 +03:00
Elian Doran
42ccdd1646 test(server): try to use threads instead of forks to avoid ELIFECYCLE issues in the CI 2025-06-15 12:40:53 +03:00
Elian Doran
185652fb6e chore(deps): sync package lock 2025-06-15 12:06:43 +03:00
Elian Doran
4a579863d1 refactor(deps): remove unnecessary root dependencies 2025-06-15 12:00:59 +03:00
Elian Doran
882b2418d6 chore(renovate): group ckeditor5 config packages 2025-06-15 11:59:52 +03:00
Elian Doran
1dce202d21 test(server): try to reduce number to avoid CI crashing 2025-06-15 11:58:03 +03:00
Elian Doran
2d5754c005 refactor(client,server): remove redundant libraries directory 2025-06-15 11:56:50 +03:00
Elian Doran
9f694fad8b fix(forge): missing English locale on Windows 2025-06-15 11:38:14 +03:00
Elian Doran
9a2264c7f6 chore(forge): make the removed locales list more compact 2025-06-15 11:20:18 +03:00
Elian Doran
77497dbc28 chore(forge): fail build if locale is missing 2025-06-15 11:12:01 +03:00
Elian Doran
1848d5dc96 chore(types): type missing in the CI 2025-06-14 23:54:19 +03:00
Elian Doran
6f5c66f324 chore(types): fix errors in website 2025-06-14 23:40:41 +03:00
Elian Doran
296c95e800 chore(nx): configure for SvelteKit 2025-06-14 22:40:45 +03:00
Elian Doran
6416c6b947 Merge branch 'feature/landing_page' into develop 2025-06-14 21:41:19 +03:00
Elian Doran
30320f6d84 fix(website): download links for server 2025-06-14 21:39:22 +03:00
Elian Doran
b58d0f6663 style(website): slight adjustments to sizes 2025-06-14 18:02:10 +03:00
Elian Doran
56dc1b7e49 feat(website): bigger download button 2025-06-14 17:59:43 +03:00
Elian Doran
cef832fda4 fix(website/download): fix URLs for download 2025-06-14 17:55:38 +03:00
Elian Doran
7066fc3092 feat(website/download): section for paid hosting 2025-06-14 17:14:33 +03:00
Elian Doran
235f7c8aec feat(website/download): section for server downloads 2025-06-14 17:06:51 +03:00
Elian Doran
f0ce728982 refactor(website): improve types 2025-06-14 16:40:50 +03:00
Elian Doran
be7fe9610f feat(website/download): improved descriptions 2025-06-14 16:38:26 +03:00
Elian Doran
49cd0d44ac feat(website/download): improved platform titles 2025-06-14 16:34:51 +03:00
Elian Doran
45a053dfbf feat(website/download): reorganize desktop downloads 2025-06-14 16:29:40 +03:00
Elian Doran
cf47abe849 refactor(website/download): read version number from package.json 2025-06-14 14:34:31 +03:00
Elian Doran
6e97b08256 fix(website/download): use proper download links 2025-06-14 14:33:17 +03:00
Elian Doran
668706a6d9 feat(website/download): integrate architecture selector 2025-06-14 14:24:59 +03:00
Elian Doran
68dc81ac96 feat(website): integrate download matrix for server 2025-06-14 14:14:58 +03:00
Elian Doran
58a099dbc7 Merge pull request #2312 from TriliumNext/doc
docs: ✏️ Fix MFA Readme link
2025-06-14 14:14:10 +03:00
JYC333
740e65a791 Merge pull request #2307 from TriliumNext/renovate/tsx-4.x-lockfile
fix(deps): update dependency tsx to v4.20.3
2025-06-14 13:09:24 +02:00
JYC333
d3aabadb66 Merge branch 'develop' into renovate/tsx-4.x-lockfile 2025-06-14 12:58:08 +02:00
JYC333
571c93c610 Merge pull request #2266 from TriliumNext/renovate/eslint-monorepo
fix(deps): update eslint monorepo to v9.29.0
2025-06-14 12:57:37 +02:00
Jin
168f9b54ba docs: ✏️ Fix MFA Readme link 2025-06-14 12:54:58 +02:00
Elian Doran
65e207648b feat(website): basic platform detection 2025-06-14 13:45:44 +03:00
Elian Doran
cb6cb97326 feat(website): place download now button in header as well 2025-06-14 13:35:31 +03:00
Elian Doran
450fa5311c feat(website/download): add basic server section 2025-06-14 13:31:52 +03:00
Elian Doran
4edd701c29 feat(website/download): add a basic architecture selector 2025-06-14 13:25:19 +03:00
Elian Doran
630aade97a feat(website): start a download section 2025-06-14 13:18:34 +03:00
Elian Doran
c97098d60d chore(website): change hero section 2025-06-14 12:45:34 +03:00
Elian Doran
7d0a555999 fix(website): z-index of header 2025-06-14 12:38:31 +03:00
Elian Doran
2c4d0d800c feat(website): simplify features highlights section 2025-06-14 12:36:32 +03:00
Elian Doran
c7ed63a0e3 fix(website): alignment of footer 2025-06-14 12:31:41 +03:00
Elian Doran
3cc69849db feat(website): add a nice gradient 2025-06-14 12:24:23 +03:00
Elian Doran
32ef25a868 feat(website): add a basic final call-to-action 2025-06-14 12:17:37 +03:00
Elian Doran
437e8875d8 feat(website): move screenshot to the right 2025-06-14 12:15:08 +03:00
Elian Doran
652e91586e feat(website): add a basic intro into the features 2025-06-14 12:13:23 +03:00
Elian Doran
4946a50ebd chore(vscode): add tailwind extension to recommendations 2025-06-14 12:02:43 +03:00
Elian Doran
c69ecb768b feat(website): add a basic feature highlights section 2025-06-14 12:02:22 +03:00
Elian Doran
88abb895ff feat(website): add a basic copyright footer 2025-06-14 11:59:11 +03:00
Elian Doran
09dd8f9828 feat(website): slight improvements to header 2025-06-14 11:49:45 +03:00
Elian Doran
7dd6c1a6cc feat(website): basic screenshot 2025-06-14 11:42:02 +03:00
Elian Doran
9eda9b1399 feat(website): basic hero section 2025-06-14 11:30:13 +03:00
Elian Doran
e66e70f7f2 feat(website): very simple header 2025-06-14 11:13:40 +03:00
Elian Doran
77213a0dbe chore(website): add inlang to ignore 2025-06-14 11:13:30 +03:00
Elian Doran
73b1aa7c6c chore(vscode): add svelte to recommendations 2025-06-14 11:12:49 +03:00
Elian Doran
c43a7df781 chore(website): create empty SvelteKit project 2025-06-14 11:05:38 +03:00
renovate[bot]
97d6d1a5d2 fix(deps): update eslint monorepo to v9.29.0 2025-06-14 07:45:46 +00:00
Elian Doran
925a674de6 Merge pull request #2311 from TriliumNext/renovate/eslint-linter-browserify-9.x
fix(deps): update dependency eslint-linter-browserify to v9.29.0
2025-06-14 10:39:41 +03:00
Elian Doran
297aef788c Merge pull request #2298 from TriliumNext/renovate/codemirror
fix(deps): update codemirror
2025-06-14 10:36:34 +03:00
renovate[bot]
6ecc67c8cf fix(deps): update dependency eslint-linter-browserify to v9.29.0 2025-06-14 07:24:48 +00:00
renovate[bot]
0f4b26fa6f fix(deps): update codemirror 2025-06-14 07:23:54 +00:00
Elian Doran
8704b01f4c Merge pull request #2299 from TriliumNext/renovate/nx-monorepo
chore(deps): update nx monorepo to v21.2.0
2025-06-14 10:19:53 +03:00
Elian Doran
5c3a69984a Merge remote-tracking branch 'origin/develop' into renovate/tsx-4.x-lockfile 2025-06-14 10:15:47 +03:00
renovate[bot]
1dec510120 chore(deps): update nx monorepo to v21.2.0 2025-06-13 13:28:06 +00:00
Elian Doran
4da7fd2c87 Merge pull request #2297 from TriliumNext/renovate/tsx-4.x
chore(deps): update dependency tsx to v4.20.3
2025-06-13 16:23:51 +03:00
renovate[bot]
143209307f chore(deps): update dependency tsx to v4.20.3 2025-06-13 12:45:44 +00:00
renovate[bot]
e300f9087a fix(deps): update dependency tsx to v4.20.3 2025-06-13 12:42:01 +00:00
Elian Doran
26afab03ce Merge pull request #2303 from TriliumNext/sirius_patch
fix(image): ensure images opened in a new tab can be activated
2025-06-13 15:31:27 +03:00
Elian Doran
2f3275474f Merge pull request #2304 from TriliumNext/sirius_patch2
fix(ckeditor): restore focus after importing markdown
2025-06-13 15:28:04 +03:00
SiriusXT
41eff6de17 fix(ckeditor): restore focus after importing markdown 2025-06-13 19:40:49 +08:00
SiriusXT
07bb0644b2 fix(image): ensure images opened in a new tab can be activated 2025-06-13 18:08:15 +08:00
Elian Doran
5b6c003888 Merge pull request #2300 from TriliumNext/renovate/tsx-4.x-lockfile
fix(deps): update dependency tsx to v4.20.2
2025-06-13 09:21:05 +03:00
renovate[bot]
d93e66665c fix(deps): update dependency tsx to v4.20.2 2025-06-13 00:42:33 +00:00
Elian Doran
f0c696d6fd Merge pull request #2281 from TriliumNext/fix/show-warning-when-rosetta-2
fix(client): show warning/error when app is using Rosetta 2 translation (running wrong arch)
2025-06-12 23:05:54 +03:00
Elian Doran
9713864bb6 refactor(cpu_dialog): more mentions of rosetta 2025-06-12 22:53:15 +03:00
Elian Doran
c6c59c63bb feat(cpu_dialog): add actual Windows CPU detection 2025-06-12 22:49:31 +03:00
Elian Doran
0a81e26e7e feat(cpu_dialog): fix icon alignment & add message for windows 2025-06-12 22:43:30 +03:00
Elian Doran
2c032d54c1 chore(cpu_dialog): simplify the dialog 2025-06-12 22:30:33 +03:00
Elian Doran
a635131f47 style(cpu_dialog): use modal-footer 2025-06-12 22:23:37 +03:00
Elian Doran
8edbbe27f8 refactor(client,server): rebrand to CPU arch warnings 2025-06-12 22:16:57 +03:00
Elian Doran
db3c008c07 fix(server): headers sent twice 2025-06-12 22:07:50 +03:00
Elian Doran
a20a06c994 refactor(client): simplify DOM 2025-06-12 22:06:34 +03:00
Elian Doran
fe1f4a4294 refactor(client): remove contrasting title bar 2025-06-12 22:03:22 +03:00
Elian Doran
b4d2d21620 refactor(client): relocate architecture mismatch checks 2025-06-12 22:00:51 +03:00
Elian Doran
f6bba436f4 Revert "fix(client): also move the logic from the server to the client lol"
This reverts commit e401c8c930.
2025-06-12 21:46:27 +03:00
Elian Doran
79aae8fb43 Merge remote-tracking branch 'origin/develop' into fix/show-warning-when-rosetta-2 2025-06-12 21:32:50 +03:00
Elian Doran
c34c0c49db Merge pull request #2293 from TriliumNext/tree
fix(tree): Unexpected collapse after hoisting a note
2025-06-12 18:34:09 +03:00
Elian Doran
59296f3045 fix(server): crashes due to req.body being undefined 2025-06-12 15:01:35 +03:00
SiriusXT
df68ed33bc Merge branch 'develop' into tree 2025-06-12 19:46:11 +08:00
SiriusXT
369eb7844d fix(tree): Unexpected collapse after hoisting a note 2025-06-12 19:36:54 +08:00
Elian Doran
b3270ae7c8 chore(server): enable source map for serve 2025-06-12 12:08:45 +03:00
Elian Doran
995de2b740 feat(editor): hide balloon toolbar when in code block 2025-06-12 10:12:17 +03:00
Elian Doran
be718ce4e0 refactor(client): remove unnecessary widget 2025-06-12 09:23:30 +03:00
Elian Doran
63ce62a67d Merge pull request #2290 from TriliumNext/renovate/anthropic-ai-sdk-0.x
chore(deps): update dependency @anthropic-ai/sdk to v0.54.0
2025-06-12 09:20:42 +03:00
Elian Doran
fc84c06346 Merge pull request #2292 from TriliumNext/renovate/tsx-4.x-lockfile
fix(deps): update dependency tsx to v4.20.1
2025-06-12 09:20:30 +03:00
renovate[bot]
3ccd5b52fa fix(deps): update dependency tsx to v4.20.1 2025-06-12 05:54:46 +00:00
renovate[bot]
bd3f74c17b chore(deps): update dependency @anthropic-ai/sdk to v0.54.0 2025-06-12 05:53:56 +00:00
Elian Doran
10e063b39e Merge pull request #2285 from werererer/fix/nx-project-discovery
fix(build): fix Nx project discovery issue caused by parent .gitignore
2025-06-12 08:46:17 +03:00
Elian Doran
6876337f5f Merge pull request #2289 from TriliumNext/renovate/preact-10.x
fix(deps): update dependency preact to v10.26.9
2025-06-12 08:45:58 +03:00
Elian Doran
c43a654f8e Merge pull request #2291 from TriliumNext/renovate/tsx-4.x
chore(deps): update dependency tsx to v4.20.1
2025-06-12 08:44:54 +03:00
Elian Doran
40a7890b45 Merge pull request #2287 from TriliumNext/renovate/mime-types-3.x-lockfile
chore(deps): update dependency @types/mime-types to v3.0.1
2025-06-12 08:44:32 +03:00
renovate[bot]
b8115fed70 chore(deps): update dependency tsx to v4.20.1 2025-06-12 01:16:04 +00:00
renovate[bot]
b1f7a8e932 fix(deps): update dependency preact to v10.26.9 2025-06-12 01:14:34 +00:00
renovate[bot]
5514fbd113 chore(deps): update dependency @types/mime-types to v3.0.1 2025-06-12 01:12:47 +00:00
Elian Doran
2fe34b1b0d Merge branch 'develop' into fix/nx-project-discovery 2025-06-11 23:58:47 +03:00
Jakob Schlanstedt
efb0050e57 fix(build): ensure projects are discovered by ignoring parent .gitignore rules 2025-06-11 22:43:42 +02:00
Elian Doran
cfd68f41eb Merge pull request #2220 from TriliumNext/moveupdown
fix(move_block): move multiple lines up/down
2025-06-11 22:42:10 +03:00
Elian Doran
5090b38f9c Merge branch 'develop' of https://github.com/TriliumNext/Notes into develop 2025-06-11 22:33:18 +03:00
Elian Doran
57ad6065d8 Merge pull request #2282 from TriliumNext/feat/add-llm-model-unit-tests
feat(unit): add unit tests around LLM model names within outgoing req…
2025-06-11 22:10:36 +03:00
Elian Doran
65b7c2d82f Merge pull request #2249 from TriliumNext/odic
MFA docs improve
2025-06-11 22:08:21 +03:00
Elian Doran
7863a5e09c chore: disable source maps 2025-06-11 22:03:25 +03:00
Jin
94e3586555 refactor: 💡 add link in MFA option point to help page 2025-06-11 20:52:07 +02:00
Jin
ac14a22a43 chore: 🤖 align the same structure with option page 2025-06-11 20:52:07 +02:00
Jin
14179f3bd3 docs: ✏️ show MFA in-app help page 2025-06-11 20:52:07 +02:00
Jin
988a2b8d29 docs: ✏️ Add custom OAuth issuer docs 2025-06-11 20:52:07 +02:00
JYC333
9c38398ae3 Merge pull request #2278 from TriliumNext/renovate/major-typescript-eslint-monorepo
chore(deps): update typescript-eslint monorepo to v8 (major)
2025-06-11 20:51:13 +02:00
renovate[bot]
c4226ea454 chore(deps): update typescript-eslint monorepo to v8 2025-06-11 18:11:06 +00:00
Elian Doran
19668d1931 Merge branch 'develop' of https://github.com/TriliumNext/Notes into develop 2025-06-11 21:08:37 +03:00
Elian Doran
23c45ee219 feat(forge): remove unused locales 2025-06-11 21:08:02 +03:00
Elian Doran
ed5505e093 Merge pull request #2271 from TriliumNext/renovate/softprops-action-gh-release-2.x
chore(deps): update softprops/action-gh-release action to v2.3.2
2025-06-11 20:09:52 +03:00
Elian Doran
fb9f5a7584 Merge branch 'develop' into renovate/softprops-action-gh-release-2.x 2025-06-11 20:09:30 +03:00
Elian Doran
825c2c1fe9 Merge pull request #2255 from TriliumNext/feature/client_size_optimisation
Client bundle size optimization
2025-06-11 20:06:31 +03:00
Elian Doran
7c2a29edce chore(deps): deduplicate roughjs 2025-06-11 19:45:36 +03:00
Elian Doran
26f44ea1f8 chore(deps): deduplicate preact 2025-06-11 19:42:44 +03:00
Jon Fuller
6dbdf336aa Merge branch 'develop' into feat/add-llm-model-unit-tests 2025-06-11 09:41:11 -07:00
Elian Doran
89d32db601 fix(canvas): loading of fonts under dev mode 2025-06-11 19:34:35 +03:00
Elian Doran
65f9b1c4ef Merge remote-tracking branch 'origin/develop' into feature/client_size_optimisation
; Conflicts:
;	pnpm-lock.yaml
2025-06-11 19:02:34 +03:00
Elian Doran
6596431154 chore(client): force mermaid to avoid double packaging 2025-06-11 18:59:46 +03:00
Elian Doran
9bab8f0bdb refactor(canvas): remove unnecessary env setup 2025-06-11 18:59:46 +03:00
Elian Doran
892c27c945 chore(canvas): set up cleanup 2025-06-11 18:59:45 +03:00
Elian Doran
bb762cfab6 refactor(canvas): remove use of any 2025-06-11 18:59:45 +03:00
Elian Doran
9d296dd692 refactor(canvas): use deferred promise instead of sleep 2025-06-11 18:59:45 +03:00
Elian Doran
0da05a7dbe refactor(canvas): don't expose API directly 2025-06-11 18:59:45 +03:00
Elian Doran
dab9b02990 refactor(canvas): remove unnecessary fragment 2025-06-11 18:59:45 +03:00
Elian Doran
5b4ceb27c5 refactor(canvas): remove unnecessary ref 2025-06-11 18:59:45 +03:00
Elian Doran
51d06ec40d chore(deps): fix lockfile 2025-06-11 18:59:45 +03:00
renovate[bot]
e7285573ac chore(deps): update dependency openai to v5.3.0 2025-06-11 18:59:45 +03:00
renovate[bot]
509e3284ed chore(deps): update vitest monorepo to v3.2.3 2025-06-11 18:59:45 +03:00
renovate[bot]
c8530bca75 chore(deps): update dependency serve-favicon to v2.5.1 2025-06-11 18:59:45 +03:00
renovate[bot]
b27d017174 chore(deps): update dependency @types/mime-types to v3.0.1 2025-06-11 18:59:45 +03:00
Elian Doran
963c7386b1 chore(ci): remove accidental workflow 2025-06-11 18:59:45 +03:00
Elian Doran
e032e6f217 refactor(deps): remove package lock from package 2025-06-11 18:59:45 +03:00
Elian Doran
00c5497d93 chore(cI): use pnpm exec instead of pnpx 2025-06-11 18:59:45 +03:00
JYC333
8ed62398fa Merge pull request #2276 from TriliumNext/renovate/major-happy-dom-monorepo
chore(deps): update dependency happy-dom to v18
2025-06-11 17:00:49 +02:00
renovate[bot]
fff87aec87 chore(deps): update dependency happy-dom to v18 2025-06-11 14:35:56 +00:00
JYC333
6ef71b9209 Merge pull request #2274 from TriliumNext/renovate/major-eslint-monorepo
chore(deps): update dependency eslint to v9
2025-06-11 16:32:50 +02:00
perf3ct
e401c8c930 fix(client): also move the logic from the server to the client lol 2025-06-11 14:30:33 +00:00
renovate[bot]
ba9f034694 chore(deps): update dependency eslint to v9 2025-06-11 16:17:30 +02:00
JYC333
adbc906f9e Merge pull request #2273 from TriliumNext/renovate/swagger-ui-5.x
chore(deps): update dependency @types/swagger-ui to v5
2025-06-11 16:17:04 +02:00
perf3ct
3041af7fe2 feat(client): also fix translations 2025-06-11 14:13:59 +00:00
perf3ct
23ce896681 feat(client): show warning when running through rosetta 2 2025-06-11 14:04:42 +00:00
renovate[bot]
5249624486 chore(deps): update dependency @types/swagger-ui to v5 2025-06-11 13:23:33 +00:00
JYC333
3f5024dc6d Merge pull request #2264 from TriliumNext/renovate/playwright-monorepo
chore(deps): update dependency @playwright/test to v1.53.0
2025-06-11 15:20:37 +02:00
renovate[bot]
1afb971877 chore(deps): update dependency @playwright/test to v1.53.0 2025-06-11 09:46:56 +00:00
JYC333
0d605cbc74 Merge pull request #2260 from TriliumNext/renovate/node-22.x
chore(deps): update dependency @types/node to v22.15.31
2025-06-11 11:35:06 +02:00
renovate[bot]
cc7c175b45 chore(deps): update dependency @types/node to v22.15.31 2025-06-11 09:10:55 +00:00
JYC333
c6f48d1dc0 Merge pull request #2269 from TriliumNext/renovate/openai-5.x
chore(deps): update dependency openai to v5.3.0
2025-06-11 11:08:55 +02:00
renovate[bot]
3ddde700fb chore(deps): update dependency openai to v5.3.0 2025-06-11 08:59:30 +00:00
JYC333
22450519a4 Merge pull request #2263 from TriliumNext/renovate/vitest-monorepo
chore(deps): update vitest monorepo to v3.2.3
2025-06-11 10:54:41 +02:00
renovate[bot]
9ece11ae9b chore(deps): update vitest monorepo to v3.2.3 2025-06-11 08:46:50 +00:00
JYC333
c3796dcdb0 Merge pull request #2262 from TriliumNext/renovate/serve-favicon-2.x
chore(deps): update dependency serve-favicon to v2.5.1
2025-06-11 10:43:18 +02:00
renovate[bot]
c0b9bb282c chore(deps): update dependency serve-favicon to v2.5.1 2025-06-11 08:34:14 +00:00
JYC333
97a904e4b4 Merge pull request #2259 from TriliumNext/renovate/mime-types-3.x-lockfile
chore(deps): update dependency @types/mime-types to v3.0.1
2025-06-11 10:22:37 +02:00
renovate[bot]
411875ac5f chore(deps): update dependency @types/mime-types to v3.0.1 2025-06-11 07:48:05 +00:00
Elian Doran
7b43cfc563 chore(ci): remove accidental workflow 2025-06-11 10:45:25 +03:00
Elian Doran
d6c250111a chore(ci): trigger nightly when workflow changes 2025-06-11 10:24:27 +03:00
renovate[bot]
fdd70e4403 chore(deps): update softprops/action-gh-release action to v2.3.2 2025-06-11 07:17:24 +00:00
Elian Doran
bcd7c29db4 refactor(deps): remove package lock from package 2025-06-11 10:07:39 +03:00
Elian Doran
d3c2315e2d chore(cI): use pnpm exec instead of pnpx 2025-06-11 09:24:07 +03:00
Elian Doran
a7c115cdf5 chore(canvas): solve type errors 2025-06-10 23:41:15 +03:00
Elian Doran
4bd5644258 refactor(canvas): access to wrapper 2025-06-10 23:40:14 +03:00
Elian Doran
5b98277f3c chore(canvas): bring back more options 2025-06-10 23:29:36 +03:00
Elian Doran
ddbd268a66 chore(canvas): bring back load/save 2025-06-10 23:25:43 +03:00
Elian Doran
dd58685455 chore(canvas): bring back scene API 2025-06-10 23:09:36 +03:00
Elian Doran
5ad3d7d077 chore(canvas): missing API endpoint 2025-06-10 22:50:39 +03:00
Elian Doran
3e0f420eec chore(canvas): reintroduce wrapper 2025-06-10 22:44:11 +03:00
Elian Doran
0f47a4988b refactor(canvas): proof of concept for preact-based canvas 2025-06-10 22:22:47 +03:00
Elian Doran
0f9fe0367a chore(client): fix excalidraw erroring out due to react 2025-06-10 21:23:46 +03:00
Elian Doran
b2b6654846 refactor(share): removing problematic build step 2025-06-10 21:09:24 +03:00
Elian Doran
83c136174e chore(client): build dependencies before serving 2025-06-10 21:09:10 +03:00
perf3ct
e1e1eb4f51 feat(unit): add unit tests around LLM model names within outgoing requests 2025-06-10 16:27:05 +00:00
Elian Doran
61958a35c2 fix(ci): release breaking due to upstream
See:
- https://github.com/softprops/action-gh-release/issues/627
- https://github.com/softprops/action-gh-release/issues/628
2025-06-10 14:16:42 +03:00
Elian Doran
5558d6e149 chore(ci): try to increase max heap size everywhere 2025-06-10 13:56:56 +03:00
SiriusXT
3a56a16a58 fix: moving tables/blockQuote 2025-06-10 18:50:32 +08:00
Elian Doran
e7ab96538c refactor(share): update package meta 2025-06-10 13:46:33 +03:00
Elian Doran
cbc57c3a77 Merge pull request #2243 from TriliumNext/open_in_new_window
fix(link): Unable to open notes in a new window
2025-06-10 13:35:00 +03:00
Elian Doran
2bcaf7d8a8 Merge pull request #2236 from TriliumNext/zen
fix(zen): Show fixed toolbar in Zen mode
2025-06-10 13:18:15 +03:00
Elian Doran
db80ebe6dd Merge pull request #2232 from TriliumNext/ckeditor5-alignment
feat(ckeditor): Add text alignment
2025-06-10 13:15:42 +03:00
Elian Doran
72217253be Merge pull request #2245 from TriliumNext/renovate/npm-esbuild-vulnerability
chore(deps): update dependency esbuild to ^0.25.0 [security]
2025-06-10 13:10:12 +03:00
Elian Doran
12ef314ab7 Merge pull request #2230 from TriliumNext/tab-row
Tab row scroll
2025-06-10 13:08:51 +03:00
renovate[bot]
ce38f47bee chore(deps): update dependency esbuild to ^0.25.0 [security] 2025-06-10 09:55:49 +00:00
Elian Doran
36f0de888e Merge pull request #2209 from TriliumNext/feat/llm-unit-tests
feat(llm): add unit tests
2025-06-10 12:52:29 +03:00
SiriusXT
e440f31cb5 Merge branch 'develop' into open_in_new_window 2025-06-10 17:51:54 +08:00
Elian Doran
94cd0fc5d1 Merge pull request #2222 from TriliumNext/feature/share_theme
Integrate Trilium Rocks share theme
2025-06-10 12:43:51 +03:00
SiriusXT
ee9267775e vitest(link): add Vitest test cases for parseNavigationStateFromUrl 2025-06-10 17:38:05 +08:00
SiriusXT
885cdc8c97 Fix: Unable to open in a new window 2025-06-10 17:25:10 +08:00
Elian Doran
9d347ecf74 Merge remote-tracking branch 'origin/develop' into feature/share_theme
; Conflicts:
;	pnpm-lock.yaml
2025-06-10 08:58:20 +03:00
Elian Doran
23238a6ca0 Merge pull request #2238 from TriliumNext/renovate/react-monorepo
chore(deps): update dependency @types/react to v19.1.7
2025-06-10 08:52:17 +03:00
Elian Doran
9dc067564e Merge pull request #2239 from TriliumNext/renovate/vitest-monorepo
chore(deps): update vitest monorepo to v3.2.3
2025-06-10 08:51:54 +03:00
Elian Doran
7936e2d124 Merge pull request #2240 from TriliumNext/renovate/openai-5.x
chore(deps): update dependency openai to v5.2.0
2025-06-10 08:51:33 +03:00
Elian Doran
3e73fc03e6 Merge pull request #2241 from TriliumNext/renovate/typescript-eslint-monorepo
chore(deps): update typescript-eslint monorepo to ~8.34.0
2025-06-10 08:51:08 +03:00
renovate[bot]
ff19bab496 chore(deps): update typescript-eslint monorepo to ~8.34.0 2025-06-10 01:13:09 +00:00
renovate[bot]
12c4ca5f08 chore(deps): update dependency openai to v5.2.0 2025-06-10 01:11:51 +00:00
renovate[bot]
7b0ab4ee83 chore(deps): update vitest monorepo to v3.2.3 2025-06-10 01:11:10 +00:00
renovate[bot]
1feb4d42b7 chore(deps): update dependency @types/react to v19.1.7 2025-06-10 01:10:24 +00:00
SiriusXT
17ff0e8afc Merge branch 'develop' into ckeditor5-alignment 2025-06-10 09:07:21 +08:00
Elian Doran
7fcbb83dbe chore(forge): increase heap space for CI 2025-06-09 23:31:56 +03:00
Elian Doran
8ee6c7114c test(server-e2e): remove test that was no longer relevant 2025-06-09 23:10:19 +03:00
Elian Doran
ceb6134af2 fix(client): uninitialized field 2025-06-09 22:40:45 +03:00
Elian Doran
0ff8b7edd8 chore(share): fix typecheck issues 2025-06-09 22:31:14 +03:00
Elian Doran
8e73c5906d fix(server): missing boxicons in desktop/mobile 2025-06-09 22:18:44 +03:00
Elian Doran
4216a71a85 fix(server): render share theme on prod 2025-06-09 21:58:56 +03:00
Elian Doran
64e857362f refactor(share): remove Swagger-specific CSS 2025-06-09 21:54:46 +03:00
Elian Doran
8e4bf1538d feat(share): render math 2025-06-09 21:35:29 +03:00
Elian Doran
0ea60fa9d7 fix(client): bring back toast for read-only notes 2025-06-09 21:31:04 +03:00
Elian Doran
6667167b26 chore(server): set implicit dependency to share 2025-06-09 21:19:54 +03:00
Elian Doran
fd06046be5 refactor(share): remove swagger integration 2025-06-09 21:17:04 +03:00
Elian Doran
f20d4cbed2 refactor(share): translate messages 2025-06-09 21:16:03 +03:00
Elian Doran
18e6981e9a refactor(share): don't load boxicons if not needed 2025-06-09 21:00:58 +03:00
Elian Doran
d68d0b5dd8 feat(share): disable search if single note 2025-06-09 20:53:48 +03:00
Elian Doran
3b81d00de7 fix(share): crash if sharing single note without tree 2025-06-09 20:52:02 +03:00
Elian Doran
dd6660a6cd chore(share): use locale-friendly date 2025-06-09 20:49:06 +03:00
Elian Doran
8cb7dc7a7e feat(share): integrate last updated date 2025-06-09 20:47:36 +03:00
Elian Doran
dc5bb627ed feat(share): integrate prev/next navigation 2025-06-09 20:36:04 +03:00
Elian Doran
4d5a0e7832 refactor(share): don't load jQuery if not needed 2025-06-09 20:15:55 +03:00
Elian Doran
0e88818220 refactor(share): don't load highlighting if not needed 2025-06-09 20:03:32 +03:00
Elian Doran
ea015bc2cf refactor(share): remove no longer necessary highlight module 2025-06-09 19:55:21 +03:00
Elian Doran
02fe7c97ca feat(share): automatic light/dark mode 2025-06-09 19:38:44 +03:00
Elian Doran
0cba323091 feat(share): display icons in note tree 2025-06-09 18:47:02 +03:00
Elian Doran
89e931bca6 feat(share): improve style of copy button 2025-06-09 18:31:02 +03:00
SiriusXT
ace7e67c00 fix(zen): Show fixed toolbar in Zen mode 2025-06-09 17:27:31 +02:00
Elian Doran
1bcb811835 feat(share): enable syntax highlighting 2025-06-09 18:22:30 +03:00
JYC333
fba29249b0 Merge pull request #2231 from TriliumNext/toolbar
chore(editor): relocate link icon in floating toolbar
2025-06-09 17:18:02 +02:00
SiriusXT
496c36fde8 chore(editor): relocate link icon in floating toolbar 2025-06-09 16:56:51 +02:00
Elian Doran
54ffeeaed9 refactor(share): remove experiment to precompile EJS 2025-06-09 16:24:21 +03:00
Elian Doran
828da2aabf refactor(share): relocate 404 template 2025-06-09 16:22:22 +03:00
Elian Doran
a61d76deed refactor(share): remove old templates 2025-06-09 16:13:11 +03:00
Elian Doran
2238fed1b7 style(share): remove superfluous padding 2025-06-09 16:06:30 +03:00
Elian Doran
50777faa02 feat(share): add the Trilium logo by default 2025-06-09 15:10:50 +03:00
Elian Doran
157b4f9398 feat(share): expand subchildren when in folder 2025-06-09 15:02:50 +03:00
Elian Doran
091ffdeb59 feat(share): allow viewing directories 2025-06-09 14:54:04 +03:00
Elian Doran
0b3846fc35 fix(share): reintroduce theme-specific scripts 2025-06-09 14:39:56 +03:00
Elian Doran
c2e0640ea8 chore(share): fix error in dev mode 2025-06-09 14:29:19 +03:00
Elian Doran
3cd4b1b67e chore(share): remove redundant script import 2025-06-09 14:28:13 +03:00
Elian Doran
41edab3857 fix(share): regressions in child preview due to base theme 2025-06-09 14:21:47 +03:00
Elian Doran
12dbf36358 fix(share): regressions in menu due to base theme 2025-06-09 14:21:07 +03:00
Elian Doran
d630d407ca refactor(share): integrate with base CSS 2025-06-09 14:20:50 +03:00
Elian Doran
8bdf3626f0 refactor(share): integrate with client 2025-06-09 14:13:35 +03:00
Elian Doran
3def1a1e57 chore(share): introduce theme script 2025-06-09 13:37:38 +03:00
Elian Doran
4fcb186022 chore(share): bring back original share.js 2025-06-09 13:35:14 +03:00
Elian Doran
7451c2701e chore(share): bring back CSS 2025-06-09 13:33:25 +03:00
Elian Doran
098cd19b18 chore(share): fall back to original EJS rendering mechanism 2025-06-09 13:20:41 +03:00
Elian Doran
2827126be7 chore(share): embed imports 2025-06-09 12:39:48 +03:00
SiriusXT
e6c2f729f4 Merge branch 'develop' into moveupdown 2025-06-09 16:41:31 +08:00
Elian Doran
7e443e7b8d refactor(share): use custom build plugin 2025-06-09 11:18:47 +03:00
Elian Doran
d6bb790e26 chore(share): use rendered template (missing include) 2025-06-09 11:12:02 +03:00
Elian Doran
2d3265136d chore(share): prebuilt template 2025-06-09 11:00:58 +03:00
Elian Doran
11853962b7 refactor(share): remove note uploading mechanism 2025-06-09 10:51:18 +03:00
Elian Doran
c6ffa53f0b chore(share): set nx name 2025-06-09 10:48:31 +03:00
SiriusXT
2544c9b483 feat(ckeditor): Add text alignment 2025-06-09 15:00:08 +08:00
Elian Doran
8557159273 Merge pull request #2229 from TriliumNext/renovate/stylelint-config-ckeditor5-11.x-lockfile
chore(deps): update dependency stylelint-config-ckeditor5 to v11
2025-06-09 09:43:54 +03:00
Elian Doran
a4192cf061 Merge pull request #2228 from TriliumNext/renovate/eslint-config-ckeditor5-11.x-lockfile
chore(deps): update dependency eslint-config-ckeditor5 to v11
2025-06-09 09:43:32 +03:00
Elian Doran
d37491e95a Merge pull request #2227 from TriliumNext/renovate/pnpm-10.x
chore(deps): update pnpm to v10.12.1
2025-06-09 09:43:11 +03:00
renovate[bot]
e93e32d01c chore(deps): update pnpm to v10.12.1 2025-06-09 06:23:50 +00:00
SiriusXT
ff1030332c Merge branch 'develop' into tab-row 2025-06-09 14:20:08 +08:00
SiriusXT
f48d17cb22 fix(tab-row): Make the default distance include margin 2025-06-09 14:06:15 +08:00
Elian Doran
ca4b8fa5ec Merge pull request #2226 from TriliumNext/renovate/cheerio-1.x
chore(deps): update dependency cheerio to v1.1.0
2025-06-09 09:03:20 +03:00
Elian Doran
c155b8651f Merge branch 'develop' into renovate/cheerio-1.x 2025-06-09 09:03:17 +03:00
Elian Doran
199c047c28 Merge pull request #2225 from TriliumNext/renovate/vitest-monorepo
chore(deps): update vitest monorepo to v3.2.2
2025-06-09 09:02:37 +03:00
Elian Doran
ff603b2fab Merge pull request #2224 from TriliumNext/renovate/mime-types-3.x-lockfile
chore(deps): update dependency @types/mime-types to v3.0.1
2025-06-09 09:01:46 +03:00
SiriusXT
949ff17776 fix(tab-row): Simplify scrolling logic 2025-06-09 13:59:52 +08:00
SiriusXT
de4f0f7d6f fix(tab-row): Simplify scrolling logic 2025-06-09 11:33:16 +08:00
SiriusXT
a23b0c5ec9 fix(move_block): Make the object movable 2025-06-09 10:04:10 +08:00
renovate[bot]
96000a8a72 chore(deps): update dependency stylelint-config-ckeditor5 to v11 2025-06-09 01:03:54 +00:00
renovate[bot]
b2ccf126ed chore(deps): update dependency eslint-config-ckeditor5 to v11 2025-06-09 01:03:05 +00:00
renovate[bot]
b779577f9b chore(deps): update dependency cheerio to v1.1.0 2025-06-09 00:47:05 +00:00
renovate[bot]
21e2a7e2cd chore(deps): update vitest monorepo to v3.2.2 2025-06-09 00:46:25 +00:00
renovate[bot]
583356cf89 chore(deps): update dependency @types/mime-types to v3.0.1 2025-06-09 00:45:45 +00:00
perf3ct
e96fdbf72f fix(llm): fix logging type check 2025-06-09 00:23:02 +00:00
perf3ct
41906abaf9 feat(route): allow for routes to handle their own response 2025-06-09 00:08:06 +00:00
perf3ct
ca6277f6e9 feat(llm): handle error catching in streaming better 2025-06-09 00:07:00 +00:00
perf3ct
e98fabcc9d fix(unit): resolve auth error in llm unit test
keep working
2025-06-08 23:19:40 +00:00
perf3ct
f5ad5b875e fix(tests): resolve LLM streaming unit test failures
closer to fixing...

closer...

very close to passing...
2025-06-08 23:02:15 +00:00
perf3ct
daa32e4355 Revert "fix(unit): comment out this test for now to see if the rest pass"
This reverts commit 95a33ba3c0.
2025-06-08 22:02:56 +00:00
perf3ct
95a33ba3c0 fix(unit): comment out this test for now to see if the rest pass 2025-06-08 21:54:19 +00:00
perf3ct
b28387bada feat(llm): decrease the throttle on the chunking tests lol 2025-06-08 21:47:53 +00:00
perf3ct
93cf868dcf feat(llm): last test should be passing now 2025-06-08 21:38:57 +00:00
perf3ct
224cae6db2 fix(unit): resolve type errors 2025-06-08 21:03:07 +00:00
perf3ct
0c44dd0e63 fix(unit): alright I'm just going to get rid of this test to pick my battles 2025-06-08 20:55:27 +00:00
perf3ct
d60e795421 feat(llm): still working on fixing tests... 2025-06-08 20:39:35 +00:00
perf3ct
c6f2124e9d feat(llm): add tests for streaming 2025-06-08 20:30:33 +00:00
Elian Doran
04f4933e97 fix(share): fonts not loading 2025-06-08 23:23:21 +03:00
Elian Doran
fa5cd150d9 fix(share): loading of tree and table of contents 2025-06-08 23:22:59 +03:00
Elian Doran
9469433143 chore(share): basic integration of CSS 2025-06-08 23:12:09 +03:00
Elian Doran
881a015f68 chore(share): integrate root template 2025-06-08 22:57:24 +03:00
Elian Doran
8e27d877a1 chore(share): install packages 2025-06-08 22:16:21 +03:00
Elian Doran
eea3163f51 Add 'packages/share-theme/' from commit '2cdd2a0a543f0bced8284ca55bc94efadbc7c91f'
git-subtree-dir: packages/share-theme
git-subtree-mainline: d8f0709bce
git-subtree-split: 2cdd2a0a54
2025-06-08 22:06:45 +03:00
perf3ct
c1bcb73337 feat(llm): also improve the llm streaming service, to make it cooperate with unit tests better 2025-06-08 18:40:20 +00:00
Elian Doran
d8f0709bce fix(editor): white screen if CKEditor crashes a second time 2025-06-08 21:35:01 +03:00
perf3ct
40cad2e886 fix(unit): I believe it should pass now? 2025-06-08 18:20:30 +00:00
perf3ct
a8faf5d699 fix(unit): still working on getting the LLM unit tests to pass... 2025-06-08 18:13:27 +00:00
Elian Doran
d7f26fa27c fix(editor): data loss if updating while editor crashed 2025-06-08 20:39:31 +03:00
Elian Doran
b379f89a7a chore(client): fix logging errors with circular objects 2025-06-08 20:35:38 +03:00
Elian Doran
10abb50971 chore(text): remove duplicate error log 2025-06-08 20:31:09 +03:00
perf3ct
e011c56715 fix(unit): no more type errors hopefully 2025-06-08 16:33:26 +00:00
Jon Fuller
d7abd3a8ed Merge branch 'develop' into feat/llm-unit-tests 2025-06-08 08:49:08 -07:00
SiriusXT
be447b4139 fix(move_block): keep moved blocks in view 2025-06-08 16:49:02 +08:00
SiriusXT
48613da57f fix(move_block): move multiple lines up/down 2025-06-08 16:30:10 +08:00
Elian Doran
ef111c36c0 Merge pull request #2219 from hulmgulm/nginx
Doc: update Nginx reverse proxy documentation
2025-06-08 11:02:07 +03:00
hulmgulm
765601bb75 Merge branch 'TriliumNext:develop' into nginx 2025-06-08 09:52:18 +02:00
Elian Doran
e87789d92b Merge pull request #2208 from TriliumNext/fix/llm-chat-save-bug
fix(llm): save to the same note that the chat request was sent from
2025-06-08 10:45:58 +03:00
Elian Doran
a95acd5529 Merge pull request #2210 from TriliumNext/renovate/compression-1.x
chore(deps): update dependency @types/compression to v1.8.1
2025-06-08 10:45:39 +03:00
Elian Doran
34bc4c9c8c Merge pull request #2218 from hulmgulm/develop
Doc: Updated theme reference
2025-06-08 10:43:50 +03:00
renovate[bot]
e3d0a73459 chore(deps): update dependency @types/compression to v1.8.1 2025-06-08 07:43:23 +00:00
Elian Doran
93b5fc2236 Merge pull request #2206 from TriliumNext/fix/llm-embeddings-removal-increment-version
fix(server): increment SYNC_VERSION and APP_DB_VERSION for LLM embedd…
2025-06-08 10:42:59 +03:00
Elian Doran
8c25b59bed Merge pull request #2217 from TriliumNext/fix/llm-add-warning2
feat(llm): add warning to the top of LLM Chat Notes and LLM settings that the feature is experimental
2025-06-08 10:40:22 +03:00
Elian Doran
fb8f3d1d29 Merge pull request #2212 from TriliumNext/renovate/express-5.x-lockfile
chore(deps): update dependency @types/express to v5.0.3
2025-06-08 10:38:53 +03:00
renovate[bot]
3f1007e904 chore(deps): update dependency @types/express to v5.0.3 2025-06-08 07:36:36 +00:00
Elian Doran
916e855ed0 Merge pull request #2215 from TriliumNext/renovate/multer-1.x
chore(deps): update dependency @types/multer to v1.4.13
2025-06-08 10:33:11 +03:00
renovate[bot]
5b154d2544 chore(deps): update dependency @types/multer to v1.4.13 2025-06-08 07:31:57 +00:00
Elian Doran
6734dae956 chore(server): add serve-nodir 2025-06-08 10:29:20 +03:00
Elian Doran
6b844063b6 Merge pull request #2216 from TriliumNext/renovate/serve-static-1.x
chore(deps): update dependency @types/serve-static to v1.15.8
2025-06-08 10:28:11 +03:00
Elian Doran
5313ce7843 Merge pull request #2211 from TriliumNext/renovate/cookie-parser-1.x
chore(deps): update dependency @types/cookie-parser to v1.4.9
2025-06-08 10:27:33 +03:00
Elian Doran
34fa770748 Merge pull request #2213 from TriliumNext/renovate/express-session-1.x
chore(deps): update dependency @types/express-session to v1.18.2
2025-06-08 10:26:58 +03:00
Elian Doran
ee1e0da156 Merge pull request #2214 from TriliumNext/renovate/mime-types-3.x
chore(deps): update dependency @types/mime-types to v3.0.1
2025-06-08 10:26:27 +03:00
hulmgulm
48a310e0aa Update Nginx.md 2025-06-08 08:34:27 +02:00
hulmgulm
7ef610b702 Update Reference.md 2025-06-08 08:14:39 +02:00
perf3ct
29d9c9834a feat(llm): add warning to the top of LLM Chat Notes and LLM settings that the feature is experimental 2025-06-08 04:48:19 +00:00
perf3ct
055b34fb46 feat(llm): fix last unit tests 2025-06-08 04:33:33 +00:00
renovate[bot]
858801502d chore(deps): update dependency @types/serve-static to v1.15.8 2025-06-08 01:58:09 +00:00
renovate[bot]
f83d33754e chore(deps): update dependency @types/mime-types to v3.0.1 2025-06-08 01:56:48 +00:00
renovate[bot]
a3c655ffc5 chore(deps): update dependency @types/express-session to v1.18.2 2025-06-08 01:55:20 +00:00
renovate[bot]
cf9f59304c chore(deps): update dependency @types/cookie-parser to v1.4.9 2025-06-08 01:53:26 +00:00
perf3ct
cc089c245e fix(llm): save the chat to a specific note, not the currently active note 2025-06-08 00:02:40 +00:00
perf3ct
c6062f453a fix(llm): changing providers works now 2025-06-07 23:57:35 +00:00
perf3ct
414781936b fix(llm): always fetch the user's selected model 2025-06-07 23:36:53 +00:00
perf3ct
0ce5307c0b fix(llm): well this has been using the wrong value the whole time 2025-06-07 23:16:44 +00:00
perf3ct
313c624871 feat(e2e): more tests pass! 2025-06-07 23:15:30 +00:00
perf3ct
d8bbece02a feat(e2e): llm tests mostly pass 2025-06-07 23:07:54 +00:00
perf3ct
bb483558b0 feat(llm): add e2e tests for llm 2025-06-07 22:41:55 +00:00
perf3ct
b6b88dff86 fix(server): increment SYNC_VERSION and APP_DB_VERSION for LLM embeddings removal 2025-06-07 21:13:02 +00:00
perf3ct
7f9ad04b57 feat(llm): create unit tests for LLM services 2025-06-07 21:03:54 +00:00
perf3ct
c2eed44150 fix(llm): make sure that we're referencing the correct Note ID when saving 2025-06-07 20:15:11 +00:00
Elian Doran
ebb1654d0e Merge pull request #2205 from TriliumNext/feat/llm-remove-embeddings
Remove Embeddings from LLM feature
2025-06-07 22:54:05 +03:00
perf3ct
ff37050470 fix(llm): delete provider_manager for embeddings too 2025-06-07 19:33:19 +00:00
perf3ct
b0d804da08 fix(llm): remove the vectorSearch stage from the pipeline 2025-06-07 18:57:08 +00:00
perf3ct
4550c12c6e feat(llm): remove everything to do with embeddings, part 3 2025-06-07 18:30:46 +00:00
perf3ct
44a2e7df21 feat(llm): remove everything to do with embeddings, part 2 2025-06-07 18:20:06 +00:00
Elian Doran
bed3c61142 Merge branch 'develop' of https://github.com/TriliumNext/Notes into develop 2025-06-07 21:15:38 +03:00
perf3ct
44a45780b7 feat(llm): remove everything to do with embeddings 2025-06-07 18:11:12 +00:00
Elian Doran
cedf6cc631 Merge pull request #1888 from TriliumNext/renovate/express-5.x
fix(deps): update dependency express to v5
2025-06-07 20:17:10 +03:00
Elian Doran
7281233012 chore(build): enable source maps 2025-06-07 20:12:13 +03:00
Elian Doran
4def18e882 fix(desktop): query parameters not working 2025-06-07 18:46:29 +03:00
Elian Doran
03024ef7a9 chore(desktop): bypass query error 2025-06-07 15:59:17 +03:00
Elian Doran
9907f7f60f fix(desktop): CLS failing due to lack of listeners 2025-06-07 15:45:56 +03:00
Elian Doran
ebeabe2b54 fix(desktop): adapt request mocking to express 5 2025-06-07 14:58:07 +03:00
Panagiotis Papadopoulos
0bc91349f6 refactor(routes/custom): update path "/custom/*path" for express v5 2025-06-07 14:21:37 +03:00
Panagiotis Papadopoulos
23297c9860 fix(routes): remove unused wildcard in apiRoute "/api/options/:name/:value*"
the updateOption function that handles the req.param is just destructuring `const { name, value } = req.params;` and does nothing else with the path or any params.
The remaining parts of the wildcard (which can be accessed via req.param[0]) are just ignored here.

even with express v4, this would *always* just take and process the very first part of the path, in the exact wildcard's place, e.g.

`/api/options/locale/de` and
`/api/options/locale/de/test/whatever`
would *both* end up destructuring "value" from req.param as "de" (because it is in the exact place of the 'value' wildcard)

in express v5 the wildcard behaviour changes -> here req.param.value would return an array with the paths split into separate string.

but since the code previously regarded only the first part of the path -> we can just get rid of the wildcard and use a named route param

the only thing to keep in mind: if a request with more than one "value" is received, (e.g. `/api/options/locale/de/test/whatever`) -> since we don't have the wildcard anymore  -> this will turn to a 404.
IMHO that is actually desirable here though
2025-06-07 14:21:35 +03:00
renovate[bot]
086bd10f84 fix(deps): update dependency express to v5 2025-06-07 11:15:22 +00:00
Elian Doran
70cdc100d9 Merge pull request #2198 from TriliumNext/oidc
Support custom oidc server
2025-06-07 14:13:14 +03:00
Elian Doran
17c2ae1177 Merge pull request #2177 from TriliumNext/tab-row-scroll
fix(tab-row): ensure similar behavior between horizontal/vertical scrolling
2025-06-07 14:05:03 +03:00
Elian Doran
497a851ebe Merge branch 'develop' of https://github.com/TriliumNext/Notes into develop 2025-06-07 13:52:00 +03:00
Elian Doran
9a48547232 Merge pull request #2194 from TriliumNext/renovate/eslint-config-ckeditor5-11.x-lockfile
chore(deps): update dependency eslint-config-ckeditor5 to v11
2025-06-07 13:42:36 +03:00
Elian Doran
97dfd454b8 Merge pull request #2195 from TriliumNext/renovate/stylelint-config-ckeditor5-11.x-lockfile
chore(deps): update dependency stylelint-config-ckeditor5 to v11
2025-06-07 13:42:14 +03:00
Elian Doran
2d8317887d chore(release): fix setting as prerelease 2025-06-07 13:35:29 +03:00
Elian Doran
5dc4f0eae6 docs(readme): add badge to relative CI for client 2025-06-07 13:30:21 +03:00
JYC333
8849d482b0 Merge pull request #2193 from TriliumNext/renovate/vitest-monorepo
chore(deps): update vitest monorepo to v3.2.2
2025-06-07 12:15:23 +02:00
Jin
bffb47645c fix: 🐛 fix SSO icon loading 2025-06-07 12:10:41 +02:00
Jin
4cafd83c25 feat: 🎸 set SSO login page ui 2025-06-07 12:10:41 +02:00
Jin
db3bf4c12c feat: 🎸 set SSO login logic 2025-06-07 12:10:41 +02:00
Jin
fa44a5343b feat: 🎸 support custon oidc server 2025-06-07 12:10:41 +02:00
renovate[bot]
e5cc58b4e2 chore(deps): update dependency stylelint-config-ckeditor5 to v11 2025-06-07 10:06:51 +00:00
renovate[bot]
dbaee4d29b chore(deps): update dependency eslint-config-ckeditor5 to v11 2025-06-07 10:06:01 +00:00
renovate[bot]
a6d1fd3d9f chore(deps): update vitest monorepo to v3.2.2 2025-06-07 10:05:13 +00:00
Elian Doran
c8b3cdf01b feat(ci): introduce RelativeCI for the client 2025-06-07 13:02:37 +03:00
Elian Doran
5a53fbbb01 chore(ci): get rid of size reporters 2025-06-07 12:52:33 +03:00
Elian Doran
408dcf7713 chore(release): prepare for v0.94.1 2025-06-07 12:46:18 +03:00
Elian Doran
7cbff47078 docs(release): mention rebranding process 2025-06-07 12:45:07 +03:00
Elian Doran
d20386f8da chore(release): add changelog 2025-06-07 12:38:06 +03:00
Elian Doran
4fd99e1728 docs(user): describe session management 2025-06-07 12:38:06 +03:00
Elian Doran
af698550fd Merge pull request #2197 from TriliumNext/ck_patch
fix(ckeditor5): scroll to selection after undo/redo to keep cursor in view
2025-06-07 12:15:02 +03:00
Elian Doran
e50f5ce139 Merge branch 'develop' into ck_patch 2025-06-07 12:11:23 +03:00
Elian Doran
7a04c8a7fd Merge branch 'develop' of https://github.com/TriliumNext/Notes into develop 2025-06-07 12:04:16 +03:00
Elian Doran
68631150af chore(test): adjust timeout 2025-06-07 12:04:14 +03:00
SiriusXT
9dd7f75ec0 fix(ckeditor5): scroll to selection after undo/redo to keep cursor in view 2025-06-07 16:51:10 +08:00
SiriusXT
e70b0d47c9 chore: fix incorrect comment in date/time 2025-06-07 16:49:10 +08:00
Elian Doran
9ead5abc62 Merge pull request #2181 from TriliumNext/feat/llm-change-to-single-provider
LLM integration, part 4
2025-06-07 11:38:30 +03:00
Elian Doran
a7f4bcda8f fix(test): wrong assertion after changing expiration interval 2025-06-07 11:38:18 +03:00
Elian Doran
5c87bab5a7 Merge branch 'develop' of https://github.com/TriliumNext/Notes into develop 2025-06-07 11:28:32 +03:00
Elian Doran
68163f90d1 fix(server): keep session cookies up to to 24h (closes #2196) 2025-06-07 11:28:30 +03:00
Elian Doran
dc35ad9ace fix(server): type errors due to session management 2025-06-07 11:27:07 +03:00
Elian Doran
244a162e42 feat(server): renew session when "Remember me" is off 2025-06-07 11:12:36 +03:00
JYC333
27b54fd7a4 Merge pull request #2192 from TriliumNext/renovate/nx-monorepo
chore(deps): update nx monorepo to v21.1.3
2025-06-07 10:10:07 +02:00
Elian Doran
f8ded7b171 test(server): sessions are cleaned up 2025-06-07 10:47:02 +03:00
Elian Doran
3cf35f9e0c refactor(test): group login tests 2025-06-07 10:33:02 +03:00
Elian Doran
8516df8f9b test(server): ensure session expiry date is well set 2025-06-07 10:10:04 +03:00
Elian Doran
e003ec3b6f test(server): ensure session info exists 2025-06-07 10:03:53 +03:00
Elian Doran
2ceab66b98 refactor(server): augment session data instead of replacing it at request level 2025-06-07 09:55:19 +03:00
perf3ct
6fdd0d021c fix(llm): don't show embedding models in the chat section 2025-06-07 04:23:18 +00:00
perf3ct
4732d7784f fix(llm): add missing translations 2025-06-07 04:13:57 +00:00
renovate[bot]
3bb84ee676 chore(deps): update nx monorepo to v21.1.3 2025-06-07 02:05:12 +00:00
perf3ct
cb3844e627 fix(llm): fix duplicated text when streaming responses 2025-06-07 00:27:56 +00:00
perf3ct
6bc9b3c184 feat(llm): resolve sending double headers in responses, and not being able to send requests to ollama 2025-06-07 00:02:26 +00:00
Elian Doran
941d0d45f8 feat(client): render tooltips for bookmarks 2025-06-07 00:03:30 +03:00
Elian Doran
6e67832416 fix(client): clicking on note list not working due to anchor management 2025-06-06 23:59:43 +03:00
Elian Doran
73cf828bc9 feat(client): one-click navigation to bookmarks (closes #2187) 2025-06-06 23:50:42 +03:00
Elian Doran
7007feabd8 chore(client): text notes not rendering in dev mode 2025-06-06 23:47:35 +03:00
perf3ct
20ec294774 feat(llm): still work on decomplicating provider creation 2025-06-06 20:30:24 +00:00
Elian Doran
acaaf1f1f4 Merge branch 'develop' of https://github.com/TriliumNext/Notes into develop 2025-06-06 23:26:34 +03:00
Elian Doran
c18451a378 fix(server): no longer working subdir due to assets (fixes #2098) 2025-06-06 23:26:30 +03:00
perf3ct
8f33f37de3 feat(llm): for sure overcomplicate what should be a very simple thing 2025-06-06 20:11:33 +00:00
perf3ct
85cfc8fbd4 feat(llm): have OpenAI provider not require API keys (for endpoints like LM Studio) 2025-06-06 19:22:39 +00:00
Elian Doran
4489f6c437 Merge pull request #1918 from TriliumNext/feat/note-edit-readonly-fix2
Store initial "automatic read-only" decision, so that actively edited Note doesn't transition to read-only
2025-06-06 19:42:15 +03:00
Elian Doran
a2a509d45c refactor(client): rename readOnlyDecision 2025-06-06 19:29:06 +03:00
Elian Doran
091cd7a18a fix(server): totp asked even if no authentication is enabled 2025-06-06 16:17:21 +03:00
SiriusXT
17885f6091 fix(tab-row): Remove smooth scrolling 2025-06-06 19:09:25 +08:00
SiriusXT
537ad1c1e5 fix(tab-row): Fix extra +1 when extraWidthRemaining is a decimal 2025-06-06 15:55:00 +08:00
Elian Doran
63a6f00a47 chore(server): add logs to debug missing session 2025-06-06 09:27:51 +03:00
Elian Doran
1a54a17b0d Merge pull request #2182 from TriliumNext/renovate/node-22.x
chore(deps): update dependency @types/node to v22.15.30
2025-06-06 09:24:25 +03:00
renovate[bot]
4eaeeaaaa1 chore(deps): update dependency @types/node to v22.15.30 2025-06-06 06:14:50 +00:00
Elian Doran
255c69b867 style(client): fix dropdown selection color 2025-06-06 09:13:43 +03:00
Elian Doran
f99a59359d Merge pull request #2183 from TriliumNext/renovate/openai-5.x
chore(deps): update dependency openai to v5.1.1
2025-06-06 09:11:35 +03:00
Elian Doran
f25c6ec358 Merge pull request #2184 from TriliumNext/renovate/vitest-monorepo
chore(deps): update vitest monorepo to v3.2.2
2025-06-06 09:11:13 +03:00
renovate[bot]
0b15dd7ad2 chore(deps): update vitest monorepo to v3.2.2 2025-06-06 01:31:34 +00:00
renovate[bot]
bc09c6f217 chore(deps): update dependency openai to v5.1.1 2025-06-06 01:30:50 +00:00
SiriusXT
a38c091d73 Merge branch 'develop' into tab-row-scroll 2025-06-06 09:09:56 +08:00
SiriusXT
f723ca65d1 fix(tab-row): Reduce animation frames 2025-06-06 09:08:17 +08:00
SiriusXT
6d416cfe65 fix(tab-row): Reduce animation frames 2025-06-06 09:06:14 +08:00
perf3ct
c26b74495c feat(llm): remove LLM deprecated functions 2025-06-05 22:34:20 +00:00
perf3ct
3a4bb47cc1 feat(llm): embeddings work and are created when launching for the first ever time 2025-06-05 21:03:15 +00:00
JYC333
0af1c8b3be Merge pull request #2083 from TriliumNext/date/time
feat: Add configurable date/time format for Alt+T shortcut
2025-06-05 21:48:14 +02:00
JYC333
96431fc581 Merge branch 'develop' into date/time 2025-06-05 21:29:39 +02:00
perf3ct
bb8a374ab8 feat(llm): transition from initializing LLM providers, to creating them on demand 2025-06-05 19:27:45 +00:00
perf3ct
c1b10d70b8 feat(llm): also add functions to clear/unregister embedding providers 2025-06-05 18:59:32 +00:00
perf3ct
49e123f399 feat(llm): create endpoints for starting/stopping embeddings 2025-06-05 18:47:25 +00:00
perf3ct
a084805762 Merge branch 'develop' into feat/llm-change-to-single-provider 2025-06-05 18:26:40 +00:00
Elian Doran
e56e3595a8 fix(client): context menu dismissing on mobile (closes #2128) 2025-06-05 19:14:50 +03:00
Elian Doran
f527b13973 Merge pull request #2179 from TriliumNext/demo
docs: ✏️ Fix Journal demo relation name
2025-06-05 18:22:51 +03:00
SiriusXT
ea1bce4e7b fix(tab-row): ensure similar behavior between horizontal/vertical scrolling 2025-06-05 23:19:00 +08:00
Jin
4770bdeb90 docs: ✏️ Fix Journal demo relation name 2025-06-05 17:16:37 +02:00
Elian Doran
818b7afeff feat(docker): try building linux/arm/v8
This is conceptually the same as as linux/arm64 but it is needed on some providers.
2025-06-05 18:13:59 +03:00
SiriusXT
6508ef4fce fix(tab-row): Avoid this.newTabOuterWidth being a decimal in Electron 2025-06-05 20:27:58 +08:00
SiriusXT
7b1c6807ba fix(tab-row): Remove shift+wheel tab switching 2025-06-05 20:20:29 +08:00
SiriusXT
be8ee350cb fix(tab-row): ensure similar behavior between horizontal/vertical scrolling 2025-06-05 19:54:37 +08:00
Elian Doran
b39119119b fix(share): custom share templates no longer working 2025-06-05 14:32:49 +03:00
Elian Doran
79dae44dbc feat(share): improve error logging for missing templates 2025-06-05 14:32:49 +03:00
Elian Doran
b81be8f8d7 feat(share): pass t for translations 2025-06-05 14:32:49 +03:00
SiriusXT
5d017f4524 Merge branch 'develop' into date/time 2025-06-05 18:57:19 +08:00
SiriusXT
99d26b794d Merge branch 'develop' into tab-row-scroll 2025-06-05 18:27:05 +08:00
Elian Doran
ccff7baf95 Merge pull request #2145 from TriliumNext/renovate/electron-36.x
chore(deps): update dependency electron to v36.4.0
2025-06-05 12:57:56 +03:00
Elian Doran
1911323033 Merge pull request #2146 from TriliumNext/renovate/ckeditor-monorepo
fix(deps): update ckeditor monorepo to v45.2.0
2025-06-05 12:56:57 +03:00
SiriusXT
b721bb4cfc fix(tab-row): ensure similar behavior between horizontal/vertical scrolling 2025-06-05 17:54:34 +08:00
renovate[bot]
f3d03be9a5 fix(deps): update ckeditor monorepo to v45.2.0 2025-06-05 09:24:58 +00:00
renovate[bot]
c06ca0dbf8 chore(deps): update dependency electron to v36.4.0 2025-06-05 09:24:16 +00:00
Elian Doran
14269fdfa5 Merge pull request #2143 from TriliumNext/renovate/eslint-stylistic-monorepo
chore(deps): update dependency @stylistic/eslint-plugin to v4.4.1
2025-06-05 12:21:58 +03:00
renovate[bot]
3fba17d73f chore(deps): update dependency @stylistic/eslint-plugin to v4.4.1 2025-06-05 09:18:08 +00:00
Elian Doran
9d477fcc8d Merge pull request #2171 from TriliumNext/renovate/ckeditor-ckeditor5-package-tools-4.x
chore(deps): update dependency @ckeditor/ckeditor5-package-tools to v4
2025-06-05 12:15:08 +03:00
Elian Doran
ca19268bd1 Merge pull request #2144 from TriliumNext/renovate/react-monorepo
chore(deps): update dependency @types/react-dom to v19.1.6
2025-06-05 12:13:56 +03:00
Elian Doran
a36178be03 Merge pull request #2174 from TriliumNext/renovate/anthropic-ai-sdk-0.x
chore(deps): update dependency @anthropic-ai/sdk to v0.53.0
2025-06-05 12:13:29 +03:00
renovate[bot]
5dc48a776c chore(deps): update dependency @types/react-dom to v19.1.6 2025-06-05 09:13:08 +00:00
Elian Doran
c787c870f4 Merge pull request #2175 from TriliumNext/renovate/codemirror-themes
fix(deps): update codemirror themes to v6.2.0
2025-06-05 12:10:58 +03:00
renovate[bot]
1eb53f448a fix(deps): update codemirror themes to v6.2.0 2025-06-05 08:45:23 +00:00
renovate[bot]
839369e253 chore(deps): update dependency @ckeditor/ckeditor5-package-tools to v4 2025-06-05 08:38:18 +00:00
renovate[bot]
446a38e861 chore(deps): update dependency @anthropic-ai/sdk to v0.53.0 2025-06-05 08:36:11 +00:00
Elian Doran
9e8a388592 chore(renovate): group codemirror themes into single PR 2025-06-05 11:32:59 +03:00
Elian Doran
8349204982 chore(docs): mention upcoming changes to branding 2025-06-05 09:03:57 +03:00
Elian Doran
0c8ea23345 Revert "chore: 🤖 Update docs"
This reverts commit 6caba39621.
2025-06-05 08:52:38 +03:00
perf3ct
5db514e245 fix(llm): fix the buggy embedding selection dropdown 2025-06-04 23:02:10 +00:00
perf3ct
5bc2c3ac18 feat(llm): also have the embedding provider settings be changeable 2025-06-04 22:58:20 +00:00
perf3ct
63722a28a2 feat(llm): also add embeddings options for embedding creation 2025-06-04 22:30:16 +00:00
perf3ct
3dee462476 feat(llm): automatically fetch models when provider settings change 2025-06-04 21:32:42 +00:00
perf3ct
fe15a0378a fix(llm): have the model_selection_stage use the instance of the aiServiceManager 2025-06-04 20:23:06 +00:00
JYC333
c40e224727 Merge pull request #2136 from TriliumNext/dateNote
Calendar template docs update
2025-06-04 22:15:05 +02:00
perf3ct
a20e36f4ee feat(llm): change from using precedence list to using a sing specified provider for either chat and/or embeddings 2025-06-04 20:13:13 +00:00
Elian Doran
9bfadd7799 Merge branch 'develop' into dateNote 2025-06-04 22:54:10 +03:00
Elian Doran
4475568d19 fix(server): migration not working due to change in becca loader 2025-06-04 22:36:51 +03:00
Elian Doran
f9d8bf26c4 test(server): migrate integration database to latest 2025-06-04 21:51:46 +03:00
Elian Doran
86689896a1 test(server): don't do automatic backup if migrating database 2025-06-04 21:44:27 +03:00
Elian Doran
c538b54947 Merge branch 'develop' of github.com:TriliumNext/Notes into develop 2025-06-04 20:21:10 +03:00
Elian Doran
a334e82eb0 chore(ci): switch to 22.04 for compatibility reasons 2025-06-04 20:21:07 +03:00
Elian Doran
1818ae1f72 fix(desktop): blank screen when starting (closes #2103) 2025-06-04 19:55:04 +03:00
Jin
3339b36e61 docs: ✏️ Fix day note docs error 2025-06-04 17:01:00 +02:00
Elian Doran
5fc8100c5d fix(build): not all entity types taken into consideration 2025-06-04 15:48:38 +03:00
Jin
f3aa6adb65 docs: ✏️ Update day note and template docs 2025-06-04 11:14:42 +02:00
Jin
6caba39621 chore: 🤖 Update docs 2025-06-04 11:00:14 +02:00
SiriusXT
a88815cf6b fix(insert time): resolve merge conflicts 2025-06-04 16:53:36 +08:00
Jin
deacd7f340 docs: ✏️ Update day note docs 2025-06-04 10:52:19 +02:00
SiriusXT
8b8969f6e9 feat(insert time):fix: resolve merge conflicts 2025-06-04 16:50:36 +08:00
SiriusXT
3cdee1ac86 Merge branch 'develop' into date/time 2025-06-04 16:48:37 +08:00
Elian Doran
df7f0d4099 Merge pull request #2110 from TriliumNext/feat/llm-integration-part3
LLM Integration, part 3
2025-06-04 11:41:49 +03:00
Elian Doran
6563601667 Merge pull request #2123 from FliegendeWurst/shortcuts-i18n
feat(i18n): description for all keyboard shortcuts
2025-06-04 11:39:47 +03:00
Elian Doran
8445ece231 Merge pull request #2106 from TriliumNext/fix/llm-becca-sync
fix(llm): Fix Note Embeddings not being synced correctly and causing sync loops
2025-06-04 11:38:49 +03:00
Elian Doran
dfed0d5f5b Merge pull request #2092 from TriliumNext/feature/grafana-dashboard
feat(metrics): add documentation for using grafana dashboard
2025-06-04 11:35:55 +03:00
Elian Doran
2e1ced38e4 Merge pull request #2127 from TriliumNext/fix/llm-model-names
fix(llm): don't filter for specific words when pulling models for openai
2025-06-04 11:34:47 +03:00
Jin
48ad381a50 refactor: 💡 Add typing 2025-06-04 10:33:40 +02:00
Elian Doran
4cab710dfd Merge pull request #2101 from TriliumNext/patch-theme-2
fix(theme): theme is not enabled on the phone
2025-06-04 11:28:22 +03:00
Elian Doran
869ebc8844 Merge pull request #2129 from TriliumNext/renovate/happy-dom-monorepo
chore(deps): update dependency happy-dom to v17.6.3
2025-06-04 11:13:26 +03:00
Elian Doran
c5662cae46 Merge pull request #2100 from TriliumNext/patch-style
fix(theme): missing --selection-background-color in theme
2025-06-04 11:12:08 +03:00
Elian Doran
aa6ad0b619 Merge pull request #2117 from TriliumNext/external_links
fix(link): Allow external links containing # to open
2025-06-04 11:10:08 +03:00
Elian Doran
555c596a0f Merge branch 'develop' into shortcuts-i18n 2025-06-04 11:04:41 +03:00
Elian Doran
5b9b51d905 Merge branch 'develop' into renovate/happy-dom-monorepo 2025-06-04 11:00:36 +03:00
Elian Doran
d61fe70f4e Merge branch 'develop' of github.com:TriliumNext/Notes into develop 2025-06-04 10:53:09 +03:00
Elian Doran
6405b6e7e4 chore(server): remove configuration for reporters 2025-06-04 10:52:52 +03:00
Jin
f650cca652 refactor: 💡 replace substr with substring 2025-06-04 09:47:05 +02:00
renovate[bot]
62161f6a5d chore(deps): update dependency happy-dom to v17.6.3 2025-06-04 07:37:20 +00:00
Elian Doran
ce570bf080 Merge branch 'develop' into feature/grafana-dashboard 2025-06-04 10:36:56 +03:00
Elian Doran
f4358f3dc1 Merge branch 'develop' into patch-style 2025-06-04 10:36:49 +03:00
Elian Doran
3ccc16ca19 Merge pull request #2130 from TriliumNext/renovate/multer-2.x
chore(deps): update dependency multer to v2.0.1
2025-06-04 10:33:37 +03:00
Elian Doran
75135b390b Merge pull request #2131 from TriliumNext/renovate/vitest-monorepo
chore(deps): update vitest monorepo to v3.2.1
2025-06-04 10:33:08 +03:00
Elian Doran
853ad9fe25 Merge pull request #2132 from TriliumNext/renovate/openai-5.x
chore(deps): update dependency openai to v5.1.0
2025-06-04 10:32:38 +03:00
Elian Doran
f781ded95e Merge pull request #2107 from FliegendeWurst/flake-incremental
refactor(flake): use pnpm2nix, add server package
2025-06-04 10:06:29 +03:00
renovate[bot]
93ea1e7cdb chore(deps): update dependency openai to v5.1.0 2025-06-04 07:05:07 +00:00
renovate[bot]
fd4bc922c1 chore(deps): update vitest monorepo to v3.2.1 2025-06-04 07:04:24 +00:00
renovate[bot]
e24b467801 chore(deps): update dependency multer to v2.0.1 2025-06-04 07:03:31 +00:00
SiriusXT
6a80bda335 vitest(link): add Vitest test cases for parseNavigationStateFromUrl 2025-06-04 14:58:11 +08:00
SiriusXT
69d1c1519f fix(link): Allow external links containing # to open 2025-06-04 14:57:13 +08:00
Elian Doran
dbeb4e1c87 fix(share): missing CK editor stylesheet (closes #2124) 2025-06-04 09:22:07 +03:00
Elian Doran
380cb62d2b chore(editor): relocate bookmark icon in floating toolbar 2025-06-04 08:54:18 +03:00
SiriusXT
0b3ebae59c fix(insert time): Remove unnecessary async 2025-06-04 09:07:15 +08:00
perf3ct
3050424d53 fix(llm): don't filter for specific words when pulling models for openai 2025-06-03 20:47:16 +00:00
Elian Doran
307af229ae fix(test): one more flaky test 2025-06-03 21:25:00 +03:00
Elian Doran
4a4c34e966 fix(test): some etapi tests failing 2025-06-03 20:16:39 +03:00
FliegendeWurst
12d018fdfc feat(i18n): description for all keyboard shortcuts 2025-06-03 19:10:12 +02:00
Elian Doran
cecbe5862c fix(etapi): some endpoints failing due to async (closes #2105) 2025-06-03 19:46:38 +03:00
Elian Doran
ff1a8d2280 test(etapi): port get-date-notes 2025-06-03 19:32:17 +03:00
Elian Doran
931f9e572a test(etapi): deduplicate cloning in delete-entities 2025-06-03 19:24:23 +03:00
Elian Doran
cd310119bc test(etapi): delete-entities not running properly due to missing await 2025-06-03 19:23:11 +03:00
Elian Doran
594e264eea test(etapi): port delete-note-with-all-branches 2025-06-03 19:21:02 +03:00
Elian Doran
9d1717ca9f test(etapi): port delete-cloned-branch 2025-06-03 19:16:59 +03:00
Elian Doran
94fd53db05 test(etapi): port delete-attribute 2025-06-03 19:11:27 +03:00
Elian Doran
fe19e05715 test(etapi): port delete-attachment 2025-06-03 19:08:50 +03:00
Elian Doran
3ec29b2e21 test(etapi): port get-inherited-attribute-cloned 2025-06-03 18:38:15 +03:00
FliegendeWurst
7c47cf420c fix(flake): remove pnpm version override 2025-06-03 17:37:57 +02:00
Elian Doran
9d24ed902c test(etapi): port get-inherited-attribute 2025-06-03 18:26:13 +03:00
FliegendeWurst
267facbaa0 fix(flake): remove not needed build artifacts 2025-06-03 17:15:00 +02:00
FliegendeWurst
d86337a993 refactor(flake): use pnpm2nix, add server package 2025-06-03 17:15:00 +02:00
Elian Doran
8b2d951ad1 test(etapi): port patch-attribute 2025-06-03 18:14:49 +03:00
JYC333
cf24308cb0 Merge pull request #2114 from TriliumNext/renovate/happy-dom-monorepo
chore(deps): update dependency happy-dom to v17.6.1
2025-06-03 16:56:59 +02:00
JYC333
815f087bcb Merge pull request #2115 from TriliumNext/renovate/vitest-monorepo
chore(deps): update dependency @vitest/coverage-v8 to v3.2.0
2025-06-03 16:51:23 +02:00
renovate[bot]
28b2454761 chore(deps): update dependency happy-dom to v17.6.1 2025-06-03 14:51:09 +00:00
JYC333
2e16a91cb4 Merge pull request #2113 from TriliumNext/renovate/typescript-eslint-monorepo
chore(deps): update typescript-eslint monorepo to v8.33.1
2025-06-03 16:48:51 +02:00
JYC333
9966413402 Merge pull request #2111 from TriliumNext/renovate/openai-5.x
chore(deps): update dependency openai to v5.0.2
2025-06-03 16:48:11 +02:00
Jin
ee478bf2d1 Remove packageManager in apps/desktop 2025-06-03 16:45:29 +02:00
Elian Doran
ee4f9b265e test(etapi): port patch branch 2025-06-03 12:07:44 +03:00
Elian Doran
cfe2bd135b test(etapi): port patch attachment 2025-06-03 12:07:44 +03:00
Elian Doran
2dd2adefae test(etapi): port import zip 2025-06-03 12:07:44 +03:00
Elian Doran
3dfe2ce066 test(etapi): port export note subtree 2025-06-03 12:07:44 +03:00
Elian Doran
94cb18589a test(etapi): port patch note 2025-06-03 12:07:44 +03:00
Elian Doran
842c8a5028 test(etapi): port post revision 2025-06-03 12:07:44 +03:00
Elian Doran
bef121239c test(etapi): port metrics 2025-06-03 12:07:44 +03:00
Elian Doran
dddbb9d4d1 test(etapi): port attachment content 2025-06-03 12:07:44 +03:00
Elian Doran
d75e86789d test(etapi): port note content 2025-06-03 12:07:44 +03:00
Jin
5b051db3eb update pnpm 2025-06-03 09:57:49 +02:00
SiriusXT
a5ba1b0489 fix(link): Allow external links containing # to navigate 2025-06-03 14:27:32 +08:00
perf3ct
b76166b0d5 fix(llm): always fetch the embedding model 2025-06-03 05:13:32 +00:00
perf3ct
336cd1fbda fix(llm): storing >1 message in a chat note works
fix(llm): storing >1 message in a chat note works
2025-06-03 03:15:17 +00:00
perf3ct
d4d55b20a8 fix(llm): get rid of a lot of log.info() statements that were spammy 2025-06-03 03:00:15 +00:00
Jon Fuller
36a1316612 Merge branch 'develop' into patch-style 2025-06-02 19:18:53 -07:00
renovate[bot]
7036616a51 chore(deps): update vitest monorepo to v3.2.0 2025-06-03 01:04:13 +00:00
renovate[bot]
6a69ce65d7 chore(deps): update typescript-eslint monorepo to v8.33.1 2025-06-03 01:02:38 +00:00
renovate[bot]
be3b72d6b0 chore(deps): update dependency openai to v5.0.2 2025-06-03 00:58:57 +00:00
perf3ct
d2ba270fdf fix(llm): sending messages no longer throws an error at first 2025-06-03 00:18:45 +00:00
perf3ct
ab3758c9b3 refactor(llm): resolve issue with headers being sent after request was sent 2025-06-02 23:54:38 +00:00
perf3ct
e7e04b7ccd refactor(llm): streamline chat response handling by simplifying content accumulation and removing unnecessary thinking content processing 2025-06-02 23:25:15 +00:00
perf3ct
aad92b57c7 fix(llm): prevent sent message duplication 2025-06-02 22:47:30 +00:00
perf3ct
0d305cd22c refactor(llm): optimize chat UI updates by checking for new content and preserving scroll position 2025-06-02 22:34:10 +00:00
perf3ct
7b498cf384 refactor(llm): update chat saving logic to prevent race conditions between client and server 2025-06-02 22:30:59 +00:00
perf3ct
ed64a5b4f7 refactor(llm): simplify chat handling by removing session store and directly integrating chat storage service 2025-06-02 22:09:59 +00:00
perf3ct
d8d5318ace refactor(llm): remove deprecated validateEmbeddingProviders method and update session handling in chat services 2025-06-02 21:55:52 +00:00
Jon Fuller
4aa936bd2b Merge branch 'develop' into fix/llm-becca-sync 2025-06-02 14:52:03 -07:00
perf3ct
3a55735cd5 refactor(llm): implement new configuration methods for provider order and validation, enhancing error handling and deprecating legacy functions 2025-06-02 21:49:35 +00:00
perf3ct
5a5a69ebb8 refactor(llm): streamline model selection by utilizing the new configuration system and enhance error handling 2025-06-02 21:44:43 +00:00
perf3ct
ce7c4a31a1 refactor(llm): enhance configuration handling to avoid default assumptions and improve error handling 2025-06-02 21:43:36 +00:00
perf3ct
45175b6af3 refactor(llm): integrate new configuration system for provider management and model selection 2025-06-02 21:36:19 +00:00
perf3ct
00ce765e96 Merge branch 'develop' into feat/llm-integration-part3 2025-06-02 20:24:18 +00:00
perf3ct
934efab533 refactor(llm): update handling of note embeddings and clean up LoadResults class 2025-06-02 19:10:47 +00:00
perf3ct
b0d60f8004 refactor(llm): update NoteEmbeddingRow structure and add handling in LoadResults class 2025-06-02 19:01:34 +00:00
Elian Doran
4ed30e0624 test(etapi): port basic-auth 2025-06-02 21:43:40 +03:00
Elian Doran
26fcc4fb24 feat(flake): support darwin 2025-06-02 21:25:25 +03:00
Elian Doran
95641a3b6d test(etapi): port search 2025-06-02 21:16:57 +03:00
Elian Doran
4e81be8c76 test(etapi): port other 2025-06-02 20:59:25 +03:00
Elian Doran
887a7f900c test(etapi): port create-entities 2025-06-02 20:36:53 +03:00
Elian Doran
6121fb0ad6 test(etapi): port create-backup 2025-06-02 19:30:06 +03:00
Elian Doran
9e6d78b625 test(etapi): port no-token 2025-06-02 19:26:36 +03:00
Elian Doran
f9f3f1983f test(etapi): port basic-auth 2025-06-02 19:16:48 +03:00
Elian Doran
b88af5e4b3 test(etapi): port api-metrics 2025-06-02 19:02:01 +03:00
Elian Doran
053ff0568d test(etapi): port app-info 2025-06-02 18:51:10 +03:00
perf3ct
cc0795f812 fix(llm): also add note_embeddings to froca and consistency tests 2025-06-02 15:49:45 +00:00
perf3ct
f3a21cda98 fix(llm): add the noteEmbedding object to all things becca to make it happy 2025-06-02 15:26:32 +00:00
perf3ct
dcab4caee3 feat(llm): redo chat storage, part 3 2025-06-02 15:12:08 +00:00
Elian Doran
d9249e3760 fix(server): webclipper not working due to import issue 2025-06-02 16:34:41 +03:00
Elian Doran
1af20bdb73 fix(vite): tests not runnable 2025-06-02 16:25:19 +03:00
Elian Doran
d7c6c8f5fd feat(geomap): the line of GPX traces now respects the #color attribute 2025-06-02 15:53:19 +03:00
SiriusXT
78626e67d2 fix(theme): When using next as the base for custom themes, the next theme is not enabled on the phone 2025-06-02 16:13:17 +08:00
Elian Doran
9ba49bdc5f Add 'apps/web-clipper/' from commit '786d249a6effe0262859d05e6cb1737e5fc8bdd8'
git-subtree-dir: apps/web-clipper
git-subtree-mainline: b0e5190718
git-subtree-split: 786d249a6e
2025-06-02 10:26:57 +03:00
SiriusXT
f4f593c2ba fix(theme): missing --selection-background-color in theme 2025-06-02 15:24:52 +08:00
Elian Doran
70fb610e8d Merge branch 'develop' into feature/grafana-dashboard 2025-06-02 09:11:38 +03:00
Elian Doran
b0e5190718 Merge pull request #2081 from TriliumNext/renovate/openai-5.x
chore(deps): update dependency openai to v5
2025-06-02 09:10:17 +03:00
Elian Doran
3819885370 Merge pull request #2078 from TriliumNext/renovate/eslint-linter-browserify-9.x
fix(deps): update dependency eslint-linter-browserify to v9.28.0
2025-06-02 09:09:26 +03:00
Elian Doran
1b72cff234 Merge pull request #2079 from TriliumNext/renovate/eslint-monorepo
fix(deps): update eslint monorepo to v9.28.0
2025-06-02 09:09:04 +03:00
Elian Doran
f4c74b5c7c Merge pull request #2080 from TriliumNext/renovate/mime-types-3.x
chore(deps): update dependency @types/mime-types to v3
2025-06-02 09:08:42 +03:00
Elian Doran
089bf75ee2 Merge pull request #2075 from TriliumNext/feature/nix_flake
Nix flake
2025-06-02 08:58:22 +03:00
perf3ct
f6af617f6b feat(llm): redo chat storage, part 2 2025-06-02 02:38:21 +00:00
perf3ct
03b8eff8f6 feat(metrics): also add metrics feature to readme 2025-06-01 19:18:04 -07:00
perf3ct
86d5e416b5 feat(metrics): add documentation for using grafana dashboard 2025-06-01 19:01:15 -07:00
Jon Fuller
c28edb674c Merge branch 'develop' into feat/note-edit-readonly-fix2 2025-06-01 18:51:28 -07:00
perf3ct
35f78aede9 feat(llm): redo chat storage, part 1 2025-06-02 00:56:19 +00:00
SiriusXT
3c23f5d43f fix(insert time): Improve translation 2025-06-01 21:23:11 +08:00
SiriusXT
7918f8f230 fix(insert time): Improve translation 2025-06-01 20:35:55 +08:00
SiriusXT
b973fc7748 feat(insert time): change file name 2025-06-01 20:16:56 +08:00
SiriusXT
8e56faf9f0 fix(insert time): restore editor focus after inserting time 2025-06-01 19:37:49 +08:00
SiriusXT
cef362c123 feat(insert time): Add inserting time via UI 2025-06-01 19:15:59 +08:00
SiriusXT
22586bfcc0 feat(insert time): Add configurable date/time format for Alt+T shortcut 2025-06-01 16:18:54 +08:00
SiriusXT
029d6df5ec Merge branch 'develop' into date/time 2025-06-01 15:41:46 +08:00
SiriusXT
a8c4b11c9f feat(insert time): Add configurable date/time format for Alt+T shortcut 2025-06-01 15:27:50 +08:00
renovate[bot]
7c2bb38182 chore(deps): update dependency openai to v5 2025-06-01 01:52:10 +00:00
renovate[bot]
2fb2fcf88b chore(deps): update dependency @types/mime-types to v3 2025-06-01 01:51:27 +00:00
renovate[bot]
3c6acc0681 fix(deps): update eslint monorepo to v9.28.0 2025-06-01 01:50:41 +00:00
renovate[bot]
f56804168d fix(deps): update dependency eslint-linter-browserify to v9.28.0 2025-06-01 01:49:10 +00:00
FliegendeWurst
381498433f fix(flake): copy app icon 2025-05-31 19:15:46 +02:00
FliegendeWurst
628c52eb04 fix(flake): don't double wrap output 2025-05-31 19:14:30 +02:00
FliegendeWurst
89e2d46088 fix(flake): handle sass updates better 2025-05-31 19:14:07 +02:00
Elian Doran
0e4ad86fbd Merge pull request #2076 from FliegendeWurst/flake-1
feat(flake): desktop item, wrapped binary
2025-05-31 20:00:52 +03:00
FliegendeWurst
d506283e48 feat(flake): desktop item, wrapped binary 2025-05-31 18:56:32 +02:00
Elian Doran
fc4ec9a045 refactor(flake): deduplicate environment variables 2025-05-31 19:24:43 +03:00
Elian Doran
7b577e31c4 chore(flake): build native dependencies 2025-05-31 19:16:23 +03:00
Elian Doran
93a9911727 chore(flake): actually copy the dist 2025-05-31 18:32:23 +03:00
Elian Doran
e2737d2d55 chore(flake): get build to succeed 2025-05-31 18:23:18 +03:00
Elian Doran
c365cdb6c6 chore(flake): patch dart 2025-05-31 18:21:08 +03:00
Elian Doran
e82567a33d chore(flake): get the build to run 2025-05-31 18:15:22 +03:00
Elian Doran
bbe3bd7107 chore(flake): ignore /result from repo 2025-05-31 18:09:45 +03:00
Elian Doran
5cd087f660 chore(flake): get dependencies to install 2025-05-31 18:08:06 +03:00
Elian Doran
27dd097394 chore(flake): start off with empty project 2025-05-31 17:41:56 +03:00
SngAbc
e2ac581b14 Merge pull request #2072 from vanndoublen/feature/custom-datetime-format
Feature/custom datetime format
2025-05-31 21:50:26 +08:00
vanndoublen
f640c9212e Merge branch 'develop' into feature/custom-datetime-format 2025-05-20 19:55:45 +08:00
iamvann
d1f8e651f4 fix: address the review feedback 2025-05-20 19:46:50 +08:00
iamvann
2e3a8dfacb fix/commet 2025-05-18 03:36:39 +08:00
iamvann
4fbfcefa94 feat: Implement configurable date/time format for Alt+T shortcut 2025-05-18 03:14:18 +08:00
perf3ct
caccbf49c0 feat(client): try a different approach to handling read-only threshold
feat(client): revert note_details.ts
2025-05-13 22:02:59 +00:00
perf3ct
f07ad03343 feat(client): support temporarily disabling read-only note when read-only threshold is triggered
feat(client): stop the cursor from going to the top of the note when note transitions to read-only but we're still editing

feat(client): stop the cursor from going to the top of the note when note transitions to read-only but we're still editing, take 2
2025-05-13 22:02:59 +00:00
Zerebos
2cdd2a0a54 Fix several accessibility issues 2024-06-10 02:17:50 -04:00
Zerebos
01a8d0f864 Make reloading in light theme less janky 2024-06-08 15:21:59 -04:00
Zerebos
81e986db30 Fix multiple cases of overflow 2024-06-08 14:42:39 -04:00
Zerebos
3dc3f1579b Fix theme switcher showing wrong value 2024-06-08 14:32:06 -04:00
Zerebos
a7ed566645 Improve page performance and rendering
- Moves expanding the tree navigation to the template so the rendering is already done before page load
- Adds a way to explicitly set the logo size to prevent the page moving after it loads in
2024-06-08 14:31:40 -04:00
Zerebos
2485f20d5c Minor fixes for new options 2024-06-06 19:10:56 -04:00
Zerebos
465468a5a3 Add more customization in template 2024-06-06 12:21:38 -04:00
Zerebos
930632e6fe Template bugfixes 2024-06-06 11:14:43 -04:00
zadam
786d249a6e Merge pull request #61 from contributor/master
Capture location.hash into pageUrl attribute
2024-05-18 06:12:10 +02:00
contributor
750d2fe3bb capture location.hash with save-selection (example.com/long-article#part10) 2024-05-10 14:10:41 +03:00
zadam
3140ed2302 Update README.md 2024-03-27 06:40:30 +01:00
Zack Rauen
0016b43c09 Update to Trilium 0.62.3 2023-12-05 20:50:29 -05:00
Zack Rauen
5391521c08 Enable sliding categories and extract TODOs 2023-09-30 00:13:37 -04:00
Zack Rauen
e7a3f6d17e Generate ToC in templates 2023-09-29 01:43:39 -04:00
Zack Rauen
074ac0b725 Make swagger load from trilium directly 2023-09-28 20:59:17 -04:00
Zack Rauen
bde6d83625 Fix css priority for mobile 2023-09-28 20:59:04 -04:00
Zack Rauen
bdfe86ba1a Remove dead code and reorganize slightly 2023-09-28 00:24:52 -04:00
Zack Rauen
a8bb2f110b Some important QoL changes 2023-09-28 00:14:44 -04:00
Zack Rauen
4147f2b8d8 Switch scripts to redesign 2023-09-27 23:18:03 -04:00
Zack Rauen
a7edc5e03e Slightly adjust page template 2023-09-27 22:54:13 -04:00
Zack Rauen
1a40658345 Rework css for new design 2023-09-27 22:53:59 -04:00
Zack Rauen
124fd480b7 Update build script for templates 2023-09-27 16:49:30 -04:00
Zack Rauen
667cd64f3b Rename main to scripts 2023-09-27 16:28:08 -04:00
Zack Rauen
2ae6d4c5a4 Add initial templates 2023-09-27 16:20:04 -04:00
Zack Rauen
d9e33270b0 Add README 2023-09-24 06:03:35 -04:00
Zack Rauen
ad59080307 Some more finishing touches 2023-09-23 22:39:38 -04:00
Zack Rauen
34fa9a1f01 Some final touches 2023-09-23 07:21:38 -04:00
Zack Rauen
cb19ed36bc Make mobile compatible 2023-09-23 02:56:59 -04:00
Zack Rauen
039a5ac2e3 Modularize more and add swagger-ui 2023-09-22 23:57:17 -04:00
Zack Rauen
568ea271a4 Modularize proof of concept 2023-09-21 03:18:11 -04:00
Zack Rauen
a584a5c296 Port from trilium notes 2023-09-20 03:38:55 -04:00
zadam
526eaa2749 Merge pull request #54 from manto89/feature/already-visited
Check if the current page is already saved in trilium
2023-07-09 23:02:09 +02:00
zadam
f57e97462f Merge pull request #52 from manto89/feature/keep-title
Keep the title when adding notes
2023-07-09 23:00:36 +02:00
manto89
1d6211c7fd Add already-section when pageurl matches existing note.
Trigger search note by url after connection to backend
2023-06-21 13:13:28 +02:00
manto89
82c1b21d64 add checkbox in popup and handle case in popup.js 2023-06-19 00:02:19 +02:00
zadam
b731a051f1 Merge pull request #49 from jrao1/add-published-date
Send published/modified date when saving whole page
2023-03-07 22:52:35 +01:00
J Rao
1434773572 Send published/modified date when saving whole page 2023-03-06 21:34:51 +08:00
zadam
71be9515b9 release 1.0.1 2022-10-29 15:25:37 +02:00
zadam
c9c10a90aa 1.0.1 2022-10-29 15:25:20 +02:00
zadam
9130980203 release 1.0.0 2022-10-29 14:59:05 +02:00
zadam
efb2436679 release 1.0.0 2022-10-29 14:56:00 +02:00
zadam
5007ec4703 remove username from options 2022-10-29 14:55:26 +02:00
zadam
711e4f8ebd Merge remote-tracking branch 'origin/master' 2022-10-29 14:41:00 +02:00
zadam
9ac8bc28ed rename saveCroppedScreenshot 2022-10-29 14:40:53 +02:00
zadam
ddbf933779 Create LICENSE 2022-08-05 19:19:15 +02:00
zadam
252263de38 add option to screenshot the whole page, kind of, #39 2022-02-19 19:38:01 +01:00
zadam
66c8891fbb make screenshot cancellable via escape key, closes #37 2022-02-19 19:37:23 +01:00
zadam
20a4e2eb08 upgrade readability 2022-02-19 19:35:39 +01:00
zadam
9cf88d9697 fixed release script 2021-11-21 10:29:00 +01:00
zadam
2ee147f625 release 0.3.1 2021-11-20 22:02:51 +01:00
zadam
b3d70aaf44 release 0.3.1 2021-11-20 22:00:36 +01:00
zadam
968f735adc update icons 2021-11-20 21:59:31 +01:00
zadam
611cdc3850 release 0.3.0 2021-04-10 11:22:26 +02:00
zadam
6cd9aadfca fix screenshot scaling issue on firefox, https://github.com/zadam/trilium/issues/1202 2021-04-10 11:18:01 +02:00
zadam
80e82b4fde Merge remote-tracking branch 'origin/master'
# Conflicts:
#	popup/popup.html
#	popup/popup.js
2021-03-31 22:25:16 +02:00
zadam
0811276fbb "save note" is now "save link with note" - i.e. we're saving a current URL together with the text note 2021-03-31 22:23:43 +02:00
zadam
e9825a4e50 Merge pull request #29 from alteist/close-tabs-after-saving-link
Add close tabs link in toast message after saving window's tabs
2021-02-22 21:43:17 +01:00
alteist
b42fd1a6c5 code cleanup 2021-02-22 15:30:12 +06:00
alteist
73d48d8dd5 Add close tabs link in toast message after saving window's tabs 2021-02-22 14:35:55 +06:00
alteist
6824eb21d4 removed close tabs function, added toast message after saving 2021-02-22 13:34:34 +06:00
alteist
9abee14beb reformat code 2021-02-22 13:24:46 +06:00
alteist
6952c467cd Add save, send and close current window's tabs feature 2021-02-22 01:40:07 +06:00
zadam
1c75ea89ad scan only one port instead of 10, https://github.com/zadam/trilium/issues/1503 2020-12-31 00:48:23 +01:00
zadam
2d814af7f1 fix FF release script 2020-10-20 23:22:41 +02:00
zadam
16b2ffe5d2 release 0.2.0 2020-10-20 23:13:28 +02:00
zadam
c67e1857e6 fix FF release script 2020-10-20 23:13:19 +02:00
zadam
1b880a8521 release 0.2.0 2020-10-20 23:09:57 +02:00
zadam
800aaa9f05 release 0.2.0 2020-10-20 23:09:40 +02:00
zadam
2a79ef0aa5 release 0.2.0 2020-10-20 23:09:01 +02:00
zadam
01525464a4 release 0.2.0 2020-10-20 22:57:37 +02:00
zadam
b46a16d153 release 0.2.0 2020-10-20 22:53:34 +02:00
zadam
89984a7d96 use correct active tab URL 2020-10-09 23:08:57 +02:00
zadam
097d319fca Merge pull request #6 from lgorence/better_errors
Improve error handling
2020-10-09 22:29:27 +02:00
zadam
28eb3f2aae clip screenshot crops correctly when HIDPI display is used 2020-10-09 22:07:26 +02:00
zadam
b61149382e Merge pull request #24 from siralmat/keyboard-shortcuts
Keyboard shortcuts
2020-10-09 08:52:20 +02:00
zadam
1d682b2389 Merge pull request #23 from siralmat/fixes
Library fix: browser-polyfill.js
2020-10-09 08:51:07 +02:00
Rebecca
111a12f881 Documentation updates 2020-10-09 11:00:16 +08:00
Rebecca
d9f6862978 Add support for keyboard shortcuts 2020-10-09 10:23:17 +08:00
Rebecca
dfaf6267d3 Replace browser-polyfill.js with compiled script 2020-10-08 15:18:26 +08:00
zadam
abc26a3867 Merge pull request #21 from meichthys/patch-1
Update Link to Joplin Web Clipper
2020-09-16 21:11:59 +02:00
MeIchthys
cc1ad73c68 Update Link to Joplin Web Clipper
The old link was broken as the project structure changed.
2020-09-16 15:10:07 -04:00
zadam
7a42d7e229 send along a local datetime so that the creation date is saved correctly including the timezone 2020-05-29 20:27:17 +02:00
zadam
d3539ec9d7 Readability.js update 2020-04-05 15:37:44 +02:00
zadam
338f01be01 fixes and library updates 2020-04-02 22:49:27 +02:00
Logan Gorence
b1bda646c4 Fix imageless posts when taking a screenshot on an internal page. 2019-10-06 20:59:46 -07:00
zadam
1a58026b23 Update README.md 2019-07-21 22:32:57 +02:00
zadam
372645f642 release 0.1.1 2019-07-20 15:53:10 +02:00
zadam
d5a0542703 Merge remote-tracking branch 'origin/master' 2019-07-20 15:52:41 +02:00
zadam
7e5f9f87a1 release 0.1.0 2019-07-20 15:48:26 +02:00
zadam
4a646ca5a7 release 0.0.5 2019-07-20 14:59:12 +02:00
zadam
6d57e49646 Update README.md 2019-07-20 14:42:48 +02:00
zadam
ab32a0f593 release 0.0.4 2019-07-20 14:40:56 +02:00
zadam
6b342d2fe7 fix repo name 2019-07-20 14:40:50 +02:00
zadam
56aef8b6ec release 0.0.3 2019-07-20 14:38:08 +02:00
zadam
ae5e632cbd release fixes 2019-07-20 14:38:06 +02:00
zadam
a952c1bf49 release 0.0.2 2019-07-20 12:19:53 +02:00
zadam
d839f86b49 fixes 2019-07-20 12:19:47 +02:00
zadam
8cf44780ce release scripts + check of version compatibility 2019-07-20 12:17:59 +02:00
zadam
94222e80cf fix dev detection 2019-07-19 23:34:54 +02:00
zadam
cf97c12516 sign firefox extension 2019-07-19 23:32:46 +02:00
zadam
4e21fc0c06 fix layout issue in chrome 2019-07-19 21:22:44 +02:00
zadam
c45bbd0fc9 add .gitignore for .idea 2019-07-19 21:12:38 +02:00
zadam
9359d9924c version can't contain beta suffix 2019-07-19 21:12:13 +02:00
zadam
4618520bf9 font family for popup, different clip types for notes and whole pages 2019-07-19 21:05:22 +02:00
zadam
d18045f905 gitignore 2019-07-19 20:40:31 +02:00
zadam
bc1dae516b gitignore 2019-07-19 20:39:25 +02:00
zadam
8d28c14133 initial import 2019-07-19 20:35:53 +02:00
1008 changed files with 54164 additions and 24345 deletions

1
.env Normal file
View File

@@ -0,0 +1 @@
NODE_OPTIONS=--max_old_space_size=4096

2
.github/FUNDING.yml vendored
View File

@@ -2,3 +2,5 @@
github: [eliandoran]
custom: ["https://paypal.me/eliandoran"]
liberapay: ElianDoran
buy_me_a_coffee: eliandoran

View File

@@ -85,7 +85,7 @@ runs:
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 }}
TRILIUM_ARTIFACT_NAME_HINT: TriliumNotes-${{ github.ref_name }}-${{ inputs.os }}-${{ inputs.arch }}
run: pnpm nx --project=desktop electron-forge:make -- --arch=${{ inputs.arch }} --platform=${{ inputs.forge_platform }}
# Add DMG signing step

View File

@@ -30,4 +30,4 @@ runs:
mkdir -p upload
file=$(find ./apps/server/out -name '*.tar.xz' -print -quit)
name=${{ github.ref_name }}
cp "$file" "upload/TriliumNextNotes-Server-${name//\//-}-${{ inputs.os }}-${{ inputs.arch }}.tar.xz"
cp "$file" "upload/TriliumNotes-Server-${name//\//-}-${{ inputs.os }}-${{ inputs.arch }}.tar.xz"

17
.github/workflows/checks.yml vendored Normal file
View File

@@ -0,0 +1,17 @@
name: Checks
on:
push:
pull_request_target:
types: [synchronize]
jobs:
main:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Check if PRs have conflicts
uses: eps1lon/actions-label-merge-conflict@v3
with:
dirtyLabel: "merge-conflicts"
repoToken: "${{ secrets.MERGE_CONFLICT_LABEL_PAT }}"

View File

@@ -13,9 +13,9 @@ name: "CodeQL Advanced"
on:
push:
branches: [ "develop" ]
branches: [ "main" ]
pull_request:
branches: [ "develop" ]
branches: [ "main" ]
schedule:
- cron: '20 7 * * 0'

View File

@@ -1,9 +1,9 @@
name: Dev
on:
push:
branches: [ develop ]
branches: [ main ]
pull_request:
branches: [ develop ]
branches: [ main ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
@@ -12,8 +12,8 @@ concurrency:
env:
GHCR_REGISTRY: ghcr.io
DOCKERHUB_REGISTRY: docker.io
IMAGE_NAME: ${{ github.repository_owner }}/notes
TEST_TAG: ${{ github.repository_owner }}/notes:test
IMAGE_NAME: ${{ github.repository}}
TEST_TAG: ${{ github.repository}}:test
permissions:
pull-requests: write # for PR comments
@@ -39,76 +39,7 @@ jobs:
- uses: nrwl/nx-set-shas@v4
- name: Check affected
run: pnpm nx affected --verbose -t typecheck build rebuild-deps
report-electron-size:
name: Report Electron size
runs-on: ubuntu-latest
needs:
- check-affected
steps:
- name: Checkout the repository
uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- name: Set up node & dependencies
uses: actions/setup-node@v4
with:
node-version: 22
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Run the build
uses: ./.github/actions/build-electron
with:
os: linux
arch: x64
shell: bash
forge_platform: linux
- name: Run the Electron size report
uses: ./.github/actions/report-size
with:
paths: 'upload/**/*'
onlyDiff: 'true'
branch: 'develop'
header: 'Electron size report'
unit: "MB"
ghToken: ${{ secrets.GITHUB_TOKEN }}
report-server-size:
name: Report server size
runs-on: ubuntu-latest
needs:
- check-affected
steps:
- name: Checkout the repository
uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- name: Set up node & dependencies
uses: actions/setup-node@v4
with:
node-version: 22
cache: "pnpm"
- run: pnpm install --frozen-lockfile
- name: Run the build
uses: ./.github/actions/build-server
with:
os: linux
arch: x64
- name: Run the server size report
uses: ./.github/actions/report-size
with:
paths: 'upload/**/*'
onlyDiff: 'true'
branch: 'develop'
header: 'Server size report'
unit: "MB"
ghToken: ${{ secrets.GITHUB_TOKEN }}
run: pnpm nx affected --verbose -t typecheck build rebuild-deps test-build
test_dev:
name: Test development
@@ -143,7 +74,15 @@ jobs:
run: pnpm install --frozen-lockfile
- name: Update build info
run: pnpm run chore:update-build-info
- name: Trigger build
- name: Trigger client build
run: pnpm nx run client:build
- name: Send client bundle stats to RelativeCI
if: false
uses: relative-ci/agent-action@v3
with:
webpackStatsFile: ./apps/client/dist/webpack-stats.json
key: ${{ secrets.RELATIVE_CI_CLIENT_KEY }}
- name: Trigger server build
run: pnpm nx run server:build
- uses: docker/setup-buildx-action@v3
- uses: docker/build-push-action@v6

View File

@@ -1,7 +1,7 @@
on:
push:
branches:
- "develop"
- "main"
- "feature/update**"
- "feature/server_esm**"
paths-ignore:
@@ -14,8 +14,8 @@ on:
env:
GHCR_REGISTRY: ghcr.io
DOCKERHUB_REGISTRY: docker.io
IMAGE_NAME: ${{ github.repository_owner }}/notes
TEST_TAG: ${{ github.repository_owner }}/notes:test
IMAGE_NAME: ${{ github.repository}}
TEST_TAG: ${{ github.repository}}:test
permissions:
contents: read
@@ -53,7 +53,7 @@ jobs:
run: pnpm install --frozen-lockfile
- name: Install Playwright Browsers
run: pnpx playwright install --with-deps
run: pnpm exec playwright install --with-deps
- name: Run the TypeScript build
run: pnpm run server:build
@@ -82,7 +82,15 @@ jobs:
require-healthy: true
- name: Run Playwright tests
run: TRILIUM_DOCKER=1 TRILIUM_PORT=8082 pnpx nx run server-e2e:e2e
run: TRILIUM_DOCKER=1 TRILIUM_PORT=8082 pnpm exec nx run server-e2e:e2e
- name: Upload Playwright trace
if: failure()
uses: actions/upload-artifact@v4
with:
name: Playwright trace (${{ matrix.dockerfile }})
path: test-output/playwright/output
- uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
@@ -111,6 +119,9 @@ jobs:
- dockerfile: Dockerfile
platform: linux/arm/v7
image: ubuntu-24.04-arm
- dockerfile: Dockerfile
platform: linux/arm/v8
image: ubuntu-24.04-arm
runs-on: ${{ matrix.image }}
needs:
- test_docker

View File

@@ -11,7 +11,8 @@ on:
pull_request:
paths:
- .github/actions/build-electron/*
- forge.config.cjs
- .github/workflows/nightly.yml
- forge.config.ts
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
@@ -37,7 +38,7 @@ jobs:
shell: bash
forge_platform: darwin
- name: linux
image: ubuntu-latest
image: ubuntu-22.04
shell: bash
forge_platform: linux
- name: windows
@@ -76,7 +77,7 @@ jobs:
WINDOWS_SIGN_EXECUTABLE: ${{ vars.WINDOWS_SIGN_EXECUTABLE }}
- name: Publish release
uses: softprops/action-gh-release@v2
uses: softprops/action-gh-release@v2.3.2
if: ${{ github.event_name != 'pull_request' }}
with:
make_latest: false
@@ -91,7 +92,7 @@ jobs:
uses: actions/upload-artifact@v4
if: ${{ github.event_name == 'pull_request' }}
with:
name: TriliumNextNotes ${{ matrix.os.name }} ${{ matrix.arch }}
name: TriliumNotes ${{ matrix.os.name }} ${{ matrix.arch }}
path: apps/desktop/upload
nightly-server:
@@ -102,7 +103,7 @@ jobs:
arch: [x64, arm64]
include:
- arch: x64
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
- arch: arm64
runs-on: ubuntu-24.04-arm
runs-on: ${{ matrix.runs-on }}
@@ -116,7 +117,7 @@ jobs:
arch: ${{ matrix.arch }}
- name: Publish release
uses: softprops/action-gh-release@v2
uses: softprops/action-gh-release@v2.3.2
if: ${{ github.event_name != 'pull_request' }}
with:
make_latest: false

View File

@@ -3,7 +3,7 @@ name: playwright
on:
push:
branches:
- master
- main
pull_request:
permissions:
@@ -33,11 +33,11 @@ jobs:
- name: Install dependencies
run: pnpm install --frozen-lockfile
- run: pnpx playwright install --with-deps
- run: pnpm exec playwright install --with-deps
- uses: nrwl/nx-set-shas@v4
# Prepend any command with "nx-cloud record --" to record its logs to Nx Cloud
# - run: npx nx-cloud record -- echo Hello World
# Nx Affected runs only tasks affected by the changes in this PR/commit. Learn more: https://nx.dev/ci/features/affected
# When you enable task distribution, run the e2e-ci task instead of e2e
- run: pnpx nx affected -t e2e
- run: pnpm exec nx affected -t e2e --exclude desktop-e2e

View File

@@ -23,7 +23,7 @@ jobs:
shell: bash
forge_platform: darwin
- name: linux
image: ubuntu-latest
image: ubuntu-22.04
shell: bash
forge_platform: linux
- name: windows
@@ -73,7 +73,7 @@ jobs:
arch: [x64, arm64]
include:
- arch: x64
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
- arch: arm64
runs-on: ubuntu-24.04-arm
runs-on: ${{ matrix.runs-on }}
@@ -114,13 +114,13 @@ jobs:
path: upload
- name: Publish stable release
uses: softprops/action-gh-release@v2
uses: softprops/action-gh-release@v2.3.2
with:
draft: false
body_path: docs/Release Notes/Release Notes/${{ github.ref_name }}.md
fail_on_unmatched_files: true
files: upload/*.*
discussion_category_name: Announcements
discussion_category_name: Releases
make_latest: ${{ !contains(github.ref, 'rc') }}
prerelease: ${{ !contains(github.ref, 'rc') }}
prerelease: ${{ contains(github.ref, 'rc') }}
token: ${{ secrets.RELEASE_PAT }}

5
.gitignore vendored
View File

@@ -43,4 +43,7 @@ apps/*/out
upload
.rollup.cache
*.tsbuildinfo
*.tsbuildinfo
/result
.svelte-kit

View File

@@ -1,2 +1,2 @@
Adam Zivner <adam.zivner@gmail.com>
Adam Zivner <zadam.apps@gmail.com>
zadam <adam.zivner@gmail.com>
zadam <zadam.apps@gmail.com>

2
.nvmrc
View File

@@ -1 +1 @@
22.16.0
22.17.1

View File

@@ -1,7 +1,2 @@
_regroup
_regroup_monorepo
# Asset copying respects .gitignore / .nxignore for some reason.
# See https://github.com/nrwl/nx/issues/20309
!dist
!node_modules
_regroup_monorepo

View File

@@ -9,6 +9,8 @@
"redhat.vscode-yaml",
"tobermory.es6-string-html",
"vitest.explorer",
"yzhang.markdown-all-in-one"
"yzhang.markdown-all-in-one",
"svelte.svelte-vscode",
"bradlc.vscode-tailwindcss"
]
}

View File

@@ -28,5 +28,12 @@
"typescript.validate.enable": true,
"typescript.tsserver.experimental.enableProjectDiagnostics": true,
"typescript.tsdk": "node_modules/typescript/lib",
"typescript.enablePromptUseWorkspaceTsdk": true
"typescript.enablePromptUseWorkspaceTsdk": true,
"search.exclude": {
"**/node_modules": true,
"docs/**/*.html": true,
"docs/**/*.png": true,
"apps/server/src/assets/doc_notes/**": true,
"apps/edit-docs/demo/**": true
}
}

View File

@@ -1,10 +1,14 @@
# TriliumNext Notes
# Trilium Notes
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/notes) ![GitHub Downloads (all assets, all releases)](https://img.shields.io/github/downloads/triliumnext/notes/total)
Donate: ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran?style=flat-square) ![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran?style=flat-square)
![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/notes?style=flat-square)
![GitHub Downloads (all assets, all releases)](https://img.shields.io/github/downloads/triliumnext/notes/total?style=flat-square)
[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop&style=flat-square)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp)
[English](./README.md) | [Chinese](./docs/README-ZH_CN.md) | [Russian](./docs/README.ru.md) | [Japanese](./docs/README.ja.md) | [Italian](./docs/README.it.md) | [Spanish](./docs/README.es.md)
TriliumNext Notes is a free and open-source, cross-platform hierarchical note taking application with focus on building large personal knowledge bases.
Trilium Notes is a free and open-source, cross-platform hierarchical note taking application with focus on building large personal knowledge bases.
See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for quick overview:
@@ -19,7 +23,7 @@ See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for q
* 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)
* UI available in English, German, Spanish, French, Romanian, and Chinese (simplified and traditional)
* Direct [OpenID and TOTP integration](.docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md") for more secure login
* Direct [OpenID and TOTP integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) 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
@@ -36,6 +40,7 @@ See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for q
* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown)
* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy saving of web content
* Customizable UI (sidebar buttons, user-defined widgets, ...)
* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along with a [Grafana Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json)
✨ Check out the following third-party resources/communities for more TriliumNext related goodies:
@@ -115,8 +120,8 @@ To install TriliumNext on your own server (including via Docker from [Dockerhub]
Download the repository, install dependencies using `pnpm` and then run the server (available at http://localhost:8080):
```shell
git clone https://github.com/TriliumNext/Notes.git
cd Notes
git clone https://github.com/TriliumNext/Trilium.git
cd Trilium
pnpm install
pnpm run server:start
```
@@ -125,8 +130,8 @@ pnpm run server:start
Download the repository, install dependencies using `pnpm` and then run the environment required to edit the documentation:
```shell
git clone https://github.com/TriliumNext/Notes.git
cd Notes
git clone https://github.com/TriliumNext/Trilium.git
cd Trilium
pnpm install
pnpm nx run edit-docs:edit-docs
```
@@ -134,8 +139,8 @@ pnpm nx run edit-docs:edit-docs
### Building the Executable
Download the repository, install dependencies using `pnpm` and then build the desktop app for Windows:
```shell
git clone https://github.com/TriliumNext/Notes.git
cd Notes
git clone https://github.com/TriliumNext/Trilium.git
cd Trilium
pnpm install
pnpm nx --project=desktop electron-forge:make -- --arch=x64 --platform=win32
```
@@ -149,7 +154,7 @@ Please view the [documentation guide](./docs/Developer%20Guide/Developer%20Guide
## 👏 Shoutouts
* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - best WYSIWYG editor on the market, very interactive and listening team
* [FancyTree](https://github.com/mar10/fancytree) - very feature rich tree library without real competition. TriliumNext Notes would not be the same without it.
* [FancyTree](https://github.com/mar10/fancytree) - very feature rich tree library without real competition. Trilium Notes would not be the same without it.
* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with support for huge amount of languages
* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library without competition. Used in [relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map)

View File

@@ -1,12 +0,0 @@
#!/usr/bin/env bash
set -e # Fail on any command error
VERSION=`jq -r ".version" package.json`
SERIES=${VERSION:0:4}-latest
sudo docker build -t triliumnext/notes:$VERSION --network host -t triliumnext/notes:$SERIES .
if [[ $VERSION != *"beta"* ]]; then
sudo docker tag triliumnext/notes:$VERSION triliumnext/notes:latest
fi

View File

@@ -91,5 +91,5 @@ async function start() {
}
// @TriliumNextTODO sqlInit.dbReady never seems to resolve so program hangs
// see https://github.com/TriliumNext/Notes/issues/1020
// see https://github.com/TriliumNext/Trilium/issues/1020
sqlInit.dbReady.then(cls.wrap(start)).catch((err) => console.error(err));

View File

@@ -24,7 +24,7 @@ if ! git diff-index --quiet HEAD --; then
exit 1
fi
BASE_BRANCH=master
BASE_BRANCH=main
if [[ "$VERSION" == *"beta"* ]]; then
BASE_BRANCH=beta

View File

@@ -47,11 +47,3 @@ echo "Tagging commit with $TAG"
git tag $TAG
git push origin $TAG
echo "Updating master"
git fetch
git checkout master
git reset --hard origin/master
git merge origin/develop
git push

View File

@@ -25,15 +25,16 @@ stats() {
# Print the number of existing strings on the JSON files for each locale
s=$(number_of_keys "${paths[0]}/en/server.json")
c=$(number_of_keys "${paths[1]}/en/translation.json")
echo "| locale |server strings |client strings |"
echo "|--------|---------------|---------------|"
echo "| en | ${s} | ${c} |"
echo "| locale | server strings | client strings |"
echo "|--------|----------------|----------------|"
echo "| en | ${s} | ${c} |"
echo "|--------|----------------|----------------|"
for locale in "${locales[@]}"; do
s=$(number_of_keys "${paths[0]}/${locale}/server.json")
c=$(number_of_keys "${paths[1]}/${locale}/translation.json")
n1=$(((8 - ${#locale}) / 2))
n2=$((n1 == 1 ? n1 + 1 : n1))
echo "|$(printf "%${n1}s")${locale}$(printf "%${n2}s")| ${s} | ${c} |"
echo "|$(printf "%${n1}s")${locale}$(printf "%${n2}s")| ${s} | ${c} |"
done
}
@@ -78,7 +79,10 @@ file_path="$(
cd -- "$(dirname "${0}")" >/dev/null 2>&1 || exit
pwd -P
)"
paths=("${file_path}/../translations/" "${file_path}/../src/public/translations/")
paths=(
"${file_path}/../../apps/server/src/assets/translations/"
"${file_path}/../../apps/client/src/translations/"
)
locales=(cn de es fr pt_br ro tw)
if [ $# -eq 1 ]; then

View File

@@ -44,7 +44,6 @@ export default tseslint.config(
"dist/*",
"docs/*",
"demo/*",
"libraries/*",
"src/public/app-dist/*",
"src/public/app/doc_notes/*"
]

View File

@@ -38,7 +38,6 @@ export default [
"dist/*",
"docs/*",
"demo/*",
"libraries/*",
// TriliumNextTODO: check if we want to format packages here as well - for now skipping it
"packages/*",
"src/public/app-dist/*",

View File

@@ -8,5 +8,5 @@ test("Displays update badge when there is a version available", async ({ page })
await page.getByText(`Version ${expectedVersion} is available,`).click();
const page1 = await page.waitForEvent("popup");
expect(page1.url()).toBe(`https://github.com/TriliumNext/Notes/releases/tag/v${expectedVersion}`);
expect(page1.url()).toBe(`https://github.com/TriliumNext/Trilium/releases/tag/v${expectedVersion}`);
});

View File

@@ -35,13 +35,13 @@
"chore:generate-openapi": "tsx bin/generate-openapi.js"
},
"devDependencies": {
"@playwright/test": "1.52.0",
"@stylistic/eslint-plugin": "4.4.0",
"@types/express": "5.0.1",
"@types/node": "22.15.29",
"@playwright/test": "1.54.1",
"@stylistic/eslint-plugin": "5.2.0",
"@types/express": "5.0.3",
"@types/node": "22.16.5",
"@types/yargs": "17.0.33",
"@vitest/coverage-v8": "3.1.4",
"eslint": "9.27.0",
"@vitest/coverage-v8": "3.2.4",
"eslint": "9.31.0",
"eslint-plugin-simple-import-sort": "12.1.1",
"esm": "3.2.25",
"jsdoc": "4.0.4",
@@ -49,7 +49,7 @@
"rcedit": "4.0.1",
"rimraf": "6.0.1",
"tslib": "2.8.1",
"typedoc": "0.28.5",
"typedoc": "0.28.7",
"typedoc-plugin-missing-exports": "4.0.0"
},
"optionalDependencies": {

View File

@@ -1,12 +0,0 @@
POST {{triliumHost}}/etapi/auth/login
Content-Type: application/json
{
"password": "1234"
}
> {%
client.assert(response.status === 201);
client.global.set("authToken", response.body.authToken);
%}

View File

@@ -1,43 +0,0 @@
### Test regular API metrics endpoint (requires session authentication)
### Get metrics from regular API (default Prometheus format)
GET {{triliumHost}}/api/metrics
> {%
client.test("API metrics endpoint returns Prometheus format by default", function() {
client.assert(response.status === 200, "Response status is not 200");
client.assert(response.headers["content-type"].includes("text/plain"), "Content-Type should be text/plain");
client.assert(response.body.includes("trilium_info"), "Should contain trilium_info metric");
client.assert(response.body.includes("trilium_notes_total"), "Should contain trilium_notes_total metric");
client.assert(response.body.includes("# HELP"), "Should contain HELP comments");
client.assert(response.body.includes("# TYPE"), "Should contain TYPE comments");
});
%}
### Get metrics in JSON format
GET {{triliumHost}}/api/metrics?format=json
> {%
client.test("API metrics endpoint returns JSON when requested", function() {
client.assert(response.status === 200, "Response status is not 200");
client.assert(response.headers["content-type"].includes("application/json"), "Content-Type should be application/json");
client.assert(response.body.version, "Version info not present");
client.assert(response.body.database, "Database info not present");
client.assert(response.body.timestamp, "Timestamp not present");
client.assert(typeof response.body.database.totalNotes === 'number', "Total notes should be a number");
client.assert(typeof response.body.database.activeNotes === 'number', "Active notes should be a number");
client.assert(response.body.noteTypes, "Note types breakdown not present");
client.assert(response.body.attachmentTypes, "Attachment types breakdown not present");
client.assert(response.body.statistics, "Statistics not present");
});
%}
### Test invalid format parameter
GET {{triliumHost}}/api/metrics?format=xml
> {%
client.test("Invalid format parameter returns error", function() {
client.assert(response.status === 500, "Response status should be 500");
client.assert(response.body.message.includes("prometheus"), "Error message should mention supported formats");
});
%}

View File

@@ -1,7 +0,0 @@
GET {{triliumHost}}/etapi/app-info
Authorization: {{authToken}}
> {%
client.assert(response.status === 200);
client.assert(response.body.clipperProtocolVersion === "1.0");
%}

View File

@@ -1,21 +0,0 @@
GET {{triliumHost}}/etapi/app-info
Authorization: Basic etapi {{authToken}}
> {%
client.assert(response.status === 200);
client.assert(response.body.clipperProtocolVersion === "1.0");
%}
###
GET {{triliumHost}}/etapi/app-info
Authorization: Basic etapi wrong
> {% client.assert(response.status === 401); %}
###
GET {{triliumHost}}/etapi/app-info
Authorization: Basic wrong {{authToken}}
> {% client.assert(response.status === 401); %}

View File

@@ -1,4 +0,0 @@
PUT {{triliumHost}}/etapi/backup/etapi_test
Authorization: {{authToken}}
> {% client.assert(response.status === 201); %}

View File

@@ -1,158 +0,0 @@
POST {{triliumHost}}/etapi/create-note
Authorization: {{authToken}}
Content-Type: application/json
{
"noteId": "forcedId{{$randomInt}}",
"parentNoteId": "root",
"title": "Hello",
"type": "text",
"content": "Hi there!",
"dateCreated": "2023-08-21 23:38:51.123+0200",
"utcDateCreated": "2023-08-21 23:38:51.123Z"
}
> {%
client.assert(response.status === 201);
client.assert(response.body.note.noteId.startsWith("forcedId"));
client.assert(response.body.note.title == "Hello");
client.assert(response.body.note.dateCreated == "2023-08-21 23:38:51.123+0200");
client.assert(response.body.note.utcDateCreated == "2023-08-21 23:38:51.123Z");
client.assert(response.body.branch.parentNoteId == "root");
client.log(`Created note ` + response.body.note.noteId + ` and branch ` + response.body.branch.branchId);
client.global.set("createdNoteId", response.body.note.noteId);
client.global.set("createdBranchId", response.body.branch.branchId);
%}
### Clone to another location
POST {{triliumHost}}/etapi/branches
Authorization: {{authToken}}
Content-Type: application/json
{
"noteId": "{{createdNoteId}}",
"parentNoteId": "_hidden"
}
> {%
client.assert(response.status === 201);
client.assert(response.body.parentNoteId == "_hidden");
client.global.set("clonedBranchId", response.body.branchId);
client.log(`Created cloned branch ` + response.body.branchId);
%}
###
GET {{triliumHost}}/etapi/notes/{{createdNoteId}}
Authorization: {{authToken}}
> {%
client.assert(response.status === 200);
client.assert(response.body.noteId == client.global.get("createdNoteId"));
client.assert(response.body.title == "Hello");
// order is not defined and may fail in the future
client.assert(response.body.parentBranchIds[0] == client.global.get("clonedBranchId"))
client.assert(response.body.parentBranchIds[1] == client.global.get("createdBranchId"));
%}
###
GET {{triliumHost}}/etapi/notes/{{createdNoteId}}/content
Authorization: {{authToken}}
> {%
client.assert(response.status === 200);
client.assert(response.body == "Hi there!");
%}
###
GET {{triliumHost}}/etapi/branches/{{createdBranchId}}
Authorization: {{authToken}}
> {%
client.assert(response.status === 200);
client.assert(response.body.branchId == client.global.get("createdBranchId"));
client.assert(response.body.parentNoteId == "root");
%}
###
GET {{triliumHost}}/etapi/branches/{{clonedBranchId}}
Authorization: {{authToken}}
> {%
client.assert(response.status === 200);
client.assert(response.body.branchId == client.global.get("clonedBranchId"));
client.assert(response.body.parentNoteId == "_hidden");
%}
###
POST {{triliumHost}}/etapi/attributes
Content-Type: application/json
Authorization: {{authToken}}
{
"attributeId": "forcedAttributeId{{$randomInt}}",
"noteId": "{{createdNoteId}}",
"type": "label",
"name": "mylabel",
"value": "val",
"isInheritable": true
}
> {%
client.assert(response.status === 201);
client.assert(response.body.attributeId.startsWith("forcedAttributeId"));
client.global.set("createdAttributeId", response.body.attributeId);
%}
###
GET {{triliumHost}}/etapi/attributes/{{createdAttributeId}}
Authorization: {{authToken}}
> {%
client.assert(response.status === 200);
client.assert(response.body.attributeId == client.global.get("createdAttributeId"));
%}
###
POST {{triliumHost}}/etapi/attachments
Content-Type: application/json
Authorization: {{authToken}}
{
"ownerId": "{{createdNoteId}}",
"role": "file",
"mime": "plain/text",
"title": "my attachment",
"content": "my text"
}
> {%
client.assert(response.status === 201);
client.global.set("createdAttachmentId", response.body.attachmentId);
%}
###
GET {{triliumHost}}/etapi/attachments/{{createdAttachmentId}}
Authorization: {{authToken}}
> {%
client.assert(response.status === 200);
client.assert(response.body.attachmentId == client.global.get("createdAttachmentId"));
client.assert(response.body.role == "file");
client.assert(response.body.mime == "plain/text");
client.assert(response.body.title == "my attachment");
%}

View File

@@ -1,52 +0,0 @@
POST {{triliumHost}}/etapi/create-note
Authorization: {{authToken}}
Content-Type: application/json
{
"parentNoteId": "root",
"title": "Hello",
"type": "text",
"content": "Hi there!"
}
> {% client.global.set("createdNoteId", response.body.note.noteId); %}
###
POST {{triliumHost}}/etapi/attachments
Authorization: {{authToken}}
Content-Type: application/json
{
"ownerId": "{{createdNoteId}}",
"role": "file",
"mime": "text/plain",
"title": "my attachment",
"content": "text"
}
> {% client.global.set("createdAttachmentId", response.body.attachmentId); %}
###
DELETE {{triliumHost}}/etapi/attachments/{{createdAttachmentId}}
Authorization: {{authToken}}
> {% client.assert(response.status === 204, "Response status is not 204"); %}
### repeat the DELETE request to test the idempotency
DELETE {{triliumHost}}/etapi/attachments/{{createdAttachmentId}}
Authorization: {{authToken}}
> {% client.assert(response.status === 204, "Response status is not 204"); %}
###
GET {{triliumHost}}/etapi/attachments/{{createdAttachmentId}}
Authorization: {{authToken}}
> {%
client.assert(response.status === 404, "Response status is not 404");
client.assert(response.body.code === "ATTACHMENT_NOT_FOUND");
%}

View File

@@ -1,52 +0,0 @@
POST {{triliumHost}}/etapi/create-note
Authorization: {{authToken}}
Content-Type: application/json
{
"parentNoteId": "root",
"title": "Hello",
"type": "text",
"content": "Hi there!"
}
> {% client.global.set("createdNoteId", response.body.note.noteId); %}
###
POST {{triliumHost}}/etapi/attributes
Authorization: {{authToken}}
Content-Type: application/json
{
"noteId": "{{createdNoteId}}",
"type": "label",
"name": "mylabel",
"value": "val",
"isInheritable": true
}
> {% client.global.set("createdAttributeId", response.body.attributeId); %}
###
DELETE {{triliumHost}}/etapi/attributes/{{createdAttributeId}}
Authorization: {{authToken}}
> {% client.assert(response.status === 204, "Response status is not 204"); %}
### repeat the DELETE request to test the idempotency
DELETE {{triliumHost}}/etapi/attributes/{{createdAttributeId}}
Authorization: {{authToken}}
> {% client.assert(response.status === 204, "Response status is not 204"); %}
###
GET {{triliumHost}}/etapi/attributes/{{createdAttributeId}}
Authorization: {{authToken}}
> {%
client.assert(response.status === 404, "Response status is not 404");
client.assert(response.body.code === "ATTRIBUTE_NOT_FOUND");
%}

View File

@@ -1,87 +0,0 @@
POST {{triliumHost}}/etapi/create-note
Authorization: {{authToken}}
Content-Type: application/json
{
"parentNoteId": "root",
"title": "Hello",
"type": "text",
"content": "Hi there!"
}
> {%
client.global.set("createdNoteId", response.body.note.noteId);
client.global.set("createdBranchId", response.body.branch.branchId);
%}
### Clone to another location
POST {{triliumHost}}/etapi/branches
Authorization: {{authToken}}
Content-Type: application/json
{
"noteId": "{{createdNoteId}}",
"parentNoteId": "_hidden"
}
> {% client.global.set("clonedBranchId", response.body.branchId); %}
###
GET {{triliumHost}}/etapi/notes/{{createdNoteId}}
Authorization: {{authToken}}
> {% client.assert(response.status === 200); %}
###
GET {{triliumHost}}/etapi/branches/{{createdBranchId}}
Authorization: {{authToken}}
> {% client.assert(response.status === 200); %}
###
GET {{triliumHost}}/etapi/branches/{{clonedBranchId}}
Authorization: {{authToken}}
> {% client.assert(response.status === 200); %}
###
DELETE {{triliumHost}}/etapi/branches/{{createdBranchId}}
Authorization: {{authToken}}
> {% client.assert(response.status === 204, "Response status is not 204"); %}
### repeat the DELETE request to test the idempotency
DELETE {{triliumHost}}/etapi/branches/{{createdBranchId}}
Authorization: {{authToken}}
> {% client.assert(response.status === 204, "Response status is not 204"); %}
###
GET {{triliumHost}}/etapi/branches/{{createdBranchId}}
Authorization: {{authToken}}
> {%
client.assert(response.status === 404, "Response status is not 404");
client.assert(response.body.code === "BRANCH_NOT_FOUND");
%}
###
GET {{triliumHost}}/etapi/branches/{{clonedBranchId}}
Authorization: {{authToken}}
> {% client.assert(response.status === 200); %}
###
GET {{triliumHost}}/etapi/notes/{{createdNoteId}}
Authorization: {{authToken}}
> {% client.assert(response.status === 200); %}

View File

@@ -1,126 +0,0 @@
POST {{triliumHost}}/etapi/create-note
Authorization: {{authToken}}
Content-Type: application/json
{
"parentNoteId": "root",
"title": "Hello",
"type": "text",
"content": "Hi there!"
}
> {%
client.global.set("createdNoteId", response.body.note.noteId);
client.global.set("createdBranchId", response.body.branch.branchId);
%}
###
POST {{triliumHost}}/etapi/attributes
Authorization: {{authToken}}
Content-Type: application/json
{
"noteId": "{{createdNoteId}}",
"type": "label",
"name": "mylabel",
"value": "val",
"isInheritable": true
}
> {% client.global.set("createdAttributeId", response.body.attributeId); %}
### Clone to another location
POST {{triliumHost}}/etapi/branches
Authorization: {{authToken}}
Content-Type: application/json
{
"noteId": "{{createdNoteId}}",
"parentNoteId": "_hidden"
}
> {% client.global.set("clonedBranchId", response.body.branchId); %}
###
GET {{triliumHost}}/etapi/notes/{{createdNoteId}}
Authorization: {{authToken}}
> {% client.assert(response.status === 200); %}
###
GET {{triliumHost}}/etapi/branches/{{createdBranchId}}
Authorization: {{authToken}}
> {% client.assert(response.status === 200); %}
###
GET {{triliumHost}}/etapi/branches/{{clonedBranchId}}
Authorization: {{authToken}}
> {% client.assert(response.status === 200); %}
###
GET {{triliumHost}}/etapi/attributes/{{createdAttributeId}}
Authorization: {{authToken}}
> {% client.assert(response.status === 200); %}
###
DELETE {{triliumHost}}/etapi/notes/{{createdNoteId}}
Authorization: {{authToken}}
> {% client.assert(response.status === 204, "Response status is not 204"); %}
### repeat the DELETE request to test the idempotency
DELETE {{triliumHost}}/etapi/notes/{{createdNoteId}}
Authorization: {{authToken}}
> {% client.assert(response.status === 204, "Response status is not 204"); %}
###
GET {{triliumHost}}/etapi/branches/{{createdBranchId}}
Authorization: {{authToken}}
> {%
client.assert(response.status === 404, "Response status is not 404");
client.assert(response.body.code === "BRANCH_NOT_FOUND");
%}
###
GET {{triliumHost}}/etapi/branches/{{clonedBranchId}}
Authorization: {{authToken}}
> {%
client.assert(response.status === 404, "Response status is not 404");
client.assert(response.body.code == "BRANCH_NOT_FOUND");
%}
###
GET {{triliumHost}}/etapi/notes/{{createdNoteId}}
Authorization: {{authToken}}
> {%
client.assert(response.status === 404, "Response status is not 404");
client.assert(response.body.code === "NOTE_NOT_FOUND");
%}
###
GET {{triliumHost}}/etapi/attributes/{{createdAttributeId}}
Authorization: {{authToken}}
> {%
client.assert(response.status === 404, "Response status is not 404");
client.assert(response.body.code === "ATTRIBUTE_NOT_FOUND");
%}

View File

@@ -1,37 +0,0 @@
GET {{triliumHost}}/etapi/notes/root/export
Authorization: {{authToken}}
> {%
client.assert(response.status === 200);
client.assert(response.headers.valueOf("Content-Type") == "application/zip");
%}
###
GET {{triliumHost}}/etapi/notes/root/export?format=html
Authorization: {{authToken}}
> {%
client.assert(response.status === 200);
client.assert(response.headers.valueOf("Content-Type") == "application/zip");
%}
###
GET {{triliumHost}}/etapi/notes/root/export?format=markdown
Authorization: {{authToken}}
> {%
client.assert(response.status === 200);
client.assert(response.headers.valueOf("Content-Type") == "application/zip");
%}
###
GET {{triliumHost}}/etapi/notes/root/export?format=wrong
Authorization: {{authToken}}
> {%
client.assert(response.status === 400);
client.assert(response.body.code === "UNRECOGNIZED_EXPORT_FORMAT");
%}

View File

@@ -1,72 +0,0 @@
GET {{triliumHost}}/etapi/inbox/2022-01-01
Authorization: {{authToken}}
> {% client.assert(response.status === 200); %}
###
GET {{triliumHost}}/etapi/calendar/days/2022-01-01
Authorization: {{authToken}}
> {% client.assert(response.status === 200); %}
###
GET {{triliumHost}}/etapi/calendar/days/2022-1
Authorization: {{authToken}}
> {%
client.assert(response.status === 400);
client.assert(response.body.code === "DATE_INVALID");
%}
###
GET {{triliumHost}}/etapi/calendar/weeks/2022-01-01
Authorization: {{authToken}}
> {% client.assert(response.status === 200); %}
###
GET {{triliumHost}}/etapi/calendar/weeks/2022-1
Authorization: {{authToken}}
> {%
client.assert(response.status === 400);
client.assert(response.body.code === "DATE_INVALID");
%}
###
GET {{triliumHost}}/etapi/calendar/months/2022-01
Authorization: {{authToken}}
> {% client.assert(response.status === 200); %}
###
GET {{triliumHost}}/etapi/calendar/months/2022-1
Authorization: {{authToken}}
> {%
client.assert(response.status === 400);
client.assert(response.body.code === "MONTH_INVALID");
%}
###
GET {{triliumHost}}/etapi/calendar/years/2022
Authorization: {{authToken}}
> {% client.assert(response.status === 200); %}
###
GET {{triliumHost}}/etapi/calendar/years/202
Authorization: {{authToken}}
> {%
client.assert(response.status === 400);
client.assert(response.body.code === "YEAR_INVALID");
%}

View File

@@ -1,116 +0,0 @@
POST {{triliumHost}}/etapi/create-note
Authorization: {{authToken}}
Content-Type: application/json
{
"parentNoteId": "root",
"title": "Hello parent",
"type": "text",
"content": "Hi there!"
}
> {%
client.assert(response.status === 201);
client.global.set("parentNoteId", response.body.note.noteId);
client.global.set("parentBranchId", response.body.branch.branchId);
%}
### Create inheritable parent attribute
POST {{triliumHost}}/etapi/attributes
Authorization: {{authToken}}
Content-Type: application/json
{
"noteId": "{{parentNoteId}}",
"type": "label",
"name": "mylabel",
"value": "",
"isInheritable": true,
"position": 10
}
> {%
client.assert(response.status === 201);
client.global.set("parentAttributeId", response.body.attributeId);
%}
### Create child note under root
POST {{triliumHost}}/etapi/create-note
Authorization: {{authToken}}
Content-Type: application/json
{
"parentNoteId": "root",
"title": "Hello child",
"type": "text",
"content": "Hi there!"
}
> {%
client.assert(response.status === 201);
client.global.set("childNoteId", response.body.note.noteId);
client.global.set("childBranchId", response.body.branch.branchId);
%}
### Create child attribute
POST {{triliumHost}}/etapi/attributes
Authorization: {{authToken}}
Content-Type: application/json
{
"noteId": "{{childNoteId}}",
"type": "label",
"name": "mylabel",
"value": "val",
"isInheritable": false,
"position": 10
}
> {%
client.assert(response.status === 201);
client.global.set("childAttributeId", response.body.attributeId);
%}
### Clone child to parent
POST {{triliumHost}}/etapi/branches
Authorization: {{authToken}}
Content-Type: application/json
{
"noteId": "{{childNoteId}}",
"parentNoteId": "{{parentNoteId}}"
}
> {%
client.assert(response.status === 201);
client.assert(response.body.parentNoteId == client.global.get("parentNoteId"));
%}
###
GET {{triliumHost}}/etapi/notes/{{childNoteId}}
Authorization: {{authToken}}
> {%
function hasAttribute(list, attributeId) {
for (let i = 0; i < list.length; i++) {
if (list[i]["attributeId"] === attributeId) {
return true;
}
}
return false;
}
client.log(JSON.stringify(response.body.attributes));
client.assert(response.status === 200);
client.assert(response.body.noteId == client.global.get("childNoteId"));
client.assert(response.body.attributes.length == 2);
client.assert(hasAttribute(response.body.attributes, client.global.get("parentAttributeId")));
client.assert(hasAttribute(response.body.attributes, client.global.get("childAttributeId")));
%}

View File

@@ -1,61 +0,0 @@
POST {{triliumHost}}/etapi/create-note
Authorization: {{authToken}}
Content-Type: application/json
{
"parentNoteId": "root",
"title": "GetInheritedAttributes Test Note",
"type": "text",
"content": "Hi there!"
}
> {%
client.assert(response.status === 201);
client.global.set("parentNoteId", response.body.note.noteId);
%}
###
POST {{triliumHost}}/etapi/attributes
Authorization: {{authToken}}
Content-Type: application/json
{
"noteId": "{{parentNoteId}}",
"type": "label",
"name": "mylabel",
"value": "val",
"isInheritable": true
}
> {% client.global.set("createdAttributeId", response.body.attributeId); %}
###
POST {{triliumHost}}/etapi/create-note
Authorization: {{authToken}}
Content-Type: application/json
{
"parentNoteId": "{{parentNoteId}}",
"title": "Hello",
"type": "text",
"content": "Hi there!"
}
> {%
client.global.set("createdNoteId", response.body.note.noteId);
client.global.set("createdBranchId", response.body.branch.branchId);
%}
###
GET {{triliumHost}}/etapi/notes/{{createdNoteId}}
Authorization: {{authToken}}
> {%
client.assert(response.status === 200);
client.assert(response.body.noteId == client.global.get("createdNoteId"));
client.assert(response.body.attributes.length == 1);
client.assert(response.body.attributes[0].attributeId == client.global.get("createdAttributeId"));
%}

View File

@@ -1,25 +0,0 @@
POST {{triliumHost}}/etapi/create-note
Authorization: {{authToken}}
Content-Type: application/json
{
"parentNoteId": "root",
"title": "Hello",
"type": "text",
"content": "Hi there!"
}
> {%
client.global.set("createdNoteId", response.body.note.noteId);
client.global.set("createdBranchId", response.body.branch.branchId);
%}
###
GET {{triliumHost}}/etapi/notes/{{createdNoteId}}/content
Authorization: {{authToken}}
> {%
client.assert(response.status === 200);
client.assert(response.body === "Hi there!");
%}

View File

@@ -1,5 +0,0 @@
{
"dev": {
"triliumHost": "http://localhost:37740"
}
}

View File

@@ -1,12 +0,0 @@
POST {{triliumHost}}/etapi/notes/root/import
Authorization: {{authToken}}
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary
< ../db/demo.zip
> {%
client.assert(response.status === 201);
client.assert(response.body.note.title == "Trilium Demo");
client.assert(response.body.branch.parentNoteId == "root");
%}

View File

@@ -1,34 +0,0 @@
POST {{triliumHost}}/etapi/auth/login
Content-Type: application/json
{
"password": "1234"
}
> {%
client.assert(response.status === 201);
client.global.set("testAuthToken", response.body.authToken);
%}
###
GET {{triliumHost}}/etapi/notes/root
Authorization: {{testAuthToken}}
> {% client.assert(response.status === 200); %}
###
POST {{triliumHost}}/etapi/auth/logout
Authorization: {{testAuthToken}}
Content-Type: application/json
> {% client.assert(response.status === 204); %}
###
GET {{triliumHost}}/etapi/notes/root
Authorization: {{testAuthToken}}
> {% client.assert(response.status === 401); %}

View File

@@ -1,82 +0,0 @@
### Test ETAPI metrics endpoint
# First login to get a token
POST {{triliumHost}}/etapi/auth/login
Content-Type: application/json
{
"password": "{{password}}"
}
> {%
client.test("Login successful", function() {
client.assert(response.status === 201, "Response status is not 201");
client.assert(response.body.authToken, "Auth token not present");
client.global.set("authToken", response.body.authToken);
});
%}
### Get metrics with authentication (default Prometheus format)
GET {{triliumHost}}/etapi/metrics
Authorization: {{authToken}}
> {%
client.test("Metrics endpoint returns Prometheus format by default", function() {
client.assert(response.status === 200, "Response status is not 200");
client.assert(response.headers["content-type"].includes("text/plain"), "Content-Type should be text/plain");
client.assert(response.body.includes("trilium_info"), "Should contain trilium_info metric");
client.assert(response.body.includes("trilium_notes_total"), "Should contain trilium_notes_total metric");
client.assert(response.body.includes("# HELP"), "Should contain HELP comments");
client.assert(response.body.includes("# TYPE"), "Should contain TYPE comments");
});
%}
### Get metrics in JSON format
GET {{triliumHost}}/etapi/metrics?format=json
Authorization: {{authToken}}
> {%
client.test("Metrics endpoint returns JSON when requested", function() {
client.assert(response.status === 200, "Response status is not 200");
client.assert(response.headers["content-type"].includes("application/json"), "Content-Type should be application/json");
client.assert(response.body.version, "Version info not present");
client.assert(response.body.database, "Database info not present");
client.assert(response.body.timestamp, "Timestamp not present");
client.assert(typeof response.body.database.totalNotes === 'number', "Total notes should be a number");
client.assert(typeof response.body.database.activeNotes === 'number', "Active notes should be a number");
});
%}
### Get metrics in Prometheus format explicitly
GET {{triliumHost}}/etapi/metrics?format=prometheus
Authorization: {{authToken}}
> {%
client.test("Metrics endpoint returns Prometheus format when requested", function() {
client.assert(response.status === 200, "Response status is not 200");
client.assert(response.headers["content-type"].includes("text/plain"), "Content-Type should be text/plain");
client.assert(response.body.includes("trilium_info"), "Should contain trilium_info metric");
client.assert(response.body.includes("trilium_notes_total"), "Should contain trilium_notes_total metric");
});
%}
### Test invalid format parameter
GET {{triliumHost}}/etapi/metrics?format=xml
Authorization: {{authToken}}
> {%
client.test("Invalid format parameter returns error", function() {
client.assert(response.status === 400, "Response status should be 400");
client.assert(response.body.code === "INVALID_FORMAT", "Error code should be INVALID_FORMAT");
client.assert(response.body.message.includes("prometheus"), "Error message should mention supported formats");
});
%}
### Test without authentication (should fail)
GET {{triliumHost}}/etapi/metrics
> {%
client.test("Metrics endpoint requires authentication", function() {
client.assert(response.status === 401, "Response status should be 401");
});
%}

View File

@@ -1,109 +0,0 @@
GET {{triliumHost}}/etapi/notes?search=aaa
> {% client.assert(response.status === 401); %}
###
GET {{triliumHost}}/etapi/notes/root
> {% client.assert(response.status === 401); %}
###
PATCH {{triliumHost}}/etapi/notes/root
Authorization: fakeauth
> {% client.assert(response.status === 401); %}
###
DELETE {{triliumHost}}/etapi/notes/root
Authorization: fakeauth
> {% client.assert(response.status === 401); %}
###
GET {{triliumHost}}/etapi/branches/root
Authorization: fakeauth
> {% client.assert(response.status === 401); %}
###
PATCH {{triliumHost}}/etapi/branches/root
> {% client.assert(response.status === 401); %}
###
DELETE {{triliumHost}}/etapi/branches/root
> {% client.assert(response.status === 401); %}
###
GET {{triliumHost}}/etapi/attributes/000
> {% client.assert(response.status === 401); %}
###
PATCH {{triliumHost}}/etapi/attributes/000
> {% client.assert(response.status === 401); %}
###
DELETE {{triliumHost}}/etapi/attributes/000
> {% client.assert(response.status === 401); %}
###
GET {{triliumHost}}/etapi/inbox/2022-02-22
> {% client.assert(response.status === 401); %}
###
GET {{triliumHost}}/etapi/calendar/days/2022-02-22
Authorization: fakeauth
> {% client.assert(response.status === 401); %}
###
GET {{triliumHost}}/etapi/calendar/weeks/2022-02-22
> {% client.assert(response.status === 401); %}
###
GET {{triliumHost}}/etapi/calendar/months/2022-02
> {% client.assert(response.status === 401); %}
###
GET {{triliumHost}}/etapi/calendar/years/2022
> {% client.assert(response.status === 401); %}
###
POST {{triliumHost}}/etapi/create-note
> {% client.assert(response.status === 401); %}
###
GET {{triliumHost}}/etapi/app-info
> {% client.assert(response.status === 401); %}
### Fake URL will get a 404 even without token
GET {{triliumHost}}/etapi/zzzzzz
> {% client.assert(response.status === 404); %}

View File

@@ -1,4 +0,0 @@
POST {{triliumHost}}/etapi/refresh-note-ordering/root
Authorization: {{authToken}}
> {% client.assert(response.status === 200); %}

View File

@@ -1,79 +0,0 @@
POST {{triliumHost}}/etapi/create-note
Authorization: {{authToken}}
Content-Type: application/json
{
"parentNoteId": "root",
"title": "Hello",
"type": "text",
"content": "Hi there!"
}
> {% client.global.set("createdNoteId", response.body.note.noteId); %}
###
POST {{triliumHost}}/etapi/attachments
Authorization: {{authToken}}
Content-Type: application/json
{
"ownerId": "{{createdNoteId}}",
"role": "file",
"mime": "text/plain",
"title": "my attachment",
"content": "text"
}
> {% client.global.set("createdAttachmentId", response.body.attachmentId); %}
###
PATCH {{triliumHost}}/etapi/attachments/{{createdAttachmentId}}
Authorization: {{authToken}}
Content-Type: application/json
{
"title": "CHANGED",
"position": 999
}
###
GET {{triliumHost}}/etapi/attachments/{{createdAttachmentId}}
Authorization: {{authToken}}
> {%
client.assert(response.body.title === "CHANGED");
client.assert(response.body.position === 999);
%}
###
PATCH {{triliumHost}}/etapi/attachments/{{createdAttachmentId}}
Authorization: {{authToken}}
Content-Type: application/json
{
"ownerId": "root"
}
> {%
client.assert(response.status === 400);
client.assert(response.body.code == "PROPERTY_NOT_ALLOWED");
%}
###
PATCH {{triliumHost}}/etapi/attachments/{{createdAttachmentId}}
Authorization: {{authToken}}
Content-Type: application/json
{
"title": null
}
> {%
client.assert(response.status === 400);
client.assert(response.body.code == "PROPERTY_VALIDATION_ERROR");
%}

View File

@@ -1,80 +0,0 @@
POST {{triliumHost}}/etapi/create-note
Authorization: {{authToken}}
Content-Type: application/json
{
"parentNoteId": "root",
"title": "Hello",
"type": "text",
"content": "Hi there!"
}
> {%
client.global.set("createdNoteId", response.body.note.noteId);
client.global.set("createdBranchId", response.body.branch.branchId);
%}
###
POST {{triliumHost}}/etapi/attributes
Authorization: {{authToken}}
Content-Type: application/json
{
"noteId": "{{createdNoteId}}",
"type": "label",
"name": "mylabel",
"value": "val",
"isInheritable": true
}
> {% client.global.set("createdAttributeId", response.body.attributeId); %}
###
PATCH {{triliumHost}}/etapi/attributes/{{createdAttributeId}}
Authorization: {{authToken}}
Content-Type: application/json
{
"value": "CHANGED"
}
###
GET {{triliumHost}}/etapi/attributes/{{createdAttributeId}}
Authorization: {{authToken}}
> {%
client.assert(response.body.value === "CHANGED");
%}
###
PATCH {{triliumHost}}/etapi/attributes/{{createdAttributeId}}
Authorization: {{authToken}}
Content-Type: application/json
{
"noteId": "root"
}
> {%
client.assert(response.status === 400);
client.assert(response.body.code == "PROPERTY_NOT_ALLOWED");
%}
###
PATCH {{triliumHost}}/etapi/attributes/{{createdAttributeId}}
Authorization: {{authToken}}
Content-Type: application/json
{
"value": null
}
> {%
client.assert(response.status === 400);
client.assert(response.body.code == "PROPERTY_VALIDATION_ERROR");
%}

View File

@@ -1,66 +0,0 @@
POST {{triliumHost}}/etapi/create-note
Authorization: {{authToken}}
Content-Type: application/json
{
"parentNoteId": "root",
"type": "text",
"title": "Hello",
"content": ""
}
> {% client.global.set("createdBranchId", response.body.branch.branchId); %}
###
PATCH {{triliumHost}}/etapi/branches/{{createdBranchId}}
Authorization: {{authToken}}
Content-Type: application/json
{
"prefix": "pref",
"notePosition": 666,
"isExpanded": true
}
###
GET {{triliumHost}}/etapi/branches/{{createdBranchId}}
Authorization: {{authToken}}
> {%
client.assert(response.status === 200);
client.assert(response.body.prefix === 'pref');
client.assert(response.body.notePosition === 666);
client.assert(response.body.isExpanded === true);
%}
###
PATCH {{triliumHost}}/etapi/branches/{{createdBranchId}}
Authorization: {{authToken}}
Content-Type: application/json
{
"parentNoteId": "root"
}
> {%
client.assert(response.status === 400);
client.assert(response.body.code == "PROPERTY_NOT_ALLOWED");
%}
###
PATCH {{triliumHost}}/etapi/branches/{{createdBranchId}}
Authorization: {{authToken}}
Content-Type: application/json
{
"prefix": 123
}
> {%
client.assert(response.status === 400);
client.assert(response.body.code == "PROPERTY_VALIDATION_ERROR");
%}

View File

@@ -1,83 +0,0 @@
POST {{triliumHost}}/etapi/create-note
Authorization: {{authToken}}
Content-Type: application/json
{
"parentNoteId": "root",
"title": "Hello",
"type": "code",
"mime": "application/json",
"content": "{}"
}
> {% client.global.set("createdNoteId", response.body.note.noteId); %}
###
GET {{triliumHost}}/etapi/notes/{{createdNoteId}}
Authorization: {{authToken}}
> {%
client.assert(response.status === 200);
client.assert(response.body.title === 'Hello');
client.assert(response.body.type === 'code');
client.assert(response.body.mime === 'application/json');
%}
###
PATCH {{triliumHost}}/etapi/notes/{{createdNoteId}}
Authorization: {{authToken}}
Content-Type: application/json
{
"title": "Wassup",
"type": "html",
"mime": "text/html",
"dateCreated": "2023-08-21 23:38:51.123+0200",
"utcDateCreated": "2023-08-21 23:38:51.123Z"
}
###
GET {{triliumHost}}/etapi/notes/{{createdNoteId}}
Authorization: {{authToken}}
> {%
client.assert(response.status === 200);
client.assert(response.body.title === 'Wassup');
client.assert(response.body.type === 'html');
client.assert(response.body.mime === 'text/html');
client.assert(response.body.dateCreated == "2023-08-21 23:38:51.123+0200");
client.assert(response.body.utcDateCreated == "2023-08-21 23:38:51.123Z");
%}
###
PATCH {{triliumHost}}/etapi/notes/{{createdNoteId}}
Authorization: {{authToken}}
Content-Type: application/json
{
"isProtected": true
}
> {%
client.assert(response.status === 400);
client.assert(response.body.code == "PROPERTY_NOT_ALLOWED");
%}
###
PATCH {{triliumHost}}/etapi/notes/{{createdNoteId}}
Authorization: {{authToken}}
Content-Type: application/json
{
"title": true
}
> {%
client.assert(response.status === 400);
client.assert(response.body.code == "PROPERTY_VALIDATION_ERROR");
%}

View File

@@ -1,23 +0,0 @@
POST {{triliumHost}}/etapi/create-note
Authorization: {{authToken}}
Content-Type: application/json
{
"parentNoteId": "root",
"title": "Hello",
"type": "code",
"mime": "text/plain",
"content": "Hi there!"
}
> {% client.global.set("createdNoteId", response.body.note.noteId); %}
###
POST {{triliumHost}}/etapi/notes/{{createdNoteId}}/revision
Authorization: {{authToken}}
Content-Type: text/plain
Changed content
> {% client.assert(response.status === 204); %}

View File

@@ -1,39 +0,0 @@
POST {{triliumHost}}/etapi/create-note
Authorization: {{authToken}}
Content-Type: application/json
{
"parentNoteId": "root",
"title": "Hello",
"type": "text",
"content": "Hi there!"
}
> {% client.global.set("createdNoteId", response.body.note.noteId); %}
###
POST {{triliumHost}}/etapi/attachments
Authorization: {{authToken}}
Content-Type: application/json
{
"ownerId": "{{createdNoteId}}",
"role": "file",
"mime": "text/plain",
"title": "my attachment",
"content": "text"
}
> {% client.global.set("createdAttachmentId", response.body.attachmentId); %}
###
PUT {{triliumHost}}/etapi/attachments/{{createdAttachmentId}}/content
Authorization: {{authToken}}
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary
< ../images/icon-color.png
> {% client.assert(response.status === 204); %}

View File

@@ -1,45 +0,0 @@
POST {{triliumHost}}/etapi/create-note
Authorization: {{authToken}}
Content-Type: application/json
{
"parentNoteId": "root",
"title": "Hello",
"type": "text",
"content": "Hi there!"
}
> {% client.global.set("createdNoteId", response.body.note.noteId); %}
###
POST {{triliumHost}}/etapi/attachments
Authorization: {{authToken}}
Content-Type: application/json
{
"ownerId": "{{createdNoteId}}",
"role": "file",
"mime": "text/plain",
"title": "my attachment",
"content": "text"
}
> {% client.global.set("createdAttachmentId", response.body.attachmentId); %}
###
PUT {{triliumHost}}/etapi/attachments/{{createdAttachmentId}}/content
Authorization: {{authToken}}
Content-Type: text/plain
Changed content
> {% client.assert(response.status === 204); %}
###
GET {{triliumHost}}/etapi/attachments/{{createdAttachmentId}}/content
Authorization: {{authToken}}
> {% client.assert(response.body === "Changed content"); %}

View File

@@ -1,25 +0,0 @@
POST {{triliumHost}}/etapi/create-note
Authorization: {{authToken}}
Content-Type: application/json
{
"parentNoteId": "root",
"title": "Hello",
"type": "image",
"mime": "image/png",
"content": ""
}
> {% client.global.set("createdNoteId", response.body.note.noteId); %}
###
PUT {{triliumHost}}/etapi/notes/{{createdNoteId}}/content
Authorization: {{authToken}}
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary
< ../images/icon-color.png
> {% client.assert(response.status === 204); %}

View File

@@ -1,30 +0,0 @@
POST {{triliumHost}}/etapi/create-note
Authorization: {{authToken}}
Content-Type: application/json
{
"parentNoteId": "root",
"title": "Hello",
"type": "code",
"mime": "text/plain",
"content": "Hi there!"
}
> {% client.global.set("createdNoteId", response.body.note.noteId); %}
###
PUT {{triliumHost}}/etapi/notes/{{createdNoteId}}/content
Authorization: {{authToken}}
Content-Type: text/plain
Changed content
> {% client.assert(response.status === 204); %}
###
GET {{triliumHost}}/etapi/notes/{{createdNoteId}}/content
Authorization: {{authToken}}
> {% client.assert(response.body === "Changed content"); %}

View File

@@ -1,39 +0,0 @@
POST {{triliumHost}}/etapi/create-note
Authorization: {{authToken}}
Content-Type: application/json
{
"parentNoteId": "root",
"title": "title",
"type": "text",
"content": "{{$uuid}}"
}
> {% client.global.set("createdNoteId", response.body.note.noteId); %}
###
GET {{triliumHost}}/etapi/notes/{{createdNoteId}}/content
Authorization: {{authToken}}
> {% client.global.set("content", response.body); %}
###
GET {{triliumHost}}/etapi/notes?search={{content}}&debug=true
Authorization: {{authToken}}
> {%
client.assert(response.status === 200);
client.assert(response.body.results.length === 1);
%}
### Same but with fast search which doesn't look in the content so 0 notes should be found
GET {{triliumHost}}/etapi/notes?search={{content}}&fastSearch=true
Authorization: {{authToken}}
> {%
client.assert(response.status === 200);
client.assert(response.body.results.length === 0);
%}

5
apps/client/.env Normal file
View File

@@ -0,0 +1,5 @@
# The development license key for premium CKEditor features.
# Note: This key must only be used for the Trilium Notes project.
# Expires on: 2025-09-13
VITE_CKEDITOR_KEY=eyJhbGciOiJFUzI1NiJ9.eyJleHAiOjE3NTc3MjE1OTksImp0aSI6ImFiN2E0NjZmLWJlZGMtNDNiYy1iMzU4LTk0NGQ0YWJhY2I3ZiIsImRpc3RyaWJ1dGlvbkNoYW5uZWwiOlsic2giLCJkcnVwYWwiXSwid2hpdGVMYWJlbCI6dHJ1ZSwiZmVhdHVyZXMiOlsiRFJVUCIsIkNNVCIsIkRPIiwiRlAiLCJTQyIsIlRPQyIsIlRQTCIsIlBPRSIsIkNDIiwiTUYiLCJTRUUiLCJFQ0giLCJFSVMiXSwidmMiOiI1MzlkOWY5YyJ9.2rvKPql4hmukyXhEtWPZ8MLxKvzPIwzCdykO653g7IxRRZy2QJpeRszElZx9DakKYZKXekVRAwQKgHxwkgbE_w
VITE_CKEDITOR_ENABLE_INSPECTOR=false

View File

@@ -0,0 +1 @@
VITE_CKEDITOR_ENABLE_INSPECTOR=false

View File

@@ -1,40 +1,41 @@
{
"name": "@triliumnext/client",
"version": "0.94.0",
"version": "0.97.1",
"description": "JQuery-based client for TriliumNext, used for both web and desktop (via Electron)",
"private": true,
"license": "AGPL-3.0-only",
"author": {
"name": "TriliumNext Notes Team",
"name": "Trilium Notes Team",
"email": "contact@eliandoran.me",
"url": "https://github.com/TriliumNext/Notes"
},
"dependencies": {
"@eslint/js": "9.27.0",
"@eslint/js": "9.31.0",
"@excalidraw/excalidraw": "0.18.0",
"@fullcalendar/core": "6.1.17",
"@fullcalendar/daygrid": "6.1.17",
"@fullcalendar/interaction": "6.1.17",
"@fullcalendar/list": "6.1.17",
"@fullcalendar/multimonth": "6.1.17",
"@fullcalendar/timegrid": "6.1.17",
"@mermaid-js/layout-elk": "0.1.7",
"@mind-elixir/node-menu": "1.0.5",
"@fullcalendar/core": "6.1.18",
"@fullcalendar/daygrid": "6.1.18",
"@fullcalendar/interaction": "6.1.18",
"@fullcalendar/list": "6.1.18",
"@fullcalendar/multimonth": "6.1.18",
"@fullcalendar/timegrid": "6.1.18",
"@mermaid-js/layout-elk": "0.1.8",
"@mind-elixir/node-menu": "5.0.0",
"@popperjs/core": "2.11.8",
"@triliumnext/ckeditor5": "workspace:*",
"@triliumnext/codemirror": "workspace:*",
"@triliumnext/commons": "workspace:*",
"@triliumnext/highlightjs": "workspace:*",
"@triliumnext/share-theme": "workspace:*",
"autocomplete.js": "0.38.1",
"bootstrap": "5.3.6",
"bootstrap": "5.3.7",
"boxicons": "2.1.4",
"dayjs": "1.11.13",
"dayjs-plugin-utc": "0.1.2",
"debounce": "2.2.0",
"draggabilly": "3.0.0",
"force-graph": "1.49.6",
"globals": "16.2.0",
"i18next": "25.2.1",
"force-graph": "1.50.1",
"globals": "16.3.0",
"i18next": "25.3.2",
"i18next-http-backend": "3.0.2",
"jquery": "3.7.1",
"jquery-hotkeys": "0.2.2",
@@ -45,32 +46,41 @@
"leaflet": "1.9.4",
"leaflet-gpx": "2.2.0",
"mark.js": "8.11.1",
"marked": "15.0.12",
"mermaid": "11.6.0",
"mind-elixir": "4.6.0",
"marked": "16.1.1",
"mermaid": "11.9.0",
"mind-elixir": "5.0.2",
"normalize.css": "8.0.1",
"panzoom": "9.4.3",
"react": "19.1.0",
"react-dom": "19.1.0",
"preact": "10.26.9",
"split.js": "1.6.5",
"svg-pan-zoom": "3.6.2",
"tabulator-tables": "6.3.1",
"vanilla-js-wheel-zoom": "9.0.4"
},
"devDependencies": {
"@ckeditor/ckeditor5-inspector": "4.1.0",
"@ckeditor/ckeditor5-inspector": "5.0.0",
"@types/bootstrap": "5.2.10",
"@types/jquery": "3.5.32",
"@types/leaflet": "1.9.18",
"@types/leaflet": "1.9.20",
"@types/leaflet-gpx": "1.3.7",
"@types/mark.js": "8.11.12",
"@types/react": "19.1.6",
"@types/react-dom": "19.1.5",
"@types/tabulator-tables": "6.2.7",
"copy-webpack-plugin": "13.0.0",
"happy-dom": "17.5.6",
"happy-dom": "18.0.1",
"script-loader": "0.7.2",
"vite-plugin-static-copy": "3.0.0"
"vite-plugin-static-copy": "3.1.1"
},
"nx": {
"name": "client"
"name": "client",
"targets": {
"serve": {
"dependsOn": [
"^build"
]
},
"circular-deps": {
"command": "pnpx dpdm -T {projectRoot}/src/**/*.ts --tree=false --warning=false --skip-dynamic-imports=circular"
}
}
}
}

View File

@@ -1,424 +0,0 @@
/*
* Remove template code below
*/
html {
-webkit-text-size-adjust: 100%;
font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,
'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif,
'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',
'Noto Color Emoji';
line-height: 1.5;
tab-size: 4;
scroll-behavior: smooth;
}
body {
font-family: inherit;
line-height: inherit;
margin: 0;
}
h1,
h2,
p,
pre {
margin: 0;
}
*,
::before,
::after {
box-sizing: border-box;
border-width: 0;
border-style: solid;
border-color: currentColor;
}
h1,
h2 {
font-size: inherit;
font-weight: inherit;
}
a {
color: inherit;
text-decoration: inherit;
}
pre {
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
'Liberation Mono', 'Courier New', monospace;
}
svg {
display: block;
vertical-align: middle;
}
svg {
shape-rendering: auto;
text-rendering: optimizeLegibility;
}
pre {
background-color: rgba(55, 65, 81, 1);
border-radius: 0.25rem;
color: rgba(229, 231, 235, 1);
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
'Liberation Mono', 'Courier New', monospace;
overflow: scroll;
padding: 0.5rem 0.75rem;
}
.shadow {
box-shadow: 0 0 #0000, 0 0 #0000, 0 10px 15px -3px rgba(0, 0, 0, 0.1),
0 4px 6px -2px rgba(0, 0, 0, 0.05);
}
.rounded {
border-radius: 1.5rem;
}
.wrapper {
width: 100%;
}
.container {
margin-left: auto;
margin-right: auto;
max-width: 768px;
padding-bottom: 3rem;
padding-left: 1rem;
padding-right: 1rem;
color: rgba(55, 65, 81, 1);
width: 100%;
}
#welcome {
margin-top: 2.5rem;
}
#welcome h1 {
font-size: 3rem;
font-weight: 500;
letter-spacing: -0.025em;
line-height: 1;
}
#welcome span {
display: block;
font-size: 1.875rem;
font-weight: 300;
line-height: 2.25rem;
margin-bottom: 0.5rem;
}
#hero {
align-items: center;
background-color: hsla(214, 62%, 21%, 1);
border: none;
box-sizing: border-box;
color: rgba(55, 65, 81, 1);
display: grid;
grid-template-columns: 1fr;
margin-top: 3.5rem;
}
#hero .text-container {
color: rgba(255, 255, 255, 1);
padding: 3rem 2rem;
}
#hero .text-container h2 {
font-size: 1.5rem;
line-height: 2rem;
position: relative;
}
#hero .text-container h2 svg {
color: hsla(162, 47%, 50%, 1);
height: 2rem;
left: -0.25rem;
position: absolute;
top: 0;
width: 2rem;
}
#hero .text-container h2 span {
margin-left: 2.5rem;
}
#hero .text-container a {
background-color: rgba(255, 255, 255, 1);
border-radius: 0.75rem;
color: rgba(55, 65, 81, 1);
display: inline-block;
margin-top: 1.5rem;
padding: 1rem 2rem;
text-decoration: inherit;
}
#hero .logo-container {
display: none;
justify-content: center;
padding-left: 2rem;
padding-right: 2rem;
}
#hero .logo-container svg {
color: rgba(255, 255, 255, 1);
width: 66.666667%;
}
#middle-content {
align-items: flex-start;
display: grid;
gap: 4rem;
grid-template-columns: 1fr;
margin-top: 3.5rem;
}
#learning-materials {
padding: 2.5rem 2rem;
}
#learning-materials h2 {
font-weight: 500;
font-size: 1.25rem;
letter-spacing: -0.025em;
line-height: 1.75rem;
padding-left: 1rem;
padding-right: 1rem;
}
.list-item-link {
align-items: center;
border-radius: 0.75rem;
display: flex;
margin-top: 1rem;
padding: 1rem;
transition-property: background-color, border-color, color, fill, stroke,
opacity, box-shadow, transform, filter, backdrop-filter,
-webkit-backdrop-filter;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
width: 100%;
}
.list-item-link svg:first-child {
margin-right: 1rem;
height: 1.5rem;
transition-property: background-color, border-color, color, fill, stroke,
opacity, box-shadow, transform, filter, backdrop-filter,
-webkit-backdrop-filter;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
width: 1.5rem;
}
.list-item-link > span {
flex-grow: 1;
font-weight: 400;
transition-property: background-color, border-color, color, fill, stroke,
opacity, box-shadow, transform, filter, backdrop-filter,
-webkit-backdrop-filter;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
}
.list-item-link > span > span {
color: rgba(107, 114, 128, 1);
display: block;
flex-grow: 1;
font-size: 0.75rem;
font-weight: 300;
line-height: 1rem;
transition-property: background-color, border-color, color, fill, stroke,
opacity, box-shadow, transform, filter, backdrop-filter,
-webkit-backdrop-filter;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
}
.list-item-link svg:last-child {
height: 1rem;
transition-property: all;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
width: 1rem;
}
.list-item-link:hover {
color: rgba(255, 255, 255, 1);
background-color: hsla(162, 47%, 50%, 1);
}
.list-item-link:hover > span {
}
.list-item-link:hover > span > span {
color: rgba(243, 244, 246, 1);
}
.list-item-link:hover svg:last-child {
transform: translateX(0.25rem);
}
#other-links {
}
.button-pill {
padding: 1.5rem 2rem;
transition-duration: 300ms;
transition-property: background-color, border-color, color, fill, stroke,
opacity, box-shadow, transform, filter, backdrop-filter,
-webkit-backdrop-filter;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
align-items: center;
display: flex;
}
.button-pill svg {
transition-property: background-color, border-color, color, fill, stroke,
opacity, box-shadow, transform, filter, backdrop-filter,
-webkit-backdrop-filter;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
flex-shrink: 0;
width: 3rem;
}
.button-pill > span {
letter-spacing: -0.025em;
font-weight: 400;
font-size: 1.125rem;
line-height: 1.75rem;
padding-left: 1rem;
padding-right: 1rem;
}
.button-pill span span {
display: block;
font-size: 0.875rem;
font-weight: 300;
line-height: 1.25rem;
}
.button-pill:hover svg,
.button-pill:hover {
color: rgba(255, 255, 255, 1) !important;
}
#nx-console:hover {
background-color: rgba(0, 122, 204, 1);
}
#nx-console svg {
color: rgba(0, 122, 204, 1);
}
#nx-console-jetbrains {
margin-top: 2rem;
}
#nx-console-jetbrains:hover {
background-color: rgba(255, 49, 140, 1);
}
#nx-console-jetbrains svg {
color: rgba(255, 49, 140, 1);
}
#nx-repo:hover {
background-color: rgba(24, 23, 23, 1);
}
#nx-repo svg {
color: rgba(24, 23, 23, 1);
}
#nx-cloud {
margin-bottom: 2rem;
margin-top: 2rem;
padding: 2.5rem 2rem;
}
#nx-cloud > div {
align-items: center;
display: flex;
}
#nx-cloud > div svg {
border-radius: 0.375rem;
flex-shrink: 0;
width: 3rem;
}
#nx-cloud > div h2 {
font-size: 1.125rem;
font-weight: 400;
letter-spacing: -0.025em;
line-height: 1.75rem;
padding-left: 1rem;
padding-right: 1rem;
}
#nx-cloud > div h2 span {
display: block;
font-size: 0.875rem;
font-weight: 300;
line-height: 1.25rem;
}
#nx-cloud p {
font-size: 1rem;
line-height: 1.5rem;
margin-top: 1rem;
}
#nx-cloud pre {
margin-top: 1rem;
}
#nx-cloud a {
color: rgba(107, 114, 128, 1);
display: block;
font-size: 0.875rem;
line-height: 1.25rem;
margin-top: 1.5rem;
text-align: right;
}
#nx-cloud a:hover {
text-decoration: underline;
}
#commands {
padding: 2.5rem 2rem;
margin-top: 3.5rem;
}
#commands h2 {
font-size: 1.25rem;
font-weight: 400;
letter-spacing: -0.025em;
line-height: 1.75rem;
padding-left: 1rem;
padding-right: 1rem;
}
#commands p {
font-size: 1rem;
font-weight: 300;
line-height: 1.5rem;
margin-top: 1rem;
padding-left: 1rem;
padding-right: 1rem;
}
details {
align-items: center;
display: flex;
margin-top: 1rem;
padding-left: 1rem;
padding-right: 1rem;
width: 100%;
}
details pre > span {
color: rgba(181, 181, 181, 1);
}
summary {
border-radius: 0.5rem;
display: flex;
font-weight: 400;
padding: 0.5rem;
cursor: pointer;
transition-property: background-color, border-color, color, fill, stroke,
opacity, box-shadow, transform, filter, backdrop-filter,
-webkit-backdrop-filter;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
}
summary:hover {
background-color: rgba(243, 244, 246, 1);
}
summary svg {
height: 1.5rem;
margin-right: 1rem;
width: 1.5rem;
}
#love {
color: rgba(107, 114, 128, 1);
font-size: 0.875rem;
line-height: 1.25rem;
margin-top: 3.5rem;
opacity: 0.6;
text-align: center;
}
#love svg {
color: rgba(252, 165, 165, 1);
width: 1.25rem;
height: 1.25rem;
display: inline;
margin-top: -0.25rem;
}
@media screen and (min-width: 768px) {
#hero {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
#hero .logo-container {
display: flex;
}
#middle-content {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}

View File

@@ -1,21 +0,0 @@
import { AppElement } from './app.element';
describe('AppElement', () => {
let app: AppElement;
beforeEach(() => {
app = new AppElement();
});
it('should create successfully', () => {
expect(app).toBeTruthy();
});
it('should have a greeting', () => {
app.connectedCallback();
expect(app.querySelector('h1').innerHTML).toContain(
'Welcome @triliumnext/client'
);
});
});

View File

@@ -1,409 +0,0 @@
import './app.element.css';
export class AppElement extends HTMLElement {
public static observedAttributes = [
];
connectedCallback() {
const title = '@triliumnext/client';
this.innerHTML = `
<div class="wrapper">
<div class="container">
<!-- WELCOME -->
<div id="welcome">
<h1>
<span> Hello there, </span>
Welcome ${title} 👋
</h1>
</div>
<!-- HERO -->
<div id="hero" class="rounded">
<div class="text-container">
<h2>
<svg
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M9 12l2 2 4-4M7.835 4.697a3.42 3.42 0 001.946-.806 3.42 3.42 0 014.438 0 3.42 3.42 0 001.946.806 3.42 3.42 0 013.138 3.138 3.42 3.42 0 00.806 1.946 3.42 3.42 0 010 4.438 3.42 3.42 0 00-.806 1.946 3.42 3.42 0 01-3.138 3.138 3.42 3.42 0 00-1.946.806 3.42 3.42 0 01-4.438 0 3.42 3.42 0 00-1.946-.806 3.42 3.42 0 01-3.138-3.138 3.42 3.42 0 00-.806-1.946 3.42 3.42 0 010-4.438 3.42 3.42 0 00.806-1.946 3.42 3.42 0 013.138-3.138z"
/>
</svg>
<span>You&apos;re up and running</span>
</h2>
<a href="#commands"> What&apos;s next? </a>
</div>
<div class="logo-container">
<svg
fill="currentColor"
role="img"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M11.987 14.138l-3.132 4.923-5.193-8.427-.012 8.822H0V4.544h3.691l5.247 8.833.005-3.998 3.044 4.759zm.601-5.761c.024-.048 0-3.784.008-3.833h-3.65c.002.059-.005 3.776-.003 3.833h3.645zm5.634 4.134a2.061 2.061 0 0 0-1.969 1.336 1.963 1.963 0 0 1 2.343-.739c.396.161.917.422 1.33.283a2.1 2.1 0 0 0-1.704-.88zm3.39 1.061c-.375-.13-.8-.277-1.109-.681-.06-.08-.116-.17-.176-.265a2.143 2.143 0 0 0-.533-.642c-.294-.216-.68-.322-1.18-.322a2.482 2.482 0 0 0-2.294 1.536 2.325 2.325 0 0 1 4.002.388.75.75 0 0 0 .836.334c.493-.105.46.36 1.203.518v-.133c-.003-.446-.246-.55-.75-.733zm2.024 1.266a.723.723 0 0 0 .347-.638c-.01-2.957-2.41-5.487-5.37-5.487a5.364 5.364 0 0 0-4.487 2.418c-.01-.026-1.522-2.39-1.538-2.418H8.943l3.463 5.423-3.379 5.32h3.54l1.54-2.366 1.568 2.366h3.541l-3.21-5.052a.7.7 0 0 1-.084-.32 2.69 2.69 0 0 1 2.69-2.691h.001c1.488 0 1.736.89 2.057 1.308.634.826 1.9.464 1.9 1.541a.707.707 0 0 0 1.066.596zm.35.133c-.173.372-.56.338-.755.639-.176.271.114.412.114.412s.337.156.538-.311c.104-.231.14-.488.103-.74z"
/>
</svg>
</div>
</div>
<!-- MIDDLE CONTENT -->
<div id="middle-content">
<div id="learning-materials" class="rounded shadow">
<h2>Learning materials</h2>
<a href="https://nx.dev/getting-started/intro?utm_source=nx-project" target="_blank" rel="noreferrer" class="list-item-link">
<svg
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253"
/>
</svg>
<span>
Documentation
<span> Everything is in there </span>
</span>
<svg
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M9 5l7 7-7 7"
/>
</svg>
</a>
<a href="https://nx.dev/blog/?utm_source=nx-project" target="_blank" rel="noreferrer" class="list-item-link">
<svg
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M19 20H5a2 2 0 01-2-2V6a2 2 0 012-2h10a2 2 0 012 2v1m2 13a2 2 0 01-2-2V7m2 13a2 2 0 002-2V9a2 2 0 00-2-2h-2m-4-3H9M7 16h6M7 8h6v4H7V8z"
/>
</svg>
<span>
Blog
<span> Changelog, features & events </span>
</span>
<svg
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M9 5l7 7-7 7"
/>
</svg>
</a>
<a href="https://www.youtube.com/@NxDevtools/videos?utm_source=nx-project&sub_confirmation=1" target="_blank" rel="noreferrer" class="list-item-link">
<svg
role="img"
viewBox="0 0 24 24"
fill="currentColor"
xmlns="http://www.w3.org/2000/svg"
>
<title>YouTube</title>
<path
d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"
/>
</svg>
<span>
YouTube channel
<span> Nx Show, talks & tutorials </span>
</span>
<svg
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M9 5l7 7-7 7"
/>
</svg>
</a>
<a href="https://nx.dev/react-tutorial/1-code-generation?utm_source=nx-project" target="_blank" rel="noreferrer" class="list-item-link">
<svg
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5M7.188 2.239l.777 2.897M5.136 7.965l-2.898-.777M13.95 4.05l-2.122 2.122m-5.657 5.656l-2.12 2.122"
/>
</svg>
<span>
Interactive tutorials
<span> Create an app, step-by-step </span>
</span>
<svg
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M9 5l7 7-7 7"
/>
</svg>
</a>
<a href="https://nxplaybook.com/?utm_source=nx-project" target="_blank" rel="noreferrer" class="list-item-link">
<svg
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path d="M12 14l9-5-9-5-9 5 9 5z" />
<path
d="M12 14l6.16-3.422a12.083 12.083 0 01.665 6.479A11.952 11.952 0 0012 20.055a11.952 11.952 0 00-6.824-2.998 12.078 12.078 0 01.665-6.479L12 14z"
/>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M12 14l9-5-9-5-9 5 9 5zm0 0l6.16-3.422a12.083 12.083 0 01.665 6.479A11.952 11.952 0 0012 20.055a11.952 11.952 0 00-6.824-2.998 12.078 12.078 0 01.665-6.479L12 14zm-4 6v-7.5l4-2.222"
/>
</svg>
<span>
Video courses
<span> Nx custom courses </span>
</span>
<svg
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M9 5l7 7-7 7"
/>
</svg>
</a>
</div>
<div id="other-links">
<a id="nx-console" class="button-pill rounded shadow" href="https://marketplace.visualstudio.com/items?itemName=nrwl.angular-console&utm_source=nx-project" target="_blank" rel="noreferrer">
<svg
fill="currentColor"
role="img"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<title>Visual Studio Code</title>
<path
d="M23.15 2.587L18.21.21a1.494 1.494 0 0 0-1.705.29l-9.46 8.63-4.12-3.128a.999.999 0 0 0-1.276.057L.327 7.261A1 1 0 0 0 .326 8.74L3.899 12 .326 15.26a1 1 0 0 0 .001 1.479L1.65 17.94a.999.999 0 0 0 1.276.057l4.12-3.128 9.46 8.63a1.492 1.492 0 0 0 1.704.29l4.942-2.377A1.5 1.5 0 0 0 24 20.06V3.939a1.5 1.5 0 0 0-.85-1.352zm-5.146 14.861L10.826 12l7.178-5.448v10.896z"
/>
</svg>
<span>
Install Nx Console for VSCode
<span>The official VSCode extension for Nx.</span>
</span>
</a>
<a
id="nx-console-jetbrains"
class="button-pill rounded shadow"
href="https://plugins.jetbrains.com/plugin/21060-nx-console"
target="_blank"
rel="noreferrer"
>
<svg
height="48"
width="48"
viewBox="20 20 60 60"
xmlns="http://www.w3.org/2000/svg"
>
<path d="m22.5 22.5h60v60h-60z" />
<g fill="#fff">
<path d="m29.03 71.25h22.5v3.75h-22.5z" />
<path d="m28.09 38 1.67-1.58a1.88 1.88 0 0 0 1.47.87c.64 0 1.06-.44 1.06-1.31v-5.98h2.58v6a3.48 3.48 0 0 1 -.87 2.6 3.56 3.56 0 0 1 -2.57.95 3.84 3.84 0 0 1 -3.34-1.55z" />
<path d="m36 30h7.53v2.19h-5v1.44h4.49v2h-4.42v1.49h5v2.21h-7.6z" />
<path d="m47.23 32.29h-2.8v-2.29h8.21v2.27h-2.81v7.1h-2.6z" />
<path d="m29.13 43.08h4.42a3.53 3.53 0 0 1 2.55.83 2.09 2.09 0 0 1 .6 1.53 2.16 2.16 0 0 1 -1.44 2.09 2.27 2.27 0 0 1 1.86 2.29c0 1.61-1.31 2.59-3.55 2.59h-4.44zm5 2.89c0-.52-.42-.8-1.18-.8h-1.29v1.64h1.24c.79 0 1.25-.26 1.25-.81zm-.9 2.66h-1.57v1.73h1.62c.8 0 1.24-.31 1.24-.86 0-.5-.4-.87-1.27-.87z" />
<path d="m38 43.08h4.1a4.19 4.19 0 0 1 3 1 2.93 2.93 0 0 1 .9 2.19 3 3 0 0 1 -1.93 2.89l2.24 3.27h-3l-1.88-2.84h-.87v2.84h-2.56zm4 4.5c.87 0 1.39-.43 1.39-1.11 0-.75-.54-1.12-1.4-1.12h-1.44v2.26z" />
<path d="m49.59 43h2.5l4 9.44h-2.79l-.67-1.69h-3.63l-.67 1.69h-2.71zm2.27 5.73-1-2.65-1.06 2.65z" />
<path d="m56.46 43.05h2.6v9.37h-2.6z" />
<path d="m60.06 43.05h2.42l3.37 5v-5h2.57v9.37h-2.26l-3.53-5.14v5.14h-2.57z" />
<path d="m68.86 51 1.45-1.73a4.84 4.84 0 0 0 3 1.13c.71 0 1.08-.24 1.08-.65 0-.4-.31-.6-1.59-.91-2-.46-3.53-1-3.53-2.93 0-1.74 1.37-3 3.62-3a5.89 5.89 0 0 1 3.86 1.25l-1.26 1.84a4.63 4.63 0 0 0 -2.62-.92c-.63 0-.94.25-.94.6 0 .42.32.61 1.63.91 2.14.46 3.44 1.16 3.44 2.91 0 1.91-1.51 3-3.79 3a6.58 6.58 0 0 1 -4.35-1.5z" />
</g>
</svg>
<span>
Install Nx Console for JetBrains
<span>
Available for WebStorm, Intellij IDEA Ultimate and more!
</span>
</span>
</a>
<div id="nx-cloud" class="rounded shadow">
<div>
<svg id="nx-cloud-logo" role="img" xmlns="http://www.w3.org/2000/svg" stroke="currentColor" fill="transparent" viewBox="0 0 24 24">
<path stroke-width="2" d="M23 3.75V6.5c-3.036 0-5.5 2.464-5.5 5.5s-2.464 5.5-5.5 5.5-5.5 2.464-5.5 5.5H3.75C2.232 23 1 21.768 1 20.25V3.75C1 2.232 2.232 1 3.75 1h16.5C21.768 1 23 2.232 23 3.75Z" />
<path stroke-width="2" d="M23 6v14.1667C23 21.7307 21.7307 23 20.1667 23H6c0-3.128 2.53867-5.6667 5.6667-5.6667 3.128 0 5.6666-2.5386 5.6666-5.6666C17.3333 8.53867 19.872 6 23 6Z" />
</svg>
<h2>
Nx Cloud
<span>
Enable faster CI & better DX
</span>
</h2>
</div>
<p>
You can activate distributed tasks executions and caching by
running:
</p>
<pre>nx connect</pre>
<a href="https://nx.app/?utm_source=nx-project" target="_blank" rel="noreferrer"> What is Nx Cloud? </a>
</div>
<a id="nx-repo" class="button-pill rounded shadow" href="https://github.com/nrwl/nx?utm_source=nx-project" target="_blank" rel="noreferrer">
<svg
fill="currentColor"
role="img"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"
/>
</svg>
<span>
Nx is open source
<span> Love Nx? Give us a star! </span>
</span>
</a>
</div>
</div>
<!-- COMMANDS -->
<div id="commands" class="rounded shadow">
<h2>Next steps</h2>
<p>Here are some things you can do with Nx:</p>
<details>
<summary>
<svg
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M8 9l3 3-3 3m5 0h3M5 20h14a2 2 0 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"
/>
</svg>
Add UI library
</summary>
<pre><span># Generate UI lib</span>
nx g @nx/angular:lib ui
<span># Add a component</span>
nx g @nx/angular:component ui/src/lib/button</pre>
</details>
<details>
<summary>
<svg
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M8 9l3 3-3 3m5 0h3M5 20h14a2 2 0 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"
/>
</svg>
View interactive project graph
</summary>
<pre>nx graph</pre>
</details>
<details>
<summary>
<svg
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M8 9l3 3-3 3m5 0h3M5 20h14a2 2 0 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"
/>
</svg>
Run affected commands
</summary>
<pre><span># see what&apos;s been affected by changes</span>
nx affected:graph
<span># run tests for current changes</span>
nx affected:test
<span># run e2e tests for current changes</span>
nx affected:e2e</pre>
</details>
</div>
<p id="love">
Carefully crafted with
<svg
fill="currentColor"
stroke="none"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"
/>
</svg>
</p>
</div>
</div>
`;
}
}
customElements.define('triliumnext-root', AppElement);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -1,14 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Client</title>
<base href="/" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="icon" type="image/x-icon" href="favicon.ico" />
</head>
<body>
<triliumnext-root></triliumnext-root>
</body>
</html>

View File

@@ -1 +0,0 @@
import './app/app.element';

View File

@@ -1 +0,0 @@
/* You can add global styles to this file, and also import other style files */

View File

@@ -1,5 +1,4 @@
import froca from "../services/froca.js";
import bundleService from "../services/bundle.js";
import RootCommandExecutor from "./root_command_executor.js";
import Entrypoints, { type SqlExecuteResults } from "./entrypoints.js";
import options from "../services/options.js";
@@ -28,6 +27,9 @@ import type { NativeImage, TouchBar } from "electron";
import TouchBarComponent from "./touch_bar.js";
import type { CKTextEditor } from "@triliumnext/ckeditor5";
import type CodeMirror from "@triliumnext/codemirror";
import { StartupChecks } from "./startup_checks.js";
import type { CreateNoteOpts } from "../services/note_create.js";
import { ColumnComponent } from "tabulator-tables";
interface Layout {
getRootWidget: (appContext: AppContext) => RootWidget;
@@ -122,12 +124,14 @@ export type CommandMappings = {
showImportDialog: CommandData & { noteId: string };
openNewNoteSplit: NoteCommandData;
openInWindow: NoteCommandData;
openInPopup: CommandData & { noteIdOrPath: string; };
openNoteInNewTab: CommandData;
openNoteInNewSplit: CommandData;
openNoteInNewWindow: CommandData;
openAboutDialog: CommandData;
hideFloatingButtons: {};
hideLeftPane: CommandData;
showCpuArchWarning: CommandData;
showLeftPane: CommandData;
hoistNote: CommandData & { noteId: string };
leaveProtectedSession: CommandData;
@@ -139,6 +143,7 @@ export type CommandMappings = {
};
openInTab: ContextMenuCommandData;
openNoteInSplit: ContextMenuCommandData;
openNoteInPopup: ContextMenuCommandData;
toggleNoteHoisting: ContextMenuCommandData;
insertNoteAfter: ContextMenuCommandData;
insertChildNote: ContextMenuCommandData;
@@ -260,7 +265,6 @@ export type CommandMappings = {
// Geomap
deleteFromMap: { noteId: string };
openGeoLocation: { noteId: string; event: JQuery.MouseDownEvent };
toggleZenMode: CommandData;
@@ -274,11 +278,27 @@ export type CommandMappings = {
geoMapCreateChildNote: CommandData;
// Table view
addNewRow: CommandData & {
customOpts: CreateNoteOpts;
parentNotePath?: string;
};
addNewTableColumn: CommandData & {
columnToEdit?: ColumnComponent;
referenceColumn?: ColumnComponent;
direction?: "before" | "after";
type?: "label" | "relation";
};
deleteTableColumn: CommandData & {
columnToDelete?: ColumnComponent;
};
buildTouchBar: CommandData & {
TouchBar: typeof TouchBar;
buildIcon(name: string): NativeImage;
};
refreshTouchBar: CommandData;
reloadTextEditor: CommandData;
};
type EventMappings = {
@@ -467,13 +487,21 @@ export class AppContext extends Component {
this.tabManager.loadTabs();
const bundleService = (await import("../services/bundle.js")).default;
setTimeout(() => bundleService.executeStartupBundles(), 2000);
}
initComponents() {
this.tabManager = new TabManager();
this.components = [this.tabManager, new RootCommandExecutor(), new Entrypoints(), new MainTreeExecutors(), new ShortcutComponent()];
this.components = [
this.tabManager,
new RootCommandExecutor(),
new Entrypoints(),
new MainTreeExecutors(),
new ShortcutComponent(),
new StartupChecks()
];
if (utils.isMobile()) {
this.components.push(new MobileScreenSwitcherExecutor());

View File

@@ -93,11 +93,7 @@ export class TypedComponent<ChildT extends TypedComponent<ChildT>> {
if (fun) {
return this.callMethod(fun, data);
} else {
if (!this.parent) {
throw new Error(`Component "${this.componentId}" does not have a parent attached to propagate a command.`);
}
} else if (this.parent) {
return this.parent.triggerCommand(name, data);
}
}

View File

@@ -12,6 +12,7 @@ import type FNote from "../entities/fnote.js";
import type TypeWidget from "../widgets/type_widgets/type_widget.js";
import type { CKTextEditor } from "@triliumnext/ckeditor5";
import type CodeMirror from "@triliumnext/codemirror";
import { closeActiveDialog } from "../services/dialog.js";
export interface SetNoteOpts {
triggerSwitchEvent?: unknown;
@@ -83,7 +84,7 @@ class NoteContext extends Component implements EventListener<"entitiesReloaded">
await this.triggerEvent("beforeNoteSwitch", { noteContext: this });
utils.closeActiveDialog();
closeActiveDialog();
this.notePath = resolvedNotePath;
this.viewScope = opts.viewScope;
@@ -269,14 +270,32 @@ class NoteContext extends Component implements EventListener<"entitiesReloaded">
return true;
}
const blob = await this.note.getBlob();
if (!blob) {
return false;
// Store the initial decision about read-only status in the viewScope
// This will be "remembered" until the viewScope is refreshed
if (!this.viewScope) {
this.resetViewScope();
}
const sizeLimit = this.note.type === "text" ? options.getInt("autoReadonlySizeText") : options.getInt("autoReadonlySizeCode");
const viewScope = this.viewScope!;
return sizeLimit && blob.contentLength > sizeLimit && !this.note.isLabelTruthy("autoReadOnlyDisabled");
if (viewScope.isReadOnly === undefined) {
const blob = await this.note.getBlob();
if (!blob) {
viewScope.isReadOnly = false;
return false;
}
const sizeLimit = this.note.type === "text"
? options.getInt("autoReadonlySizeText")
: options.getInt("autoReadonlySizeCode");
viewScope.isReadOnly = Boolean(sizeLimit &&
blob.contentLength > sizeLimit &&
!this.note.isLabelTruthy("autoReadOnlyDisabled"));
}
// Return the cached decision, which won't change until viewScope is reset
return viewScope.isReadOnly || false;
}
async entitiesReloadedEvent({ loadResults }: EventData<"entitiesReloaded">) {
@@ -296,14 +315,38 @@ class NoteContext extends Component implements EventListener<"entitiesReloaded">
}
hasNoteList() {
return (
this.note &&
["default", "contextual-help"].includes(this.viewScope?.viewMode ?? "") &&
(this.note.hasChildren() || this.note.getLabelValue("viewType") === "calendar") &&
["book", "text", "code"].includes(this.note.type) &&
this.note.mime !== "text/x-sqlite;schema=trilium" &&
!this.note.isLabelTruthy("hideChildrenOverview")
);
const note = this.note;
if (!note) {
return false;
}
if (!["default", "contextual-help"].includes(this.viewScope?.viewMode ?? "")) {
return false;
}
// Some book types must always display a note list, even if no children.
if (["calendar", "table", "geoMap"].includes(note.getLabelValue("viewType") ?? "")) {
return true;
}
if (!note.hasChildren()) {
return false;
}
if (!["book", "text", "code"].includes(note.type)) {
return false;
}
if (note.mime === "text/x-sqlite;schema=trilium") {
return false;
}
if (note.isLabelTruthy("hideChildrenOverview")) {
return false;
}
return true;
}
async getTextEditor(callback?: GetTextEditorCallback) {

View File

@@ -0,0 +1,26 @@
import server from "../services/server";
import Component from "./component";
// TODO: Deduplicate.
interface CpuArchResponse {
isCpuArchMismatch: boolean;
}
export class StartupChecks extends Component {
constructor() {
super();
this.checkCpuArchMismatch();
}
async checkCpuArchMismatch() {
try {
const response = await server.get("system-checks") as CpuArchResponse;
if (response.isCpuArchMismatch) {
this.triggerCommand("showCpuArchWarning", {});
}
} catch (error) {
console.warn("Could not check CPU arch status:", error);
}
}
}

View File

@@ -688,7 +688,7 @@ export default class TabManager extends Component {
const titleFragments = [
// it helps to navigate in history if note title is included in the title
await activeNoteContext.getNavigationTitle(),
"TriliumNext Notes"
"Trilium Notes"
].filter(Boolean);
document.title = titleFragments.join(" - ");

View File

@@ -8,6 +8,7 @@ import electronContextMenu from "./menus/electron_context_menu.js";
import glob from "./services/glob.js";
import { t } from "./services/i18n.js";
import options from "./services/options.js";
import server from "./services/server.js";
import type ElectronRemote from "@electron/remote";
import type Electron from "electron";
import "./stylesheets/bootstrap.scss";

View File

@@ -1,7 +1,6 @@
import server from "../services/server.js";
import noteAttributeCache from "../services/note_attribute_cache.js";
import ws from "../services/ws.js";
import froca from "../services/froca.js";
import protectedSessionHolder from "../services/protected_session_holder.js";
import cssClassManager from "../services/css_class_manager.js";
import type { Froca } from "../services/froca-interface.js";
@@ -28,7 +27,6 @@ const NOTE_TYPE_ICONS = {
doc: "bx bxs-file-doc",
contentWidget: "bx bxs-widget",
mindMap: "bx bx-sitemap",
geoMap: "bx bx-map-alt",
aiChat: "bx bx-bot"
};
@@ -37,7 +35,7 @@ const NOTE_TYPE_ICONS = {
* end user. Those types should be used only for checking against, they are
* not for direct use.
*/
export type NoteType = "file" | "image" | "search" | "noteMap" | "launcher" | "doc" | "contentWidget" | "text" | "relationMap" | "render" | "canvas" | "mermaid" | "book" | "webView" | "code" | "mindMap" | "geoMap" | "aiChat";
export type NoteType = "file" | "image" | "search" | "noteMap" | "launcher" | "doc" | "contentWidget" | "text" | "relationMap" | "render" | "canvas" | "mermaid" | "book" | "webView" | "code" | "mindMap" | "aiChat";
export interface NotePathRecord {
isArchived: boolean;
@@ -258,6 +256,20 @@ class FNote {
return this.children;
}
async getSubtreeNoteIds() {
let noteIds: (string | string[])[] = [];
for (const child of await this.getChildNotes()) {
noteIds.push(child.noteId);
noteIds.push(await child.getSubtreeNoteIds());
}
return noteIds.flat();
}
async getSubtreeNotes() {
const noteIds = await this.getSubtreeNoteIds();
return this.froca.getNotes(noteIds);
}
async getChildNotes() {
return await this.froca.getNotes(this.children);
}
@@ -410,8 +422,8 @@ class FNote {
const notePaths: NotePathRecord[] = this.getAllNotePaths().map((path) => ({
notePath: path,
isInHoistedSubTree: isHoistedRoot || path.includes(hoistedNoteId),
isArchived: path.some((noteId) => froca.notes[noteId].isArchived),
isSearch: path.some((noteId) => froca.notes[noteId].type === "search"),
isArchived: path.some((noteId) => this.froca.notes[noteId].isArchived),
isSearch: path.some((noteId) => this.froca.notes[noteId].type === "search"),
isHidden: path.includes("_hidden")
}));
@@ -982,7 +994,7 @@ class FNote {
continue;
}
const parentNote = froca.notes[parentNoteId];
const parentNote = this.froca.notes[parentNoteId];
if (!parentNote || parentNote.type === "search") {
continue;

View File

@@ -46,28 +46,7 @@ import SharedInfoWidget from "../widgets/shared_info.js";
import FindWidget from "../widgets/find.js";
import TocWidget from "../widgets/toc.js";
import HighlightsListWidget from "../widgets/highlights_list.js";
import BulkActionsDialog from "../widgets/dialogs/bulk_actions.js";
import AboutDialog from "../widgets/dialogs/about.js";
import HelpDialog from "../widgets/dialogs/help.js";
import RecentChangesDialog from "../widgets/dialogs/recent_changes.js";
import BranchPrefixDialog from "../widgets/dialogs/branch_prefix.js";
import SortChildNotesDialog from "../widgets/dialogs/sort_child_notes.js";
import PasswordNoteSetDialog from "../widgets/dialogs/password_not_set.js";
import IncludeNoteDialog from "../widgets/dialogs/include_note.js";
import NoteTypeChooserDialog from "../widgets/dialogs/note_type_chooser.js";
import JumpToNoteDialog from "../widgets/dialogs/jump_to_note.js";
import AddLinkDialog from "../widgets/dialogs/add_link.js";
import CloneToDialog from "../widgets/dialogs/clone_to.js";
import MoveToDialog from "../widgets/dialogs/move_to.js";
import ImportDialog from "../widgets/dialogs/import.js";
import ExportDialog from "../widgets/dialogs/export.js";
import MarkdownImportDialog from "../widgets/dialogs/markdown_import.js";
import ProtectedSessionPasswordDialog from "../widgets/dialogs/protected_session_password.js";
import RevisionsDialog from "../widgets/dialogs/revisions.js";
import DeleteNotesDialog from "../widgets/dialogs/delete_notes.js";
import InfoDialog from "../widgets/dialogs/info.js";
import ConfirmDialog from "../widgets/dialogs/confirm.js";
import PromptDialog from "../widgets/dialogs/prompt.js";
import FloatingButtons from "../widgets/floating_buttons/floating_buttons.js";
import RelationMapButtons from "../widgets/floating_buttons/relation_map_buttons.js";
import SvgExportButton from "../widgets/floating_buttons/svg_export_button.js";
@@ -83,7 +62,7 @@ import CopyImageReferenceButton from "../widgets/floating_buttons/copy_image_ref
import ScrollPaddingWidget from "../widgets/scroll_padding.js";
import ClassicEditorToolbar from "../widgets/ribbon_widgets/classic_editor_toolbar.js";
import options from "../services/options.js";
import utils, { hasTouchBar } from "../services/utils.js";
import utils from "../services/utils.js";
import GeoMapButtons from "../widgets/floating_buttons/geo_map_button.js";
import ContextualHelpButton from "../widgets/floating_buttons/help_button.js";
import CloseZenButton from "../widgets/close_zen_button.js";
@@ -229,7 +208,7 @@ export default class DesktopLayout {
.child(new PromotedAttributesWidget())
.child(new SqlTableSchemasWidget())
.child(new NoteDetailWidget())
.child(new NoteListWidget())
.child(new NoteListWidget(false))
.child(new SearchResultWidget())
.child(new SqlResultWidget())
.child(new ScrollPaddingWidget())

View File

@@ -21,6 +21,15 @@ import ConfirmDialog from "../widgets/dialogs/confirm.js";
import RevisionsDialog from "../widgets/dialogs/revisions.js";
import DeleteNotesDialog from "../widgets/dialogs/delete_notes.js";
import InfoDialog from "../widgets/dialogs/info.js";
import IncorrectCpuArchDialog from "../widgets/dialogs/incorrect_cpu_arch.js";
import PopupEditorDialog from "../widgets/dialogs/popup_editor.js";
import FlexContainer from "../widgets/containers/flex_container.js";
import NoteIconWidget from "../widgets/note_icon.js";
import NoteTitleWidget from "../widgets/note_title.js";
import ClassicEditorToolbar from "../widgets/ribbon_widgets/classic_editor_toolbar.js";
import PromotedAttributesWidget from "../widgets/ribbon_widgets/promoted_attributes.js";
import NoteDetailWidget from "../widgets/note_detail.js";
import NoteListWidget from "../widgets/note_list.js";
export function applyModals(rootContainer: RootContainer) {
rootContainer
@@ -45,4 +54,16 @@ export function applyModals(rootContainer: RootContainer) {
.child(new InfoDialog())
.child(new ConfirmDialog())
.child(new PromptDialog())
.child(new IncorrectCpuArchDialog())
.child(new PopupEditorDialog()
.child(new FlexContainer("row")
.class("title-row")
.css("align-items", "center")
.cssBlock(".title-row > * { margin: 5px; }")
.child(new NoteIconWidget())
.child(new NoteTitleWidget()))
.child(new ClassicEditorToolbar())
.child(new PromotedAttributesWidget())
.child(new NoteDetailWidget())
.child(new NoteListWidget(true)))
}

View File

@@ -162,7 +162,7 @@ export default class MobileLayout {
.filling()
.contentSized()
.child(new NoteDetailWidget())
.child(new NoteListWidget())
.child(new NoteListWidget(false))
.child(new FilePropertiesWidget().css("font-size", "smaller"))
)
.child(new MobileEditorToolbar())

View File

@@ -1,204 +0,0 @@
// Source: https://github.com/codemirror/codemirror5/pull/7080/files
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
(function (mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function (CodeMirror) {
"use strict";
CodeMirror.defineMode("hcl", function (config) {
var indentUnit = config.indentUnit;
var keywords = {
"resource": true,
"variable": true,
"output": true,
"module": true,
"provider": true,
"data": true,
"locals": true,
"terraform": true,
"if": true,
"else": true,
"for": true,
"foreach": true,
"in": true,
"true": true,
"false": true,
"null": true,
};
var atoms = {
"true": true,
"false": true,
"null": true,
};
var isOperatorChar = /[+\-*&^%:=<>!|\/]/;
var curPunc;
function tokenBase(stream, state) {
var ch = stream.next();
if (ch == '"' || ch == "'" || ch == "`") {
state.tokenize = tokenString(ch);
return state.tokenize(stream, state);
}
if (/[\d\.]/.test(ch)) {
if (ch == ".") {
stream.match(/^[0-9_]+([eE][\-+]?[0-9_]+)?/);
} else {
stream.match(/^[0-9_]*\.?[0-9_]*([eE][\-+]?[0-9_]+)?/);
}
return "number";
}
if (/[\[\]{}\(\),;\:\.]/.test(ch)) {
curPunc = ch;
return null;
}
if (ch == "/") {
if (stream.eat("*")) {
state.tokenize = tokenComment;
return tokenComment(stream, state);
}
if (stream.eat("/")) {
stream.skipToEnd();
return "comment";
}
}
if (isOperatorChar.test(ch)) {
stream.eatWhile(isOperatorChar);
return "operator";
}
stream.eatWhile(/[\w\$_\xa1-\uffff]/);
var cur = stream.current();
if (keywords.propertyIsEnumerable(cur)) {
return "keyword";
}
if (atoms.propertyIsEnumerable(cur)) return "atom";
return "variable";
}
function tokenString(quote) {
return function (stream, state) {
var escaped = false,
next,
end = false;
while ((next = stream.next()) != null) {
if (next == quote && !escaped) {
end = true;
break;
}
escaped = !escaped && quote != "`" && next == "\\";
}
if (end || !(escaped || quote == "`"))
state.tokenize = tokenBase;
return "string";
};
}
function tokenComment(stream, state) {
var maybeEnd = false,
ch;
while (ch = stream.next()) {
if (ch == "/" && maybeEnd) {
state.tokenize = tokenBase;
break;
}
maybeEnd = (ch == "*");
}
return "comment";
}
function Context(indented, column, type, align, prev) {
this.indented = indented;
this.column = column;
this.type = type;
this.align = align;
this.prev = prev;
}
function pushContext(state, col, type) {
return state.context = new Context(state.indented, col, type, null, state.context);
}
function popContext(state) {
if (!state.context.prev) return;
var t = state.context.type;
if (t == ")" || t == "]" || t == "}")
state.indented = state.context.indented;
return state.context = state.context.prev;
}
// Interface
return {
startState: function (basecolumn) {
return {
tokenize: null,
context: new Context((basecolumn || 0) - indentUnit, 0, "top", false),
indented: 0,
startOfLine: true
};
},
token: function (stream, state) {
var ctx = state.context;
if (stream.sol()) {
if (ctx.align == null) ctx.align = false;
state.indented = stream.indentation();
state.startOfLine = true;
}
if (stream.eatSpace()) return null;
curPunc = null;
var style = (state.tokenize || tokenBase)(stream, state);
if (style == "comment") return style;
if (ctx.align == null) ctx.align = true;
if (curPunc == "{") pushContext(state, stream.column(), "}");
else if (curPunc == "[") pushContext(state, stream.column(), "]");
else if (curPunc == "(") pushContext(state, stream.column(), ")");
else if (curPunc == "}" && ctx.type == "}") popContext(state);
else if (curPunc == ctx.type) popContext(state);
state.startOfLine = false;
return style;
},
indent: function (state, textAfter) {
if (state.tokenize != tokenBase && state.tokenize != null) return CodeMirror.Pass;
var ctx = state.context, firstChar = textAfter && textAfter.charAt(0);
if (firstChar == "#" || firstChar == ";") return 0;
if (stream.sol()) {
if (ctx.type == "case" && /^(?:case|default)\b/.test(textAfter)) {
state.context.type = "}";
return ctx.indented;
}
var closing = firstChar == ctx.type;
if (ctx.align) return ctx.column + (closing ? 0 : 1);
else return ctx.indented + (closing ? 0 : indentUnit);
}
},
electricChars: "{}):",
closeBrackets: "()[]{}''\"\"``",
fold: "brace",
blockCommentStart: "/*",
blockCommentEnd: "*/",
lineComment: "//"
};
});
CodeMirror.defineMIME("text/x-hcl", "hcl");
CodeMirror.modeInfo.push({
ext: [ "hcl " ],
mime: "text/x-hcl",
mode: "hcl",
name: "Terraform (HCL)"
});
});

View File

@@ -2,7 +2,7 @@ import keyboardActionService from "../services/keyboard_actions.js";
import note_tooltip from "../services/note_tooltip.js";
import utils from "../services/utils.js";
interface ContextMenuOptions<T> {
export interface ContextMenuOptions<T> {
x: number;
y: number;
orientation?: "left";
@@ -17,17 +17,30 @@ interface MenuSeparatorItem {
title: "----";
}
export interface MenuItemBadge {
title: string;
className?: string;
}
export interface MenuCommandItem<T> {
title: string;
command?: T;
type?: string;
/**
* The icon to display in the menu item.
*
* If not set, no icon is displayed and the item will appear shifted slightly to the left if there are other items with icons. To avoid this, use `bx bx-empty`.
*/
uiIcon?: string;
badges?: MenuItemBadge[];
templateNoteId?: string;
enabled?: boolean;
handler?: MenuHandler<T>;
items?: MenuItem<T>[] | null;
shortcut?: string;
spellingSuggestion?: string;
checked?: boolean;
columns?: number;
}
export type MenuItem<T> = MenuCommandItem<T> | MenuSeparatorItem;
@@ -146,10 +159,13 @@ class ContextMenu {
} else {
const $icon = $("<span>");
if ("uiIcon" in item && item.uiIcon) {
$icon.addClass(item.uiIcon);
} else {
$icon.append("&nbsp;");
if ("uiIcon" in item || "checked" in item) {
const icon = (item.checked ? "bx bx-check" : item.uiIcon);
if (icon) {
$icon.addClass(icon);
} else {
$icon.append("&nbsp;");
}
}
const $link = $("<span>")
@@ -157,6 +173,18 @@ class ContextMenu {
.append(" &nbsp; ") // some space between icon and text
.append(item.title);
if ("badges" in item && item.badges) {
for (let badge of item.badges) {
const badgeElement = $(`<span class="badge">`).text(badge.title);
if (badge.className) {
badgeElement.addClass(badge.className);
}
$link.append(badgeElement);
}
}
if ("shortcut" in item && item.shortcut) {
$link.append($("<kbd>").text(item.shortcut));
}
@@ -192,13 +220,17 @@ class ContextMenu {
// it's important to stop the propagation especially for sub-menus, otherwise the event
// might be handled again by top-level menu
return false;
})
.on("mouseup", (e) =>{
});
$item.on("mouseup", (e) => {
// Prevent submenu from failing to expand on mobile
if (!this.isMobile || !("items" in item && item.items)) {
e.stopPropagation();
// Hide the content menu on mouse up to prevent the mouse event from propagating to the elements below.
this.hide();
return false;
});
}
});
if ("enabled" in item && item.enabled !== undefined && !item.enabled) {
$item.addClass("disabled");
@@ -209,6 +241,9 @@ class ContextMenu {
$link.addClass("dropdown-toggle");
const $subMenu = $("<ul>").addClass("dropdown-menu");
if (!this.isMobile && item.columns) {
$subMenu.css("column-count", item.columns);
}
this.addItems($subMenu, item.items);

View File

@@ -16,7 +16,8 @@ function getItems(): MenuItem<CommandNames>[] {
return [
{ title: t("link_context_menu.open_note_in_new_tab"), command: "openNoteInNewTab", uiIcon: "bx bx-link-external" },
{ title: t("link_context_menu.open_note_in_new_split"), command: "openNoteInNewSplit", uiIcon: "bx bx-dock-right" },
{ title: t("link_context_menu.open_note_in_new_window"), command: "openNoteInNewWindow", uiIcon: "bx bx-window-open" }
{ title: t("link_context_menu.open_note_in_new_window"), command: "openNoteInNewWindow", uiIcon: "bx bx-window-open" },
{ title: t("link_context_menu.open_note_in_popup"), command: "openNoteInPopup", uiIcon: "bx bx-edit" }
];
}
@@ -40,6 +41,8 @@ function handleLinkContextMenuItem(command: string | undefined, notePath: string
appContext.triggerCommand("openNewNoteSplit", { ntxId, notePath, hoistedNoteId, viewScope });
} else if (command === "openNoteInNewWindow") {
appContext.triggerCommand("openInWindow", { notePath, hoistedNoteId, viewScope });
} else if (command === "openNoteInPopup") {
appContext.triggerCommand("openInPopup", { noteIdOrPath: notePath })
}
}

View File

@@ -70,8 +70,8 @@ export default class TreeContextMenu implements SelectMenuItemEventListener<Tree
const items: (MenuItem<TreeCommandNames> | null)[] = [
{ title: `${t("tree-context-menu.open-in-a-new-tab")}`, command: "openInTab", uiIcon: "bx bx-link-external", enabled: noSelectedNotes },
{ title: t("tree-context-menu.open-in-a-new-split"), command: "openNoteInSplit", uiIcon: "bx bx-dock-right", enabled: noSelectedNotes },
{ title: t("tree-context-menu.open-in-popup"), command: "openNoteInPopup", uiIcon: "bx bx-edit", enabled: noSelectedNotes },
isHoisted
? null
@@ -92,7 +92,8 @@ export default class TreeContextMenu implements SelectMenuItemEventListener<Tree
command: "insertNoteAfter",
uiIcon: "bx bx-plus",
items: insertNoteAfterEnabled ? await noteTypesService.getNoteTypeItems("insertNoteAfter") : null,
enabled: insertNoteAfterEnabled && noSelectedNotes && notOptionsOrHelp
enabled: insertNoteAfterEnabled && noSelectedNotes && notOptionsOrHelp,
columns: 2
},
{
@@ -100,7 +101,8 @@ export default class TreeContextMenu implements SelectMenuItemEventListener<Tree
command: "insertChildNote",
uiIcon: "bx bx-plus",
items: notSearch ? await noteTypesService.getNoteTypeItems("insertChildNote") : null,
enabled: notSearch && noSelectedNotes && notOptionsOrHelp
enabled: notSearch && noSelectedNotes && notOptionsOrHelp,
columns: 2
},
{ title: "----" },
@@ -127,13 +129,7 @@ export default class TreeContextMenu implements SelectMenuItemEventListener<Tree
enabled: isNotRoot && parentNotSearch && noSelectedNotes && notOptionsOrHelp
},
{ title: t("tree-context-menu.convert-to-attachment"), command: "convertNoteToAttachment", uiIcon: "bx bx-paperclip", enabled: isNotRoot && !isHoisted && notOptionsOrHelp },
{
title: `${t("tree-context-menu.duplicate-subtree")} <kbd data-command="duplicateSubtree">`,
command: "duplicateSubtree",
uiIcon: "bx bx-outline",
enabled: parentNotSearch && isNotRoot && !isHoisted && notOptionsOrHelp
},
{ title: "----" },
{ title: `${t("tree-context-menu.expand-subtree")} <kbd data-command="expandSubtree"></kbd>`, command: "expandSubtree", uiIcon: "bx bx-expand", enabled: noSelectedNotes },
@@ -186,6 +182,13 @@ export default class TreeContextMenu implements SelectMenuItemEventListener<Tree
{ title: `${t("tree-context-menu.clone-to")} <kbd data-command="cloneNotesTo"></kbd>`, command: "cloneNotesTo", uiIcon: "bx bx-duplicate", enabled: isNotRoot && !isHoisted },
{
title: `${t("tree-context-menu.duplicate")} <kbd data-command="duplicateSubtree">`,
command: "duplicateSubtree",
uiIcon: "bx bx-outline",
enabled: parentNotSearch && isNotRoot && !isHoisted && notOptionsOrHelp
},
{
title: `${t("tree-context-menu.delete")} <kbd data-command="deleteNotes"></kbd>`,
command: "deleteNotes",
@@ -244,6 +247,8 @@ export default class TreeContextMenu implements SelectMenuItemEventListener<Tree
const { ntxId } = subContexts?.[subContexts.length - 1] ?? {};
this.treeWidget.triggerCommand("openNewNoteSplit", { ntxId, notePath });
} else if (command === "openNoteInPopup") {
appContext.triggerCommand("openInPopup", { noteIdOrPath: notePath })
} else if (command === "convertNoteToAttachment") {
if (!(await dialogService.confirm(t("tree-context-menu.convert-to-attachment-confirm")))) {
return;

View File

@@ -8,7 +8,7 @@ interface Entity {
export interface EntityChange {
id?: number | null;
noteId?: string;
entityName: EntityRowNames;
entityName: EntityType;
entityId: string;
entity?: Entity;
positions?: Record<string, number>;
@@ -22,3 +22,5 @@ export interface EntityChange {
changeId?: string | null;
instanceId?: string | null;
}
export type EntityType = "notes" | "branches" | "attributes" | "note_reordering" | "revisions" | "options" | "attachments" | "blobs" | "etapi_tokens";

View File

@@ -3,19 +3,21 @@ import froca from "./froca.js";
import type FNote from "../entities/fnote.js";
import type { AttributeRow } from "./load_results.js";
async function addLabel(noteId: string, name: string, value: string = "") {
async function addLabel(noteId: string, name: string, value: string = "", isInheritable = false) {
await server.put(`notes/${noteId}/attribute`, {
type: "label",
name: name,
value: value
value: value,
isInheritable
});
}
async function setLabel(noteId: string, name: string, value: string = "") {
export async function setLabel(noteId: string, name: string, value: string = "", isInheritable = false) {
await server.put(`notes/${noteId}/set-attribute`, {
type: "label",
name: name,
value: value
value: value,
isInheritable
});
}
@@ -49,7 +51,7 @@ function removeOwnedLabelByName(note: FNote, labelName: string) {
* @param name the name of the attribute to set.
* @param value the value of the attribute to set.
*/
async function setAttribute(note: FNote, type: "label" | "relation", name: string, value: string | null | undefined) {
export async function setAttribute(note: FNote, type: "label" | "relation", name: string, value: string | null | undefined) {
if (value) {
// Create or update the attribute.
await server.put(`notes/${note.noteId}/set-attribute`, { type, name, value });

View File

@@ -95,7 +95,15 @@ async function moveToParentNote(branchIdsToMove: string[], newParentBranchId: st
}
}
async function deleteNotes(branchIdsToDelete: string[], forceDeleteAllClones = false) {
/**
* Shows the delete confirmation screen
*
* @param branchIdsToDelete the list of branch IDs to delete.
* @param forceDeleteAllClones whether to check by default the "Delete also all clones" checkbox.
* @param moveToParent whether to automatically go to the parent note path after a succesful delete. Usually makes sense if deleting the active note(s).
* @returns promise that returns false if the operation was cancelled or there was nothing to delete, true if the operation succeeded.
*/
async function deleteNotes(branchIdsToDelete: string[], forceDeleteAllClones = false, moveToParent = true) {
branchIdsToDelete = filterRootNote(branchIdsToDelete);
if (branchIdsToDelete.length === 0) {
@@ -110,10 +118,12 @@ async function deleteNotes(branchIdsToDelete: string[], forceDeleteAllClones = f
return false;
}
try {
await activateParentNotePath();
} catch (e) {
console.error(e);
if (moveToParent) {
try {
await activateParentNotePath();
} catch (e) {
console.error(e);
}
}
const taskId = utils.randomString(10);

View File

@@ -15,6 +15,8 @@ import AddRelationBulkAction from "../widgets/bulk_actions/relation/add_relation
import RenameNoteBulkAction from "../widgets/bulk_actions/note/rename_note.js";
import { t } from "./i18n.js";
import type FNote from "../entities/fnote.js";
import toast from "./toast.js";
import { BulkAction } from "@triliumnext/commons";
const ACTION_GROUPS = [
{
@@ -89,6 +91,17 @@ function parseActions(note: FNote) {
.filter((action) => !!action);
}
export async function executeBulkActions(parentNoteId: string, actions: BulkAction[]) {
await server.post("bulk-action/execute", {
noteIds: [ parentNoteId ],
includeDescendants: true,
actions
});
await ws.waitForMaxKnownEntityChangeId();
toast.showMessage(t("bulk_actions.bulk_actions_executed"), 3000);
}
export default {
addAction,
parseActions,

View File

@@ -1,6 +1,6 @@
import ScriptContext from "./script_context.js";
import server from "./server.js";
import toastService from "./toast.js";
import toastService, { showError } from "./toast.js";
import froca from "./froca.js";
import utils from "./utils.js";
import { t } from "./i18n.js";
@@ -37,7 +37,9 @@ async function executeBundle(bundle: Bundle, originEntity?: Entity | null, $cont
} catch (e: any) {
const note = await froca.getNote(bundle.noteId);
toastService.showAndLogError(`Execution of JS note "${note?.title}" with ID ${bundle.noteId} failed with error: ${e?.message}`);
const message = `Execution of JS note "${note?.title}" with ID ${bundle.noteId} failed with error: ${e?.message}`;
showError(message);
logError(message);
}
}

View File

@@ -4,7 +4,7 @@ import froca from "./froca.js";
import linkService from "./link.js";
import utils from "./utils.js";
import { t } from "./i18n.js";
import toast from "./toast.js";
import { throwError } from "./ws.js";
let clipboardBranchIds: string[] = [];
let clipboardMode: string | null = null;
@@ -37,7 +37,7 @@ async function pasteAfter(afterBranchId: string) {
// copy will keep clipboardBranchIds and clipboardMode, so it's possible to paste into multiple places
} else {
toastService.throwError(`Unrecognized clipboard mode=${clipboardMode}`);
throwError(`Unrecognized clipboard mode=${clipboardMode}`);
}
}
@@ -69,7 +69,7 @@ async function pasteInto(parentBranchId: string) {
// copy will keep clipboardBranchIds and clipboardMode, so it's possible to paste into multiple places
} else {
toastService.throwError(`Unrecognized clipboard mode=${clipboardMode}`);
throwError(`Unrecognized clipboard mode=${clipboardMode}`);
}
}
@@ -109,39 +109,6 @@ function isClipboardEmpty() {
return clipboardBranchIds.length === 0;
}
export function copyText(text: string) {
if (!text) {
return;
}
let succeeded = false;
try {
if (navigator.clipboard) {
navigator.clipboard.writeText(text);
succeeded = true;
} else {
// Fallback method: https://stackoverflow.com/a/72239825
const textArea = document.createElement("textarea");
textArea.value = text;
document.body.appendChild(textArea);
textArea.focus();
textArea.select();
succeeded = document.execCommand('copy');
document.body.removeChild(textArea);
}
} catch (e) {
console.warn(e);
succeeded = false;
}
if (succeeded) {
toast.showMessage(t("clipboard.copy_success"));
} else {
toast.showError(t("clipboard.copy_failed"));
}
}
export default {
pasteAfter,
pasteInto,

View File

@@ -0,0 +1,37 @@
export function copyText(text: string) {
if (!text) {
return;
}
try {
if (navigator.clipboard) {
navigator.clipboard.writeText(text);
return true;
} else {
// Fallback method: https://stackoverflow.com/a/72239825
const textArea = document.createElement("textarea");
textArea.value = text;
try {
document.body.appendChild(textArea);
textArea.focus();
textArea.select();
return document.execCommand('copy');
} finally {
document.body.removeChild(textArea);
}
}
} catch (e) {
console.warn(e);
return false;
}
}
export async function copyTextWithToast(text: string) {
const t = (await import("./i18n.js")).t;
const toast = (await import("./toast.js")).default;
if (copyText(text)) {
toast.showMessage(t("clipboard.copy_success"));
} else {
toast.showError(t("clipboard.copy_failed"));
}
}

View File

@@ -118,8 +118,17 @@ async function renderText(note: FNote | FAttachment, $renderedContent: JQuery<HT
async function renderCode(note: FNote | FAttachment, $renderedContent: JQuery<HTMLElement>) {
const blob = await note.getBlob();
let content = blob?.content || "";
if (note.mime === "application/json") {
try {
content = JSON.stringify(JSON.parse(content), null, 4);
} catch (e) {
// Ignore JSON parsing errors.
}
}
const $codeBlock = $("<code>");
$codeBlock.text(blob?.content || "");
$codeBlock.text(content);
$renderedContent.append($("<pre>").append($codeBlock));
await applySingleBlockSyntaxHighlight($codeBlock, normalizeMimeTypeForCKEditor(note.mime));
}
@@ -301,7 +310,7 @@ function getRenderingType(entity: FNote | FAttachment) {
if (type === "file" && mime === "application/pdf") {
type = "pdf";
} else if (type === "file" && mime && CODE_MIME_TYPES.has(mime)) {
} else if ((type === "file" || type === "viewConfig") && mime && CODE_MIME_TYPES.has(mime)) {
type = "code";
} else if (type === "file" && mime && mime.startsWith("audio/")) {
type = "audio";

View File

@@ -1,13 +1,54 @@
import { Modal } from "bootstrap";
import appContext from "../components/app_context.js";
import type { ConfirmDialogOptions, ConfirmDialogResult, ConfirmWithMessageOptions } from "../widgets/dialogs/confirm.js";
import type { PromptDialogOptions } from "../widgets/dialogs/prompt.js";
import { focusSavedElement, saveFocusedElement } from "./focus.js";
export async function openDialog($dialog: JQuery<HTMLElement>, closeActDialog = true, config?: Partial<Modal.Options>) {
if (closeActDialog) {
closeActiveDialog();
glob.activeDialog = $dialog;
}
saveFocusedElement();
Modal.getOrCreateInstance($dialog[0], config).show();
$dialog.on("hidden.bs.modal", () => {
const $autocompleteEl = $(".aa-input");
if ("autocomplete" in $autocompleteEl) {
$autocompleteEl.autocomplete("close");
}
if (!glob.activeDialog || glob.activeDialog === $dialog) {
focusSavedElement();
}
});
const keyboardActionsService = (await import("./keyboard_actions.js")).default;
keyboardActionsService.updateDisplayedShortcuts($dialog);
return $dialog;
}
export function closeActiveDialog() {
if (glob.activeDialog) {
Modal.getOrCreateInstance(glob.activeDialog[0]).hide();
glob.activeDialog = null;
}
}
async function info(message: string) {
return new Promise((res) => appContext.triggerCommand("showInfoDialog", { message, callback: res }));
}
/**
* Displays a confirmation dialog with the given message.
*
* @param message the message to display in the dialog.
* @returns A promise that resolves to true if the user confirmed, false otherwise.
*/
async function confirm(message: string) {
return new Promise((res) =>
return new Promise<boolean>((res) =>
appContext.triggerCommand("showConfirmDialog", <ConfirmWithMessageOptions>{
message,
callback: (x: false | ConfirmDialogOptions) => res(x && x.confirmed)

View File

@@ -0,0 +1,29 @@
let $lastFocusedElement: JQuery<HTMLElement> | null;
// perhaps there should be saved focused element per tab?
export function saveFocusedElement() {
$lastFocusedElement = $(":focus");
}
export function focusSavedElement() {
if (!$lastFocusedElement) {
return;
}
if ($lastFocusedElement.hasClass("ck")) {
// must handle CKEditor separately because of this bug: https://github.com/ckeditor/ckeditor5/issues/607
// the bug manifests itself in resetting the cursor position to the first character - jumping above
const editor = $lastFocusedElement.closest(".ck-editor__editable").prop("ckeditorInstance");
if (editor) {
editor.editing.view.focus();
} else {
console.log("Could not find CKEditor instance to focus last element");
}
} else {
$lastFocusedElement.focus();
}
$lastFocusedElement = null;
}

View File

@@ -245,6 +245,10 @@ class FrocaImpl implements Froca {
}
async getNotes(noteIds: string[] | JQuery<string>, silentNotFoundError = false): Promise<FNote[]> {
if (noteIds.length === 0) {
return [];
}
noteIds = Array.from(new Set(noteIds)); // make unique
const missingNoteIds = noteIds.filter((noteId) => !this.notes[noteId]);

View File

@@ -36,7 +36,7 @@ async function processEntityChanges(entityChanges: EntityChange[]) {
} else if (ec.entityName === "attachments") {
processAttachment(loadResults, ec);
} else if (ec.entityName === "blobs" || ec.entityName === "etapi_tokens") {
// NOOP
// NOOP - these entities are handled at the backend level and don't require frontend processing
} else {
throw new Error(`Unknown entityName '${ec.entityName}'`);
}

View File

@@ -26,12 +26,18 @@ function setupGlobs() {
window.onerror = function (msg, url, lineNo, columnNo, error) {
const string = String(msg).toLowerCase();
let errorObjectString = "";
try {
errorObjectString = JSON.stringify(error);
} catch (e: any) {
errorObjectString = e.toString();
}
let message = "Uncaught error: ";
if (string.includes("script error")) {
message += "No details available";
} else {
message += [`Message: ${msg}`, `URL: ${url}`, `Line: ${lineNo}`, `Column: ${columnNo}`, `Error object: ${JSON.stringify(error)}`, `Stack: ${error && error.stack}`].join(", ");
message += [`Message: ${msg}`, `URL: ${url}`, `Line: ${lineNo}`, `Column: ${columnNo}`, `Error object: ${errorObjectString}`, `Stack: ${error && error.stack}`].join(", ");
}
ws.logError(message);
@@ -43,6 +49,13 @@ function setupGlobs() {
const string = e?.reason?.message?.toLowerCase();
let message = "Uncaught error: ";
let errorObjectString;
try {
errorObjectString = JSON.stringify(e.reason)
} catch (error: any) {
errorObjectString = error.toString();
}
if (string?.includes("script error")) {
message += "No details available";
@@ -51,7 +64,7 @@ function setupGlobs() {
`Message: ${e.reason.message}`,
`Line: ${e.reason.lineNumber}`,
`Column: ${e.reason.columnNumber}`,
`Error object: ${JSON.stringify(e.reason)}`,
`Error object: ${errorObjectString}`,
`Stack: ${e.reason && e.reason.stack}`
].join(", ");
}

View File

@@ -1,6 +1,7 @@
import { LOCALES } from "@triliumnext/commons";
import { readFileSync } from "fs";
import { join } from "path";
import { describe, expect, it } from "vitest";
describe("i18n", () => {
it("translations are valid JSON", () => {

View File

@@ -1,5 +1,5 @@
import { t } from "./i18n.js";
import toastService from "./toast.js";
import toastService, { showError } from "./toast.js";
function copyImageReferenceToClipboard($imageWrapper: JQuery<HTMLElement>) {
try {
@@ -11,7 +11,9 @@ function copyImageReferenceToClipboard($imageWrapper: JQuery<HTMLElement>) {
if (success) {
toastService.showMessage(t("image.copied-to-clipboard"));
} else {
toastService.showAndLogError(t("image.cannot-copy"));
const message = t("image.cannot-copy");
showError(message);
logError(message);
}
} finally {
window.getSelection()?.removeAllRanges();

View File

@@ -115,6 +115,7 @@ function updateDisplayedShortcuts($container: JQuery<HTMLElement>) {
export default {
updateDisplayedShortcuts,
setupActionsForElement,
getAction,
getActions,
getActionsForScope
};

View File

@@ -16,4 +16,29 @@ describe("Link", () => {
const output = parseNavigationStateFromUrl(`#root/WWaBNf3SSA1b/mQ2tIzLVFKHL`);
expect(output).toMatchObject({ notePath: "root/WWaBNf3SSA1b/mQ2tIzLVFKHL", noteId: "mQ2tIzLVFKHL" });
});
it("parses notePath with spaces", () => {
const output = parseNavigationStateFromUrl(` #root/WWaBNf3SSA1b/mQ2tIzLVFKHL`);
expect(output).toMatchObject({ notePath: "root/WWaBNf3SSA1b/mQ2tIzLVFKHL", noteId: "mQ2tIzLVFKHL" });
});
it("parses notePath with extraWindow", () => {
const output = parseNavigationStateFromUrl(`127.0.0.1:8080/?extraWindow=1#root/QZGqKB7wVZF8?ntxId=0XPvXG`);
expect(output).toMatchObject({ notePath: "root/QZGqKB7wVZF8", noteId: "QZGqKB7wVZF8" });
});
it("ignores external URL with internal hash anchor", () => {
const output = parseNavigationStateFromUrl(`https://en.wikipedia.org/wiki/Bearded_Collie#Health`);
expect(output).toMatchObject({});
});
it("ignores malformed but hash-containing external URL", () => {
const output = parseNavigationStateFromUrl("https://abc.com/#drop?searchString=firefox");
expect(output).toStrictEqual({});
});
it("ignores non-hash internal path", () => {
const output = parseNavigationStateFromUrl("/root/abc123");
expect(output).toStrictEqual({});
});
});

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