Compare commits

...

3680 Commits

Author SHA1 Message Date
Elian Doran
481127a560
docs(user): mention version for board custom attributes 2025-12-11 10:57:30 +02:00
Elian Doran
c708e7cd61
Translations update from Hosted Weblate (#8016) 2025-12-11 10:49:33 +02:00
Elian Doran
fee0268792
Translated using Weblate (Romanian)
Currently translated at 100.0% (116 of 116 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ro/
2025-12-11 09:47:52 +01:00
green
953593c9d4
Translated using Weblate (Japanese)
Currently translated at 100.0% (1668 of 1668 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-12-11 09:47:52 +01:00
Elian Doran
5ff60e53cb
Translated using Weblate (Romanian)
Currently translated at 100.0% (1668 of 1668 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ro/
2025-12-11 09:47:51 +01:00
Giovi
b38ee36fae
Translated using Weblate (Italian)
Currently translated at 100.0% (1668 of 1668 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/it/
2025-12-11 09:47:49 +01:00
Hosted Weblate
38a415faf0
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-12-11 09:32:25 +01:00
Elian Doran
1e26864842
Translations update from Hosted Weblate (#8006) 2025-12-11 10:32:09 +02:00
Francis C.
5d19881981
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (1658 of 1658 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hant/
2025-12-10 22:38:11 +01:00
Tomas Adamek
1711384eaa
Translated using Weblate (Czech)
Currently translated at 35.3% (41 of 116 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/cs/
2025-12-10 22:38:11 +01:00
Tomas Adamek
9897efe4af
Translated using Weblate (Czech)
Currently translated at 5.3% (88 of 1658 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/cs/
2025-12-10 22:38:10 +01:00
Francis C.
884578ea95
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (116 of 116 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/zh_Hans/
2025-12-10 22:38:09 +01:00
Francis C.
e404e76299
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (116 of 116 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/zh_Hant/
2025-12-10 22:38:09 +01:00
green
1db54cba3e
Translated using Weblate (Japanese)
Currently translated at 100.0% (1658 of 1658 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-12-10 22:38:08 +01:00
Francis C.
77e3cc4021
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (1658 of 1658 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hans/
2025-12-10 22:38:07 +01:00
pythaac
242c63dfb4
Translated using Weblate (Korean)
Currently translated at 65.1% (99 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ko/
2025-12-10 22:38:06 +01:00
Abdulmajeed Alaskar
f5440576b5
Translated using Weblate (Arabic)
Currently translated at 53.9% (82 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ar/
2025-12-10 22:38:06 +01:00
Abdulmajeed Alaskar
b020365af4
Translated using Weblate (Arabic)
Currently translated at 29.3% (34 of 116 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ar/
2025-12-10 22:38:05 +01:00
green
25e5bf0b86
Translated using Weblate (Japanese)
Currently translated at 100.0% (1648 of 1648 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-12-10 22:38:05 +01:00
Elian Doran
19b32dd3a6
New layout: Integrate Basic properties (#8014) 2025-12-10 23:37:54 +02:00
Elian Doran
1ab89d0db0
fix(status_bar): language selector not updating properly 2025-12-10 23:36:47 +02:00
Elian Doran
6e8e10323f
chore(client): address requested changes 2025-12-10 23:19:17 +02:00
Elian Doran
58bc5dc66a
chore(ribbon): hide basic properties from the ribbon on new layout 2025-12-10 23:07:35 +02:00
Elian Doran
db42bb603b
feat(status_bar): add help item 2025-12-10 23:04:32 +02:00
Elian Doran
cb382c9537
fix(global_menu): layout switcher sometimes fails 2025-12-10 22:57:52 +02:00
Elian Doran
a4b79a2dc9
fix(ribbon): content code modal hidden behind backdrop 2025-12-10 22:56:29 +02:00
Elian Doran
0f867e02c4
fix(ribbon): content languages modal hidden behind backdrop 2025-12-10 22:52:13 +02:00
Elian Doran
ab1b4b37f4
feat(global_menu): add an option to switch layouts 2025-12-10 22:51:47 +02:00
Elian Doran
5a1d138f29
feat(status_bar): language selector 2025-12-10 22:39:07 +02:00
Elian Doran
06a5298efa
feat(note_actions): hide options in attachments 2025-12-10 22:27:56 +02:00
Elian Doran
db720acc18
feat(note_actions): hide options in help pages 2025-12-10 22:25:09 +02:00
Elian Doran
8d8ff25bae
feat(note_actions): reintroduce help pages 2025-12-10 22:21:15 +02:00
Elian Doran
6f85b7cc09
feat(note_actions): integrate note type 2025-12-10 21:54:17 +02:00
Elian Doran
77f5770bff
feat(note_actions): protect note switch 2025-12-10 20:57:15 +02:00
Elian Doran
14cda5b921
fix(note_actions): editability context menu is too narrow 2025-12-10 20:46:58 +02:00
Elian Doran
36b1182565
feat(widgets/toggle): disable if going too fast 2025-12-10 20:33:30 +02:00
Elian Doran
483327c808
fix(widgets/toggle): double event triggering when in menu 2025-12-10 20:30:55 +02:00
Elian Doran
efb2f9a048
chore(note_actions): reintroduce disabled logic for toggles 2025-12-10 20:20:21 +02:00
Elian Doran
01978dabf0
fix(breadcrumb_badges): doesn't refresh when switching editability 2025-12-10 19:05:33 +02:00
Elian Doran
cfbd2bf53a
feat(note_actions): integrate editability menu into new layout 2025-12-10 18:58:46 +02:00
Elian Doran
9262f94190
feat(note_actions): integrate template switch into new layout 2025-12-10 18:43:34 +02:00
Elian Doran
b36a0bd10b
feat(note_actions): integrate shared switch into new layout 2025-12-10 18:40:56 +02:00
Elian Doran
2dc8948f33
chore(breadcrumb_badges): chagne icon for shared locally 2025-12-10 18:35:29 +02:00
Elian Doran
9f2ed2f9d4
feat(widgets/toggle): disable transitions on first render 2025-12-10 18:33:29 +02:00
Elian Doran
e0f7d65f77
feat(widgets): toggle from label 2025-12-10 18:24:31 +02:00
Elian Doran
f18ac3a923
feat(note_actions): integrate bookmark into new layout 2025-12-10 18:20:36 +02:00
Elian Doran
b39a6bcc97
feat(widgets): prevent clicks in toggle from dismissing menu 2025-12-10 18:17:39 +02:00
Elian Doran
8fa9c25f2a
feat(widgets): menu item with toggle 2025-12-10 18:07:38 +02:00
Elian Doran
84bde62e05
New layout improvements (#8012) 2025-12-10 17:50:31 +02:00
Elian Doran
5bb4621097
chore(layout): address requested changes 2025-12-10 17:42:08 +02:00
Elian Doran
f1edf84f4d
fix(layout): title background for code notes 2025-12-10 17:13:52 +02:00
Elian Doran
f7955a9040
fix(client/dropdown): tooltip flickering due to child elements 2025-12-10 17:02:11 +02:00
Elian Doran
7c5df21685
feat(note_actions): group development options 2025-12-10 16:51:07 +02:00
Elian Doran
2060bb8cdd
feat(breadcrumb): show note preview 2025-12-10 16:14:40 +02:00
Elian Doran
a9b4e7b1e2
style(layout): apply heavy padding to title only in normal view 2025-12-10 16:11:17 +02:00
Elian Doran
82528c4478
style(layout): slightly smaller note title in full-height note type 2025-12-10 15:23:42 +02:00
Elian Doran
999315d3c6
feat(breadcrumb): basic rename note support 2025-12-10 15:16:45 +02:00
Elian Doran
aef0b03c34
feat(breadcrumb_row): collapse badges sooner 2025-12-10 13:38:15 +02:00
Elian Doran
49f008c46f
feat(breadcrumb_row): improve button fit on constrained width 2025-12-10 13:37:07 +02:00
Elian Doran
bd81db4117
feat(breadcrumb_row): improve badge fit on constrained width 2025-12-10 13:33:33 +02:00
Elian Doran
9f274883e3
feat(breadcrumb_badges): basic shrink support 2025-12-10 13:06:25 +02:00
Elian Doran
07b76b80f4
feat(layout): hide note details in attachment view 2025-12-10 12:52:03 +02:00
Elian Doran
0014f0a88d
feat(layout): minor improvements to title/icon alignment 2025-12-10 12:50:05 +02:00
Elian Doran
63f7a78d31
chore(note_actions): use dedicated translation for note revisions 2025-12-10 12:46:23 +02:00
Elian Doran
e556c090ff
fix(ribbon): attribute details not shown in new layout 2025-12-10 12:40:06 +02:00
Elian Doran
c4f483c250
feat(options/advanced): automatically refresh 2025-12-10 12:29:12 +02:00
Elian Doran
4031332b98
feat(note_title_details): tooltips for values 2025-12-10 12:25:38 +02:00
Elian Doran
10cb7c8d6a
feat(note_title_details): hide creation dates on hidden notes 2025-12-10 12:10:32 +02:00
Elian Doran
be190bfe33
feat(layout): improve layout for full-height notes 2025-12-10 12:06:05 +02:00
Elian Doran
4d7d642952
fix(layout): floating toolbar displayed in attachments 2025-12-10 11:58:17 +02:00
Elian Doran
737711e5eb
fix(layout): weird title in full-width & attachments 2025-12-10 11:56:34 +02:00
Elian Doran
42fc128f97
chore(breadcrumb_badges/backlinks): display actual count of backlinks 2025-12-10 11:51:09 +02:00
Elian Doran
b03e6c3b19
chore(breadcrumb_badges/backlinks): display list of backlinks on click 2025-12-10 11:41:14 +02:00
Elian Doran
66008489c4
chore(breadcrumb_badges): fake backlink widget 2025-12-10 11:21:06 +02:00
Elian Doran
3262e3490a
feat(breadcrumb_badges): integrate into quick edit 2025-12-10 11:10:26 +02:00
Elian Doran
16a73b0848
fix(popup_editor): wrong margin for title 2025-12-10 11:03:12 +02:00
Elian Doran
52bb4d7a0e
feat(breadcrumb_badges): make badge not wrap-around 2025-12-10 09:52:46 +02:00
Elian Doran
40b5e4d549
feat(breadcrumb_badges): proper link handling support 2025-12-10 09:47:05 +02:00
Elian Doran
b014ea8950
feat(breadcrumb_badges): add colors to the badges 2025-12-10 09:38:55 +02:00
Elian Doran
61592716f9
feat(breadcrumb_badges): add tooltips for the badges 2025-12-10 09:27:44 +02:00
Elian Doran
efe7fc0ee7
chore(layout): hide breadcrumb badges if not on new layout 2025-12-10 09:12:57 +02:00
Elian Doran
a810db3641
feat(breadcrumb_badges): display badge when editing is unlocked 2025-12-10 09:11:28 +02:00
Elian Doran
f8b292dfa3
Experimental layout (#8005) 2025-12-09 23:35:15 +02:00
Elian Doran
fc2ab91280
feat(options/advanced): add description for experimental 2025-12-09 23:16:30 +02:00
Elian Doran
668ee219c6
chore(layout): use translation for badges 2025-12-09 23:02:21 +02:00
Elian Doran
ee6512a1a6
refactor(layout): align name for breadcrumb badges 2025-12-09 23:00:41 +02:00
Elian Doran
fe1f590286
chore(layout): use translations for note title details 2025-12-09 23:00:02 +02:00
Elian Doran
876e8f843a
chore(layout): use i18n for options 2025-12-09 22:58:16 +02:00
Elian Doran
a45c1a1dc8
chore(layout): fix regressions after merge 2025-12-09 22:57:36 +02:00
Elian Doran
f8377169e6
Merge remote-tracking branch 'origin/main' into feature/new_layout 2025-12-09 22:46:18 +02:00
Elian Doran
a197a33d35
chore(experimental_features): address review 2025-12-09 22:43:39 +02:00
Elian Doran
3060207d04
feat(layout): created & modification date 2025-12-09 22:22:28 +02:00
Elian Doran
28c1d0b3f5
feat(layout): indicate clickable badges 2025-12-09 21:50:38 +02:00
Elian Doran
644d051477
feat(layout): add shared badge 2025-12-09 21:44:39 +02:00
Elian Doran
f42031c8de
feat(layout): add icon to the badge 2025-12-09 21:11:30 +02:00
Elian Doran
6b50d9b087
feat(layout): implement read-only badge 2025-12-09 21:06:28 +02:00
Elian Doran
a0f0da64b4
feat(layout): new icon for note actions & fix padding 2025-12-09 20:59:28 +02:00
Elian Doran
1e72ebd104
feat(layout): move revisions button to note actions 2025-12-09 20:48:54 +02:00
Elian Doran
1184a95697
style(layout): missed bottom border in ribbon buttons 2025-12-09 20:44:58 +02:00
Elian Doran
cd0e4a5678
feat(layout): move fixed formatting toolbar above 2025-12-09 20:36:48 +02:00
Elian Doran
394f6c3110
feat(layout): respect content width for title 2025-12-09 20:22:31 +02:00
Elian Doran
e2b6d0c256
feat(layout): move the note title into the scrollable region 2025-12-09 20:09:06 +02:00
Elian Doran
fe7ca210dd
feat(layout): move the note actions into the breadcrumb area 2025-12-09 20:05:42 +02:00
Elian Doran
e58d6bf2a3
feat(layout): reverse the layout of the ribbon 2025-12-09 19:51:53 +02:00
Elian Doran
460d20d6b2
feat(layout): move ribbon to the bottom as experimental layout 2025-12-09 19:42:37 +02:00
Elian Doran
ae154212fe
feat(client/server): basic support for experimental features 2025-12-09 19:34:03 +02:00
Elian Doran
28bb4edbac
chore(layout): revert work on floating panel 2025-12-09 19:18:48 +02:00
Elian Doran
1ceed1b47b
chore(layout): revert work on floating panel 2025-12-09 19:11:27 +02:00
Elian Doran
9445e64c2e
Translations update from Hosted Weblate (#8004) 2025-12-09 17:49:32 +02:00
Matheus Fongaro (MatioZG)
e6fba03ba7
Translated using Weblate (Portuguese (Brazil))
Currently translated at 3.2% (5 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/pt_BR/
2025-12-09 16:16:40 +01:00
green
b027ca5c09
Translated using Weblate (Japanese)
Currently translated at 100.0% (1646 of 1646 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-12-09 16:16:39 +01:00
Elian Doran
e98df30500
fix(popup-editor): broken title bar layout 2025-12-09 17:16:29 +02:00
Elian Doran
111c44dadf
fix(content_header): z-index issues 2025-12-09 17:11:28 +02:00
Elian Doran
cb31c25e6c
fix(content_header): note icon dropdown broken when scrolling 2025-12-09 17:08:03 +02:00
Elian Doran
5d59c953c2
fix(layout): title row background in settings 2025-12-09 16:39:31 +02:00
Elian Doran
a2cff42981
fix(layout): scrollbar design in code note 2025-12-09 16:31:47 +02:00
Elian Doran
cae892a971
fix(layout): title not visible on dark code theme 2025-12-09 16:27:19 +02:00
Elian Doran
f8447d923e
feat(ribbon): hide when in options 2025-12-09 16:22:03 +02:00
Elian Doran
3b8dabc9d2
Back/forward navigation in tab bar (#8003) 2025-12-09 16:11:17 +02:00
Elian Doran
cda39e967c
chore(tab_navigation): address requested changes 2025-12-09 16:02:24 +02:00
Elian Doran
7da9367dc9
fix(tab_navigation): affecting server and mobile views 2025-12-09 15:59:15 +02:00
Elian Doran
82d97ef26f
feat(tab_navigation): hide buttons if launcher ones are used 2025-12-09 15:30:46 +02:00
Elian Doran
9e094f1d96
feat(tab_navigation): add it to horizontal layout as well 2025-12-09 15:14:13 +02:00
Elian Doran
da7e15c268
refactor(tab_navigation): sort imports 2025-12-09 15:06:54 +02:00
Elian Doran
24806a810c
feat(tab_navigation): display note icon in history navigation 2025-12-09 15:02:52 +02:00
Elian Doran
a2ace4510a
Translations update from Hosted Weblate (#8000) 2025-12-09 15:00:26 +02:00
Elian Doran
5c8132088f
feat(client): use chevrons to display note path 2025-12-09 14:49:19 +02:00
Elian Doran
7ee060b228
feat(tab_navigation): improve indicator for current item in context menu 2025-12-09 14:41:17 +02:00
Elian Doran
4b2a4b8f7b
feat(tab_navigation): reflect state of history by disabling the buttons 2025-12-09 14:29:45 +02:00
Elian Doran
5a668ede01
chore(tab_navigation): reintroduce history cleaning 2025-12-09 14:24:39 +02:00
Elian Doran
9e099444b6
feat(tab_navigation): functional context menu 2025-12-09 14:23:06 +02:00
Elian Doran
e3f5b3535a
feat(tab_navigation): functional back/forward buttons 2025-12-09 14:10:11 +02:00
Elian Doran
346ad1e8a3
feat(tab_navigation): add the buttons on vertical layout 2025-12-09 14:06:57 +02:00
Elian Doran
2a9558e9c5
style(ribbon): make icons slightly bigger 2025-12-09 13:18:25 +02:00
Hosted Weblate
c324f66aef
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-12-09 12:15:20 +01:00
Elian Doran
e688f2cdb6
Add breadcrumbs to navigation (#7995) 2025-12-09 13:15:03 +02:00
Elian Doran
2ff8762a22
chore(client): fix typecheck 2025-12-09 13:07:41 +02:00
Elian Doran
4d75221938
chore(breadcrumbs): address requested changes 2025-12-09 12:41:54 +02:00
Elian Doran
658b699b71
fix(collections/geomap): fake floating buttons mispositioned 2025-12-09 12:24:28 +02:00
Elian Doran
72b0d03546
chore(layout): remove some title margins 2025-12-09 12:23:05 +02:00
Elian Doran
19980807f2
style(ribbon): fix some alignment issues & decrease button size 2025-12-09 12:20:27 +02:00
Elian Doran
3514e3d057
fix(floating_buttons): wrong position when at the top of the note 2025-12-09 11:46:16 +02:00
Elian Doran
fb6c82740c
chore(ribbon): remove top transition completely 2025-12-09 11:38:04 +02:00
Elian Doran
8df5a010c9
fix(ribbon): note buttons cut off 2025-12-09 11:36:00 +02:00
Elian Doran
895e9b8bf0
chore(client/layout): reduce transitions 2025-12-09 11:30:18 +02:00
Elian Doran
bfcf85e0d2
fix(client/layout): content header height not properly resized when switching notes 2025-12-09 11:27:05 +02:00
Elian Doran
5770222304
fix(client/floating_buttons): clipped by floating content header 2025-12-09 11:08:28 +02:00
Elian Doran
d5d2815bdf
fix(client/floating_buttons): clipped by ribbon 2025-12-09 09:20:31 +02:00
Elian Doran
7fc3d413e5
fix(client): 1px scroll in full-height note 2025-12-09 09:13:18 +02:00
Elian Doran
474228b630
style(client): remove bottom border & box-shadow for content header 2025-12-09 08:22:51 +02:00
Elian Doran
0805e077a1
feat(ribbon): basic implementation for scroll pinning 2025-12-09 08:18:27 +02:00
Elian Doran
6b059a9a75
feat(ribbon): context menu for root item 2025-12-09 08:01:52 +02:00
Elian Doran
7377e4e34d
chore(ribbon): improve paddings slightly 2025-12-09 07:58:59 +02:00
Elian Doran
6fac947d9c
chore(ribbon): address requested changes 2025-12-09 07:50:21 +02:00
Elian Doran
5973e5ca26
chore(ribbon): remove label for the root entirely 2025-12-09 07:46:46 +02:00
Elian Doran
6570a55e7e
Translations update from Hosted Weblate (#7993) 2025-12-08 23:56:13 +02:00
Elian Doran
608ab53933
chore(ribbon): reduce note title padding 2025-12-08 23:41:17 +02:00
Elian Doran
05679f7a8d
feat(ribbon): prototype sticky ribbon 2025-12-08 23:33:55 +02:00
noobhjy
f4838bb3b5
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.1% (115 of 116 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/zh_Hans/
2025-12-08 21:21:24 +00:00
pythaac
edb2a65196
Translated using Weblate (Korean)
Currently translated at 61.8% (94 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ko/
2025-12-08 21:21:23 +00:00
Hosted Weblate
fd721cac51
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-12-08 21:21:23 +00:00
pythaac
a1ff3cc8f7
Translated using Weblate (Korean)
Currently translated at 57.2% (87 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ko/
2025-12-08 21:21:21 +00:00
Adorian Doran
3fa6b264e5 style/note colors: include the original custom color 2025-12-08 23:18:14 +02:00
Elian Doran
fcf51ec6da
chore(eslint): apply to .tsx as well 2025-12-08 23:14:09 +02:00
Elian Doran
d15b5f8cbc
style(next): basic styling of ribbon as a floating toolbar 2025-12-08 23:13:58 +02:00
Elian Doran
ef3cbcac6d
refactor(breadcrumb): fix eslint issues 2025-12-08 23:09:00 +02:00
Elian Doran
b16893c4d2
feat(breadcrumb): collapse items if the list is too big 2025-12-08 23:03:31 +02:00
Elian Doran
a365814aaa
feat(breadcrumb): improve overflow slightly 2025-12-08 22:54:31 +02:00
Elian Doran
eca2116adc
feat(breadcrumb): make the root note clickable 2025-12-08 22:46:04 +02:00
Elian Doran
4cfa403657
feat(breadcrumb): apply ellipsis to dropdown 2025-12-08 22:40:37 +02:00
Elian Doran
70ded4c2cd
chore(breadcrumb): use bold for highlighting active entry 2025-12-08 22:38:06 +02:00
Elian Doran
3fe45db6ef
feat(breadcrumb): improve overflow support 2025-12-08 22:17:49 +02:00
Elian Doran
11467775b6
feat(breadcrumb): basic overflow support 2025-12-08 22:09:46 +02:00
Elian Doran
1e5fcf635e
feat(breadcrumb): show root title if it's the one active 2025-12-08 22:05:09 +02:00
Elian Doran
223ba4643f
fix(breadcrumb): breadcrumb shown if there are no children 2025-12-08 21:57:51 +02:00
Elian Doran
200fd76929
feat(breadcrumb): display a checkbox for the current note 2025-12-08 21:52:36 +02:00
Elian Doran
c5c4ecd6e6
feat(breadcrumb): show current item 2025-12-08 17:04:08 +02:00
Elian Doran
bedca9f82c
feat(breadcrumb): hide root icon 2025-12-08 16:45:26 +02:00
Elian Doran
adc356eff3
fix(breadcrumb): navigation on first level not working 2025-12-08 16:41:06 +02:00
Elian Doran
c4285772b3
feat(breadcrumb): basic navigation in separator 2025-12-08 16:34:40 +02:00
Elian Doran
a02235f2bd
feat(breadcrumb): set up dropdown 2025-12-08 16:03:12 +02:00
Elian Doran
5f215b14c2
feat(breadcrumb): start implementing interactive breadcrumbs 2025-12-08 16:01:34 +02:00
Elian Doran
6e29fe8d58
feat(breadcrumb): hide preview 2025-12-08 15:56:03 +02:00
Elian Doran
43ceb1982d
feat(breadcrumb): hide last note 2025-12-08 15:53:17 +02:00
Elian Doran
d02ec47d77
feat(breadcrumb): get breadcrumb to render 2025-12-08 15:16:06 +02:00
Elian Doran
9942950710
feat(layout): relocate title into scrollable region 2025-12-08 14:54:57 +02:00
Elian Doran
a6682be251
fix(webview): layout issues when when no webviewSrc 2025-12-08 14:21:59 +02:00
Elian Doran
baee2cd6b2
chore(scripts): add proper typechecking 2025-12-08 14:13:18 +02:00
Elian Doran
3ee8eac635
chore(readme): order languages alphabetically 2025-12-08 14:13:17 +02:00
Elian Doran
ce5a775160
Translations update from Hosted Weblate (#7991) 2025-12-08 13:22:19 +02:00
Elian Doran
2cf66d1c53
Delete CNAME 2025-12-08 12:59:39 +02:00
Hosted Weblate
eaee67d742
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-12-08 11:59:30 +01:00
Elian Doran
c681496b1b
chore(readme): fix links to old docs 2025-12-08 12:58:48 +02:00
Elian Doran
829d3e046d
chore(readme): fix links to docs 2025-12-08 12:51:07 +02:00
Elian Doran
5c8df540db
chore(readme): fix language switcher links (closes #7246) 2025-12-08 12:43:00 +02:00
Elian Doran
8920e6e448
chore(readme): disable translation for language switcher 2025-12-08 12:00:30 +02:00
Elian Doran
3cb860232e
Translations update from Hosted Weblate (#7990) 2025-12-08 11:57:43 +02:00
Hosted Weblate
d588518ba1
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-12-08 10:55:07 +01:00
Elian Doran
d6f727d17a
Translations update from Hosted Weblate (#7989) 2025-12-08 11:54:51 +02:00
Wen QI
82c40302bd
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (1646 of 1646 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hans/
2025-12-08 10:53:50 +01:00
Andreas H.
c40c62a247
Translated using Weblate (German)
Currently translated at 99.2% (1634 of 1646 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/de/
2025-12-08 10:53:50 +01:00
Wen QI
8048b5ebca
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 99.4% (1637 of 1646 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hant/
2025-12-08 10:53:49 +01:00
green
03ba43df5d
Translated using Weblate (Japanese)
Currently translated at 100.0% (1646 of 1646 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-12-08 10:53:49 +01:00
Elian Doran
a4b95b45ec
chore(readme): rewrite links 2025-12-08 11:52:28 +02:00
Elian Doran
59513962fe
chore(readme): add script to copy README into docs 2025-12-08 11:49:12 +02:00
Elian Doran
a201b43cde
fix(launch_bar): sync status not correctly rendered 2025-12-08 11:30:33 +02:00
Elian Doran
f98c77bd16
Translations update from Hosted Weblate (#7988) 2025-12-08 09:44:13 +02:00
green
2596359b25
Translated using Weblate (Japanese)
Currently translated at 100.0% (1646 of 1646 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-12-08 08:30:46 +01:00
minkipark
e0a0263607
Translated using Weblate (Korean)
Currently translated at 3.0% (50 of 1646 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ko/
2025-12-08 08:30:45 +01:00
green
2d3feedb07
Translated using Weblate (Japanese)
Currently translated at 100.0% (152 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ja/
2025-12-08 08:30:45 +01:00
Hosted Weblate
af392fad3d
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-12-08 08:30:44 +01:00
Elian Doran
ef74490c44
chore(deps): update dependency jsonc-eslint-parser to v2.4.2 (#7982) 2025-12-08 09:30:31 +02:00
Elian Doran
b6856e18a8
fix(deps): update dependency katex to v0.16.27 (#7983) 2025-12-08 09:30:08 +02:00
renovate[bot]
de1d4424d9
fix(deps): update dependency katex to v0.16.27 2025-12-08 01:03:42 +00:00
renovate[bot]
5ec45bb575
chore(deps): update dependency jsonc-eslint-parser to v2.4.2 2025-12-08 01:02:52 +00:00
Elian Doran
cb3aced2ed
docs(script): clarify originEntity and activeContext 2025-12-07 23:58:02 +02:00
Elian Doran
2f13a1ad21
fix(mind-map): show text in links between nodes on export (#7938) 2025-12-07 23:20:18 +02:00
Elian Doran
045127adee
chore(vscode): add errorlens to recommendations 2025-12-07 23:11:07 +02:00
Elian Doran
db1a0c0362
i18n(client): update renamed key 2025-12-07 23:07:30 +02:00
Elian Doran
dcaf91a878
CKEditor stability improvements (#7979) 2025-12-07 22:40:52 +02:00
Elian Doran
a9209f5103
chore(ckeditor/watchdog): accidental comment 2025-12-07 22:32:06 +02:00
Elian Doran
ea613986c2
chore(server): add OpenAPI spec for to-markdown 2025-12-07 22:26:21 +02:00
Elian Doran
1ed46bd47c
refactor(server): add validation for HTML/Markdown rendering 2025-12-07 22:24:14 +02:00
Elian Doran
f1ee79e75a
refactor(client): inconsistent prefix for messages 2025-12-07 22:23:19 +02:00
Elian Doran
cd27160905
chore(ckeditor/watchdog): fix typecheck issues 2025-12-07 22:09:30 +02:00
Elian Doran
9ddf4a1308
feat(ckeditor/watchdog): ignore model out of bounds (closes #7739) 2025-12-07 22:00:10 +02:00
Elian Doran
a1c5ed9eb5
feat(ckeditor/watchdog): ignore parent check (closes #5776) 2025-12-07 21:59:52 +02:00
Elian Doran
7a4f19eada
chore(ckeditor): revert breaking change 2025-12-07 21:34:10 +02:00
Elian Doran
397fb785d6
feat(ckeditor/watchdog): functional copy to clipboard button 2025-12-07 21:21:55 +02:00
Elian Doran
75a1fcc933
chore(dialog): fix mandatory parameter 2025-12-07 21:06:56 +02:00
Elian Doran
292cbf1383
feat(ckeditor/watchdog): add a title to the details screen 2025-12-07 21:03:39 +02:00
Elian Doran
37a14fefb3
feat(ckeditor/watchdog): improve layout of info dialog 2025-12-07 21:01:56 +02:00
Elian Doran
f424633d8c
feat(ckeditor/watchdog): improve dialog size 2025-12-07 20:59:53 +02:00
Elian Doran
048258d2d1
feat(toast): improve button layout 2025-12-07 20:59:41 +02:00
Elian Doran
f779108b6c
feat(ckeditor/watchdog): add a more details button 2025-12-07 20:40:29 +02:00
Elian Doran
522f3ae0a1
feat(toast): support buttons 2025-12-07 20:39:27 +02:00
Elian Doran
3fc7067c59
feat(dialog): support React nodes in info dialog 2025-12-07 20:39:11 +02:00
Elian Doran
c600e8ef89
feat(ckeditor/watchdog): add a toast to indicate the error 2025-12-07 20:16:34 +02:00
Elian Doran
5ad267fe1b
chore(ckeditor): try to disable watchdog timer 2025-12-07 20:09:56 +02:00
Elian Doran
d8b3e438f8
chore(ckeditor): solve a few eslint warnings 2025-12-07 19:46:06 +02:00
Elian Doran
2834af66e9
feat(ckeditor/watchdog): restore focus after crash 2025-12-07 19:36:46 +02:00
Elian Doran
1bbf86fbeb
feat(ckeditor/watchdog): use data stored in the spaced update 2025-12-07 19:30:35 +02:00
Elian Doran
f662b95dc9
chore(vscode): remove now unnecessary extension recommendations 2025-12-07 19:03:05 +02:00
Elian Doran
9ad4b725ac
chore(eslint): report missing semicolons 2025-12-07 00:42:25 +02:00
Elian Doran
0182c61aec
chore(vscode): mark all eslint rules as warnings 2025-12-07 00:42:00 +02:00
Elian Doran
78362535c7
chore(eslint): downgrade import sorting to warning 2025-12-07 00:36:39 +02:00
Elian Doran
ae7b31f343
chore(dx): trim trailing whitespace in CSS 2025-12-07 00:35:28 +02:00
Elian Doran
f16441bba4
Port toast to React (#7975) 2025-12-07 00:34:25 +02:00
Elian Doran
d3f9bb6def
chore(toast): address requested changes 2025-12-07 00:33:37 +02:00
Elian Doran
e02440aa59
fix(toast): persistent toasts no longer working 2025-12-07 00:20:56 +02:00
Elian Doran
f1d87c29d3
chore(toast): fix typecheck issues 2025-12-07 00:15:00 +02:00
Elian Doran
21335b1b00
refactor(toast): get rid of autohide 2025-12-07 00:07:43 +02:00
Elian Doran
7463570e76
refactor(toast): rename delay to timeout 2025-12-07 00:06:42 +02:00
Elian Doran
da17a63ef5
refactor(toast): get rid of closeAfter in favor of delay 2025-12-07 00:04:12 +02:00
Elian Doran
eb8f2021cb
fix(toast): add fallback if icon doesn't start with bx- 2025-12-06 23:49:56 +02:00
Elian Doran
888ff33be1
fix(toast): missing message icon 2025-12-06 23:46:21 +02:00
Elian Doran
b46850e86e
refactor(toast): relocate styles into own file 2025-12-06 23:38:40 +02:00
Elian Doran
f053587f09
chore(toast): port toast to react 2025-12-06 23:37:56 +02:00
Elian Doran
7a3092a23b
fix(read-only-bar): button shrinks when window is small 2025-12-06 23:00:57 +02:00
Elian Doran
d95450ae07
feat(client): detect communication errors with Traefik 2025-12-06 22:57:13 +02:00
Elian Doran
230def10fe
feat(client): improve error message for HTTP errors 2025-12-06 22:12:06 +02:00
Elian Doran
036f8e49a4
docs(server/proxy): breaking change in Traefik 3.6.4 2025-12-06 21:51:56 +02:00
Elian Doran
4eca8a5640
feat(dx): add a way to run traefik reverse proxy 2025-12-06 21:37:24 +02:00
Elian Doran
08f96a91f3
docs(readme): fix a space 2025-12-06 19:37:25 +02:00
Elian Doran
2e915eccd6
Clean up _regroup (#7970) 2025-12-06 19:27:15 +02:00
Elian Doran
c05c58c82b
Merge remote-tracking branch 'origin/main' into chore/cleanup_regroup 2025-12-06 19:18:23 +02:00
Elian Doran
572feed918
chore(regroup): address requested changes 2025-12-06 19:17:56 +02:00
Elian Doran
d30d207ab5
test(server): solve some local timeouts 2025-12-06 19:08:19 +02:00
Elian Doran
2a6b91dd04
chore(regroup): reintroduce code coverage 2025-12-06 19:08:03 +02:00
Elian Doran
3dee1725b3
chore(regroup): reintroduce old e2e tests 2025-12-06 18:54:38 +02:00
Elian Doran
f7ac465e67
chore(eslint): integrate preact config 2025-12-06 15:31:38 +02:00
Elian Doran
912f14549c
chore(eslint): integrate playwright e2e 2025-12-06 15:20:05 +02:00
Elian Doran
21079335e7
chore(eslint): remove unnecessary files 2025-12-06 14:58:38 +02:00
Elian Doran
85741240f1
chore(eslint): reintegrate simple import sort 2025-12-06 14:50:41 +02:00
Elian Doran
3df9a87b29
chore(eslint): clean up unnecessary dependency in client 2025-12-06 14:48:00 +02:00
Elian Doran
acd60007ac
chore(eslint): integrate formatter config 2025-12-06 14:43:08 +02:00
Elian Doran
f66c9630e3
chore(deps): update dependency vite to v7.2.6 (#7951) 2025-12-06 12:25:52 +02:00
Elian Doran
50a5892a31
chore(deps): update typescript-eslint monorepo to v8.48.1 (#7953) 2025-12-06 12:25:14 +02:00
renovate[bot]
c5f58437b1
chore(deps): update typescript-eslint monorepo to v8.48.1 2025-12-06 10:10:32 +00:00
Elian Doran
a915424d9a
chore(deps): update softprops/action-gh-release action to v2.5.0 (#7958) 2025-12-06 12:10:09 +02:00
renovate[bot]
be7699c600
chore(deps): update dependency vite to v7.2.6 2025-12-06 10:09:14 +00:00
Elian Doran
a7c946ddae
fix(deps): update codemirror themes (#7955) 2025-12-06 12:08:43 +02:00
Elian Doran
4b741a9434
chore(deps): update dependency openai to v6.10.0 (#7957) 2025-12-06 12:07:52 +02:00
Elian Doran
cd963272d4
chore(deps): update vitest monorepo to v4.0.15 (#7954) 2025-12-06 12:07:11 +02:00
Elian Doran
9de17ead91
Translations update from Hosted Weblate (#7966) 2025-12-06 12:05:21 +02:00
pythaac
d98b133d63
Translated using Weblate (Korean)
Currently translated at 52.6% (80 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ko/
2025-12-06 11:04:27 +01:00
Elian Doran
361e8e0066
chore(deps): update dependency electron to v39 (#7536) 2025-12-06 12:04:20 +02:00
Elian Doran
523c44b796
fix(deps): update dependency mermaid to v11.12.2 (#7956) 2025-12-06 11:53:14 +02:00
Elian Doran
4bd60ed6a1
chore(deps): update react monorepo to v19.2.1 (#7952) 2025-12-06 11:52:11 +02:00
Elian Doran
7d57f08baf
chore(deps): update dependency express to v5.2.1 (#7950) 2025-12-06 11:35:10 +02:00
Elian Doran
5e7f54dbc3
chore(deps): update dependency esbuild to v0.27.1 (#7949) 2025-12-06 11:34:36 +02:00
Elian Doran
dfb9ce990d
chore(eslint): basic config 2025-12-06 11:05:34 +02:00
Elian Doran
e87a368e87
chore(regroup): remove some redundant files 2025-12-06 10:52:41 +02:00
Elian Doran
44506057fd
chore(regroup): clean bin dir 2025-12-06 10:50:42 +02:00
Elian Doran
ff08eadb23
fix(server/scripts): generate-document failing (closes #5422) 2025-12-06 10:49:14 +02:00
Elian Doran
ebb1a3feb2
chore(regroup): integrate generate_document 2025-12-06 10:35:57 +02:00
Elian Doran
81bc85b8e4
chore(regroup): adapt export-schema script 2025-12-06 10:29:08 +02:00
Elian Doran
4a749f52e9
chore(regroup): remove old release scripts 2025-12-06 10:11:28 +02:00
Elian Doran
25e37ddd78
chore(regroup): relocate icon scripts 2025-12-06 10:07:23 +02:00
renovate[bot]
46a9cfcc67
chore(deps): update react monorepo to v19.2.1 2025-12-06 08:00:01 +00:00
Elian Doran
66ff944660
chore(deps): update dependency @types/reveal.js to v5.2.2 (#7948) 2025-12-06 09:58:15 +02:00
Elian Doran
988db59197
chore(deps): update dependency @smithy/middleware-retry to v4.4.14 (#7947) 2025-12-06 09:57:54 +02:00
Elian Doran
34e321407a
chore(deps): update dependency @redocly/cli to v2.12.3 (#7946) 2025-12-06 09:57:31 +02:00
Elian Doran
44c0028a51
chore(regroup): clean up translation scripts 2025-12-06 09:43:54 +02:00
Elian Doran
264b75cd68
chore(regroup): clean up migration scripts 2025-12-06 09:43:02 +02:00
renovate[bot]
cf9ccdcab6
chore(deps): update dependency electron to v39 2025-12-06 07:36:35 +00:00
renovate[bot]
48e18e533c
chore(deps): update dependency openai to v6.10.0 2025-12-06 07:35:53 +00:00
renovate[bot]
12ef778bf4
fix(deps): update dependency mermaid to v11.12.2 2025-12-06 07:35:15 +00:00
Elian Doran
6c31a1788a
Port launch bar to React (#7934) 2025-12-06 09:35:06 +02:00
renovate[bot]
aa7c6da8ef
fix(deps): update codemirror themes 2025-12-06 07:34:30 +00:00
renovate[bot]
1ff40cace0
chore(deps): update vitest monorepo to v4.0.15 2025-12-06 07:33:52 +00:00
renovate[bot]
0a1dadbea1
chore(deps): update dependency express to v5.2.1 2025-12-06 07:30:48 +00:00
renovate[bot]
24edbdba5e
chore(deps): update dependency esbuild to v0.27.1 2025-12-06 07:30:09 +00:00
renovate[bot]
db504eff88
chore(deps): update dependency @types/reveal.js to v5.2.2 2025-12-06 07:29:26 +00:00
renovate[bot]
5e09925659
chore(deps): update dependency @smithy/middleware-retry to v4.4.14 2025-12-06 07:28:42 +00:00
renovate[bot]
d1b2b351c8
chore(deps): update dependency @redocly/cli to v2.12.3 2025-12-06 07:28:02 +00:00
Elian Doran
50b0dc178e
chore(regroup): clean up old ETAPI tests
They are already integrated in apps/server/spec/etapi.
2025-12-06 09:27:56 +02:00
Elian Doran
b34118e395
fix(deps): update ckeditor monorepo to v47.3.0 (#7959) 2025-12-06 09:26:03 +02:00
Elian Doran
e6436f9021
fix(text): code block background not correct 2025-12-06 09:16:20 +02:00
Elian Doran
831d1b4f3a
chore(text): remove workaround for superscript icon 2025-12-06 09:15:40 +02:00
renovate[bot]
0456d1ca29
fix(deps): update ckeditor monorepo to v47.3.0 2025-12-06 07:04:27 +00:00
Elian Doran
fcd151022e
fix(deps): update dependency i18next to v25.7.1 (#7960) 2025-12-06 08:59:19 +02:00
Elian Doran
0c1998002e
fix(deps): update dependency preact to v10.28.0 (#7961) 2025-12-06 08:58:33 +02:00
Elian Doran
b8c33ce7fa
e2e(server): locator failing due to removal of "visible" 2025-12-06 08:54:35 +02:00
Elian Doran
454cd633e8
fix(read_only_text): missing padding in <pre> without <code> 2025-12-06 08:46:44 +02:00
renovate[bot]
53cb9a6e10
fix(deps): update dependency preact to v10.28.0 2025-12-06 06:43:06 +00:00
renovate[bot]
8d6ff763d6
fix(deps): update dependency i18next to v25.7.1 2025-12-06 06:42:29 +00:00
Elian Doran
ecf15af3a0
fix(deps): update dependency react-i18next to v16.4.0 (#7962) 2025-12-06 08:38:20 +02:00
Elian Doran
716823789d
chore(deps): update apple-actions/import-codesign-certs action to v6 (#7963) 2025-12-06 08:37:58 +02:00
Elian Doran
3c192badce
chore(deps): update dependency @anthropic-ai/sdk to v0.71.2 (#7945) 2025-12-06 08:37:04 +02:00
renovate[bot]
d94b611d10
chore(deps): update apple-actions/import-codesign-certs action to v6 2025-12-06 02:54:20 +00:00
renovate[bot]
e2ce329b6c
fix(deps): update dependency react-i18next to v16.4.0 2025-12-06 02:54:16 +00:00
renovate[bot]
ef902fc706
chore(deps): update softprops/action-gh-release action to v2.5.0 2025-12-06 02:51:28 +00:00
renovate[bot]
a7fc94c303
chore(deps): update dependency @anthropic-ai/sdk to v0.71.2 2025-12-06 02:42:34 +00:00
Elian Doran
c8c6d1bb1e
docs(user): document launch bar widgets 2025-12-05 23:24:18 +02:00
Elian Doran
a205108681
chore(react/launch_bar): address requested changes 2025-12-05 22:57:07 +02:00
Elian Doran
31561879b3
chore(launch_bar): address requested changes 2025-12-05 19:40:36 +02:00
Elian Doran
fdb6677153
chore(launch_bar): reintroduce keyboard shortcuts 2025-12-05 19:23:40 +02:00
Elian Doran
17241be4bc
fix(launch_bar): note context not properly set for legacy widgets 2025-12-05 18:01:46 +02:00
Elian Doran
3bf6de9c76
fix(launch_bar): calendar month selector dropdown wrongly positioned 2025-12-05 17:36:04 +02:00
Elian Doran
a53322e7cb
refactor(launch_bar): deduplicate launcher note props 2025-12-05 17:16:55 +02:00
Elian Doran
a107c126e4
fix(launch_bar): dynamic dropdown not repositioning 2025-12-05 17:11:53 +02:00
Elian Doran
3a8dcae53a
fix(launch_bar): wrong position of dropdown 2025-12-05 16:45:38 +02:00
Elian Doran
b99d4532df
fix(react): duplicate tooltips on focus vs hover 2025-12-05 16:39:55 +02:00
Elian Doran
6e8f8ea357
fix(launch_bar): horizontal launch bar scrolling with dropdown open 2025-12-05 15:53:17 +02:00
Elian Doran
83838bbe76
fix(launch_bar): calendar month selector not actually working 2025-12-05 15:50:25 +02:00
Elian Doran
66620aabe2
fix(launch_bar): calendar dropdown hiding on month selection 2025-12-05 15:43:44 +02:00
Elian Doran
74fcf8270d
chore(launch_bar): improve positioning of the month dropdown 2025-12-05 15:31:14 +02:00
Elian Doran
91b4e32a38
fix(launch_bar): calendar month selector clipped 2025-12-05 15:29:25 +02:00
Elian Doran
3f0c114f24
fix(launch_bar): handle week number wrap-around for next year in calendar 2025-12-05 15:17:51 +02:00
Elian Doran
30fe6b93c4
chore(launch_bar): remove now redundant file 2025-12-05 15:10:48 +02:00
Elian Doran
ec99242314
fix(launch_bar): dropdown tooltip visible when hovering popup 2025-12-05 15:06:55 +02:00
Elian Doran
9149fb7a85
fix(launch_bar): tooltip error for dropdowns 2025-12-05 15:02:13 +02:00
Elian Doran
3c919d9a8a
fix(launch_bar): global menu size 2025-12-05 14:52:57 +02:00
Elian Doran
22f9ce1e2e
Merge remote-tracking branch 'origin/main' into react/launch_bar 2025-12-05 12:22:36 +02:00
Elian Doran
72b01cec70
Merge branch 'stable' 2025-12-05 12:22:14 +02:00
Elian Doran
982fb212e4
docs(release): update change log for #7939 2025-12-05 12:19:12 +02:00
Elian Doran
9fcee9cc53
Fix (NoteMap): map overflows when switching type in ribbon (#7939) 2025-12-05 12:17:08 +02:00
Elian Doran
57b8bc2645
feat(launch_bar): faster tooltips 2025-12-05 12:12:02 +02:00
Elian Doran
3ad4ca3943
fix(launch_bar): bootstrap tooltip for dropdown 2025-12-05 12:06:53 +02:00
Elian Doran
237ffeff52
fix(launch_bar): title position of action buttons 2025-12-05 12:04:26 +02:00
Elian Doran
fb491d9790
Fix (NoteMap): map overflows when switching type in ribbon (#7939) 2025-12-05 11:59:08 +02:00
Elian Doran
facd03b6ad
feat(launch_bar): horizontal scroll using mouse wheel 2025-12-05 11:54:31 +02:00
Elian Doran
f5f38ca670
refactor(widgets): relocate AI chat button 2025-12-05 11:53:38 +02:00
Elian Doran
83e599f0e9
refactor(widgets): relocate note launcher & command button 2025-12-05 11:52:52 +02:00
Elian Doran
48cd06f37e
feat(bundle): improve error handling message 2025-12-05 11:49:09 +02:00
Elian Doran
aac9d2d1c4
fix(toast): icon missing for error messages 2025-12-05 11:45:02 +02:00
Elian Doran
7e2e1c12b9
chore(widgets): fix error icon in toast & improve message reporting 2025-12-05 11:42:56 +02:00
Elian Doran
3410dd4eba
chore(react/launch_bar): bring back reporting widget that failed 2025-12-05 11:40:50 +02:00
Elian Doran
d511085db3
chore(react/launch_bar): port launcher container & launcher 2025-12-05 11:31:52 +02:00
Elian Doran
caaa3583a7
chore(react/launch_bar): port sync status 2025-12-05 10:22:34 +02:00
Elian Doran
185e5691a4
chore(react/launch_bar): bring back week highlighting 2025-12-05 09:52:46 +02:00
Elian Doran
20f44cc64f
chore(react/launch_bar): reimplement week notes 2025-12-05 09:36:21 +02:00
SiriusXT
07ef94afd9 Merge branch 'main' into fix/note_map 2025-12-05 15:21:30 +08:00
SiriusXT
2d33b8a958 fix(note_map): initialize map state when switching map type in ribbon 2025-12-05 15:21:06 +08:00
Elian Doran
d283f5dbb4
chore(react/launch_bar): hide dropdown when selecting date 2025-12-05 09:15:01 +02:00
Elian Doran
1af76c4d06
chore(react/launch_bar): clicking on calendar days 2025-12-05 09:11:50 +02:00
Elian Doran
07498c6bef
chore(react/launch_bar): add link to existing days 2025-12-05 09:02:51 +02:00
Elian Doran
18f9ebbc4f
chore(react/launch_bar): reintroduce day highlighting 2025-12-05 08:56:35 +02:00
SiriusXT
85b4f652f4 chore(note_map): improve the icon for expanding/collapsing the map 2025-12-05 11:21:44 +08:00
SiriusXT
eec6f7336c fix (note_map): map overflows when switching map type in ribbon 2025-12-05 11:21:33 +08:00
Lucas
f976dd8d30
Apply suggestions from code review
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-12-04 13:08:28 -08:00
Lucas
2d3aa3a96e
Merge branch 'main' into main 2025-12-04 13:04:24 -08:00
Elian Doran
1195cbd772
Translations update from Hosted Weblate (#7937) 2025-12-04 22:59:00 +02:00
Hosted Weblate
cebfa674ef
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-12-04 21:56:39 +01:00
Elian Doran
3ed596496d
Merge branch 'main' of github.com:TriliumNext/Trilium 2025-12-04 22:56:20 +02:00
Elian Doran
d99ef78348
fix(client): find and replace in floating toolbar 2025-12-04 22:56:15 +02:00
lzinga
2666c1e196 feat(snapdom): update screenshot generation options for SVG and PNG exports 2025-12-04 12:52:01 -08:00
Lucas
4b8c8888ee
Merge branch 'TriliumNext:main' into main 2025-12-04 12:49:37 -08:00
lzinga
ce1fd64aa9 feat(export): enhance SVG and PNG export functionality with snapdom integration 2025-12-04 12:49:10 -08:00
Elian Doran
bd1479b14a
Translations update from Hosted Weblate (#7935) 2025-12-04 22:32:47 +02:00
Elian Doran
baee9520d1
Apply suggestion from @gemini-code-assist[bot]
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-12-04 22:32:08 +02:00
green
adb30a526e
Translated using Weblate (Japanese)
Currently translated at 100.0% (1636 of 1636 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-12-04 21:27:44 +01:00
noobhjy
60c40457fc
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (1636 of 1636 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hans/
2025-12-04 21:27:43 +01:00
noobhjy
a6df457c9c
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (1636 of 1636 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hant/
2025-12-04 21:27:42 +01:00
Francis C.
3fd8fb0308
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (1636 of 1636 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hant/
2025-12-04 21:27:41 +01:00
Elian Doran
7d4a7d4ab6
feat(dev): option to crash CKEditor 2025-12-04 22:15:13 +02:00
Elian Doran
4571b95683
chore(react/launch_bar): fix style for month selector 2025-12-04 21:37:02 +02:00
Elian Doran
a65d2a1bba
chore(react/launch_bar): reintroduce year selector 2025-12-04 21:24:35 +02:00
lzinga
5c9503732d fix(mind-map): show text in links between nodes on export 2025-12-04 11:08:44 -08:00
Elian Doran
2dbbf7f350
chore(react/launch_bar): reintroduce month dropdown 2025-12-04 20:13:46 +02:00
Elian Doran
e1cce220b3
chore(react/launch_bar): add back icons for previous/next month 2025-12-04 19:56:44 +02:00
Elian Doran
e0aed26f63
refactor(react/launch_bar): extract calendar impl into single file 2025-12-04 19:46:25 +02:00
Elian Doran
62fd07258e
chore(react/launch_bar): get days of the week to render 2025-12-04 19:43:47 +02:00
Elian Doran
0d8127140f
chore(react/launch_bar): get week numbers to render 2025-12-04 19:38:56 +02:00
Elian Doran
bab5326d7c
refactor(react/launch_bar): use different mechanism for gathering calendar info 2025-12-04 19:22:28 +02:00
Elian Doran
5c8445f3fe
chore(react/launch_bar): get calendar to render days 2025-12-04 19:03:28 +02:00
Elian Doran
604488b166
chore(react/launch_bar): port custom widget 2025-12-04 17:55:38 +02:00
Elian Doran
b7d7fc8b67
chore(react/launch_bar): remove an old file 2025-12-04 17:17:41 +02:00
Elian Doran
1f4872f72b
chore(react/launch_bar): port script launcher 2025-12-04 17:16:47 +02:00
Elian Doran
f89c40cde6
fix(react/launch_bar): type error in bookmarks 2025-12-04 17:07:13 +02:00
Elian Doran
670edbc22a
chore(react/launch_bar): port quick search launcher 2025-12-04 17:01:35 +02:00
Elian Doran
54f70c8158
chore(react/launch_bar): port today launcher 2025-12-04 16:53:05 +02:00
Elian Doran
0d6bcba023
chore(react/launch_bar): port note launcher 2025-12-04 16:33:58 +02:00
Elian Doran
06a9f95979
chore(react/launch_bar): remove old file 2025-12-04 16:23:14 +02:00
Elian Doran
03cdfc259e
refactor(react/launch_bar): deduplicate launcher icon and title 2025-12-04 16:22:46 +02:00
Elian Doran
1963b5732a
refactor(react/launch_bar): extract note launcher from bookmark button 2025-12-04 16:13:16 +02:00
Elian Doran
1e05dc937c
refactor(react/launch_bar): port command buttons 2025-12-04 16:04:14 +02:00
Elian Doran
c3b22ff737
refactor(react/launch_bar): port protected session status widget 2025-12-04 15:54:27 +02:00
Elian Doran
991f07e148
refactor(react/launch_bar): port ai chat button 2025-12-04 15:47:42 +02:00
Elian Doran
8efb849391
refactor(react/launch_bar): port history navigation 2025-12-04 15:44:10 +02:00
Elian Doran
5b310f3e46
refactor(react/launch_bar): port spacer 2025-12-04 15:02:46 +02:00
Elian Doran
5f54e42a43
refactor(react/launch_bar): extract icon class 2025-12-04 14:47:30 +02:00
Elian Doran
a83f20e454
refactor(react/launch_bar): extract dropdown & button style 2025-12-04 14:46:23 +02:00
Elian Doran
cdab86bd83
chore(react/launch_bar): port bookmark_folder 2025-12-04 14:41:07 +02:00
Elian Doran
48cbb80e79
chore(react/launch_bar): port open_note_button_widget 2025-12-04 14:18:04 +02:00
Elian Doran
1af6200655
chore(react/launch_bar): get launch bar to render React widgets 2025-12-04 13:24:47 +02:00
Elian Doran
b8585594cd
fix(text): duplicate search dialogs (closes #5735) 2025-12-04 13:03:08 +02:00
Elian Doran
d173cc982c
chore(release): prepare for v0.100.0 2025-12-04 12:21:40 +02:00
Elian Doran
471c57b3ed
docs(release): changelog for v0.100.0 2025-12-04 10:43:34 +02:00
Elian Doran
093d7d783b
fix(promoted_attributes): value sometimes empty when reopening note 2025-12-04 10:38:07 +02:00
Elian Doran
7cc20600e7
Disable spell-check on code-snippets (#7929) 2025-12-04 07:47:02 +00:00
Elian Doran
559c654fbb
fix(promoted_attributes): not reacting to inheritable changes 2025-12-04 09:44:54 +02:00
Elian Doran
01a03e3e97
docs(user): mark #calendar:color as completely removed 2025-12-04 09:27:17 +02:00
Elian Doran
dd3233a556
docs(user): document calendar interaction on mobile 2025-12-04 09:22:25 +02:00
Elian Doran
c4a426566f
feat(collections/calendar): change click behaviour on mobile 2025-12-04 09:09:23 +02:00
Elian Doran
c081a596df
Unify Dayjs between client and server (#7930) 2025-12-04 07:08:11 +00:00
Elian Doran
6b07908cf7
chore(server): fix some more dependencies to JSON 2025-12-04 08:45:28 +02:00
Elian Doran
2985bd0a1c
chore(dayjs): fix typecheck 2025-12-03 23:29:38 +02:00
Lucas
975e8487fc
Merge branch 'TriliumNext:main' into main 2025-12-03 12:59:47 -08:00
Elian Doran
54408d3ec8
chore(dayjs): address requested changes 2025-12-03 22:24:30 +02:00
Elian Doran
8b3afc1f49
fix(share): reference links outside share appear as [missing note] 2025-12-03 22:22:10 +02:00
Elian Doran
e15bc5a232
Merge branch 'main' into main 2025-12-03 20:05:00 +00:00
Elian Doran
8fdda59440
Merge branch 'main' into feature/unify_dayjs 2025-12-03 20:04:48 +00:00
Elian Doran
d5cbf362f8
test(client): fix typecheck issue 2025-12-03 22:04:39 +02:00
Elian Doran
6f85d3370c
docs(technical): dayjs intro & supported plugins 2025-12-03 22:01:06 +02:00
Elian Doran
8c324cd185
test(client): running script bundle with dayjs 2025-12-03 21:44:34 +02:00
Elian Doran
f7f7fda040
feat(dayjs): enable duration plugin (closes #4456) 2025-12-03 21:26:10 +02:00
Elian Doran
74c11f4d4e
chore(test): warning of unsupported requests 2025-12-03 21:15:16 +02:00
Elian Doran
0525cfab79
feat(client): set dayjs locale 2025-12-03 21:10:54 +02:00
Elian Doran
2d73627908
test(dayjs): add a test for all plugins 2025-12-03 20:58:52 +02:00
Elian Doran
94d015789d
test(dayjs): relocate dayjs tests into commons 2025-12-03 20:54:35 +02:00
Elian Doran
af2f6246e8
chore(commons): tests not run 2025-12-03 20:49:57 +02:00
Elian Doran
ebbdf0294a
refactor(dayjs): relocate locale loading in commons 2025-12-03 20:49:15 +02:00
Elian Doran
5df539f0a4
refactor(dayjs): relocate all plugins and imports to commons 2025-12-03 20:44:48 +02:00
lzinga
4f6dfeb773 fixed whitespace and redundant lines. 2025-12-03 10:12:05 -08:00
lzinga
52bb83e878 feat(plugins): add InlineCodeNoSpellcheck plugin to disable spellcheck for inline code 2025-12-03 10:02:35 -08:00
Elian Doran
286a8626d1
Translations update from Hosted Weblate (#7928) 2025-12-03 17:54:26 +00:00
Elian Doran
aa62dc3f32
Translated using Weblate (Romanian)
Currently translated at 100.0% (1636 of 1636 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ro/
2025-12-03 17:52:47 +00:00
Elian Doran
045e7977d5
fix(map): markers disappearing due to infinite map 2025-12-03 19:51:01 +02:00
Elian Doran
e0dc25ad23
fix(print): fails if included note could not be found 2025-12-03 19:16:58 +02:00
Elian Doran
9d0499a306
fix(note_actions): print disabled not reacting to note type changes 2025-12-03 19:06:20 +02:00
Elian Doran
b971e002ce
chore(tree_context_menu): clarify "Convert to attachment" message 2025-12-03 18:56:49 +02:00
Elian Doran
5fd488e210
feat(tree_context_menu): disable "Convert to attachment" if no eligible notes 2025-12-03 18:55:10 +02:00
Elian Doran
eb84da4c51
fix(code): too much padding 2025-12-03 18:47:14 +02:00
Elian Doran
49243148a2
fix(note_list): note list shown when switching types (e.g. for mindmap) 2025-12-03 18:40:24 +02:00
Elian Doran
276241cdff
style(attachment): basic attachment card design 2025-12-03 18:29:49 +02:00
Elian Doran
6772453b3a
fix(attachment): duplicate padding in code blocks 2025-12-03 18:23:31 +02:00
Elian Doran
18e2f1f90c
fix(attachment): attachment content overlapping 2025-12-03 18:22:52 +02:00
Elian Doran
67d2175ce9
Translations update from Hosted Weblate (#7924) 2025-12-03 08:46:09 +00:00
Elian Doran
8a3283f1ea
Update apps/client/src/translations/it/translation.json
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-12-03 08:45:42 +00:00
green
2fb47fc186
Translated using Weblate (Japanese)
Currently translated at 100.0% (1636 of 1636 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-12-03 09:18:16 +01:00
Giovi
4530c9a40c
Translated using Weblate (Italian)
Currently translated at 100.0% (1636 of 1636 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/it/
2025-12-03 09:18:15 +01:00
Elian Doran
a867a25d5f
fix(markdown): show 'import successful' when canceling markdown import (#7899) 2025-12-02 12:11:25 +00:00
Elian Doran
10910ac2ed
fix(backlinks): list not refreshing & not reacting to all changes 2025-12-02 13:30:37 +02:00
Elian Doran
514f5a0c81
chore(markdown_import): don't display anything on empty input 2025-12-02 12:26:47 +02:00
Elian Doran
6b18ed6477
refactor(markdown_import): deduplicate submit 2025-12-02 12:24:22 +02:00
Elian Doran
e07b6cc409
Merge remote-tracking branch 'origin/main' into fix/markdown
; Conflicts:
;	apps/client/src/stylesheets/style.css
2025-12-02 12:20:01 +02:00
Elian Doran
5ae67fda7f
fix(ckeditor/math): math can be inserted in code blocks (closes #7913) 2025-12-02 12:13:40 +02:00
Elian Doran
1a03c0ca9f
fix(collections/calendar): events not updating sometimes 2025-12-02 10:56:58 +02:00
Elian Doran
dc211b4d00
fix(ckeditor): markdown icon broken due to a workaround 2025-12-02 10:27:13 +02:00
Elian Doran
2e767ffde1
fix(ribbon): formatting toolbar not showing up if focus on edited notes is active 2025-12-02 10:13:54 +02:00
Elian Doran
9f74a54c0d
fix(react/type_widgets): revision causes jump at start of editor (closes #7912) 2025-12-02 10:06:08 +02:00
Elian Doran
a7870495ac
docs(user): mention split focus 2025-12-02 09:44:20 +02:00
Elian Doran
a8ec323ea8
docs(user): document split functionality on mobile 2025-12-02 09:42:38 +02:00
Elian Doran
4b7d243406
Prototype/mobile split (#7906) 2025-12-02 07:35:34 +00:00
Elian Doran
1855588270
chore(client): fix missing argument in context menu 2025-12-02 09:02:11 +02:00
Elian Doran
e545e0c3a5
Translations update from Hosted Weblate (#7919) 2025-12-02 06:50:19 +00:00
Hosted Weblate
b24a0f1595
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/
2025-12-02 06:48:51 +00:00
Elian Doran
3f2bfc3050
docs: add comprehensive AI coding agent instructions for copilot-instructions (#7917) 2025-12-02 06:48:40 +00:00
Elian Doran
66f100d534
chore(i18n/client): remove two unused messages 2025-12-02 08:46:53 +02:00
Elian Doran
e641d5ba0f
Translations update from Hosted Weblate (#7911) 2025-12-02 06:46:23 +00:00
Marble127
6f8cebf954
Translated using Weblate (Dutch)
Currently translated at 26.2% (31 of 118 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/nl/
2025-12-02 07:26:27 +01:00
Marble127
2d2f2457cb
Translated using Weblate (Dutch)
Currently translated at 3.2% (53 of 1639 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/nl/
2025-12-02 07:26:26 +01:00
Marble127
68fa243af4
Translated using Weblate (Dutch)
Currently translated at 12.8% (50 of 389 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/nl/
2025-12-02 07:26:25 +01:00
Marble127
9cb133c8a6
Translated using Weblate (Dutch)
Currently translated at 20.3% (31 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/nl/
2025-12-02 07:26:25 +01:00
green
33f6c75917
Translated using Weblate (Japanese)
Currently translated at 100.0% (1639 of 1639 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-12-02 07:26:24 +01:00
Lluís Forns
49acd5e8c2
Translated using Weblate (Catalan)
Currently translated at 6.8% (112 of 1639 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ca/
2025-12-02 07:26:23 +01:00
Elian Doran
85266adf20
Translated using Weblate (Spanish)
Currently translated at 99.6% (1633 of 1639 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/es/
2025-12-02 07:26:22 +01:00
Elian Doran
27edea8380
Translated using Weblate (French)
Currently translated at 98.3% (1612 of 1639 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/fr/
2025-12-02 07:26:22 +01:00
Elian Doran
dccddb8d43
Translated using Weblate (Portuguese)
Currently translated at 94.6% (1551 of 1639 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/pt/
2025-12-02 07:26:21 +01:00
Elian Doran
5f9d7a223a
Translated using Weblate (Arabic)
Currently translated at 64.0% (1049 of 1639 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ar/
2025-12-02 07:26:20 +01:00
Elian Doran
29b71262d6
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (1636 of 1639 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hans/
2025-12-02 07:26:20 +01:00
Lluís Forns
0cfcbcf5df
Translated using Weblate (Catalan)
Currently translated at 1.6% (2 of 118 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ca/
2025-12-02 07:26:19 +01:00
Elian Doran
e1258384d8
Translated using Weblate (Polish)
Currently translated at 31.1% (511 of 1639 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/pl/
2025-12-02 07:26:18 +01:00
Lluís Forns
8837eddd40
Translated using Weblate (Catalan)
Currently translated at 18.2% (71 of 389 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ca/
2025-12-02 07:26:17 +01:00
Lluís Forns
f919d46e9a
Translated using Weblate (Catalan)
Currently translated at 2.6% (4 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ca/
2025-12-02 07:26:16 +01:00
Elian Doran
98094fac63
Translated using Weblate (Italian)
Currently translated at 99.7% (1635 of 1639 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/it/
2025-12-02 07:26:15 +01:00
Elian Doran
f94ccee252
Translated using Weblate (German)
Currently translated at 99.8% (1637 of 1639 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/de/
2025-12-02 07:26:14 +01:00
Elian Doran
7c4b338539
Translated using Weblate (Russian)
Currently translated at 97.3% (1595 of 1639 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ru/
2025-12-02 07:26:14 +01:00
Elian Doran
d88431f9e3
Translated using Weblate (Ukrainian)
Currently translated at 97.1% (1593 of 1639 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/uk/
2025-12-02 07:26:13 +01:00
Elian Doran
5f86068489
Translated using Weblate (Portuguese (Brazil))
Currently translated at 96.8% (1587 of 1639 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/pt_BR/
2025-12-02 07:26:12 +01:00
Elian Doran
36bc226674
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 99.7% (1635 of 1639 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hant/
2025-12-02 07:26:12 +01:00
Hosted Weblate
7947745218
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/
2025-12-02 07:26:11 +01:00
Hosted Weblate
19697aabfb
Update translation files
Updated by "Remove blank strings" add-on in Weblate.

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/
2025-12-02 07:26:10 +01:00
Elian Doran
87af23598d
Translated using Weblate (Romanian)
Currently translated at 99.5% (1631 of 1639 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ro/
2025-12-02 07:26:09 +01:00
Hosted Weblate
4ed7966a5a
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/
2025-12-02 07:26:08 +01:00
Giovi
8d86b5c7e6
Translated using Weblate (Italian)
Currently translated at 100.0% (1638 of 1638 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/it/
2025-12-02 07:26:07 +01:00
Elian Doran
cdf9458962
chore(deps): update dependency express to v5.2.0 [security] (#7915) 2025-12-02 06:25:40 +00:00
Lucas
83df37c2d1
Update .github/copilot-instructions.md
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-12-01 16:25:09 -08:00
Lucas
bc7b3165c8
Update .github/copilot-instructions.md
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-12-01 16:25:02 -08:00
Lucas
c332e9764a
Update .github/copilot-instructions.md
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-12-01 16:24:50 -08:00
lzinga
004d48d36c docs: add comprehensive AI coding agent instructions for copilot-instructions 2025-12-01 16:15:43 -08:00
Elian Doran
28b263a445
chore(mobile/split): address requested changes 2025-12-01 23:51:12 +02:00
Elian Doran
e0e9310907
feat(mobile/split): rephase open in note split if a split is already open 2025-12-01 23:46:29 +02:00
renovate[bot]
68b9159b2b
chore(deps): update dependency express to v5.2.0 [security] 2025-12-01 21:38:46 +00:00
Elian Doran
f5940cbf70
feat(mobile/split): hide split button if split is already open 2025-12-01 23:36:15 +02:00
Elian Doran
bfb143bb51
Merge remote-tracking branch 'origin/main' into prototype/mobile_split 2025-12-01 23:27:58 +02:00
Adorian Doran
64662d5215 Merge branch 'main' of https://github.com/TriliumNext/Trilium 2025-12-01 16:33:41 +02:00
Adorian Doran
31cedad976 documentation: mark "calendar:color" as deprecated 2025-12-01 16:33:31 +02:00
Elian Doran
9682df6240
feat(mobile/split): collapse inactive split when keyboard is opened 2025-12-01 15:48:18 +02:00
Elian Doran
a718908385
fix(mobile/split): link context menu opening in the wrong split 2025-12-01 15:23:57 +02:00
Elian Doran
12ac5147d3
Merge branch 'main' of github.com:TriliumNext/Trilium 2025-12-01 14:40:25 +02:00
Elian Doran
17291ff61d
chore(deps): remove unnecessary package 2025-12-01 14:34:55 +02:00
Adorian Doran
f3e334470e style: refactor 2025-12-01 14:27:49 +02:00
Adorian Doran
9407051f1e style: refactor 2025-12-01 14:24:13 +02:00
Adorian Doran
08a6d36153 style/calendar collection/list view: use separate style for the archived events 2025-12-01 14:13:23 +02:00
Adorian Doran
f906fb9b4c Merge branch 'main' of https://github.com/TriliumNext/Trilium 2025-12-01 14:08:32 +02:00
Adorian Doran
b4a6356724 style/calendar collection/list view: fix dot colors 2025-12-01 14:08:24 +02:00
Elian Doran
8eca14069a
fix(e2e): i18n test failing to due to English selection 2025-12-01 14:02:32 +02:00
Elian Doran
1af0477ac0
chore(ci): fix duplicate artifact name error 2025-12-01 13:53:07 +02:00
Elian Doran
43920f12ae
feat(backlinks): use proper plural 2025-12-01 13:50:59 +02:00
Elian Doran
5a0beec6cb
fix(backlinks): not refreshed after inserting a new link 2025-12-01 13:37:15 +02:00
Elian Doran
98241fb54b
fix(promoted_attributes): value carrying over onto new notes 2025-12-01 13:37:15 +02:00
Adorian Doran
3051664228 style: fix typo 2025-12-01 13:34:36 +02:00
Adorian Doran
1ed774365c client/Kanban board collection: reorder context menu items 2025-12-01 13:33:20 +02:00
Adorian Doran
f2e33dfd58 Merge branch 'main' of https://github.com/TriliumNext/Trilium 2025-12-01 13:29:39 +02:00
Adorian Doran
90b5282b39 client/calendar collection: add "Archive note" command to the context menu 2025-12-01 13:29:28 +02:00
Elian Doran
d520fc46b9
fix(text): code blocks cannot wrap automatically (#7910) 2025-12-01 11:18:31 +00:00
Adorian Doran
e69b5988ec style: fix custom title bar buttons on the legacy theme 2025-12-01 11:48:42 +02:00
Adorian Doran
3cdc1ba794 style/calendar collection: fix colors on the legacy theme 2025-12-01 11:38:48 +02:00
Adorian Doran
25e1008c5c Merge branch 'main' of https://github.com/TriliumNext/Trilium 2025-12-01 11:24:52 +02:00
Adorian Doran
a093862311 style/calendar collection: use a separate style for archived notes 2025-12-01 11:24:39 +02:00
Elian Doran
53057ea9fc
Translations update from Hosted Weblate (#7907) 2025-12-01 08:09:22 +00:00
Francis C.
94db96de3e
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (1638 of 1638 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hans/
2025-12-01 09:04:54 +01:00
Mr Mejri
60e4fbbf75
Translated using Weblate (Persian)
Currently translated at 15.2% (18 of 118 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/fa/
2025-12-01 09:04:53 +01:00
green
d35dd67632
Translated using Weblate (Japanese)
Currently translated at 100.0% (1638 of 1638 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-12-01 07:28:44 +01:00
Francis C.
8813985c68
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (1638 of 1638 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hant/
2025-12-01 07:28:44 +01:00
Mr Mejri
538c98b587
Translated using Weblate (Persian)
Currently translated at 5.9% (7 of 118 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/fa/
2025-12-01 07:28:44 +01:00
Hosted Weblate
389c7029cf
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-12-01 07:28:44 +01:00
Elian Doran
d47f9e1131
chore(deps): update dependency eslint-plugin-playwright to v2.4.0 (#7908) 2025-12-01 06:28:37 +00:00
Elian Doran
c0a8d29756
fix(deps): update dependency tsx to v4.21.0 (#7909) 2025-12-01 06:26:48 +00:00
SiriusXT
668fd34af6 fix(text): code blocks cannot wrap automatically 2025-12-01 13:55:21 +08:00
renovate[bot]
8aa08cf8fe
fix(deps): update dependency tsx to v4.21.0 2025-12-01 01:19:56 +00:00
renovate[bot]
16c04f5ae4
chore(deps): update dependency eslint-plugin-playwright to v2.4.0 2025-12-01 01:19:12 +00:00
Adorian Doran
32c16021c4 style/calendar collection: refactor 2025-12-01 03:00:38 +02:00
Adorian Doran
7713c1173a style/calendar collection: tweak the color of the today column / cell 2025-12-01 02:40:07 +02:00
Adorian Doran
8018f400c3 style/calendar collection: correct a hover color 2025-12-01 02:26:16 +02:00
Adorian Doran
79c8293881 style/calendar collection: handle dot events as normal events 2025-12-01 02:21:19 +02:00
Adorian Doran
db5652623b style/calendar collection: fix broken background color for events without a hue 2025-12-01 02:04:26 +02:00
Adorian Doran
0f7a48b323 style/calendar collection: add basic support for the legacy theme 2025-12-01 01:55:03 +02:00
Elian Doran
309fbab2e6
feat(mobile/split): hide sidebar button for secondary item 2025-11-30 23:34:37 +02:00
Elian Doran
99da145d65
fix(mobile/split): swapping between splits 2025-11-30 23:32:29 +02:00
Adorian Doran
415d2826c6 style/calendar collection: tweak dark theme colors 2025-11-30 23:30:30 +02:00
Adorian Doran
7787e7085e style/calendar collection: tweak dark theme colors 2025-11-30 23:22:41 +02:00
Elian Doran
4ab8417168
feat(forge): add safeguard for ARM64 better-sqlite3 binary 2025-11-30 22:57:14 +02:00
Adorian Doran
a77e76d5c6 Merge branch 'main' of https://github.com/TriliumNext/Trilium 2025-11-30 21:33:08 +02:00
Adorian Doran
ca6660e2ff style/calendar collection: tweak appearance 2025-11-30 21:33:00 +02:00
Elian Doran
af94410c55
Merge branch 'main' of github.com:TriliumNext/Trilium 2025-11-30 21:26:50 +02:00
Elian Doran
b47bc50147
fix(revisions): double scrolling on mobile 2025-11-30 21:24:57 +02:00
Elian Doran
5ff77c16ab
feat(revisions): improve layout on mobile 2025-11-30 21:13:07 +02:00
Adorian Doran
11618260cf style/calendar collection: tweak the appearance of events without a color 2025-11-30 20:18:16 +02:00
Adorian Doran
63f9006d17 style/calendar collection: improve the support for colored notes 2025-11-30 20:08:24 +02:00
Elian Doran
7779acc7bc
refactor(client): split revisions CSS into file 2025-11-30 19:56:13 +02:00
Elian Doran
aacd92eee3
chore(popup-editor): implement switch to full editor button 2025-11-30 19:47:17 +02:00
Adorian Doran
1bf8be2874 Merge branch 'main' of https://github.com/TriliumNext/Trilium 2025-11-30 19:46:26 +02:00
Adorian Doran
66f2d0c7dc style/note colors: use a more elegant way to retrieve the theme-aware note color 2025-11-30 19:46:15 +02:00
Elian Doran
597d952254
Add British English (en-GB) translations (#7904) 2025-11-30 17:37:49 +00:00
Adorian Doran
288595ce5d Merge branch 'main' of https://github.com/TriliumNext/Trilium 2025-11-30 19:34:45 +02:00
Elian Doran
c89e8c78d3
Translations update from Hosted Weblate (#7905) 2025-11-30 17:34:39 +00:00
Adorian Doran
81a37e3fc4 client/CSS class manager: fix a bug when handling red hues 2025-11-30 19:34:31 +02:00
Elian Doran
368c590976
Translated using Weblate (English (United Kingdom))
Currently translated at 0.8% (1 of 118 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/en_GB/
2025-11-30 18:33:26 +01:00
Elian Doran
6e982e646d
Translated using Weblate (English (United Kingdom))
Currently translated at 1.6% (2 of 118 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/en_GB/
2025-11-30 18:29:39 +01:00
Elian Doran
030582b2d5
feat(i18n): add English (United Kingdom) 2025-11-30 19:14:21 +02:00
copilot-swe-agent[bot]
7dd4b10a96 Add British English (en-GB) translations for client
Co-authored-by: eliandoran <21236836+eliandoran@users.noreply.github.com>
2025-11-30 17:10:30 +00:00
copilot-swe-agent[bot]
b055e79b4c Initial plan 2025-11-30 17:02:01 +00:00
Elian Doran
ba980aa93f
Translations update from Hosted Weblate (#7903) 2025-11-30 16:59:52 +00:00
Elian Doran
15baf04ce9
Added translation using Weblate (English (United Kingdom)) 2025-11-30 17:58:03 +01:00
Elian Doran
4dc2587817
Added translation using Weblate (English (United Kingdom)) 2025-11-30 17:58:00 +01:00
Elian Doran
d5e046c289
Added translation using Weblate (English (United Kingdom)) 2025-11-30 17:57:58 +01:00
Elian Doran
ef8073ac58
Added translation using Weblate (English (United Kingdom)) 2025-11-30 17:57:56 +01:00
green
38c9d25214
Translated using Weblate (Japanese)
Currently translated at 100.0% (1637 of 1637 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-11-30 17:57:54 +01:00
Elian Doran
e2f0e4089f
Merge branch 'main' of github.com:TriliumNext/Trilium 2025-11-30 18:41:43 +02:00
Elian Doran
80ce2c04ed
chore(ci): apply platform changes for nightly
See https://github.com/TriliumNext/Trilium/pull/7002/files
2025-11-30 18:41:39 +02:00
Elian Doran
4ebd82beeb
feat(ckeditor5): add formatPainter (#7902) 2025-11-30 13:27:15 +00:00
SiriusXT
8cc43cd9a6 docs(user): add format painter 2025-11-30 20:08:27 +08:00
SiriusXT
15190abb69 feat(ckeditor5): add formatPainter 2025-11-30 16:53:14 +08:00
Elian Doran
0b28159e8e
fix(ribbon): formatting toolbar overrides edited notes activation (closes #7900) 2025-11-30 10:43:06 +02:00
Elian Doran
d9e8f8e69b
refactor(options): remove unnecessary ribbon activation option 2025-11-30 10:41:26 +02:00
Elian Doran
fa224e46bc
chore(deps): update dependency typedoc to v0.28.15 (#7897) 2025-11-30 09:41:04 +02:00
Elian Doran
06320953e8
chore(deps): update dependency webdriverio to v9.21.0 (#7898) 2025-11-30 09:40:31 +02:00
SiriusXT
2163334c4f fix(css): the import-markdown icon was displayed as a black square 2025-11-30 15:27:33 +08:00
SiriusXT
f5d180af6b fix(markdown): show 'import successful' when canceling markdown import 2025-11-30 15:27:08 +08:00
renovate[bot]
d676084cb3
chore(deps): update dependency webdriverio to v9.21.0 2025-11-30 02:49:59 +00:00
renovate[bot]
0cb5941be0
chore(deps): update dependency typedoc to v0.28.15 2025-11-30 02:49:23 +00:00
Adorian Doran
732494dfc5 client/keyboard shortcuts cheatsheet: add an edit button 2025-11-30 02:54:51 +02:00
Adorian Doran
b8748b856a client/note menu: use proper style for development-only actions section header 2025-11-30 02:34:09 +02:00
Adorian Doran
cc71f15700 client/quick edit: remove fixed toolbar transparency 2025-11-30 02:17:43 +02:00
Adorian Doran
124ef640b1 client/quick edit: tweak layout 2025-11-30 02:04:40 +02:00
Adorian Doran
f5e3df0cd2 client/quick edit: add placeholder for "open in full editor" custom title bar button 2025-11-30 01:54:28 +02:00
Adorian Doran
c8431181c8 client/dialogs/custom title bar buttons: tweak 2025-11-30 01:52:55 +02:00
Adorian Doran
07fb5ab017 client/dialogs: add support for custom title bar buttons 2025-11-30 01:44:20 +02:00
Adorian Doran
6735b257b4 style/promoted color attributes: fix the layout on narrow width 2025-11-30 01:09:07 +02:00
Adorian Doran
cef242a9ce style/button group: fix the appearance of the active button 2025-11-30 00:55:34 +02:00
Elian Doran
2923d917e5
Translations update from Hosted Weblate (#7891) 2025-11-29 22:58:03 +02:00
Elian Doran
1d1639e5e1
feat(mobile/split): limit to maximum two splits per tab 2025-11-29 21:27:27 +02:00
Elian Doran
6ab05fdb76
chore(mobile/split): improve obtaining of the note context 2025-11-29 21:17:03 +02:00
Elian Doran
91ae8c0aaf
feat(mobile/split): add a border between splits 2025-11-29 21:14:03 +02:00
Elian Doran
fcb69c0190
fix(mobile/split): errors due to split 2025-11-29 21:12:55 +02:00
Elian Doran
2cf6fe4352
feat(mobile/split): option to close split 2025-11-29 21:11:16 +02:00
Elian Doran
e3a2623a53
feat(mobile/split): layout horizontally on tablet 2025-11-29 21:06:11 +02:00
Elian Doran
e0c0a423c1
feat(mobile/split): layout vertically on mobile 2025-11-29 21:04:22 +02:00
Elian Doran
fd99246c49
feat(mobile/split): add an option to create new split 2025-11-29 21:04:13 +02:00
Elian Doran
d247edd870
feat(mobile/split): add split container to layout 2025-11-29 21:02:53 +02:00
Hosted Weblate
9a76a9069c
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/
2025-11-29 20:01:42 +01:00
pythaac
8e1d796870
Translated using Weblate (Korean)
Currently translated at 44.7% (68 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ko/
2025-11-29 20:01:38 +01:00
Andreas H.
8b0d4e5c3b
Translated using Weblate (German)
Currently translated at 100.0% (152 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/de/
2025-11-29 20:01:37 +01:00
Elian Doran
b9e257a39d
refactor(client): redundant interface 2025-11-29 20:18:43 +02:00
Elian Doran
e7eaa5fd58
fix(mobile): global menu backdrop on tablet view 2025-11-29 19:49:38 +02:00
Elian Doran
c9aa992e73
fix(read-only-bar): displayed when viewing attachments 2025-11-29 19:40:00 +02:00
Elian Doran
f325930f68
chore(read-only-bar): use in-app help 2025-11-29 19:37:38 +02:00
Adorian Doran
1346ffb77e Merge branch 'main' of https://github.com/TriliumNext/Trilium 2025-11-29 18:50:24 +02:00
Adorian Doran
3378746530 style: disable text selection in UI 2025-11-29 18:50:16 +02:00
Elian Doran
ce2d94f04e
Resolve focus issues within split pane (#7877) 2025-11-29 18:34:26 +02:00
Elian Doran
b3c2a1e6c5
fix(insertDateTime): unable to insert date/time via quick editor or s… (#7889) 2025-11-29 18:30:28 +02:00
Elian Doran
dbf63787da
Merge branches 'main' and 'main' of ssh://github.com/TriliumNext/trilium 2025-11-29 18:08:19 +02:00
Elian Doran
88a7ebef69
fix(quick-edit): background broke for colors with no hue 2025-11-29 18:07:24 +02:00
Adorian Doran
a716151dd9 Merge branch 'main' of https://github.com/TriliumNext/Trilium 2025-11-29 18:04:53 +02:00
Adorian Doran
7462f1b7a5 style/empty tab: improve layout 2025-11-29 18:04:45 +02:00
Elian Doran
ec76b9dc5c
chore(quick-edit): increase max-width on mobile 2025-11-29 18:01:07 +02:00
Elian Doran
79cd96ade9
style(context_menu): improve submenu separator style 2025-11-29 17:47:26 +02:00
Elian Doran
a5b84406be
style(context_menu): improve submenu bg on mobile 2025-11-29 17:35:37 +02:00
Elian Doran
8c1a04c4b2
fix(mobile): shortcut keyboard + visible 2025-11-29 17:32:32 +02:00
Elian Doran
ee81037173
feat(quick_edit): smooth transition between colors 2025-11-29 17:26:17 +02:00
Elian Doran
453349be26
feat(quick_edit): seamless transition between color changes 2025-11-29 17:19:43 +02:00
Elian Doran
81a9e06b23
feat(quick_edit): basic reactivity to color changes 2025-11-29 17:19:43 +02:00
Elian Doran
7d8af0f252
refactor(client): use var for modal max height 2025-11-29 17:19:43 +02:00
Elian Doran
a68cd7526b
style(mobile): improve quick edit max height 2025-11-29 17:19:43 +02:00
Elian Doran
470ca3b6dc
style(mobile): improve quick edit max width 2025-11-29 17:19:43 +02:00
Elian Doran
e8bae61afc
style(mobile): center modals on tablet view 2025-11-29 17:19:43 +02:00
Elian Doran
c1f663a200
style(mobile): no bottom border radius on modals 2025-11-29 17:19:43 +02:00
Elian Doran
22b2e21df0
Translations update from Hosted Weblate (#7887) 2025-11-29 17:11:15 +02:00
SiriusXT
5f19710791 fix(insertDateTime): unable to insert date/time via quick editor or shortcut 2025-11-29 22:40:49 +08:00
pythaac
d3f3ff4eab
Translated using Weblate (Korean)
Currently translated at 43.4% (66 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ko/
2025-11-29 14:02:26 +00:00
noobhjy
5af7425cae
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (1637 of 1637 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hans/
2025-11-29 14:02:25 +00:00
Elian Doran
fe10c9f8c8
fix(text): strikethrough icon appears disabled 2025-11-29 15:34:43 +02:00
Elian Doran
cd2a085d00
fix(type_widgets/notemap): bottom part not visible 2025-11-29 15:30:17 +02:00
Elian Doran
3c61626370
fix(launch_bar/calendar): tooltip showing over the calendar dropdown 2025-11-29 15:16:43 +02:00
Elian Doran
351fe5848f
fix(launch_bar/calendar): clicking on the edges would dismiss modal 2025-11-29 13:26:48 +02:00
Elian Doran
ca7bbefbdc
fix(launch_bar/calendar): dropdown remains open when switching years 2025-11-29 13:19:49 +02:00
Elian Doran
7094f71e32
refactor(server): remove now unnecessary attachment without size 2025-11-29 13:08:05 +02:00
Elian Doran
88b5e9db87
fix(server): uploading new attachments doesn't report size 2025-11-29 13:03:08 +02:00
Elian Doran
b4ab07bd78
feat(board): add keyboard navigation for "Add column" button 2025-11-29 12:40:41 +02:00
Elian Doran
fd6ad6dce3
fix(type_widgets): partially prevent wrong note type rendering due to async race condition 2025-11-29 12:40:41 +02:00
Elian Doran
ab97068a1d
fix(quick_edit): classic toolbar dropdowns not working 2025-11-29 12:40:41 +02:00
Elian Doran
70fe3b9773
fix(quick_edit): block popup not working 2025-11-29 12:40:41 +02:00
Elian Doran
1fe8079fd5
fix(type_widgets): empty type widget when hot-reloading NoteDetail 2025-11-29 12:40:41 +02:00
Elian Doran
80627997d1
fix(type_widgets): read-only text sometimes rendering wrong blob 2025-11-29 12:40:41 +02:00
Elian Doran
12abdcaf6c
fix(ribbon): formatting toolbar disappearing after viewing attachments 2025-11-29 12:40:41 +02:00
Elian Doran
a6ed4d92c9
chore(deps): update dependency stylelint to v16.26.1 (#7881) 2025-11-29 12:39:51 +02:00
Elian Doran
0471640f54
fix(deps): update dependency better-sqlite3 to v12.5.0 (#7882) 2025-11-29 12:39:41 +02:00
Elian Doran
4cf3e82fb5
Translations update from Hosted Weblate (#7880) 2025-11-29 12:38:59 +02:00
noobhjy
fbbe999806
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (1637 of 1637 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hans/
2025-11-29 07:41:54 +00:00
Francis C.
76af488d35
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (1637 of 1637 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hant/
2025-11-29 07:41:54 +00:00
Andreas H.
a54d2a5f22
Translated using Weblate (German)
Currently translated at 100.0% (1637 of 1637 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/de/
2025-11-29 07:41:53 +00:00
Sam.Lee
a1df075194
Translated using Weblate (Korean)
Currently translated at 2.4% (40 of 1637 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ko/
2025-11-29 07:41:52 +00:00
Sam.Lee
4de2182b40
Translated using Weblate (Korean)
Currently translated at 42.7% (65 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ko/
2025-11-29 07:41:51 +00:00
Tomas Adamek
6fa88123f1
Translated using Weblate (Czech)
Currently translated at 5.4% (89 of 1637 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/cs/
2025-11-29 07:41:50 +00:00
Sam.Lee
f81dbde15e
Translated using Weblate (Korean)
Currently translated at 21.0% (82 of 389 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ko/
2025-11-29 07:41:50 +00:00
Tomas Adamek
484fbc6b9d
Translated using Weblate (Czech)
Currently translated at 69.0% (105 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/cs/
2025-11-29 07:41:49 +00:00
green
8ba30135a1
Translated using Weblate (Japanese)
Currently translated at 100.0% (1637 of 1637 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-11-29 07:41:48 +00:00
Andreas H.
ba5a72fdad
Translated using Weblate (German)
Currently translated at 100.0% (152 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/de/
2025-11-29 07:41:47 +00:00
Elian Doran
70b39ddadf
fix(mobile/context_menu): global menu not scrollable 2025-11-29 09:40:51 +02:00
Elian Doran
8200c0b0ab
style(mobile/context_menu): improve delimiter color in light theme 2025-11-29 09:36:46 +02:00
Elian Doran
59ebfa6cc7
style(mobile/context_menu): alter submenu separator style 2025-11-29 09:33:11 +02:00
Elian Doran
57b694162d
style(mobile/context_menu): rounded corners for anchored positioning 2025-11-29 09:29:00 +02:00
Elian Doran
2e6bdc225f
style(mobile/context_menu): missing backdrop for global menu 2025-11-29 09:22:51 +02:00
Elian Doran
8ced689432
style(mobile/context_menu): make color picker easier to press 2025-11-29 09:15:28 +02:00
SiriusXT
53a8f6b4c0 Merge branch 'main' into fix/split_pane 2025-11-29 11:39:05 +08:00
SiriusXT
9ae1a55896 chore(react/empty): obtain ntxId via React props instead of DOM query 2025-11-29 11:38:45 +08:00
renovate[bot]
5ecafe214f
fix(deps): update dependency better-sqlite3 to v12.5.0 2025-11-29 02:49:33 +00:00
renovate[bot]
8baf0ad6af
chore(deps): update dependency stylelint to v16.26.1 2025-11-29 02:49:04 +00:00
Elian Doran
3cc64b5764
fix(mobile/context_menu): note color picker not working 2025-11-28 23:43:16 +02:00
Elian Doran
19cf07564f
style(mobile/context_menu): taller height + small animation when expanding items 2025-11-28 23:21:31 +02:00
Elian Doran
5847ce5c14
feat(dev): enable CSS source maps 2025-11-28 23:21:14 +02:00
Elian Doran
a7ad45635e
style(mobile/context_menu): clean up border radiuses 2025-11-28 21:27:06 +02:00
Elian Doran
781215394e
refactor(mobile/context_menu): unify styles 2025-11-28 21:24:51 +02:00
Elian Doran
0aafdca999
style(mobile/context_menu): improve backdrop 2025-11-28 21:21:07 +02:00
Elian Doran
18d3cb6f0c
style(mobile/context_menu): dark submenu style 2025-11-28 21:14:06 +02:00
Elian Doran
263a96e8b7
style(mobile/context_menu): improve submenu style 2025-11-28 20:57:42 +02:00
Elian Doran
27d5009486
style(mobile/context_menu): disable hover color 2025-11-28 20:44:29 +02:00
SiriusXT
4d1a91baa6 Merge branch 'main' into fix/split_pane 2025-11-28 19:49:08 +08:00
SiriusXT
1898efa282 chore(e2e): add Playwright tests for split pane 2025-11-28 19:48:37 +08:00
SiriusXT
648ab4d736 fix(left-pane): only focus the note when toggling left pane visibility if necessary 2025-11-28 19:45:19 +08:00
SiriusXT
407cac588a fix(split): only trigger focusOnDetail when necessary 2025-11-28 19:42:04 +08:00
SiriusXT
210dcfb989 fix(empty): open note in the correct split pane 2025-11-28 19:38:52 +08:00
Elian Doran
2e431b1135
chore(deps): update dependency electron to v38.7.2 (#7873) 2025-11-28 11:26:12 +02:00
Elian Doran
e2ec27250c
chore(deps): update dependency happy-dom to v20.0.11 (#7874) 2025-11-28 08:24:15 +02:00
Elian Doran
1228eda5ea
chore(deps): update pnpm to v10.24.0 (#7875) 2025-11-28 08:23:01 +02:00
renovate[bot]
435794df73
chore(deps): update pnpm to v10.24.0 2025-11-28 01:16:30 +00:00
renovate[bot]
7e3d0639f7
chore(deps): update dependency happy-dom to v20.0.11 2025-11-28 01:16:18 +00:00
renovate[bot]
86b0005821
chore(deps): update dependency electron to v38.7.2 2025-11-28 01:15:07 +00:00
Elian Doran
2fb78275f7
Translations update from Hosted Weblate (#7871) 2025-11-27 21:52:13 +02:00
Elian Doran
98f421c697
Apply suggestions from code review
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-11-27 21:49:17 +02:00
Francis C.
a5572b7d45
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (1635 of 1635 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hans/
2025-11-27 20:42:07 +01:00
Manfred Manni
fdecbaaa6a
Translated using Weblate (German)
Currently translated at 100.0% (389 of 389 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/de/
2025-11-27 20:42:06 +01:00
green
c6afd7fa24
Translated using Weblate (Japanese)
Currently translated at 100.0% (1635 of 1635 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-11-27 20:42:06 +01:00
Tomas Adamek
5cad522a60
Translated using Weblate (Czech)
Currently translated at 5.3% (88 of 1635 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/cs/
2025-11-27 20:42:05 +01:00
Tomas Adamek
82f64677cb
Translated using Weblate (Czech)
Currently translated at 27.2% (106 of 389 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/cs/
2025-11-27 20:42:04 +01:00
Manfred Manni
3ee086a063
Translated using Weblate (German)
Currently translated at 99.7% (1631 of 1635 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/de/
2025-11-27 20:42:03 +01:00
Francis C.
13da444a69
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (1635 of 1635 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hant/
2025-11-27 20:42:02 +01:00
Tomas Adamek
b51ceaaadc
Translated using Weblate (Czech)
Currently translated at 65.1% (99 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/cs/
2025-11-27 20:42:01 +01:00
Elian Doran
2024c72209
i18n(client): two missing translations for dialogs 2025-11-27 21:41:24 +02:00
Elian Doran
b5959c55e1
chore(client): remove redundant log 2025-11-27 21:12:47 +02:00
Elian Doran
16f0ac97f4
fix(ckeditor): revert workaround which breaks shift-selection 2025-11-27 20:39:59 +02:00
Elian Doran
073c02ee0c
fix(ckeditor): Cmd+Up/Down not working properly 2025-11-27 20:00:15 +02:00
Elian Doran
786f0db4bb
fix(ckeditor): move block interfering with normal shortcut (closes #6964) 2025-11-27 19:37:21 +02:00
Elian Doran
6958e4b74f
feat(desktop): collapse spacing in full screen 2025-11-27 18:24:00 +02:00
Elian Doran
22c4fba665
docs(user): improve documentation on tree keyboard shortcuts 2025-11-27 14:22:45 +02:00
Elian Doran
f7c0e56cec
Translations update from Hosted Weblate (#7867) 2025-11-27 07:35:08 +02:00
Elian Doran
5f423cd22e
Apply suggestions from code review
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-11-27 07:34:46 +02:00
Hosted Weblate
282b3a109c
Update translation files
Updated by "Remove blank strings" add-on in Weblate.

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/
2025-11-27 05:14:32 +00:00
Tomas Adamek
dddb051d8b
Translated using Weblate (Czech)
Currently translated at 26.3% (40 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/cs/
2025-11-27 05:14:31 +00:00
Vedat Botuk
63d3706003
Translated using Weblate (Turkish)
Currently translated at 7.2% (11 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/tr/
2025-11-27 05:14:30 +00:00
Tomas Adamek
22ca2494f5
Translated using Weblate (Czech)
Currently translated at 18.5% (72 of 389 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/cs/
2025-11-27 05:14:29 +00:00
Aitanuqui
a0f02b6877
Translated using Weblate (Spanish)
Currently translated at 100.0% (1635 of 1635 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/es/
2025-11-27 05:14:28 +00:00
Vedat Botuk
487fcff61f
Translated using Weblate (Turkish)
Currently translated at 9.3% (11 of 118 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/tr/
2025-11-27 05:14:27 +00:00
Elian Doran
bfb8897188
Translated using Weblate (Romanian)
Currently translated at 100.0% (1635 of 1635 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ro/
2025-11-27 05:14:26 +00:00
Francis C.
ce1ccf378a
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (1635 of 1635 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hant/
2025-11-27 05:14:25 +00:00
Francis C.
96d5ee3d46
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (1635 of 1635 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hans/
2025-11-27 05:14:23 +00:00
Tomas Adamek
6f3771e7cd
Translated using Weblate (Czech)
Currently translated at 25.6% (39 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/cs/
2025-11-27 05:14:22 +00:00
Tomas Adamek
e6b00b05a2
Translated using Weblate (Czech)
Currently translated at 3.3% (54 of 1635 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/cs/
2025-11-27 05:14:21 +00:00
Tomas Adamek
148d0afe81
Translated using Weblate (Czech)
Currently translated at 11.0% (43 of 389 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/cs/
2025-11-27 05:14:20 +00:00
Aitanuqui
c5d63dbdb9
Translated using Weblate (Spanish)
Currently translated at 99.7% (1631 of 1635 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/es/
2025-11-27 05:14:18 +00:00
Tomas Adamek
1af072b059
Translated using Weblate (Czech)
Currently translated at 36.4% (43 of 118 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/cs/
2025-11-27 05:14:17 +00:00
Hosted Weblate
a6a8fdd2f8
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/
2025-11-27 05:14:16 +00:00
Andreas Haan
8836021ff9
Translated using Weblate (German)
Currently translated at 99.9% (1631 of 1632 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/de/
2025-11-27 05:14:14 +00:00
Andreas Haan
915803c5be
Translated using Weblate (German)
Currently translated at 99.7% (388 of 389 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/de/
2025-11-27 05:14:13 +00:00
green
cd95d43457
Translated using Weblate (Japanese)
Currently translated at 100.0% (1632 of 1632 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-11-27 05:14:11 +00:00
Andreas Haan
35af5fd13c
Translated using Weblate (German)
Currently translated at 39.4% (60 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/de/
2025-11-27 05:14:10 +00:00
Elian Doran
35e602f75f
style(mobile/context_menu): increase size and padding 2025-11-27 07:13:23 +02:00
Elian Doran
b4f0a1acc0
style(mobile/context_menu): card-style design on next theme 2025-11-26 21:54:35 +02:00
Elian Doran
7b7e9f6868
fix(context_menu): no bottom padding on mobile 2025-11-26 21:26:52 +02:00
Elian Doran
de3892950c
fix(context_menu): 1px overflow in height on mobile 2025-11-26 21:24:03 +02:00
Elian Doran
5c53826da3
fix(context_menu): color picker not dismissing on mobile 2025-11-26 21:20:27 +02:00
Elian Doran
d358073081
fix(global_menu): toggling advanced hides the menu most of the time 2025-11-26 20:44:53 +02:00
Elian Doran
d2d7fd7c4c
fix(context_menu): toggling submenu hides the menu most of the time 2025-11-26 20:35:02 +02:00
Elian Doran
706da768e2
chore(collections/board): hide "Add new column" while loading 2025-11-26 19:47:15 +02:00
Elian Doran
408073ee19
fix(note_list): subtree leaking into classic collections 2025-11-26 19:11:43 +02:00
Elian Doran
2695b7fc38
fix(print): included notes not rendering 2025-11-26 15:26:33 +02:00
Elian Doran
c32b6393af
refactor(client): split text content rendering to separate module 2025-11-26 15:18:02 +02:00
Elian Doran
abbb4e793f
feat(dev): action to open print page easily 2025-11-26 15:10:17 +02:00
Elian Doran
e4fae2d660
docs(user): document expanding/collapsing in list collection 2025-11-26 14:27:12 +02:00
Elian Doran
dc572c3815
fix(ribbon): tooltip for expand button 2025-11-26 11:59:46 +02:00
Elian Doran
c65b03db41
chore(collections/list): use translations for expand depth 2025-11-26 11:57:06 +02:00
Elian Doran
45d2e1f5e2
feat(collections/list): checkboxes for expand depth 2025-11-26 11:54:08 +02:00
Elian Doran
b658f5bd0e
feat(collections/list): adjustable expansion depth (closes #7669) 2025-11-26 10:36:53 +02:00
Elian Doran
f199d85d5b
chore(react): split button implementation 2025-11-26 10:36:00 +02:00
Elian Doran
445dfaaeb4
chore(deps): update dependency chokidar to v5 (#7866) 2025-11-26 08:07:28 +02:00
Elian Doran
cccd4122c5
chore(deps): update vitest monorepo to v4.0.14 (#7863) 2025-11-26 07:25:42 +02:00
Elian Doran
1fcbe828bd
chore(deps): update dependency @playwright/test to v1.57.0 (#7864) 2025-11-26 07:24:59 +02:00
Elian Doran
e94b78a37b
chore(deps): update dependency @redocly/cli to v2.12.0 (#7865) 2025-11-26 07:24:30 +02:00
renovate[bot]
af7cecb667
chore(deps): update dependency chokidar to v5 2025-11-26 01:13:15 +00:00
renovate[bot]
4068e9c6b8
chore(deps): update dependency @redocly/cli to v2.12.0 2025-11-26 01:12:23 +00:00
renovate[bot]
185c1fcdac
chore(deps): update dependency @playwright/test to v1.57.0 2025-11-26 01:11:33 +00:00
renovate[bot]
29c5d35c08
chore(deps): update vitest monorepo to v4.0.14 2025-11-26 01:10:40 +00:00
Elian Doran
0117f54ef8
fix(shortcuts): default shortcuts for nav in macOS (closes #3708) 2025-11-25 22:30:42 +02:00
Elian Doran
56d41916c4
Merge branch 'main' of https://github.com/TriliumNext/Trilium 2025-11-25 21:09:00 +02:00
Elian Doran
fddf73b1bb
fix(collections/table): colons in attribute name not working (closes #7860) 2025-11-25 21:03:27 +02:00
Elian Doran
d670c2ae5e
Translations update from Hosted Weblate (#7862) 2025-11-25 20:40:30 +02:00
green
6f5c9eb600
Translated using Weblate (Japanese)
Currently translated at 100.0% (1631 of 1631 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-11-25 17:51:44 +00:00
green
49c416c90d
Translated using Weblate (Japanese)
Currently translated at 100.0% (152 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ja/
2025-11-25 17:51:43 +00:00
Giovi
8fef468eb9
Translated using Weblate (Italian)
Currently translated at 100.0% (1631 of 1631 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/it/
2025-11-25 17:51:42 +00:00
Elian Doran
976b1e1e0f
fix(note_list): not rendering correctly when switching notes 2025-11-25 19:51:24 +02:00
Elian Doran
d6de7cca96
Search selected text in trilium (#7859) 2025-11-25 19:44:01 +02:00
contributor
fb02751bdd note context menu: change search wording to match other menu items 2025-11-25 16:24:55 +02:00
Elian Doran
3fb5c52af1
Translations update from Hosted Weblate (#7861) 2025-11-25 16:09:39 +02:00
Hosted Weblate
18d17570f6
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-11-25 14:47:04 +01:00
Elian Doran
fa5eb16054
fix(note_autocomplete): regression in board entry 2025-11-25 15:46:41 +02:00
contributor
b1c77b508a note context menu: cache appContext import call 2025-11-25 13:25:56 +02:00
contributor
b982ca2c5b note context menu: search selected text in Trilium 2025-11-25 13:25:51 +02:00
Elian Doran
219753039d
fix(mermaid): one more case of "Matrix is not inversible" 2025-11-25 08:56:31 +02:00
Elian Doran
c16f9af6a9
feat(popup_editor): add read-only bar 2025-11-25 08:34:35 +02:00
Elian Doran
a544b0dc19
chore(popup_editor): improve alignment for read-only text 2025-11-25 08:31:44 +02:00
Elian Doran
a398f07f9f
fix(type_widgets): double wrapper for read-only text 2025-11-25 08:31:26 +02:00
Elian Doran
7ecdee7a89
refactor(popup_editor): use simpler mechanism for retrieving note ID 2025-11-25 08:24:26 +02:00
Elian Doran
24361ccd97
fix(popup_editor): respect user's read-only choice (closes #7715) 2025-11-25 08:19:48 +02:00
Elian Doran
3afe6df9f2
Translations update from Hosted Weblate (#7856) 2025-11-25 07:30:04 +02:00
vcodesai
df7f79004d
Translated using Weblate (Greek)
Currently translated at 100.0% (152 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/el/
2025-11-25 05:14:44 +00:00
Hosted Weblate
405bce9f82
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-11-25 05:14:43 +00:00
Elian Doran
b9ef7af791
chore(deps): update dependency @anthropic-ai/sdk to v0.71.0 (#7854) 2025-11-25 07:14:21 +02:00
Elian Doran
761891abe9
chore(deps): update typescript-eslint monorepo to v8.48.0 (#7855) 2025-11-25 07:13:56 +02:00
Elian Doran
6a52637695
chore(deps): update dependency rcedit to v5.0.2 (#7853) 2025-11-25 07:13:33 +02:00
renovate[bot]
b4b957d2c3
chore(deps): update typescript-eslint monorepo to v8.48.0 2025-11-25 01:55:47 +00:00
renovate[bot]
dda4a0a887
chore(deps): update dependency @anthropic-ai/sdk to v0.71.0 2025-11-25 01:54:50 +00:00
renovate[bot]
b069a936ab
chore(deps): update dependency rcedit to v5.0.2 2025-11-25 01:53:49 +00:00
Elian Doran
15c088ec21
feat(popup_editor): hide some unwanted floating buttons 2025-11-24 21:56:16 +02:00
Elian Doran
015d70afb6
feat(popup_editor): enable floating buttons 2025-11-24 21:45:33 +02:00
Elian Doran
2158f69c09
feat(popup_editor): seamless mermaid code editor 2025-11-24 21:38:34 +02:00
Elian Doran
c49c5fd58c
fix(popup_editor): full-height taller than 100% 2025-11-24 21:33:17 +02:00
Elian Doran
26be131b4b
fix(mermaid): matrix not inversible 2025-11-24 21:25:27 +02:00
Elian Doran
f8533eb2c6
feat(popup_editor): immersive code notes editing 2025-11-24 19:50:51 +02:00
Elian Doran
4cc545659b
fix(popup_editor): keep in DOM 2025-11-24 19:38:18 +02:00
Elian Doran
70a0b5c22f
fix(promoted_attributes): "attribute is not owned" in auto-complete after switching notes 2025-11-24 18:58:52 +02:00
Elian Doran
a2976d9ad5
refactor(mime): proper typechecking of supported MIME types 2025-11-24 18:58:21 +02:00
Elian Doran
01b05f186e
chore(options/code): hide tooltip for plain text 2025-11-24 18:43:07 +02:00
Elian Doran
79a4da9db8
docs(dev): refresh documentation on syntax highlighting 2025-11-24 18:39:51 +02:00
Elian Doran
84890fd5ad
feat(mime): support SAS ABAP (closes #7851) 2025-11-24 18:39:34 +02:00
Elian Doran
29f9d0c1cd
chore(mime): fix MD language code for Batch files 2025-11-24 18:11:31 +02:00
Elian Doran
95169bbc84
feat(mime): support KDL (closes #7848) 2025-11-24 18:06:24 +02:00
Elian Doran
9a2979e577
chore(options/code): improve tooltip positioning & speed 2025-11-24 17:45:19 +02:00
Elian Doran
9f381a7b30
feat(options/code): display tooltip for syntax highlighting support 2025-11-24 17:43:02 +02:00
Elian Doran
c07ad348bd
Merge branch 'main' of https://github.com/TriliumNext/Trilium 2025-11-24 10:56:43 +02:00
Elian Doran
d7ae2e4307
fix(search): double results if search has inheritable viewType 2025-11-24 10:56:39 +02:00
Elian Doran
71b86b3cbc
Fixes #7826 CORP (Resource Policy) defaults to same-origin (#7830) 2025-11-24 09:21:58 +02:00
Elian Doran
621e8078d9
fix(geomap): map not loading at zero zoom 2025-11-24 09:18:16 +02:00
Lucas
7155ab8bdc
Merge branch 'TriliumNext:main' into main 2025-11-23 13:24:24 -08:00
Elian Doran
0a3e788d21
fix(client/collections): collections not visible after viewing attachments 2025-11-23 21:53:47 +02:00
Elian Doran
f83c46d1c7
fix(client/promoted_attributes): unnecessary space when empty 2025-11-23 21:51:48 +02:00
Elian Doran
11932353f7
fix(client/attachments): scroll padding reducing in size after visiting attachments 2025-11-23 21:47:27 +02:00
Elian Doran
ed373107c2
fix(client/attachments): full-height attachment not displayed correctly (closes #7847) 2025-11-23 21:46:04 +02:00
Elian Doran
1cca15ca5d
Revert "fix(react/promoted_attributes): removing relation sometimes not refreshing"
This reverts commit 320f064775926a9512db91f077fd9a532f6b47da.
2025-11-23 21:31:40 +02:00
Elian Doran
11e59a970e
fix(deps): update dependency mind-elixir to v5.3.7 (#7844) 2025-11-23 18:13:19 +02:00
Elian Doran
5abb69d022
chore(mindmap): add Romanian locale 2025-11-23 17:23:07 +02:00
Elian Doran
dc1d497ff3
Port promoted attributes to React (#7846) 2025-11-23 16:43:52 +02:00
Elian Doran
7f909fa098
chore(promoted_attributes): address review 2025-11-23 16:34:38 +02:00
Elian Doran
320f064775
fix(react/promoted_attributes): removing relation sometimes not refreshing 2025-11-23 14:59:23 +02:00
Elian Doran
c9b1691998
fix(react/promoted_attributes): non-existing attribute ID when deleting relations 2025-11-23 14:42:31 +02:00
Elian Doran
08ade8371c
fix(react/promoted_attributes): unable to read trim at server level 2025-11-23 13:55:25 +02:00
Elian Doran
081ac2d109
chore(react/quick_edit): reintegrate promoted attributes 2025-11-23 13:44:24 +02:00
Elian Doran
3fde546b83
feat(react/promoted_attributes): debounce label editing 2025-11-23 13:43:40 +02:00
Elian Doran
a12b3cb51a
chore(react/promoted_attributes): fix type issue 2025-11-23 13:40:05 +02:00
Elian Doran
6160945b9e
chore(react/promoted_attributes): bring back reacting to changes 2025-11-23 13:35:16 +02:00
Elian Doran
6a126009a8
refactor(react/promoted_attributes): deduplicate server API typings 2025-11-23 13:15:33 +02:00
Elian Doran
891e71aec6
refactor(react/promoted_attributes): remove unnecessary action cell 2025-11-23 13:13:15 +02:00
Elian Doran
cd164049b7
refactor(react/promoted_attributes): use simplified class name handling 2025-11-23 13:12:42 +02:00
Elian Doran
709a47bc6b
chore(react/promoted_attributes): handle relations 2025-11-23 13:11:12 +02:00
Elian Doran
9c6cd80867
chore(react/promoted_attributes): improve boolean handling 2025-11-23 12:56:43 +02:00
Elian Doran
832d9a2ab8
chore(react/promoted_attributes): handle URL open button 2025-11-23 12:46:06 +02:00
Elian Doran
8d4e30a2e4
chore(react/promoted_attributes): handle color picker 2025-11-23 12:32:13 +02:00
Elian Doran
baf41eb104
chore(react/promoted_attributes): handle input steps 2025-11-23 12:11:18 +02:00
Elian Doran
7f0fe1681b
chore(react/promoted_attributes): integrate value change listener 2025-11-23 11:57:31 +02:00
Elian Doran
49189bc63e
chore(react/promoted_attributes): map promoted attribute types 2025-11-23 11:38:53 +02:00
Elian Doran
87f30ed3d5
chore(react/promoted_attributes): add back text label autocomplete 2025-11-23 11:33:14 +02:00
Elian Doran
aca390ee19
chore(react/promoted_attributes): add more attributes to the input 2025-11-23 11:24:44 +02:00
Elian Doran
598bb6d742
chore(react/promoted_attributes): add logic to remove multi labels 2025-11-23 11:19:41 +02:00
Elian Doran
33b19e40e0
chore(react/promoted_attributes): add logic to add new labels 2025-11-23 10:46:56 +02:00
Elian Doran
5b9401fafe
chore(react/promoted_attributes): add logic to filter out tables 2025-11-23 10:25:57 +02:00
Elian Doran
9bed6b7e22
chore(react/promoted_attributes): port multiplicity buttons (without implementation) 2025-11-23 10:22:58 +02:00
Elian Doran
aca003c554
Translations update from Hosted Weblate (#7845) 2025-11-23 09:56:04 +02:00
Hosted Weblate
3c806558eb
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-11-23 07:51:10 +00:00
Elian Doran
d195d46f8f
chore(deps): update dependency rollup-plugin-webpack-stats to v2.1.8 (#7843) 2025-11-23 09:50:54 +02:00
renovate[bot]
755abc6487
fix(deps): update dependency mind-elixir to v5.3.7 2025-11-23 00:36:56 +00:00
renovate[bot]
718282bae3
chore(deps): update dependency rollup-plugin-webpack-stats to v2.1.8 2025-11-23 00:36:05 +00:00
lzinga
8cc4d08eae fix(config): update corsResourcePolicy type to string, typecheck did not like previous method 2025-11-22 15:54:21 -08:00
Lucas
0bcc02dfab
Merge branch 'TriliumNext:main' into main 2025-11-22 15:53:36 -08:00
Elian Doran
33c3fb7de0
chore(react/promoted_attributes): reintroduce labels 2025-11-22 22:25:32 +02:00
Elian Doran
d99b8f5864
chore(promoted_attributes): build list of cells 2025-11-22 22:10:51 +02:00
Elian Doran
98bf63e94b
chore(promoted_attributes): start with empty widget 2025-11-22 21:58:52 +02:00
Elian Doran
2d8b1299b3
Port Quick edit popup to React (#7840) 2025-11-22 21:53:19 +02:00
Elian Doran
5edc4abfb4
chore(quick_edit): address requested changes 2025-11-22 21:37:41 +02:00
Elian Doran
26f7264f3c
chore(client): fix typecheck 2025-11-22 21:37:37 +02:00
Elian Doran
56c82d7f0f
chore(quick_edit): address requested changes 2025-11-22 21:20:24 +02:00
Elian Doran
6946da3571
chore(mermaid): avoid crash if "Matrix is not invertible" 2025-11-22 21:07:17 +02:00
Elian Doran
2985c762e6
chore(quick_edit): add back most of the components 2025-11-22 21:00:55 +02:00
Elian Doran
8001d940eb
chore(quick_edit): bring back coloring 2025-11-22 20:43:57 +02:00
Elian Doran
2f440eba37
chore(quick_edit): bring back focus 2025-11-22 19:34:23 +02:00
Elian Doran
bb9cb2fb75
fix(quick_edit): note context not injected on first render 2025-11-22 19:25:35 +02:00
Elian Doran
5531c15126
chore(quick_edit): get note content to render 2025-11-22 19:19:16 +02:00
Elian Doran
29f049c411
chore(quick_edit): inject note context 2025-11-22 19:11:20 +02:00
Elian Doran
31180afbd1
react(quick_edit): set up empty dialog 2025-11-22 19:07:50 +02:00
Elian Doran
435b856b72
fix(quick_edit): keyboard shortcuts triggering on wrong editor 2025-11-22 18:35:18 +02:00
Adorian Doran
af62526b92 client/context menu: fix data type errors 2025-11-22 13:43:40 +02:00
Adorian Doran
beb7d09aee client/tree context menu: improve handling the case when the note color picker is not available 2025-11-22 13:35:36 +02:00
Adorian Doran
b4b1b7a3fa client/context menus: skip consecutive separators 2025-11-22 13:33:48 +02:00
Elian Doran
d0342598c4
Translations update from Hosted Weblate (#7838) 2025-11-22 12:40:12 +02:00
Francis C.
4a71b00b71
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (1628 of 1628 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hant/
2025-11-22 10:39:04 +00:00
green
268bbf3b9e
Translated using Weblate (Japanese)
Currently translated at 100.0% (1628 of 1628 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-11-22 10:39:03 +00:00
Marc
24cdeb06e8
Translated using Weblate (French)
Currently translated at 99.2% (1616 of 1628 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/fr/
2025-11-22 10:39:02 +00:00
Marc
6b64d85db0
Translated using Weblate (French)
Currently translated at 97.3% (148 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/fr/
2025-11-22 10:39:01 +00:00
Francis C.
08e542dfb3
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (1628 of 1628 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hans/
2025-11-22 10:39:00 +00:00
Elian Doran
8b997cffdd
fix(collections/board): mouse horizontal scroll no longer working 2025-11-22 12:37:08 +02:00
Elian Doran
33aece6f96
fix(collections): flicker when adding new entries 2025-11-22 12:16:48 +02:00
Elian Doran
6040eea3bd
fix(text): note with empty table carries over to new notes 2025-11-22 11:52:16 +02:00
Elian Doran
9b3ca65492
fix(text): classic toolbar broken on mobile due to prior change 2025-11-22 11:37:34 +02:00
Elian Doran
c76f368fa0
fix(text): classic toolbar sometimes not showing 2025-11-22 11:21:51 +02:00
Elian Doran
664d28f105
docs(scripting): remove workaround for sidebar visibility 2025-11-22 11:03:00 +02:00
Elian Doran
7daee36d3e
fix(toc): table of contents not rendering for doc notes 2025-11-22 10:59:50 +02:00
Elian Doran
5fc10fe041
chore(react/sidebar): basic right panel widget implementation 2025-11-22 10:58:51 +02:00
Elian Doran
6692de33b1
fix(sidebar): not displayed if items are enabled from the start 2025-11-22 10:58:46 +02:00
Elian Doran
494bd425af
feat(print): avoid error message for print job cancelled 2025-11-22 10:13:46 +02:00
Elian Doran
135ce2285d
feat(collections): don't load all collection types at once 2025-11-22 10:10:37 +02:00
Elian Doran
be2e82788f
chore(deps): update dependency @anthropic-ai/sdk to v0.70.1 (#7816) 2025-11-22 09:49:28 +02:00
Elian Doran
e84fb63343
fix(deps): update dependency mime-types to v3.0.2 (#7820) 2025-11-22 09:49:09 +02:00
Elian Doran
97422c1d7a
chore(deps): update vitest monorepo to v4.0.13 (#7835) 2025-11-22 09:48:40 +02:00
renovate[bot]
66cc739bb2
chore(deps): update dependency @anthropic-ai/sdk to v0.70.1 2025-11-22 07:12:56 +00:00
renovate[bot]
790454f194
chore(deps): update vitest monorepo to v4.0.13 2025-11-22 07:10:46 +00:00
Elian Doran
d751966078
chore(server/mime): remove mp4 workaround 2025-11-22 09:10:41 +02:00
renovate[bot]
a8e9f7b445
fix(deps): update dependency mime-types to v3.0.2 2025-11-22 07:08:13 +00:00
Elian Doran
144afc346d
chore(deps): update dependency express-openid-connect to v2.19.3 (#7834) 2025-11-22 09:07:15 +02:00
Elian Doran
63854156eb
chore(deps): update dependency stylelint to v16.26.0 (#7837) 2025-11-22 09:06:15 +02:00
Elian Doran
7800e76b26
fix(deps): update dependency better-sqlite3 to v12.4.6 (#7836) 2025-11-22 09:05:49 +02:00
renovate[bot]
1e5b95f64a
fix(deps): update dependency better-sqlite3 to v12.4.6 2025-11-22 06:05:44 +00:00
renovate[bot]
097e36677a
chore(deps): update dependency stylelint to v16.26.0 2025-11-22 01:42:35 +00:00
renovate[bot]
7e6e10e3ef
chore(deps): update dependency express-openid-connect to v2.19.3 2025-11-22 01:40:32 +00:00
Elian Doran
f72ce697a7
Table printing support (#7833) 2025-11-21 23:11:11 +02:00
Lucas
e6843bc3e0
Merge branch 'main' into main 2025-11-21 12:40:52 -08:00
Elian Doran
5c0cf09c42
chore(print/table): revert back to using the export module only 2025-11-21 22:35:29 +02:00
Elian Doran
ab14bdbb18
chore(print/table): address review 2025-11-21 22:33:48 +02:00
Elian Doran
8dc43dab59
docs(user): update printing documentation 2025-11-21 22:28:43 +02:00
Elian Doran
0c5a6a7548
feat(print/table): integrate with the printing mechanism 2025-11-21 22:17:54 +02:00
Elian Doran
779e2f4633
chore(print/table): monochrome checkboxes 2025-11-21 22:15:56 +02:00
Elian Doran
644e3e200d
chore(print/table): stop copying styles and apply own 2025-11-21 22:15:01 +02:00
Elian Doran
670cc474a4
chore(print/table): grayed out table headers 2025-11-21 22:13:55 +02:00
Elian Doran
c43820776f
fix(print/table): missing title 2025-11-21 22:12:05 +02:00
Elian Doran
749740242e
fix(print/table) formatters not rendering 2025-11-21 22:09:07 +02:00
Elian Doran
f864746b54
feat(print/table): render using internal mechanism 2025-11-21 22:05:22 +02:00
lzinga
42dcd4750a Merge branch 'main' of https://github.com/lzinga/Trilium 2025-11-21 12:00:03 -08:00
lzinga
cb0c6a344f Fixed missing comma 2025-11-21 11:59:57 -08:00
Lucas
d1d652495d
Add default value for CORSRESOURCEPOLICY
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-11-21 11:55:48 -08:00
lzinga
4b574cecf7 feat(config): add CORS Resource Policy environment variable documentation 2025-11-21 11:39:08 -08:00
lzinga
e7dbaf78b5 feat(config): add CORS Resource Policy configuration 2025-11-21 11:30:29 -08:00
Elian Doran
6f83b932b0
feat(print/table): basic implementation using export module 2025-11-21 21:28:42 +02:00
Elian Doran
4552b2b158
fix(geomap): marker color not respected 2025-11-21 20:50:06 +02:00
Elian Doran
5b708e77aa
fix(client/text): wrong strike-through of nested TODOs 2025-11-21 20:20:52 +02:00
Elian Doran
a3f1e46107
Merge branch 'main' of https://github.com/TriliumNext/Trilium into feature/print_progress_reporting 2025-11-21 20:16:43 +02:00
Elian Doran
097808752d
feat(client/print): report progress for presentation printing 2025-11-21 20:15:27 +02:00
Elian Doran
39be268969
chore(client/print): fix types 2025-11-21 20:14:44 +02:00
Elian Doran
6023d53506
feat(print): report progress on export to PDF as well 2025-11-21 20:05:43 +02:00
Elian Doran
1a6e653600
feat(print): support progress report on electron 2025-11-21 19:57:13 +02:00
Elian Doran
586c707e51
feat(print): display progress in toast 2025-11-21 12:24:01 +02:00
Elian Doran
6ca941e8e9
chore(print): basic infrastructure to support reporting progress 2025-11-21 12:06:32 +02:00
Elian Doran
b83675cdd0
chore(deps): update vitest monorepo to v4.0.12 (#7818) 2025-11-21 09:18:46 +02:00
Elian Doran
1a583913a7
chore(css): fix overly narrow empty tab layout on mobile (#7824) 2025-11-21 09:17:43 +02:00
SiriusXT
d98a644b75 chore(css): fix overly narrow empty tab layout on mobile 2025-11-21 14:44:09 +08:00
renovate[bot]
11c0c93fe2
chore(deps): update vitest monorepo to v4.0.12 2025-11-21 06:41:27 +00:00
Elian Doran
6d78867d69
Translations update from Hosted Weblate (#7815) 2025-11-21 08:38:39 +02:00
Flowerlywind
54813b8b93
Translated using Weblate (Vietnamese)
Currently translated at 3.3% (55 of 1625 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/vi/
2025-11-21 06:38:13 +00:00
pythaac
6ab31c67fc
Translated using Weblate (Korean)
Currently translated at 38.8% (59 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ko/
2025-11-21 06:38:12 +00:00
green
69af2ff7e8
Translated using Weblate (Japanese)
Currently translated at 100.0% (1625 of 1625 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-11-21 06:38:11 +00:00
Elian Doran
b505a2a94d
chore(deps): update dependency vite to v7.2.4 (#7817) 2025-11-21 08:38:05 +02:00
Elian Doran
6a5fd0d6f0
fix(deps): update dependency marked to v17.0.1 (#7819) 2025-11-21 08:37:44 +02:00
Elian Doran
e21557645b
chore(deps): update pnpm to v10.23.0 (#7821) 2025-11-21 08:36:43 +02:00
Elian Doran
28cab146f3
chore(deps): update actions/checkout action to v6 (#7822) 2025-11-21 08:36:17 +02:00
renovate[bot]
43df4ae0e7
chore(deps): update actions/checkout action to v6 2025-11-21 00:20:47 +00:00
renovate[bot]
5037027030
chore(deps): update pnpm to v10.23.0 2025-11-21 00:20:40 +00:00
renovate[bot]
5e11684665
fix(deps): update dependency marked to v17.0.1 2025-11-21 00:20:02 +00:00
renovate[bot]
c7793beb0f
chore(deps): update dependency vite to v7.2.4 2025-11-21 00:18:58 +00:00
Adorian Doran
33b9e6d0c1
Add support for changing note colors via UI (#7795) 2025-11-21 02:16:25 +02:00
Adorian Doran
d87e8b729f client/note color picker/clear color cell: fix icon alignment 2025-11-21 02:12:52 +02:00
Adorian Doran
0db08f4c62 client/note color picker: decrease the debouncer interval 2025-11-21 01:30:45 +02:00
Adorian Doran
e9796c9a35 client/note color picker: fix the custom color picker on Safari 2025-11-21 01:29:54 +02:00
Adorian Doran
36350bd71a Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/ui/note-color 2025-11-21 00:02:51 +02:00
Adorian Doran
e53a2255a9 client/tree context menu: relocate the note color picker 2025-11-20 23:55:26 +02:00
Adorian Doran
d42f911df9 client/note color picker: dismiss the menu when a color is clicked 2025-11-20 23:43:08 +02:00
Adorian Doran
1b2d922c3f client/note color picker: tweak style 2025-11-20 23:37:03 +02:00
Adorian Doran
a5c5486474 client/note color picker: tweak style 2025-11-20 23:34:37 +02:00
Adorian Doran
926f0f85f3 client/note color picker: refactor 2025-11-20 23:10:36 +02:00
Elian Doran
63d430c3d9
Translations update from Hosted Weblate (#7811) 2025-11-20 21:54:00 +02:00
Elian Doran
26a009b397
Printable list collection (#7812) 2025-11-20 21:52:55 +02:00
Elian Doran
be115c74c3
chore(print/list): address review 2025-11-20 21:42:50 +02:00
Elian Doran
049721bbfe
docs(user): update limitations for printing/exporting 2025-11-20 21:32:06 +02:00
Elian Doran
8b4e76832f
docs(user): update documentation regarding printing multiple notes 2025-11-20 21:28:55 +02:00
Elian Doran
25a51a71a0
feat(print/list): unlink references to notes that are not printed 2025-11-20 21:20:24 +02:00
Elian Doran
f4d6e98d61
feat(print/list): rewrite links 2025-11-20 21:06:25 +02:00
Elian Doran
eee496a050
chore(print/list): get rid of inner div 2025-11-20 20:59:34 +02:00
Elian Doran
89a83a625b
refactor(print/list): extract into functions 2025-11-20 20:58:50 +02:00
Elian Doran
c17df24a19
refactor(print/list): use separate file 2025-11-20 20:56:55 +02:00
Elian Doran
bbcc2f4be4
feat(print/list): rewrite headings while preserving depth 2025-11-20 20:51:41 +02:00
Elian Doran
5e63d9015f
feat(print/list): start rewriting headings 2025-11-20 20:48:39 +02:00
Elian Doran
4958b89636
feat(print/list): process notes recursively 2025-11-20 20:31:45 +02:00
Elian Doran
f4b6e9c25a
feat(print/list): display parent note title 2025-11-20 20:27:01 +02:00
Elian Doran
a59d407f12
fix(print/list): note content not shown due to race condition 2025-11-20 20:24:19 +02:00
Elian Doran
c95cb79672
chore(print/list): enable print dialog 2025-11-20 20:17:20 +02:00
Elian Doran
73e7fa0f85
chore(print/list): get note content to render 2025-11-20 20:15:44 +02:00
Elian Doran
7f81b83955
chore(print/list): get note titles to render 2025-11-20 20:13:20 +02:00
Hosted Weblate
a42ae62042
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-11-20 19:03:46 +01:00
Elian Doran
165357f444
fix(global_menu): uncaught exception if update request fails (closes #5700) 2025-11-20 19:52:13 +02:00
Adorian Doran
e4c928ae87 client/note color picker: refactor 2025-11-20 19:11:51 +02:00
Elian Doran
d51e3de674
feat(text): strike-through todo items (closes #4269) 2025-11-20 19:10:54 +02:00
Adorian Doran
b0476c7017 client/note color picker: refactor 2025-11-20 18:49:47 +02:00
Adorian Doran
1de9f715fa client/note color picker: refactor 2025-11-20 18:46:27 +02:00
Adorian Doran
f15e048763 client/note color picker menu item: refactor stylesheet 2025-11-20 18:43:16 +02:00
Adorian Doran
422b324f7c client/note color picker menu item: add tooltips 2025-11-20 18:15:56 +02:00
Adorian Doran
fb163367d4 client/note color picker menu item: refactor 2025-11-20 17:50:32 +02:00
Adorian Doran
c91eec8b3e client/note color picker menu item: add a new color to the palette 2025-11-20 17:42:36 +02:00
Elian Doran
c16eee79d4
fix(share): broken reference links in static HTML export 2025-11-20 14:50:52 +02:00
Elian Doran
1e86d85035
fix(share): some reference links appear with [missing note] 2025-11-20 14:41:00 +02:00
Elian Doran
abfc2fea3e
feat(print): render inline mermaid 2025-11-20 14:30:04 +02:00
Elian Doran
991d61600d
fix(server): redundant CSS import (closes #7772) 2025-11-20 14:30:04 +02:00
Elian Doran
0f4713bddc
chore(deps): update dependency @smithy/middleware-retry to v4.4.12 (#7796) 2025-11-20 11:25:40 +02:00
Elian Doran
51205fffa0
fix(deps): update dependency i18next to v25.6.3 (#7801) 2025-11-20 11:24:27 +02:00
renovate[bot]
9f4fd92452
fix(deps): update dependency i18next to v25.6.3 2025-11-20 06:54:46 +00:00
Elian Doran
354fccab8b
Translations update from Hosted Weblate (#7803) 2025-11-20 08:53:02 +02:00
yunus uçan
a6ba87c2f8
Translated using Weblate (Turkish)
Currently translated at 4.3% (70 of 1625 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/tr/
2025-11-20 07:52:04 +01:00
yunus uçan
ae8aa0374f
Translated using Weblate (Turkish)
Currently translated at 3.0% (12 of 389 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/tr/
2025-11-20 07:52:03 +01:00
yunus uçan
dc5e073715
Translated using Weblate (Turkish)
Currently translated at 3.2% (5 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/tr/
2025-11-20 07:52:03 +01:00
Hosted Weblate
8c68ff5419
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-11-20 07:52:02 +01:00
Elian Doran
bc10408729
chore(deps): update dependency @stylistic/eslint-plugin to v5.6.1 (#7797) 2025-11-20 08:51:54 +02:00
renovate[bot]
96b059f657
chore(deps): update dependency @smithy/middleware-retry to v4.4.12 2025-11-20 06:51:48 +00:00
Elian Doran
4db2ae53cb
chore(deps): update dependency lint-staged to v16.2.7 (#7799) 2025-11-20 08:51:27 +02:00
Elian Doran
f7308f53d3
chore(deps): update dependency rimraf to v6.1.2 (#7800) 2025-11-20 08:51:00 +02:00
Elian Doran
17fbd78b97
chore(deps): update dependency electron to v38.7.1 (#7798) 2025-11-20 08:50:42 +02:00
Elian Doran
3ad03ebc1d
fix(deps): update dependency react-i18next to v16.3.5 (#7802) 2025-11-20 08:49:42 +02:00
renovate[bot]
32e4e69930
fix(deps): update dependency react-i18next to v16.3.5 2025-11-20 02:04:09 +00:00
renovate[bot]
b20f7aca53
chore(deps): update dependency rimraf to v6.1.2 2025-11-20 02:01:35 +00:00
renovate[bot]
e72ee606fd
chore(deps): update dependency lint-staged to v16.2.7 2025-11-20 02:01:27 +00:00
renovate[bot]
1386d1ae32
chore(deps): update dependency electron to v38.7.1 2025-11-20 02:00:10 +00:00
renovate[bot]
903d678f30
chore(deps): update dependency @stylistic/eslint-plugin to v5.6.1 2025-11-20 01:59:14 +00:00
Adorian Doran
828a786414 client/note color picker menu item: improve 2025-11-20 01:35:44 +02:00
Elian Doran
3ee8e7b755
fix(server): note type not changed for webview template (closes #7557) 2025-11-19 22:37:41 +02:00
Elian Doran
0d0448d86b
fix(scripting): RightPanelWidget requiring async doRenderBody (closes #7778) 2025-11-19 22:10:42 +02:00
Elian Doran
5da4762f40
Translations update from Hosted Weblate (#7793) 2025-11-19 17:20:26 +02:00
Elian Doran
36bcb2ce92
Update apps/client/src/translations/it/translation.json
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-11-19 17:19:27 +02:00
anotheranonymoususer
151d7c1ba5
Translated using Weblate (Czech)
Currently translated at 3.2% (53 of 1625 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/cs/
2025-11-19 13:51:17 +01:00
Giovi
19d444e387
Translated using Weblate (Italian)
Currently translated at 100.0% (152 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/it/
2025-11-19 13:51:16 +01:00
Giovi
e41c718bb3
Translated using Weblate (Italian)
Currently translated at 100.0% (1625 of 1625 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/it/
2025-11-19 13:51:16 +01:00
Elian Doran
2e5d91a5bc
chore(share): fix escape in reference link and handling of attachment links 2025-11-19 09:19:02 +02:00
Elian Doran
ae184ab894
feat(share): display note icon in reference links 2025-11-19 09:07:33 +02:00
Elian Doran
1ceedf2372
fix(share): missing or protected notes leaking through reference links (closes #4801) 2025-11-19 08:59:52 +02:00
Elian Doran
416c05ed3b
fix(share): footer navigation doesn't respect #shareHiddenFromTree (closes #7781) 2025-11-19 08:43:57 +02:00
Elian Doran
623da7eade
fix(share): syntax highlighting doesn't unescape properly (closes #7783) 2025-11-19 08:34:25 +02:00
Elian Doran
84b3d6db76
fix(tree): fix failure to auto-activate hoisted note (#7782) 2025-11-19 08:20:21 +02:00
Elian Doran
25a27c9b11
fix(tree): keep moved notes always visible (#7776) 2025-11-19 08:19:08 +02:00
Elian Doran
456d59f582
chore(deps): update typescript-eslint monorepo to v8.47.0 (#7789) 2025-11-19 08:12:37 +02:00
Elian Doran
1d641cdf82
chore(deps): update dependency @vitest/coverage-v8 to v4 (#7790) 2025-11-19 07:36:44 +02:00
Elian Doran
4420d7962e
chore(deps): update dependency @stylistic/eslint-plugin to v5.6.0 (#7788) 2025-11-19 07:35:25 +02:00
Elian Doran
21e6e3df3f
chore(deps): update dependency @anthropic-ai/sdk to v0.70.0 (#7787) 2025-11-19 07:34:19 +02:00
renovate[bot]
7e04098971
chore(deps): update typescript-eslint monorepo to v8.47.0 2025-11-19 05:33:42 +00:00
Elian Doran
24df4dd0c1
fix(deps): update dependency @codemirror/view to v6.38.8 (#7786) 2025-11-19 07:33:27 +02:00
Elian Doran
8ed87e77be
chore(deps): update vitest monorepo to v4.0.10 (#7785) 2025-11-19 07:32:35 +02:00
renovate[bot]
10c0ce26dc
chore(deps): update vitest monorepo to v4.0.10 2025-11-19 05:32:11 +00:00
Elian Doran
3a38b59dad
chore(deps): update dependency webdriverio to v9.20.1 (#7784) 2025-11-19 07:29:49 +02:00
SiriusXT
24820b914c chore(e2e): add tests for tree 2025-11-19 12:15:18 +08:00
renovate[bot]
97339fd45d
chore(deps): update dependency @vitest/coverage-v8 to v4 2025-11-19 01:57:00 +00:00
renovate[bot]
a1314d645b
chore(deps): update dependency @stylistic/eslint-plugin to v5.6.0 2025-11-19 01:56:29 +00:00
renovate[bot]
571a4dca7a
chore(deps): update dependency @anthropic-ai/sdk to v0.70.0 2025-11-19 01:56:25 +00:00
renovate[bot]
36f5e62537
fix(deps): update dependency @codemirror/view to v6.38.8 2025-11-19 01:56:02 +00:00
renovate[bot]
a21b716d0a
chore(deps): update dependency webdriverio to v9.20.1 2025-11-19 01:55:11 +00:00
Adorian Doran
c25859cee9 client/debouncer: report pending updates before destroying 2025-11-19 00:57:45 +02:00
Adorian Doran
79dc5e4344 client/note color picker menu item: tweak style 2025-11-19 00:53:18 +02:00
Adorian Doran
c81aef6d05 client/note color picker menu item: update the color palette 2025-11-18 22:18:15 +02:00
Elian Doran
c744e36f3b
fix(deps): update dependency marked to v17 (#7652) 2025-11-18 20:39:02 +02:00
Elian Doran
9d96b3d1d0
Merge branch 'renovate/marked-17.x' of https://github.com/TriliumNext/Trilium into renovate/marked-17.x 2025-11-18 20:17:35 +02:00
Elian Doran
b246c638fd
fix(import/markdown): TODO not properly handled after upgrade 2025-11-18 20:17:34 +02:00
renovate[bot]
15dd8dfe8c
fix(deps): update dependency marked to v17 2025-11-18 18:11:35 +00:00
Elian Doran
50859fd661
Merge remote-tracking branch 'origin/main' into renovate/marked-17.x 2025-11-18 20:10:33 +02:00
Elian Doran
eada994a82
chore(server): remove unnecessary js-yaml dependency 2025-11-18 20:08:47 +02:00
Elian Doran
3da2046fa0
chore(deps): update vitest monorepo to v4 (major) (#7509) 2025-11-18 20:07:36 +02:00
Elian Doran
989ca08c94
test(server): increase global hook timeout 2025-11-18 19:50:15 +02:00
Elian Doran
e9ccd7120d
test(server): mocks in AI service manager 2025-11-18 19:47:45 +02:00
Elian Doran
c15ae293aa
test(server): LLM provider tests failing due to mocks 2025-11-18 19:39:11 +02:00
Elian Doran
50501aef56
test: fix typecheck issues by using classes 2025-11-18 19:21:33 +02:00
Adorian Doran
45747183e7 client/refactor: extract the debouncer to a separate module 2025-11-18 19:20:17 +02:00
Elian Doran
c9424d6f8d
Merge remote-tracking branch 'origin/main' into renovate/major-vitest-monorepo 2025-11-18 19:09:53 +02:00
Adorian Doran
5ecd8b41e5 client/note color picker menu item: add support to select a custom color 2025-11-18 19:05:20 +02:00
Adorian Doran
01d6dee9fc client/note color picker menu item: improve label handling 2025-11-18 17:23:57 +02:00
renovate[bot]
12865ac7cc
fix(deps): update dependency marked to v17 2025-11-18 14:07:16 +00:00
Elian Doran
362f0b2fe5
fix share url can be broken because of extra slash (#7779) 2025-11-18 16:04:23 +02:00
SiriusXT
9f800df5ad fix(tree): fix failure to auto-activate hoisted note 2025-11-18 19:54:50 +08:00
contributor
e937f1b601 shareUrl: use URL interface instead of string manipulations 2025-11-18 10:32:33 +02:00
contributor
5b387a0b11 fix share url can be broken because of extra slash 2025-11-18 10:22:19 +02:00
SiriusXT
9226b165bd fix(tree): fix error when moving a note to its parent node 2025-11-18 15:37:20 +08:00
SiriusXT
a6586c9d1c fix(tree): keep moved notes always visible 2025-11-18 15:33:32 +08:00
Elian Doran
0a36d759e4
fix(board): extra bottom margin 2025-11-18 09:14:39 +02:00
Elian Doran
328bcd0532
feat(collections): display no children warning for empty presentations 2025-11-18 08:51:47 +02:00
Elian Doran
ec76e9cf2a
refactor(collections): fix typecheck and remove generics 2025-11-18 08:49:07 +02:00
Elian Doran
88ae996694
fix(collections): view type not refreshing properly 2025-11-18 08:46:00 +02:00
Elian Doran
d1d1d05ce7
fix(collections): children warning stuck when changing view mode 2025-11-18 08:39:58 +02:00
Elian Doran
c62a03c97b
fix(collections): no children warning missing for newly created collection 2025-11-18 08:39:11 +02:00
Elian Doran
65cc57ec03
feat(split): allow closing any split pane (#7763) 2025-11-18 07:35:56 +02:00
Elian Doran
806c9a57fc
Translations update from Hosted Weblate (#7777) 2025-11-18 07:33:16 +02:00
Yunho Park
3a18ce0cf9
Translated using Weblate (Korean)
Currently translated at 38.1% (58 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ko/
2025-11-18 06:31:44 +01:00
anotheranonymoususer
4fde6e1293
Translated using Weblate (Czech)
Currently translated at 3.2% (5 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/cs/
2025-11-18 06:31:43 +01:00
anotheranonymoususer
31b43301a4
Translated using Weblate (Czech)
Currently translated at 13.5% (16 of 118 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/cs/
2025-11-18 06:31:42 +01:00
anotheranonymoususer
6a77e412fa
Translated using Weblate (Czech)
Currently translated at 3.2% (53 of 1625 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/cs/
2025-11-18 06:31:41 +01:00
federico
53a6424348
Translated using Weblate (Italian)
Currently translated at 100.0% (1625 of 1625 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/it/
2025-11-18 06:31:40 +01:00
Francis C.
c8d933469a
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (1625 of 1625 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hant/
2025-11-18 06:31:39 +01:00
Francis C.
e456373671
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (1625 of 1625 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hans/
2025-11-18 06:31:38 +01:00
Elian Doran
afdb806083
chore(deps): update dependency openai to v6.9.1 (#7775) 2025-11-18 07:31:30 +02:00
renovate[bot]
02c63dd22f
chore(deps): update dependency openai to v6.9.1 2025-11-18 03:00:14 +00:00
SiriusXT
529f9a2fb9 Merge branch 'main' into siriusbcd_close_split 2025-11-18 09:54:59 +08:00
SiriusXT
6b0bcf93d3 feat(split): improve support for closing any split pane 2025-11-18 09:14:50 +08:00
SiriusXT
13afe33244 fix(tab_manager): correct order when reopening split pane 2025-11-18 09:05:18 +08:00
Adorian Doran
d441bccf8b client/note color picker menu item: refactor 2025-11-18 02:18:14 +02:00
Adorian Doran
e6847355e7 client/note color picker menu item: improve the integration with the tree context menu 2025-11-18 02:12:41 +02:00
Adorian Doran
72051c8660 client/note color picker menu item: add a separator to the tree context menu 2025-11-18 01:24:05 +02:00
Adorian Doran
87afc64f16 client/note color picker menu item: fix current selection 2025-11-18 01:21:26 +02:00
Adorian Doran
870fef3ea6 client/note color picker menu item: fix a typo 2025-11-18 01:17:13 +02:00
Adorian Doran
e5ac8a0a67 client/note color picker menu item: refactor 2025-11-18 01:16:32 +02:00
Adorian Doran
87fcc0afe6 client/note color picker menu item: add to the table row context menu 2025-11-18 01:14:05 +02:00
Adorian Doran
79830870dd client/note color picker menu item: add to the geo map item context menu 2025-11-18 01:13:21 +02:00
Adorian Doran
69ad40c27f client/note color picker menu item: add to the board item context menu 2025-11-18 01:12:28 +02:00
Adorian Doran
1ac7ce00fb client/note color picker menu item: add to the calendar item context menu 2025-11-18 01:11:55 +02:00
Adorian Doran
e239bca0f2 client/note color picker menu item: fix data type 2025-11-18 01:10:10 +02:00
Adorian Doran
8729fe48c3 client/note color picker menu item: add support to operate with note IDs as well 2025-11-18 01:09:22 +02:00
Adorian Doran
441c55eb31 client/note color picker menu item: add initial implementation 2025-11-18 00:09:12 +02:00
Adorian Doran
5291a6856e client: create a placeholder for a color picker menu item 2025-11-17 19:14:34 +02:00
Adorian Doran
e011f99161 client: add support for custom menu items 2025-11-17 18:58:40 +02:00
Elian Doran
64a756cc04
fix(share): mermaid breaking in share (closes #7765) 2025-11-17 17:34:52 +02:00
SiriusXT
f57e90b35c Merge branch 'main' into siriusbcd_close_split 2025-11-17 21:03:54 +08:00
SiriusXT
5a5d242ea0 fix(tab_manager): correct order when reopening split pane 2025-11-17 21:01:21 +08:00
SiriusXT
4afea27fa5 fix(tab_manager): correct order when reopening tabs 2025-11-17 21:00:27 +08:00
Elian Doran
fc8042aa25
Add Traefik configuration documentation (#7769) 2025-11-17 08:30:08 +02:00
Elian Doran
2b6220beb8
docs(user): sync 2025-11-17 08:26:06 +02:00
Elian Doran
78426a6c7b
Merge remote-tracking branch 'origin/main' into patch-2 2025-11-17 08:20:18 +02:00
Elian Doran
620e53c255
docs(user): fix broken reference link (see #7766) 2025-11-17 08:19:23 +02:00
Elian Doran
753fc6c769
Calendar: Lock calendar initialDate using label (#7694) 2025-11-17 08:10:36 +02:00
Elian Doran
3d6e1dfc0a
fix(deps): update dependency mind-elixir to v5.3.6 (#7771) 2025-11-17 07:30:41 +02:00
renovate[bot]
d92431ad65
fix(deps): update dependency mind-elixir to v5.3.6 2025-11-17 02:06:54 +00:00
SiriusXT
be19d1f5b5 fix(split pane): hide the close button when no split panes exist 2025-11-17 09:24:18 +08:00
Andrea Santoro
ca08a52998
Fix volume path syntax in Traefik documentation 2025-11-16 22:39:50 +01:00
Andrea Santoro
e54822f3b0
Clarify TRILIUM_NETWORK_TRUSTEDREVERSEPROXY config
Added example IP address for TRILIUM_NETWORK_TRUSTEDREVERSEPROXY.
2025-11-16 22:27:14 +01:00
Andrea Santoro
3863e657ef
Update docs/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.md
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-11-16 22:25:06 +01:00
Andrea Santoro
341ef79b49
Update docs/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.md
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-11-16 22:23:39 +01:00
Andrea Santoro
335f34b824
Update docs/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.md
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-11-16 22:23:15 +01:00
Andrea Santoro
c864863be4
Add Traefik configuration documentation
Added documentation for configuring Traefik as a reverse proxy with HTTPS support, including example docker-compose configuration.
2025-11-16 22:19:46 +01:00
Elian Doran
c3ebef0dde
Translations update from Hosted Weblate (#7762) 2025-11-16 22:10:05 +02:00
Elian Doran
7b7058c77b
Translated using Weblate (Romanian)
Currently translated at 100.0% (152 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ro/
2025-11-16 21:08:43 +01:00
Elian Doran
192cf9bc26
Translated using Weblate (Romanian)
Currently translated at 100.0% (1625 of 1625 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ro/
2025-11-16 21:08:43 +01:00
Elian Doran
1cccbcfabe
Translated using Weblate (Romanian)
Currently translated at 100.0% (152 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ro/
2025-11-16 21:02:49 +01:00
Elian Doran
a85b37985a
Translated using Weblate (Romanian)
Currently translated at 100.0% (118 of 118 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ro/
2025-11-16 21:02:48 +01:00
Elian Doran
8b6b1ee315
Translated using Weblate (Romanian)
Currently translated at 100.0% (389 of 389 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ro/
2025-11-16 21:02:47 +01:00
Elian Doran
021c655a1a
Translated using Weblate (Romanian)
Currently translated at 100.0% (1625 of 1625 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ro/
2025-11-16 21:02:45 +01:00
Elian Doran
8af8968b49
Internationalization v2 (#7767) 2025-11-16 22:02:37 +02:00
Elian Doran
17298edfcc
chore: handle requested changes 2025-11-16 21:32:08 +02:00
Elian Doran
5281e8e5b4
docs(dev): document adding a new locale 2025-11-16 21:24:34 +02:00
Elian Doran
cc0e30e3f5
test(ckeditor): test all languages are mapped correctly 2025-11-16 21:18:34 +02:00
Elian Doran
497bb35209
test(canvas): test all languages are mapped correctly 2025-11-16 21:03:53 +02:00
Elian Doran
7d1453ffbd
feat(canvas): add support for locales 2025-11-16 17:49:55 +02:00
Elian Doran
89228f264f
feat(mindmap): add support for locales 2025-11-16 17:34:56 +02:00
Elian Doran
a10d99f938
feat(ckeditor5): set up multi-language support 2025-11-16 14:24:07 +02:00
Elian Doran
d014ae4fcf
chore(ckeditor5): set up dependency to commons 2025-11-16 14:23:48 +02:00
SiriusXT
a22687e2d8 Merge branch 'main' into siriusbcd_close_split 2025-11-16 20:15:43 +08:00
SiriusXT
44475853df feat(split): allow closing any split pane 2025-11-16 20:12:56 +08:00
Elian Doran
bbcc670655
feat(client/link): render reference links same as in editor 2025-11-16 11:01:37 +02:00
Elian Doran
ae58b4af35
feat(help): render reference links with icon 2025-11-16 11:01:37 +02:00
Elian Doran
fbc2ffac59
chore(deps): update dependency i18next-fs-backend to v2.6.1 (#7760) 2025-11-16 09:23:30 +02:00
renovate[bot]
f279839e6f
chore(deps): update dependency i18next-fs-backend to v2.6.1 2025-11-16 02:27:29 +00:00
Elian Doran
1844a7d666
fix(calendar): unable to delete in journal (closes #7702) 2025-11-15 22:43:35 +02:00
Elian Doran
c9f648fcb8
fix(tree): #top/#bottom reversed in desc order (closes #7716) 2025-11-15 22:27:02 +02:00
Elian Doran
948688a4ea
fix(note_list): no longer displayed in help or search 2025-11-15 22:05:32 +02:00
Elian Doran
35ca295d48
fix(settings/appearance): font size can't be typed out properly (closes #7740) 2025-11-15 21:38:17 +02:00
Elian Doran
cacc4ad01d
Translations update from Hosted Weblate (#7756) 2025-11-15 21:32:13 +02:00
Hosted Weblate
b12085f61f
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-11-15 19:29:45 +00:00
Elian Doran
39dacafa82
Fix #6696 by using shell.openExternal (#7737) 2025-11-15 21:29:30 +02:00
Elian Doran
57deb36027
Merge branch 'main' into patch-1 2025-11-15 21:24:24 +02:00
Elian Doran
2840df82f4
chore(client): fix typecheck issue 2025-11-15 17:52:08 +02:00
Elian Doran
3d971108b8
chore(ci/docker): update nightly version on main branch 2025-11-15 17:47:20 +02:00
Elian Doran
5bcdce72ef
chore(client): remove redundant log 2025-11-15 17:33:06 +02:00
Elian Doran
398329a219
fix(text): insert link sometimes occurs in the wrong tab 2025-11-15 17:32:06 +02:00
Elian Doran
754a06343f
Translations update from Hosted Weblate (#7751) 2025-11-15 16:44:12 +02:00
minkipark
55a79e5fbf
Translated using Weblate (Korean)
Currently translated at 7.8% (12 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ko/
2025-11-15 15:36:43 +01:00
Yunho Park
c78a97fed1
Translated using Weblate (Korean)
Currently translated at 7.8% (12 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ko/
2025-11-15 15:36:43 +01:00
Elian Doran
13c8ff5cb3
Kanban board v3 (#7753) 2025-11-15 16:36:39 +02:00
Elian Doran
9e34d3a668
chore(client): fix typecheck issue 2025-11-15 16:01:30 +02:00
Elian Doran
57f220e64c
Apply suggestions from code review
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-15 15:37:00 +02:00
Elian Doran
a89756a76c
docs(user): improve documentation on promoted attributes 2025-11-15 15:25:36 +02:00
Elian Doran
88c1aa163e
docs(user): working with the note tree in board 2025-11-15 13:41:48 +02:00
Elian Doran
d2184682e5
docs(user): grouping by relation in board 2025-11-15 13:37:24 +02:00
Elian Doran
63cc5b21b4
feat(board): scroll snapping on mobile 2025-11-15 13:06:51 +02:00
Elian Doran
b7703fc4df
style(next): use main background color on mobile 2025-11-15 12:52:20 +02:00
Elian Doran
254d3a1c8e
fix(board): not reacting to external title changes 2025-11-15 12:42:49 +02:00
Elian Doran
8d3892757a
fix(board): not refreshing on status attribute change 2025-11-15 12:37:25 +02:00
Elian Doran
a8992d08b3
fix(board): escape not working in "Add column" 2025-11-15 12:35:10 +02:00
Elian Doran
5e35aa8079
fix(board): columns leaking between notes 2025-11-15 12:24:18 +02:00
Elian Doran
df8da0fd4f
feat(board): warn when column already exists 2025-11-15 11:34:01 +02:00
Elian Doran
f820c6f23b
feat(board/relation): react to column title changes 2025-11-15 11:28:35 +02:00
Elian Doran
0c616fecdf
feat(board/relation): improve relation editing experience 2025-11-15 11:21:23 +02:00
Elian Doran
092a84693f
feat(board/relation): basic support for editing relations in columns 2025-11-15 11:13:55 +02:00
Elian Doran
d1e80815d5
feat(board/relation): add support for more APIs 2025-11-15 10:50:55 +02:00
Elian Doran
0f000ccd93
fix(board/relation): not reacting to status change 2025-11-15 10:42:32 +02:00
Elian Doran
f90e0767cb
feat(board/relation): allow dragging between columns 2025-11-15 10:26:19 +02:00
Elian Doran
ad6d61f1f7
feat(board/relation): display note titles 2025-11-15 10:17:40 +02:00
Elian Doran
47f7968dc4
feat(board/relation): group by relation 2025-11-15 10:15:11 +02:00
Elian Doran
455b190a5b
refactor(client): rename to user attributes 2025-11-15 09:36:18 +02:00
Elian Doran
0bc8584c35
chore(deps): update dependency electron to v38.7.0 (#7748) 2025-11-15 09:01:14 +02:00
Elian Doran
da39cdb27f
chore(deps): update dependency @ckeditor/ckeditor5-package-tools to v5.0.1 (#7741) 2025-11-15 09:00:57 +02:00
Elian Doran
769c2e9b4e
chore(deps): update dependency @smithy/middleware-retry to v4.4.11 (#7742) 2025-11-15 09:00:48 +02:00
Elian Doran
783d2b8843
chore(deps): update dependency @types/yargs to v17.0.35 (#7743) 2025-11-15 09:00:13 +02:00
Elian Doran
baca0a17c3
chore(deps): update dependency rcedit to v5.0.1 (#7744) 2025-11-15 08:59:50 +02:00
Elian Doran
f48d47bac5
fix(deps): update dependency @codemirror/view to v6.38.7 (#7745) 2025-11-15 08:59:29 +02:00
Elian Doran
14fa5d2723
fix(deps): update dependency color to v5.0.3 (#7746) 2025-11-15 08:58:40 +02:00
Elian Doran
70845611a4
chore(deps): update dependency @anthropic-ai/sdk to v0.69.0 (#7747) 2025-11-15 08:58:20 +02:00
Elian Doran
7be11da85f
chore(deps): update dependency node-abi to v4.24.0 (#7749) 2025-11-15 08:56:25 +02:00
renovate[bot]
f2f4b0e75b
chore(deps): update dependency node-abi to v4.24.0 2025-11-15 01:04:53 +00:00
renovate[bot]
491cd27f2d
chore(deps): update dependency electron to v38.7.0 2025-11-15 01:04:10 +00:00
renovate[bot]
7b62881113
chore(deps): update dependency @anthropic-ai/sdk to v0.69.0 2025-11-15 01:03:30 +00:00
renovate[bot]
22f46919f9
fix(deps): update dependency color to v5.0.3 2025-11-15 01:02:49 +00:00
renovate[bot]
1ef7fd401f
fix(deps): update dependency @codemirror/view to v6.38.7 2025-11-15 01:02:07 +00:00
renovate[bot]
5f1dbc23b4
chore(deps): update dependency rcedit to v5.0.1 2025-11-15 01:01:27 +00:00
renovate[bot]
8d750417ec
chore(deps): update dependency @types/yargs to v17.0.35 2025-11-15 01:01:22 +00:00
renovate[bot]
52f30052d5
chore(deps): update dependency @smithy/middleware-retry to v4.4.11 2025-11-15 01:00:40 +00:00
renovate[bot]
655e6bafd1
chore(deps): update dependency @ckeditor/ckeditor5-package-tools to v5.0.1 2025-11-15 00:59:58 +00:00
Elian Doran
d4dfb0cb53
Translations update from Hosted Weblate (#7738) 2025-11-14 18:19:39 +02:00
Hosted Weblate
8d08973d48
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-11-14 15:38:37 +00:00
Elian Doran
9b1b56a381
fix NoteLink component is unable to display path for root note (#7736) 2025-11-14 17:38:19 +02:00
laund
f709c27329
use shell.openExternal for URI protocol handling, clean up and unify logic 2025-11-14 15:31:51 +01:00
contributor
02859039ec fix NoteLink component is unable to display path for root note 2025-11-14 16:02:43 +02:00
Elian Doran
e6810ef753
Fix toggle tray wont restore from tray (#7735) 2025-11-14 11:57:31 +02:00
contributor
ef86e195c6 remove constant and import, it is type safe as is #7730 2025-11-14 11:45:44 +02:00
contributor
d69dd2a83f handle toggleTray global shortcut differently from other global shortcuts #7730 2025-11-14 11:45:39 +02:00
Elian Doran
5dd21ac539
fix(flake): upgrade to Nodejs 24 (#7732) 2025-11-14 10:53:47 +02:00
FliegendeWurst
bd6575982b fix(flake): revert pname to just trilium-* 2025-11-14 08:54:25 +01:00
FliegendeWurst
80313527c5 fix(flake): upgrade to Nodejs 24
This ensures consistency with the main server build.
2025-11-14 08:53:40 +01:00
Elian Doran
78901e03d7
fix markdown headings are rendered with extra character (#7720) 2025-11-14 08:28:56 +02:00
Elian Doran
01c1b19601
chore(deps): update dependency openai to v6.9.0 (#7727) 2025-11-14 08:27:10 +02:00
Elian Doran
1d837092a2
Translations update from Hosted Weblate (#7731) 2025-11-14 08:26:47 +02:00
Elian Doran
bde04919fe
chore(deps): update dependency @ckeditor/ckeditor5-package-tools to v5 (#7729) 2025-11-14 08:26:14 +02:00
Hosted Weblate
0dd0416346
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-11-14 06:25:56 +00:00
Yunho Park
711dd64093
Translated using Weblate (Korean)
Currently translated at 3.9% (6 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ko/
2025-11-14 06:25:47 +00:00
Hosted Weblate
db7b4829b5
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-11-14 06:25:46 +00:00
Elian Doran
f97c63fe93
chore(deps): update ckeditor5 config packages to v13 (major) (#7728) 2025-11-14 08:25:38 +02:00
renovate[bot]
cb5fe95768
chore(deps): update dependency openai to v6.9.0 2025-11-14 06:25:29 +00:00
Elian Doran
34359dd7b6
fix(deps): update dependency react-i18next to v16.3.3 (#7725) 2025-11-14 08:24:40 +02:00
Elian Doran
476d1d274e
chore(deps): update dependency node-abi to v4.23.0 (#7726) 2025-11-14 08:24:07 +02:00
Elian Doran
c52265c046
fix(deps): update dependency @mind-elixir/node-menu to v5.0.1 (#7724) 2025-11-14 08:23:26 +02:00
Elian Doran
4fbf3d79c7
chore(deps): update dependency ollama to v0.6.3 (#7723) 2025-11-14 08:22:51 +02:00
renovate[bot]
e8cc92db95
chore(deps): update dependency @ckeditor/ckeditor5-package-tools to v5 2025-11-14 02:38:29 +00:00
renovate[bot]
40e969bab9
chore(deps): update ckeditor5 config packages to v13 2025-11-14 02:37:48 +00:00
renovate[bot]
3df2105016
chore(deps): update dependency node-abi to v4.23.0 2025-11-14 02:36:26 +00:00
renovate[bot]
0aa3cc3d6f
fix(deps): update dependency react-i18next to v16.3.3 2025-11-14 02:35:52 +00:00
renovate[bot]
666f26f516
fix(deps): update dependency @mind-elixir/node-menu to v5.0.1 2025-11-14 02:35:12 +00:00
renovate[bot]
7662dde294
chore(deps): update dependency ollama to v0.6.3 2025-11-14 02:34:31 +00:00
contributor
d28dda876c fix markdown headings are rendered with extra character 2025-11-13 23:18:38 +02:00
Elian Doran
1ca46e3505
Fix enex import stores wrong format in database for dateCreated, dateModified (#7718) 2025-11-13 20:48:09 +02:00
Elian Doran
6b6dc47f2b
Translations update from Hosted Weblate (#7714) 2025-11-13 20:43:39 +02:00
contributor
98b5b81d7d add typing and improve readability 2025-11-13 20:33:03 +02:00
contributor
48a20500f8 explicit param to keep or convert local date for enex import 2025-11-13 20:13:46 +02:00
contributor
a3bd15e102 move date conversion function to enex directly
to protect from future potential refactoring
2025-11-13 17:41:45 +00:00
contributor
f728b2b0e7 fix enex import saves local dates in wrong format (with Z, like UTC fields)
the proper format for dateCreated, dateModified is: +0000
2025-11-13 17:41:45 +00:00
Magnus Johansson
50dfd1d329
Translated using Weblate (Swedish)
Currently translated at 4.2% (5 of 118 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/sv/
2025-11-13 13:47:27 +00:00
kamykO
c0375b34fd
Translated using Weblate (Polish)
Currently translated at 100.0% (152 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/pl/
2025-11-13 13:47:27 +00:00
Dong-ha, Lee
d8e7832f07
Translated using Weblate (Korean)
Currently translated at 15.6% (61 of 389 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ko/
2025-11-13 13:47:26 +00:00
green
f2415916aa
Translated using Weblate (Japanese)
Currently translated at 100.0% (1624 of 1624 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-11-13 13:47:25 +00:00
Francis C.
7f67b2a1ee
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (389 of 389 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/zh_Hant/
2025-11-13 13:47:23 +00:00
Francis C.
bc9ad5012e
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (1624 of 1624 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hant/
2025-11-13 13:47:23 +00:00
Francis C.
096deda23c
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (389 of 389 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/zh_Hans/
2025-11-13 13:47:22 +00:00
qingmo_dev
8b5544268b
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (1624 of 1624 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hans/
2025-11-13 13:47:21 +00:00
Francis C.
d492c0e091
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (1624 of 1624 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hans/
2025-11-13 13:47:20 +00:00
Elian Doran
20b301ac0e
fix(collections/list): archived notes not shown on first render 2025-11-13 10:59:56 +02:00
Elian Doran
bacbe9f47c
chore(collections/list): style archived notes differently 2025-11-13 10:35:39 +02:00
Elian Doran
4ecb693be5
chore(collections/list): use more performant mechanism for searching by note ID 2025-11-13 10:26:47 +02:00
Elian Doran
454310c3e4
feat(collections/list): enable "Show archived notes" checkmark in collections 2025-11-13 10:24:57 +02:00
Elian Doran
e51daad5da
feat(collections/list): filter archived notes 2025-11-13 10:21:45 +02:00
Elian Doran
b13c0fe7a2
refactor(board/promoted_attributes): reduce duplication 2025-11-13 09:56:47 +02:00
Elian Doran
3036d18df5
feat(board/promoted_attributes): improve rendering for color badge 2025-11-13 09:56:47 +02:00
Elian Doran
5dbe9e7da6
feat(board/promoted_attributes): render non-promoted attribute defs too 2025-11-13 09:56:47 +02:00
Elian Doran
fd9b6e9e67
fix(board/promoted_attributes): status attribute displayed when it shouldn't 2025-11-13 09:56:46 +02:00
Elian Doran
4f580a37a3
fix(quick_search): resolve word issues to not trigger substring matches (#7708) 2025-11-13 09:53:14 +02:00
Elian Doran
f64d11b7c8
chore(deps): update dependency @smithy/middleware-retry to v4.4.10 (#7709) 2025-11-13 09:42:30 +02:00
Elian Doran
2bf9e0edd9
chore(deps): update dependency js-yaml to v4.1.1 (#7710) 2025-11-13 09:42:18 +02:00
Elian Doran
b807079c55
chore: add class name to content-header (#7713) 2025-11-13 09:41:35 +02:00
SiriusXT
2cc5b896e0 Merge branch 'main' into share 2025-11-13 14:24:04 +08:00
SiriusXT
7c79caba78 chore: add class name to content-header 2025-11-13 14:21:07 +08:00
Elian Doran
fbf4a910fa
Merge branch 'main' into renovate/smithy-middleware-retry-4.x 2025-11-13 08:07:46 +02:00
Elian Doran
95947a9f8c
chore(deps): update node.js to v24.11.1 (#7697) 2025-11-13 07:43:55 +02:00
Elian Doran
1c05acf5ed
fix(deps): update dependency react-i18next to v16.3.1 (#7712) 2025-11-13 07:43:18 +02:00
Elian Doran
5cc5f3ffae
chore(deps): update pnpm to v10.22.0 (#7711) 2025-11-13 07:42:47 +02:00
renovate[bot]
54556c73e2
fix(deps): update dependency react-i18next to v16.3.1 2025-11-13 01:08:04 +00:00
renovate[bot]
5aa63ac50c
chore(deps): update pnpm to v10.22.0 2025-11-13 01:07:17 +00:00
renovate[bot]
38eaa94a53
chore(deps): update node.js to v24.11.1 2025-11-13 01:07:05 +00:00
renovate[bot]
7810f6c8da
chore(deps): update dependency js-yaml to v4.1.1 2025-11-13 01:06:16 +00:00
renovate[bot]
6d94efb6c8
chore(deps): update dependency @smithy/middleware-retry to v4.4.10 2025-11-13 01:05:36 +00:00
perfectra1n
e89646ee7c fix(quick_search): centralize the repeated exactWordMatch function, per Gemini's suggestion 2025-11-12 16:49:43 -08:00
perfectra1n
dee8c115ab fix(quick_search): resolve word issues to not trigger substring matches 2025-11-12 16:43:59 -08:00
Elian Doran
54d3936c7b
feat(board/promoted_attributes): support multiple values 2025-11-12 21:06:44 +02:00
Elian Doran
02452a0513
feat(board/promoted_attributes): display relations with icon 2025-11-12 21:01:53 +02:00
Elian Doran
e9f40c48e3
feat(board/promoted_attributes): basic support for color attributes 2025-11-12 20:56:15 +02:00
Elian Doran
6b74b227cb
feat(board/promoted_attributes): format URL 2025-11-12 20:50:01 +02:00
Elian Doran
00874840b7
feat(board/promoted_attributes): format time 2025-11-12 20:48:45 +02:00
Elian Doran
d79a23bc9e
feat(board/promoted_attributes): format boolean 2025-11-12 20:42:30 +02:00
Elian Doran
3015576d7e
feat(board/promoted_attributes): format date & time 2025-11-12 20:34:48 +02:00
Elian Doran
46c2e162f0
feat(board/promoted_attributes): format number with precision 2025-11-12 20:31:27 +02:00
Elian Doran
3c42577da4
feat(board/promoted_attributes): react to changes 2025-11-12 20:27:13 +02:00
Elian Doran
76f791da93
Merge branch 'main' of https://github.com/TriliumNext/Trilium 2025-11-12 19:59:36 +02:00
Elian Doran
0c5adcee2d
fix(board): no promoted attributes creates margin 2025-11-12 19:58:42 +02:00
Elian Doran
b11b3ff67f
refactor(board): use hook for obtaining the list of attributes 2025-11-12 19:57:28 +02:00
Elian Doran
e006afc5a2
feat(board): display in chip format 2025-11-12 19:38:56 +02:00
Elian Doran
40dbb818c5
feat(board): ignore status attribute 2025-11-12 19:09:59 +02:00
Elian Doran
62dc570d38
feat(board): display promoted attributes 2025-11-12 19:07:23 +02:00
Elian Doran
b759c5e7d2
feat(board): display number of items in column 2025-11-12 18:47:29 +02:00
Diego Herrera
309d7e704c Add feature to docs 2025-11-12 12:58:56 -03:00
Diego Herrera
ecf9ce586c Use NoteLabel instead of CustomisableLabel 2025-11-12 12:43:37 -03:00
Elian Doran
3f93d191b3
Translations update from Hosted Weblate (#7701) 2025-11-12 08:27:40 +02:00
green
3a83e7f632
Translated using Weblate (Japanese)
Currently translated at 100.0% (389 of 389 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ja/
2025-11-12 07:18:19 +01:00
green
2acede95d7
Translated using Weblate (Japanese)
Currently translated at 100.0% (1623 of 1623 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-11-12 07:18:18 +01:00
Unknown
052a60ba58
Translated using Weblate (Spanish)
Currently translated at 100.0% (389 of 389 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/es/
2025-11-12 07:18:17 +01:00
Unknown
a633c6eecd
Translated using Weblate (Spanish)
Currently translated at 100.0% (1623 of 1623 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/es/
2025-11-12 07:18:16 +01:00
Elian Doran
b6561e6375
"Open note on server" menu item (#7477) 2025-11-12 08:17:53 +02:00
Elian Doran
7af9df2ee3
chore(deps): update dependency @redocly/cli to v2.11.1 (#7695) 2025-11-12 08:08:29 +02:00
Elian Doran
3c4b7fd490
chore(deps): update dependency @smithy/middleware-retry to v4.4.7 (#7696) 2025-11-12 08:08:15 +02:00
Elian Doran
f5ed4007e3
chore(deps): update typescript-eslint monorepo to v8.46.4 (#7698) 2025-11-12 08:07:55 +02:00
Elian Doran
f26469bdc2
fix(deps): update dependency i18next to v25.6.2 (#7699) 2025-11-12 08:07:38 +02:00
Elian Doran
3326d803a0
Translations update from Hosted Weblate (#7700) 2025-11-12 08:07:15 +02:00
Hosted Weblate
b60a28c52c
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-11-12 05:55:12 +00:00
Elian Doran
139c60ac73
Hotfix (#7679) 2025-11-12 07:54:54 +02:00
renovate[bot]
c7ad6131cb
fix(deps): update dependency i18next to v25.6.2 2025-11-12 02:54:22 +00:00
renovate[bot]
86e2a762a4
chore(deps): update typescript-eslint monorepo to v8.46.4 2025-11-12 02:53:34 +00:00
renovate[bot]
bf9f880a21
chore(deps): update dependency @smithy/middleware-retry to v4.4.7 2025-11-12 02:51:14 +00:00
renovate[bot]
5491aaab85
chore(deps): update dependency @redocly/cli to v2.11.1 2025-11-12 02:50:29 +00:00
Diego Herrera
d0de9e5e21 calendar: Lock calendar initialDate using label 2025-11-11 18:06:11 -03:00
Elian Doran
25563c6687
chore(release): prepare for v0.99.5 2025-11-11 22:16:13 +02:00
Elian Doran
48608adbd3
Merge branch 'hotfix' of https://github.com/TriliumNext/Trilium into hotfix 2025-11-11 15:33:00 +02:00
Elian Doran
362ecba98d
fix(popup_editor): drag indicator not visible (closes #7686) 2025-11-11 15:32:59 +02:00
Elian Doran
a13892da66
refactor(popup_editor): different handling for z-index 2025-11-11 15:32:18 +02:00
Elian Doran
40568ac547
Translations update from Hosted Weblate (#7689) 2025-11-11 13:56:40 +02:00
Elian Doran
e8dc19a1a6
chore(forge): display logs when building for flatpak 2025-11-11 13:49:00 +02:00
Elian Doran
cc326547d1
Merge branch 'hotfix' of github.com:TriliumNext/Trilium into hotfix 2025-11-11 13:41:22 +02:00
Elian Doran
a45b147462
fix(flatpak): global shortcuts not working (closes #7563) 2025-11-11 13:41:18 +02:00
Elian Doran
4e73f20165
fix(flatpak): system tray missing 2025-11-11 13:37:35 +02:00
hulmgulm
0039e5e60c
Translated using Weblate (German)
Currently translated at 21.7% (33 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/de/
2025-11-11 11:51:35 +01:00
Ondřej Soldát
813e2e8c9b
Translated using Weblate (Czech)
Currently translated at 1.9% (3 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/cs/
2025-11-11 11:51:34 +01:00
Dong-ha, Lee
f186e929b2
Translated using Weblate (Korean)
Currently translated at 10.5% (41 of 389 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ko/
2025-11-11 11:51:25 +01:00
Giovi
31d2abf954
Translated using Weblate (Italian)
Currently translated at 100.0% (389 of 389 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/it/
2025-11-11 11:51:23 +01:00
Giovi
bd69280735
Translated using Weblate (Italian)
Currently translated at 100.0% (1623 of 1623 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/it/
2025-11-11 11:51:21 +01:00
Elian Doran
80c77eeb18
fix(ribbon): "Open attribute list" shortcut not focusing (closes #7463) 2025-11-11 12:20:16 +02:00
Elian Doran
c30282fbd0
Merge branch 'hotfix' of https://github.com/TriliumNext/Trilium into hotfix 2025-11-11 11:24:47 +02:00
Elian Doran
7b8f1ed6ec
fix(collections/calendar): unable to drag to/from all-day (closes #7685) 2025-11-11 11:24:45 +02:00
Elian Doran
b86c656895
Note info ribbon flex layout (#7678) 2025-11-10 22:18:05 +02:00
Elian Doran
bc32fe749d
chore(deps): update pnpm to v10.21.0 (#7672) 2025-11-10 22:12:20 +02:00
Elian Doran
5970a242c9
chore(deps): update dependency esbuild to v0.27.0 (#7671) 2025-11-10 22:11:36 +02:00
Elian Doran
118e11c3fd
edited notes: better sql like statement (#7681) 2025-11-10 21:16:29 +02:00
Elian Doran
4fc9848a3b
Translations update from Hosted Weblate (#7682) 2025-11-10 20:36:02 +02:00
Hosted Weblate
b8de5b3348
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-11-10 18:29:41 +00:00
Elian Doran
5a01f75d67
edited notes: better sql like statement (#7681) 2025-11-10 20:29:25 +02:00
contributor
d0a994c102 fix sql like pattern 2025-11-10 20:15:08 +02:00
contributor
e883f32f89 edited notes: better sql like statement 2025-11-10 20:04:50 +02:00
Elian Doran
a6fc54cb81
fix(mindmap): switching between read-only and editable mode 2025-11-10 19:59:01 +02:00
Elian Doran
76bd6a5ab9
refactor(mindmap): unnecessary content logic 2025-11-10 19:44:45 +02:00
Elian Doran
3b5d749d86
docs(dev): branching strategy 2025-11-10 19:31:10 +02:00
Elian Doran
b54765113e
fix(ci): wrong dir for arm64 2025-11-10 19:10:55 +02:00
Elian Doran
ed08893996
chore(ci): disable fail-fast for matrix 2025-11-10 19:05:41 +02:00
Elian Doran
20286d53c8
feat(ci): test server on ARM as well 2025-11-10 18:56:04 +02:00
Elian Doran
9c1a34fe7c
fix(ci): proper port 2025-11-10 18:30:03 +02:00
Elian Doran
e70c6b69b8
fix(ci): set proper environment variables for playwright 2025-11-10 18:20:35 +02:00
Elian Doran
9b69b0ad0d
fix(server): use right packaged version 2025-11-10 17:51:04 +02:00
Elian Doran
3776c40b8d
chore(ci): add playwright testing to the server 2025-11-10 17:25:39 +02:00
renovate[bot]
6761f741ca
chore(deps): update dependency esbuild to v0.27.0 2025-11-10 13:48:16 +00:00
Elian Doran
c7369bc9b3
fix(print): copy to clipboard button visible 2025-11-10 14:26:24 +02:00
Adorian Doran
b741662fde
style/empty note: fix alignment 2025-11-10 14:17:49 +02:00
Adorian Doran
624610b17c
close #7668 2025-11-10 14:17:44 +02:00
Adorian Doran
de004bd8ba
fix #7667 2025-11-10 14:17:37 +02:00
contributor
a1c959aabd use class instead of inline style for note info calculate button 2025-11-10 13:18:07 +02:00
contributor
4d1ebd011c ribbon Note Info in flex layout instead of table 2025-11-10 13:18:07 +02:00
renovate[bot]
2947967b79
chore(deps): update pnpm to v10.21.0 2025-11-10 02:58:46 +00:00
Adorian Doran
52691b9e88 style/empty note: fix alignment 2025-11-10 03:05:05 +02:00
Adorian Doran
daba806e12 close #7668 2025-11-10 02:09:14 +02:00
Adorian Doran
d7f7049b5d fix #7667 2025-11-10 02:01:45 +02:00
contributor
e811db3651 only show "Open note on server" for electron app 2025-11-10 00:26:28 +02:00
contributor
a1d38b6bb8 add 'Open note on server' menu item to NoteActions drop-down 2025-11-10 00:26:28 +02:00
Elian Doran
c781eab061
Translations update from Hosted Weblate (#7664) 2025-11-09 22:53:15 +02:00
Elian Doran
fb91d4fbd4
docs(user): mention updates after react improvements 2025-11-09 22:52:02 +02:00
Sir-Ivysaur
cd6fcbd283
Translated using Weblate (Indonesian)
Currently translated at 9.8% (15 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/id/
2025-11-09 20:32:53 +00:00
Elian Doran
0ccc350ddf
Port type widgets to React (#7044) 2025-11-09 22:32:35 +02:00
Elian Doran
efa7fd0b7d
chore(client): use backward-compatible hiding mechanism 2025-11-09 22:20:49 +02:00
Elian Doran
5f4d0325aa
Merge remote-tracking branch 'origin/main' into react/type_widgets 2025-11-09 21:37:56 +02:00
Elian Doran
06eb30c69d
chore(release): prepare for v0.99.4 2025-11-09 21:29:21 +02:00
Elian Doran
b9b5c13d9c
fix(client): ribbon adapter not working 2025-11-09 21:14:28 +02:00
Elian Doran
763fa0b515
fix(client/type_widgets): empty tab not working when closing last tab 2025-11-09 20:41:29 +02:00
Elian Doran
8e697d0578
fix(ribbon): not dismissing active tab after change 2025-11-09 20:17:13 +02:00
Elian Doran
6f245ec8d5
fix(ribbon): not refreshing if note is temporarily edited 2025-11-09 20:15:06 +02:00
Elian Doran
532df6559a
fix(ribbon): formatting toolbar displayed in read-only notes 2025-11-09 20:15:06 +02:00
Adorian Doran
8589f7f164 style/note list widget: fix broken CSS selector 2025-11-09 19:50:48 +02:00
Elian Doran
7ba91b7a9d
chore(desktop): fix import 2025-11-09 19:36:58 +02:00
Adorian Doran
4eadf40e20 Merge branch 'main' of https://github.com/TriliumNext/Trilium 2025-11-09 19:35:59 +02:00
Adorian Doran
7b9303b392 style/zen mode: do not show an empty toolbar container when the toolbar is not actually available 2025-11-09 19:35:47 +02:00
Elian Doran
7fc9f08843
Merge remote-tracking branch 'origin/main' into react/type_widgets 2025-11-09 19:30:46 +02:00
Elian Doran
e28794d706
chore(edit-docs): fix typecheck 2025-11-09 19:28:08 +02:00
Elian Doran
521152ec0e
Translations update from Hosted Weblate (#7661) 2025-11-09 17:50:54 +02:00
Hosted Weblate
2ff746253d
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-11-09 16:39:21 +01:00
Elian Doran
c270aef738
Translations update from Hosted Weblate (#7660) 2025-11-09 17:39:06 +02:00
Sir-Ivysaur
d0881c09ed
Translated using Weblate (Indonesian)
Currently translated at 1.9% (3 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/id/
2025-11-09 16:15:11 +01:00
Adorian Doran
b905c1d03a style: different appearance tweaks 2025-11-09 17:10:23 +02:00
Adorian Doran
f03448bae4 style/gutter: tweak color on horizontal layout when background effects are enabled 2025-11-09 16:32:32 +02:00
Adorian Doran
f8ac09df38 style/right pane: tweak appearance 2025-11-09 16:16:37 +02:00
Adorian Doran
15c329c331 style/scrolling container widget: fix CSS selector 2025-11-09 15:51:29 +02:00
Adorian Doran
f6afc0b718 style/scrolling container widget: improve full-height widget handling 2025-11-09 15:46:57 +02:00
Elian Doran
ae1c8f0a0b
chore(client): review from Copilot 2025-11-09 15:13:57 +02:00
Elian Doran
1257e46852
chore(client): review from Gemini 2025-11-09 15:10:40 +02:00
Elian Doran
40a7f286a3
fix(client): typecheck issues 2025-11-09 15:04:29 +02:00
Elian Doran
652cccadd7
fix(type_widgets/code): read-only bar not visible for dark themes 2025-11-09 14:59:47 +02:00
Elian Doran
308fd00508
fix(type_widgets/code): not reacting to language changes 2025-11-09 14:48:31 +02:00
Adorian Doran
ecfa333491 style/note cards: remove shadow 2025-11-09 14:47:31 +02:00
Adorian Doran
21b0ef9554 style/note cards: improve style, remove no longer unused CSS variables 2025-11-09 14:43:59 +02:00
Elian Doran
35f413505c
fix(type_widgets/code): background color leaking in SQLite 2025-11-09 14:40:14 +02:00
Elian Doran
a82d15e83d
fix(type_widgets/attachments): attachments not refreshing when uploading new revision 2025-11-09 14:26:32 +02:00
Adorian Doran
2f3be96dff style/info bar: improve style 2025-11-09 14:17:04 +02:00
Adorian Doran
4ba7907bee client/content header container: fix parent detection 2025-11-09 14:07:27 +02:00
Elian Doran
24b169d667
fix(type_widgets): "empty" note type displayed on refresh 2025-11-09 13:52:07 +02:00
Elian Doran
b36ef54507
fix(type_widgets): code background leaking when switching types 2025-11-09 13:37:31 +02:00
Elian Doran
c772430dd0
fix(type_widgets): switching between note types shows wrong content 2025-11-09 13:24:12 +02:00
Elian Doran
d4194c503c
fix(type_widgets/relation_map): map emptied when switching fast 2025-11-09 12:38:12 +02:00
Elian Doran
33a41d2f86
Merge remote-tracking branch 'origin/main' into react/type_widgets
; Conflicts:
;	apps/client/src/layouts/desktop_layout.tsx
;	apps/client/src/layouts/mobile_layout.tsx
;	apps/client/src/widgets/note_detail.ts
;	apps/client/src/widgets/react/hooks.tsx
2025-11-09 12:08:50 +02:00
Elian Doran
afa92551ea
fix(tree): type issues & error if active node is empty 2025-11-09 11:16:35 +02:00
Elian Doran
cc0646e79c
style(next): remove alignment of last toolbar group 2025-11-09 10:35:03 +02:00
Elian Doran
4c8f20be9a
ignore toggle tray command if tray is disabled (#7654) 2025-11-09 09:45:37 +02:00
Elian Doran
3407528c03
chore(deps): update softprops/action-gh-release action to v2.4.2 (#7657) 2025-11-09 09:44:45 +02:00
Elian Doran
70575a00cb
Translations update from Hosted Weblate (#7656) 2025-11-09 09:34:41 +02:00
renovate[bot]
74ba4b9ee5
chore(deps): update softprops/action-gh-release action to v2.4.2 2025-11-09 00:42:36 +00:00
Francis C.
706abeb307
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (1621 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hant/
2025-11-09 01:41:35 +01:00
Francis C.
7158c48831
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (1621 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hans/
2025-11-09 01:41:35 +01:00
Adorian Doran
78e2814068
UI improvements (#7655) 2025-11-09 02:41:20 +02:00
Adorian Doran
7659224e3a style/read-only note info bar: fix zen mode appearance 2025-11-09 02:26:37 +02:00
Adorian Doran
baff349fa2 client: refactor 2025-11-09 02:23:57 +02:00
Adorian Doran
50869d29db client/shared note info bar: improve appearance 2025-11-09 02:14:43 +02:00
Adorian Doran
c4603fce25 client/shared note message: convert to an info bar 2025-11-09 01:56:52 +02:00
Adorian Doran
220aab2b76 client/read-only note info bar: refactor 2025-11-09 01:35:33 +02:00
Adorian Doran
285a7253e3 client: make the info bar part of the scrollable content, prevent overlapping with the floating buttons 2025-11-09 01:19:45 +02:00
Adorian Doran
d8d80ed936 Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/ui-improvements 2025-11-08 21:25:39 +02:00
Elian Doran
3463cb83a0
fix(collections/board): cloned notes appearing twice (closes #6786) 2025-11-08 20:17:56 +02:00
Elian Doran
b0bd60b9a4
feat(collections/calendar): use formatting locale 2025-11-08 18:01:58 +02:00
contributor
3d70a0534b ignore toggle tray command if tray is disabled 2025-11-08 13:03:42 +02:00
Elian Doran
53805e9c49
fix(server/notes): images not saved on duplication (fixes #7471) 2025-11-08 11:27:18 +02:00
Elian Doran
0e95610d4e
fix(server): attachments not copied for templates (closes #7612) 2025-11-08 11:18:03 +02:00
Elian Doran
051e2b4eef
Send global shortcut to current window (#7645) 2025-11-08 08:31:17 +02:00
Elian Doran
1d750bde64
chore(deps): update dependency vite to v7.2.2 (#7647) 2025-11-08 08:28:13 +02:00
Elian Doran
4476615d33
fix(deps): update dependency marked to v16.4.2 (#7649) 2025-11-08 08:27:36 +02:00
Elian Doran
bbcc16daab
fix(deps): update dependency i18next to v25.6.1 (#7648) 2025-11-08 08:27:05 +02:00
Elian Doran
457dd070c6
chore(deps): update dependency rcedit to v5 (#7651) 2025-11-08 08:26:05 +02:00
Elian Doran
ce229dd6f5
chore(deps): update dependency electron to v38.6.0 (#7650) 2025-11-08 08:22:22 +02:00
renovate[bot]
2e59d9d7bc
chore(deps): update dependency rcedit to v5 2025-11-08 01:39:22 +00:00
renovate[bot]
bbe96c3967
chore(deps): update dependency electron to v38.6.0 2025-11-08 01:39:17 +00:00
renovate[bot]
d95eb9f5d3
fix(deps): update dependency marked to v16.4.2 2025-11-08 01:38:37 +00:00
renovate[bot]
d75279316a
fix(deps): update dependency i18next to v25.6.1 2025-11-08 01:37:54 +00:00
renovate[bot]
7f6be13a18
chore(deps): update dependency vite to v7.2.2 2025-11-08 01:37:08 +00:00
Adorian Doran
2f74b40095 client/read only note info bar: refactor 2025-11-07 23:45:48 +02:00
Adorian Doran
a844e1faab client: fix typo 2025-11-07 21:19:11 +02:00
contributor
f629f564cd add reusable showAndFocusWindow function 2025-11-07 21:17:34 +02:00
contributor
9a5f2f8d3b make global shortcut work with windows in system tray 2025-11-07 21:17:34 +02:00
Adorian Doran
9bccc72668 client/options/keep content centered: simplify the inner workings 2025-11-07 21:15:51 +02:00
contributor
a29597a4bf add safety check to ensure electron window is not destroyed 2025-11-07 20:25:16 +02:00
contributor
44b34d1ea0 send global shortcut to current window, not the first one 2025-11-07 20:25:09 +02:00
Adorian Doran
c617c84d86 style/options: properly align cards when content centering is enabled 2025-11-07 19:02:59 +02:00
Adorian Doran
b38780755a client: add a CSS class to identify option splits 2025-11-07 19:01:50 +02:00
Adorian Doran
78a54fa9f7 client: refactor 2025-11-07 18:23:30 +02:00
Adorian Doran
fa64ca2c93 client: add an option to center the content 2025-11-07 18:17:28 +02:00
Elian Doran
71d7403690
feat(print): support CSS for collections too 2025-11-07 17:48:37 +02:00
Elian Doran
e4cd946ea8
docs(user): fix wrong page for documentation 2025-11-07 17:31:50 +02:00
Elian Doran
cedd1c4789
docs(user): document custom print CSS 2025-11-07 17:25:14 +02:00
Elian Doran
7a677cff5f
feat(print): allow custom CSS (closes #7608) 2025-11-07 17:25:05 +02:00
Adorian Doran
2d03dd22e3 Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/ui-improvements 2025-11-07 17:06:21 +02:00
Elian Doran
e28da416ba
Translations update from Hosted Weblate (#7639) 2025-11-06 22:59:32 +02:00
green
28c0ef52f3
Translated using Weblate (Japanese)
Currently translated at 100.0% (1621 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-11-06 20:28:01 +01:00
Unknown
9464a64d64
Translated using Weblate (Spanish)
Currently translated at 99.7% (1617 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/es/
2025-11-06 20:28:00 +01:00
SngAbc
c3af6a6aa2
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.7% (1617 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hans/
2025-11-06 20:28:00 +01:00
Elian Doran
319e28387f
refactor(react/type_widgets): separate persistence from canvas 2025-11-06 15:44:09 +02:00
Elian Doran
0b740bb007
chore(react/type_widgets): remove logging 2025-11-06 12:05:38 +02:00
Elian Doran
bb7fa9a2e6
fix(react/type_widgets): unable to switch to notes of same note type 2025-11-06 12:02:48 +02:00
Elian Doran
5e83e6fa34
Merge remote-tracking branch 'origin/main' into react/type_widgets 2025-11-06 11:40:04 +02:00
Elian Doran
a4281fe26f
fix(deps): update ckeditor monorepo to v47.2.0 (#7634) 2025-11-06 09:04:07 +02:00
Adorian Doran
5c0d6e1fef style/alert bar: update message 2025-11-06 08:55:08 +02:00
Adorian Doran
23f1103822 style/alert bar: update message 2025-11-06 08:45:53 +02:00
renovate[bot]
b45ee6879c
fix(deps): update ckeditor monorepo to v47.2.0 2025-11-06 06:34:53 +00:00
Elian Doran
a8116aa264
chore(deps): update dependency vite to v7.2.1 (#7633) 2025-11-06 08:31:51 +02:00
Elian Doran
db3960a23e
fix(deps): update dependency mind-elixir to v5.3.5 (#7632) 2025-11-06 08:31:14 +02:00
Elian Doran
a43e08500e
chore(deps): update dependency openai to v6.8.1 (#7631) 2025-11-06 08:30:45 +02:00
Adorian Doran
9011d648b5 client: refactor 2025-11-06 08:26:21 +02:00
Adorian Doran
30c1708979 style/alert bar: update the background color for the light color scheme 2025-11-06 08:15:59 +02:00
Adorian Doran
1a55d3433d client/floating buttons: hide the "Edit note" button for the moment 2025-11-06 08:08:56 +02:00
Adorian Doran
bec47c0bb2 client/note context menu: add "Edit note" for read-only notes 2025-11-06 07:49:57 +02:00
Adorian Doran
4fdb502a19 client: allow the isNoteReadOnly hook operate on a note and context other of the current one 2025-11-06 07:48:11 +02:00
renovate[bot]
e9ccd52fd5
chore(deps): update dependency vite to v7.2.1 2025-11-06 04:54:41 +00:00
renovate[bot]
dcd30972bd
fix(deps): update dependency mind-elixir to v5.3.5 2025-11-06 02:49:14 +00:00
renovate[bot]
4578541fa8
chore(deps): update dependency openai to v6.8.1 2025-11-06 02:48:32 +00:00
Adorian Doran
914fa3625f client/read only note info bar: style tweaks for zen mode 2025-11-06 02:01:30 +02:00
Adorian Doran
5e3ffc12ce style/zen mode: fix content refusing to get narrower than the max content width preference 2025-11-06 02:01:03 +02:00
Adorian Doran
aa3a8d19ae client: increase the default size limit for auto read-only 2025-11-06 01:46:55 +02:00
Adorian Doran
a57c237c69 client/read only note info bar: style tweaks for zen mode 2025-11-06 01:34:39 +02:00
Adorian Doran
b52e615f0c client/read only note info bar: add support for zen mode 2025-11-06 01:08:26 +02:00
Adorian Doran
95e5c2563e client/read only note info bar: refactor 2025-11-06 00:45:16 +02:00
Adorian Doran
33be7f828b client/read only note info bar: fix file name 2025-11-06 00:24:27 +02:00
Adorian Doran
d23d37baac client/read only note info bar: add translation string 2025-11-06 00:22:00 +02:00
Adorian Doran
dda8b2795b client/read only note info bar: tweak style 2025-11-06 00:17:14 +02:00
Adorian Doran
0b9eb6c532 client/read only note info bar: shorten link caption 2025-11-05 23:56:18 +02:00
Adorian Doran
728f574eac Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/ui-improvements 2025-11-05 23:52:53 +02:00
Adorian Doran
8e90826aef client: add a read-only note info bar 2025-11-05 23:52:38 +02:00
Elian Doran
5e5e0afcf0
Translations update from Hosted Weblate (#7630) 2025-11-05 23:36:01 +02:00
kamykO
de85d1f0df
Translated using Weblate (Polish)
Currently translated at 100.0% (152 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/pl/
2025-11-05 21:17:29 +00:00
Elian Doran
b287b892e1
Merge branch 'main' of github.com:TriliumNext/Trilium 2025-11-05 23:17:19 +02:00
Elian Doran
a0edf00caa
feat(collections/calendar): context menu option to delete event 2025-11-05 23:17:15 +02:00
Elian Doran
218b9404fc
fix(print): missing admonition icons 2025-11-05 22:08:31 +02:00
Elian Doran
54af120e96
fix(search): resolve issue when using = operator in search (#7268) 2025-11-05 21:51:44 +02:00
Elian Doran
2154a5e1db
Merge remote-tracking branch 'origin/main' into renovate/major-vitest-monorepo 2025-11-05 21:24:45 +02:00
Elian Doran
dbe51ccaf3
Fix LLM streaming test race conditions after Vite update (#7629) 2025-11-05 21:20:11 +02:00
Elian Doran
ba61ab18ff
docs: sync 2025-11-05 21:01:39 +02:00
Elian Doran
2e14522f86
Merge remote-tracking branch 'origin/main' 2025-11-05 21:00:28 +02:00
copilot-swe-agent[bot]
993d53ed97 Complete vi.waitFor() migration for all async streaming tests
Replaced all remaining setTimeout calls with vi.waitFor() for consistency and reliability.

Co-authored-by: eliandoran <21236836+eliandoran@users.noreply.github.com>
2025-11-05 18:21:48 +00:00
copilot-swe-agent[bot]
730e2da932 Improve test reliability by using vi.waitFor() for async checks
Replaced hardcoded timeouts with vi.waitFor() for better test reliability.

Co-authored-by: eliandoran <21236836+eliandoran@users.noreply.github.com>
2025-11-05 18:19:55 +00:00
copilot-swe-agent[bot]
18a198496b Fix syntax errors in LLM service test mocks
Fixed vi.mock() syntax errors that were preventing tests from running.

Co-authored-by: eliandoran <21236836+eliandoran@users.noreply.github.com>
2025-11-05 18:16:47 +00:00
copilot-swe-agent[bot]
5eb791fd65 Fix LLM streaming test race conditions after Vite update
Added waits for async streaming operations in tests and reduced concurrent request count to 2 for reliability.

Co-authored-by: eliandoran <21236836+eliandoran@users.noreply.github.com>
2025-11-05 18:12:52 +00:00
copilot-swe-agent[bot]
27cc022fb8 Initial plan 2025-11-05 17:46:45 +00:00
Elian Doran
4ae38ac5d6
docs(user): widget basics missing template (closes #6148) 2025-11-05 18:32:34 +02:00
Adorian Doran
d5cb6a86c8 Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/ui-improvements 2025-11-05 17:35:10 +02:00
Elian Doran
a577fd45e2
fix(quick_search): enable Numpad Enter to trigger quick search (#7624) 2025-11-05 14:49:01 +02:00
Elian Doran
977284fe57
docs(user): document read-only database (closes #4341) 2025-11-05 10:20:35 +02:00
SiriusXT
26ea43d604 chore(test): add vitest for NumpadEnter 2025-11-05 16:01:26 +08:00
SiriusXT
4cb328bdb3 Merge branch 'main' into quick_search 2025-11-05 15:41:13 +08:00
SiriusXT
16785a5c0b fix(quick_search): enable Numpad Enter to trigger quick search 2025-11-05 15:40:12 +08:00
Elian Doran
d271fe7fdd
docs(demo): clean up expansion state 2025-11-05 09:26:14 +02:00
Elian Doran
88b9709f15
docs(user): launch bar clarifications in the LLM doc 2025-11-05 08:26:34 +02:00
Elian Doran
f55edabe92
chore(edit-docs): set different port to edit-demo 2025-11-05 08:19:37 +02:00
Elian Doran
2b983f871e
docs(demo): link to old documentation (closes #5211) 2025-11-05 08:19:25 +02:00
Elian Doran
ab298cbb3b
docs(user): how to set data dir on Windows (closes #4853) 2025-11-05 08:09:15 +02:00
Elian Doran
abeeea584f
chore(deps): update dependency sax to v1.4.3 (#7622) 2025-11-05 07:47:19 +02:00
Elian Doran
4d5597cc75
chore(deps): update dependency @redocly/cli to v2.11.0 (#7623) 2025-11-05 07:46:39 +02:00
Elian Doran
c684712141
chore(deps): update dependency axios to v1.13.2 (#7621) 2025-11-05 07:45:33 +02:00
renovate[bot]
a8bb301296
chore(deps): update dependency @redocly/cli to v2.11.0 2025-11-05 01:34:43 +00:00
renovate[bot]
d5bfa466a2
chore(deps): update dependency sax to v1.4.3 2025-11-05 01:34:00 +00:00
renovate[bot]
7651c58c47
chore(deps): update dependency axios to v1.13.2 2025-11-05 01:33:17 +00:00
Elian Doran
c2ce36d963
docs(user): mention structure difference 2025-11-04 23:13:34 +02:00
Elian Doran
3359ff5470
docs(dev): update database structure 2025-11-04 22:53:42 +02:00
Elian Doran
421c1f257e
fix(electron): port-in-use dialog shown when opening a new window | (#7595) 2025-11-04 19:29:46 +02:00
Elian Doran
97e87741ee
Add multi-branch prefix editing support (#7598) 2025-11-04 19:17:31 +02:00
Elian Doran
193caf8c21
chore: clean up generated type definitions 2025-11-04 19:07:42 +02:00
Elian Doran
d521bda6ab
Add comprehensive technical and architectural documentation (#7600) 2025-11-04 18:50:48 +02:00
Elian Doran
b80cb22985
chore(deps): clean up package lock 2025-11-04 18:20:12 +02:00
Elian Doran
7131d44d03
docs(dev): integrate rest of the documentation 2025-11-04 18:16:20 +02:00
Elian Doran
7369f9d532
docs(dev): integrate architecture guide 2025-11-04 17:24:38 +02:00
Elian Doran
58ac325634
docs(dev): integrate some of the architecture notes 2025-11-04 15:51:54 +02:00
Elian Doran
579b2ce76e
Merge remote-tracking branch 'origin/main' into copilot/add-technical-documentation 2025-11-04 15:19:49 +02:00
copilot-swe-agent[bot]
0494032fb5 Convert ASCII diagrams to Mermaid.js format
Co-authored-by: eliandoran <21236836+eliandoran@users.noreply.github.com>
2025-11-04 12:35:56 +00:00
Elian Doran
48853555f5
Fix documentation errors, broken links, and standardize to American English (#7599) 2025-11-04 14:31:39 +02:00
Elian Doran
0cd6f0d267
Merge branch 'main' into copilot/improve-user-documentation 2025-11-04 14:30:51 +02:00
Elian Doran
0ae4defc6d
docs(dev): reorganize and clean up technical documentation 2025-11-04 10:55:48 +02:00
Elian Doran
db644f20ed
docs(dev): releasing a new version 2025-11-04 09:23:56 +02:00
Elian Doran
59a2ef7527
chore(build-docs): add preview entrypoint 2025-11-04 09:15:27 +02:00
Elian Doran
757a046474
feat(build-docs): add root 404 page 2025-11-04 09:13:12 +02:00
Elian Doran
aeb0f44a43
chore(website): fix typecheck issue 2025-11-04 08:55:05 +02:00
Elian Doran
5186ea3fff
chore(deps): duplicate dependency in lock 2025-11-04 08:51:54 +02:00
Elian Doran
70a4feff50
edited notes: remove comma for flexible styling (#7609) 2025-11-04 08:43:27 +02:00
Elian Doran
91f85e6675
chore(deps): update typescript-eslint monorepo to v8.46.3 (#7614) 2025-11-04 08:41:51 +02:00
Elian Doran
0cb989e74f
chore(deps): update dependency openai to v6.8.0 (#7618) 2025-11-04 07:42:44 +02:00
Elian Doran
d4e31e9d98
fix(deps): update dependency eslint-linter-browserify to v9.39.1 (#7615) 2025-11-04 07:40:52 +02:00
Elian Doran
6c3b5314c8
chore(deps): update dependency sax to v1.4.2 (#7613) 2025-11-04 07:40:20 +02:00
renovate[bot]
3faac9f26e
chore(deps): update typescript-eslint monorepo to v8.46.3 2025-11-04 05:35:53 +00:00
Elian Doran
c31ac1a6ee
fix(deps): update dependency react-i18next to v16.2.4 (#7616) 2025-11-04 07:34:35 +02:00
Elian Doran
9eff6ad4c2
fix(deps): update eslint monorepo to v9.39.1 (#7617) 2025-11-04 07:33:26 +02:00
Elian Doran
9deb7ba4e9
Translations update from Hosted Weblate (#7619) 2025-11-04 07:30:59 +02:00
Francis C.
93d77ca06e
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (152 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/zh_Hant/
2025-11-04 01:51:28 +00:00
Giovi
a42daccc2e
Translated using Weblate (Italian)
Currently translated at 99.3% (151 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/it/
2025-11-04 01:51:26 +00:00
Giovi
33c64b604e
Translated using Weblate (Italian)
Currently translated at 99.7% (386 of 387 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/it/
2025-11-04 01:51:21 +00:00
Giovi
f89c14b35a
Translated using Weblate (Italian)
Currently translated at 100.0% (1617 of 1617 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/it/
2025-11-04 01:51:16 +00:00
Francis C.
1fa3420abe
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (387 of 387 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/zh_Hant/
2025-11-04 01:51:14 +00:00
renovate[bot]
f8b8edd5aa
chore(deps): update dependency openai to v6.8.0 2025-11-04 01:42:30 +00:00
renovate[bot]
4c90319c9e
fix(deps): update eslint monorepo to v9.39.1 2025-11-04 01:41:49 +00:00
renovate[bot]
3b531544a3
fix(deps): update dependency react-i18next to v16.2.4 2025-11-04 01:41:09 +00:00
renovate[bot]
25d9695db0
fix(deps): update dependency eslint-linter-browserify to v9.39.1 2025-11-04 01:40:28 +00:00
renovate[bot]
caf88473f6
chore(deps): update dependency sax to v1.4.2 2025-11-04 01:38:35 +00:00
SngAbc
b32dc18cf6
fix: incorrect options description 2025-11-04 09:36:34 +08:00
SiriusXT
5a7349121a fix: incorrect options description 2025-11-04 09:24:18 +08:00
Adorian Doran
dcc5b9f422 Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/ui-improvements 2025-11-03 23:44:18 +02:00
Adorian Doran
0b01890a11 client: add a launcher to open the command palette 2025-11-03 23:44:06 +02:00
Elian Doran
686c8936cb
docs(dev): integrate more of the old documentation 2025-11-03 22:48:14 +02:00
Elian Doran
d9071f2d8e
docs(dev): update recent technical documentation 2025-11-03 22:16:15 +02:00
perf3ct
2a0472ae42
fix(search): resolve compilation issue due to variables with the same name 2025-11-03 11:44:43 -08:00
Elian Doran
4a47ff2ea0
docs(dev): add shareAlias to all notes 2025-11-03 20:31:53 +02:00
Elian Doran
d784acaf13
docs(dev): add frontpage 2025-11-03 20:13:21 +02:00
Elian Doran
e893c2f17a
Integrate Developer Guide into documentation build process (#7601) 2025-11-03 19:44:42 +02:00
Elian Doran
aa526d9735
fix(build-docs): favicon missing 2025-11-03 19:28:03 +02:00
Elian Doran
53e459d0d5
feat(build-docs): add redirect to user-guide 2025-11-03 19:16:23 +02:00
Elian Doran
c54befa8a1
fix(export/share): header link not working 2025-11-03 18:46:24 +02:00
Elian Doran
87c055913f
fix(export/share): some links not working 2025-11-03 18:19:34 +02:00
Adorian Doran
8c2354df71 client: format code 2025-11-03 18:16:41 +02:00
Adorian Doran
d650b801e6 client: add a launcher for zen mode 2025-11-03 17:52:08 +02:00
Adorian Doran
fbb27b512e style/zen mode/translucent title bar: fix broken title bar in multi-split windows 2025-11-03 16:09:05 +02:00
Adorian Doran
3ae7bd59ec style/zen mode: disable translucency for the title bar when backdrop effects are turned off 2025-11-03 15:59:34 +02:00
Adorian Doran
55f7a26634 style/zen mode: use translucency for the title bar 2025-11-03 15:53:05 +02:00
Elian Doran
e3e5109270
feat(export/share): export without inner subdirectory 2025-11-03 15:49:31 +02:00
Adorian Doran
aa7f01313a style/zen mode: improve scrolling for text notes 2025-11-03 15:24:09 +02:00
Adorian Doran
6f82c283e9 Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/ui-improvements 2025-11-03 15:13:21 +02:00
contributor
aa7ecaf684 edited notes: space instead of comma for flexible styling 2025-11-03 15:13:06 +02:00
Elian Doran
056c07591e
chore: remove extra sample and generated files 2025-11-03 10:48:45 +02:00
Elian Doran
0df15a02ba
Merge remote-tracking branch 'origin/main' into copilot/integrate-technical-documentation 2025-11-03 10:46:37 +02:00
Elian Doran
02404a5f5b
fix(build-docs): error due to becca not loading 2025-11-03 10:07:05 +02:00
copilot-swe-agent[bot]
50a69248a7 Fix keyboard shortcut support and address code review feedback
- Add editBranchPrefixCommand in note_tree.ts to support F2 keyboard shortcut with multi-selection
- Extract CSS to separate branch_prefix.css file
- Remove hard-coded color, use CSS class instead
- Fix translation key usage to keep t() calls visible in IDE
- Remove all inline styles

Co-authored-by: eliandoran <21236836+eliandoran@users.noreply.github.com>
2025-11-03 08:01:56 +00:00
Elian Doran
ed146f71c5
chore(dev): fix untracked type definitions after typecheck 2025-11-03 09:52:28 +02:00
Elian Doran
4492876293
chore(deps): update dependency rollup-plugin-webpack-stats to v2.1.7 (#7602) 2025-11-03 08:39:04 +02:00
renovate[bot]
51779cf218
chore(deps): update dependency rollup-plugin-webpack-stats to v2.1.7 2025-11-03 06:17:52 +00:00
Elian Doran
5536284826
fix(deps): update dependency debounce to v3 (#7604) 2025-11-03 08:15:40 +02:00
Elian Doran
e4d74108c6
chore(deps): update pnpm to v10.20.0 (#7603) 2025-11-03 08:15:05 +02:00
Elian Doran
faf67f5da2
chore(deps): update dependency @types/node to v24.10.0 (#7605) 2025-11-03 08:13:58 +02:00
renovate[bot]
021d1ba0fb
chore(deps): update dependency @types/node to v24.10.0 2025-11-03 01:51:50 +00:00
SngAbc
5782e58db1
Merge branch 'main' into electron_newwindow 2025-11-03 09:49:46 +08:00
renovate[bot]
ffead56a1d
fix(deps): update dependency debounce to v3 2025-11-03 01:12:20 +00:00
renovate[bot]
b644701983
chore(deps): update pnpm to v10.20.0 2025-11-03 01:11:39 +00:00
Adorian Doran
e8bf12c4ab style/zen mode: tweak text vertical centering offset 2025-11-03 00:40:00 +02:00
copilot-swe-agent[bot]
18810bb86f Address code review feedback - improve outputSubDir handling
Improved the importAndExportDocs function to better handle the empty outputSubDir case:
- Use meaningful name for temporary zip file ('user-guide' instead of '')
- Explicitly handle empty outputSubDir for root directory output
- Added comments to clarify the behavior

Co-authored-by: eliandoran <21236836+eliandoran@users.noreply.github.com>
2025-11-02 22:31:25 +00:00
copilot-swe-agent[bot]
4f442551a9 Integrate Developer Guide into documentation build process
Added Developer Guide to the documentation build process alongside the User Guide.
- Modified build-docs.ts to import and export both User Guide and Developer Guide
- Created importAndExportDocs helper function to handle multiple documentation sources
- Developer Guide is exported to /site/developer-guide/ subdirectory
- Updated GitHub workflow to validate Developer Guide is built
- Added build-docs app to workflow triggers

The documentation build now produces:
- User Guide at /site/ (root) and /site/user-guide/
- Developer Guide at /site/developer-guide/
- Script API at /site/script-api/{backend,frontend}/
- REST API at /site/rest-api/{internal,etapi}/

Co-authored-by: eliandoran <21236836+eliandoran@users.noreply.github.com>
2025-11-02 22:28:24 +00:00
copilot-swe-agent[bot]
a8f565d912 Remove build artifacts from git and update .gitignore 2025-11-02 22:23:43 +00:00
Adorian Doran
344f2d819e style/zen mode: hide the shared note info bar 2025-11-03 00:19:40 +02:00
copilot-swe-agent[bot]
0c6a57d3bb Fix documentation build system - resolve becca module instance issue
Fixed the issue where multiple becca instances were being created due to inconsistent module import paths. The solution was to export becca from becca_loader and access it from there, ensuring a single instance is used throughout the build process.

Co-authored-by: eliandoran <21236836+eliandoran@users.noreply.github.com>
2025-11-02 22:18:49 +00:00
Adorian Doran
d2e9101675 style/zen mode/fixed formatting toolbar: allow items to overflow if narrow window 2025-11-03 00:14:44 +02:00
copilot-swe-agent[bot]
82e5de2261 Add input validation for prefix to address security concerns
Co-authored-by: eliandoran <21236836+eliandoran@users.noreply.github.com>
2025-11-02 22:06:14 +00:00
copilot-swe-agent[bot]
ff4cd7eae5 Fix grammar: 'type of notes' → 'type of note' in Collections.md
Co-authored-by: eliandoran <21236836+eliandoran@users.noreply.github.com>
2025-11-02 22:04:34 +00:00
copilot-swe-agent[bot]
a62c9a1a2f Fix broken wiki-style link in Scripting.md
Co-authored-by: eliandoran <21236836+eliandoran@users.noreply.github.com>
2025-11-02 22:03:29 +00:00
copilot-swe-agent[bot]
cf406383c3 Standardize spelling to American English (behavior, categorizing)
Co-authored-by: eliandoran <21236836+eliandoran@users.noreply.github.com>
2025-11-02 22:01:44 +00:00
copilot-swe-agent[bot]
07fe42d04e Add quick reference guide for technical documentation
Co-authored-by: eliandoran <21236836+eliandoran@users.noreply.github.com>
2025-11-02 22:01:17 +00:00
copilot-swe-agent[bot]
5b8bb8587d Address code review feedback - add logging and constant for virtual branches
Co-authored-by: eliandoran <21236836+eliandoran@users.noreply.github.com>
2025-11-02 22:00:54 +00:00
copilot-swe-agent[bot]
154492e454 Add comprehensive technical and architectural documentation
Co-authored-by: eliandoran <21236836+eliandoran@users.noreply.github.com>
2025-11-02 21:59:29 +00:00
copilot-swe-agent[bot]
b1729ad7ec Fix additional clarity and grammar issues
Co-authored-by: eliandoran <21236836+eliandoran@users.noreply.github.com>
2025-11-02 21:59:22 +00:00
copilot-swe-agent[bot]
01deab9c79 Initial plan 2025-11-02 21:57:43 +00:00
copilot-swe-agent[bot]
daec11b981 Fix additional grammar and clarity issues in documentation
Co-authored-by: eliandoran <21236836+eliandoran@users.noreply.github.com>
2025-11-02 21:57:26 +00:00
copilot-swe-agent[bot]
7cdd8ffbe2 Add gitignore for build artifacts and verify tests pass
Co-authored-by: eliandoran <21236836+eliandoran@users.noreply.github.com>
2025-11-02 21:56:46 +00:00
copilot-swe-agent[bot]
25ac9e2aa1 Fix spelling, grammar, and broken links in documentation
Co-authored-by: eliandoran <21236836+eliandoran@users.noreply.github.com>
2025-11-02 21:54:40 +00:00
copilot-swe-agent[bot]
4fc434a52e Implement multi-branch prefix editing functionality
- Add setPrefixBatch API endpoint to handle batch prefix updates
- Update branch_prefix dialog to support multiple branches
- Remove noSelectedNotes constraint from edit branch prefix menu
- Add translations for multi-branch prefix editing

Co-authored-by: eliandoran <21236836+eliandoran@users.noreply.github.com>
2025-11-02 21:52:02 +00:00
copilot-swe-agent[bot]
3e0d1bfa44 Initial plan 2025-11-02 21:47:57 +00:00
copilot-swe-agent[bot]
3b02eb8851 Initial plan 2025-11-02 21:47:17 +00:00
copilot-swe-agent[bot]
4c5b2a7c75 Initial plan 2025-11-02 21:39:44 +00:00
Elian Doran
a5a90b582a
Translations update from Hosted Weblate (#7597) 2025-11-02 23:05:06 +02:00
Adorian Doran
e6d2009605 Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/ui-improvements 2025-11-02 23:00:20 +02:00
Adorian Doran
5d706a88d8 style/zen mode/fixed formatting toolbar: fix the position in multi-split mode 2025-11-02 23:00:00 +02:00
Hosted Weblate
510601037d
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/
2025-11-02 20:35:51 +00:00
Eugene
b312b6f3bc
Translated using Weblate (Russian)
Currently translated at 15.1% (23 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ru/
2025-11-02 20:35:47 +00:00
Eugene
0c1efd3402
Translated using Weblate (Russian)
Currently translated at 64.4% (76 of 118 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ru/
2025-11-02 20:35:46 +00:00
Elian Doran
69182a1a42
feat(mermaid): add link to docs (closes #5378) 2025-11-02 22:32:36 +02:00
Elian Doran
8a63f2028c
docs(user): update link to ETAPI 2025-11-02 22:20:41 +02:00
Elian Doran
947330ed73
chore(options/etapi): update help 2025-11-02 22:08:42 +02:00
Elian Doran
4526455486
fix(help): webview source not updating 2025-11-02 21:40:21 +02:00
Adorian Doran
c7c7e05106 Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/ui-improvements 2025-11-02 21:12:36 +02:00
Adorian Doran
e250107202 style/zen mode: fix collections not showing up 2025-11-02 21:12:23 +02:00
Elian Doran
1d259aab9d
Improve documentation building & static Swagger (#7570) 2025-11-02 20:24:58 +02:00
Elian Doran
5171675dee
chore(build-docs): fix URL 2025-11-02 20:13:10 +02:00
Elian Doran
6bc54892a3
Update apps/build-docs/src/swagger.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-02 20:12:50 +02:00
Elian Doran
0a6670ce5e
Update apps/build-docs/src/backend_script_entrypoint.ts
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-11-02 20:05:44 +02:00
Elian Doran
beb7c66ff5
feat(build-docs): rewrite URLs for in-app help 2025-11-02 19:45:16 +02:00
Adorian Doran
c141cbcf07 style/zen mode/fixed formatting toolbar: improve pointer events handling 2025-11-02 19:08:59 +02:00
Adorian Doran
8e83562e6a style/zen mode/fixed formatting toolbar: fix backdrop blur 2025-11-02 18:37:02 +02:00
Elian Doran
966e5a2ef3
chore(build-docs): update meta 2025-11-02 18:33:13 +02:00
Elian Doran
4f5be54030
chore(build-docs): generate types for doc 2025-11-02 18:28:31 +02:00
Adorian Doran
08197f56d0 style/zen mode/fixed formatting toolbar: add entrance animation 2025-11-02 18:22:07 +02:00
Elian Doran
68c6260e45
chore(build-docs): relocate OpenAPI location 2025-11-02 18:14:03 +02:00
Adorian Doran
ff0d8a70ad style/zen mode/fixed formatting toolbar: add backdrop blur 2025-11-02 18:08:05 +02:00
Elian Doran
85bfd49d1c
Merge remote-tracking branch 'origin/main' into feature/api_docs
; Conflicts:
;	_regroup/package.json
;	pnpm-lock.yaml
2025-11-02 18:05:02 +02:00
Adorian Doran
605b317f29 style/zen mode: restyle the fixed formatting toolbar, relocate at the bottom of the screen 2025-11-02 17:21:27 +02:00
SngAbc
6f0a264869
Merge branch 'main' into electron_newwindow 2025-11-02 23:06:58 +08:00
Adorian Doran
6a89e096e5 style/zen mode: hide promoted attributes 2025-11-02 16:37:19 +02:00
Adorian Doran
e4e0f7619b Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/ui-improvements 2025-11-02 16:34:18 +02:00
SiriusXT
f3f07cdd28 fix(electron): port-in-use dialog shown when opening a new window 2025-11-02 20:30:01 +08:00
Elian Doran
23f2e1eb45
chore(deps): update dependency eslint-plugin-playwright to v2.3.0 (#7585) 2025-11-02 12:15:15 +02:00
Elian Doran
9bbd6d146b
fix(deps): update dependency globals to v16.5.0 (#7591) 2025-11-02 12:14:40 +02:00
Elian Doran
37aa8ec176
chore(deps): update node.js to v24 (#7593) 2025-11-02 12:14:22 +02:00
renovate[bot]
05f3f9627d
chore(deps): update node.js to v24 2025-11-02 09:31:25 +00:00
Elian Doran
a9fa99cadf
chore(deps): update dependency @smithy/middleware-retry to v4.4.6 (#7574) 2025-11-02 11:30:19 +02:00
Elian Doran
d5c1604a58
chore(deps): update dependency axios to v1.13.1 (#7575) 2025-11-02 11:29:30 +02:00
Elian Doran
e99f821e88
chore(deps): update dependency chardet to v2.1.1 (#7576) 2025-11-02 11:29:19 +02:00
renovate[bot]
6571ff9d84
fix(deps): update dependency globals to v16.5.0 2025-11-02 09:29:14 +00:00
Elian Doran
9d63ef20fb
chore(deps): update dependency esbuild to v0.25.12 (#7577) 2025-11-02 11:29:06 +02:00
renovate[bot]
71a3cf0cfe
chore(deps): update dependency eslint-plugin-playwright to v2.3.0 2025-11-02 09:28:29 +00:00
Elian Doran
e5e55e1cf1
chore(deps): update dependency happy-dom to v20.0.10 (#7578) 2025-11-02 11:28:12 +02:00
Elian Doran
83b13cae92
chore(deps): update dependency ollama to v0.6.2 (#7579) 2025-11-02 11:27:57 +02:00
Elian Doran
6663c3abc1
fix(deps): update dependency dayjs to v1.11.19 (#7581) 2025-11-02 11:27:37 +02:00
renovate[bot]
738b28c2b3
chore(deps): update dependency esbuild to v0.25.12 2025-11-02 09:27:32 +00:00
Elian Doran
4eec6021c3
fix(deps): update dependency react-i18next to v16.2.3 (#7582) 2025-11-02 11:27:12 +02:00
Elian Doran
39bda30853
chore(deps): update dependency @anthropic-ai/sdk to v0.68.0 (#7583) 2025-11-02 11:26:57 +02:00
Elian Doran
6adcaca5e0
chore(deps): update dependency electron to v38.5.0 (#7584) 2025-11-02 11:26:49 +02:00
Elian Doran
5a5f71fc71
chore(deps): update dependency express-rate-limit to v8.2.1 (#7586) 2025-11-02 11:26:01 +02:00
Elian Doran
f3765f95b5
chore(deps): update dependency node-abi to v4.17.0 (#7587) 2025-11-02 11:25:45 +02:00
Elian Doran
6ebb0eb03e
chore(deps): update dependency rimraf to v6.1.0 (#7588) 2025-11-02 11:25:30 +02:00
Elian Doran
b42aa32b72
chore(deps): update pnpm to v10.20.0 (#7589) 2025-11-02 11:25:13 +02:00
Elian Doran
11e1ea7ea5
fix(deps): update dependency eslint-linter-browserify to v9.39.0 (#7590) 2025-11-02 11:24:51 +02:00
Elian Doran
5f6fac994f
fix(deps): update eslint monorepo to v9.39.0 (#7592) 2025-11-02 11:24:15 +02:00
Elian Doran
d7460e9fe5
chore(renovate): ignore legacy Dockerfile from Renovate updates 2025-11-02 11:22:29 +02:00
SiriusXT
ef82c3d48b fix(electron): port-in-use dialog shown when opening a new window | 2025-11-02 16:48:05 +08:00
renovate[bot]
89585e38ce
fix(deps): update eslint monorepo to v9.39.0 2025-11-02 02:03:29 +00:00
renovate[bot]
938c6e356b
fix(deps): update dependency eslint-linter-browserify to v9.39.0 2025-11-02 02:01:50 +00:00
renovate[bot]
b7dd806d07
chore(deps): update pnpm to v10.20.0 2025-11-02 02:01:05 +00:00
renovate[bot]
a1d86cef58
chore(deps): update dependency rimraf to v6.1.0 2025-11-02 02:00:54 +00:00
renovate[bot]
1fec5bb564
chore(deps): update dependency node-abi to v4.17.0 2025-11-02 02:00:49 +00:00
renovate[bot]
35e98addc8
chore(deps): update dependency express-rate-limit to v8.2.1 2025-11-02 01:59:58 +00:00
renovate[bot]
79290633b1
chore(deps): update dependency electron to v38.5.0 2025-11-02 01:58:25 +00:00
renovate[bot]
ffc9e715ef
chore(deps): update dependency @anthropic-ai/sdk to v0.68.0 2025-11-02 01:57:40 +00:00
renovate[bot]
8f8302c4a3
fix(deps): update dependency react-i18next to v16.2.3 2025-11-02 01:56:54 +00:00
renovate[bot]
136b449f60
fix(deps): update dependency dayjs to v1.11.19 2025-11-02 01:56:07 +00:00
renovate[bot]
61319c3a14
chore(deps): update dependency ollama to v0.6.2 2025-11-02 01:55:13 +00:00
renovate[bot]
104a1f0c3a
chore(deps): update dependency happy-dom to v20.0.10 2025-11-02 01:54:26 +00:00
renovate[bot]
16200312ce
chore(deps): update dependency chardet to v2.1.1 2025-11-02 01:52:16 +00:00
renovate[bot]
664de68d53
chore(deps): update dependency axios to v1.13.1 2025-11-02 01:51:29 +00:00
renovate[bot]
6190949dcc
chore(deps): update dependency @smithy/middleware-retry to v4.4.6 2025-11-02 01:50:40 +00:00
Elian Doran
3ac248169f
chore(build-docs): fix typecheck issues 2025-11-01 23:40:27 +02:00
Elian Doran
15e240ac33
refactor(build-docs): remove old Swagger integration 2025-11-01 23:37:17 +02:00
Elian Doran
d30fc09e73
chore(build-docs): fix link to FNote 2025-11-01 23:13:35 +02:00
Elian Doran
6a2b9b748f
chore(build-docs): add project names to typedoc 2025-11-01 23:03:14 +02:00
Elian Doran
b5e2187c0d
chore(build-docs): update meta 2025-11-01 23:00:14 +02:00
Elian Doran
d9a349a531
refactor(build-docs): define output for typedoc at script level 2025-11-01 22:54:42 +02:00
Elian Doran
2c1cebfbc3
feat(build-docs): split documentation in two 2025-11-01 22:51:33 +02:00
Elian Doran
c6738ac52f
feat(build-docs): generate script API 2025-11-01 22:42:27 +02:00
Elian Doran
604f2abf5a
chore(build-docs): fix wrong mkdir 2025-11-01 21:47:07 +02:00
Elian Doran
617703899f
chore(build-docs): relocate to /rest-api 2025-11-01 21:35:18 +02:00
Elian Doran
6322ca11c9
feat(share): improve webview layout 2025-11-01 21:28:31 +02:00
Elian Doran
d62aecc551
fix(build-docs): crash in clean environment 2025-11-01 21:15:34 +02:00
Elian Doran
953b376ce3
refactor(build-docs): trigger build of share theme internally 2025-11-01 20:58:32 +02:00
Elian Doran
80f1707d8b
chore(build-docs): integrate with docs:build 2025-11-01 20:52:28 +02:00
Elian Doran
4f9f8652e2
fix(build-docs): links to API reference 2025-11-01 20:47:00 +02:00
Elian Doran
6e06d7169f
refactor(build-docs): integrate with original build-docs script 2025-11-01 20:37:03 +02:00
Elian Doran
ecf12a4063
feat(build-docs): build both docs 2025-11-01 20:22:17 +02:00
Elian Doran
64428ae761
feat(build-docs): clean before building 2025-11-01 20:16:59 +02:00
Elian Doran
3524c34ff9
feat(build-docs): switch to redocly 2025-11-01 20:15:38 +02:00
Elian Doran
3f99c8b337
feat(build-docs): copy swagger UI 2025-11-01 20:03:53 +02:00
Elian Doran
27d9ae885f
Merge branch 'main' of github.com:TriliumNext/Trilium 2025-11-01 19:36:11 +02:00
Elian Doran
35f244cf50
chore(deps): adapt most of the tests 2025-11-01 19:21:57 +02:00
Elian Doran
fa30bfc04b
chore(deps): fix typecheck issues 2025-11-01 18:26:43 +02:00
Adorian Doran
214ba5265a Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/ui-improvements 2025-11-01 18:20:08 +02:00
Elian Doran
a072466f75
chore(deps): adapt to vite major upgrade 2025-11-01 18:18:49 +02:00
Elian Doran
ae5c898537
Merge branch 'main' into renovate/major-vitest-monorepo 2025-11-01 16:51:38 +02:00
Elian Doran
35efd2a680
test(server): broken test due to CLS 2025-11-01 16:48:49 +02:00
Elian Doran
19c6ae6fe5
Keyboard shortcut for today note button (#7549) 2025-11-01 16:17:24 +02:00
SngAbc
bf0761a303
Fix: activate the nearest path when opening a cloned note (#7552) 2025-11-01 16:06:26 +02:00
Weblate (bot)
8391fd7534
Translations update from Hosted Weblate (#7566)
* Update translation files

Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/

* Translated using Weblate (Portuguese)

Currently translated at 9.2% (14 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/pt/

---------

Co-authored-by: Francisco Machado <kikomachado089@gmail.com>
2025-11-01 16:04:10 +02:00
SngAbc
6d4b87888a
fix(electron): allow extra window to reload (#7567) 2025-11-01 16:02:17 +02:00
renovate[bot]
921a37f4a2
chore(deps): update vitest monorepo to v4 2025-11-01 12:11:35 +00:00
Weblate (bot)
3f0b0f9b62
Translations update from Hosted Weblate (#7565) 2025-11-01 14:09:26 +02:00
Elian Doran
859d9dcd04
docs(user): document system requirements 2025-10-31 11:52:40 +02:00
Adorian Doran
ecb6dc7923 Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/ui-improvements 2025-10-31 11:33:07 +02:00
Elian Doran
76dd9baea8
docs(user): document adjusting borders 2025-10-31 11:21:17 +02:00
Elian Doran
82ff5f6660
docs(user): sync 2025-10-31 11:07:22 +02:00
Elian Doran
b52d30c55a
chore(dialog/export): strange order with OPML 2025-10-31 11:05:40 +02:00
Elian Doran
99fd088ff5
chore(share): use same sandbox features for iframe 2025-10-31 10:12:56 +02:00
Elian Doran
945f29c759
feat(share): render webviews using iframe 2025-10-31 10:12:15 +02:00
Elian Doran
98f42887d8
Translations update from Hosted Weblate (#7562) 2025-10-31 09:09:29 +02:00
Eduard Frigola
a1b589148b
Translated using Weblate (Catalan)
Currently translated at 17.8% (69 of 387 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ca/
2025-10-31 08:04:01 +01:00
Elian Doran
66bb639a15
docs(user): port patterns of personal knowledge 2025-10-30 22:50:14 +02:00
Elian Doran
1784b50990
docs(user): port privacy policy 2025-10-30 22:37:59 +02:00
Elian Doran
5e9c271bfd
docs(release): port v0.48 changelog 2025-10-30 22:36:41 +02:00
Elian Doran
70837fdc69
Translations update from Hosted Weblate (#7559) 2025-10-30 16:07:11 +02:00
Hosted Weblate
67d80512f6
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-10-30 13:46:35 +00:00
Elian Doran
dd8a1e8aca
docs(user): document all share theme attributes 2025-10-30 15:46:13 +02:00
Elian Doran
99f43e2280
docs(user): improve fine-grained directory path documentation 2025-10-30 12:02:32 +02:00
Elian Doran
bcffa77c90
docs(user): index page for import/export 2025-10-30 11:54:44 +02:00
Elian Doran
8ab2069411
docs(user): fix empty section in kanban board 2025-10-30 11:43:48 +02:00
Elian Doran
21fc61d132
docs(user): restructure LLM section 2025-10-30 11:42:46 +02:00
Elian Doran
552df50fe4
docs(user): add icons to most notes 2025-10-30 11:40:07 +02:00
Elian Doran
c058b663ee
Translations update from Hosted Weblate (#7556) 2025-10-30 09:05:27 +02:00
Francis C
6c19370235
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (152 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/zh_Hant/
2025-10-30 07:50:44 +01:00
Francis C
d332bb57ba
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (152 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/zh_Hans/
2025-10-30 07:50:44 +01:00
Antonio Sanchez Castellón
3ef38e7f4e
Translated using Weblate (Spanish)
Currently translated at 100.0% (152 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/es/
2025-10-30 07:50:43 +01:00
Francis C
1abc3b5534
Translated using Weblate (Japanese)
Currently translated at 100.0% (1621 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-10-30 07:50:42 +01:00
Francis C
ddcd27ddf6
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (387 of 387 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/zh_Hant/
2025-10-30 07:50:41 +01:00
Francis C
ff385c8c88
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (1621 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hant/
2025-10-30 07:50:40 +01:00
Antonio Sanchez Castellón
a641e452ce
Translated using Weblate (Spanish)
Currently translated at 100.0% (387 of 387 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/es/
2025-10-30 07:50:39 +01:00
Francis C
5f4fa25da5
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (387 of 387 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/zh_Hans/
2025-10-30 07:50:38 +01:00
Antonio Sanchez Castellón
ea177e972e
Translated using Weblate (Spanish)
Currently translated at 100.0% (1621 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/es/
2025-10-30 07:50:38 +01:00
Manfred Manni
7e3013bfdc
Translated using Weblate (German)
Currently translated at 100.0% (1621 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/de/
2025-10-30 07:50:37 +01:00
Francis C
5115baeb21
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (1621 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hans/
2025-10-30 07:50:36 +01:00
Hosted Weblate
35a924a05a
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-10-30 07:50:36 +01:00
Elian Doran
78f067965f
fix(share): TOC indicator no longer working due to layout changes 2025-10-30 08:49:48 +02:00
Elian Doran
413b16b51c
chore(collections): rename Board to Kanban Board 2025-10-30 08:42:00 +02:00
Elian Doran
59586c53b2
chore(website): rename Board to Kanban Board 2025-10-30 08:34:28 +02:00
Elian Doran
70ed1d7abb
chore(website): fix URLs pointing to documentation 2025-10-30 08:33:54 +02:00
Elian Doran
67de6c614c
docs(user): change alias for server documentation 2025-10-30 08:31:26 +02:00
Elian Doran
faf030ab3a
docs(user): minor improvements to the collection main page 2025-10-30 08:18:13 +02:00
Elian Doran
6e20d4b5dd
docs(user): rename Board to Kanban Board 2025-10-30 08:15:57 +02:00
Elian Doran
10e809af75
docs(user): rename and reorder collection pages 2025-10-30 08:14:22 +02:00
Elian Doran
f1478f8149
docs(user): change presentation method for collections 2025-10-30 08:13:34 +02:00
Elian Doran
9087adf254
docs(user): move collections one level up 2025-10-30 08:07:09 +02:00
Elian Doran
f944c6d8e2
docs(user): add slug + tips on how to identify pages without one easily 2025-10-30 08:03:09 +02:00
Adorian Doran
131fb43ab7 style/zen mode: tweak 2025-10-30 02:48:38 +02:00
Adorian Doran
8a76fdb8d1 style/zen mode: center content, increase font size 2025-10-30 02:30:51 +02:00
Adorian Doran
8e3dbb2f65 client: remove redundant code 2025-10-30 02:27:57 +02:00
Adorian Doran
8b4fee1680 client: make code notes full-width 2025-10-30 01:03:22 +02:00
Adorian Doran
a370b52614 client: remove no longer used translation strings 2025-10-30 00:57:27 +02:00
Adorian Doran
4063229982 client: allow changing the max content width option without a frontend reload 2025-10-30 00:49:02 +02:00
Adorian Doran
1ef03b7a77 client: rework max content width handling 2025-10-30 00:23:41 +02:00
Adorian Doran
e510653edb Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/ui-improvements 2025-10-29 23:38:05 +02:00
Elian Doran
444e103047
docs(dev): document exporting functionality 2025-10-29 22:36:45 +02:00
Elian Doran
1d6ab64ae5
docs(guide): document exporting for web publishing 2025-10-29 22:21:15 +02:00
Elian Doran
0bc86d7c75
docs(guide): deduplicate home page with quick start 2025-10-29 22:00:31 +02:00
Elian Doran
cfd55147df
Deploy share-based static documentation (#7548) 2025-10-29 21:27:49 +02:00
Elian Doran
754bb61a52
feat(export/share): render 404 page 2025-10-29 21:05:50 +02:00
Adorian Doran
a2c523def1 style: fix a bug preventing background effects to work properly 2025-10-29 20:28:53 +02:00
Elian Doran
4f103375b5
fix(share): 404 not rendering in dev mode 2025-10-29 20:20:35 +02:00
Elian Doran
496091677b
style(share): overflow on wrong element 2025-10-29 20:14:32 +02:00
Elian Doran
618b67f551
fix(share): redesign layout to avoid jumping on tablets 2025-10-29 20:02:02 +02:00
Adorian Doran
e3604edad7 Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/ui-improvements 2025-10-29 19:59:30 +02:00
contributor
9c791df0ed open today note in current tab #7472
https://github.com/TriliumNext/Trilium/pull/7549#issuecomment-3458822614
2025-10-29 19:22:13 +02:00
Elian Doran
ce4f46c226
chore(share): fix relative imports 2025-10-29 19:13:11 +02:00
Elian Doran
44cfbcf7f4
refactor(share): move icon loading in CSS rather than in JS 2025-10-29 19:11:43 +02:00
Elian Doran
a317331551
fix(share): theme toggle flashing while switching between notes 2025-10-29 19:05:23 +02:00
Elian Doran
eeec3e440d
fix(share): flash while theme is loading 2025-10-29 19:00:09 +02:00
Elian Doran
b06aa29ea3
chore(share): remove leftover color management logic 2025-10-29 18:46:55 +02:00
Elian Doran
9c3f9a524e
fix(share): flash of dark color on light theme 2025-10-29 18:46:24 +02:00
Elian Doran
1c832182d6
refactor(share): reduce duplication in theme management 2025-10-29 18:40:31 +02:00
Elian Doran
b58e1f146c
fix(share): light theme not properly restored 2025-10-29 18:35:27 +02:00
Elian Doran
bc86fb95b5
feat(share): add dev mode 2025-10-29 18:27:43 +02:00
Elian Doran
6c43db692e
fix(client): boxicons missing in prod 2025-10-29 18:16:25 +02:00
Elian Doran
6ffce824d1
fix(docker): incorrect version for arm v7 2025-10-29 17:43:10 +02:00
Elian Doran
f1f8f34ef8
fix(export/share): load search index once per page 2025-10-29 15:33:38 +02:00
Elian Doran
a0b19ce526
fix(export/share): search not working on root 2025-10-29 15:26:48 +02:00
Elian Doran
4cc9ba824d
chore(export/share): tweak search results 2025-10-29 15:24:25 +02:00
Elian Doran
08e66c18e7
fix(export/share): navigation in search not working 2025-10-29 14:57:53 +02:00
Elian Doran
cf8089b07f
feat(export/share): functional full-text search 2025-10-29 13:58:37 +02:00
Adorian Doran
426d8296be Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/ui-improvements 2025-10-29 09:30:50 +02:00
Elian Doran
f8c61ecde9
feat(export/share): use better content parsing for search 2025-10-29 08:45:47 +02:00
Elian Doran
6d51da9b88
feat(export/share): generate search index 2025-10-29 08:41:07 +02:00
Elian Doran
0ad95d00dc
chore(ci): try to fix arm v6/v7 build 2025-10-29 08:08:16 +02:00
Adorian Doran
947e43a615 style: allow custom themes to turn off background effects 2025-10-29 03:20:25 +02:00
Adorian Doran
0424fe4fba client/css var utility: add support for parsing boolean values 2025-10-29 03:13:16 +02:00
Adorian Doran
f789b69506 style: disable tab switching animation while background effects are active, improve performance 2025-10-29 02:39:25 +02:00
Adorian Doran
5df512a69c style: use background effects for empty note, refactor 2025-10-29 01:32:47 +02:00
Adorian Doran
2a5f329ada style: darken the main background color 2025-10-29 00:45:40 +02:00
Adorian Doran
4fe3944585 style/right panel: use own background color when background effects are active 2025-10-29 00:34:20 +02:00
Adorian Doran
98b8e97fd9 style/right panel: add translucent background when background effects are active 2025-10-29 00:20:50 +02:00
Adorian Doran
38a1cd0d35 style: tweak gutters 2025-10-28 23:55:51 +02:00
Adorian Doran
ae544a80c2 Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/ui-improvements 2025-10-28 23:43:55 +02:00
Elian Doran
9819a92b48
docs(guide): remove a missing note link 2025-10-28 23:01:56 +02:00
Elian Doran
55a7017e92
docs(guide): document the zoom function 2025-10-28 22:55:52 +02:00
Elian Doran
1581568741
docs(guide): add promoted attribute for alias 2025-10-28 22:31:59 +02:00
Elian Doran
d7982c65dd
docs(guide): add alias for most pages 2025-10-28 22:30:46 +02:00
Elian Doran
39608a2815
docs(guide): home page & third party hosting + sync 2025-10-28 22:07:05 +02:00
Elian Doran
f656c2caaa
fix(export/zip): links breaking down in markdown export 2025-10-28 21:32:05 +02:00
Elian Doran
bd3e92f091
fix(export/zip): export options not considered 2025-10-28 20:40:53 +02:00
Elian Doran
7ce7c66463
chore(build-docs): address requested changes 2025-10-28 19:31:57 +02:00
Elian Doran
61d26fec60
refactor(build-docs): use proper await when building documentation 2025-10-28 19:30:55 +02:00
Elian Doran
1822eea77c
chore: remove remaining references to mkdocs 2025-10-28 19:19:39 +02:00
Elian Doran
28c0e4e802
chore(client): remove no longer relevant input 2025-10-28 19:15:01 +02:00
Elian Doran
5b7e9d4c12
Revision history: two fixes (#7544) 2025-10-28 18:30:50 +02:00
contributor
bee2fdb22f chore: remove dead translation 2025-10-28 18:26:35 +02:00
contributor
5c46a0dfa8 chore: remove dead code
https://github.com/TriliumNext/Trilium/pull/7544#issuecomment-3456187575
2025-10-28 18:26:35 +02:00
Elian Doran
88d90fdedd
fix(export/share): favicon working only on top-level 2025-10-28 18:23:11 +02:00
Elian Doran
2a1ecdbdca
feat(share): display admonition icons (closes #6733) 2025-10-28 18:18:03 +02:00
Elian Doran
5772046674
chore(share): remove redundant file 2025-10-28 18:17:06 +02:00
Elian Doran
1e2c8b2ac4
fix(export/share): ckcontent CSS missing 2025-10-28 18:16:37 +02:00
Elian Doran
955b202b8a
chore(export/share): hide last updated 2025-10-28 17:59:12 +02:00
Elian Doran
be98a27439
feat(export/share): prefer #shareAlias 2025-10-28 17:57:48 +02:00
Jon Fuller
8d88411fda
Merge branch 'main' into fix/fix-equals-operator-in-search 2025-10-28 08:41:47 -07:00
Elian Doran
54200fa0cb
chore(export/share): disable non-functional search 2025-10-28 17:33:36 +02:00
Elian Doran
5d82a26c87
fix(build-docs): missing favicon 2025-10-28 17:23:31 +02:00
Elian Doran
e51070e389
chore(share): handle BAttachments too 2025-10-28 17:16:34 +02:00
Elian Doran
e0dc4fee20
fix(share): reference links not working 2025-10-28 17:14:33 +02:00
contributor
e683dc1d66 add openTodayNote to CommandMappings #7472 2025-10-28 16:59:46 +02:00
contributor
14a3438a20 move shortcut definition to "Note navigation" section #7472 2025-10-28 16:59:41 +02:00
contributor
dd483fccbc use common translation for openTodayNote #7472 2025-10-28 16:59:36 +02:00
contributor
5620e7f4a7 feat: add command openTodayNote with empty keyboard shortcut #7472 2025-10-28 16:59:28 +02:00
Elian Doran
187e9b57de
fix(share): note tree not visible on mobile 2025-10-28 16:57:04 +02:00
Elian Doran
d6d67e7957
fix(docs/share): share theme not built 2025-10-28 16:45:27 +02:00
Elian Doran
bde03e8378
feat(docs/share): integrate in the CI 2025-10-28 16:42:52 +02:00
Elian Doran
4c3fcdba4a
fix(share): images appearing stretched 2025-10-28 16:34:38 +02:00
Elian Doran
7a5c1277f1
feat(docs/share): set up script to build documentation 2025-10-28 16:24:55 +02:00
Elian Doran
69b262040a
Translations update from Hosted Weblate (#7547) 2025-10-28 16:22:15 +02:00
Manfred Manni
8731fa6c31
Translated using Weblate (German)
Currently translated at 59.3% (70 of 118 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/de/
2025-10-28 13:50:36 +00:00
Elian Doran
f4e8fc4d83
Export with share theme (#5830) 2025-10-28 15:50:21 +02:00
Elian Doran
dd5b3a3c1c
chore(server): address requested changes 2025-10-28 15:44:00 +02:00
Elian Doran
17319d25e8
chore(server): fix a few type issues 2025-10-28 14:51:03 +02:00
Elian Doran
2f189b6961
chore(share): remove now redundant project 2025-10-28 14:47:51 +02:00
Elian Doran
b1f8d44576
Merge remote-tracking branch 'origin/main' into feature/export_with_share_theme 2025-10-28 14:29:37 +02:00
Elian Doran
7f22532a0a
fix: import markdown to text note (#7538) 2025-10-28 14:15:29 +02:00
Elian Doran
c7beb87980
Update dependency node to v24 (#7537) 2025-10-28 14:14:00 +02:00
Elian Doran
5cd1fd53d4
Translations update from Hosted Weblate (#7546) 2025-10-28 14:11:20 +02:00
Elian Doran
2eadbe3f01
Translated using Weblate (German)
Currently translated at 44.9% (53 of 118 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/de/
2025-10-28 13:10:51 +01:00
Hosted Weblate
4e7493f648
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-10-28 13:06:25 +01:00
Elian Doran
b9d54a44f6
Translations update from Hosted Weblate (#7545) 2025-10-28 14:06:08 +02:00
Elian Doran
a1ad8be02b
Apply suggestion from @gemini-code-assist[bot]
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-10-28 14:05:06 +02:00
Elian Doran
b02514f395
Apply suggestion from @gemini-code-assist[bot]
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-10-28 14:04:47 +02:00
Elian Doran
dcef3f2be5
Apply suggestion from @gemini-code-assist[bot]
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-10-28 14:04:39 +02:00
Rugved Inamdar
585fdabd27
Translated using Weblate (Hindi)
Currently translated at 0.6% (1 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/hi/
2025-10-28 12:02:42 +00:00
Rugved Inamdar
71fcb77a22
Translated using Weblate (Hindi)
Currently translated at 0.8% (1 of 118 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/hi/
2025-10-28 12:02:41 +00:00
Rugved Inamdar
33ecf6aa6d
Translated using Weblate (Hindi)
Currently translated at 0.1% (1 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/hi/
2025-10-28 12:02:40 +00:00
Rugved Inamdar
1f75de83c6
Added translation using Weblate (Marathi) 2025-10-28 12:02:39 +00:00
Rugved Inamdar
31b52f72d2
Added translation using Weblate (Marathi) 2025-10-28 12:02:39 +00:00
Rugved Inamdar
01aaf81196
Added translation using Weblate (Marathi) 2025-10-28 12:02:38 +00:00
Rugved Inamdar
3ecfdd62e8
Added translation using Weblate (Marathi) 2025-10-28 12:02:38 +00:00
Rugved Inamdar
3c74d0714a
Added translation using Weblate (Hindi) 2025-10-28 12:02:37 +00:00
Rugved Inamdar
f58d9adff2
Added translation using Weblate (Hindi) 2025-10-28 12:02:36 +00:00
Rugved Inamdar
0eecf5b132
Added translation using Weblate (Hindi) 2025-10-28 12:02:36 +00:00
Rugved Inamdar
9e3cca333a
Added translation using Weblate (Hindi) 2025-10-28 12:02:35 +00:00
Manfred Manni
81c233463e
Translated using Weblate (German)
Currently translated at 44.9% (53 of 118 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/de/
2025-10-28 12:02:34 +00:00
DerVogel101
87946e7e85
Translated using Weblate (German)
Currently translated at 100.0% (1621 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/de/
2025-10-28 12:02:33 +00:00
Elian Doran
c3768a051d
Fix some CSS issues (#7543) 2025-10-28 14:02:24 +02:00
contributor
c579cd3ce7 fix: no note on edited notes view if a revision made between note created/modified date 2025-10-28 12:55:34 +02:00
contributor
945e2625d3 fix: wrong dates in “Note Revisions” view 2025-10-28 12:55:13 +02:00
Adorian Doran
ea45024559 Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/ui-improvements 2025-10-28 09:51:32 +02:00
Elian Doran
ff36414a55
chore(deps): update dependency @types/serve-static to v2 (#7535) 2025-10-28 08:24:02 +02:00
renovate[bot]
8f184c5b10
chore(deps): update dependency node to v24 2025-10-28 06:23:07 +00:00
Elian Doran
c027a2bbfa
chore(deps): update dependency @types/archiver to v7 (#7534) 2025-10-28 08:22:36 +02:00
Elian Doran
91adc2258d
fix(deps): update dependency react-i18next to v16.2.1 (#7532) 2025-10-28 08:22:12 +02:00
Elian Doran
6701e83927
chore(deps): update dependency axios to v1.13.0 (#7533) 2025-10-28 08:21:44 +02:00
Elian Doran
3f54e589d8
fix(deps): update dependency mermaid to v11.12.1 (#7531) 2025-10-28 08:21:09 +02:00
Elian Doran
f65be73f71
chore(deps): update dependency @types/express to v5.0.5 (#7530) 2025-10-28 08:20:33 +02:00
Elian Doran
346e9282bd
Translations update from Hosted Weblate (#7528) 2025-10-28 08:19:57 +02:00
SiriusXT
8f8ea7adc3 fix(types): correct CommandMappings key for pasteMarkdownIntoText 2025-10-28 14:10:11 +08:00
SiriusXT
4affd3a955 fix: note map button overlapping menu 2025-10-28 11:28:36 +08:00
SiriusXT
bcce05cc4d fix(zen): Show fixed toolbar in Zen mode 2025-10-28 11:20:36 +08:00
SiriusXT
ac16c42e23 Merge branch 'main' into patch_import_markdown 2025-10-28 11:03:41 +08:00
SiriusXT
5025329e92 fix: restore editor focus after inserting markdown 2025-10-28 11:00:53 +08:00
SiriusXT
507910b0ce fix: import markdown to text note 2025-10-28 10:17:37 +08:00
renovate[bot]
b59fab9dba
chore(deps): update dependency @types/serve-static to v2 2025-10-28 01:53:53 +00:00
renovate[bot]
ac7e4580f6
chore(deps): update dependency @types/archiver to v7 2025-10-28 01:53:07 +00:00
renovate[bot]
27d1044ba8
chore(deps): update dependency axios to v1.13.0 2025-10-28 01:52:22 +00:00
renovate[bot]
96c949b2fc
fix(deps): update dependency react-i18next to v16.2.1 2025-10-28 01:51:32 +00:00
renovate[bot]
927cd0255e
fix(deps): update dependency mermaid to v11.12.1 2025-10-28 01:50:45 +00:00
renovate[bot]
c2c8417c42
chore(deps): update dependency @types/express to v5.0.5 2025-10-28 01:49:55 +00:00
migraine-user
3bb224e682
Translated using Weblate (Korean)
Currently translated at 1.3% (2 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ko/
2025-10-27 20:43:03 +00:00
Elian Doran
6f126ea17b
Fix typo in German translation for 'copy-link' (#7527) 2025-10-27 22:42:52 +02:00
DerVogel101
61a5cf1452
Fix typo in German translation for 'copy-link'
Fixed a missing character in the German translation of the context menu action copy-link.
2025-10-27 21:25:08 +01:00
Elian Doran
14b8d0a47e
chore(share): bring back syntax highlight 2025-10-27 22:18:08 +02:00
Elian Doran
12df6a0d6e
chore(uikit): create empty project 2025-10-27 20:53:13 +02:00
Elian Doran
21d243eec1
fix(desktop): share not working 2025-10-27 20:29:56 +02:00
Elian Doran
161238ca11
fix(windows script): add -command flag (#7513) 2025-10-27 18:47:03 +02:00
Elian Doran
4d5267e18b
fix (empty tab): recent notes not showing when creating a empty tab (#7523) 2025-10-27 18:43:31 +02:00
Elian Doran
0fa52907b3
Website static fixes (#7525) 2025-10-27 18:39:20 +02:00
Elian Doran
c4f57f3d15
refactor(website): simplify loop 2025-10-27 18:34:26 +02:00
Elian Doran
6bde264156
fix(website): lang/dir not updating after switching language 2025-10-27 18:31:03 +02:00
Elian Doran
4f72f81a95
chore(website): fix typecheck issues 2025-10-27 18:19:35 +02:00
Elian Doran
c212c5d6ff
Merge remote-tracking branch 'origin/main' into fix/website_static 2025-10-27 18:11:39 +02:00
Elian Doran
f24880d42c
fix(website): incorrect default language 2025-10-27 18:10:21 +02:00
Elian Doran
ee9bf1d47b
fix(website): incorrect lang tag 2025-10-27 18:04:49 +02:00
Elian Doran
b069fab82f
chore(website): use static loading of translations 2025-10-27 17:17:37 +02:00
Elian Doran
d5ce01a65b
Revert "fix(website): missing suspense"
This reverts commit dbfa94a9ee45a7fef43cd97c90df35f85d7bad34.
2025-10-27 16:45:52 +02:00
Elian Doran
dbfa94a9ee
fix(website): missing suspense 2025-10-27 16:35:26 +02:00
Elian Doran
86aaa97809
fix(website): language-specific pages not properly determined 2025-10-27 16:30:03 +02:00
Elian Doran
c4c8fe23a9
fix(website): pages not prerendered 2025-10-27 16:29:44 +02:00
Elian Doran
715fe77db3
Translations update from Hosted Weblate (#7519) 2025-10-27 16:20:42 +02:00
Francis C
40f5abd6e3
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (152 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/zh_Hant/
2025-10-27 14:18:09 +00:00
Giovi
f3f7e5900b
Translated using Weblate (Italian)
Currently translated at 100.0% (152 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/it/
2025-10-27 14:18:08 +00:00
green
f4402a6d81
Translated using Weblate (Japanese)
Currently translated at 100.0% (152 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ja/
2025-10-27 14:18:08 +00:00
green
6966efd374
Translated using Weblate (Japanese)
Currently translated at 98.0% (149 of 152 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ja/
2025-10-27 14:18:07 +00:00
Hosted Weblate
cd3e025fdc
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/
2025-10-27 14:18:06 +00:00
marc hooijschuur
a224b774d3
Translated using Weblate (Dutch)
Currently translated at 2.9% (48 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/nl/
2025-10-27 14:18:05 +00:00
Elian Doran
f20078f3b0
fix(print): some images not loading 2025-10-27 16:17:51 +02:00
SiriusXT
56019e5449 fix (empty tab): recent notes not showing when creating a empty tab 2025-10-27 16:59:28 +08:00
SiriusXT
7dd517d8f7 fix (empty tab): recent notes not showing when creating a empty tab 2025-10-27 14:42:22 +08:00
Elian Doran
b2f1b3c910
chore(deps): update dependency @types/turndown to v5.0.6 (#7521) 2025-10-27 08:13:12 +02:00
renovate[bot]
2197fae700
chore(deps): update dependency @types/turndown to v5.0.6 2025-10-27 01:55:23 +00:00
Elian Doran
3661733f07
chore(server): remove duplicate math handling 2025-10-26 22:00:11 +02:00
Elian Doran
52a6f2597e
fix(share): template directory in production 2025-10-26 21:38:16 +02:00
Elian Doran
8828e36624
Merge remote-tracking branch 'origin/main' into react/type_widgets 2025-10-26 20:19:47 +02:00
Elian Doran
d8e9cad23d
feat(website): describe presentation collection 2025-10-26 19:24:43 +02:00
Elian Doran
6ed333d222
style(website): redesign list with screenshot 2025-10-26 19:11:11 +02:00
Elian Doran
ba26c478d6
fix(export/share): assets incorrectly rewritten 2025-10-26 12:15:35 +02:00
Elian Doran
055fcb7b2a
fix(export/share): handling of fonts 2025-10-26 11:34:09 +02:00
Elian Doran
f4468706ef
fix(export/share): asset path for styles and scripts 2025-10-26 11:07:08 +02:00
Elian Doran
212956201a
chore(export/share): export full share script & styles 2025-10-26 11:02:19 +02:00
Elian Doran
1182592fc5
chore(share): fix another typecheck issue 2025-10-26 10:07:42 +02:00
Elian Doran
d534db29c9
feat(note_icon): add an empty option (closes #7370) 2025-10-26 10:03:51 +02:00
Elian Doran
40edd42740
Translations update from Hosted Weblate (#7516) 2025-10-25 23:57:24 +03:00
Newcomer1989
d2c7011735
Translated using Weblate (German)
Currently translated at 20.5% (30 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/de/
2025-10-25 20:54:49 +00:00
Manfred Manni
a050d1741b
Translated using Weblate (German)
Currently translated at 22.8% (27 of 118 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/de/
2025-10-25 20:54:48 +00:00
greenfork
18982865da
Translated using Weblate (Russian)
Currently translated at 99.1% (1607 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ru/
2025-10-25 20:54:48 +00:00
Newcomer1989
3aa810fed7
Translated using Weblate (German)
Currently translated at 100.0% (1621 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/de/
2025-10-25 20:54:47 +00:00
Elian Doran
c5ecc22c67
chore(website): update macOS requirement 2025-10-25 23:54:37 +03:00
Elian Doran
252f8ccb1f
Internationalization improvements for the website (#7515) 2025-10-25 23:46:43 +03:00
Elian Doran
e1bb704383
fix(website/i18n): language list fit on mobile 2025-10-25 23:33:54 +03:00
Elian Doran
dce0d9400b
chore(website/i18n): bring back root-level pages 2025-10-25 23:11:02 +03:00
Elian Doran
615c783fe3
chore(website/i18n): add t to list of deps 2025-10-25 22:52:38 +03:00
Elian Doran
f29411baf7
fix(website/i18n): header link not indicating active 2025-10-25 22:49:22 +03:00
Adorian Doran
64d3589b40 Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/ui-improvements 2025-10-25 22:42:20 +03:00
Elian Doran
be5e70130c
feat(website/i18n): highlight current language 2025-10-25 22:39:04 +03:00
Elian Doran
9ba1e9d732
feat(website/i18n): swap locale when footer 2025-10-25 22:36:27 +03:00
Elian Doran
e1dc4d1433
chore(website/i18n): another missing translation 2025-10-25 22:18:07 +03:00
Elian Doran
d0d268496c
Update apps/website/src/components/Header.tsx
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-10-25 22:16:50 +03:00
Elian Doran
8a6950c945
Merge branch 'main' into feature/website_i18n 2025-10-25 22:03:18 +03:00
Elian Doran
477592d176
fix(website/i18n): language detection not always working 2025-10-25 21:55:53 +03:00
Elian Doran
7e5c2ed79d
chore(website): set up testing 2025-10-25 21:54:30 +03:00
Elian Doran
bc580f2a88
feat(website/i18n): language auto-detection 2025-10-25 21:39:02 +03:00
Elian Doran
71cd92e0b5
fix(website/i18n): header sometimes not correctly translated 2025-10-25 21:13:48 +03:00
Elian Doran
a4d92e12be
chore(website/i18n): add more CJK fonts 2025-10-25 21:05:54 +03:00
Elian Doran
c40279b480
chore(website): missing a translation 2025-10-25 20:40:05 +03:00
Elian Doran
4c7e7c157c
chore(website): solve a warning about sectioned h1 size 2025-10-25 20:31:08 +03:00
Elian Doran
c08386450a
chore(website/i18n): different load mechanism for translations 2025-10-25 20:27:42 +03:00
Elian Doran
eb93762ecc
chore(website/i18n): missing translations in header 2025-10-25 20:27:23 +03:00
Elian Doran
2697f9a25d
fix(website/i18n): get started in download button not working 2025-10-25 20:00:09 +03:00
Elian Doran
9515e2099b
feat(website/i18n): set right dir and lang tags 2025-10-25 19:58:31 +03:00
Elian Doran
966c08da87
fix(website/i18n): home page link not working 2025-10-25 19:53:36 +03:00
Elian Doran
ea04446e81
chore(website/i18n): handle Chinese 2025-10-25 19:17:26 +03:00
Elian Doran
e4f806ed14
feat(website/i18n): get translation to actually render 2025-10-25 19:13:28 +03:00
Elian Doran
49cf7ae1a3
feat(website/i18n): render pages by locale 2025-10-25 18:54:24 +03:00
Elian Doran
1a6f5a027f
chore(website/i18n): add English too 2025-10-25 18:21:52 +03:00
Elian Doran
f4796f0f9e
feat(website/i18n): footer navigation 2025-10-25 18:18:47 +03:00
Elian Doran
30480b2c23
chore(website/i18n): start generating routes 2025-10-25 17:25:58 +03:00
Elian Doran
b7b1d17817
chore(website): add list of locales 2025-10-25 16:41:10 +03:00
Elian Doran
c4e5494c14
chore(deps): update dependency @types/express to v5.0.4 (#7487) 2025-10-25 16:37:47 +03:00
Elian Doran
b0f63c02c9
chore(deps): update dependency vite to v7.1.12 (#7495) 2025-10-25 16:37:20 +03:00
Elian Doran
2480509811
chore(deps): update dependency electron to v38.4.0 (#7500) 2025-10-25 16:28:45 +03:00
Elian Doran
7872193ed0
chore(deps): update dependency node-abi to v4.15.0 (#7501) 2025-10-25 16:28:37 +03:00
Adorian Doran
638cb4281e style/center pane: optimize the identification of options pages 2025-10-25 11:28:26 +03:00
Adorian Doran
1568908982 style/center pane: allow distinct background colors for note splits 2025-10-25 11:12:00 +03:00
Ryan Keane
1a68bdfe02
fix(windows script): add -command flag
I don't know why if I replace old, system builtin powershell executable
with powershell 7, scripts fail with this error:

The argument 'Set-Item -Path ...' is not recognized as the name of a
script file. Check the spelling of the name, or if a path was included,
verify that the path is correct and try again.

Adding -Command at the end of flags just fixed it.

Signed-off-by: Ryan Keane <the.ra2.ifv@gmail.com>
2025-10-25 01:07:28 -07:00
Adorian Doran
4459561308 Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/ui-improvements 2025-10-25 10:20:28 +03:00
Elian Doran
14e06c4555
chore(dev): add entry point for starting web site in dev mode 2025-10-25 09:34:53 +03:00
Elian Doran
b8e17959ae
Translations update from Hosted Weblate (#7512) 2025-10-25 09:19:43 +03:00
Sarah Hussein
c16a135efc
Translated using Weblate (Arabic)
Currently translated at 55.4% (81 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ar/
2025-10-25 06:18:55 +00:00
Sarah Hussein
cbc756ba06
Translated using Weblate (Arabic)
Currently translated at 85.7% (332 of 387 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ar/
2025-10-25 06:18:54 +00:00
Sarah Hussein
64daeb0826
Translated using Weblate (Arabic)
Currently translated at 65.0% (1055 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ar/
2025-10-25 06:18:53 +00:00
Hosted Weblate
e15839db47
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-10-25 06:18:53 +00:00
Elian Doran
dcdffed003
chore(deps): remove unused types for session-file-store 2025-10-25 09:18:41 +03:00
renovate[bot]
48e85fad43
chore(deps): update dependency node-abi to v4.15.0 2025-10-25 06:17:51 +00:00
renovate[bot]
189071deb8
chore(deps): update dependency electron to v38.4.0 2025-10-25 06:17:20 +00:00
Elian Doran
354f1d65c1
chore(deps): update dependency eslint-plugin-react-hooks to v7.0.1 (#7491) 2025-10-25 09:14:40 +03:00
renovate[bot]
b78893b106
chore(deps): update dependency vite to v7.1.12 2025-10-25 06:14:32 +00:00
Elian Doran
9310315c6a
chore(deps): update dependency @types/tabulator-tables to v6.3.0 (#7499) 2025-10-25 09:13:38 +03:00
renovate[bot]
1794f8546d
chore(deps): update dependency @types/express to v5.0.4 2025-10-25 06:12:41 +00:00
Elian Doran
b3bc0572e5
chore(deps): update ckeditor5 config packages to v12.2.0 (#7498) 2025-10-25 09:12:04 +03:00
Elian Doran
253ce1f223
fix(deps): update dependency preact-render-to-string to v6.6.3 (#7497) 2025-10-25 09:11:45 +03:00
Elian Doran
2f3bf94b47
fix(deps): update dependency mind-elixir to v5.3.4 (#7496) 2025-10-25 09:11:26 +03:00
Elian Doran
d802caa03b
chore(deps): update dependency turndown to v7.2.2 (#7494) 2025-10-25 09:10:35 +03:00
renovate[bot]
e69751a8b3
fix(deps): update dependency preact-render-to-string to v6.6.3 2025-10-25 06:10:07 +00:00
Elian Doran
0760ea22fb
chore(deps): update dependency lint-staged to v16.2.6 (#7493) 2025-10-25 09:09:27 +03:00
Elian Doran
8a8f407e99
chore(deps): update dependency happy-dom to v20.0.8 (#7492) 2025-10-25 09:09:09 +03:00
renovate[bot]
e030dd96da
chore(deps): update dependency eslint-plugin-react-hooks to v7.0.1 2025-10-25 06:08:45 +00:00
Elian Doran
01abfc2528
chore(deps): update dependency @types/yargs to v17.0.34 (#7490) 2025-10-25 09:08:36 +03:00
Elian Doran
042b929dc5
chore(deps): update dependency @types/serve-static to v1.15.10 (#7488) 2025-10-25 09:08:03 +03:00
Elian Doran
ab1d5e31fb
chore(deps): update dependency @types/cookie-parser to v1.4.10 (#7486) 2025-10-25 09:07:41 +03:00
Elian Doran
d073e4c37f
chore(deps): update dependency @types/archiver to v6.0.4 (#7485) 2025-10-25 09:07:29 +03:00
Elian Doran
d60d965a42
chore(deps): update dependency @smithy/middleware-retry to v4.4.5 (#7484) 2025-10-25 09:07:13 +03:00
Elian Doran
1c87cfbbd9
chore(deps): update dependency ini to v6 (#7507) 2025-10-25 09:06:21 +03:00
Elian Doran
fee333512a
chore(deps): update dependency openai to v6.7.0 (#7502) 2025-10-25 09:05:53 +03:00
Elian Doran
38a3f46506
chore(deps): update node.js to v22.21.0 (#7503) 2025-10-25 09:05:35 +03:00
Elian Doran
bf7506fcd8
chore(deps): update pnpm to v10.19.0 (#7504) 2025-10-25 09:05:05 +03:00
Elian Doran
6fbba426de
fix(deps): update codemirror (#7505) 2025-10-25 09:04:29 +03:00
Elian Doran
d5bdec13b5
fix(deps): update dependency react-i18next to v16.2.0 (#7506) 2025-10-25 09:04:02 +03:00
Elian Doran
cc1b6eb42d
chore(deps): update github artifact actions (major) (#7508) 2025-10-25 09:03:36 +03:00
renovate[bot]
8baf496f96
chore(deps): update github artifact actions 2025-10-25 01:23:17 +00:00
renovate[bot]
23a20c4490
chore(deps): update dependency ini to v6 2025-10-25 01:23:11 +00:00
renovate[bot]
c8b98f2db6
fix(deps): update dependency react-i18next to v16.2.0 2025-10-25 01:22:39 +00:00
renovate[bot]
3f36f515db
fix(deps): update codemirror 2025-10-25 01:22:07 +00:00
renovate[bot]
892eb5b95d
chore(deps): update pnpm to v10.19.0 2025-10-25 01:21:37 +00:00
renovate[bot]
62a69a0da0
chore(deps): update node.js to v22.21.0 2025-10-25 01:21:29 +00:00
renovate[bot]
3588e38543
chore(deps): update dependency openai to v6.7.0 2025-10-25 01:21:24 +00:00
renovate[bot]
41450ab85a
chore(deps): update dependency @types/tabulator-tables to v6.3.0 2025-10-25 01:19:49 +00:00
renovate[bot]
0526d99560
chore(deps): update ckeditor5 config packages to v12.2.0 2025-10-25 01:19:14 +00:00
renovate[bot]
557d576b85
fix(deps): update dependency mind-elixir to v5.3.4 2025-10-25 01:18:06 +00:00
renovate[bot]
041c961cfa
chore(deps): update dependency turndown to v7.2.2 2025-10-25 01:16:54 +00:00
renovate[bot]
dcc35bd507
chore(deps): update dependency lint-staged to v16.2.6 2025-10-25 01:16:19 +00:00
renovate[bot]
09c3e5b56e
chore(deps): update dependency happy-dom to v20.0.8 2025-10-25 01:15:41 +00:00
renovate[bot]
950793377d
chore(deps): update dependency @types/yargs to v17.0.34 2025-10-25 01:13:27 +00:00
renovate[bot]
7dac61dc26
chore(deps): update dependency @types/serve-static to v1.15.10 2025-10-25 01:11:50 +00:00
renovate[bot]
42dcb8f141
chore(deps): update dependency @types/cookie-parser to v1.4.10 2025-10-25 01:10:08 +00:00
renovate[bot]
43dc8a4b87
chore(deps): update dependency @types/archiver to v6.0.4 2025-10-25 01:09:20 +00:00
renovate[bot]
35316a4c45
chore(deps): update dependency @smithy/middleware-retry to v4.4.5 2025-10-25 01:08:32 +00:00
Elian Doran
1366489f99
Translations update from Hosted Weblate (#7479) 2025-10-24 23:31:57 +03:00
Elian Doran
0c399a676a
chore(share): fix typecheck issue 2025-10-24 23:28:42 +03:00
brtkcs
31ee78b1aa
Translated using Weblate (Hungarian)
Currently translated at 21.2% (31 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/hu/
2025-10-24 20:14:05 +00:00
brtkcs
808ba75ee0
Translated using Weblate (Hungarian)
Currently translated at 27.1% (32 of 118 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/hu/
2025-10-24 20:14:04 +00:00
brtkcs
ac1399a139
Translated using Weblate (Hungarian)
Currently translated at 8.2% (32 of 387 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/hu/
2025-10-24 20:14:04 +00:00
brtkcs
1e4793351a
Translated using Weblate (Hungarian)
Currently translated at 1.9% (32 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/hu/
2025-10-24 20:14:03 +00:00
Sarah Hussein
f502fe41c7
Translated using Weblate (Arabic)
Currently translated at 52.7% (77 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ar/
2025-10-24 20:14:02 +00:00
brtkcs
0ec0091357
Translated using Weblate (Hungarian)
Currently translated at 19.1% (28 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/hu/
2025-10-24 20:14:02 +00:00
brtkcs
0e2196f872
Translated using Weblate (Hungarian)
Currently translated at 24.5% (29 of 118 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/hu/
2025-10-24 20:14:01 +00:00
Sarah Hussein
32dee254cd
Translated using Weblate (Arabic)
Currently translated at 82.4% (319 of 387 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ar/
2025-10-24 20:14:01 +00:00
Sarah Hussein
d4a6a297f4
Translated using Weblate (Arabic)
Currently translated at 64.3% (1043 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ar/
2025-10-24 20:14:00 +00:00
brtkcs
a64d8cd8e2
Translated using Weblate (Hungarian)
Currently translated at 7.4% (29 of 387 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/hu/
2025-10-24 20:14:00 +00:00
brtkcs
bf4cfb9c02
Translated using Weblate (Hungarian)
Currently translated at 1.7% (29 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/hu/
2025-10-24 20:13:59 +00:00
Manfred Manni
a99dfecf43
Translated using Weblate (German)
Currently translated at 100.0% (387 of 387 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/de/
2025-10-24 20:13:59 +00:00
Manfred Manni
1530d96eca
Translated using Weblate (German)
Currently translated at 99.8% (1619 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/de/
2025-10-24 20:13:58 +00:00
Elian Doran
5dc066f4c6
chore(dev): add work-around to run on Ubuntu
See https://github.com/electron/electron/issues/42510.
2025-10-24 23:03:20 +03:00
Elian Doran
395f33cd5b
chore(share): bring back boxicons 2025-10-24 22:32:42 +03:00
Elian Doran
21b20cf575
chore(share): bring back most of the logic 2025-10-24 21:18:06 +03:00
Elian Doran
e3dd25b591
chore(share): set up math 2025-10-24 21:13:40 +03:00
Elian Doran
b9a4e7ab11
chore(share): enable code splitting 2025-10-24 20:52:54 +03:00
Elian Doran
6ae67c410c
chore(share): load Mermaid only when necessary 2025-10-24 20:52:47 +03:00
Elian Doran
4ef7667484
chore(share): bring back inline mermaid rendering 2025-10-24 19:09:19 +03:00
Elian Doran
3660e2f127
refactor(share): store assets at /share/asset level 2025-10-24 19:00:26 +03:00
Elian Doran
357d294f2d
chore(export/share): address review 2025-10-24 18:25:16 +03:00
Elian Doran
bb636128b0
fix(export/share): missing files and wrong meta handling 2025-10-24 16:02:20 +03:00
Elian Doran
aa102ab393
fix(export/share): missing templates after merge 2025-10-24 14:54:20 +03:00
Elian Doran
ea53665e64
Merge remote-tracking branch 'origin/main' into feature/export_with_share_theme 2025-10-24 14:43:20 +03:00
Adorian Doran
3341e59a80 Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/ui-improvements 2025-10-24 02:43:52 +03:00
Adorian Doran
74a805056b style/settings: use Mica for settings pages 2025-10-24 01:03:28 +03:00
Elian Doran
1e8f179f81
Translations update from Hosted Weblate (#7469) 2025-10-23 20:37:39 +03:00
Elian Doran
54c906de8d
Apply suggestion from @gemini-code-assist[bot]
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-10-23 20:35:34 +03:00
Elian Doran
114b3ef4d1
Apply suggestion from @gemini-code-assist[bot]
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-10-23 20:33:43 +03:00
Elian Doran
f6fa1e69b3
Apply suggestion from @gemini-code-assist[bot]
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-10-23 20:33:03 +03:00
Elian Doran
fcc8086f9c
Apply suggestion from @gemini-code-assist[bot]
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-10-23 20:32:21 +03:00
Adorian Doran
f42e870de1 style/dropdowns: increase the radius of the backdrop blur 2025-10-23 20:28:36 +03:00
Bond
7eefff0a74
Translated using Weblate (Vietnamese)
Currently translated at 10.9% (16 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/vi/
2025-10-23 19:28:31 +02:00
Микола Копитін
1b842e35ff
Translated using Weblate (Ukrainian)
Currently translated at 26.0% (38 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/uk/
2025-10-23 19:28:30 +02:00
Bond
c9021ca742
Translated using Weblate (Vietnamese)
Currently translated at 55.9% (66 of 118 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/vi/
2025-10-23 19:28:29 +02:00
Микола Копитін
b229ab3c02
Translated using Weblate (Ukrainian)
Currently translated at 32.2% (38 of 118 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/uk/
2025-10-23 19:28:29 +02:00
Bond
6825f28ba0
Translated using Weblate (Vietnamese)
Currently translated at 3.0% (50 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/vi/
2025-10-23 19:28:28 +02:00
Микола Копитін
5e72f271ea
Translated using Weblate (Ukrainian)
Currently translated at 21.9% (32 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/uk/
2025-10-23 19:28:27 +02:00
Микола Копитін
9ad6dfd5e9
Translated using Weblate (Ukrainian)
Currently translated at 27.9% (33 of 118 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/uk/
2025-10-23 19:28:27 +02:00
Marc
81031673c3
Translated using Weblate (French)
Currently translated at 100.0% (146 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/fr/
2025-10-23 19:28:26 +02:00
Микола Копитін
1a6423fd36
Translated using Weblate (Ukrainian)
Currently translated at 20.5% (30 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/uk/
2025-10-23 19:28:26 +02:00
onlyfranz
9b872617e6
Translated using Weblate (German)
Currently translated at 2.7% (4 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/de/
2025-10-23 19:28:25 +02:00
Sarah Hussein
57be2e2474
Translated using Weblate (Arabic)
Currently translated at 25.4% (30 of 118 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ar/
2025-10-23 19:28:25 +02:00
Микола Копитін
1d65afef53
Translated using Weblate (Ukrainian)
Currently translated at 26.2% (31 of 118 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/uk/
2025-10-23 19:28:24 +02:00
Sarah Hussein
b6385618d1
Translated using Weblate (Arabic)
Currently translated at 63.5% (1030 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ar/
2025-10-23 19:28:23 +02:00
Giovi
e3d7c7419f
Translated using Weblate (Italian)
Currently translated at 100.0% (387 of 387 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/it/
2025-10-23 19:28:22 +02:00
Giovi
2a6c295967
Translated using Weblate (Italian)
Currently translated at 100.0% (1621 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/it/
2025-10-23 19:28:22 +02:00
green
f5f32df847
Translated using Weblate (Japanese)
Currently translated at 100.0% (1621 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-10-23 19:28:21 +02:00
Francis C
1f350b2730
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (1621 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hant/
2025-10-23 19:28:20 +02:00
Marc
386992255e
Translated using Weblate (French)
Currently translated at 100.0% (387 of 387 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/fr/
2025-10-23 19:28:20 +02:00
Bilal Janati
eb505c4615
Translated using Weblate (French)
Currently translated at 100.0% (1621 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/fr/
2025-10-23 19:28:19 +02:00
Marc
003d2b5354
Translated using Weblate (French)
Currently translated at 100.0% (1621 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/fr/
2025-10-23 19:28:19 +02:00
Elian Doran
b452f78242
feat(mobile/search): search definitions always shown 2025-10-23 20:24:16 +03:00
Adorian Doran
ca3964f8b7 style/floating buttons: tweak position 2025-10-23 20:18:52 +03:00
Elian Doran
7d1abee8e4
feat(mobile/search): show results (closes #5655) 2025-10-23 20:16:17 +03:00
Elian Doran
d503993a74
chore(mobile/search): further improve the layout 2025-10-23 20:03:44 +03:00
Adorian Doran
ddafda5f4e style/quick edit dialog: tweak the colors for the dark color scheme 2025-10-23 20:01:29 +03:00
Adorian Doran
40b08e1828 Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/ui-improvements 2025-10-23 19:43:17 +03:00
Adorian Doran
5141f0a0d5 style/quick edit dialog: tweak the colors for the dark color scheme 2025-10-23 19:43:06 +03:00
Elian Doran
fe98ba8c8c
chore(mobile/search): improve actions fit 2025-10-23 19:15:38 +03:00
Elian Doran
18608ecb34
feat(mobile): render search definition 2025-10-23 19:07:40 +03:00
Elian Doran
ab6da26a25
refactor(client): standalone rendering mechanism for ribbon 2025-10-23 18:09:32 +03:00
Elian Doran
f95082ccdb
fix(server): calendar tooltip positioning (closes #5675) 2025-10-23 16:57:48 +03:00
Elian Doran
e94b5ac07a
fix(server): edited notes listing automatically generated hidden notes (closes #5683) 2025-10-23 16:42:27 +03:00
Elian Doran
5d0669b464
fix(canvas): images appearing muted in dark mode (closes #5708) 2025-10-23 16:11:05 +03:00
Elian Doran
af95d85b73
chore(client): disable import/export for help notes 2025-10-23 14:43:04 +03:00
Elian Doran
aae90ede19
chore(share): keep diacritics in slug instead of stripping them in 2025-10-23 14:29:47 +03:00
Elian Doran
0fa1c0f5c4
chore(share): improve slugification to strip diacritics cleanly 2025-10-23 14:26:15 +03:00
Elian Doran
d2b6014b49
fix(share): HTML tags displayed escaped in headings 2025-10-23 14:19:54 +03:00
Elian Doran
94d62f810a
fix(share): heading and navigation not supporting CJK (closes #6430) 2025-10-23 14:06:13 +03:00
Elian Doran
e953f0cc1a
Merge branch 'main' of https://github.com/TriliumNext/Trilium 2025-10-23 13:22:26 +03:00
Adorian Doran
8c165c0401 style/quick edit dialog: add support for the dark color scheme 2025-10-23 10:57:01 +03:00
Adorian Doran
b4dd40e128 style/quick edit dialog: refactor 2025-10-23 10:48:04 +03:00
Adorian Doran
535b960b76 style/quick edit dialog: ignore monochromatic custom colors 2025-10-23 10:44:23 +03:00
Adorian Doran
b58f37cd4a style/quick edit dialog: tint the dialog background, border and promoted attributes card according to the note's custom color 2025-10-23 10:18:52 +03:00
Adorian Doran
a01fb39599 client/quick edit dialog: make available the CSS variables with the custom color of the edited note 2025-10-23 10:16:18 +03:00
Adorian Doran
be15934b22 Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/ui-improvements 2025-10-23 10:03:03 +03:00
Elian Doran
347da8abde
fix(collections/list): excessive spacing in empty note content (closes #7319) 2025-10-23 08:16:26 +03:00
Elian Doran
5ff07820d3
chore(release): prepare for 0.99.3 2025-10-22 22:37:46 +03:00
Adorian Doran
6eccaac4bb style: fix broken colored links inside read-only notes (hover color) 2025-10-22 22:12:58 +03:00
Adorian Doran
f5038a08e5 style/board/board items: make the note custom color be applied again as the text color 2025-10-22 22:05:16 +03:00
Adorian Doran
96b3464f00 Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/ui-improvements 2025-10-22 21:53:07 +03:00
Adorian Doran
d1e6bd9c3a Merge branch 'main' of https://github.com/TriliumNext/Trilium 2025-10-22 21:52:21 +03:00
Adorian Doran
7911973a83 style: fix broken colored links inside read-only notes 2025-10-22 21:52:08 +03:00
Jon Fuller
968b595aec
fix(scheduler): change session expiration check interval to 30 seconds from 1ms
Increase interval for checking protected session expiration from 1ms to 30s.
2025-10-22 11:20:14 -07:00
Adorian Doran
2470b0b334 style: tweak the appearance of the promoted attributes cards 2025-10-22 20:06:06 +03:00
Adorian Doran
4344687303 style: tweak the appearance of the promoted attributes cards 2025-10-22 19:58:42 +03:00
Adorian Doran
b4fe46eba3 style: tweak the appearance of option cards 2025-10-22 19:41:49 +03:00
Elian Doran
704f2c2238
Translations update from Hosted Weblate (#7461) 2025-10-22 18:30:09 +03:00
Hosted Weblate
f6b86d725c
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-10-22 17:27:54 +02:00
Elian Doran
a7e0866e0d
Flatpak improvements (#7460) 2025-10-22 18:27:33 +03:00
Elian Doran
2cb3b877d1
chore(forge): fixup electron-forge:make scripts 2025-10-22 18:24:34 +03:00
Elian Doran
0b808b8db3
fix(forge): missing icon in flatpak build 2025-10-22 18:05:38 +03:00
Elian Doran
f02af893bb
fix(forge): wrong exec in flatpak desktop template (closes #5516) 2025-10-22 18:03:52 +03:00
Elian Doran
cb3f941760
chore(forge): add script to make flatpak 2025-10-22 17:45:31 +03:00
Elian Doran
93f145a20f
fix(forge): missing flatpak permissions (closes #7454) 2025-10-22 17:44:19 +03:00
Elian Doran
d34e2a0246
Translations update from Hosted Weblate (#7453) 2025-10-22 08:00:27 +03:00
Hosted Weblate
9a0b4f67ed
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-10-22 07:59:55 +03:00
Marc
651e158e3a
Translated using Weblate (French)
Currently translated at 88.8% (1440 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/fr/
2025-10-22 07:59:55 +03:00
Elian Doran
d11784a894
Translations update from Hosted Weblate (#7449) 2025-10-22 07:54:29 +03:00
Elian Doran
14db789b7f
Apply suggestion from @gemini-code-assist[bot]
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-10-22 07:53:45 +03:00
Marc
c4a4995da0
Translated using Weblate (French)
Currently translated at 71.9% (105 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/fr/
2025-10-22 07:53:12 +03:00
Marc
45de9da893
Translated using Weblate (French)
Currently translated at 90.9% (352 of 387 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/fr/
2025-10-22 07:53:12 +03:00
Marc
a6fce1b4c8
Translated using Weblate (French)
Currently translated at 86.9% (1409 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/fr/
2025-10-22 07:53:12 +03:00
Hosted Weblate
1d28a5e5b8
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-10-22 07:53:12 +03:00
Adorian Doran
d4b05fa0a0 style/dialogs/delete confirmation: fix the spacing of the note list 2025-10-22 01:29:54 +03:00
Adorian Doran
4bcf209072 style/reference links: enable colors in table collections as well 2025-10-22 00:57:55 +03:00
Adorian Doran
4b34ae3fd4 style/text editor/reference links: make the underline use the same color as the link caption 2025-10-22 00:51:58 +03:00
Adorian Doran
8590ff1f46 style/text editor/reference links color: fix regression 2025-10-22 00:45:51 +03:00
perf3ct
8e227a6146
fix(search): make sure to highlight exact search results too 2025-10-21 14:35:31 -07:00
Elian Doran
c4e2c003de
feat(i18n): enable Italian language 2025-10-21 21:35:05 +03:00
Jon Fuller
b03cb1ce1b
Merge branch 'main' into fix/fix-equals-operator-in-search 2025-10-21 11:30:05 -07:00
Elian Doran
eee3aa2bb4
feat(i18n): update Italian translations 2025-10-21 20:59:28 +03:00
Elian Doran
ce9f703e0c
feat(scripts): import weblate CSVs into translations 2025-10-21 20:59:12 +03:00
perf3ct
fb0d971e48
fix(search): also support exact phrase matching such as ='test phrase' 2025-10-21 10:12:14 -07:00
Elian Doran
279ccec3ab
Merge branch 'main' of https://github.com/TriliumNext/Trilium 2025-10-21 19:14:33 +03:00
Elian Doran
ab3852678e
chore(splitjs): get rid of minified version
Not useful for the app.
2025-10-21 19:14:31 +03:00
Elian Doran
65f7aaeee8
Translations update from Hosted Weblate (#7445) 2025-10-21 18:49:40 +03:00
Elian Doran
7a76b9dd0b
Translated using Weblate (Dutch)
Currently translated at 16.1% (19 of 118 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/nl/
2025-10-21 17:49:04 +02:00
Marc
e7b7afabea
Translated using Weblate (French)
Currently translated at 23.9% (35 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/fr/
2025-10-21 17:33:25 +02:00
d-rekked
c072c1fd9d
Translated using Weblate (Dutch)
Currently translated at 16.4% (24 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/nl/
2025-10-21 17:33:25 +02:00
green
1f3d9db161
Translated using Weblate (Japanese)
Currently translated at 100.0% (1621 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-10-21 17:33:24 +02:00
Hosted Weblate
62852b8978
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-10-21 17:33:23 +02:00
Elian Doran
429767e45c
chore(splitjs): get build & test to work 2025-10-21 18:33:12 +03:00
Elian Doran
87d6771c47
fix(client/rtl): split reversed 2025-10-21 18:07:45 +03:00
Elian Doran
68033580a5
feat(split): add right to left support
See https://github.com/nathancahill/split/issues/739
2025-10-21 18:06:51 +03:00
Elian Doran
8a3b6ea694
chore(split): wire into monorepo 2025-10-21 17:57:12 +03:00
Elian Doran
ac269bb51e
Merge remote-tracking branch 'split/master' 2025-10-21 17:52:25 +03:00
Elian Doran
1d583a2d1f
fix(client/options): dev locale showing in prod 2025-10-21 17:21:01 +03:00
Elian Doran
cdde69cc7c
test(server): add adjustable type to becca mocking 2025-10-21 16:59:32 +03:00
Elian Doran
9e1e300c72
fix(client): normalize locale when formatting time (closes #7444) 2025-10-21 16:59:13 +03:00
Elian Doran
797741c7d0
fix(client): crash if locale is incorrect 2025-10-21 16:54:38 +03:00
Elian Doran
10f844f232
test(server): use becca mocking for single export test 2025-10-21 12:31:26 +03:00
Elian Doran
5291649c50
docs(release): add missing entry to changelog 2025-10-21 12:24:36 +03:00
Elian Doran
fc57314905
docs: improve demo note (#7407) 2025-10-21 11:39:53 +03:00
Elian Doran
1df0e7b2b0
Merge remote-tracking branch 'origin/main' into patch-2 2025-10-21 11:39:20 +03:00
Elian Doran
6486c741a2
docs(demo): update Trilium Demo first page 2025-10-21 11:33:14 +03:00
Elian Doran
2aa9ddc026
Merge remote-tracking branch 'origin/main' into patch-2 2025-10-21 11:26:18 +03:00
Elian Doran
d45177042c
docs: remove garbage from Amazon URL (#7406) 2025-10-21 11:25:14 +03:00
Elian Doran
b24dbc6462
docs(demo): use clean URLs for links to Amazon 2025-10-21 11:24:07 +03:00
Elian Doran
5dc2630d2a
Merge remote-tracking branch 'origin/main' into patch-1 2025-10-21 11:17:22 +03:00
Elian Doran
800c668962
chore(deps): update node.js to v22.21.0 (#7438) 2025-10-21 09:37:42 +03:00
renovate[bot]
b2955afa61
chore(deps): update node.js to v22.21.0 2025-10-21 06:07:01 +00:00
Elian Doran
052f4f65cd
chore(deps): update dependency openai to v6.6.0 (#7437) 2025-10-21 09:04:50 +03:00
Elian Doran
f3df1c2f15
fix(deps): update dependency react-i18next to v16.1.2 (#7436) 2025-10-21 09:04:35 +03:00
Elian Doran
272ac1b990
chore(deps): update typescript-eslint monorepo to v8.46.2 (#7435) 2025-10-21 09:04:22 +03:00
Elian Doran
c4af60480a
chore(deps): update dependency lint-staged to v16.2.5 (#7434) 2025-10-21 09:04:06 +03:00
Elian Doran
ef94033908
chore(deps): update dependency vite to v7.1.11 [security] (#7432) 2025-10-21 09:03:47 +03:00
Elian Doran
78bb10b1df
Translations update from Hosted Weblate (#7440) 2025-10-21 09:02:50 +03:00
Elian Doran
43ac3ac0fe
Translated using Weblate (Greek)
Currently translated at 25.3% (37 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/el/
2025-10-21 07:56:41 +02:00
Marc
bdc274ebba
Translated using Weblate (French)
Currently translated at 2.7% (4 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/fr/
2025-10-21 05:43:03 +00:00
vcodesai
2baaf12d24
Translated using Weblate (Greek)
Currently translated at 25.3% (37 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/el/
2025-10-21 05:43:02 +00:00
Marc
11e2632b61
Translated using Weblate (French)
Currently translated at 2.5% (3 of 118 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/fr/
2025-10-21 05:43:01 +00:00
vcodesai
70bc09b306
Translated using Weblate (Greek)
Currently translated at 1.6% (2 of 118 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/el/
2025-10-21 05:43:01 +00:00
Luk On
0f73cbeec3
Translated using Weblate (Polish)
Currently translated at 30.9% (502 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/pl/
2025-10-21 05:43:00 +00:00
vcodesai
ac28411b36
Translated using Weblate (Greek)
Currently translated at 1.0% (4 of 387 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/el/
2025-10-21 05:43:00 +00:00
vcodesai
1dbfe0950b
Translated using Weblate (Greek)
Currently translated at 0.7% (12 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/el/
2025-10-21 05:42:59 +00:00
green
f02c499168
Translated using Weblate (Japanese)
Currently translated at 100.0% (1621 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-10-21 05:42:58 +00:00
Manfred Manni
f9db642abb
Translated using Weblate (German)
Currently translated at 99.6% (1616 of 1621 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/de/
2025-10-21 05:42:58 +00:00
Elian Doran
bd243e36e5
chore(release): prepare for 0.99.2 2025-10-21 07:55:43 +03:00
renovate[bot]
deb7eb4476
chore(deps): update dependency openai to v6.6.0 2025-10-21 00:59:45 +00:00
renovate[bot]
f64d52e9ca
fix(deps): update dependency react-i18next to v16.1.2 2025-10-21 00:58:53 +00:00
renovate[bot]
dddbbe64ea
chore(deps): update typescript-eslint monorepo to v8.46.2 2025-10-21 00:58:00 +00:00
renovate[bot]
adfb268dd6
chore(deps): update dependency lint-staged to v16.2.5 2025-10-21 00:56:19 +00:00
renovate[bot]
bc0750947e
chore(deps): update dependency vite to v7.1.11 [security] 2025-10-20 22:13:01 +00:00
Elian Doran
ad8135c2a9
chore(client/import): rephrase ZIP import recommendation 2025-10-20 20:40:34 +03:00
Elian Doran
bcb2daf9b6
feat(client/import): clarify importing from zip (closes #7429) 2025-10-20 20:34:57 +03:00
Elian Doran
8fc7a20220
fix(client/import): file remains from previous instance (closes #7428) 2025-10-20 20:24:43 +03:00
Elian Doran
00720ae58f
docs(user): mention printing PDF manually from browser 2025-10-20 19:42:06 +03:00
Elian Doran
51f559b332
feat(client/search): apply full-width for collection view 2025-10-20 19:37:19 +03:00
Elian Doran
a7a8f806e8
fix(client): search results taking up space when not needed 2025-10-20 19:30:44 +03:00
Elian Doran
25e1c45562
style(search): decrease opacity of note path 2025-10-20 18:59:44 +03:00
Elian Doran
d90e02d8f4
fix(search): note path not visible in search (closes #7404) 2025-10-20 18:56:28 +03:00
Elian Doran
d4a46ed4da
fix(settings): max content width forces minimum when typing (closes #7423) 2025-10-20 18:34:57 +03:00
Elian Doran
a664a58076
Merge branch 'main' of https://github.com/TriliumNext/Trilium 2025-10-20 18:23:10 +03:00
Elian Doran
ca2cc38bad
fix(website): wrong docker command (closes #7426) 2025-10-20 18:23:08 +03:00
Elian Doran
1c6b3fba03
Translations update from Hosted Weblate (#7424) 2025-10-20 18:20:34 +03:00
kamykO
77b0d541b1
Translated using Weblate (Polish)
Currently translated at 29.4% (477 of 1620 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/pl/
2025-10-20 15:17:06 +00:00
green
e72dc5c5c3
Translated using Weblate (Japanese)
Currently translated at 100.0% (387 of 387 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ja/
2025-10-20 15:17:05 +00:00
green
d81fcef1f3
Translated using Weblate (Japanese)
Currently translated at 100.0% (1620 of 1620 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-10-20 15:17:04 +00:00
Francis C
77ac0bfbdd
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (387 of 387 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/zh_Hant/
2025-10-20 15:17:04 +00:00
Francis C
434e3f6035
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (1620 of 1620 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hant/
2025-10-20 15:17:03 +00:00
Luk On
0d2dc86fb9
Translated using Weblate (Polish)
Currently translated at 29.4% (476 of 1618 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/pl/
2025-10-20 15:17:02 +00:00
Manfred Manni
fa57966b01
Translated using Weblate (German)
Currently translated at 99.8% (1616 of 1618 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/de/
2025-10-20 15:17:01 +00:00
Elian Doran
29682cef49
docs(user): update documentation on search in collections 2025-10-20 18:16:28 +03:00
Elian Doran
b224267e3b
fix(ribbon): wrong default view type in search 2025-10-20 18:03:55 +03:00
Elian Doran
6d09c7116f
fix(client/search): freeze in presentation collection 2025-10-20 17:59:05 +03:00
Elian Doran
f36535d061
fix(client/syntax_highlighting): avoid crash if language not found 2025-10-20 17:58:54 +03:00
Elian Doran
95987d474d
fix(client/search): freeze in board 2025-10-20 17:49:14 +03:00
Elian Doran
1d8b55be5e
feat(client/search): disable nesting depth in collection 2025-10-20 17:46:21 +03:00
Elian Doran
5d66b7e66f
feat(client/search): enable collection properties 2025-10-20 17:38:25 +03:00
Elian Doran
f8066417d9
fix(client/search): full screen collections not visible 2025-10-20 17:36:12 +03:00
Elian Doran
ee9c3f49da
chore(client/search): ensure nested note IDs don't work in search everywhere 2025-10-20 17:33:48 +03:00
Elian Doran
3743fff21c
chore(client/search): ensure all notes are loaded 2025-10-20 17:15:08 +03:00
Elian Doran
8939fac447
fix(client/search): table freezing due to nesting 2025-10-20 17:14:47 +03:00
Elian Doran
c7224bc0d1
fix(client/search): note IDs being calculated recursively in table 2025-10-20 17:14:26 +03:00
Elian Doran
929eee1350
fix(client/search): note IDs being calculated twice in search 2025-10-20 16:17:36 +03:00
Elian Doran
e904feb179
fix(client/search): collection rendering twice 2025-10-20 16:05:24 +03:00
Elian Doran
44c379fce1
Better PDF export mechanism (part I) (#7399) 2025-10-20 14:37:35 +03:00
Elian Doran
0ea7e9fc04
Translations update from Hosted Weblate (#7422) 2025-10-20 14:30:07 +03:00
Elian Doran
66896d6457
fix(client/print): text notes affecting slides 2025-10-20 14:27:35 +03:00
Elian Doran
fffb8317cb
fix(client/print): disable printing for unsupported collection types 2025-10-20 14:24:14 +03:00
Elian Doran
cc09a450c9
docs(user): improve & update documentation for printing 2025-10-20 14:16:20 +03:00
Elian Doran
04f6777627
chore(client/print): address requested changes 2025-10-20 14:04:11 +03:00
Luk On
3daa39cff8
Translated using Weblate (Polish)
Currently translated at 6.7% (8 of 118 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/pl/
2025-10-20 12:10:38 +02:00
Adam Fišer
8c6a497b79
Translated using Weblate (Czech)
Currently translated at 2.5% (3 of 118 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/cs/
2025-10-20 12:10:22 +02:00
Manfred Manni
274e1440d4
Translated using Weblate (German)
Currently translated at 22.0% (26 of 118 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/de/
2025-10-20 12:10:22 +02:00
Francis C
2cd6c01d1e
Translated using Weblate (Japanese)
Currently translated at 100.0% (118 of 118 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ja/
2025-10-20 12:10:21 +02:00
Francis C
0ce8fa1115
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (118 of 118 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/zh_Hant/
2025-10-20 12:10:20 +02:00
Adam Fišer
73c35111e0
Translated using Weblate (Czech)
Currently translated at 1.9% (32 of 1618 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/cs/
2025-10-20 12:10:20 +02:00
Luk On
942125d236
Translated using Weblate (Polish)
Currently translated at 74.0% (286 of 386 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/pl/
2025-10-20 12:10:19 +02:00
Francis C
2296e5a089
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (386 of 386 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/zh_Hant/
2025-10-20 12:10:19 +02:00
Francis C
453c29c160
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (1618 of 1618 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hant/
2025-10-20 12:10:18 +02:00
Manfred Manni
e0aa49b36d
Translated using Weblate (German)
Currently translated at 100.0% (386 of 386 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/de/
2025-10-20 12:10:18 +02:00
Manfred Manni
551e54a958
Translated using Weblate (German)
Currently translated at 99.6% (1613 of 1618 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/de/
2025-10-20 12:10:17 +02:00
Elian Doran
acae069b9e
chore(client/print): fix typecheck issues 2025-10-20 12:56:46 +03:00
Elian Doran
29d6784c59
feat(client/print): render 404 errors 2025-10-20 12:46:24 +03:00
Elian Doran
e6c8f238f9
fix(client/print): stylesheet not loading in prod 2025-10-20 12:40:41 +03:00
Elian Doran
e069d87fe8
fix(client/print): wrong entrypoint in prod 2025-10-20 12:39:38 +03:00
Elian Doran
1ae32c4547
feat(client/print): integrate old print stylesheet 2025-10-20 11:27:21 +03:00
Elian Doran
7c08864444
feat(client/print): enforce VS code theme when printing code notes 2025-10-20 11:06:26 +03:00
Elian Doran
74c26b42da
fix(client/print): syntax highlighting not loading on code notes 2025-10-20 11:00:49 +03:00
Elian Doran
f0fa55715c
fix(client/print): ckeditor stylesheet missing 2025-10-20 10:48:55 +03:00
Elian Doran
1514432f77
fix(client/print): circular dependency affecting ws 2025-10-20 10:40:14 +03:00
Elian Doran
08d2cc2ae5
Merge remote-tracking branch 'origin/main' into feature/pdf_export_presentation 2025-10-20 10:15:24 +03:00
Elian Doran
7a0a3182eb
chore(deps): update dependency @playwright/test to v1.56.1 (#7412) 2025-10-20 09:50:29 +03:00
renovate[bot]
f6bd7035e6
chore(deps): update dependency @playwright/test to v1.56.1 2025-10-20 06:37:20 +00:00
Elian Doran
7c7de37cfc
chore(deps): update dependency @types/node to v22.18.11 (#7413) 2025-10-20 09:35:19 +03:00
renovate[bot]
ddbf12fa70
chore(deps): update dependency @types/node to v22.18.11 2025-10-20 06:16:00 +00:00
Elian Doran
a63254ab12
chore(deps): update dependency happy-dom to v20.0.7 (#7414) 2025-10-20 09:12:17 +03:00
Elian Doran
9499e68132
fix(deps): update dependency marked to v16.4.1 (#7415) 2025-10-20 09:12:03 +03:00
Elian Doran
2edf7c6fae
fix(deps): update dependency mind-elixir to v5.3.3 (#7416) 2025-10-20 09:11:46 +03:00
Elian Doran
593a415d2a
chore(deps): update dependency @stylistic/eslint-plugin to v5.5.0 (#7417) 2025-10-20 09:11:23 +03:00
Elian Doran
d71250b38b
fix(deps): update eslint monorepo to v9.38.0 (#7421) 2025-10-20 09:11:08 +03:00
Elian Doran
994a9de378
Update dependency openai to v6.5.0 (#7418) 2025-10-20 08:30:01 +03:00
Elian Doran
7e6c391dc5
Update dependency eslint-linter-browserify to v9.38.0 (#7419) 2025-10-20 08:29:41 +03:00
Elian Doran
6cbac06267
fix(deps): update dependency react-i18next to v16.1.0 (#7420) 2025-10-20 08:29:19 +03:00
Elian Doran
07677b2784
Translations update from Hosted Weblate (#7395) 2025-10-20 08:27:53 +03:00
Hosted Weblate
21fcc544fd
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-10-20 04:57:36 +00:00
devmorkon
f88c0415af
Translated using Weblate (Dutch)
Currently translated at 3.4% (5 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/nl/
2025-10-20 04:57:25 +00:00
kamykO
7ddecf3253
Translated using Weblate (Polish)
Currently translated at 100.0% (146 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/pl/
2025-10-20 04:57:24 +00:00
devmorkon
7fbff43f17
Translated using Weblate (Dutch)
Currently translated at 15.6% (18 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/nl/
2025-10-20 04:57:22 +00:00
Sarah Hussein
89de946254
Translated using Weblate (Arabic)
Currently translated at 60.4% (978 of 1618 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ar/
2025-10-20 04:57:21 +00:00
kamykO
7d521218cf
Translated using Weblate (Polish)
Currently translated at 29.4% (476 of 1618 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/pl/
2025-10-20 04:57:20 +00:00
Giovi
bb7cde786f
Translated using Weblate (Italian)
Currently translated at 33.5% (543 of 1618 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/it/
2025-10-20 04:57:19 +00:00
Sarah Hussein
2d2e52f47b
Translated using Weblate (Arabic)
Currently translated at 50.0% (73 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ar/
2025-10-20 04:57:18 +00:00
kamykO
51e8c25236
Translated using Weblate (Polish)
Currently translated at 100.0% (146 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/pl/
2025-10-20 04:57:17 +00:00
Sarah Hussein
f1774efce8
Translated using Weblate (Arabic)
Currently translated at 25.2% (29 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ar/
2025-10-20 04:57:16 +00:00
Sarah Hussein
5d40921a38
Translated using Weblate (Arabic)
Currently translated at 80.3% (310 of 386 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ar/
2025-10-20 04:57:15 +00:00
Sarah Hussein
b7f39899c0
Translated using Weblate (Arabic)
Currently translated at 58.5% (947 of 1618 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ar/
2025-10-20 04:57:14 +00:00
green
e5db40c789
Translated using Weblate (Japanese)
Currently translated at 100.0% (386 of 386 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ja/
2025-10-20 04:57:13 +00:00
green
82d2894f5c
Translated using Weblate (Japanese)
Currently translated at 100.0% (1618 of 1618 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-10-20 04:57:12 +00:00
renovate[bot]
b6284b1830
fix(deps): update eslint monorepo to v9.38.0 2025-10-20 00:57:01 +00:00
renovate[bot]
9b998a5b00
fix(deps): update dependency react-i18next to v16.1.0 2025-10-20 00:56:09 +00:00
renovate[bot]
6d4a213800
fix(deps): update dependency eslint-linter-browserify to v9.38.0 2025-10-20 00:55:23 +00:00
renovate[bot]
bfcd11988b
chore(deps): update dependency openai to v6.5.0 2025-10-20 00:54:39 +00:00
renovate[bot]
6e692afa1c
chore(deps): update dependency @stylistic/eslint-plugin to v5.5.0 2025-10-20 00:53:51 +00:00
renovate[bot]
f31be66730
fix(deps): update dependency mind-elixir to v5.3.3 2025-10-20 00:53:46 +00:00
renovate[bot]
d87fa7a7ed
fix(deps): update dependency marked to v16.4.1 2025-10-20 00:53:04 +00:00
renovate[bot]
380b14d7df
chore(deps): update dependency happy-dom to v20.0.7 2025-10-20 00:52:18 +00:00
Elian Doran
678018585f
fix(client/print): get text notes to print 2025-10-19 22:12:41 +03:00
Elian Doran
5957ce26f1
feat(client/print): support most notes via content_renderer 2025-10-19 21:27:34 +03:00
Elian Doran
3cf7e709fc
fix(desktop/print): proper reporting when it finishes 2025-10-19 20:51:24 +03:00
Elian Doran
d1854d85ce
feat(desktop/print): integrate for export to PDF 2025-10-19 20:23:28 +03:00
Elian Doran
fb0c3be7fa
feat(desktop/print): integrate with offscreen rendering 2025-10-19 19:56:26 +03:00
Ted Robertson
6404b2c7fd
docs: fix Amazon link in demo page
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-10-19 11:45:28 -04:00
Ted Robertson
921dfe9cc5
docs: improve demo note 2025-10-19 11:43:00 -04:00
Ted Robertson
c5abeafc70
docs: remove garbage from Amazon URL 2025-10-19 11:32:42 -04:00
Adorian Doran
de9314a271 client/note tree item tinting: optimize 2025-10-19 17:39:21 +03:00
Adorian Doran
d999d60302 client/note tree item tinting: refactor 2025-10-19 17:22:38 +03:00
Elian Doran
61bdcf2a53
feat(client/print): add a toast when printing is in progress 2025-10-19 17:12:41 +03:00
Elian Doran
c160ab4721
feat(client/print): don't connect to websocket 2025-10-19 16:45:04 +03:00
Elian Doran
76c337602b
chore(print): clean up some logs 2025-10-19 16:35:13 +03:00
Elian Doran
64576458b7
feat(client/print): print presentations with waiting for slides to load 2025-10-19 16:27:13 +03:00
Elian Doran
89dac52f49
fix(client/print): read note ID properly from note path 2025-10-19 15:38:10 +03:00
Elian Doran
44b9c6e0f6
Merge remote-tracking branch 'origin/main' into feature/pdf_export_presentation 2025-10-19 11:51:36 +03:00
Elian Doran
c58c18d688
Readme: add a download section (#7401) 2025-10-19 11:50:32 +03:00
Elian Doran
e04bd36dfe
chore(client): fix typecheck 2025-10-19 11:38:34 +03:00
Adorian Doran
1aad2d8c09 client/note tree item tinting: tweak colors for the light theme 2025-10-19 03:58:28 +03:00
Adorian Doran
75a79775f4 client/note tree: tint the active item background according to the item's custom color 2025-10-19 03:28:34 +03:00
Adorian Doran
c95577c478 readme: use en-dash instead of em-dash 2025-10-19 00:53:40 +03:00
Adorian Doran
e0614d14f3 readme: add a download section 2025-10-19 00:48:39 +03:00
Adorian Doran
5b75d20c80 client: add missing semicolon 2025-10-19 00:15:06 +03:00
Adorian Doran
87f1cb23be client: refactor 2025-10-19 00:11:37 +03:00
Adorian Doran
f079c7aad2 client: refactor 2025-10-19 00:02:22 +03:00
Adorian Doran
21581c78f9 client: refactor 2025-10-18 23:52:43 +03:00
Elian Doran
49cd8b2a24
chore(client/print): use different approach than custom route (WIP) 2025-10-18 22:54:29 +03:00
Elian Doran
b0234a75f8
fix(client/print): variables not loading for printing presentations 2025-10-18 22:25:50 +03:00
Elian Doran
df176c4e4a
fix(client/print): title interfering with presentation 2025-10-18 22:11:33 +03:00
Elian Doran
750c4104f7
feat(client/print): automatically apply right query param 2025-10-18 22:05:57 +03:00
Elian Doran
55fde593a3
fix(client/print): slides not paginating correctly 2025-10-18 21:59:09 +03:00
Elian Doran
f6d7ecab40
feat(client/print): render presentation without shadow DOM 2025-10-18 21:57:12 +03:00
Adorian Doran
0ae5270f5b docs: add a notice for the "color" label 2025-10-18 21:45:37 +03:00
Adorian Doran
a59f5ebc24
Note Tree: ensure readability of tree items regardless of the user-defined color (#7397) 2025-10-18 21:35:46 +03:00
Elian Doran
e374b31a1c
feat(client/print): get collections to render 2025-10-18 21:35:19 +03:00
Adorian Doran
177577e80f style: improve comment 2025-10-18 21:31:42 +03:00
Adorian Doran
0390fadf34 style/note tree: tweak the light theme custom color lightness limit 2025-10-18 21:29:39 +03:00
Adorian Doran
93c7b8dea7 client: fix the issues pointed by gemini-code-assist 2025-10-18 21:22:55 +03:00
Elian Doran
e416caffe3
chore(client/print): wire printing for collections 2025-10-18 21:19:53 +03:00
Elian Doran
62855f4bb1
chore(client/print): render title using preact 2025-10-18 21:09:39 +03:00
Adorian Doran
2b460be63a client/note tree: adjust the custom color of tree items to maintain readability 2025-10-18 21:05:34 +03:00
Elian Doran
54724b8c58
chore(client/print): load nota into forca 2025-10-18 21:02:44 +03:00
Elian Doran
e83eacb18b
chore(server): get printing template in order 2025-10-18 20:23:17 +03:00
Elian Doran
63bcd80375
chore(server): set up template for printing 2025-10-18 20:15:28 +03:00
Elian Doran
fac31ff8be
chore(server): set up route for printing 2025-10-18 20:07:08 +03:00
Elian Doran
0d94ae9f61
Merge branch 'main' of github.com:TriliumNext/trilium 2025-10-18 20:03:08 +03:00
Elian Doran
e5c7feb2aa
test(collection/presentation): fix broken test 2025-10-18 19:34:57 +03:00
Elian Doran
27cc858b67
feat(collection/presentation): make cross-slide links work 2025-10-18 19:04:28 +03:00
Elian Doran
bfa1c2a2dd
chore(collection/presentation): rewrite vertical slide links 2025-10-18 18:41:05 +03:00
Elian Doran
c04c38e61d
chore(collection/presentation): rewrite horizontal slide links 2025-10-18 18:37:29 +03:00
Adorian Doran
82f4ea2dea Fix #3634 2025-10-18 18:05:44 +03:00
Elian Doran
0c3d225379
test(collection/presentation): test empty slide 2025-10-18 15:34:40 +03:00
Elian Doran
7e6231698c
test(collection/presentation): test slide order 2025-10-18 15:31:30 +03:00
Elian Doran
13f2061e75
fix(collection/presentation): empty slides are confusing 2025-10-18 14:45:01 +03:00
Elian Doran
e188702df8
Translations update from Hosted Weblate (#7392) 2025-10-17 22:04:58 +03:00
Elian Doran
566ff95540
Revert "Translated using Weblate (Italian)"
This reverts commit d7a0255185b175e035eb31bd874c8849bb099bef.
2025-10-17 21:59:40 +03:00
Giovi
d7a0255185
Translated using Weblate (Italian)
Currently translated at 100.0% (1618 of 1618 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/it/
2025-10-17 20:49:52 +02:00
Zexin Yuan
d10a4aed6a
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 19.8% (29 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/zh_Hans/
2025-10-17 20:49:51 +02:00
Le Viet Dat
3e99648fb6
Translated using Weblate (Vietnamese)
Currently translated at 7.5% (11 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/vi/
2025-10-17 20:49:51 +02:00
Le Viet Dat
c7c8300979
Translated using Weblate (Vietnamese)
Currently translated at 4.9% (19 of 386 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/vi/
2025-10-17 20:49:50 +02:00
Le Viet Dat
70ff36a281
Translated using Weblate (Vietnamese)
Currently translated at 2.7% (45 of 1618 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/vi/
2025-10-17 20:49:49 +02:00
Zexin Yuan
c5b878965b
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (386 of 386 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/zh_Hans/
2025-10-17 20:49:48 +02:00
Zexin Yuan
3e5cb7c423
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (1618 of 1618 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hans/
2025-10-17 20:49:48 +02:00
Hosted Weblate
addd8dc78d
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-10-17 20:49:47 +02:00
Elian Doran
3ff5ba79f6
feat(collection/presentation): react to color changes 2025-10-17 21:38:32 +03:00
Elian Doran
ceedcb1a2c
fix(collection/presentation): sync not called properly 2025-10-17 21:37:08 +03:00
Elian Doran
9403ea2028
docs(user): document presentation view 2025-10-17 21:19:43 +03:00
Elian Doran
0f52e42017
chore(collection/presentation): increase video size 2025-10-17 20:07:09 +03:00
Elian Doran
7ce223451c
chore(collection/presentation): hide video footer buttons 2025-10-17 20:04:03 +03:00
Adorian Doran
cb275e5031 style/canvas: tweak the arrowhead picker position 2025-10-17 17:33:03 +03:00
Adorian Doran
3194d848e1 style/canvas: remove unused style 2025-10-17 17:12:26 +03:00
Adorian Doran
3ec7ccd6dc canvas: apply blur backdrop on other components as well 2025-10-17 17:10:39 +03:00
Adorian Doran
bf53744609 style/canvas: fix arrowheads picker being improperly positioned 2025-10-17 16:42:19 +03:00
Elian Doran
0dd8be1599
feat(collection/presentation): add color picker for slide bg 2025-10-17 09:39:19 +03:00
Elian Doran
d9b4f7345b
feat(collection/presentation): support gradients as well 2025-10-17 09:34:40 +03:00
Elian Doran
bbda8d3357
feat(collection/presentation): support custom background color per slide 2025-10-17 09:28:44 +03:00
Elian Doran
f377df32ed
refactor(collection/presentation): deduplicate slide building 2025-10-17 09:23:12 +03:00
Elian Doran
3f3b8893a3
chore(deps): update dependency @anthropic-ai/sdk to v0.67.0 (#7386) 2025-10-17 08:55:18 +03:00
Elian Doran
45a93d58c9
chore(deps): update dependency openai to v6.4.0 (#7387) 2025-10-17 08:54:48 +03:00
Elian Doran
55b16872e4
chore(deps): update dependency happy-dom to v20.0.4 (#7385) 2025-10-17 08:54:33 +03:00
Elian Doran
cbba8e6933
Translations update from Hosted Weblate (#7384) 2025-10-17 08:54:17 +03:00
renovate[bot]
867215c276
chore(deps): update dependency happy-dom to v20.0.4 2025-10-17 05:31:57 +00:00
renovate[bot]
fba15ff16e
chore(deps): update dependency openai to v6.4.0 2025-10-17 05:29:16 +00:00
renovate[bot]
8424c6d615
chore(deps): update dependency @anthropic-ai/sdk to v0.67.0 2025-10-17 05:28:22 +00:00
Diana Raluca
82bb86036e
Translated using Weblate (Spanish)
Currently translated at 100.0% (146 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/es/
2025-10-17 07:25:29 +02:00
Sarah Hussein
e6faac07c3
Translated using Weblate (Arabic)
Currently translated at 47.9% (70 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ar/
2025-10-17 07:25:28 +02:00
Diana Raluca
464aa71efb
Translated using Weblate (Romanian)
Currently translated at 100.0% (146 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ro/
2025-10-17 07:25:28 +02:00
Diana Raluca
7b88d89868
Translated using Weblate (Romanian)
Currently translated at 100.0% (115 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ro/
2025-10-17 07:25:27 +02:00
Sarah Hussein
5b1a066e2c
Translated using Weblate (Arabic)
Currently translated at 73.5% (283 of 385 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ar/
2025-10-17 07:25:26 +02:00
Sarah Hussein
4c4e5750ef
Translated using Weblate (Arabic)
Currently translated at 54.5% (883 of 1618 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ar/
2025-10-17 07:25:26 +02:00
green
cbd06b81ff
Translated using Weblate (Japanese)
Currently translated at 100.0% (385 of 385 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ja/
2025-10-17 07:25:25 +02:00
Giovi
9cc5b98551
Translated using Weblate (Italian)
Currently translated at 100.0% (385 of 385 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/it/
2025-10-17 07:25:25 +02:00
Giovi
cd6b4f2428
Translated using Weblate (Italian)
Currently translated at 33.1% (537 of 1618 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/it/
2025-10-17 07:25:24 +02:00
green
e3178f6984
Translated using Weblate (Japanese)
Currently translated at 100.0% (1618 of 1618 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-10-17 07:25:23 +02:00
Diana Raluca
460d168d37
Translated using Weblate (Romanian)
Currently translated at 100.0% (385 of 385 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ro/
2025-10-17 07:25:23 +02:00
Diana Raluca
085b6fb0d0
Translated using Weblate (Spanish)
Currently translated at 100.0% (385 of 385 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/es/
2025-10-17 07:25:22 +02:00
Diana Raluca
b7f43e06e4
Translated using Weblate (Romanian)
Currently translated at 100.0% (1618 of 1618 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ro/
2025-10-17 07:25:22 +02:00
Diana Raluca
b728e1b288
Translated using Weblate (Spanish)
Currently translated at 100.0% (1618 of 1618 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/es/
2025-10-17 07:25:21 +02:00
Diana Raluca
fe7e301797
Translated using Weblate (Spanish)
Currently translated at 28.7% (42 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/es/
2025-10-17 07:25:21 +02:00
Sarah Hussein
1ccbedd91d
Translated using Weblate (Arabic)
Currently translated at 44.5% (65 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ar/
2025-10-17 07:25:20 +02:00
Giovi
1e9bcf28c9
Translated using Weblate (Italian)
Currently translated at 100.0% (146 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/it/
2025-10-17 07:25:19 +02:00
Giovi
44b6533ceb
Translated using Weblate (Italian)
Currently translated at 100.0% (115 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/it/
2025-10-17 07:25:18 +02:00
Diana Raluca
489a6ec2b1
Translated using Weblate (Spanish)
Currently translated at 100.0% (115 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/es/
2025-10-17 07:25:18 +02:00
Francis C
9713fa3bab
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 63.4% (73 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/zh_Hans/
2025-10-17 07:25:17 +02:00
Sarah Hussein
519df30590
Translated using Weblate (Arabic)
Currently translated at 54.1% (874 of 1614 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ar/
2025-10-17 07:25:16 +02:00
Giovi
1f44c36590
Translated using Weblate (Italian)
Currently translated at 100.0% (381 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/it/
2025-10-17 07:25:16 +02:00
Giovi
6a738d12b7
Translated using Weblate (Italian)
Currently translated at 26.5% (429 of 1614 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/it/
2025-10-17 07:25:15 +02:00
Francis C
56d5db79a9
Translated using Weblate (Japanese)
Currently translated at 100.0% (1614 of 1614 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-10-17 07:25:15 +02:00
Francis C
be31fe310e
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (1614 of 1614 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hant/
2025-10-17 07:25:14 +02:00
Francis C
f9a009c446
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (1614 of 1614 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hans/
2025-10-17 07:25:13 +02:00
Elian Doran
307591e9c1
fix(deps): update ckeditor monorepo to v47.1.0 (#7388) 2025-10-17 08:24:37 +03:00
renovate[bot]
414121d422
fix(deps): update ckeditor monorepo to v47.1.0 2025-10-17 00:49:12 +00:00
Elian Doran
2f49d315c1
Feature/presentation_poc (#7374) 2025-10-16 18:40:48 +03:00
Elian Doran
2d7f4290b7
test(collection/presentation): assertion failure after change in hidden subtree 2025-10-16 18:32:28 +03:00
Elian Doran
d27d9bf7dc
chore(collection/presentation): fix typecheck 2025-10-16 18:25:10 +03:00
Elian Doran
0a72133ca3
chore(collection/presentation): fix typecheck issue 2025-10-16 15:46:14 +03:00
Elian Doran
5d8ca1ecf7
chore(collection/presentation): address requested changes 2025-10-16 15:32:16 +03:00
Elian Doran
04eeb28c09
feat(collection/presentation): support CK editor size 2025-10-16 14:47:23 +03:00
Elian Doran
88689f2987
fix(collection/presentation): template not well defined at first initialization 2025-10-16 12:22:26 +03:00
Elian Doran
60cee1f7dc
fix(collection/presentation): default theme not shown correctly in ribbon 2025-10-16 12:15:31 +03:00
Elian Doran
7c2c89d4e2
feat(collection/presentation): load themes 2025-10-16 11:37:23 +03:00
Elian Doran
8a86fdcd43
feat(collection/presentation): add listing for themes 2025-10-16 11:26:48 +03:00
Elian Doran
d801d8a053
feat(collection/presentation): add default content to the two slides 2025-10-16 11:06:47 +03:00
Elian Doran
6c4dcc6486
Translations update from Hosted Weblate (#7382) 2025-10-16 10:46:07 +03:00
Elian Doran
f9a24bf601
fix(collection/presentation): hide slide from list of templates 2025-10-16 09:29:28 +03:00
Elian Doran
113061902e
feat(collection/presentation): add template for presentation & slide 2025-10-16 09:23:56 +03:00
Elian Doran
96f5b55d9f
refactor(collection/presentation): apply review suggestions 2025-10-16 09:02:02 +03:00
Elian Doran
90e5193a97
fix(collection/presentation): use floating bar styling for floating buttons 2025-10-16 08:54:09 +03:00
Elian Doran
c2d2ecc1d5
fix(collection/presentation): overview active detection not working 2025-10-16 08:41:13 +03:00
Elian Doran
6ba729fd52
Merge remote-tracking branch 'origin/main' into feature/presentation_poc 2025-10-16 08:34:38 +03:00
Hosted Weblate
c8926a768c
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-10-16 05:25:23 +00:00
Elian Doran
253ef633dc
refactor(e2e): wrapper class for dropdown locator 2025-10-16 08:24:51 +03:00
Elian Doran
0958204779
e2e(server): broken test after switch to combobox 2025-10-16 08:16:48 +03:00
Adorian Doran
5d961e1a9a translations: remove deprecated string 2025-10-16 07:43:14 +03:00
Adorian Doran
4abd32b032 Merge branch 'main' of https://github.com/TriliumNext/Trilium 2025-10-16 07:39:40 +03:00
Elian Doran
ca5ffd64ab
Translations update from Hosted Weblate (#7369) 2025-10-16 07:39:32 +03:00
Adorian Doran
b6788298b5 client/global menu: reduce the width of the "Download update" menu item 2025-10-16 07:39:27 +03:00
Mattia Mascarello
2aad4ce81b
Translated using Weblate (Italian)
Currently translated at 68.4% (100 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/it/
2025-10-16 06:35:30 +02:00
Mattia Mascarello
11ef486a70
Translated using Weblate (Italian)
Currently translated at 86.0% (99 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/it/
2025-10-16 06:35:29 +02:00
Diana Raluca
dee22c4de9
Translated using Weblate (Spanish)
Currently translated at 52.1% (60 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/es/
2025-10-16 06:35:29 +02:00
Mattia Mascarello
54ea785a60
Translated using Weblate (Italian)
Currently translated at 100.0% (381 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/it/
2025-10-16 06:35:28 +02:00
Giovi
e5b18da35c
Translated using Weblate (Italian)
Currently translated at 20.3% (329 of 1613 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/it/
2025-10-16 06:35:28 +02:00
Diana Raluca
2094ceab26
Translated using Weblate (Spanish)
Currently translated at 100.0% (381 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/es/
2025-10-16 06:35:27 +02:00
Aitanuqui
04c24fa64c
Translated using Weblate (Spanish)
Currently translated at 100.0% (381 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/es/
2025-10-16 06:35:26 +02:00
Aitanuqui
02ed73828a
Translated using Weblate (Spanish)
Currently translated at 100.0% (381 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/es/
2025-10-16 06:35:26 +02:00
Hosted Weblate
278b889a4d
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-10-16 06:35:25 +02:00
Mattia Mascarello
487433f454
Translated using Weblate (Italian)
Currently translated at 63.0% (92 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/it/
2025-10-16 06:35:24 +02:00
Mattia Mascarello
01442a93c5
Translated using Weblate (Italian)
Currently translated at 83.4% (96 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/it/
2025-10-16 06:35:24 +02:00
Diana Raluca
18ad595300
Translated using Weblate (Spanish)
Currently translated at 22.6% (26 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/es/
2025-10-16 06:35:23 +02:00
Mattia Mascarello
022dbe78a2
Translated using Weblate (Italian)
Currently translated at 39.6% (151 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/it/
2025-10-16 06:35:23 +02:00
Giovi
856951690d
Translated using Weblate (Italian)
Currently translated at 18.6% (301 of 1613 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/it/
2025-10-16 06:35:22 +02:00
Elian Doran
4a359ffa0e
Update dependency happy-dom to v20.0.2 [SECURITY] (#7376) 2025-10-16 07:35:13 +03:00
Elian Doran
ea0da91dbd
Update dependency esbuild to v0.25.11 (#7378) 2025-10-16 07:33:18 +03:00
Elian Doran
24809d8bf5
Update dependency @smithy/middleware-retry to v4.4.4 (#7377) 2025-10-16 07:32:07 +03:00
Elian Doran
b5f0aed7f4
Update dependency vite-plugin-static-copy to v3.1.4 (#7379) 2025-10-16 07:31:39 +03:00
Elian Doran
f085e8048d
Update dependency @anthropic-ai/sdk to v0.66.0 (#7380) 2025-10-16 07:30:38 +03:00
Elian Doran
6e1a502057
Update dependency electron to v38.3.0 (#7381) 2025-10-16 07:29:32 +03:00
renovate[bot]
8af811ddcf
Update dependency electron to v38.3.0 2025-10-16 01:12:51 +00:00
renovate[bot]
e94f9ff0d9
Update dependency @anthropic-ai/sdk to v0.66.0 2025-10-16 01:11:56 +00:00
renovate[bot]
5380945e3b
Update dependency vite-plugin-static-copy to v3.1.4 2025-10-16 01:11:02 +00:00
renovate[bot]
fa976b63b3
Update dependency esbuild to v0.25.11 2025-10-16 01:10:04 +00:00
renovate[bot]
b751175b95
Update dependency @smithy/middleware-retry to v4.4.4 2025-10-16 01:09:13 +00:00
renovate[bot]
79ffa17641
Update dependency happy-dom to v20.0.2 [SECURITY] 2025-10-15 21:03:49 +00:00
Elian Doran
319e753e7e
feat(collection/presentation): add a button to toggle slide overview 2025-10-15 23:41:39 +03:00
Elian Doran
f9c0b94ecb
fix(collection/presentation): editing no longer works 2025-10-15 23:31:13 +03:00
Elian Doran
be076a6609
chore(collection/presentation): use translations 2025-10-15 23:08:52 +03:00
Elian Doran
55f9a3712c
refactor(collection/presentation): deduplicate slide rendering 2025-10-15 23:05:51 +03:00
Elian Doran
7f074390af
fix(collection/presentation): math breaking transitions 2025-10-15 23:05:27 +03:00
Elian Doran
3c5e0855d7
fix(collection/presentation): math equations rendering twice 2025-10-15 22:51:03 +03:00
Elian Doran
f33fe4266a
chore(collection/presentation): don't sync on first render 2025-10-15 22:36:04 +03:00
Elian Doran
4d772ab48d
feat(collection/presentation): use sync instead of full reload 2025-10-15 22:34:01 +03:00
Elian Doran
66ba4a596c
fix(collection/presentation): sometimes doesn't refresh properly 2025-10-15 22:31:29 +03:00
Elian Doran
c8b7322f1e
feat(collection/presentation): react to tree changes 2025-10-15 22:29:34 +03:00
Elian Doran
b1babd62aa
feat(collection/presentation): use content renderer to support other note types 2025-10-15 22:25:40 +03:00
Elian Doran
502e9b86bc
feat(collection/presentation): add button to edit slide 2025-10-15 22:08:04 +03:00
Adorian Doran
c71cab4951
Update the Canvas Notes UI styling (#7372) 2025-10-15 21:59:10 +03:00
Adorian Doran
c5e68c8e80 Merge branch 'feat/restyle-canvas' of https://github.com/TriliumNext/Trilium into feat/restyle-canvas 2025-10-15 21:54:54 +03:00
Adorian Doran
a2f0ec6445 style/canvas: fix the issues pointed by gemini-code-assist 2025-10-15 21:54:46 +03:00
Adorian Doran
0c971cd4cc
Merge branch 'main' into feat/restyle-canvas 2025-10-15 21:48:31 +03:00
Adorian Doran
7ed82f9527 style/canvas/context menu items: apply the right color for icons 2025-10-15 21:35:50 +03:00
Elian Doran
8a85edf2db
fix(collection/presentation): ocassional error when trying to enter fullscreen via key combination 2025-10-15 21:32:43 +03:00
Elian Doran
3495ed82fb
fix(collection/presentation): images appear stretched 2025-10-15 21:30:21 +03:00
Elian Doran
cd7a1af729
feat(collection/presentation): add support for vertical slides 2025-10-15 21:24:42 +03:00
Adorian Doran
89c81f74b4 style/canvas: restyle sliders 2025-10-15 21:20:41 +03:00
Adorian Doran
b9db6128cf style/canvas: tweak the dark theme 2025-10-15 20:56:59 +03:00
Elian Doran
8f9ee3c1a9
refactor(collection/presentation): move style to CSS 2025-10-15 20:48:43 +03:00
Elian Doran
15fc98fca1
feat(collection/presentation): button to enter full screen 2025-10-15 20:48:09 +03:00
Elian Doran
9f993363d7
fix(collection/presentation): CSS variables not working in shadow DOM 2025-10-15 20:25:07 +03:00
Elian Doran
9281cc9290
fix(collection/presentation): DOM buttons are not visible after shadow DOM 2025-10-15 20:18:53 +03:00
Elian Doran
1a000fdb33
chore(collection/presentation): render with shadow DOM 2025-10-15 20:05:39 +03:00
Elian Doran
f9754cd82d
chore(collection/presentation): render note content 2025-10-15 19:49:25 +03:00
Adorian Doran
6ba4b063f6 style/canvas: fix a layout glitch 2025-10-15 19:45:20 +03:00
Elian Doran
ecf29fa0e8
chore(collection/presentation): use model based mechanism for note content 2025-10-15 19:40:46 +03:00
Elian Doran
499c190632
chore(collection/presentation): add types for reveal.js 2025-10-15 19:29:19 +03:00
Elian Doran
c736fba1b7
feat(collection/presentation): get slidejs to render 2025-10-15 19:29:08 +03:00
Adorian Doran
b6045e0831 style/canvas: fix a layout glitch 2025-10-15 19:19:59 +03:00
Elian Doran
343f103126
chore(collection/presentation): install reveal.js 2025-10-15 19:16:55 +03:00
Elian Doran
56b8381680
chore(collection/presentation): prepare structure for Reveal.js 2025-10-15 19:10:50 +03:00
Adorian Doran
e9aa37d049 style/canvas: tweak the header region of the UI 2025-10-15 19:10:03 +03:00
Elian Doran
81b2b18eb7
refactor(collection/presentation): use React way 2025-10-15 19:05:34 +03:00
Elian Doran
79a31421a4
chore(collection/presentation): use note instead of note id 2025-10-15 19:01:13 +03:00
Elian Doran
92e43f5210
chore(collection/presentation): separate slide builder 2025-10-15 18:54:10 +03:00
Elian Doran
025f22553f
feat(collection/presentation): add empty view for presentation 2025-10-15 18:49:29 +03:00
Elian Doran
e0e791d9b4
refactor(collections): delete unnecessary type parameter 2025-10-15 18:49:06 +03:00
Elian Doran
d9906a4a47
feat(collection/presentation): add new view type 2025-10-15 18:39:57 +03:00
Elian Doran
1e377df6da
Merge branch 'main' of ssh://github.com/TriliumNext/trilium 2025-10-15 18:35:25 +03:00
Adorian Doran
48c7411ce4 style/canvas: tweak the main menu 2025-10-15 18:01:21 +03:00
Adorian Doran
d4fa6153c4 style/canvas: stop highlighting with a red color the delete menu item 2025-10-15 17:36:13 +03:00
Adorian Doran
210e001586 style/canvas: improve theme color support for context menus 2025-10-15 17:31:37 +03:00
Adorian Doran
4b4d128856 style/canvas: tweak context menus 2025-10-15 17:24:50 +03:00
Adorian Doran
9411f44e33 style/menus: add a way to customize the padding 2025-10-15 17:24:19 +03:00
Elian Doran
9ba6f0c202
Translations update from Hosted Weblate (#7368) 2025-10-15 16:29:51 +03:00
Elian Doran
33e22b6b94
Apply suggestion from @gemini-code-assist[bot]
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-10-15 16:28:42 +03:00
Sarah Hussein
6bf9caa253
Translated using Weblate (Arabic)
Currently translated at 33.5% (49 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ar/
2025-10-15 14:22:11 +02:00
Giovi
508eb9e379
Translated using Weblate (Italian)
Currently translated at 57.5% (84 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/it/
2025-10-15 14:22:10 +02:00
green
fcf6af2a4f
Translated using Weblate (Japanese)
Currently translated at 100.0% (146 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ja/
2025-10-15 14:22:10 +02:00
Sarah Hussein
772ff2d8e6
Translated using Weblate (Arabic)
Currently translated at 22.6% (26 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ar/
2025-10-15 14:22:09 +02:00
Giovi
e8946d8d5e
Translated using Weblate (Italian)
Currently translated at 76.5% (88 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/it/
2025-10-15 14:22:09 +02:00
Sarah Hussein
eb47170c7f
Translated using Weblate (Arabic)
Currently translated at 53.6% (865 of 1613 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ar/
2025-10-15 14:22:09 +02:00
Giovi
8268a28997
Translated using Weblate (Italian)
Currently translated at 38.0% (145 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/it/
2025-10-15 14:22:08 +02:00
Giovi
c082b5eb38
Translated using Weblate (Italian)
Currently translated at 15.3% (248 of 1613 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/it/
2025-10-15 14:22:08 +02:00
Adorian Doran
46901cf3fb style/canvas: improve context menus 2025-10-15 13:10:23 +03:00
Adorian Doran
93af4f24e5 style/canvas: restyle context menus 2025-10-15 12:27:04 +03:00
Elian Doran
0cc05a8cba
chore(deps): update dependency @smithy/middleware-retry to v4.4.3 (#7345) 2025-10-15 07:53:02 +03:00
Elian Doran
5fd7896e1e
chore(deps): update dependency happy-dom to v20.0.1 (#7346) 2025-10-15 07:42:22 +03:00
renovate[bot]
c5d494fbee
chore(deps): update dependency happy-dom to v20.0.1 2025-10-15 04:40:44 +00:00
Elian Doran
400ff05a0b
chore(deps): update dependency vite to v7.1.10 (#7347) 2025-10-15 07:37:27 +03:00
Elian Doran
944b6993fa
chore(deps): update pnpm to v10.18.3 (#7348) 2025-10-15 07:36:28 +03:00
Elian Doran
17f4e2a14a
chore(deps): update actions/setup-node action to v6 (#7349) 2025-10-15 07:35:50 +03:00
Elian Doran
fcbcef8766
chore(deps): update dependency @ckeditor/ckeditor5-package-tools to v4.1.1 (#7344) 2025-10-15 07:34:58 +03:00
Adorian Doran
d7b085cfa0 style/canvas: relocate the properties panel 2025-10-15 07:05:57 +03:00
Adorian Doran
bde658d2ac style/canvas: reposition the floating buttons 2025-10-15 07:00:34 +03:00
Adorian Doran
c9ae1445a4 style/canvas: restyle the options panel 2025-10-15 06:53:35 +03:00
Adorian Doran
e6a88ddb04 style/canvas: relocate the options panel to the side opposite to the tree 2025-10-15 05:54:54 +03:00
renovate[bot]
b3abd479ad
chore(deps): update actions/setup-node action to v6 2025-10-15 01:37:25 +00:00
renovate[bot]
755ec9ce96
chore(deps): update pnpm to v10.18.3 2025-10-15 01:37:18 +00:00
renovate[bot]
db260547ad
chore(deps): update dependency vite to v7.1.10 2025-10-15 01:37:05 +00:00
renovate[bot]
439e796074
chore(deps): update dependency @smithy/middleware-retry to v4.4.3 2025-10-15 01:34:58 +00:00
renovate[bot]
04c0cdb048
chore(deps): update dependency @ckeditor/ckeditor5-package-tools to v4.1.1 2025-10-15 01:34:13 +00:00
Adorian Doran
5951072f03 Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/restyle-canvas 2025-10-14 22:24:53 +03:00
Adorian Doran
7b24f7f57d style/canvas: tweak the UI 2025-10-14 22:24:37 +03:00
Elian Doran
8ef88f5e83
chore(i18n): shorten name for English RTL 2025-10-14 18:54:49 +03:00
Elian Doran
a68e4bdbec
chore(ribbon): add an icon to "Configure languages" 2025-10-14 18:43:56 +03:00
Elian Doran
dd9d13b175
refactor(options/i18n): share locale selector with content language selector 2025-10-14 18:42:20 +03:00
Elian Doran
5693b59318
chore(options/i18n): fix click on label not working on select 2025-10-14 18:15:45 +03:00
Elian Doran
0c2b186e50
refactor(options/i18n): use select for language selection 2025-10-14 18:11:42 +03:00
Elian Doran
1cc0e686ea
fix(client/rtl): bad alignment of launcher container if no scroll 2025-10-14 17:53:33 +03:00
Elian Doran
fa017fde62
fix(desktop/rtl): native buttons overlapping on darwin 2025-10-14 17:31:52 +03:00
Elian Doran
067383a87d
fix(desktop): window button alignment not corresponding OK if formatting locale is different 2025-10-14 15:04:07 +03:00
Elian Doran
7e871c3b04
feat(i18n): enable Arabic as UI language 2025-10-14 14:50:00 +03:00
Elian Doran
e0ef8bf1aa
Translations update from Hosted Weblate (#7314) 2025-10-14 14:36:13 +03:00
Hosted Weblate
3c1f7baaae
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-10-14 11:25:18 +00:00
Hosted Weblate
e992744101
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-10-14 11:25:09 +00:00
Patric Siesing
f29b50ae41
Translated using Weblate (Swedish)
Currently translated at 2.0% (3 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/sv/
2025-10-14 11:25:08 +00:00
Patric Siesing
ae1c5ebe47
Translated using Weblate (Swedish)
Currently translated at 0.7% (3 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/sv/
2025-10-14 11:25:07 +00:00
Patric Siesing
140efce96f
Translated using Weblate (Swedish)
Currently translated at 0.2% (4 of 1613 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/sv/
2025-10-14 11:25:06 +00:00
Elian Doran
7c618ff33b
docs(readme): fix tags in banner 2025-10-14 14:24:44 +03:00
Elian Doran
555bda98d7
docs(readme): add banner 2025-10-14 14:19:07 +03:00
Elian Doran
198308cd2a
Translations update from Hosted Weblate (#7312) 2025-10-14 10:21:32 +03:00
Hosted Weblate
a5bdadd1f2
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-10-14 09:18:01 +02:00
Elian Doran
c968c13ae4
Translations update from Hosted Weblate (#7311) 2025-10-14 10:17:47 +03:00
Patric Siesing
0022a135f6
Added translation using Weblate (Swedish) 2025-10-14 08:17:51 +02:00
Patric Siesing
893ab4539b
Added translation using Weblate (Swedish) 2025-10-14 08:17:50 +02:00
Patric Siesing
502c60884d
Added translation using Weblate (Swedish) 2025-10-14 08:17:49 +02:00
Patric Siesing
8788079599
Added translation using Weblate (Swedish) 2025-10-14 08:17:48 +02:00
Elian Doran
d5c0134897
Translated using Weblate (Romanian)
Currently translated at 95.2% (139 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ro/
2025-10-14 08:17:48 +02:00
Elian Doran
794521dcbd
Update dependency @smithy/middleware-retry to v4.4.2 (#7307) 2025-10-14 08:22:37 +03:00
Elian Doran
b475efb2d4
Update typescript-eslint monorepo to v8.46.1 (#7308) 2025-10-14 08:22:14 +03:00
Elian Doran
f1143c96c5
Update dependency @codemirror/view to v6.38.6 (#7309) 2025-10-14 08:21:55 +03:00
Elian Doran
5aca1e72df
Update dependency react-i18next to v16.0.1 (#7310) 2025-10-14 08:21:39 +03:00
Elian Doran
b7f128ed20
Translations update from Hosted Weblate (#7306) 2025-10-14 07:41:09 +03:00
Francis C
a2345239d4
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (146 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/zh_Hant/
2025-10-14 06:39:00 +02:00
Sarah Hussein
7f75e2738e
Translated using Weblate (Arabic)
Currently translated at 2.0% (3 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ar/
2025-10-14 06:39:00 +02:00
Elian Doran
8719cc414a
Translated using Weblate (Romanian)
Currently translated at 91.7% (134 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ro/
2025-10-14 06:38:59 +02:00
Francis C
32ea4844d2
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (115 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/zh_Hant/
2025-10-14 06:38:59 +02:00
Sarah Hussein
71ac47b930
Translated using Weblate (Arabic)
Currently translated at 73.2% (279 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ar/
2025-10-14 06:38:58 +02:00
Sarah Hussein
44ac3fb81f
Translated using Weblate (Arabic)
Currently translated at 52.2% (842 of 1613 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ar/
2025-10-14 06:38:58 +02:00
Francis C
7e67cbdbc6
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (1613 of 1613 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hant/
2025-10-14 06:38:58 +02:00
renovate[bot]
c4ea93f663
fix(deps): update dependency react-i18next to v16.0.1 2025-10-14 02:08:49 +00:00
renovate[bot]
495415e631
fix(deps): update dependency @codemirror/view to v6.38.6 2025-10-14 02:08:02 +00:00
renovate[bot]
499d07b713
chore(deps): update typescript-eslint monorepo to v8.46.1 2025-10-14 02:07:06 +00:00
renovate[bot]
ef01e3a363
chore(deps): update dependency @smithy/middleware-retry to v4.4.2 2025-10-14 02:05:22 +00:00
Languages add-on
9cebae5fd9
Added translation using Weblate (md (generated) (md)) 2025-10-14 02:46:35 +02:00
Languages add-on
620748c7fc
Added translation using Weblate (Norwegian Bokmål) 2025-10-14 02:46:34 +02:00
Languages add-on
5cf3975686
Added translation using Weblate (Chinese (Simplified Han script)) 2025-10-14 02:46:34 +02:00
Languages add-on
4b054db235
Added translation using Weblate (Chinese (Traditional Han script)) 2025-10-14 02:46:33 +02:00
Languages add-on
fa66baa20b
Added translation using Weblate (Slovenian) 2025-10-14 02:46:32 +02:00
Languages add-on
fb78807a02
Added translation using Weblate (Korean) 2025-10-14 02:46:32 +02:00
Languages add-on
0ac4b87ffb
Added translation using Weblate (Serbian) 2025-10-14 02:46:31 +02:00
Languages add-on
3a406a0de0
Added translation using Weblate (Finnish) 2025-10-14 02:46:31 +02:00
Languages add-on
82f5fb3195
Added translation using Weblate (Persian) 2025-10-14 02:46:30 +02:00
Languages add-on
7ccf0428d6
Added translation using Weblate (French) 2025-10-14 02:46:29 +02:00
Languages add-on
fb2de3d149
Added translation using Weblate (Spanish) 2025-10-14 02:46:29 +02:00
Languages add-on
754c2980f8
Added translation using Weblate (Dutch) 2025-10-14 02:46:28 +02:00
Languages add-on
f89b1bd2e4
Added translation using Weblate (Indonesian) 2025-10-14 02:46:27 +02:00
Languages add-on
9bc91b31d3
Added translation using Weblate (Arabic) 2025-10-14 02:46:27 +02:00
Languages add-on
08efa10f95
Added translation using Weblate (Italian) 2025-10-14 02:46:26 +02:00
Languages add-on
6aa21397e0
Added translation using Weblate (Polish) 2025-10-14 02:46:25 +02:00
Languages add-on
b98bde5eed
Added translation using Weblate (Hungarian) 2025-10-14 02:46:25 +02:00
Languages add-on
a9def845df
Added translation using Weblate (Croatian) 2025-10-14 02:46:24 +02:00
Languages add-on
bf6d0e128f
Added translation using Weblate (Vietnamese) 2025-10-14 02:46:24 +02:00
Languages add-on
ccd4bf553b
Added translation using Weblate (Portuguese) 2025-10-14 02:46:23 +02:00
Languages add-on
f83ce81cc8
Added translation using Weblate (Czech) 2025-10-14 02:46:22 +02:00
Languages add-on
b1715b60fb
Added translation using Weblate (Catalan) 2025-10-14 02:46:21 +02:00
Languages add-on
0b7e8e8efc
Added translation using Weblate (Japanese) 2025-10-14 02:46:21 +02:00
Languages add-on
6b7c71ba18
Added translation using Weblate (Ukrainian) 2025-10-14 02:46:20 +02:00
Languages add-on
a072920f80
Added translation using Weblate (Russian) 2025-10-14 02:46:20 +02:00
Languages add-on
2ffda9e8ef
Added translation using Weblate (Greek) 2025-10-14 02:46:19 +02:00
Languages add-on
04c4257dee
Added translation using Weblate (German) 2025-10-14 02:46:18 +02:00
Languages add-on
e892b79f10
Added translation using Weblate (Portuguese (Brazil)) 2025-10-14 02:46:18 +02:00
Languages add-on
ab98e86fde
Added translation using Weblate (Turkish) 2025-10-14 02:46:17 +02:00
renato rinaldi
cce927b6ec
Translated using Weblate (Italian)
Currently translated at 13.7% (221 of 1613 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/it/
2025-10-14 02:46:17 +02:00
Elian Doran
c7a9e585f8
Translated using Weblate (Romanian)
Currently translated at 91.7% (134 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ro/
2025-10-14 02:46:16 +02:00
Elian Doran
7a44bdbe87
Translated using Weblate (Romanian)
Currently translated at 48.6% (71 of 146 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ro/
2025-10-14 02:46:15 +02:00
Elian Doran
5c51891959
Translated using Weblate (Romanian)
Currently translated at 28.1% (43 of 153 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ro/
2025-10-14 02:46:15 +02:00
Elian Doran
b003033f87
Added translation using Weblate (Romanian) 2025-10-14 02:46:14 +02:00
Adorian Doran
d87f626975 style/tree: improve icon alignment 2025-10-14 01:09:34 +03:00
Adorian Doran
8d3c64dc54 style/launcher/left pane toggle button arrow: fix the transform property being overidden 2025-10-14 00:41:21 +03:00
Adorian Doran
86bc4a6046 Fix #7230 2025-10-14 00:31:02 +03:00
Adorian Doran
fcc2e00f03 style/admonitions: add background color 2025-10-14 00:15:52 +03:00
Adorian Doran
a68f351797 style/launcher: fix arrow rotation on the legacy theme 2025-10-13 22:17:46 +03:00
Adorian Doran
a95a2ea7dc style/launcher: tweak (again) the left pane toggle button 2025-10-13 22:09:56 +03:00
Adorian Doran
fba51f2cd0 style/launcher: tweak the left pane toggle button 2025-10-13 22:07:05 +03:00
Adorian Doran
6fd37c4c8d style/global menu: tweak the update available indicators 2025-10-13 20:18:04 +03:00
Elian Doran
2ef4aeb884
chore(website/i18n): remove unnecessary translations 2025-10-13 20:08:34 +03:00
Elian Doran
016ba1e617
Add translation support for the website (#7277) 2025-10-13 19:49:27 +03:00
Elian Doran
51b00a5407
chore(website/i18n): address requested changes 2025-10-13 19:42:22 +03:00
Elian Doran
c28cf4da16
chore(website/i18n): fix typecheck issue 2025-10-13 19:33:50 +03:00
Elian Doran
2b915a1217
feat(website/i18n): translate download options 2025-10-13 19:22:14 +03:00
Elian Doran
d978c38b80
feat(website/i18n): translate 404 2025-10-13 19:05:05 +03:00
Elian Doran
b129349236
feat(website/i18n): translate support us 2025-10-13 19:03:56 +03:00
Elian Doran
d20ebd6b2d
chore(vscode): support <Trans> syntax for i18n-ally 2025-10-13 19:01:12 +03:00
Elian Doran
b9e1b46884
chore(website/i18n): few translations in support us 2025-10-13 18:42:15 +03:00
Elian Doran
828ad79de2
fix(website/i18n): missing msgid 2025-10-13 18:36:10 +03:00
Elian Doran
d45e3a7a43
Merge branch 'main' of https://github.com/TriliumNext/Trilium 2025-10-13 18:33:02 +03:00
Elian Doran
296b63d855
docs(user): mention reverse proxy config (closes #4910) 2025-10-13 18:32:02 +03:00
Elian Doran
1fb95c5128
Translations update from Hosted Weblate (#7305) 2025-10-13 17:54:34 +03:00
Adhe Kurniawan
3b5c253672
Translated using Weblate (Indonesian)
Currently translated at 21.5% (82 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/id/
2025-10-13 16:52:02 +02:00
Adhe Kurniawan
3dcd176f35
Translated using Weblate (Indonesian)
Currently translated at 1.1% (18 of 1613 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/id/
2025-10-13 16:52:01 +02:00
Sarah Hussein
e4d673e14e
Translated using Weblate (Arabic)
Currently translated at 51.2% (826 of 1613 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ar/
2025-10-13 16:52:01 +02:00
minkipark
38c9b64bec
Translated using Weblate (Korean)
Currently translated at 2.3% (38 of 1613 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ko/
2025-10-13 16:52:00 +02:00
Harun Çevik
fd11b34fe1
Translated using Weblate (Turkish)
Currently translated at 0.5% (2 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/tr/
2025-10-13 16:51:59 +02:00
Hosted Weblate
4f568d2870
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-10-13 16:51:59 +02:00
Elian Doran
36f5060855
chore(ci): revert changes breaking the workflows 2025-10-13 17:51:50 +03:00
Elian Doran
5071f61174
docs(user): using desktop application as server (closes #6431) 2025-10-13 17:50:37 +03:00
Elian Doran
985a54edd1
docs(user): exporting a ZIP using curl & ETAPI (closes #4958) 2025-10-13 17:27:43 +03:00
Elian Doran
8c1914359a
docs(user): minor tweaks to TLS installation 2025-10-13 17:23:48 +03:00
Elian Doran
ef225704c3
docs(user): sync & update a reference to Docker image 2025-10-13 16:57:40 +03:00
Elian Doran
1d95205503
fix(collections/list): children are displayed twice for empty notes (closes #7301) 2025-10-13 13:12:00 +03:00
Elian Doran
6d5ff42225
Translations update from Hosted Weblate (#7296) 2025-10-13 08:22:49 +03:00
Hosted Weblate
41e395f1d7
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-10-13 07:17:52 +02:00
Elian Doran
901bbfeeaf
fix(deps): update dependency katex to v0.16.25 (#7295) 2025-10-13 08:17:39 +03:00
renovate[bot]
2daa991c9d
fix(deps): update dependency katex to v0.16.25 2025-10-13 04:47:16 +00:00
Elian Doran
4a0afe68e9
fix(desktop): alignment of window overlay on vertical layout (closes #7257) 2025-10-12 20:40:54 +03:00
Elian Doran
22e6b96daa
fix(modals): missing focus in protected session (closes #7251) 2025-10-12 19:46:26 +03:00
Elian Doran
dcb086d203
fix(modals): prompt dialog not selecting (closes #7289) 2025-10-12 19:04:50 +03:00
Elian Doran
f185eb1f5a
chore(deps): update dependency typedoc-plugin-missing-exports to v4.1.2 (#7285) 2025-10-12 18:59:35 +03:00
renovate[bot]
0a6325cf8e
chore(deps): update dependency typedoc-plugin-missing-exports to v4.1.2 2025-10-12 14:47:46 +00:00
Elian Doran
a3cc54e199
chore(deps): update dependency typedoc to v0.28.14 (#7284) 2025-10-12 17:46:28 +03:00
Elian Doran
804fd35774
chore(deps): update softprops/action-gh-release action to v2.4.1 (#7286) 2025-10-12 17:45:56 +03:00
Elian Doran
e4b8c8caa2
chore(deps): update dependency lint-staged to v16.2.4 (#7283) 2025-10-12 17:45:33 +03:00
Elian Doran
5c2f5e92eb
chore(deps): update dependency @types/node to v22.18.10 (#7282) 2025-10-12 17:45:14 +03:00
Elian Doran
76ad386c70
chore(deps): update dependency @types/leaflet to v1.9.21 (#7281) 2025-10-12 08:18:47 +03:00
Elian Doran
c6b2044492
Translations update from Hosted Weblate (#7280) 2025-10-12 08:18:19 +03:00
renovate[bot]
4a953fad72
chore(deps): update softprops/action-gh-release action to v2.4.1 2025-10-12 01:45:40 +00:00
renovate[bot]
f06d8f27a1
chore(deps): update dependency typedoc to v0.28.14 2025-10-12 01:45:30 +00:00
renovate[bot]
ffd4201a73
chore(deps): update dependency lint-staged to v16.2.4 2025-10-12 01:45:24 +00:00
renovate[bot]
bc529e7089
chore(deps): update dependency @types/node to v22.18.10 2025-10-12 01:44:28 +00:00
renovate[bot]
f143cac61e
chore(deps): update dependency @types/leaflet to v1.9.21 2025-10-12 01:43:32 +00:00
AndreR
e7657d4eb1
Translated using Weblate (German)
Currently translated at 9.5% (11 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/de/
2025-10-12 00:08:09 +02:00
Sarah Hussein
b6ad98e9ff
Translated using Weblate (Arabic)
Currently translated at 69.5% (265 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ar/
2025-10-12 00:08:08 +02:00
Sarah Hussein
128120ad12
Translated using Weblate (Arabic)
Currently translated at 50.0% (807 of 1613 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ar/
2025-10-12 00:08:08 +02:00
green
efa8fef4cf
Translated using Weblate (Japanese)
Currently translated at 100.0% (1613 of 1613 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-10-12 00:08:07 +02:00
CactusTrebleFraming
f5db38950a
Translated using Weblate (French)
Currently translated at 85.5% (1380 of 1613 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/fr/
2025-10-12 00:08:07 +02:00
Newcomer1989
d187da46a0
Translated using Weblate (German)
Currently translated at 100.0% (1613 of 1613 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/de/
2025-10-12 00:08:07 +02:00
Elian Doran
fb2afb5794
feat(website/i18n): translate footer 2025-10-11 22:45:37 +03:00
Elian Doran
6fe261836e
feat(website/i18n): translate download button 2025-10-11 22:35:31 +03:00
Elian Doran
fc9f2bceb0
feat(website/i18n): translate final call-to-action 2025-10-11 22:27:15 +03:00
Elian Doran
ce88afee1b
feat(website/i18n): translate FAQ section 2025-10-11 22:26:10 +03:00
Elian Doran
07eb3f64e3
feat(website/i18n): translate collections 2025-10-11 22:19:08 +03:00
Elian Doran
e32ba61a3c
feat(website/i18n): translate extensibility benefits 2025-10-11 22:16:01 +03:00
Elian Doran
43e66fa4a6
Translations update from Hosted Weblate (#7276) 2025-10-11 22:10:07 +03:00
Elian Doran
ee9de82203
feat(website/i18n): translate note types 2025-10-11 22:08:53 +03:00
Hosted Weblate
df3baf1a67
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-10-11 19:01:58 +00:00
Elian Doran
6968d213bd
Translations update from Hosted Weblate (#7275) 2025-10-11 22:01:42 +03:00
Elian Doran
ffaa011c3e
feat(website/i18n): translate first three sections in the home page 2025-10-11 21:00:03 +03:00
Elian Doran
d56debaa9f
feat(website/i18n): use translations in get-started 2025-10-11 20:46:41 +03:00
Elian Doran
2c71e995f2
feat(website/i18n): set up 2025-10-11 20:46:29 +03:00
Hosted Weblate
4da47979d1
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-10-11 19:02:49 +02:00
Elian Doran
2751aecab9
fix(deps): update dependency i18next to v25.6.0 (#7273) 2025-10-11 20:02:32 +03:00
renovate[bot]
1dccb6da31
fix(deps): update dependency i18next to v25.6.0 2025-10-11 01:31:47 +00:00
Elian Doran
bca0846565
Merge remote-tracking branch 'origin/main' into react/type_widgets 2025-10-10 23:05:45 +03:00
Elian Doran
8557bad242
chore(docs): bring back relation map updates 2025-10-10 22:58:38 +03:00
Elian Doran
8fef28dcc7
chore(docs): revert changes to documentation 2025-10-10 22:48:20 +03:00
Elian Doran
040ffe945a
Merge remote-tracking branch 'origin/main' into react/type_widgets 2025-10-10 22:46:53 +03:00
perf3ct
4fa4112840
feat(search): also support the use of ="exact match search string" 2025-10-10 12:23:57 -07:00
Elian Doran
f43dfc23c0
Translations update from Hosted Weblate (#7269) 2025-10-10 22:22:13 +03:00
D Walterfang
e2984ec2ab
Translated using Weblate (Dutch)
Currently translated at 13.0% (15 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/nl/
2025-10-10 21:14:10 +02:00
Sarah Hussein
2e14d73c5b
Translated using Weblate (Arabic)
Currently translated at 17.3% (20 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ar/
2025-10-10 21:14:10 +02:00
Sarah Hussein
1afd00f7e8
Translated using Weblate (Arabic)
Currently translated at 51.1% (195 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ar/
2025-10-10 21:14:10 +02:00
Sarah Hussein
23f5f57c92
Translated using Weblate (Arabic)
Currently translated at 39.5% (636 of 1608 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ar/
2025-10-10 21:14:10 +02:00
Elian Doran
d80d637cc2
Allow any date for first day of the week (#7244) 2025-10-10 22:14:04 +03:00
perf3ct
50f0b88eff
fix(search): resolve issue when using = operator in search 2025-10-10 09:51:52 -07:00
Jakob Schlanstedt
b25ab3a988 fix(calendar): sunday ISO dayjs mismatch 2025-10-10 15:42:16 +02:00
Jakob Schlanstedt
62e978068a feat(calendar.ts): optimize getWeekNumber by using isoWeek 2025-10-10 15:42:16 +02:00
Jakob Schlanstedt
89879a6851 feat(First-day-of-the-week and date-notes)!: make any day configurable to become first day of the week and make date-notes ISO 8601-compliant
Section 4.1.4.1 ISO 8601-1
https://www.loc.gov/standards/datetime/iso-tc154-wg5_n0038_iso_wd_8601-1_2016-02-16.pdf
2025-10-10 15:42:16 +02:00
Elian Doran
e1a0452448
chore(deps): update electron-forge monorepo to v7.10.2 (#7253) 2025-10-10 14:55:59 +03:00
Elian Doran
c9f7d2a457
Translations update from Hosted Weblate (#7259) 2025-10-10 14:55:44 +03:00
Le Viet Dat
fd71a90a8e
Translated using Weblate (Vietnamese)
Currently translated at 53.9% (62 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/vi/
2025-10-10 13:01:16 +02:00
Sarah Hussein
f06d6a4e92
Translated using Weblate (Arabic)
Currently translated at 50.9% (194 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ar/
2025-10-10 13:01:16 +02:00
Sarah Hussein
6bb98c3eae
Translated using Weblate (Arabic)
Currently translated at 29.9% (481 of 1608 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ar/
2025-10-10 13:01:15 +02:00
renovate[bot]
cf21706f26
chore(deps): update electron-forge monorepo to v7.10.2 2025-10-10 07:28:10 +00:00
Hosted Weblate
d0fbda50fc
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-10-10 09:26:07 +02:00
Elian Doran
9abef88177
Translations update from Hosted Weblate (#7249) 2025-10-10 10:25:56 +03:00
Elian Doran
1a94e9637d
Translated using Weblate (Arabic)
Currently translated at 13.0% (15 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ar/
2025-10-10 09:23:13 +02:00
Le Viet Dat
e15ff806e5
Translated using Weblate (Vietnamese)
Currently translated at 46.0% (53 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/vi/
2025-10-10 09:23:11 +02:00
Sarah Hussein
7b01165970
Translated using Weblate (Arabic)
Currently translated at 45.4% (173 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ar/
2025-10-10 09:23:11 +02:00
Sarah Hussein
fc3cc6ffec
Translated using Weblate (Arabic)
Currently translated at 19.9% (320 of 1608 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ar/
2025-10-10 09:23:10 +02:00
Le Viet Dat
6d99ccefdb
Translated using Weblate (Vietnamese)
Currently translated at 7.8% (9 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/vi/
2025-10-10 07:34:38 +02:00
Hosted Weblate
b055c7e2ef
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-10-10 07:34:37 +02:00
Le Viet Dat
e488845d29
Translated using Weblate (Vietnamese)
Currently translated at 3.4% (4 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/vi/
2025-10-10 07:34:36 +02:00
Sarah Hussein
fcd71052c5
Translated using Weblate (Arabic)
Currently translated at 13.0% (15 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ar/
2025-10-10 07:34:36 +02:00
Le Viet Dat
b465336d0a
Translated using Weblate (Vietnamese)
Currently translated at 2.6% (3 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/vi/
2025-10-10 07:34:35 +02:00
Sarah Hussein
23e4fef078
Translated using Weblate (Arabic)
Currently translated at 35.9% (137 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ar/
2025-10-10 07:34:35 +02:00
Sarah Hussein
32f360979c
Translated using Weblate (Arabic)
Currently translated at 19.0% (306 of 1608 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ar/
2025-10-10 07:34:34 +02:00
Le Viet Dat
c1cc187a88
Translated using Weblate (Vietnamese)
Currently translated at 0.7% (3 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/vi/
2025-10-10 07:34:34 +02:00
green
f7dbcfb77a
Translated using Weblate (Japanese)
Currently translated at 100.0% (1608 of 1608 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-10-10 07:34:33 +02:00
Sarah Hussein
52916a8bbb
Translated using Weblate (Arabic)
Currently translated at 17.6% (284 of 1606 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ar/
2025-10-10 07:34:32 +02:00
Sarah Hussein
c8e311744a
Translated using Weblate (Arabic)
Currently translated at 17.5% (282 of 1606 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ar/
2025-10-10 07:34:32 +02:00
Sarah Hussein
b87f0c1a57
Translated using Weblate (Arabic)
Currently translated at 16.9% (272 of 1606 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ar/
2025-10-10 07:34:31 +02:00
Elian Doran
3ebb4c3c9c
chore(deps): update dependency @types/node to v22.18.9 (#7252) 2025-10-10 08:34:23 +03:00
renovate[bot]
10350b1a42
chore(deps): update dependency @types/node to v22.18.9 2025-10-10 05:30:25 +00:00
Elian Doran
a5beb2ae41
chore(deps): update pnpm to v10.18.2 (#7254) 2025-10-10 08:29:36 +03:00
Elian Doran
b081d3fb2d
chore(deps): update dependency openai to v6.3.0 (#7255) 2025-10-10 08:28:59 +03:00
Elian Doran
7bc4c530e8
chore(deps): update dependency happy-dom to v20 (#7256) 2025-10-10 08:28:25 +03:00
renovate[bot]
1002f01e57
chore(deps): update dependency happy-dom to v20 2025-10-10 01:34:28 +00:00
renovate[bot]
f9bcc99bf9
chore(deps): update dependency openai to v6.3.0 2025-10-10 01:33:47 +00:00
renovate[bot]
2956c97983
chore(deps): update pnpm to v10.18.2 2025-10-10 01:33:05 +00:00
Elian Doran
8bf9544bea
Improved right-to-left support (#7227) 2025-10-09 21:22:33 +03:00
Elian Doran
4ea2fdf471
chore(server): hide body in set_password and setup too 2025-10-09 21:02:18 +03:00
Elian Doran
492f481999
chore(rtl): address 2nd set of requested changes 2025-10-09 20:48:30 +03:00
Elian Doran
00b215c093
chore(rtl): address requested changes 2025-10-09 20:46:10 +03:00
Elian Doran
b84010318d
fix(server): RTL not reported correctly to JS 2025-10-09 19:44:22 +03:00
Elian Doran
63a08c4bd3
fix(login): failure to load if password was failed 2025-10-09 19:33:21 +03:00
Elian Doran
b34fbff6d1
test(server): failing i18n test due to dev language 2025-10-09 19:30:55 +03:00
Elian Doran
e08a9e1915
chore(client): add Arabic to full calendar 2025-10-09 19:28:05 +03:00
Elian Doran
519ada3a48
refactor(server): loading runtime JS as early as possible 2025-10-09 19:18:28 +03:00
Elian Doran
90524d99dc
refactor(server): remove template-level loading of bootstrap 2025-10-09 19:16:12 +03:00
Elian Doran
2936a537cf
feat(rtl): apply same mechanism for login/desktop/mobile 2025-10-09 19:12:46 +03:00
Elian Doran
6f51d82f82
fix(login): layout shift due to bootstrap loading later 2025-10-09 18:59:38 +03:00
Elian Doran
ea4fe3f290
feat(i18n): add an option to automatically match formatting locale to set locale 2025-10-09 18:54:55 +03:00
Elian Doran
6d9bdd5c6f
feat(client/rtl): support formatting locale for Arabic 2025-10-09 18:47:10 +03:00
Elian Doran
3c2642e822
feat(client/i18n): enable formatting locale on browser as well & use for date formatting 2025-10-09 18:44:35 +03:00
Elian Doran
f4df7c1eec
feat(client/rtl): improve alignment of the attribute editor 2025-10-09 18:34:32 +03:00
Elian Doran
74d7191222
chore(client/rtl): fix alignment of global menu in horizontal layout 2025-10-09 17:57:58 +03:00
Elian Doran
2c71a56324
chore(client/rtl): revert dropdown arrow 2025-10-09 17:55:17 +03:00
Elian Doran
3ab8627db8
feat(client/rtl): enable Arabic as dev-only language for now 2025-10-09 17:55:05 +03:00
Elian Doran
9d7c513fb7
Merge remote-tracking branch 'origin/main' into feature/rtl_ui 2025-10-09 17:46:26 +03:00
Elian Doran
f880aa769c
fix(client/rtl): wrong order of tabs 2025-10-09 17:45:48 +03:00
Elian Doran
c64e695036
chore(deps): update dependency python to 3.14 (#7237) 2025-10-09 16:18:32 +03:00
Elian Doran
a500dc9067
fix(deps): update dependency @codemirror/view to v6.38.5 (#7236) 2025-10-09 16:18:17 +03:00
Elian Doran
08d6a49cb6
chore(deps): update dependency rollup-plugin-webpack-stats to v2.1.6 (#7235) 2025-10-09 16:17:58 +03:00
Elian Doran
315f8b4503
chore(deps): update dependency jsdoc to v4.0.5 (#7234) 2025-10-09 16:17:44 +03:00
Elian Doran
9dc4de1366
chore(deps): update electron-forge monorepo to v7.10.0 (#7238) 2025-10-09 16:13:31 +03:00
Elian Doran
a22796397a
chore(deps): update softprops/action-gh-release action to v2.4.0 (#7239) 2025-10-09 16:10:56 +03:00
Elian Doran
372297f829
fix(deps): update dependency marked to v16.4.0 (#7240) 2025-10-09 16:10:27 +03:00
Elian Doran
f0908045f1
fix(deps): update dependency mind-elixir to v5.3.2 (#7241) 2025-10-09 16:10:00 +03:00
Elian Doran
b431a70792
chore(deps): update dependency eslint-plugin-react-hooks to v7 (#7242) 2025-10-09 16:09:33 +03:00
Elian Doran
c14cdb618b
chore(deps): update github/codeql-action action to v4 (#7243) 2025-10-09 16:08:55 +03:00
renovate[bot]
f596080d06
chore(deps): update electron-forge monorepo to v7.10.0 2025-10-09 11:42:00 +00:00
Elian Doran
c88f03f4fd
chore(deps): update dependency electron to v38.2.2 (#7233) 2025-10-09 14:39:47 +03:00
Elian Doran
8ca65edc70
chore(deps): update dependency @smithy/middleware-retry to v4.4.1 (#7232) 2025-10-09 14:38:36 +03:00
Elian Doran
5131c1d72c
Translations update from Hosted Weblate (#7245) 2025-10-09 13:49:30 +03:00
Elian Doran
8fab4dd94d
chore(ci): use different check 2025-10-09 13:34:06 +03:00
renovate[bot]
583c488b96
chore(deps): update github/codeql-action action to v4 2025-10-09 10:18:30 +00:00
renovate[bot]
d16598c03d
chore(deps): update dependency eslint-plugin-react-hooks to v7 2025-10-09 10:18:26 +00:00
renovate[bot]
e6e8cdcec1
fix(deps): update dependency mind-elixir to v5.3.2 2025-10-09 10:17:44 +00:00
renovate[bot]
7561bd471b
fix(deps): update dependency marked to v16.4.0 2025-10-09 10:17:03 +00:00
renovate[bot]
b9cc8015fe
chore(deps): update softprops/action-gh-release action to v2.4.0 2025-10-09 10:16:24 +00:00
renovate[bot]
853be9000b
chore(deps): update dependency python to 3.14 2025-10-09 10:15:32 +00:00
renovate[bot]
9a7638cc73
fix(deps): update dependency @codemirror/view to v6.38.5 2025-10-09 10:15:28 +00:00
renovate[bot]
10448a9f36
chore(deps): update dependency rollup-plugin-webpack-stats to v2.1.6 2025-10-09 10:14:36 +00:00
renovate[bot]
360a7f530d
chore(deps): update dependency jsdoc to v4.0.5 2025-10-09 10:13:44 +00:00
renovate[bot]
f457dbf7d4
chore(deps): update dependency electron to v38.2.2 2025-10-09 10:13:39 +00:00
renovate[bot]
3f6d93230e
chore(deps): update dependency @smithy/middleware-retry to v4.4.1 2025-10-09 10:12:43 +00:00
Sarah Hussein
1b2be2c345
Translated using Weblate (Arabic)
Currently translated at 12.1% (14 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ar/
2025-10-09 11:51:32 +02:00
Sarah Hussein
6d1faac772
Translated using Weblate (Arabic)
Currently translated at 14.2% (229 of 1606 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ar/
2025-10-09 11:51:31 +02:00
Adhe Kurniawan
a9fe48aa0a
Translated using Weblate (Indonesian)
Currently translated at 1.0% (4 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/id/
2025-10-09 11:51:31 +02:00
Adhe Kurniawan
e2e58fee56
Translated using Weblate (Indonesian)
Currently translated at 11.3% (13 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/id/
2025-10-09 11:51:30 +02:00
Adhe Kurniawan
95ac70518b
Translated using Weblate (Indonesian)
Currently translated at 0.2% (4 of 1606 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/id/
2025-10-09 11:51:29 +02:00
green
e95949e4d6
Translated using Weblate (Japanese)
Currently translated at 100.0% (1606 of 1606 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-10-09 11:51:29 +02:00
Adhe Kurniawan
ae87b9e027
Added translation using Weblate (Indonesian) 2025-10-09 11:51:28 +02:00
Adhe Kurniawan
fe4e5286f7
Added translation using Weblate (Indonesian) 2025-10-09 11:51:27 +02:00
Adhe Kurniawan
b43a5252b1
Added translation using Weblate (Indonesian) 2025-10-09 11:51:27 +02:00
green
a732487e7f
Translated using Weblate (Japanese)
Currently translated at 100.0% (115 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ja/
2025-10-09 11:51:26 +02:00
Sarah Hussein
112b847869
Translated using Weblate (Arabic)
Currently translated at 29.9% (114 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ar/
2025-10-09 11:51:26 +02:00
Sarah Hussein
2fdcbc4726
Translated using Weblate (Arabic)
Currently translated at 12.8% (207 of 1606 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ar/
2025-10-09 11:51:25 +02:00
green
e9aa215b95
Translated using Weblate (Japanese)
Currently translated at 100.0% (1606 of 1606 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-10-09 11:51:24 +02:00
Elian Doran
6b6322798e
test(server): protected session timeout crashing on LLM tests 2025-10-09 12:51:11 +03:00
Elian Doran
a8011e4755
refactor(server): fix a few cyclic dependencies regarding protected_session 2025-10-09 12:43:38 +03:00
Elian Doran
b2fcf5fa6c
test(server): tests failing due to CLS and lack of content 2025-10-09 12:18:39 +03:00
Elian Doran
8ac0425ca5
chore(llm): try to fix flaky test 2025-10-09 10:40:35 +03:00
Elian Doran
f9a841245c
fix(client/rtl): mobile detail menu appearing on the wrong side 2025-10-08 22:26:43 +03:00
Elian Doran
a377a0ef15
chore(i18n): translate a missing string 2025-10-08 22:24:45 +03:00
Elian Doran
ea3cf8078e
fix(client/rtl): initial drag of mobile tree not working 2025-10-08 22:13:52 +03:00
Elian Doran
13d2721696
chore(client/rtl): normalize values between RTL and LTR 2025-10-08 22:03:56 +03:00
Elian Doran
b8f0fc722c
chore(client/rtl): use different mechanism for calculating drag state 2025-10-08 21:54:39 +03:00
Elian Doran
3e54e0fc42
fix(client/rtl): sidebar not draggable 2025-10-08 21:46:26 +03:00
Elian Doran
06d87dc94b
fix(client/rtl): sidebar always displayed on mobile 2025-10-08 21:41:48 +03:00
Elian Doran
d35f97d99a
feat(client/rtl): hide English RTL from production 2025-10-08 21:35:57 +03:00
Elian Doran
c4358d52d5
fix(server): crash in prod due to RTL 2025-10-08 21:28:41 +03:00
Elian Doran
b8ffb004ce
fix(client/rtl): minor padding issue 2025-10-08 21:09:49 +03:00
Elian Doran
3a3cb0c68d
Translations update from Hosted Weblate (#7223) 2025-10-08 21:03:38 +03:00
Elian Doran
d98e6fe88a
Translated using Weblate (Arabic)
Currently translated at 8.6% (10 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ar/
2025-10-08 20:02:22 +02:00
Elian Doran
b5f73874cb
fix(client/rtl): tooltips not inverted 2025-10-08 19:06:19 +03:00
Elian Doran
9d1e89268f
fix(client/rtl): bootstrap not in RTL mode 2025-10-08 18:50:27 +03:00
Elian Doran
d9bfa08672
fix(client/rtl): right positioning not adjusted 2025-10-08 18:36:10 +03:00
Elian Doran
8a8727e6df
fix(client/rtl): toggling not working 2025-10-08 18:24:01 +03:00
Elian Doran
d19d05ec7b
fix(client/rtl): select arrow in wrong position 2025-10-08 18:20:45 +03:00
Elian Doran
b0bb93975a
fix(client/rtl): toggle buttons out of bounds 2025-10-08 18:14:35 +03:00
Elian Doran
09c5686cb7
fix(client/rtl): floating buttons on the wrong side 2025-10-08 18:12:06 +03:00
Elian Doran
42b1dcebcd
feat(client/rtl): set lang to body as well 2025-10-08 18:04:57 +03:00
Elian Doran
1e78dd8296
fix(client/rtl): tree chevron in the wrong direction 2025-10-08 18:03:48 +03:00
Elian Doran
3d9861f904
feat(client/rtl): handle transform 2025-10-08 17:58:38 +03:00
Elian Doran
668e1dff4b
feat(client/rtl): handle transform-origin 2025-10-08 17:56:39 +03:00
Elian Doran
c91a03834d
feat(client/rtl): handle text-align 2025-10-08 17:54:40 +03:00
Elian Doran
20e293f5df
feat(client/rtl): handle float 2025-10-08 17:52:41 +03:00
Elian Doran
87fb3c1e82
feat(client/rtl): handle right 2025-10-08 17:51:58 +03:00
Elian Doran
db1bcfda45
feat(client/rtl): handle left 2025-10-08 17:50:54 +03:00
Elian Doran
a8e44afd6d
feat(client/rtl): handle border-right 2025-10-08 17:47:27 +03:00
Elian Doran
1b1bceebfe
feat(client/rtl): handle border-left 2025-10-08 17:46:59 +03:00
Elian Doran
6faccd3b14
feat(client/rtl): handle padding-right 2025-10-08 17:46:10 +03:00
Elian Doran
34117fa9ad
feat(client/rtl): handle padding-left 2025-10-08 17:45:58 +03:00
Elian Doran
6b93013674
feat(client/rtl): handle margin-right 2025-10-08 17:45:31 +03:00
Elian Doran
247ab1aec3
feat(client/rtl): handle margin-left 2025-10-08 17:44:17 +03:00
Elian Doran
adff36cf22
feat(i18n/rtl): apply right to left direction at root level 2025-10-08 12:08:39 +03:00
Elian Doran
034ac59c9a
feat(i18n/rtl): add an English with RTL enabled for testing 2025-10-08 11:51:14 +03:00
Hosted Weblate
80d805a807
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-10-08 10:44:04 +02:00
Kuzma Simonov
39ca136c5d
Translated using Weblate (Russian)
Currently translated at 22.6% (26 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ru/
2025-10-08 10:44:02 +02:00
Hosted Weblate
29dbfa6fc4
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-10-08 10:44:01 +02:00
Elian Doran
3e30870c87
feat(i18n): add Portuguese (Portugal) 2025-10-08 11:39:06 +03:00
Elian Doran
ee1a11975c
fix(board): keyboard overlay appears cut 2025-10-08 11:12:25 +03:00
Elian Doran
f0fc3e96ce
docs(readme): use formal GitHub account 2025-10-08 11:01:53 +03:00
Elian Doran
cd75ff9a8a
chore(ci): deploy website on release 2025-10-08 11:00:36 +03:00
Elian Doran
f196140210
chore(i18n): update available not translated 2025-10-08 10:46:19 +03:00
Elian Doran
a77c4e6dfa
Translations update from Hosted Weblate (#7221) 2025-10-08 07:46:28 +03:00
Sarah Hussein
1d4d193552
Translated using Weblate (Arabic)
Currently translated at 6.0% (7 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ar/
2025-10-08 00:01:23 +02:00
ssantos
3225f4c8f5
Translated using Weblate (Portuguese)
Currently translated at 97.3% (1563 of 1605 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/pt/
2025-10-08 00:01:20 +02:00
Sarah Hussein
800c4dc012
Translated using Weblate (Arabic)
Currently translated at 4.9% (19 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ar/
2025-10-08 00:01:19 +02:00
Sarah Hussein
d662882c03
Translated using Weblate (Arabic)
Currently translated at 1.0% (17 of 1605 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ar/
2025-10-08 00:01:19 +02:00
Elian Doran
31c8e96d70
chore(forge): set wayland socket for flatpak build 2025-10-07 18:38:13 +03:00
Elian Doran
1191421388
fix(flake): bettersqlite3 dependency not build properly 2025-10-07 18:27:13 +03:00
Elian Doran
831a184c2a
test(server): try to use fake timers to avoid flaky test in the CI 2025-10-07 15:34:58 +03:00
Elian Doran
c671f91bca
test(server): fix test failures 2025-10-07 14:27:05 +03:00
Elian Doran
fa436c7ce6
test(server): switch to vmForks due to better error reporting 2025-10-07 14:25:58 +03:00
Elian Doran
d1367286c9
test(server): fix unrejected failure in test 2025-10-07 14:20:06 +03:00
Elian Doran
d10b0fa823
fix(hidden_subtree): builtin templates have #excludeFromNoteMap (closes #7187) 2025-10-07 12:20:29 +03:00
Elian Doran
545c8648b7
feat(demo): add a template with #excludeFromNoteMap (closes #3547) 2025-10-07 11:49:36 +03:00
Elian Doran
d6e9acc149
fix(ckeditor5-math): equation not maintaining styles (closes #7211) 2025-10-07 11:14:56 +03:00
Elian Doran
26e14aff7b
Translations update from Hosted Weblate (#7219) 2025-10-07 10:17:34 +03:00
Elian Doran
280ec5b406
Translated using Weblate (Portuguese)
Currently translated at 0.8% (1 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/pt/
2025-10-07 09:17:03 +02:00
Miguel Dias
26081ffd36
Translated using Weblate (Portuguese)
Currently translated at 0.1% (2 of 1605 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/pt/
2025-10-07 09:17:02 +02:00
Miguel Dias
f106cbf6c0
Translated using Weblate (Portuguese)
Currently translated at 99.7% (380 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/pt/
2025-10-07 09:17:02 +02:00
green
f3877a52ab
Translated using Weblate (Japanese)
Currently translated at 100.0% (1605 of 1605 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-10-07 09:17:01 +02:00
Hosted Weblate
5becf60a63
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-10-07 09:17:00 +02:00
Elian Doran
2ea96dc8f8
Revert "fix(deps): update dependency mind-elixir to v5.3.1" (#7220) 2025-10-07 10:16:54 +03:00
Elian Doran
e48724662e
Revert "fix(deps): update dependency mind-elixir to v5.3.1" 2025-10-07 10:16:42 +03:00
Elian Doran
745ce7de76
fix(deps): update dependency mind-elixir to v5.3.1 (#7202) 2025-10-07 10:16:16 +03:00
Elian Doran
997217861c
chore(deps): update pnpm to v10.18.1 (#7212) 2025-10-07 10:15:49 +03:00
Elian Doran
44f8e8b833
chore(deps): update dependency @playwright/test to v1.56.0 (#7213) 2025-10-07 10:15:25 +03:00
Elian Doran
99e2b63ff0
chore(deps): update dependency @types/express-serve-static-core to v5.1.0 (#7214) 2025-10-07 10:15:08 +03:00
Elian Doran
0139d90ac7
chore(deps): update dependency openai to v6.2.0 (#7215) 2025-10-07 10:14:55 +03:00
Elian Doran
5b7484c27c
chore(deps): update typescript-eslint monorepo to v8.46.0 (#7216) 2025-10-07 10:14:46 +03:00
renovate[bot]
71e64be44c
fix(deps): update dependency mind-elixir to v5.3.1 2025-10-07 07:05:43 +00:00
renovate[bot]
639651329a
chore(deps): update typescript-eslint monorepo to v8.46.0 2025-10-07 07:04:54 +00:00
renovate[bot]
a7a0d3584a
chore(deps): update dependency openai to v6.2.0 2025-10-07 07:04:10 +00:00
renovate[bot]
f765441f1e
chore(deps): update dependency @types/express-serve-static-core to v5.1.0 2025-10-07 07:03:35 +00:00
renovate[bot]
10cd5bf130
chore(deps): update dependency @playwright/test to v1.56.0 2025-10-07 07:02:53 +00:00
renovate[bot]
d93c5dfeea
chore(deps): update pnpm to v10.18.1 2025-10-07 07:02:08 +00:00
Elian Doran
b58aac1298
fix(client): invalid import after moving protocol config 2025-10-07 09:59:33 +03:00
Elian Doran
d662718a4a
feat(client): allow opening obsidian: links (closes #7207) 2025-10-06 20:05:42 +03:00
Elian Doran
bebd3d430b
refactor(commons): deduplicate allowed protocols 2025-10-06 20:04:07 +03:00
Elian Doran
2fca995725
docs(guide): update html docs with sharing 2025-10-06 19:58:33 +03:00
Elian Doran
caa1ea12f1
feat: Add shareHtml relation for custom HTML snippets in shared pages (#7157) 2025-10-06 19:32:17 +03:00
Elian Doran
f25e4ea391
Translations update from Hosted Weblate (#7210) 2025-10-06 19:22:42 +03:00
Elian Doran
6c106300d4
chore(client): launch bar background affecting custom icons (closes #7147) 2025-10-06 19:18:47 +03:00
Hosted Weblate
05b433edb5
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-10-06 15:55:10 +00:00
Elian Doran
69a59f0935
fix(collections/list): not reacting to expand/collapse button (closes #7209) 2025-10-06 18:55:02 +03:00
Elian Doran
fa7575ed00
fix(collections/table): react to tree state changes (closes #7204) 2025-10-06 18:49:11 +03:00
Elian Doran
b2174549c7
chore(collections/table): avoid rendering if rows didn't load yet 2025-10-06 18:48:13 +03:00
Elian Doran
19f16274ab
Merge branch 'main' of https://github.com/TriliumNext/Trilium 2025-10-06 18:29:20 +03:00
Elian Doran
7f88ae5494
fix(mobile): formatting toolbar appears cut off (closes #7206) 2025-10-06 18:29:17 +03:00
Elian Doran
c820b5caa4
feat(collections/board): keep title of the column always visible 2025-10-06 18:10:54 +03:00
Elian Doran
b1638e1ffc
docs(collections/board): keyboard shortcuts 2025-10-06 18:02:45 +03:00
Elian Doran
f2e60f52d2
feat(collections/board): restore focus 2025-10-06 17:54:52 +03:00
Elian Doran
d845343e97
feat(collections/board): basic keyboard interaction 2025-10-06 17:48:08 +03:00
Elian Doran
ee2edc92e7
Translations update from Hosted Weblate (#7205) 2025-10-06 12:28:17 +03:00
green
332216f5f5
Translated using Weblate (Japanese)
Currently translated at 100.0% (115 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ja/
2025-10-06 11:27:05 +02:00
Elian Doran
4d4cd7d130
Translations update from Hosted Weblate (#7200) 2025-10-05 21:51:04 +03:00
AndreR
b3cc51ce63
Translated using Weblate (German)
Currently translated at 5.2% (6 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/de/
2025-10-05 20:32:49 +02:00
Elian Doran
05645d93ef
Translated using Weblate (Russian)
Currently translated at 21.7% (25 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ru/
2025-10-05 20:32:49 +02:00
green
a2d09efca4
Translated using Weblate (Japanese)
Currently translated at 60.0% (69 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ja/
2025-10-05 20:32:48 +02:00
Elian Doran
1212f9a9e9
Translated using Weblate (Italian)
Currently translated at 7.8% (9 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/it/
2025-10-05 20:32:48 +02:00
Elian Doran
75f7986e36
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 63.4% (73 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/zh_Hans/
2025-10-05 20:32:48 +02:00
Elian Doran
4997543fc7
doc(guide): interaction on relation map, including tree operation 2025-10-05 20:19:18 +03:00
Elian Doran
63c91b6741
Revert "fix(deps): downgrade mind-elixir (closes #7170)"
This reverts commit 5969815ed1e33e416815c908088b2325710b0e95.
2025-10-05 20:00:08 +03:00
Elian Doran
27b6e26fa5
Merge remote-tracking branch 'origin/main' into react/type_widgets 2025-10-05 19:59:46 +03:00
Elian Doran
7930745a01
chore(react/type_widgets): fix type errors 2025-10-05 19:55:25 +03:00
Francis C
2447a6fc8d
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 77.3% (89 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/zh_Hant/
2025-10-05 17:43:01 +02:00
green
38a4a3e7b6
Translated using Weblate (Japanese)
Currently translated at 100.0% (381 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ja/
2025-10-05 17:43:00 +02:00
green
28240d549d
Translated using Weblate (Japanese)
Currently translated at 100.0% (1605 of 1605 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-10-05 17:42:59 +02:00
Languages add-on
5da46a1678
Added translation using Weblate (md (generated) (md)) 2025-10-05 17:42:59 +02:00
Languages add-on
e592a37799
Added translation using Weblate (Norwegian Bokmål) 2025-10-05 17:42:58 +02:00
Languages add-on
15d00b61dd
Added translation using Weblate (Slovenian) 2025-10-05 17:42:57 +02:00
Languages add-on
5d0b6f9fad
Added translation using Weblate (Korean) 2025-10-05 17:42:57 +02:00
Languages add-on
2a40ffd164
Added translation using Weblate (Serbian) 2025-10-05 17:42:56 +02:00
Languages add-on
8c687de3c6
Added translation using Weblate (Finnish) 2025-10-05 17:42:56 +02:00
Languages add-on
27415b4e16
Added translation using Weblate (Persian) 2025-10-05 17:42:55 +02:00
Languages add-on
ce0b39765e
Added translation using Weblate (French) 2025-10-05 17:42:55 +02:00
Languages add-on
fafc4af237
Added translation using Weblate (Dutch) 2025-10-05 17:42:54 +02:00
Languages add-on
76a283ed77
Added translation using Weblate (Arabic) 2025-10-05 17:42:54 +02:00
Languages add-on
99500bca8f
Added translation using Weblate (Polish) 2025-10-05 17:42:53 +02:00
Languages add-on
a982fc326f
Added translation using Weblate (Hungarian) 2025-10-05 17:42:53 +02:00
Languages add-on
b16309d01a
Added translation using Weblate (Croatian) 2025-10-05 17:42:52 +02:00
Languages add-on
1bfc3d450f
Added translation using Weblate (Vietnamese) 2025-10-05 17:42:52 +02:00
Languages add-on
37b63d4ea9
Added translation using Weblate (Portuguese) 2025-10-05 17:42:51 +02:00
Languages add-on
e7315e7d35
Added translation using Weblate (Czech) 2025-10-05 17:42:50 +02:00
Languages add-on
718dffa672
Added translation using Weblate (Catalan) 2025-10-05 17:42:50 +02:00
Languages add-on
c3dd9865e7
Added translation using Weblate (Ukrainian) 2025-10-05 17:42:49 +02:00
Languages add-on
1702ec5644
Added translation using Weblate (Greek) 2025-10-05 17:42:49 +02:00
Languages add-on
dfddf044cf
Added translation using Weblate (German) 2025-10-05 17:42:48 +02:00
Languages add-on
24a632056a
Added translation using Weblate (Portuguese (Brazil)) 2025-10-05 17:42:47 +02:00
Languages add-on
dc7f4a6cf3
Added translation using Weblate (Turkish) 2025-10-05 17:42:47 +02:00
Languages add-on
cd100f37fe
Added translation using Weblate (md (generated) (md)) 2025-10-05 17:42:46 +02:00
Languages add-on
984e8bbba0
Added translation using Weblate (md (generated) (md)) 2025-10-05 17:42:46 +02:00
Elian Doran
fcc22cc212
Translated using Weblate (Romanian)
Currently translated at 96.5% (111 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ro/
2025-10-05 17:42:45 +02:00
Hosted Weblate
4101acc2e3
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-10-05 17:42:44 +02:00
Elian Doran
f30bdd54b1
fix(relation_map): floating buttons stuck when showing source 2025-10-05 18:38:40 +03:00
Elian Doran
6ffe8a2eb5
chore(react/type_widgets): save on window closing 2025-10-05 18:12:36 +03:00
Elian Doran
0dcaa8719f
chore(react/type_widgets): save code note if needed 2025-10-05 17:56:31 +03:00
Elian Doran
608605af12
chore(react/type_widgets): save if needed 2025-10-05 17:53:19 +03:00
Elian Doran
3f7b8447d0
refactor(react/type_widgets): bring back executeInActiveNoteDetailWidget 2025-10-05 17:34:45 +03:00
Elian Doran
d3594e4a05
refactor(react/type_widgets): bring back printing and exporting to PDF 2025-10-05 17:07:34 +03:00
Elian Doran
156b4101a5
refactor(react/type_widgets): bring back cut to note 2025-10-05 17:05:05 +03:00
Elian Doran
73213d2a17
refactor(react/type_widgets): bring back execute with type widget 2025-10-05 16:59:46 +03:00
Elian Doran
763bcbd394
refactor(react/type_widgets): extract full height to note types 2025-10-05 16:45:26 +03:00
Elian Doran
d90043e586
chore(react/type_widgets): bring back launch bar fixed effect 2025-10-05 16:42:58 +03:00
Elian Doran
c209a699ea
refactor(react/type_widgets): deduplicate containers 2025-10-05 16:36:59 +03:00
Elian Doran
22069d0aef
refactor(react/type_widgets): extract note types to different file 2025-10-05 15:55:25 +03:00
Elian Doran
3248654820
chore(react/type_widgets): cache note types 2025-10-05 15:47:27 +03:00
Elian Doran
269c7c9ce7
feat(ai_chat): allow viewing source of the ai chat 2025-10-05 14:25:08 +03:00
Elian Doran
b0c984decd
chore(react/type_widgets): fix refresh on first start 2025-10-05 14:15:51 +03:00
Elian Doran
cebb54ddf6
chore(react/type_widgets): get LLM note to load 2025-10-05 12:40:55 +03:00
Elian Doran
22f8929da6
Merge remote-tracking branch 'origin/main' into react/type_widgets 2025-10-05 12:14:14 +03:00
Elian Doran
62bb8ac89a
chore(release): prepare for 0.99.1 2025-10-05 11:52:06 +03:00
Elian Doran
33dfcb1c6e
docs(release): 0.99.1 2025-10-05 11:50:52 +03:00
Elian Doran
5969815ed1
fix(deps): downgrade mind-elixir (closes #7170) 2025-10-05 11:27:25 +03:00
Elian Doran
2b2125c702
fix(ai_chat): conversation not visible on Firefox 2025-10-05 11:03:18 +03:00
Elian Doran
7192d40e80
chore(react/type_widgets): get ai chat widget to render 2025-10-05 10:21:52 +03:00
Elian Doran
df9d481a93
refactor(mindmap): use proper way to detect direction
See https://github.com/SSShooter/mind-elixir-core/issues/150.
2025-10-04 19:17:13 +03:00
Adorian Doran
85a4557bb0 website: tweak the hero section 2025-10-04 19:11:44 +03:00
Elian Doran
cf37549f19
refactor(notemap): use proper types 2025-10-04 18:55:26 +03:00
Elian Doran
d2dda95654
fix(notemap): invisible hover color on light theme 2025-10-04 18:28:03 +03:00
Elian Doran
0770f97010
Merge remote-tracking branch 'origin/main' into react/type_widgets
; Conflicts:
;	apps/client/src/widgets/type_widgets/read_only_code.ts
2025-10-04 18:18:11 +03:00
Elian Doran
3caaf2ab79
chore(react/type_widgets): port note map type widget 2025-10-04 18:16:45 +03:00
Elian Doran
8f819a7786
chore(react): reintroduce reactivity to mapRootIdLabel 2025-10-04 18:09:40 +03:00
Adorian Doran
0d9e4a1aa2 website/header: add some style to the GitHub button 2025-10-04 17:07:32 +03:00
Elian Doran
4a01181110
docs(readme): change file naming format 2025-10-04 15:53:33 +03:00
Elian Doran
89dfc480f3
docs(readme): bring back original documents 2025-10-04 15:47:27 +03:00
Elian Doran
c178fc2957
Translations update from Hosted Weblate (#7186) 2025-10-04 15:41:40 +03:00
Elian Doran
0da66617a8
chore(react): reintroduce link distance 2025-10-04 14:14:02 +03:00
Elian Doran
5efe05490d
chore(react): reintroduce force configuration 2025-10-04 13:58:29 +03:00
Elian Doran
656b234740
chore(react): reintroduce centering i note map 2025-10-04 13:55:22 +03:00
Elian Doran
e6e9cd3f35
chore(react): improve style of buttons 2025-10-04 13:44:11 +03:00
Elian Doran
845c76fc42
chore(react): bring back fixing nodes 2025-10-04 13:37:36 +03:00
Elian Doran
a4d6da72a1
chore(react): bring back interaction with nodes 2025-10-04 13:17:57 +03:00
Elian Doran
35438d2599
refactor(react): integrate get color for node in rendering 2025-10-04 13:15:13 +03:00
Elian Doran
9a1e7ca3ae
chore(react): bring back node pointer & link configuration 2025-10-04 13:10:18 +03:00
Elian Doran
2d29d1b41f
chore(react): add back note map link configuration 2025-10-04 13:04:40 +03:00
Elian Doran
ad5ff6e41a
refactor(react): use component for map type switcher 2025-10-04 12:58:24 +03:00
Elian Doran
20dcbff68f
chore(react): reintroduce map type toggles 2025-10-04 12:55:08 +03:00
Elian Doran
c127e19cfa
chore(react): fix obtaining of CSS data for note map 2025-10-04 12:31:35 +03:00
Elian Doran
e32237559e
chore(react): start rendering nodes in note map 2025-10-04 12:29:48 +03:00
Elian Doran
09811d23f6
chore(react): port data part of server API 2025-10-04 11:40:31 +03:00
Elian Doran
b41042fec4
chore(react):start porting note map 2025-10-04 11:07:16 +03:00
Elian Doran
08fae19d19
fix(react/type_widgets): crash when switching between relation maps 2025-10-04 10:37:28 +03:00
Elian Doran
9cceff4f02
chore(react/type_widgets): finalize porting relation map 2025-10-04 10:32:23 +03:00
Elian Doran
67d9154795
chore(react/type_widgets): reintroduce relation note dragging 2025-10-04 10:15:38 +03:00
Elian Doran
1eca9f6541
chore(react/type_widgets): reintroduce relation context menu 2025-10-04 09:54:47 +03:00
Hosted Weblate
9d8c62caaf
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-10-04 06:44:06 +00:00
minkipark
279f014c42
Translated using Weblate (Korean)
Currently translated at 10.2% (39 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ko/
2025-10-04 06:44:06 +00:00
minkipark
826e9c7114
Translated using Weblate (Korean)
Currently translated at 2.1% (34 of 1605 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ko/
2025-10-04 06:44:05 +00:00
Languages add-on
384c8649b4
Added translation using Weblate (Norwegian Bokmål) 2025-10-04 06:44:05 +00:00
Languages add-on
ecc8bc3866
Added translation using Weblate (Slovenian) 2025-10-04 06:44:04 +00:00
Languages add-on
bb4d723f18
Added translation using Weblate (Korean) 2025-10-04 06:44:04 +00:00
Languages add-on
e250510ab1
Added translation using Weblate (Serbian) 2025-10-04 06:44:03 +00:00
Languages add-on
dc630f927f
Added translation using Weblate (Finnish) 2025-10-04 06:44:02 +00:00
Languages add-on
e47cb13b89
Added translation using Weblate (Persian) 2025-10-04 06:44:02 +00:00
Languages add-on
838ae315e3
Added translation using Weblate (French) 2025-10-04 06:44:01 +00:00
Languages add-on
58afa86a2b
Added translation using Weblate (Dutch) 2025-10-04 06:44:01 +00:00
Languages add-on
5b90ece12f
Added translation using Weblate (Arabic) 2025-10-04 06:44:00 +00:00
Languages add-on
afb2072b97
Added translation using Weblate (Polish) 2025-10-04 06:44:00 +00:00
Languages add-on
8e0ca56b85
Added translation using Weblate (Hungarian) 2025-10-04 06:43:59 +00:00
Languages add-on
8e4cf38840
Added translation using Weblate (Croatian) 2025-10-04 06:43:58 +00:00
Languages add-on
cb872d3638
Added translation using Weblate (Vietnamese) 2025-10-04 06:43:58 +00:00
Languages add-on
781be26833
Added translation using Weblate (Portuguese) 2025-10-04 06:43:57 +00:00
Languages add-on
0ad5f3493d
Added translation using Weblate (Czech) 2025-10-04 06:43:57 +00:00
Languages add-on
15bb3acb31
Added translation using Weblate (Catalan) 2025-10-04 06:43:56 +00:00
Languages add-on
a43ddf3f9f
Added translation using Weblate (Ukrainian) 2025-10-04 06:43:56 +00:00
Languages add-on
8417bfebb0
Added translation using Weblate (Greek) 2025-10-04 06:43:55 +00:00
Languages add-on
28e8ea2da9
Added translation using Weblate (Portuguese (Brazil)) 2025-10-04 06:43:54 +00:00
Languages add-on
393264b4a1
Added translation using Weblate (Turkish) 2025-10-04 06:43:54 +00:00
Jiho Min
9306a28c87
Translated using Weblate (Korean)
Currently translated at 1.8% (29 of 1605 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ko/
2025-10-04 06:43:53 +00:00
Newcomer1989
77fef38009
Added translation using Weblate (German) 2025-10-04 06:43:53 +00:00
Elian Doran
c14ea42978
Translated using Weblate (Romanian)
Currently translated at 21.7% (25 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ro/
2025-10-04 06:43:52 +00:00
Elian Doran
341cd62b13
Added translation using Weblate (Romanian) 2025-10-04 06:43:52 +00:00
Hosted Weblate
9e6cfe7c1e
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2025-10-04 06:43:51 +00:00
Tore Aursand
9695dd404b
Translated using Weblate (Norwegian Bokmål)
Currently translated at 1.8% (7 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/nb_NO/
2025-10-04 06:43:50 +00:00
green
5e6be01251
Translated using Weblate (Japanese)
Currently translated at 100.0% (381 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ja/
2025-10-04 06:43:50 +00:00
Elian Doran
f367a1c776
fix(deps): update eslint monorepo to v9.37.0 (#7197) 2025-10-04 09:43:42 +03:00
Elian Doran
c469fffb6e
chore(react/type_widgets): reintroduce relation creation 2025-10-04 09:37:14 +03:00
Elian Doran
d076d54170
refactor(react/type_widgets): extract context menu to separate file 2025-10-04 09:15:15 +03:00
Elian Doran
3256c14a20
chore(react/type_widgets): accidental double source config 2025-10-04 09:06:24 +03:00
Elian Doran
460e01a2d6
refactor(react/type_widgets): split note box into separate file 2025-10-04 09:04:22 +03:00
Elian Doran
1913355069
chore(react/type_widgets): relation map source/target config 2025-10-04 08:58:06 +03:00
renovate[bot]
bce987c67a
fix(deps): update eslint monorepo to v9.37.0 2025-10-04 05:55:42 +00:00
Elian Doran
e7a9f9c566
chore(deps): update dependency @types/serve-static to v1.15.9 (#7190) 2025-10-04 08:50:10 +03:00
Elian Doran
33150e3a98
chore(deps): update dependency electron to v38.2.1 (#7191) 2025-10-04 08:49:56 +03:00
renovate[bot]
e1aead098e
chore(deps): update dependency @types/serve-static to v1.15.9 2025-10-04 05:49:51 +00:00
Elian Doran
9f9a276a51
chore(deps): update dependency eslint-plugin-react-hooks to v6.1.1 (#7192) 2025-10-04 08:49:41 +03:00
Elian Doran
873df6da6c
chore(deps): update softprops/action-gh-release action to v2.3.4 (#7193) 2025-10-04 08:49:23 +03:00
Elian Doran
2e353afb98
fix(deps): update dependency katex to v0.16.23 (#7194) 2025-10-04 08:48:52 +03:00
Elian Doran
d497688d9a
chore(deps): update dependency stylelint to v16.25.0 (#7195) 2025-10-04 08:48:32 +03:00
Elian Doran
2cf3a04482
fix(deps): update dependency eslint-linter-browserify to v9.37.0 (#7196) 2025-10-04 08:47:55 +03:00
renovate[bot]
e50fd6f540
fix(deps): update dependency eslint-linter-browserify to v9.37.0 2025-10-04 01:11:23 +00:00
renovate[bot]
5096163ae3
chore(deps): update dependency stylelint to v16.25.0 2025-10-04 01:10:24 +00:00
renovate[bot]
0d6640ae14
fix(deps): update dependency katex to v0.16.23 2025-10-04 01:09:28 +00:00
renovate[bot]
52ac93e99c
chore(deps): update softprops/action-gh-release action to v2.3.4 2025-10-04 01:08:33 +00:00
renovate[bot]
674b0a8215
chore(deps): update dependency eslint-plugin-react-hooks to v6.1.1 2025-10-04 01:08:27 +00:00
renovate[bot]
ec56b297dc
chore(deps): update dependency electron to v38.2.1 2025-10-04 01:07:35 +00:00
Elian Doran
f687d91201
chore(react/type_widgets): bring back dragging notes in relation map 2025-10-03 22:40:22 +03:00
Elian Doran
a477cc22e6
docs(readme): normalize file name format 2025-10-03 20:25:49 +03:00
Elian Doran
119278b5f5
docs(readme): redesign support section 2025-10-03 20:12:32 +03:00
Elian Doran
5414fbeacb
docs(readme): improve shoutsout section 2025-10-03 20:00:32 +03:00
Adorian Doran
a4b01bba9b website/GitHub utils: improve 2025-10-03 19:36:36 +03:00
Adorian Doran
bab536751a website: use a pre-defined GitHub stargazers count outside of SSR 2025-10-03 19:22:58 +03:00
Adorian Doran
7657e17373 website: add a GitHub social button to the site's header 2025-10-03 19:09:23 +03:00
Adorian Doran
30f530abdb website: use "Inter" as the main font 2025-10-03 17:09:17 +03:00
Adorian Doran
1d373bc7d5 Merge branch 'main' of https://github.com/TriliumNext/Trilium 2025-10-03 16:49:20 +03:00
Adorian Doran
9d3c5d04b9 website: add meta description 2025-10-03 16:49:10 +03:00
Elian Doran
ba91fbbe6b
fix(ribbon): formatting tab not activating automatically (closes #7185) 2025-10-03 16:46:26 +03:00
Elian Doran
f6898779bb
fix(code): unable to search in read-only code notes 2025-10-03 16:09:32 +03:00
Elian Doran
dbb90bdd2b
fix(client/print): split button visible 2025-10-03 16:05:32 +03:00
Elian Doran
f442c56ed6
fix(client/options): missing ribbon widgets section in Appearance 2025-10-03 16:01:31 +03:00
Elian Doran
e971a9cb03
fix(client): enter shortcut key not working 2025-10-03 15:46:53 +03:00
Elian Doran
b450a4faa0
fix(client): delete shortcut key not working 2025-10-03 15:39:27 +03:00
Elian Doran
e8e93e985d
fix(react/type_widgets): relation map getting occassionally wiped 2025-10-03 13:16:20 +03:00
Elian Doran
c5c304f85b
chore(react/type_widgets): add dragigng logic for jsplumb 2025-10-03 11:58:00 +03:00
Elian Doran
58aea03114
fix(react/type_widgets): unable to add new items on existing map 2025-10-03 11:38:05 +03:00
Elian Doran
4af842d2f2
refactor(react/type_widgets): use dedicated component for items 2025-10-03 11:02:33 +03:00
Elian Doran
3b2f5bb09d
refactor(react/type_widgets): extract JSPlumb into a separate file 2025-10-03 10:17:45 +03:00
Elian Doran
2d67aab288
fix(react/type_widgets): unable to add new items if the map is empty 2025-10-03 10:11:21 +03:00
Elian Doran
838d761b50
Merge remote-tracking branch 'origin/main' into react/type_widgets
; Conflicts:
;	apps/client/src/widgets/react/hooks.tsx
;	apps/client/src/widgets/type_widgets/abstract_text_type_widget.ts
2025-10-03 09:28:17 +03:00
Elian Doran
9a2440942b
chore(deps): update dependency vite to v7.1.9 (#7177) 2025-10-03 09:13:39 +03:00
Elian Doran
c3151f9afa
chore(deps): update dependency openai to v6.1.0 (#7178) 2025-10-03 09:13:09 +03:00
renovate[bot]
f277612444
chore(deps): update dependency openai to v6.1.0 2025-10-03 06:12:29 +00:00
renovate[bot]
1b92ad2f53
chore(deps): update dependency vite to v7.1.9 2025-10-03 06:11:33 +00:00
Elian Doran
f96abe0e45
chore(deps): update pnpm to v10.18.0 (#7179) 2025-10-03 09:09:27 +03:00
Elian Doran
142a276cc4
fix(deps): update codemirror (#7180) 2025-10-03 09:09:05 +03:00
renovate[bot]
a52b0a45fe
fix(deps): update codemirror 2025-10-03 00:28:25 +00:00
renovate[bot]
6df40ec80a
chore(deps): update pnpm to v10.18.0 2025-10-03 00:27:33 +00:00
Elian Doran
713340a9ba
docs(guide): advanced CSS customisation 2025-10-02 22:25:47 +03:00
Elian Doran
ee8b41c81b
Equation improvements (#7174) 2025-10-02 21:43:58 +03:00
Elian Doran
dd477258a9
docs(guide): document formatting equations 2025-10-02 21:35:54 +03:00
Elian Doran
7c30e2b4f6
feat(math): inherit attributes from selection 2025-10-02 20:52:05 +03:00
Elian Doran
37a3c00214
Translations update from Hosted Weblate (#7175) 2025-10-02 19:13:50 +03:00
Tore Aursand
d30cdadb2d
Added translation using Weblate (Norwegian Bokmål) 2025-10-02 18:09:59 +02:00
Tore Aursand
58f0d01944
Added translation using Weblate (Norwegian Bokmål) 2025-10-02 18:09:58 +02:00
Elian Doran
d4791944b0
Translated using Weblate (Romanian)
Currently translated at 100.0% (381 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ro/
2025-10-02 18:09:57 +02:00
Elian Doran
92a052674f
Translated using Weblate (Romanian)
Currently translated at 100.0% (1605 of 1605 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ro/
2025-10-02 18:09:57 +02:00
Elian Doran
d49ce7c289
feat(math): support more attributes 2025-10-02 18:32:46 +03:00
Elian Doran
5f38d52f20
feat(math): support font size adjustment (closes #7172) 2025-10-02 18:31:08 +03:00
Elian Doran
6286745684
Translations update from Hosted Weblate (#7171) 2025-10-02 12:07:03 +03:00
Bilal Janati
4f574f8aa4
Translated using Weblate (French)
Currently translated at 88.4% (337 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/fr/
2025-10-02 11:02:04 +02:00
Bilal Janati
a3e27248ad
Translated using Weblate (French)
Currently translated at 85.0% (1365 of 1605 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/fr/
2025-10-02 11:02:01 +02:00
Elian Doran
e48569245d
chore(deps): update dependency jiti to v2.6.1 (#7161) 2025-10-02 11:19:28 +03:00
Elian Doran
473f7a83e6
chore(deps): update dependency openai to v6.0.1 (#7162) 2025-10-02 11:19:18 +03:00
Elian Doran
1c622fa848
fix(deps): update dependency mind-elixir to v5.3.1 (#7166) 2025-10-02 11:19:09 +03:00
renovate[bot]
409e650506
fix(deps): update dependency mind-elixir to v5.3.1 2025-10-02 07:47:06 +00:00
renovate[bot]
d461f5474e
chore(deps): update dependency openai to v6.0.1 2025-10-02 07:46:28 +00:00
renovate[bot]
36e731cc2c
chore(deps): update dependency jiti to v2.6.1 2025-10-02 07:45:40 +00:00
Elian Doran
b77fbcb7ad
chore(deps): update dependency vite-plugin-static-copy to v3.1.3 (#7163) 2025-10-02 10:38:46 +03:00
Elian Doran
7b7dc346ca
fix(deps): update dependency i18next to v25.5.3 (#7164) 2025-10-02 10:38:26 +03:00
Elian Doran
b4f8a02ba6
chore(deps): update dependency react-refresh to v0.18.0 (#7165) 2025-10-02 10:38:10 +03:00
Elian Doran
9d6a5d1bb5
chore(deps): update dependency eslint-plugin-react-hooks to v6 (#7167) 2025-10-02 10:37:46 +03:00
renovate[bot]
fa747c5c4b
chore(deps): update dependency eslint-plugin-react-hooks to v6 2025-10-02 04:56:39 +00:00
renovate[bot]
bc93f40cdb
chore(deps): update dependency react-refresh to v0.18.0 2025-10-02 04:54:53 +00:00
renovate[bot]
a9975798d7
fix(deps): update dependency i18next to v25.5.3 2025-10-02 04:54:01 +00:00
renovate[bot]
4ea4404aba
chore(deps): update dependency vite-plugin-static-copy to v3.1.3 2025-10-02 04:53:11 +00:00
Elian Doran
361848b518
fix(deps): update ckeditor monorepo to v47 (major) (#7168) 2025-10-02 07:49:34 +03:00
renovate[bot]
8c46103f63
fix(deps): update ckeditor monorepo to v47 2025-10-02 01:54:42 +00:00
Elian Doran
edcdecb720
Merge branch 'main' of https://github.com/TriliumNext/trilium 2025-10-01 22:27:42 +03:00
Elian Doran
e1ef02058d
fix(client): function keys (e.g. help) not working due to change in modifiers 2025-10-01 22:27:39 +03:00
Elian Doran
d9746df16b
chore(deps): pin all deps to latest (#7159) 2025-10-01 21:13:48 +03:00
Elian Doran
b4c20d9683
fix(client): shortcut keys without modifiers affecting normal usage 2025-10-01 21:08:51 +03:00
Elian Doran
59955b7414
chore(deps): pin all deps to latest 2025-10-01 20:52:25 +03:00
Elian Doran
95b1c82ccb
docs(guide): document script logging 2025-10-01 20:22:50 +03:00
Elian Doran
7cfebbabeb
feat(script): api.log now supports objects 2025-10-01 20:22:02 +03:00
Elian Doran
f412874c73
fix(export): missing toast icon 2025-10-01 19:51:36 +03:00
Elian Doran
873c4c6636
refactor(client): remove string from viewtype 2025-10-01 19:44:55 +03:00
Elian Doran
efcd54be50
fix(ribbon): not visible when coming from view source on same note 2025-10-01 19:41:20 +03:00
Elian Doran
ae0bb78b1c
docs(guide): document included notes in share 2025-10-01 19:41:20 +03:00
Elian Doran
29fa335a27
chore(deps): update dependency typescript to v5.9.3 (#7151) 2025-10-01 19:32:42 +03:00
Elian Doran
3a84a78cd1
chore(deps): update dependency openai to v6 (#7155) 2025-10-01 19:31:40 +03:00
Elian Doran
df6bb7e6bf
fix(deps): broken types after major update 2025-10-01 19:21:51 +03:00
renovate[bot]
dfcaebc613
chore(deps): update dependency openai to v6 2025-10-01 14:03:26 +00:00
renovate[bot]
1ece35536b
chore(deps): update dependency typescript to v5.9.3 2025-10-01 14:02:28 +00:00
Elian Doran
1a90548622
chore(deps): update dependency @types/node to v22.18.8 (#7149) 2025-10-01 16:53:06 +03:00
renovate[bot]
cc7e5bdb80
chore(deps): update dependency @types/node to v22.18.8 2025-10-01 08:18:20 +00:00
Elian Doran
5c73b21ff7
chore(deps): update dependency dotenv to v17.2.3 (#7142) 2025-10-01 11:15:17 +03:00
Elian Doran
e9078107ae
chore(deps): update dependency preact-render-to-string to v6.6.2 (#7150) 2025-10-01 11:14:59 +03:00
Elian Doran
6c24b18bc1
chore(deps): update dependency typescript to v5.9.3 (#7152) 2025-10-01 11:14:44 +03:00
renovate[bot]
be7ff73142
chore(deps): update dependency preact-render-to-string to v6.6.2 2025-10-01 08:14:24 +00:00
renovate[bot]
63ac45d369
chore(deps): update dependency dotenv to v17.2.3 2025-10-01 08:13:59 +00:00
Elian Doran
f164a4b786
fix(deps): update dependency @codemirror/legacy-modes to v6.5.2 (#7153) 2025-10-01 11:13:49 +03:00
Elian Doran
806d601115
chore(deps): update dependency @smithy/middleware-retry to v4.4.0 (#7154) 2025-10-01 11:13:05 +03:00
Elian Doran
6b3cf49398
Translations update from Hosted Weblate (#7158) 2025-10-01 11:11:37 +03:00
Kevin Leutzinger
b8851565eb docs: clarify shareHtmlLocation goes on snippet note 2025-10-01 03:53:40 -04:00
Kevin Leutzinger
888d0d1084 add docs about shareHtml and shareHtmlLocation 2025-10-01 03:47:49 -04:00
Kevin Leutzinger
0a25d4db0d shareHTML to shareHtml 2025-10-01 03:30:16 -04:00
A
4a72f2c6a7
Translated using Weblate (Finnish)
Currently translated at 3.4% (13 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/fi/
2025-10-01 08:02:13 +02:00
A
446bdd6a5e
Translated using Weblate (Finnish)
Currently translated at 6.1% (98 of 1605 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/fi/
2025-10-01 08:02:12 +02:00
Lorenzo Strambi
cb26fac2ea
Translated using Weblate (Italian)
Currently translated at 35.6% (136 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/it/
2025-10-01 08:02:11 +02:00
Lorenzo Strambi
3a45440c74
Translated using Weblate (Italian)
Currently translated at 12.9% (208 of 1605 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/it/
2025-10-01 08:02:09 +02:00
Kuzma Simonov
e115d6e275
Translated using Weblate (Russian)
Currently translated at 100.0% (1605 of 1605 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ru/
2025-10-01 08:02:07 +02:00
Aitanuqui
fc614ccf83
Translated using Weblate (Spanish)
Currently translated at 100.0% (381 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/es/
2025-10-01 08:02:06 +02:00
Aitanuqui
17c9db7698
Translated using Weblate (Spanish)
Currently translated at 99.8% (1603 of 1605 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/es/
2025-10-01 08:02:04 +02:00
Kevin Leutzinger
d483b6e840 add shareHTML relation 2025-09-30 23:06:20 -04:00
renovate[bot]
032819e812
chore(deps): update dependency @smithy/middleware-retry to v4.4.0 2025-10-01 02:24:12 +00:00
renovate[bot]
9d7d415756
fix(deps): update dependency @codemirror/legacy-modes to v6.5.2 2025-10-01 02:23:26 +00:00
renovate[bot]
e9d432b4bf
chore(deps): update dependency typescript to v5.9.3 2025-10-01 02:22:42 +00:00
Elian Doran
be35584f9a
chore(website): cross-platform preview 2025-09-30 22:22:10 +03:00
Elian Doran
80be4cc6b8
feat(website): improve ARM detection 2025-09-30 22:20:10 +03:00
Elian Doran
c74ba44b91
chore(website): apply download card effect only on desktop 2025-09-30 21:58:44 +03:00
Elian Doran
28a79baa01
fix(website): hamburger menu alignment on mobile 2025-09-30 21:56:32 +03:00
Elian Doran
5279601105
fix(website): screenshot would not fit properly on some screen sizes 2025-09-30 21:53:15 +03:00
Elian Doran
c2639951a5
style(website): improve alignment of download button 2025-09-30 21:38:46 +03:00
Elian Doran
6bfab1387d
chore(website): remove redundant winget link 2025-09-30 21:32:30 +03:00
Elian Doran
4212d208fc
chore(website): build on preview 2025-09-30 21:22:32 +03:00
Elian Doran
9e5bded4cf
chore(website): maintain platform coloring despite reordering 2025-09-30 21:21:26 +03:00
Elian Doran
ce0763f03d
feat(website): reorder platforms to always get the recommended one in center 2025-09-30 21:18:52 +03:00
Elian Doran
e860b7aa32
chore(website): arch & platform not properly rendered statically 2025-09-30 21:08:19 +03:00
Elian Doran
0be9310450
feat(website): highlight which platform to download 2025-09-30 21:06:19 +03:00
Elian Doran
d870a260e1
feat(website): improve download instructions 2025-09-30 20:53:29 +03:00
Elian Doran
2de545be1c
chore(website): fix page title 2025-09-30 19:46:47 +03:00
Elian Doran
bf04e5a15b
feat(website): different download behaviour for Linux 2025-09-30 19:45:56 +03:00
Elian Doran
46d2d7e160
feat(website): linux light/dark screenshot 2025-09-30 19:35:42 +03:00
Elian Doran
1775b22c7a
chore(deps): update dependency @types/node to v22.18.7 (#7140) 2025-09-30 13:37:13 +03:00
Elian Doran
ae022b6389
chore(deps): update dependency dotenv to v17.2.3 (#7141) 2025-09-30 13:37:02 +03:00
renovate[bot]
d4155102c5
chore(deps): update dependency dotenv to v17.2.3 2025-09-30 09:52:06 +00:00
renovate[bot]
3b1a25230f
chore(deps): update dependency @types/node to v22.18.7 2025-09-30 09:51:14 +00:00
Elian Doran
d8639793e0
chore(deps): update dependency happy-dom to v19.0.2 (#7143) 2025-09-30 12:43:46 +03:00
Elian Doran
06fec88214
chore(deps): update dependency @anthropic-ai/sdk to v0.65.0 (#7144) 2025-09-30 12:43:33 +03:00
Elian Doran
da93928976
chore(deps): update dependency cross-env to v10.1.0 (#7145) 2025-09-30 12:43:19 +03:00
Elian Doran
2314443d19
chore(deps): update typescript-eslint monorepo to v8.45.0 (#7146) 2025-09-30 12:42:59 +03:00
renovate[bot]
4b34047324
chore(deps): update typescript-eslint monorepo to v8.45.0 2025-09-30 00:39:57 +00:00
renovate[bot]
bc1d4de13d
chore(deps): update dependency cross-env to v10.1.0 2025-09-30 00:38:12 +00:00
renovate[bot]
6bae4c8075
chore(deps): update dependency @anthropic-ai/sdk to v0.65.0 2025-09-30 00:37:22 +00:00
renovate[bot]
84a89fd0ba
chore(deps): update dependency happy-dom to v19.0.2 2025-09-30 00:36:28 +00:00
Elian Doran
1447fa6f14
Translations update from Hosted Weblate (#7137) 2025-09-29 23:37:41 +03:00
Микола Копитін
bc4937f9d2
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (1605 of 1605 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/uk/
2025-09-29 22:34:06 +02:00
Josue Estrada
43a7b828d9
Translated using Weblate (Spanish)
Currently translated at 99.1% (1591 of 1605 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/es/
2025-09-29 22:34:06 +02:00
Elian Doran
d611591e1a
docs(user): document a few gaps 2025-09-29 23:33:53 +03:00
Elian Doran
7a2d91e7de
chore(type_widgets): get relations to render 2025-09-29 22:31:53 +03:00
Elian Doran
082ea7b5c1
chore(type_widgets): port relation map overlays 2025-09-29 21:35:44 +03:00
Elian Doran
c58414bbc1
chore(type_widgets): relation map rename title 2025-09-29 21:11:40 +03:00
Elian Doran
1c1243912b
refactor(type_widgets): use API architecture for relation map 2025-09-29 21:05:29 +03:00
Elian Doran
614fc66890
refactor(type_widgets): move relation map to dedicated folder 2025-09-29 20:34:30 +03:00
Elian Doran
0937ef72e2
chore(type_widgets): start porting context menu 2025-09-29 20:33:15 +03:00
Elian Doran
3571023685
chore(type_widgets): bring back relation map zoom controls 2025-09-29 20:16:45 +03:00
Elian Doran
2cd3e3f9c8
chore(type_widgets): bring back relation map note creation 2025-09-29 20:06:22 +03:00
Elian Doran
3d08f686cf
feat(code): pretty-print JSON in view source 2025-09-29 19:47:56 +03:00
Elian Doran
d2bf972305
chore(type_widgets): save pan & zoom 2025-09-29 19:41:08 +03:00
Elian Doran
39bd236799
refactor(type_widgets): use editorspaced update for data 2025-09-29 19:32:50 +03:00
Elian Doran
d8b9d14712
chore(type_widgets): introduce panzoom 2025-09-29 19:28:46 +03:00
Elian Doran
9d4127ba6d
chore(type_widgets): render note box 2025-09-29 19:04:00 +03:00
Elian Doran
04b678ef4c
chore(type_widgets): start porting relation map 2025-09-29 18:50:40 +03:00
Elian Doran
286d7c8228
Merge remote-tracking branch 'origin/main' into react/type_widgets 2025-09-29 17:53:16 +03:00
Elian Doran
f7a565ec73
refactor(collections/table): rework persistence 2025-09-29 17:51:53 +03:00
Elian Doran
6b35e909ab
fix(collections): note list sometimes not restored (fixes #7129) 2025-09-29 17:51:53 +03:00
Elian Doran
53b9ce0f3d
Automatically resize webview (#7125) 2025-09-29 10:48:47 +03:00
Elian Doran
5e1cd7d6ac
Replace jsdom with node-html-parser (#7128) 2025-09-29 10:47:33 +03:00
Elian Doran
acb98061ce
chore(deps): remove jsdom as dev dependency 2025-09-29 09:59:39 +03:00
Elian Doran
979ef6287f
chore(server): different handling of buffer vs string 2025-09-29 09:55:34 +03:00
Elian Doran
58a883797d
fix(server): infinite loop in note map 2025-09-29 09:45:16 +03:00
Elian Doran
f718e87673
chore(server): fix share content renderer 2025-09-29 09:25:46 +03:00
Elian Doran
4c6a742af7
chore(server): fix clipper 2025-09-29 09:25:31 +03:00
Elian Doran
848dc51a7a
Merge remote-tracking branch 'origin/main' into refactor/replace_jsdom 2025-09-29 09:22:36 +03:00
Elian Doran
44541b66c4
chore(deps): update dependency lint-staged to v16.2.3 (#7130) 2025-09-29 09:20:13 +03:00
Elian Doran
3694018441
chore(deps): update dependency rollup-plugin-webpack-stats to v2.1.5 (#7131) 2025-09-29 09:20:00 +03:00
Elian Doran
3874e54d76
fix(deps): update dependency @codemirror/view to v6.38.4 (#7132) 2025-09-29 09:19:48 +03:00
Elian Doran
10de141c00
chore(deps): update dependency electron to v38.2.0 (#7133) 2025-09-29 09:19:32 +03:00
Elian Doran
806ba320a8
chore(deps): update dependency preact-iso to v2.11.0 (#7134) 2025-09-29 09:19:11 +03:00
Elian Doran
09ef24d27d
chore(deps): update dependency happy-dom to v19 (#7135) 2025-09-29 09:18:58 +03:00
renovate[bot]
236f3cada7
chore(deps): update dependency happy-dom to v19 2025-09-29 05:59:00 +00:00
renovate[bot]
c2afef4832
chore(deps): update dependency preact-iso to v2.11.0 2025-09-29 05:58:11 +00:00
renovate[bot]
b9fa7d70bb
chore(deps): update dependency electron to v38.2.0 2025-09-29 05:56:26 +00:00
renovate[bot]
9ac31f2667
fix(deps): update dependency @codemirror/view to v6.38.4 2025-09-29 05:55:32 +00:00
renovate[bot]
639d1befef
chore(deps): update dependency rollup-plugin-webpack-stats to v2.1.5 2025-09-29 05:54:31 +00:00
renovate[bot]
b99c8d5cc1
chore(deps): update dependency lint-staged to v16.2.3 2025-09-29 05:53:37 +00:00
Elian Doran
0770398010
Translations update from Hosted Weblate (#7136) 2025-09-29 08:51:13 +03:00
green
c3d24451b7
Translated using Weblate (Japanese)
Currently translated at 100.0% (1605 of 1605 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-09-29 03:02:01 +00:00
Francis C
4db1a3bdec
Translated using Weblate (Japanese)
Currently translated at 100.0% (1605 of 1605 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-09-29 03:02:00 +00:00
Elian Doran
2a0410f597
chore(types): fill in gap from jsdom 2025-09-28 20:55:20 +03:00
Elian Doran
7e79d907be
feat(server): replace jsdom 2025-09-28 19:43:04 +03:00
Elian Doran
c0ea441c59
chore(server): fix tests 2025-09-28 19:19:39 +03:00
Elian Doran
290d134d88
test(server/similarity): reward map 2025-09-28 19:10:49 +03:00
Elian Doran
517bfd2c9a
test(server/note_map): clipper processing notes & images 2025-09-28 19:02:38 +03:00
Papierkorb2292
31990a9992 Let browser display webview with max size instead of manually adjusting the size, so the webview size is sure to be updated when a parent element changes size 2025-09-28 17:41:25 +02:00
Elian Doran
151a2c284d
test(server/note_map): backlinks with excerpts 2025-09-28 17:12:01 +03:00
Elian Doran
614a8f177c
test(server/share): attachment links 2025-09-28 15:43:39 +03:00
Elian Doran
8b5e53e579
test(server/share): included text notes 2025-09-28 15:07:10 +03:00
Elian Doran
1ad8b1bf85
test(server/share): protected notes 2025-09-28 14:48:14 +03:00
Elian Doran
a393584a2a
test(server/share): implement basic shaca mocking with content 2025-09-28 14:40:30 +03:00
Elian Doran
804fc72ed8
test(server/share): basic text rendering check 2025-09-28 14:07:55 +03:00
Elian Doran
3f8f05368c
fix(modal): event leak for onHidden 2025-09-28 11:10:39 +03:00
Elian Doran
5a56ba2fd5
chore: fix various references to the old repo 2025-09-28 11:02:24 +03:00
Elian Doran
de7c1329f8
fix(add_link): focus resets to start of note (closes #7115) 2025-09-28 10:55:48 +03:00
Elian Doran
6fc5aa0090
fix(bulk_actions): deleting a bulk action would execute all bulk actions 2025-09-28 10:42:15 +03:00
Elian Doran
2eaeccda05
fix(next): toasts unreadable with background effects on 2025-09-28 10:38:24 +03:00
Elian Doran
56f970ab08
chore(deps): update dependency webdriverio to v9.20.0 (#7119) 2025-09-28 10:37:49 +03:00
renovate[bot]
d1cb9e4a3f
chore(deps): update dependency webdriverio to v9.20.0 2025-09-28 00:59:17 +00:00
Elian Doran
992adcab65
Correct 'febuary' key and fix Russian typos (#7103) 2025-09-28 02:14:11 +03:00
Elian Doran
d3b3a83477
Translations update from Hosted Weblate (#7118) 2025-09-28 02:12:34 +03:00
Miljenko Šuflaj
98ad371d01
Translated using Weblate (Croatian)
Currently translated at 25.7% (98 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/hr/
2025-09-28 01:02:04 +02:00
green
3cdae245e1
Translated using Weblate (Japanese)
Currently translated at 100.0% (381 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ja/
2025-09-28 01:02:03 +02:00
Kuzma Simonov
887c78d893
Translated using Weblate (Russian)
Currently translated at 99.6% (1600 of 1605 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ru/
2025-09-28 01:02:02 +02:00
green
e208497d71
Translated using Weblate (Japanese)
Currently translated at 100.0% (1605 of 1605 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-09-28 01:02:01 +02:00
Elian Doran
dd744b4e0d
Landing page (#7108) 2025-09-28 01:34:06 +03:00
Elian Doran
647cbc7e7a
chore(ci): set up pnpm cache for website deployment 2025-09-28 01:08:27 +03:00
Elian Doran
cc93102859
fix(website): null error in download-helper 2025-09-28 01:03:31 +03:00
Elian Doran
5b673e753b
fix(website): hydration issues due to rendering on the server of client-side logic 2025-09-28 00:58:15 +03:00
Elian Doran
bd2eb6fdbb
fix(website): screenshot not loading due to SSR 2025-09-28 00:36:21 +03:00
Elian Doran
c25f783980
fix(website): typecheck failing due to asset import 2025-09-28 00:29:40 +03:00
Elian Doran
9b37708f0c
fix(ci): missing deployment secrets in reusable action 2025-09-28 00:21:05 +03:00
Elian Doran
7386bb35e5
fix(website): yet another case of server-side rendering failing 2025-09-28 00:16:51 +03:00
Elian Doran
9274522877
chore(ci): don't run playwright on website changes 2025-09-28 00:15:15 +03:00
Elian Doran
1b444686af
fix(website): another case of server-side rendering failing 2025-09-28 00:15:04 +03:00
Elian Doran
b3dfdacdc3
fix(ci): failing due to electron-rebuild 2025-09-28 00:10:54 +03:00
Elian Doran
159fab41ce
fix(website): SSR not working due to download helper 2025-09-28 00:02:41 +03:00
Elian Doran
093f48f76a
feat(ci): filter dependencies to make installation faster 2025-09-28 00:00:29 +03:00
Elian Doran
6998a3593e
feat(ci): set up deployment workflow for website 2025-09-27 23:57:56 +03:00
Elian Doran
c3250cfd72
style(website): minor missing margin on mobile 2025-09-27 22:59:28 +03:00
Elian Doran
e52eb9bcb0
feat(website): switch assets to webp 2025-09-27 22:42:08 +03:00
Elian Doran
5ac2892e34
chore(website): fix typecheck issues 2025-09-27 22:36:26 +03:00
Elian Doran
a15aab395a
feat(website): add alt + lazy loading 2025-09-27 22:26:41 +03:00
Elian Doran
f991276152
feat(website): add link to older versions 2025-09-27 22:23:10 +03:00
Elian Doran
1f71ceb611
fix(website): favicon no longer working 2025-09-27 22:16:38 +03:00
Elian Doran
92e14159b9
feat(website): display version to be downloaded 2025-09-27 22:16:19 +03:00
Elian Doran
b8419604e5
fix(website): discrepancies in production build 2025-09-27 21:29:39 +03:00
Elian Doran
096fd82e64
style(website): minor tweaks on light/dark mode 2025-09-27 21:20:28 +03:00
Elian Doran
cbaae52a7e
style(website): minor improvements to get started 2025-09-27 21:14:20 +03:00
Elian Doran
5905299331
fix(website): mobile regression and layout tweaks 2025-09-27 21:11:34 +03:00
Elian Doran
2df0763141
refactor(website): use nested CSS 2025-09-27 21:02:23 +03:00
Elian Doran
fb7453f7b0
feat(website): improve icon fit 2025-09-27 19:59:12 +03:00
Elian Doran
974d20b0ba
feat(website): add icons to collections 2025-09-27 19:56:11 +03:00
Elian Doran
c2f6d9aa07
feat(website): add icons to note types 2025-09-27 19:53:47 +03:00
Elian Doran
6194386464
feat(website): reorder sections around 2025-09-27 19:39:39 +03:00
Elian Doran
329ecd6894
feat(website): improve FAQ section 2025-09-27 19:29:40 +03:00
Elian Doran
150f470aee
chore(website): improve scoop link 2025-09-27 19:26:29 +03:00
Elian Doran
83b843f047
style(website): disable link underline globally 2025-09-27 19:23:16 +03:00
Elian Doran
24043611c3
feat(website): split REST API into separate entry 2025-09-27 19:20:03 +03:00
Elian Doran
2c99ba64bc
feat(website): add links to all feature descriptions 2025-09-27 19:08:39 +03:00
Elian Doran
ffe30bed75
chore(website): use same more info mechanism for list with screenshot 2025-09-27 19:02:13 +03:00
Elian Doran
b6088f488f
feat(website): use list with screenshot for note types 2025-09-27 18:59:51 +03:00
Elian Doran
e04165a184
feat(website): use list with screenshot for note types 2025-09-27 18:47:45 +03:00
Elian Doran
d7aa95ce8e
feat(website): add icons for each benefit 2025-09-27 18:40:00 +03:00
Elian Doran
28214ec9fb
feat(website): split benefits into three different sections 2025-09-27 18:27:15 +03:00
Elian Doran
28952a5253
feat(website): list with screenshot for collections 2025-09-27 18:17:20 +03:00
Elian Doran
d66505e5bc
fix(website): hover effect for buttons 2025-09-27 17:57:24 +03:00
Elian Doran
c4354032b5
feat(website): add a final call-to-action 2025-09-27 17:56:59 +03:00
Elian Doran
d23550d3ef
fix(website): mobile menu causing issues with scroll anchoring 2025-09-27 17:39:40 +03:00
Elian Doran
894ec1e3c1
feat(website): social buttons in mobile menu 2025-09-27 17:37:01 +03:00
Elian Doran
bdb03f8d51
style(website): use color in header instead of bold for active 2025-09-27 17:28:14 +03:00
Elian Doran
61ea27c8f4
style(website): misalignment of icon in button 2025-09-27 17:27:02 +03:00
Elian Doran
ac45617d8f
feat(website): mobile toggle menu 2025-09-27 17:23:44 +03:00
Elian Doran
35853ff988
fix(website): logo not working in subfolder 2025-09-27 17:04:31 +03:00
Elian Doran
80009f99e8
chore(website): rebrand donate to support us 2025-09-27 17:03:39 +03:00
Elian Doran
0b1d001c20
chore(website): rebrand download to get started 2025-09-27 17:01:54 +03:00
Elian Doran
cb63e88cdc
style(website): colored download links 2025-09-27 16:52:43 +03:00
Elian Doran
a5c7f4221b
feat(website): full-width Docker card 2025-09-27 16:49:32 +03:00
Elian Doran
f61010a65e
feat(website): further improve alignment in download cards 2025-09-27 16:42:06 +03:00
Elian Doran
b99f5b2cbe
feat(website): multiple recommended downloads for better fit 2025-09-27 16:39:10 +03:00
Elian Doran
9919d0cbfa
style(website): align download buttons slightly 2025-09-27 16:35:09 +03:00
Elian Doran
fe8099d8d1
feat(website): change URL for NixOS server module 2025-09-27 16:30:25 +03:00
Elian Doran
0da336c8e1
feat(website): homebrew cask for macOS 2025-09-27 16:25:10 +03:00
Elian Doran
37f5d19739
feat(website): quick start for downloads 2025-09-27 16:23:12 +03:00
Elian Doran
2ac0d84cee
feat(website): help button for Linux and Docker 2025-09-27 16:09:16 +03:00
Elian Doran
e639961b68
feat(website): open external links in new tab in downloads 2025-09-27 15:58:37 +03:00
Elian Doran
adf29b4e6e
refactor(website): use button component in downloads 2025-09-27 15:57:23 +03:00
Elian Doran
b00cd032a3
feat(website): add dedicated card for docker in downloads 2025-09-27 15:51:42 +03:00
Elian Doran
60e8f46777
feat(website): add help pages to all note types / collections 2025-09-27 15:38:01 +03:00
Elian Doran
ef2860770f
chore(website): minor adjustment to footer 2025-09-27 15:22:06 +03:00
Elian Doran
aa562e9c26
style(website): full-height for desktop download section 2025-09-27 15:01:59 +03:00
Elian Doran
866ccc1696
feat(website): windows light/dark screenshot 2025-09-27 15:01:03 +03:00
Elian Doran
dbe241dee7
feat(website): macos light/dark screenshot 2025-09-27 14:47:46 +03:00
Elian Doran
bd32a08e11
style(website): slight adjustments to hero section on desktop 2025-09-27 14:29:17 +03:00
Elian Doran
8416dab870
feat(website): improve hero download buttons on mobile 2025-09-27 14:27:31 +03:00
Elian Doran
6fda669307
feat(website): add github & docker links on hero section 2025-09-27 14:15:08 +03:00
Elian Doran
c21a9223f5
refactor(website): use link component with rel 2025-09-27 14:02:49 +03:00
Elian Doran
4e4e65b462
feat(website): adjust page title 2025-09-27 13:55:04 +03:00
Elian Doran
5e07231d78
feat(website): add footer social buttons 2025-09-27 13:37:31 +03:00
Elian Doran
d71d1ce8b4
feat(website): improve the donation page 2025-09-27 13:18:48 +03:00
Elian Doran
892e84deaa
feat(website): outline for donation buttons 2025-09-27 12:46:16 +03:00
Elian Doran
7a73af0299
feat(website): improve download button with icon and platform title 2025-09-27 12:41:33 +03:00
Elian Doran
65dae511e5
feat(website): add icons for donate buttons 2025-09-27 12:14:16 +03:00
Elian Doran
55c70b404c
chore(website): improve header layout on mobile 2025-09-27 11:55:49 +03:00
Elian Doran
8117586548
chore(website): further improve layout on mobile 2025-09-27 11:54:00 +03:00
Elian Doran
3ce9c7ba3d
chore(website): improve screenshot fit on mobile 2025-09-27 11:46:36 +03:00
Elian Doran
ab162efab8
chore(website): improve hero section layout on mobile 2025-09-27 11:43:19 +03:00
Elian Doran
babfc3cfb9
chore(website): hide download buttons on mobile 2025-09-27 11:34:09 +03:00
Elian Doran
3d780d7d02
chore(website): improve main layout on mobile 2025-09-27 11:32:30 +03:00
Elian Doran
5b81aff8be
chore(website): set up name and favicon 2025-09-27 11:26:08 +03:00
Elian Doran
86b14a5763
chore(website): improve contrast on buttons on light theme 2025-09-27 11:22:56 +03:00
Elian Doran
14a2794d15
chore(website): minor changes according to review 2025-09-27 11:19:29 +03:00
Elian Doran
eef68aca0f
chore(deps): update dependency @smithy/middleware-retry to v4.3.1 (#7109) 2025-09-27 10:39:03 +03:00
Elian Doran
f6f7445528
chore(deps): update dependency @anthropic-ai/sdk to v0.64.0 (#7111) 2025-09-27 10:37:47 +03:00
Elian Doran
f7c0184a6b
fix(deps): update dependency react-i18next to v16 (#7112) 2025-09-27 10:37:27 +03:00
renovate[bot]
65bc599a16
fix(deps): update dependency react-i18next to v16 2025-09-27 01:29:01 +00:00
renovate[bot]
b445bef74c
chore(deps): update dependency @anthropic-ai/sdk to v0.64.0 2025-09-27 01:28:15 +00:00
renovate[bot]
93d7ba032d
chore(deps): update dependency @smithy/middleware-retry to v4.3.1 2025-09-27 01:26:19 +00:00
Elian Doran
334e2c3949
chore(website): get rid of package lock 2025-09-27 01:43:28 +03:00
Elian Doran
a11797fe6e
chore(website): remove old website 2025-09-27 01:42:15 +03:00
Elian Doran
3cf0ec5740
feat(website): draft a donation page 2025-09-27 01:40:47 +03:00
Elian Doran
40f578f43f
Translations update from Hosted Weblate (#7106) 2025-09-27 01:39:46 +03:00
Elian Doran
428abb4591
feat(website): improve 404 page 2025-09-27 01:20:59 +03:00
Elian Doran
4954fa89b5
feat(website): add link to documentation 2025-09-27 01:16:39 +03:00
Elian Doran
10f7837a7f
style(website): full-height layout 2025-09-27 01:11:12 +03:00
Miljenko Šuflaj
fca310cc31
Added translation using Weblate (Croatian) 2025-09-27 00:06:19 +02:00
Miljenko Šuflaj
cf58b511df
Added translation using Weblate (Croatian) 2025-09-27 00:06:19 +02:00
green
9da1f52a71
Translated using Weblate (Japanese)
Currently translated at 99.7% (380 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ja/
2025-09-27 00:06:17 +02:00
green
5c8e674ddb
Translated using Weblate (Japanese)
Currently translated at 99.7% (1601 of 1605 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-09-27 00:06:16 +02:00
Newcomer1989
f027b25bc2
Translated using Weblate (German)
Currently translated at 100.0% (1605 of 1605 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/de/
2025-09-27 00:06:16 +02:00
Elian Doran
cfe71a3426
style(website): improve footer layout 2025-09-27 01:04:28 +03:00
Elian Doran
70afb636ca
feat(website): architecture switcher for download 2025-09-27 01:01:06 +03:00
Elian Doran
818efe7fb0
feat(website): port download page 2025-09-27 00:46:51 +03:00
Elian Doran
3c2263db86
chore(website): apply content width to 404 page 2025-09-27 00:09:17 +03:00
Elian Doran
7c30bc9c72
feat(website): more options link in the hero section 2025-09-27 00:08:35 +03:00
Elian Doran
ec8d719d41
style(website): improve card title / content contrast 2025-09-26 23:54:39 +03:00
Elian Doran
5f884c4440
style(website): improve card on dark mode 2025-09-26 23:49:22 +03:00
Elian Doran
e6c806d462
style(website): improve hero section 2025-09-26 23:46:29 +03:00
Elian Doran
4afceeca79
style(website): general dark theme 2025-09-26 23:44:07 +03:00
Elian Doran
7990c60ce7
feat(website): clickable header banner 2025-09-26 23:40:34 +03:00
Elian Doran
74c248bce2
style(website): improve header nav layout 2025-09-26 23:37:36 +03:00
Elian Doran
2df646f80c
refactor(website): move back into website2 2025-09-26 23:35:28 +03:00
Elian Doran
768260782a
refactor(website): split each section into a component 2025-09-26 23:34:14 +03:00
Elian Doran
4eff105af5
refactor(website): split CSS 2025-09-26 23:32:09 +03:00
Elian Doran
68ef6ea142
chore(website): reimplement download button 2025-09-26 23:28:58 +03:00
Elian Doran
772d4ac5a1
chore(website): port the rest of the layout 2025-09-26 23:24:28 +03:00
Elian Doran
b3e1a79d40
chore(website): port FAQ 2025-09-26 23:21:41 +03:00
Elian Doran
d7afa8526d
chore(website): port collections 2025-09-26 23:18:38 +03:00
Elian Doran
b4a2a6c12b
chore(website): port note types 2025-09-26 23:16:06 +03:00
Elian Doran
32c15f5e03
chore(website): port benefits section 2025-09-26 23:06:57 +03:00
Elian Doran
b5a491820c
chore(website): start with fresh template for preact 2025-09-26 22:54:56 +03:00
Elian Doran
8a477c87e0
chore(website): small adjustments to layout 2025-09-26 22:48:37 +03:00
Elian Doran
8bcae8cdb8
feat(website): smart download now button in header 2025-09-26 22:44:27 +03:00
Elian Doran
ea87161a91
feat(website): smart download now button 2025-09-26 22:40:27 +03:00
Elian Doran
f2bb6cb848
chore(website): remove unnecessary spacing in links 2025-09-26 22:21:12 +03:00
Elian Doran
fecb677552
chore(website): remove unnecessary nbsp 2025-09-26 22:19:21 +03:00
Elian Doran
3ba9b56833
chore(website): fix charset 2025-09-26 22:18:50 +03:00
Elian Doran
a329e7d72a
chore(website): fix image references 2025-09-26 22:18:24 +03:00
Elian Doran
2568f6bb53
chore(website): improve formatting slightly 2025-09-26 22:11:15 +03:00
Elian Doran
23936596fa
chore(website): extract stylesheet 2025-09-26 22:05:23 +03:00
Elian Doran
398db56fe7
chore(website): add existing structure 2025-09-26 22:04:17 +03:00
Elian Doran
423ef14ca6
chore(website): create empty template 2025-09-26 22:01:07 +03:00
Elian Doran
9921d3e0a7
feat(share): render included notes 2025-09-26 18:42:59 +03:00
e.lednev
ac22fd8d60 - Renamed localization key febuary to february.
- Corrected various spelling and grammatical errors in the `ru.json` translation file.
2025-09-26 13:17:19 +03:00
Elian Doran
ff065964e9
chore(deps): update dependency @sveltejs/kit to v2.43.5 (#7095) 2025-09-26 09:45:21 +03:00
Elian Doran
951dda50ac
chore(deps): update dependency tsx to v4.20.6 (#7097) 2025-09-26 09:45:08 +03:00
renovate[bot]
01bd2f1815
chore(deps): update dependency tsx to v4.20.6 2025-09-26 05:42:18 +00:00
renovate[bot]
570f8fd155
chore(deps): update dependency @sveltejs/kit to v2.43.5 2025-09-26 05:41:31 +00:00
Elian Doran
5d348e3ad6
chore(deps): update dependency lint-staged to v16.2.1 (#7096) 2025-09-26 08:33:19 +03:00
Elian Doran
9573346d55
chore(deps): update dependency tsx to v4.20.6 (#7098) 2025-09-26 08:32:55 +03:00
Elian Doran
e4570a1bb0
chore(deps): update dependency @inlang/paraglide-js to v2.4.0 (#7099) 2025-09-26 08:32:18 +03:00
Elian Doran
b884aba244
Translations update from Hosted Weblate (#7100) 2025-09-26 08:31:57 +03:00
Jiri Novacek
9c73908560
Translated using Weblate (Czech)
Currently translated at 5.2% (20 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/cs/
2025-09-26 03:02:11 +00:00
Jiri Novacek
b399d292a9
Translated using Weblate (Czech)
Currently translated at 1.3% (21 of 1605 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/cs/
2025-09-26 03:02:10 +00:00
green
a557d9770f
Translated using Weblate (Japanese)
Currently translated at 98.9% (377 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ja/
2025-09-26 03:02:08 +00:00
greenfork
a11ebfeb42
Translated using Weblate (Russian)
Currently translated at 99.6% (1599 of 1605 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ru/
2025-09-26 03:02:07 +00:00
green
4695c3726d
Translated using Weblate (Japanese)
Currently translated at 93.0% (1494 of 1605 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2025-09-26 03:02:05 +00:00
Francis C
324f79ceb9
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (1605 of 1605 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hant/
2025-09-26 03:02:04 +00:00
Antonio Martín Villaseñor
fc5e459895
Translated using Weblate (Spanish)
Currently translated at 99.0% (1589 of 1605 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/es/
2025-09-26 03:02:03 +00:00
Francis C
bdaba67859
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (1605 of 1605 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hans/
2025-09-26 03:02:01 +00:00
renovate[bot]
2b01e2fdaf
chore(deps): update dependency @inlang/paraglide-js to v2.4.0 2025-09-26 02:12:30 +00:00
renovate[bot]
9967da6ea1
chore(deps): update dependency tsx to v4.20.6 2025-09-26 02:11:43 +00:00
renovate[bot]
a56a00ba2f
chore(deps): update dependency lint-staged to v16.2.1 2025-09-26 02:10:11 +00:00
Elian Doran
82df26031f
fix(client): Use number sorting for number columns in Table view (#7094) 2025-09-25 21:28:04 +03:00
Florian Meißner
b4af8e7339 fix(client): Use number sorting for number columns in Table view 2025-09-25 19:28:02 +02:00
Elian Doran
e6180f427b
fix(client): note buttons visible in zen mode 2025-09-25 19:49:06 +03:00
Elian Doran
9a95ec170d
fix(client): resize gutter not available in zen mode (fixes #7093) 2025-09-25 19:40:40 +03:00
Elian Doran
5547c3fc2b
feat(canvas): read-only mode 2025-09-25 19:28:03 +03:00
Elian Doran
4381399978
feat(mindmap): read-only mode 2025-09-25 19:12:37 +03:00
Elian Doran
5bfa0d13e3
chore(react/type_widgets): refresh on all viewscope changes 2025-09-25 18:44:06 +03:00
Elian Doran
5c21759de9
fix(react/type_widgets): unable to switch view-mode for same note 2025-09-25 18:39:47 +03:00
Elian Doran
e2ef58ed50
chore(react/type_widgets): finalize porting 2025-09-25 18:26:52 +03:00
Elian Doran
7af610a5b4
chore(react/type_widgets): set up image opening 2025-09-25 18:22:58 +03:00
Elian Doran
8a442ba492
chore(react/type_widgets): port executeWithTextEditor 2025-09-25 18:07:47 +03:00
Elian Doran
3ed399a888
chore(react/type_widgets): port text touchbar (untested) 2025-09-25 17:53:48 +03:00
Elian Doran
37d33fb975
chore(react/type_widgets): port @-mention note creation 2025-09-25 17:21:03 +03:00
Elian Doran
d443d79685
chore(react/type_widgets): port and fix follow link under cursor 2025-09-25 14:35:52 +03:00
Elian Doran
a975576214
chore(react/type_widgets): react to snippet changes 2025-09-25 14:21:12 +03:00
Elian Doran
3673162a48
chore(react/type_widgets): bring back add include to note 2025-09-25 13:53:11 +03:00
Elian Doran
0ac428b57a
chore(react/type_widgets): remove already integrated file 2025-09-25 13:26:50 +03:00
Elian Doran
45bd9b72b9
chore(react/type_widgets): set up code block word wrap 2025-09-25 13:24:43 +03:00
Elian Doran
cc6ac7d1da
chore(react/type_widgets): port text link insertion mechanism 2025-09-25 12:07:06 +03:00
Elian Doran
232fe4e63a
refactor(react/type_widgets): move mobile_editor_toolbar 2025-09-25 11:17:55 +03:00
Elian Doran
597426f10d
Merge remote-tracking branch 'origin/main' into react/type_widgets 2025-09-25 11:12:28 +03:00
Elian Doran
a0a904766f
fix(options/mfa): significant calls to OAuth status endpoint 2025-09-25 10:29:09 +03:00
Elian Doran
7be0507db5
chore(deps): update dependency electron to v38 (#6879) 2025-09-25 09:55:01 +03:00
Elian Doran
1d324ab3b0
chore(deps): override node-abi 2025-09-25 09:45:52 +03:00
Elian Doran
9e00ed7e14
chore(deps): update better-sqlite3 to 12.4.1 2025-09-25 09:38:13 +03:00
renovate[bot]
02a6652b44
chore(deps): update dependency electron to v38 2025-09-25 06:10:38 +00:00
Elian Doran
e19f7b286a
chore(deps): update node.js to v22.20.0 (#7089) 2025-09-25 09:06:19 +03:00
Elian Doran
50301a97f3
chore(deps): update dependency @tailwindcss/typography to v0.5.19 (#7087) 2025-09-25 09:06:03 +03:00
Elian Doran
408e31079c
chore(deps): update dependency ollama to v0.6.0 (#7088) 2025-09-25 09:05:49 +03:00
renovate[bot]
bf81e159ca
chore(deps): update node.js to v22.20.0 2025-09-25 02:02:48 +00:00
renovate[bot]
b1f89296ff
chore(deps): update dependency ollama to v0.6.0 2025-09-25 02:02:42 +00:00
renovate[bot]
1948302a64
chore(deps): update dependency @tailwindcss/typography to v0.5.19 2025-09-25 02:01:53 +00:00
Elian Doran
187585b32f
style(next): fix alignment of multiplicity in promoted attrs 2025-09-24 23:37:00 +03:00
Elian Doran
d351fd506a
chore(toast): get rid of redundant titles 2025-09-24 23:10:14 +03:00
Elian Doran
1cf29c985e
Translations update from Hosted Weblate (#7086) 2025-09-24 22:57:32 +03:00
Jiri Novacek
04374540ad
Translated using Weblate (Czech)
Currently translated at 2.8% (11 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/cs/
2025-09-24 21:40:24 +02:00
Jiri Novacek
ce8f3a4f8f
Translated using Weblate (Czech)
Currently translated at 0.6% (11 of 1603 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/cs/
2025-09-24 21:40:24 +02:00
Krzysztof Kaplon
acb21b992d
Translated using Weblate (Polish)
Currently translated at 75.0% (286 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/pl/
2025-09-24 21:40:23 +02:00
Elian Doran
15f344fe4a
feat(toast): improve layout for toasts without title 2025-09-24 22:40:03 +03:00
Elian Doran
120324c3f0
style(next): show toast titles again 2025-09-24 22:03:35 +03:00
Elian Doran
59ce8b912d
feat(ws): add a warning toast if websocket gets disconnected 2025-09-24 21:56:15 +03:00
Elian Doran
619888847b
chore(options/mfa): alert contained escaped characters 2025-09-24 21:56:15 +03:00
Elian Doran
06b782e91d
chore(deps): update dependency jiti to v2.6.0 (#7066) 2025-09-24 21:22:43 +03:00
renovate[bot]
1d7e0a193a
chore(deps): update dependency jiti to v2.6.0 2025-09-24 18:09:03 +00:00
Elian Doran
2d815852e4
chore(deps): update typescript-eslint monorepo to v8.44.1 (#7062) 2025-09-24 21:06:45 +03:00
Elian Doran
735a7104f1
chore(deps): update dependency @eslint/compat to v1.4.0 (#7065) 2025-09-24 21:06:17 +03:00
Elian Doran
e3e4772aab
chore(deps): update dependency lint-staged to v16.2.0 (#7067) 2025-09-24 21:05:54 +03:00
Elian Doran
8bb65b94d0
chore(deps): update svelte monorepo (#7068) 2025-09-24 21:04:20 +03:00
renovate[bot]
b9edae4fc9
chore(deps): update svelte monorepo 2025-09-24 17:20:37 +00:00
renovate[bot]
27aae18345
chore(deps): update dependency @eslint/compat to v1.4.0 2025-09-24 17:19:28 +00:00
renovate[bot]
47db63d909
chore(deps): update typescript-eslint monorepo to v8.44.1 2025-09-24 17:18:48 +00:00
renovate[bot]
8ebeead32c
chore(deps): update dependency lint-staged to v16.2.0 2025-09-24 17:15:03 +00:00
Elian Doran
09d43e710f
chore(deps): update dependency @smithy/middleware-retry to v4.3.0 (#7081) 2025-09-24 20:12:54 +03:00
Elian Doran
7240f64a49
chore(deps): update dependency @playwright/test to v1.55.1 (#7080) 2025-09-24 20:12:42 +03:00
Elian Doran
ab868d76db
chore(deps): update dependency @anthropic-ai/sdk to v0.63.1 (#7079) 2025-09-24 20:12:24 +03:00
renovate[bot]
acdaf6a636
chore(deps): update dependency @playwright/test to v1.55.1 2025-09-24 17:11:12 +00:00
Elian Doran
6dccef1689
fix(deps): update dependency mind-elixir to v5.2.1 (#7064) 2025-09-24 20:10:13 +03:00
Elian Doran
f7ec726b15
fix(deps): update dependency @codemirror/view to v6.38.3 (#7063) 2025-09-24 20:09:47 +03:00
Elian Doran
781570f950
chore(deps): update pnpm to v10.17.1 (#7061) 2025-09-24 20:08:51 +03:00
Elian Doran
7774d41457
chore(deps): update dependency vite to v7.1.7 (#7060) 2025-09-24 20:08:38 +03:00
renovate[bot]
29c8bcaf6e
chore(deps): update dependency @smithy/middleware-retry to v4.3.0 2025-09-24 01:16:44 +00:00
renovate[bot]
2b3ae94f8d
chore(deps): update dependency @anthropic-ai/sdk to v0.63.1 2025-09-24 01:15:20 +00:00
renovate[bot]
5c618abc79
fix(deps): update dependency mind-elixir to v5.2.1 2025-09-23 00:29:35 +00:00
renovate[bot]
220cf8aedd
fix(deps): update dependency @codemirror/view to v6.38.3 2025-09-23 00:28:46 +00:00
renovate[bot]
78f16ddc12
chore(deps): update pnpm to v10.17.1 2025-09-23 00:27:00 +00:00
renovate[bot]
0048e95e0c
chore(deps): update dependency vite to v7.1.7 2025-09-23 00:26:49 +00:00
Elian Doran
db46ca0a76
chore(react/type_widget): insert date/time to text 2025-09-22 18:03:19 +03:00
Elian Doran
a26ee0d769
chore(react/type_widget): hot-pluggable keyboard shortcuts 2025-09-22 17:52:05 +03:00
Elian Doran
46db047fa0
chore(react/type_widget): scroll to end & focus 2025-09-22 13:36:18 +03:00
Elian Doran
efaa1815ec
chore(react/type_widget): classic editor & inspector 2025-09-22 13:19:20 +03:00
Elian Doran
2eab8b92d5
chore(react/type_widget): react to content language changes 2025-09-22 12:49:03 +03:00
Elian Doran
8a185262fb
chore(react/type_widget): refactor event handling slightly 2025-09-22 12:43:43 +03:00
Elian Doran
f6631b7b9a
chore(react/type_widget): save on change 2025-09-22 12:41:32 +03:00
Elian Doran
1e323de01b
chore(react/type_widget): port watchdog state change 2025-09-22 12:13:31 +03:00
Elian Doran
f00f2ee5e4
chore(react/type_widget): port notification warning 2025-09-22 12:07:44 +03:00
Elian Doran
78b83cd17b
chore(react/type_widget): get editable text to show up 2025-09-22 12:02:45 +03:00
Elian Doran
adea3abff4
chore(react/type_widget): add missing interface 2025-09-22 10:52:03 +03:00
Elian Doran
206618fd54
style(next): improve code block hiehgt in note list 2025-09-22 10:45:55 +03:00
Elian Doran
58a6d70cbb
chore(react/type_widget): finalize porting canvas 2025-09-22 10:40:57 +03:00
Elian Doran
44b92a024c
chore(react/type_widget): set up self-hosted fonts 2025-09-22 10:14:24 +03:00
Elian Doran
68bf5b7e68
chore(react/type_widget): set up canvas persistence 2025-09-22 09:22:09 +03:00
Elian Doran
8c85aa343c
chore(react/type_widget): add more options to canvas 2025-09-22 08:40:56 +03:00
Elian Doran
592a8b2232
chore(react/type_widgets): start porting canvas 2025-09-21 23:33:38 +03:00
Elian Doran
e1ac319a7b
chore(react/type_widgets): active note not refreshing 2025-09-21 22:59:16 +03:00
Elian Doran
763c489cd3
feat(render): integrate with search 2025-09-21 22:58:58 +03:00
Elian Doran
b990770e48
feat(render): add a floating button to refresh 2025-09-21 22:44:39 +03:00
Elian Doran
344607d437
chore(react/type_widgets): get render to work 2025-09-21 22:33:11 +03:00
Elian Doran
70d0a5441a
chore(react/type_widget): port render note partially 2025-09-21 22:24:51 +03:00
Elian Doran
61278e1f5a
chore(react/type_widget): use different loading mechanism 2025-09-21 21:49:23 +03:00
Elian Doran
b73ea6ac4f
chore(react/type_widget): reflect note type changes 2025-09-21 21:13:04 +03:00
Elian Doran
5d833c1ac4
chore(react/type_widget): finalize read-only text 2025-09-21 20:50:26 +03:00
Elian Doran
2947682783
chore(react/type_widget): add code block & image integration 2025-09-21 20:47:40 +03:00
Elian Doran
fb46e09428
chore(react/type_widget): render reference links 2025-09-21 20:34:02 +03:00
Elian Doran
ff941b2cb1
chore(react/type_widget): render math in read-only text 2025-09-21 20:29:38 +03:00
Elian Doran
a8007b9063
chore(react/type_widget): render included notes in read-only text 2025-09-21 20:27:58 +03:00
Elian Doran
2f3c2bbac8
chore(react/type_widget): render inline mermaid in read-only text 2025-09-21 20:15:57 +03:00
Elian Doran
e4eb96a1ae
chore(react/type_widget): start porting read-only text 2025-09-21 20:03:28 +03:00
Elian Doran
ffe4e9b8de
chore(react/type_widget): add deletion widget 2025-09-21 19:43:36 +03:00
Elian Doran
f2b4f49be2
chore(react/type_widget): convert attachment actions 2025-09-21 19:34:03 +03:00
Elian Doran
376ef0c679
chore(react/type_widgets): introduce disabled tooltip 2025-09-21 12:02:02 +03:00
Elian Doran
b7574b3ca7
chore(react/type_widget): start porting attachment actions 2025-09-21 11:06:20 +03:00
Elian Doran
ae1954c320
chore(react/type_widget): port attachment detail 2025-09-21 10:57:08 +03:00
Elian Doran
3171413a18
chore(react/type_widget): react to attachment changes 2025-09-21 10:40:19 +03:00
Elian Doran
dc73467d34
chore(react/type_widget): list attachments with content 2025-09-21 10:32:12 +03:00
Elian Doran
58b14ae31c
fix(react/type_widget): mind map attachment incorrect 2025-09-21 10:32:01 +03:00
Elian Doran
e117fbd471
chore(react/type_widget): port atttachment list header 2025-09-21 09:57:09 +03:00
Elian Doran
9a3f675950
chore(react/type_widget): finalize mind map with export PNG/SVG 2025-09-21 09:46:58 +03:00
Elian Doran
26400f2590
fix(mindmap): search not working 2025-09-21 09:35:23 +03:00
Elian Doran
7d99a92bd9
chore(react/type_widget): save mindmap attachment 2025-09-21 09:26:44 +03:00
Elian Doran
3417e37f16
chore(react/type_widget): save direction upon button press 2025-09-21 09:20:00 +03:00
Elian Doran
143e6a556c
chore(react/type_widget): persist data 2025-09-20 22:22:20 +03:00
Elian Doran
02259c55f3
chore(react/type_widget): get mindmap to render 2025-09-20 21:52:57 +03:00
Elian Doran
cc19a217ad
chore(react/type_widget): finalize SVG split editor 2025-09-20 21:34:56 +03:00
Elian Doran
d95ed4a5d2
chore(react/type_widget): export as SVG/PNG 2025-09-20 21:29:20 +03:00
Elian Doran
469683f30f
chore(react/type_widget): reimplement zoom + reset buttons 2025-09-20 21:23:34 +03:00
Elian Doran
42d0cc12b5
chore(react/type_widget): more generic repositioning 2025-09-20 21:19:19 +03:00
Elian Doran
b376842e2d
chore(react/type_widget): reposition on split resize 2025-09-20 21:12:29 +03:00
Elian Doran
145ff1a2a5
chore(react/type_widget): restore pan/zoom 2025-09-20 21:07:51 +03:00
Elian Doran
8e9f5fb486
chore(react/type_widget): fix 4px scroll in SVG editor 2025-09-20 14:34:15 +03:00
Elian Doran
3dd757a857
chore(react/type_widget): disable code background change in split 2025-09-20 14:16:34 +03:00
Elian Doran
bde7b753a0
chore(react/type_widget): save SVG attachment 2025-09-20 14:08:50 +03:00
Elian Doran
02017ebd9d
chore(react/type_widget): bring back on error opacity 2025-09-20 13:47:12 +03:00
Elian Doran
8caaa99415
chore(react/type_widget): basic SVG rendering 2025-09-20 13:27:58 +03:00
Elian Doran
c49b90d33f
chore(react/type_widget): add preview buttons 2025-09-20 13:15:13 +03:00
Elian Doran
6dd939df14
chore(react/type_widget): bring back update interval 2025-09-20 13:04:36 +03:00
Elian Doran
b19da81572
chore(react/type_widget): force line wrapping 2025-09-20 13:00:15 +03:00
Elian Doran
425ffc02d8
chore(react/type_widget): bring back split resizer 2025-09-20 12:54:18 +03:00
Elian Doran
695e8489ad
chore(react/type_widget): pass error information 2025-09-20 12:41:39 +03:00
Elian Doran
2f4e13b1bb
chore(react/type_widget): bring back order of editor/preview 2025-09-20 12:38:05 +03:00
Elian Doran
c8a9b994d6
chore(react/type_widget): bring back read-only 2025-09-20 12:34:36 +03:00
Elian Doran
3d5b319eb2
chore(react/type_widget): bring back split orientation 2025-09-20 12:31:45 +03:00
Elian Doran
bed3c2dc67
chore(react/type_widget): prepare structure for split editor 2025-09-20 12:25:11 +03:00
Elian Doran
256d1863d2
chore(react/type_widget): port backend log 2025-09-20 12:16:51 +03:00
Elian Doran
4a4502dfea
chore(react/type_widget): bring back read-only temporary disable 2025-09-20 11:59:43 +03:00
Elian Doran
91f21e149b
chore(react/type_widget): bring back focusing after tab switch 2025-09-20 11:46:23 +03:00
Elian Doran
6ef468adc4
chore(react/type_widget): bring back scroll to end 2025-09-20 11:38:28 +03:00
Elian Doran
e576fa03da
chore(react/type_widget): fix sizing 2025-09-20 11:30:40 +03:00
Elian Doran
6bcce08042
chore(react/type_widget): react to line wrapping 2025-09-20 11:25:07 +03:00
Elian Doran
f496caa92c
refactor(react/type_widget): separate Trilium-specific implementation 2025-09-20 11:22:48 +03:00
Elian Doran
43dcdf8925
chore(react/type_widget): apply background color for read-only code notes 2025-09-20 11:11:00 +03:00
Elian Doran
2c014fb071
chore(react/type_widget): set up background color for code notes 2025-09-20 11:02:43 +03:00
Elian Doran
2273507ef4
chore(react/type_widget): unnecessary imports 2025-09-20 10:37:34 +03:00
Elian Doran
70a710be79
chore(react/type_widget): react to code theme 2025-09-20 10:14:21 +03:00
Elian Doran
7a3ee7971c
chore(react/type_widget): add back keyboard shortcut for editable code 2025-09-20 10:08:46 +03:00
Elian Doran
c86123e3a9
chore(react/type_widget): integrate touch bar for editable code 2025-09-20 10:03:00 +03:00
Elian Doran
9480227b69
chore(react/type_widget): add more options to editable code 2025-09-20 09:59:49 +03:00
Elian Doran
79be13e6c7
chore(react/type_widget): reload content on external change 2025-09-20 09:56:55 +03:00
Elian Doran
63e3a27b34
refactor(react/type_widget): simplify handling of new notes 2025-09-20 09:47:28 +03:00
Elian Doran
9eae6620d0
chore(react/type_widget): basic editable code 2025-09-20 09:44:36 +03:00
Elian Doran
6517dd1190
chore(react/type_widget): finalize readonly code 2025-09-20 09:06:55 +03:00
Elian Doran
f72087acc3
chore(react/type_widget): port read only code basic functionality 2025-09-20 08:57:47 +03:00
Elian Doran
77e7c414b6
chore(react/type_widget): react to note revisions 2025-09-19 22:45:12 +03:00
Elian Doran
3a68395ca7
feat(react/type_widget): add copy image reference floating button to image 2025-09-19 22:42:06 +03:00
Elian Doran
0a0d9775b2
chore(react/type_widget): port image 2025-09-19 22:41:18 +03:00
Elian Doran
aa6e68ad39
chore(react/type_widget): port file 2025-09-19 22:22:45 +03:00
Elian Doran
034073a5e1
chore(react/type_widget): fix missing tbody 2025-09-19 22:18:10 +03:00
Elian Doran
d83ff641d7
chore(react/type_widget): bring back full-height 2025-09-19 21:55:37 +03:00
Elian Doran
071fcb85c9
chore(react/type_widget): basic integration of web view 2025-09-19 21:27:45 +03:00
Elian Doran
daa5ee93e9
chore(react/type_widget): port content widget 2025-09-19 21:18:09 +03:00
Elian Doran
db7cda3fe6
chore(react/type_widget): have book react to reloaded children 2025-09-19 19:06:07 +03:00
Elian Doran
fa55c5720e
chore(react/type_widget): port book 2025-09-19 19:03:31 +03:00
Elian Doran
d1a9890932
chore(react/type_widget): port protected session 2025-09-19 18:55:04 +03:00
Elian Doran
c9fe358811
chore(react/type_widget): port none type widget 2025-09-19 18:35:49 +03:00
Elian Doran
bbb927c83f
chore(react/type_widget): port doc widget 2025-09-19 18:32:45 +03:00
Elian Doran
07b86c8cf7
chore(react/type_widget): port empty workspace switcher 2025-09-19 18:15:10 +03:00
Elian Doran
3dbf20af52
chore(react/type_widget): port empty search 2025-09-19 18:09:23 +03:00
Elian Doran
1fb329565f
chore(react/type_widget): move old widgets 2025-09-19 17:40:24 +03:00
Elian Doran
06bfb0073a
chore(react/type_widget): determine note type 2025-09-19 17:31:10 +03:00
Elian Doran
3d64c320fb
chore(react/type_widget): start with fresh note detail 2025-09-19 16:53:31 +03:00
Elian Doran
9cf7fa1997
fix(export/share): use right extension for clones 2025-06-24 22:14:15 +03:00
Elian Doran
fded714f18
fix(export/share): use right extension for images 2025-06-24 19:53:21 +03:00
Elian Doran
06de06b501
refactor(export/share): share type for format 2025-06-24 19:21:09 +03:00
Elian Doran
9abdbbbc5b
refactor(export/share): fix type 2025-06-24 19:06:18 +03:00
Elian Doran
3ebfee8bd2
fix(export/share): tree error in prod 2025-06-24 18:49:19 +03:00
Elian Doran
6d446c5b27
fix(export/share): asset path in prod 2025-06-24 18:49:11 +03:00
Elian Doran
3a55490bbf
refactor(share): use a string cache for templates 2025-06-24 18:08:29 +03:00
Elian Doran
bc4643fed2
refactor(share): use internal rendering method for subtemplates 2025-06-24 17:48:52 +03:00
Elian Doran
a2110ca631
fix(export/share): tree not expanding properly 2025-06-24 17:45:06 +03:00
Elian Doran
413137ac64
chore(nx): sync tsconfig 2025-06-23 21:23:44 +03:00
Elian Doran
9bc966491d
fix(edit-docs): import error 2025-06-23 21:22:45 +03:00
Elian Doran
61dbc15fc6
feat(export/share): use translation 2025-06-23 20:14:13 +03:00
Elian Doran
b475037127
feat(export/share): render non-text note types 2025-06-23 20:00:40 +03:00
Elian Doran
35622a2122
feat(export/share): always render empty files 2025-06-23 19:38:47 +03:00
Elian Doran
77e4c3d0ec
refactor(export/share): use different URL rewriting mechanism 2025-06-23 19:28:45 +03:00
Elian Doran
8523050ab2
fix(export/share): note children preview links not working 2025-06-23 19:00:20 +03:00
Elian Doran
0efdf65202
refactor(export/share): build index file 2025-06-23 18:46:21 +03:00
Elian Doran
acb0991d05
refactor(export/zip): separate building provider into own method 2025-06-23 18:24:59 +03:00
Elian Doran
a9f68f5487
feat(export/zip): add option to export with share theme 2025-06-23 18:13:47 +03:00
Elian Doran
55bb2fdb9b
refactor(export/zip): extract prepare content into providers 2025-06-23 16:22:42 +03:00
Elian Doran
e529633b8b
chore(export/zip): bring back markdown exporter 2025-06-23 16:17:29 +03:00
Elian Doran
dfd575b6eb
refactor(export/zip): extract into separate provider 2025-06-23 16:08:31 +03:00
Elian Doran
c5196721d4
chore(nx): sync tsconfig 2025-06-23 15:36:10 +03:00
Elian Doran
968c75b618
Merge remote-tracking branch 'origin/main' into feature/export_with_share_theme 2025-06-23 15:35:30 +03:00
Elian Doran
01beebf660
feat(export/zip): load script as well 2025-06-14 01:23:02 +03:00
Elian Doran
d3115e834a
feat(export/zip): get logo to work 2025-06-14 01:01:12 +03:00
Elian Doran
01a552ceb5
feat(export/zip): get boxicons to work 2025-06-14 00:52:56 +03:00
Elian Doran
d8958adea5
feat(export/zip): basic tree navigation 2025-06-14 00:07:55 +03:00
Elian Doran
4d5e866db6
feat(export/zip): get CSS to load 2025-06-13 23:47:04 +03:00
Elian Doran
f189deb415
feat(export/zip): get tree to render 2025-06-13 23:22:44 +03:00
Elian Doran
9c460dbc87
feat(export/zip): get same rendering engine as share 2025-06-13 23:10:14 +03:00
Elian Doran
2c6ba9ba2c
refactor(share): extract note rendering logic 2025-06-13 17:48:19 +03:00
Nathan Cahill
a1ef80f5ae split.js v1.6.5 react-split v2.0.14 react-split-grid v1.0.4 2022-01-06 18:05:56 -06:00
Johan Sundström
d9a350a003 accept arrays for snapOffset in splitjs 2021-05-11 16:33:35 +02:00
Nathan Cahill
3b9bb98d8d v1.6.4 2021-04-05 08:58:28 -04:00
Nathan Cahill
87e7449da2 update types 2021-04-05 08:57:28 -04:00
Nathan Cahill
a2c8695a6d splitjs v1.6.3, split-grid v1.0.10 2021-04-02 09:27:16 -04:00
Nathan Cahill
2f74e84777 add maxSize option 2021-04-02 09:27:16 -04:00
Nathan Cahill
db9591a011 split.js v1.6.2, react-split-grid v1.0.3 2020-07-07 11:01:34 +02:00
Nathan Cahill
e56e29fd64 add sizes to onDrag 2020-07-07 10:56:14 +02:00
Nathan Cahill
06e4a8bc50 Merge pull request #214 from pgherveou/patch-1
Update splitjs type definitions
2020-07-07 10:52:39 +02:00
Nathan Cahill
d4a1905e73 react-split v2.0.9 2020-06-24 13:39:50 +02:00
Nathan Cahill
bc583b0ceb split.js v1.6.1 2020-06-24 13:39:36 +02:00
Nathan Cahill
d5b8666dee revert from mjs esm build for webpack 2020-06-24 13:39:07 +02:00
PG Herveou
905e311e42 Update index.d.ts 2020-06-15 14:49:22 -04:00
PG Herveou
d3d4c88b47 Merge branch 'master' into patch-1 2020-06-15 14:48:48 -04:00
Nathan Cahill
7cdad71a8e david-dm down 2020-06-15 10:16:04 +02:00
Nathan Cahill
4e2b331ba0 readmes 2020-06-12 15:18:11 +02:00
Nathan Cahill
f0c0c6ec67 split.js - v1.6.0 2020-06-10 18:52:40 +02:00
Nathan Cahill
57656efacc add types 2020-06-10 18:47:40 +02:00
Nathan Cahill
a8b26cbe27 update defs 2020-06-10 18:39:30 +02:00
Nathan Cahill
1c9ffe5378 bump license year 2020-06-10 18:17:04 +02:00
Nathan Cahill
47d3bb7575 allow ssr with global
Co-authored-by: Austin Buckler <buckleraustin@gmail.com>
2020-06-10 18:05:27 +02:00
Nathan Cahill
03d6cb58db drop support for ie 8 2020-06-10 17:31:11 +02:00
Nathan Cahill
5d0f64db46 upgrade jasmine, dependabot, rollup 2020-06-10 16:42:41 +02:00
Nathan Cahill
76a973ac8a remove old browsers 2020-06-10 16:14:40 +02:00
Nathan Cahill
0491f27d55 remove old browsers not working 2020-06-10 16:08:50 +02:00
Nathan Cahill
3caa7fcfa5 run saucelabs 2020-06-10 15:16:17 +02:00
Nathan Cahill
bfdb3caa50 fix saucelabs versions 2020-06-10 14:45:59 +02:00
Nathan Cahill
f815c2ff8d version bump and format 2020-06-10 14:04:08 +02:00
Nathan Cahill
7c654903f6 Merge pull request #221 from inetsoft-anton/patch-1
Unrestrict cursor option typing
2019-11-22 08:54:07 -07:00
inetsoft-anton
27bfaba5ec Unrestrict cursor option typing
There doesn't appear to be a restriction in the code that limits the cursor style to one of col-resize or row-resize.
Change it to string to be more lenient, like gutterAlign.
2019-11-22 10:26:38 -05:00
PG Herveou
c2548cb4fa Update package.json 2019-11-06 11:30:29 -05:00
PG Herveou
086fe79dd9 Update package.json 2019-11-06 11:29:55 -05:00
PG Herveou
e8dfce7421 Update splitjs type definitions
This PR update the drag method definitions
see: https://github.com/nathancahill/split/tree/master/packages/splitjs#ondrag-ondragstart-ondragend
2019-11-06 11:25:32 -05:00
Nathan Cahill
c55da9de12 Merge pull request #198 from donaldpipowitch/patch-1
added missing react section
2019-07-07 15:44:17 -04:00
Nathan Cahill
ed5763d89a update karma conf 2019-07-07 12:46:25 -04:00
Nathan Cahill
e49912e83c docs 2019-07-07 12:08:32 -04:00
Donald Pipowitch
0b90bf460a added missing react section 2019-06-07 09:48:00 +02:00
Nathan Cahill
cf5f5476df splitjs - v1.5.11 2019-06-01 13:18:06 -04:00
Nathan Cahill
a12ba57de7 fix logo 2019-06-01 13:13:54 -04:00
Nathan Cahill
4574a233e6 splitjs - v1.5.10 2019-06-01 13:13:06 -04:00
Nathan Cahill
6e9ebf75ad fix link to flex layout 2019-06-01 10:54:13 -04:00
Nathan Cahill
1e720d4810 remove semi-colons from readme 2019-06-01 10:47:18 -04:00
Nathan Cahill
2e2c20f8a3 bump license year 2019-04-05 16:44:39 -04:00
Nathan Cahill
f1b976d4e4 fix typo in docs 2019-04-05 16:42:24 -04:00
Nathan Cahill
071e8a0cc1 Merge pull request #189 from stoplightio/master
Fix lack of item index in elementStyle
2019-03-11 15:41:31 -04:00
Jakub Rożek
c0006e961b consistently pass index to elementStyle 2019-03-11 15:40:54 +01:00
Nathan Cahill
7754829e1a handle case in hidden iframes - fixes #171 2018-11-22 11:27:53 -08:00
Nathan Cahill
a752e75409 add cdnjs 2018-11-11 17:19:16 -06:00
Nathan Cahill
61a9706b6a add cdnjs 2018-11-11 16:49:17 -06:00
Nathan Cahill
12a510c9c8 add saucelabs 2018-11-08 13:09:44 -07:00
Nathan Cahill
936d274f5a add saucelabs 2018-11-08 12:39:05 -07:00
Nathan Cahill
42fac91aed add saucelabs 2018-11-08 12:38:15 -07:00
Nathan Cahill
b934045cbd add saucelabs 2018-11-08 12:35:59 -07:00
Nathan Cahill
b77ebedf78 add saucelabs 2018-11-08 12:34:37 -07:00
Nathan Cahill
3c09f27676 es builds 2018-11-07 10:08:41 -07:00
Nathan Cahill
c545a4c685 fix paths 2018-11-06 14:35:25 -07:00
Nathan Cahill
9f0c5bf123 ignore minSize if parent is too small 2018-11-06 09:48:52 -07:00
Nathan Cahill
22a1c4cc65 v1.5.9 2018-11-05 15:05:29 -07:00
Nathan Cahill
dcd51d64fb handle views without clientSize 2018-11-05 14:58:27 -07:00
Nathan Cahill
92f95e7288 clarify css layouts 2018-11-05 12:41:25 -07:00
Nathan Cahill
31cbe99224 standardize package json 2018-11-05 07:20:37 -07:00
Nathan Cahill
45aad74b01 switch to saucelabs 2018-11-04 18:04:44 -07:00
Nathan Cahill
f1b8a1b7f2 disable browserstack until ie testing is fixed 2018-11-04 16:40:31 -07:00
Nathan Cahill
4356adcdfe fix browserstack paths 2018-11-04 15:50:10 -07:00
Nathan Cahill
8c1d9c27c2 browserstack config 2018-11-04 15:46:18 -07:00
Nathan Cahill
52c593c54e browserstack 2018-11-04 15:28:54 -07:00
Nathan Cahill
977615aa2b remove old react link 2018-11-04 15:14:11 -07:00
Nathan Cahill
58cc1280ce deprecate bower 2018-11-04 14:37:33 -07:00
Nathan Cahill
eaeb2f1bb2 move off rawgit 2018-11-04 14:36:43 -07:00
Nathan Cahill
f1d912e4bd remove submodules 2018-11-04 14:32:14 -07:00
Nathan Cahill
7c3619675a monorepo 2018-11-04 14:30:29 -07:00
1651 changed files with 89326 additions and 33461 deletions

View File

@ -1,6 +1,6 @@
root = true
[*.{js,ts,tsx}]
[*.{js,ts,tsx,css}]
charset = utf-8
end_of_line = lf
indent_size = 4

View File

@ -21,7 +21,7 @@ runs:
# Certificate setup
- name: Import Apple certificates
if: inputs.os == 'macos'
uses: apple-actions/import-codesign-certs@v5
uses: apple-actions/import-codesign-certs@v6
with:
p12-file-base64: ${{ env.APPLE_APP_CERTIFICATE_BASE64 }}
p12-password: ${{ env.APPLE_APP_CERTIFICATE_PASSWORD }}
@ -30,7 +30,7 @@ runs:
- name: Install Installer certificate
if: inputs.os == 'macos'
uses: apple-actions/import-codesign-certs@v5
uses: apple-actions/import-codesign-certs@v6
with:
p12-file-base64: ${{ env.APPLE_INSTALLER_CERTIFICATE_BASE64 }}
p12-password: ${{ env.APPLE_INSTALLER_CERTIFICATE_PASSWORD }}

View File

@ -10,9 +10,9 @@ runs:
steps:
- uses: pnpm/action-setup@v4
- name: Set up node & dependencies
uses: actions/setup-node@v5
uses: actions/setup-node@v6
with:
node-version: 22
node-version: 24
cache: "pnpm"
- name: Install dependencies
shell: bash

View File

@ -0,0 +1,103 @@
name: "Deploy to Cloudflare Pages"
description: "Deploys to Cloudflare Pages on either a temporary branch with preview comment, or on the production version if on the main branch."
inputs:
project_name:
description: "CloudFlare Pages project name"
comment_body:
description: "The message to display when deployment is ready"
default: "Deployment is ready."
required: false
production_url:
description: "The URL to mention as the production URL."
required: true
deploy_dir:
description: "The directory from which to deploy."
required: true
cloudflare_api_token:
description: "The Cloudflare API token to use for deployment."
required: true
cloudflare_account_id:
description: "The Cloudflare account ID to use for deployment."
required: true
github_token:
description: "The GitHub token to use for posting PR comments."
required: true
runs:
using: composite
steps:
# Install wrangler globally to avoid workspace issues
- name: Install Wrangler
shell: bash
run: npm install -g wrangler
# Deploy using Wrangler (use pre-installed wrangler)
- name: Deploy to Cloudflare Pages
id: deploy
if: github.event_name == 'push' || github.event_name == 'workflow_dispatch'
uses: cloudflare/wrangler-action@v3
with:
apiToken: ${{ inputs.cloudflare_api_token }}
accountId: ${{ inputs.cloudflare_account_id }}
command: pages deploy ${{ inputs.deploy_dir }} --project-name=${{ inputs.project_name}} --branch=${{ github.ref_name }}
wranglerVersion: '' # Use pre-installed version
# Deploy preview for PRs
- name: Deploy Preview to Cloudflare Pages
id: preview-deployment
if: github.event_name == 'pull_request'
uses: cloudflare/wrangler-action@v3
with:
apiToken: ${{ inputs.cloudflare_api_token }}
accountId: ${{ inputs.cloudflare_account_id }}
command: pages deploy ${{ inputs.deploy_dir }} --project-name=${{ inputs.project_name}} --branch=pr-${{ github.event.pull_request.number }}
wranglerVersion: '' # Use pre-installed version
# Post deployment URL as PR comment
- name: Comment PR with Preview URL
if: github.event_name == 'pull_request'
uses: actions/github-script@v8
env:
COMMENT_BODY: ${{ inputs.comment_body }}
PRODUCTION_URL: ${{ inputs.production_url }}
PROJECT_NAME: ${{ inputs.project_name }}
with:
github-token: ${{ inputs.github_token }}
script: |
const prNumber = context.issue.number;
// Construct preview URL based on Cloudflare Pages pattern
const projectName = process.env.PROJECT_NAME;
const previewUrl = `https://pr-${prNumber}.${projectName}.pages.dev`;
// Check if we already commented
const comments = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: prNumber
});
const customMessage = process.env.COMMENT_BODY;
const botComment = comments.data.find(comment =>
comment.user.type === 'Bot' &&
comment.body.includes(customMessage)
);
const mainUrl = process.env.PRODUCTION_URL;
const commentBody = `${customMessage}!\n\n🔗 Preview URL: ${previewUrl}\n📖 Production URL: ${mainUrl}\n\n✅ All checks passed\n\n_This preview will be updated automatically with new commits._`;
if (botComment) {
// Update existing comment
await github.rest.issues.updateComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: botComment.id,
body: commentBody
});
} else {
// Create new comment
await github.rest.issues.createComment({
issue_number: prNumber,
owner: context.repo.owner,
repo: context.repo.repo,
body: commentBody
});
}

View File

@ -44,7 +44,7 @@ runs:
steps:
# Checkout branch to compare to [required]
- name: Checkout base branch
uses: actions/checkout@v5
uses: actions/checkout@v6
with:
ref: ${{ inputs.branch }}
path: br-base

334
.github/copilot-instructions.md vendored Normal file
View File

@ -0,0 +1,334 @@
# Trilium Notes - AI Coding Agent Instructions
## Project Overview
Trilium Notes is a hierarchical note-taking application with advanced features like synchronization, scripting, and rich text editing. Built as a TypeScript monorepo using pnpm, it implements a three-layer caching architecture (Becca/Froca/Shaca) with a widget-based UI system and supports extensive user scripting capabilities.
## Essential Architecture Patterns
### Three-Layer Cache System (Critical to Understand)
- **Becca** (`apps/server/src/becca/`): Server-side entity cache, primary data source
- **Froca** (`apps/client/src/services/froca.ts`): Client-side mirror synchronized via WebSocket
- **Shaca** (`apps/server/src/share/`): Optimized cache for public/shared notes
**Key insight**: Never bypass these caches with direct DB queries. Always use `becca.notes[noteId]`, `froca.getNote()`, or equivalent cache methods.
### Entity Relationship Model
Notes use a **multi-parent tree** via branches:
- `BNote` - The note content and metadata
- `BBranch` - Tree relationships (one note can have multiple parents via cloning)
- `BAttribute` - Key-value metadata attached to notes (labels and relations)
### Entity Change System & Sync
Every entity modification (notes, branches, attributes) creates an `EntityChange` record that drives synchronization:
```typescript
// Entity changes are automatically tracked
note.title = "New Title";
note.save(); // Creates EntityChange record with changeId
// Sync protocol via WebSocket
ws.sendMessage({ type: 'sync-pull-in-progress', ... });
```
**Critical**: This is why you must use Becca/Froca methods instead of direct DB writes - they create the change tracking records needed for sync.
### Entity Lifecycle & Events
The event system (`apps/server/src/services/events.ts`) broadcasts entity lifecycle events:
```typescript
// Subscribe to events in widgets or services
eventService.subscribe('noteChanged', ({ noteId }) => {
// React to note changes
});
// Common events: noteChanged, branchChanged, attributeChanged, noteDeleted
// Widget method: entitiesReloadedEvent({loadResults}) for handling reloads
```
**Becca loader priorities**: Events are emitted in order (notes → branches → attributes) during initial load to ensure referential integrity.
### TaskContext for Long Operations
Use `TaskContext` for operations with progress reporting (imports, exports, bulk operations):
```typescript
const taskContext = new TaskContext("task-id", "import", "Import Notes");
taskContext.increaseProgressCount();
// WebSocket messages: { type: 'taskProgressCount', taskId, taskType, data, progressCount }
**Pattern**: All long-running operations (delete note trees, export, import) use TaskContext to send WebSocket updates to the frontend.
### Protected Session Handling
Protected notes require an active encryption session:
```typescript
// Always check before accessing protected content
if (note.isContentAvailable()) {
const content = note.getContent(); // Safe
} else {
const title = note.getTitleOrProtected(); // Returns "[protected]"
}
// Protected session management
protectedSessionService.isProtectedSessionAvailable() // Check session
protectedSessionService.startProtectedSession() // After password entry
```
**Session timeout**: Protected sessions expire after inactivity. The encryption key is kept in memory only.
### Attribute Inheritance Patterns
Attributes can be inherited through three mechanisms:
```typescript
// 1. Standard inheritance (#hidePromotedAttributes ~hidePromotedAttributes)
note.getInheritableAttributes() // Walks up parent tree
// 2. Child prefix inheritance (child:label copies to children)
parentNote.setLabel("child:icon", "book") // All children inherit this
// 3. Template relation inheritance (#template=templateNoteId)
note.setRelation("template", templateNoteId)
note.getInheritedAttributes() // Includes template's inheritable attributes
```
**Cycle prevention**: Inheritance tracking prevents infinite loops when notes reference each other.
### Widget-Based UI Architecture
All UI components extend from widget base classes (`apps/client/src/widgets/`):
```typescript
// Right panel widget (sidebar)
class MyWidget extends RightPanelWidget {
get position() { return 100; } // Order in panel
get parentWidget() { return 'right-pane'; }
isEnabled() { return this.note && this.note.hasLabel('myLabel'); }
async refreshWithNote(note) { /* Update UI */ }
}
// Note-aware widget (responds to note changes)
class MyNoteWidget extends NoteContextAwareWidget {
async refreshWithNote(note) { /* Refresh when note changes */ }
async entitiesReloadedEvent({loadResults}) { /* Handle entity updates */ }
}
```
**Important**: Widgets use jQuery (`this.$widget`) for DOM manipulation. Don't mix React patterns here.
## Development Workflow
### Running & Testing
```bash
# From root directory
pnpm install # Install dependencies
corepack enable # Enable pnpm if not available
pnpm server:start # Dev server (http://localhost:8080)
pnpm server:start-prod # Production mode server
pnpm desktop:start # Desktop app development
pnpm server:test spec/etapi/search.spec.ts # Run specific test
pnpm test:parallel # Client tests (can run parallel)
pnpm test:sequential # Server tests (sequential due to shared DB)
pnpm test:all # All tests (parallel + sequential)
pnpm coverage # Generate coverage reports
pnpm typecheck # Type check all projects
```
### Building
```bash
pnpm client:build # Build client application
pnpm server:build # Build server application
pnpm desktop:build # Build desktop application
```
### Test Organization
- **Server tests** (`apps/server/spec/`): Must run sequentially (shared database state)
- **Client tests** (`apps/client/src/`): Can run in parallel
- **E2E tests** (`apps/server-e2e/`): Use Playwright for integration testing
- **ETAPI tests** (`apps/server/spec/etapi/`): External API contract tests
**Pattern**: When adding new API endpoints, add tests in `spec/etapi/` following existing patterns (see `search.spec.ts`).
### Monorepo Navigation
```
apps/
client/ # Frontend (shared by server & desktop)
server/ # Node.js backend with REST API
desktop/ # Electron wrapper
web-clipper/ # Browser extension for saving web content
db-compare/ # Database comparison tool
dump-db/ # Database export utility
edit-docs/ # Documentation editing tools
packages/
commons/ # Shared types and utilities
ckeditor5/ # Custom rich text editor with Trilium-specific plugins
codemirror/ # Code editor integration
highlightjs/ # Syntax highlighting
share-theme/ # Theme for shared/published notes
ckeditor5-admonition/ # Admonition blocks plugin
ckeditor5-footnotes/ # Footnotes plugin
ckeditor5-math/ # Math equations plugin
ckeditor5-mermaid/ # Mermaid diagrams plugin
```
**Filter commands**: Use `pnpm --filter server test` to run commands in specific packages.
## Critical Code Patterns
### ETAPI Backwards Compatibility
When adding query parameters to ETAPI endpoints (`apps/server/src/etapi/`), maintain backwards compatibility by checking if new params exist before changing response format.
**Pattern**: ETAPI consumers expect specific response shapes. Always check for breaking changes.
### Frontend-Backend Communication
- **REST API**: `apps/server/src/routes/api/` - Internal endpoints (no auth required when `noAuthentication=true`)
- **ETAPI**: `apps/server/src/etapi/` - External API with authentication
- **WebSocket**: Real-time sync via `apps/server/src/services/ws.ts`
**Auth note**: ETAPI uses basic auth with tokens. Internal API endpoints trust the frontend.
### Database Migrations
- Add scripts in `apps/server/src/migrations/YYMMDD_HHMM__description.sql`
- Update schema in `apps/server/src/assets/db/schema.sql`
- Never bypass Becca cache after migrations
## Common Pitfalls
1. **Never bypass the cache layers** - Always use `becca.notes[noteId]`, `froca.getNote()`, or equivalent cache methods. Direct database queries will cause sync issues between Becca/Froca/Shaca and won't create EntityChange records needed for synchronization.
2. **Protected notes require session check** - Before accessing `note.title` or `note.getContent()` on protected notes, check `note.isContentAvailable()` or use `note.getTitleOrProtected()` which handles this automatically.
3. **Widget lifecycle matters** - Override `refreshWithNote()` for note changes, `doRenderBody()` for initial render, `entitiesReloadedEvent()` for entity updates. Widgets use jQuery (`this.$widget`) - don't mix React patterns.
4. **Tests run differently** - Server tests must run sequentially (shared database state), client tests can run in parallel. Use `pnpm test:sequential` for backend, `pnpm test:parallel` for frontend.
5. **ETAPI requires authentication** - ETAPI endpoints use basic auth with tokens. Internal API endpoints (`apps/server/src/routes/api/`) trust the frontend when `noAuthentication=true`.
6. **Search expressions are evaluated in memory** - The search service loads all matching notes, scores them in JavaScript, then sorts. You cannot add SQL-level LIMIT/OFFSET without losing scoring functionality.
7. **Documentation edits have rules** - `docs/Script API/` is auto-generated (never edit directly). `docs/User Guide/` should be edited via `pnpm edit-docs:edit-docs`, not manually. Only `docs/Developer Guide/` and `docs/Release Notes/` are safe for direct Markdown editing.
8. **pnpm workspace filtering** - Use `pnpm --filter server <command>` or shorthand `pnpm server:test` defined in root `package.json`. Note the `--filter` syntax, not `-F` or other shortcuts.
9. **Event subscription cleanup** - When subscribing to events in widgets, unsubscribe in `cleanup()` or `doDestroy()` to prevent memory leaks.
10. **Attribute inheritance can be complex** - When checking for labels/relations, use `note.getOwnedAttribute()` for direct attributes or `note.getAttribute()` for inherited ones. Don't assume attributes are directly on the note.
## TypeScript Configuration
- **Project references**: Monorepo uses TypeScript project references (`tsconfig.json`)
- **Path mapping**: Use relative imports, not path aliases
- **Build order**: `pnpm typecheck` builds all projects in dependency order
- **Build system**: Uses Vite for fast development, ESBuild for production optimization
- **Patches**: Custom patches in `patches/` directory for CKEditor and other dependencies
## Key Files for Context
- `apps/server/src/becca/entities/bnote.ts` - Note entity methods
- `apps/client/src/services/froca.ts` - Frontend cache API
- `apps/server/src/services/search/services/search.ts` - Search implementation
- `apps/server/src/routes/routes.ts` - API route registration
- `apps/client/src/widgets/basic_widget.ts` - Widget base class
- `apps/server/src/main.ts` - Server startup entry point
- `apps/client/src/desktop.ts` - Client initialization
- `apps/server/src/services/backend_script_api.ts` - Scripting API
- `apps/server/src/assets/db/schema.sql` - Database schema
## Note Types and Features
Trilium supports multiple note types with specialized widgets in `apps/client/src/widgets/type_widgets/`:
- **Text**: Rich text with CKEditor5 (markdown import/export)
- **Code**: Syntax-highlighted code editing with CodeMirror
- **File**: Binary file attachments
- **Image**: Image display with editing capabilities
- **Canvas**: Drawing/diagramming with Excalidraw
- **Mermaid**: Diagram generation
- **Relation Map**: Visual note relationship mapping
- **Web View**: Embedded web pages
- **Doc/Book**: Hierarchical documentation structure
### Collections
Notes can be marked with the `#collection` label to enable collection view modes. Collections support multiple view types:
- **List**: Standard list view
- **Grid**: Card/grid layout
- **Calendar**: Calendar-based view
- **Table**: Tabular data view
- **GeoMap**: Geographic map view
- **Board**: Kanban-style board
- **Presentation**: Slideshow presentation mode
View types are configured via `#viewType` label (e.g., `#viewType=table`). Each view mode stores its configuration in a separate attachment (e.g., `table.json`). Collections are organized separately from regular note type templates in the note creation menu.
## Common Development Tasks
### Adding New Note Types
1. Create widget in `apps/client/src/widgets/type_widgets/`
2. Register in `apps/client/src/services/note_types.ts`
3. Add backend handling in `apps/server/src/services/notes.ts`
### Extending Search
- Search expressions handled in `apps/server/src/services/search/`
- Add new search operators in search context files
- Remember: scoring happens in-memory, not at database level
### Custom CKEditor Plugins
- Create new package in `packages/` following existing plugin structure
- Register in `packages/ckeditor5/src/plugins.ts`
- See `ckeditor5-admonition`, `ckeditor5-footnotes`, `ckeditor5-math`, `ckeditor5-mermaid` for examples
### Database Migrations
- Add migration scripts in `apps/server/src/migrations/YYMMDD_HHMM__description.sql`
- Update schema in `apps/server/src/assets/db/schema.sql`
- Never bypass Becca cache after migrations
## Security & Features
### Security Considerations
- Per-note encryption with granular protected sessions
- CSRF protection for API endpoints
- OpenID and TOTP authentication support
- Sanitization of user-generated content
### Scripting System
Trilium provides powerful user scripting capabilities:
- **Frontend scripts**: Run in browser context with UI access
- **Backend scripts**: Run in Node.js context with full API access
- Script API documentation in `docs/Script API/`
- Backend API available via `api` object in script context
### Internationalization
- Translation files in `apps/client/src/translations/`
- Use translation system via `t()` function
- Automatic pluralization: Add `_other` suffix to translation keys (e.g., `item` and `item_other` for singular/plural)
## Testing Conventions
```typescript
// ETAPI test pattern
describe("etapi/feature", () => {
beforeAll(async () => {
config.General.noAuthentication = false;
app = await buildApp();
token = await login(app);
});
it("should test feature", async () => {
const response = await supertest(app)
.get("/etapi/notes?search=test")
.auth(USER, token, { type: "basic" })
.expect(200);
expect(response.body.results).toBeDefined();
});
});
```
## Questions to Verify Understanding
Before implementing significant changes, confirm:
- Is this touching the cache layer? (Becca/Froca/Shaca must stay in sync via EntityChange records)
- Does this change API response shape? (Check backwards compatibility for ETAPI)
- Are you adding search features? (Understand expression-based architecture and in-memory scoring first)
- Is this a new widget? (Know which base class and lifecycle methods to use)
- Does this involve protected notes? (Check `isContentAvailable()` before accessing content)
- Is this a long-running operation? (Use TaskContext for progress reporting)
- Are you working with attributes? (Understand inheritance patterns: direct, child-prefix, template)

View File

@ -57,7 +57,7 @@ jobs:
# your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
steps:
- name: Checkout repository
uses: actions/checkout@v5
uses: actions/checkout@v6
# Add any setup steps before running the `github/codeql-action/init` action.
# This includes steps like installing compilers or runtimes (`actions/setup-node`
@ -67,7 +67,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
@ -95,6 +95,6 @@ jobs:
exit 1
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
uses: github/codeql-action/analyze@v4
with:
category: "/language:${{matrix.language}}"

View File

@ -1,6 +1,4 @@
# GitHub Actions workflow for deploying MkDocs documentation to Cloudflare Pages
# This workflow builds and deploys your MkDocs site when changes are pushed to main
name: Deploy MkDocs Documentation
name: Deploy Documentation
on:
# Trigger on push to main branch
@ -11,15 +9,13 @@ on:
# Only run when docs files change
paths:
- 'docs/**'
- 'README.md' # README is synced to docs/index.md
- 'mkdocs.yml'
- 'requirements-docs.txt'
- '.github/workflows/deploy-docs.yml'
- 'scripts/fix-mkdocs-structure.ts'
- 'apps/edit-docs/**'
- 'apps/build-docs/**'
- 'packages/share-theme/**'
# Allow manual triggering from Actions tab
workflow_dispatch:
# Run on pull requests for preview deployments
pull_request:
branches:
@ -27,162 +23,56 @@ on:
- master
paths:
- 'docs/**'
- 'README.md' # README is synced to docs/index.md
- 'mkdocs.yml'
- 'requirements-docs.txt'
- '.github/workflows/deploy-docs.yml'
- 'scripts/fix-mkdocs-structure.ts'
- 'apps/edit-docs/**'
- 'apps/build-docs/**'
- 'packages/share-theme/**'
jobs:
build-and-deploy:
name: Build and Deploy MkDocs
name: Build and Deploy Documentation
runs-on: ubuntu-latest
timeout-minutes: 10
# Required permissions for deployment
permissions:
contents: read
deployments: write
pull-requests: write # For PR preview comments
id-token: write # For OIDC authentication (if needed)
steps:
- name: Checkout Repository
uses: actions/checkout@v5
with:
fetch-depth: 0 # Fetch all history for git info and mkdocs-git-revision-date plugin
- name: Setup Python
uses: actions/setup-python@v6
with:
python-version: '3.13'
cache: 'pip'
cache-dependency-path: 'requirements-docs.txt'
- name: Install MkDocs and Dependencies
run: |
pip install --upgrade pip
pip install -r requirements-docs.txt
env:
PIP_DISABLE_PIP_VERSION_CHECK: 1
# Setup pnpm before fixing docs structure
uses: actions/checkout@v6
- name: Setup pnpm
uses: pnpm/action-setup@v4
# Setup Node.js with pnpm
- name: Setup Node.js
uses: actions/setup-node@v5
with:
node-version: '22'
cache: 'pnpm'
# Install Node.js dependencies for the TypeScript script
- name: Install Dependencies
run: |
pnpm install --frozen-lockfile
- name: Fix Documentation Structure
run: |
# Fix duplicate navigation entries by moving overview pages to index.md
pnpm run chore:fix-mkdocs-structure
- name: Build MkDocs Site
run: |
# Build with strict mode but allow expected warnings
mkdocs build --verbose || {
EXIT_CODE=$?
# Check if the only issue is expected warnings
if mkdocs build 2>&1 | grep -E "WARNING.*(README|not found)" && \
[ $(mkdocs build 2>&1 | grep -c "ERROR") -eq 0 ]; then
echo "✅ Build succeeded with expected warnings"
mkdocs build --verbose
else
echo "❌ Build failed with unexpected errors"
exit $EXIT_CODE
fi
}
- name: Fix HTML Links
run: |
# Remove .md extensions from links in generated HTML
pnpm tsx ./scripts/fix-html-links.ts site
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: '24'
cache: 'pnpm'
- name: Install Dependencies
run: pnpm install --frozen-lockfile
- name: Trigger build of documentation
run: pnpm docs:build
- name: Validate Built Site
run: |
# Basic validation that important files exist
test -f site/index.html || (echo "ERROR: site/index.html not found" && exit 1)
test -f site/sitemap.xml || (echo "ERROR: site/sitemap.xml not found" && exit 1)
test -d site/assets || (echo "ERROR: site/assets directory not found" && exit 1)
echo "✅ Site validation passed"
# Install wrangler globally to avoid workspace issues
- name: Install Wrangler
run: |
npm install -g wrangler
# Deploy using Wrangler (use pre-installed wrangler)
- name: Deploy to Cloudflare Pages
id: deploy
if: github.event_name == 'push' || github.event_name == 'workflow_dispatch'
uses: cloudflare/wrangler-action@v3
test -f site/developer-guide/index.html || (echo "ERROR: site/developer-guide/index.html not found" && exit 1)
echo "✓ User Guide and Developer Guide built successfully"
- name: Deploy
uses: ./.github/actions/deploy-to-cloudflare-pages
if: github.repository == ${{ vars.REPO_MAIN }}
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
command: pages deploy site --project-name=trilium-docs --branch=${{ github.ref_name }}
wranglerVersion: '' # Use pre-installed version
# Deploy preview for PRs
- name: Deploy Preview to Cloudflare Pages
id: preview-deployment
if: github.event_name == 'pull_request'
uses: cloudflare/wrangler-action@v3
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
command: pages deploy site --project-name=trilium-docs --branch=pr-${{ github.event.pull_request.number }}
wranglerVersion: '' # Use pre-installed version
# Post deployment URL as PR comment
- name: Comment PR with Preview URL
if: github.event_name == 'pull_request'
uses: actions/github-script@v8
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const prNumber = context.issue.number;
// Construct preview URL based on Cloudflare Pages pattern
const previewUrl = `https://pr-${prNumber}.trilium-docs.pages.dev`;
const mainUrl = 'https://docs.triliumnotes.org';
// Check if we already commented
const comments = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: prNumber
});
const botComment = comments.data.find(comment =>
comment.user.type === 'Bot' &&
comment.body.includes('Documentation preview is ready')
);
const commentBody = `📚 Documentation preview is ready!\n\n🔗 Preview URL: ${previewUrl}\n📖 Production URL: ${mainUrl}\n\n✅ All checks passed\n\n_This preview will be updated automatically with new commits._`;
if (botComment) {
// Update existing comment
await github.rest.issues.updateComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: botComment.id,
body: commentBody
});
} else {
// Create new comment
await github.rest.issues.createComment({
issue_number: prNumber,
owner: context.repo.owner,
repo: context.repo.repo,
body: commentBody
});
}
project_name: "trilium-docs"
comment_body: "📚 Documentation preview is ready"
production_url: "https://docs.triliumnotes.org"
deploy_dir: "site"
cloudflare_api_token: ${{ secrets.CLOUDFLARE_API_TOKEN }}
cloudflare_account_id: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
github_token: ${{ secrets.GITHUB_TOKEN }}

View File

@ -24,13 +24,13 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@v5
uses: actions/checkout@v6
- uses: pnpm/action-setup@v4
- name: Set up node & dependencies
uses: actions/setup-node@v5
uses: actions/setup-node@v6
with:
node-version: 22
node-version: 24
cache: "pnpm"
- run: pnpm install --frozen-lockfile
@ -46,7 +46,7 @@ jobs:
needs:
- test_dev
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v4
- name: Install dependencies
run: pnpm install --frozen-lockfile
@ -80,7 +80,7 @@ jobs:
- dockerfile: Dockerfile
steps:
- name: Checkout the repository
uses: actions/checkout@v5
uses: actions/checkout@v6
- uses: pnpm/action-setup@v4
- name: Install dependencies

View File

@ -32,7 +32,7 @@ jobs:
- dockerfile: Dockerfile
steps:
- name: Checkout the repository
uses: actions/checkout@v5
uses: actions/checkout@v6
- name: Set IMAGE_NAME to lowercase
run: echo "IMAGE_NAME=${IMAGE_NAME,,}" >> $GITHUB_ENV
@ -44,9 +44,9 @@ jobs:
- uses: pnpm/action-setup@v4
- name: Set up node & dependencies
uses: actions/setup-node@v5
uses: actions/setup-node@v6
with:
node-version: 22
node-version: 24
cache: "pnpm"
- name: Install npm dependencies
@ -86,12 +86,12 @@ jobs:
- name: Upload Playwright trace
if: failure()
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: Playwright trace (${{ matrix.dockerfile }})
path: test-output/playwright/output
- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@v5
if: ${{ !cancelled() }}
with:
name: Playwright report (${{ matrix.dockerfile }})
@ -116,10 +116,10 @@ jobs:
- dockerfile: Dockerfile
platform: linux/arm64
image: ubuntu-24.04-arm
- dockerfile: Dockerfile
- dockerfile: Dockerfile.legacy
platform: linux/arm/v7
image: ubuntu-24.04-arm
- dockerfile: Dockerfile
- dockerfile: Dockerfile.legacy
platform: linux/arm/v8
image: ubuntu-24.04-arm
runs-on: ${{ matrix.image }}
@ -141,12 +141,12 @@ jobs:
run: echo "TEST_TAG=${TEST_TAG,,}" >> $GITHUB_ENV
- name: Checkout repository
uses: actions/checkout@v5
uses: actions/checkout@v6
- uses: pnpm/action-setup@v4
- name: Set up node & dependencies
uses: actions/setup-node@v5
uses: actions/setup-node@v6
with:
node-version: 22
node-version: 24
cache: 'pnpm'
- name: Install dependencies
@ -155,6 +155,10 @@ jobs:
- name: Update build info
run: pnpm run chore:update-build-info
- name: Update nightly version
if: ${{ !startsWith(github.ref, 'refs/tags/v') }}
run: pnpm run chore:ci-update-nightly-version
- name: Run the TypeScript build
run: pnpm run server:build
@ -209,7 +213,7 @@ jobs:
touch "/tmp/digests/${digest#sha256:}"
- name: Upload digest
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: digests-${{ env.PLATFORM_PAIR }}-${{ matrix.dockerfile }}
path: /tmp/digests/*
@ -223,7 +227,7 @@ jobs:
- build
steps:
- name: Download digests
uses: actions/download-artifact@v5
uses: actions/download-artifact@v6
with:
path: /tmp/digests
pattern: digests-*

View File

@ -19,7 +19,6 @@ concurrency:
cancel-in-progress: true
env:
GITHUB_UPLOAD_URL: https://uploads.github.com/repos/TriliumNext/Notes/releases/179589950/assets{?name,label}
GITHUB_RELEASE_ID: 179589950
permissions:
@ -46,19 +45,32 @@ jobs:
image: win-signing
shell: cmd
forge_platform: win32
# Exclude ARM64 Linux from default matrix to use native runner
exclude:
- arch: arm64
os:
name: linux
# Add ARM64 Linux with native ubuntu-24.04-arm runner for better-sqlite3 compatibility
include:
- arch: arm64
os:
name: linux
image: ubuntu-24.04-arm
shell: bash
forge_platform: linux
runs-on: ${{ matrix.os.image }}
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v4
- name: Set up node & dependencies
uses: actions/setup-node@v5
uses: actions/setup-node@v6
with:
node-version: 22
node-version: 24
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Update nightly version
run: npm run chore:ci-update-nightly-version
run: pnpm run chore:ci-update-nightly-version
- name: Run the build
uses: ./.github/actions/build-electron
with:
@ -78,7 +90,7 @@ jobs:
GPG_SIGNING_KEY: ${{ secrets.GPG_SIGN_KEY }}
- name: Publish release
uses: softprops/action-gh-release@v2.3.3
uses: softprops/action-gh-release@v2.5.0
if: ${{ github.event_name != 'pull_request' }}
with:
make_latest: false
@ -90,7 +102,7 @@ jobs:
name: Nightly Build
- name: Publish artifacts
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
if: ${{ github.event_name == 'pull_request' }}
with:
name: TriliumNotes ${{ matrix.os.name }} ${{ matrix.arch }}
@ -110,7 +122,7 @@ jobs:
runs-on: ubuntu-24.04-arm
runs-on: ${{ matrix.runs-on }}
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- name: Run the build
uses: ./.github/actions/build-server
@ -119,7 +131,7 @@ jobs:
arch: ${{ matrix.arch }}
- name: Publish release
uses: softprops/action-gh-release@v2.3.3
uses: softprops/action-gh-release@v2.5.0
if: ${{ github.event_name != 'pull_request' }}
with:
make_latest: false

View File

@ -4,6 +4,9 @@ on:
push:
branches:
- main
- hotfix
paths-ignore:
- "apps/website/**"
pull_request:
permissions:
@ -11,29 +14,74 @@ permissions:
contents: read
jobs:
main:
runs-on: ubuntu-latest
e2e:
strategy:
fail-fast: false
matrix:
include:
- name: linux-x64
os: ubuntu-22.04
arch: x64
- name: linux-arm64
os: ubuntu-24.04-arm
arch: arm64
runs-on: ${{ matrix.os }}
name: E2E tests on ${{ matrix.name }}
env:
TRILIUM_DOCKER: 1
TRILIUM_PORT: 8082
TRILIUM_DATA_DIR: "${{ github.workspace }}/apps/server/spec/db"
TRILIUM_INTEGRATION_TEST: memory
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
with:
filter: tree:0
fetch-depth: 0
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v5
- uses: actions/setup-node@v6
with:
node-version: 22
node-version: 24
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- run: pnpm exec playwright install --with-deps
- run: pnpm --filter server-e2e e2e
- name: Install Playwright browsers
run: pnpm exec playwright install --with-deps
- name: Build the server
uses: ./.github/actions/build-server
with:
os: linux
arch: ${{ matrix.arch }}
- name: Unpack and start the server
run: |
version=$(node --eval "console.log(require('./package.json').version)")
file=$(find ./upload -name '*.tar.xz' -print -quit)
name=$(basename "$file" .tar.xz)
mkdir -p ./server-dist
tar -xvf "$file" -C ./server-dist
server_dir="./server-dist/TriliumNotes-Server-$version-linux-${{ matrix.arch }}"
if [ ! -d "$server_dir" ]; then
echo Missing dir.
exit 1
fi
cd "$server_dir"
"./trilium.sh" &
sleep 10
- name: Server end-to-end tests
run: pnpm --filter server-e2e e2e
- name: Upload test report
if: failure()
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: e2e report
name: e2e report ${{ matrix.arch }}
path: apps/server-e2e/test-output
- name: Kill the server
if: always()
run: pkill -f trilium || true

View File

@ -45,12 +45,12 @@ jobs:
forge_platform: linux
runs-on: ${{ matrix.os.image }}
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v4
- name: Set up node & dependencies
uses: actions/setup-node@v5
uses: actions/setup-node@v6
with:
node-version: 22
node-version: 24
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
@ -73,7 +73,7 @@ jobs:
GPG_SIGNING_KEY: ${{ secrets.GPG_SIGN_KEY }}
- name: Upload the artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: release-desktop-${{ matrix.os.name }}-${{ matrix.arch }}
path: apps/desktop/upload/*.*
@ -91,7 +91,7 @@ jobs:
runs-on: ubuntu-24.04-arm
runs-on: ${{ matrix.runs-on }}
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- name: Run the build
uses: ./.github/actions/build-server
@ -100,7 +100,7 @@ jobs:
arch: ${{ matrix.arch }}
- name: Upload the artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: release-server-linux-${{ matrix.arch }}
path: upload/*.*
@ -114,20 +114,20 @@ jobs:
steps:
- run: mkdir upload
- uses: actions/checkout@v5
- uses: actions/checkout@v6
with:
sparse-checkout: |
docs/Release Notes
- name: Download all artifacts
uses: actions/download-artifact@v5
uses: actions/download-artifact@v6
with:
merge-multiple: true
pattern: release-*
path: upload
- name: Publish stable release
uses: softprops/action-gh-release@v2.3.3
uses: softprops/action-gh-release@v2.5.0
with:
draft: false
body_path: docs/Release Notes/Release Notes/${{ github.ref_name }}.md

51
.github/workflows/website.yml vendored Normal file
View File

@ -0,0 +1,51 @@
name: Deploy website
on:
push:
branches:
- main
paths:
- "apps/website/**"
pull_request:
paths:
- "apps/website/**"
release:
types: [ released ]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
name: Build & deploy website
permissions:
contents: read
deployments: write
pull-requests: write # For PR preview comments
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v4
- name: Set up node & dependencies
uses: actions/setup-node@v6
with:
node-version: 24
cache: "pnpm"
- name: Install dependencies
run: pnpm install --filter website --frozen-lockfile
- name: Build the website
run: pnpm website:build
- name: Deploy
uses: ./.github/actions/deploy-to-cloudflare-pages
with:
project_name: "trilium-homepage"
comment_body: "📚 Website preview is ready"
production_url: "https://triliumnotes.org"
deploy_dir: "apps/website/dist"
cloudflare_api_token: ${{ secrets.CLOUDFLARE_API_TOKEN }}
cloudflare_account_id: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
github_token: ${{ secrets.GITHUB_TOKEN }}

1
.gitignore vendored
View File

@ -49,3 +49,4 @@ upload
# docs
site/
apps/*/coverage

2
.nvmrc
View File

@ -1 +1 @@
22.19.0
24.11.1

View File

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

View File

@ -14,6 +14,7 @@ usageMatchRegex:
# the `{key}` will be placed by a proper keypath matching regex,
# you can ignore it and use your own matching rules as well
- "[^\\w\\d]t\\(['\"`]({key})['\"`]"
- <Trans\s*i18nKey="({key})"[^>]*>
# A RegEx to set a custom scope range. This scope will be used as a prefix when detecting keys
# and works like how the i18next framework identifies the namespace scope from the

View File

@ -5,7 +5,8 @@
"i18n-ally.keystyle": "nested",
"i18n-ally.localesPaths": [
"apps/server/src/assets/translations",
"apps/client/src/translations"
"apps/client/src/translations",
"apps/website/public/translations"
],
"npm.exclude": [
"**/dist",
@ -35,5 +36,8 @@
"docs/**/*.png": true,
"apps/server/src/assets/doc_notes/**": true,
"apps/edit-docs/demo/**": true
}
},
"eslint.rules.customizations": [
{ "rule": "*", "severity": "warn" }
]
}

106
README.md
View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# Trilium Notes
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)
@ -5,13 +16,18 @@
![GitHub Downloads (all assets, all releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)
[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) [![Translation status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/)
[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | [Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README.ru.md) | [Japanese](./docs/README.ja.md) | [Italian](./docs/README.it.md) | [Spanish](./docs/README.es.md)
<!-- translate:off -->
<!-- LANGUAGE SWITCHER -->
[Chinese (Simplified Han script)](./docs/README-ZH_CN.md) | [Chinese (Traditional Han script)](./docs/README-ZH_TW.md) | [English](./docs/README.md) | [French](./docs/README-fr.md) | [German](./docs/README-de.md) | [Greek](./docs/README-el.md) | [Italian](./docs/README-it.md) | [Japanese](./docs/README-ja.md) | [Romanian](./docs/README-ro.md) | [Spanish](./docs/README-es.md)
<!-- translate:on -->
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:
<img src="./docs/app.png" alt="Trilium Screenshot" width="1000">
<a href="https://triliumnext.github.io/Docs/Wiki/screenshot-tour"><img src="./docs/app.png" alt="Trilium Screenshot" width="1000"></a>
## ⏬ Download
- [Latest release](https://github.com/TriliumNext/Trilium/releases/latest) stable version, recommended for most users.
- [Nightly build](https://github.com/TriliumNext/Trilium/releases/tag/nightly) unstable development version, updated daily with the latest features and fixes.
## 📚 Documentation
@ -24,39 +40,39 @@ Our documentation is available in multiple formats:
### Quick Links
- [Getting Started Guide](https://docs.triliumnotes.org/)
- [Installation Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md)
- [Docker Setup](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md)
- [Upgrading TriliumNext](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md)
- [Basic Concepts and Features](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md)
- [Patterns of Personal Knowledge Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge)
- [Installation Instructions](https://docs.triliumnotes.org/user-guide/setup)
- [Docker Setup](https://docs.triliumnotes.org/user-guide/setup/server/installation/docker)
- [Upgrading TriliumNext](https://docs.triliumnotes.org/user-guide/setup/upgrading)
- [Basic Concepts and Features](https://docs.triliumnotes.org/user-guide/concepts/notes)
- [Patterns of Personal Knowledge Base](https://docs.triliumnotes.org/user-guide/misc/patterns-of-personal-knowledge)
## 🎁 Features
* Notes can be arranged into arbitrarily deep tree. Single note can be placed into multiple places in the tree (see [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes))
* Rich WYSIWYG note editor including e.g. tables, images and [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat)
* Support for editing [notes with source code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax highlighting
* Fast and easy [navigation between notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text search and [note hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting)
* Seamless [note versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions)
* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be used for note organization, querying and advanced [scripting](https://triliumnext.github.io/Docs/Wiki/scripts)
* Notes can be arranged into arbitrarily deep tree. Single note can be placed into multiple places in the tree (see [cloning](https://docs.triliumnotes.org/user-guide/concepts/notes/cloning))
* Rich WYSIWYG note editor including e.g. tables, images and [math](https://docs.triliumnotes.org/user-guide/note-types/text) with markdown [autoformat](https://docs.triliumnotes.org/user-guide/note-types/text/markdown-formatting)
* Support for editing [notes with source code](https://docs.triliumnotes.org/user-guide/note-types/code), including syntax highlighting
* Fast and easy [navigation between notes](https://docs.triliumnotes.org/user-guide/concepts/navigation/note-navigation), full text search and [note hoisting](https://docs.triliumnotes.org/user-guide/concepts/navigation/note-hoisting)
* Seamless [note versioning](https://docs.triliumnotes.org/user-guide/concepts/notes/note-revisions)
* Note [attributes](https://docs.triliumnotes.org/user-guide/advanced-usage/attributes) can be used for note organization, querying and advanced [scripting](https://docs.triliumnotes.org/user-guide/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
* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) with self-hosted sync server
* there's a [3rd party service for hosting synchronisation server](https://trilium.cc/paid-hosting)
* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes to public internet
* Strong [note encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with per-note granularity
* Direct [OpenID and TOTP integration](https://docs.triliumnotes.org/user-guide/setup/server/mfa) for more secure login
* [Synchronization](https://docs.triliumnotes.org/user-guide/setup/synchronization) with self-hosted sync server
* there are [3rd party services for hosting synchronisation server](https://docs.triliumnotes.org/user-guide/setup/server/cloud-hosting)
* [Sharing](https://docs.triliumnotes.org/user-guide/advanced-usage/sharing) (publishing) notes to public internet
* Strong [note encryption](https://docs.triliumnotes.org/user-guide/concepts/notes/protected-notes) with per-note granularity
* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type "canvas")
* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing notes and their relations
* [Relation maps](https://docs.triliumnotes.org/user-guide/note-types/relation-map) and [note/link maps](https://docs.triliumnotes.org/user-guide/note-types/note-map) for visualizing notes and their relations
* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/)
* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with location pins and GPX tracks
* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases)
* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation
* [Geo maps](https://docs.triliumnotes.org/user-guide/collections/geomap) with location pins and GPX tracks
* [Scripting](https://docs.triliumnotes.org/user-guide/scripts) - see [Advanced showcases](https://docs.triliumnotes.org/user-guide/advanced-usage/advanced-showcases)
* [REST API](https://docs.triliumnotes.org/user-guide/advanced-usage/etapi) for automation
* Scales well in both usability and performance upwards of 100 000 notes
* Touch optimized [mobile frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for smartphones and tablets
* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support for user themes
* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown)
* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy saving of web content
* Touch optimized [mobile frontend](https://docs.triliumnotes.org/user-guide/setup/mobile-frontend) for smartphones and tablets
* Built-in [dark theme](https://docs.triliumnotes.org/user-guide/concepts/themes), support for user themes
* [Evernote](https://docs.triliumnotes.org/user-guide/concepts/import-export/evernote) and [Markdown import & export](https://docs.triliumnotes.org/user-guide/concepts/import-export/markdown)
* [Web Clipper](https://docs.triliumnotes.org/user-guide/setup/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)
* [Metrics](https://docs.triliumnotes.org/user-guide/advanced-usage/metrics), along with a Grafana Dashboard.
✨ Check out the following third-party resources/communities for more TriliumNext related goodies:
@ -116,7 +132,7 @@ Note: It is best to disable automatic updates on your server installation (see b
### Server
To install TriliumNext on your own server (including via Docker from [Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation).
To install TriliumNext on your own server (including via Docker from [Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server installation docs](https://docs.triliumnotes.org/user-guide/setup/server).
## 💻 Contribute
@ -166,16 +182,34 @@ Please view the [documentation guide](https://github.com/TriliumNext/Trilium/blo
## 👏 Shoutouts
* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - best WYSIWYG editor on the market, very interactive and listening team
* [FancyTree](https://github.com/mar10/fancytree) - very feature rich tree library without real competition. Trilium Notes would not be the same without it.
* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with support for huge amount of languages
* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library without competition. Used in [relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map)
* [zadam](https://github.com/zadam) for the original concept and implementation of the application.
* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the application icon.
* [nriver](https://github.com/nriver) for his work on internationalization.
* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas.
* [antoniotejada](https://github.com/nriver) for the original syntax highlight widget.
* [Dosu](https://dosu.dev/) for providing us with the automated responses to GitHub issues and discussions.
* [Tabler Icons](https://tabler.io/icons) for the system tray icons.
Trilium would not be possible without the technologies behind it:
* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind text notes. We are grateful for being offered a set of the premium features.
* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with support for huge amount of languages.
* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite whiteboard used in Canvas notes.
* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the mind map functionality.
* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical maps.
* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive table used in collections.
* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library without real competition.
* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. Used in [relation maps](https://docs.triliumnotes.org/user-guide/note-types/relation-map) and [link maps](https://docs.triliumnotes.org/user-guide/advanced-usage/note-map#link-map)
## 🤝 Support
Support for the TriliumNext organization will be possible in the near future. For now, you can:
- Support continued development on TriliumNext by supporting our developers: [eliandoran](https://github.com/sponsors/eliandoran) (See the [repository insights]([developers]([url](https://github.com/TriliumNext/trilium/graphs/contributors))) for a full list)
- Show a token of gratitude to the original Trilium developer ([zadam](https://github.com/sponsors/zadam)) via [PayPal](https://paypal.me/za4am) or Bitcoin (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2).
Trilium is built and maintained with [hundreds of hours of work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your support keeps it open-source, improves features, and covers costs such as hosting.
Consider supporting the main developer ([eliandoran](https://github.com/eliandoran)) of the application via:
- [GitHub Sponsors](https://github.com/sponsors/eliandoran)
- [PayPal](https://paypal.me/eliandoran)
- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran)
## 🔑 License

View File

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

View File

@ -1,7 +0,0 @@
#!/usr/bin/env bash
SCHEMA_FILE_PATH=db/schema.sql
sqlite3 ./data/document.db .schema | grep -v "sqlite_sequence" > "$SCHEMA_FILE_PATH"
echo "DB schema exported to $SCHEMA_FILE_PATH"

View File

@ -1,16 +0,0 @@
#!/usr/bin/env bash
if [[ $# -eq 0 ]] ; then
echo "Missing argument of new version"
exit 1
fi
VERSION=$1
SERIES=${VERSION:0:4}-latest
docker push zadam/trilium:$VERSION
docker push zadam/trilium:$SERIES
if [[ $1 != *"beta"* ]]; then
docker push zadam/trilium:latest
fi

View File

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

View File

@ -1,49 +0,0 @@
#!/usr/bin/env bash
set -e
if [[ $# -eq 0 ]] ; then
echo "Missing argument of new version"
exit 1
fi
if ! command -v jq &> /dev/null; then
echo "Missing command: jq"
exit 1
fi
VERSION=$1
if ! [[ ${VERSION} =~ ^[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,2}(-.+)?$ ]] ;
then
echo "Version ${VERSION} isn't in format X.Y.Z"
exit 1
fi
if ! git diff-index --quiet HEAD --; then
echo "There are uncommitted changes"
exit 1
fi
echo "Releasing Trilium $VERSION"
jq '.version = "'$VERSION'"' package.json > package.json.tmp
mv package.json.tmp package.json
git add package.json
npm run chore:update-build-info
git add src/services/build.ts
TAG=v$VERSION
echo "Committing package.json version change"
git commit -m "chore(release): $VERSION"
git push
echo "Tagging commit with $TAG"
git tag $TAG
git push origin $TAG

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.files.user-selected.read-write</key>
<true/>
</dict>
</plist>

View File

@ -1,51 +0,0 @@
import eslint from "@eslint/js";
import tseslint from "typescript-eslint";
import simpleImportSort from "eslint-plugin-simple-import-sort";
export default tseslint.config(
eslint.configs.recommended,
tseslint.configs.recommended,
// consider using rules below, once we have a full TS codebase and can be more strict
// tseslint.configs.strictTypeChecked,
// tseslint.configs.stylisticTypeChecked,
// tseslint.configs.recommendedTypeChecked,
{
languageOptions: {
parserOptions: {
projectService: true,
tsconfigRootDir: import.meta.dirname
}
}
},
{
plugins: {
"simple-import-sort": simpleImportSort
}
},
{
rules: {
// add rule overrides here
"no-undef": "off",
"no-unused-vars": "off",
"@typescript-eslint/no-unused-vars": [
"error",
{
argsIgnorePattern: "^_",
varsIgnorePattern: "^_"
}
],
"simple-import-sort/imports": "error",
"simple-import-sort/exports": "error"
}
},
{
ignores: [
"build/*",
"dist/*",
"docs/*",
"demo/*",
"src/public/app-dist/*",
"src/public/app/doc_notes/*"
]
}
);

View File

@ -1,47 +0,0 @@
import stylistic from "@stylistic/eslint-plugin";
import tsParser from "@typescript-eslint/parser";
// eslint config just for formatting rules
// potentially to be merged with the linting rules into one single config,
// once we have fixed the majority of lint errors
// Go to https://eslint.style/rules/default/${rule_without_prefix} to check the rule details
export const stylisticRules = {
"@stylistic/indent": [ "error", 4 ],
"@stylistic/quotes": [ "error", "double", { avoidEscape: true, allowTemplateLiterals: "always" } ],
"@stylistic/semi": [ "error", "always" ],
"@stylistic/quote-props": [ "error", "consistent-as-needed" ],
"@stylistic/max-len": [ "error", { code: 100 } ],
"@stylistic/comma-dangle": [ "error", "never" ],
"@stylistic/linebreak-style": [ "error", "unix" ],
"@stylistic/array-bracket-spacing": [ "error", "always" ],
"@stylistic/object-curly-spacing": [ "error", "always" ],
"@stylistic/padded-blocks": [ "error", { classes: "always" } ]
};
export default [
{
files: [ "**/*.{js,ts,mjs,cjs}" ],
languageOptions: {
parser: tsParser
},
plugins: {
"@stylistic": stylistic
},
rules: {
...stylisticRules
}
},
{
ignores: [
"build/*",
"dist/*",
"docs/*",
"demo/*",
// TriliumNextTODO: check if we want to format packages here as well - for now skipping it
"packages/*",
"src/public/app-dist/*",
"src/public/app/doc_notes/*"
]
}
];

View File

@ -1,17 +0,0 @@
import { test as setup, expect } from "@playwright/test";
const authFile = "playwright/.auth/user.json";
const ROOT_URL = "http://localhost:8082";
const LOGIN_PASSWORD = "demo1234";
// Reference: https://playwright.dev/docs/auth#basic-shared-account-in-all-tests
setup("authenticate", async ({ page }) => {
await page.goto(ROOT_URL);
await expect(page).toHaveURL(`${ROOT_URL}/login`);
await page.getByRole("textbox", { name: "Password" }).fill(LOGIN_PASSWORD);
await page.getByRole("button", { name: "Login" }).click();
await page.context().storageState({ path: authFile });
});

View File

@ -1,9 +0,0 @@
import { test, expect } from "@playwright/test";
test("Can duplicate note with broken links", async ({ page }) => {
await page.goto(`http://localhost:8082/#2VammGGdG6Ie`);
await page.locator(".tree-wrapper .fancytree-active").getByText("Note map").click({ button: "right" });
await page.getByText("Duplicate subtree").click();
await expect(page.locator(".toast-body")).toBeHidden();
await expect(page.locator(".tree-wrapper").getByText("Note map (dup)")).toBeVisible();
});

View File

@ -1,18 +0,0 @@
import { test, expect } from "@playwright/test";
test("has title", async ({ page }) => {
await page.goto("https://playwright.dev/");
// Expect a title "to contain" a substring.
await expect(page).toHaveTitle(/Playwright/);
});
test("get started link", async ({ page }) => {
await page.goto("https://playwright.dev/");
// Click the get started link.
await page.getByRole("link", { name: "Get started" }).click();
// Expects page to have a heading with the name of Installation.
await expect(page.getByRole("heading", { name: "Installation" })).toBeVisible();
});

View File

@ -1,21 +0,0 @@
import test, { expect } from "@playwright/test";
test("Native Title Bar not displayed on web", async ({ page }) => {
await page.goto("http://localhost:8082/#root/_hidden/_options/_optionsAppearance");
await expect(page.getByRole("heading", { name: "Theme" })).toBeVisible();
await expect(page.getByRole("heading", { name: "Native Title Bar (requires" })).toBeHidden();
});
test("Tray settings not displayed on web", async ({ page }) => {
await page.goto("http://localhost:8082/#root/_hidden/_options/_optionsOther");
await expect(page.getByRole("heading", { name: "Note Erasure Timeout" })).toBeVisible();
await expect(page.getByRole("heading", { name: "Tray" })).toBeHidden();
});
test("Spellcheck settings not displayed on web", async ({ page }) => {
await page.goto("http://localhost:8082/#root/_hidden/_options/_optionsSpellcheck");
await expect(page.getByRole("heading", { name: "Spell Check" })).toBeVisible();
await expect(page.getByRole("heading", { name: "Tray" })).toBeHidden();
await expect(page.getByText("These options apply only for desktop builds")).toBeVisible();
await expect(page.getByText("Enable spellcheck")).toBeHidden();
});

View File

@ -1,18 +0,0 @@
import test, { expect } from "@playwright/test";
test("Renders on desktop", async ({ page, context }) => {
await page.goto("http://localhost:8082");
await expect(page.locator(".tree")).toContainText("Trilium Integration Test");
});
test("Renders on mobile", async ({ page, context }) => {
await context.addCookies([
{
url: "http://localhost:8082",
name: "trilium-device",
value: "mobile"
}
]);
await page.goto("http://localhost:8082");
await expect(page.locator(".tree")).toContainText("Trilium Integration Test");
});

View File

@ -1,12 +0,0 @@
import { test, expect } from "@playwright/test";
const expectedVersion = "0.90.3";
test("Displays update badge when there is a version available", async ({ page }) => {
await page.goto("http://localhost:8080");
await page.getByRole("button", { name: "" }).click();
await page.getByText(`Version ${expectedVersion} is available,`).click();
const page1 = await page.waitForEvent("popup");
expect(page1.url()).toBe(`https://github.com/TriliumNext/Trilium/releases/tag/v${expectedVersion}`);
});

View File

@ -1,58 +0,0 @@
{
"main": "./electron-main.js",
"bin": {
"trilium": "src/main.js"
},
"type": "module",
"scripts": {
"server:start-safe": "cross-env TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev nodemon src/main.ts",
"server:start-no-dir": "cross-env TRILIUM_ENV=dev nodemon src/main.ts",
"server:start-test": "npm run server:switch && rimraf ./data-test && cross-env TRILIUM_DATA_DIR=./data-test TRILIUM_ENV=dev TRILIUM_PORT=9999 nodemon src/main.ts",
"server:qstart": "npm run server:switch && npm run server:start",
"server:switch": "rimraf ./node_modules/better-sqlite3 && npm install",
"electron:start-no-dir": "cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_ENV=dev TRILIUM_PORT=37742 electron --inspect=5858 .",
"electron:start-nix": "electron-rebuild --version 33.3.1 && cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev nix-shell -p electron_33 --run \"electron ./electron-main.ts --inspect=5858 .\"",
"electron:start-nix-no-dir": "electron-rebuild --version 33.3.1 && cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_ENV=dev TRILIUM_PORT=37742 nix-shell -p electron_33 --run \"electron ./electron-main.ts --inspect=5858 .\"",
"electron:start-prod-no-dir": "npm run build:prepare-dist && cross-env TRILIUM_ENV=prod electron --inspect=5858 .",
"electron:start-prod-nix": "electron-rebuild --version 33.3.1 && npm run build:prepare-dist && cross-env TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev nix-shell -p electron_33 --run \"electron ./dist/electron-main.js --inspect=5858 .\"",
"electron:start-prod-nix-no-dir": "electron-rebuild --version 33.3.1 && npm run build:prepare-dist && cross-env TRILIUM_ENV=dev nix-shell -p electron_33 --run \"electron ./dist/electron-main.js --inspect=5858 .\"",
"electron:qstart": "npm run electron:switch && npm run electron:start",
"electron:switch": "electron-rebuild",
"docs:build": "typedoc",
"test": "npm run client:test && npm run server:test",
"client:test": "cross-env TRILIUM_ENV=dev TRILIUM_DATA_DIR=./integration-tests/db TRILIUM_INTEGRATION_TEST=memory vitest --root src/public/app",
"client:coverage": "cross-env TRILIUM_ENV=dev TRILIUM_DATA_DIR=./integration-tests/db TRILIUM_INTEGRATION_TEST=memory vitest --root src/public/app --coverage",
"test:playwright": "playwright test --workers 1",
"test:integration-edit-db": "cross-env TRILIUM_INTEGRATION_TEST=edit TRILIUM_PORT=8081 TRILIUM_ENV=dev TRILIUM_DATA_DIR=./integration-tests/db nodemon src/main.ts",
"test:integration-mem-db": "cross-env nodemon src/main.ts",
"test:integration-mem-db-dev": "cross-env TRILIUM_INTEGRATION_TEST=memory TRILIUM_PORT=8082 TRILIUM_ENV=dev TRILIUM_DATA_DIR=./integration-tests/db nodemon src/main.ts",
"dev:watch-dist": "tsx ./bin/watch-dist.ts",
"dev:format-check": "eslint -c eslint.format.config.js .",
"dev:format-fix": "eslint -c eslint.format.config.js . --fix",
"dev:linter-check": "eslint .",
"dev:linter-fix": "eslint . --fix",
"chore:generate-document": "cross-env nodemon ./bin/generate_document.ts 1000",
"chore:generate-openapi": "tsx bin/generate-openapi.js"
},
"devDependencies": {
"@playwright/test": "1.55.0",
"@stylistic/eslint-plugin": "5.4.0",
"@types/express": "5.0.3",
"@types/node": "22.18.6",
"@types/yargs": "17.0.33",
"@vitest/coverage-v8": "3.2.4",
"eslint": "9.36.0",
"eslint-plugin-simple-import-sort": "12.1.1",
"esm": "3.2.25",
"jsdoc": "4.0.4",
"lorem-ipsum": "2.0.8",
"rcedit": "4.0.1",
"rimraf": "6.0.1",
"tslib": "2.8.1",
"typedoc": "0.28.13",
"typedoc-plugin-missing-exports": "4.1.0"
},
"optionalDependencies": {
"appdmg": "0.6.6"
}
}

View File

@ -1,9 +0,0 @@
import etapi from "../support/etapi.js";
/* TriliumNextTODO: port to Vitest
etapi.describeEtapi("app_info", () => {
it("get", async () => {
const appInfo = await etapi.getEtapi("app-info");
expect(appInfo.clipperProtocolVersion).toEqual("1.0");
});
});
*/

View File

@ -1,10 +0,0 @@
import etapi from "../support/etapi.js";
/* TriliumNextTODO: port to Vitest
etapi.describeEtapi("backup", () => {
it("create", async () => {
const response = await etapi.putEtapiContent("backup/etapi_test");
expect(response.status).toEqual(204);
});
});
*/

View File

@ -1,26 +0,0 @@
import etapi from "../support/etapi.js";
import fs from "fs";
import path from "path";
import { fileURLToPath } from "url";
/* TriliumNextTODO: port to Vitest
etapi.describeEtapi("import", () => {
// temporarily skip this test since test-export.zip is missing
xit("import", async () => {
const scriptDir = path.dirname(fileURLToPath(import.meta.url));
const zipFileBuffer = fs.readFileSync(path.resolve(scriptDir, "test-export.zip"));
const response = await etapi.postEtapiContent("notes/root/import", zipFileBuffer);
expect(response.status).toEqual(201);
const { note, branch } = await response.json();
expect(note.title).toEqual("test-export");
expect(branch.parentNoteId).toEqual("root");
const content = await (await etapi.getEtapiContent(`notes/${note.noteId}/content`)).text();
expect(content).toContain("test export content");
});
});
*/

View File

@ -1,103 +0,0 @@
import crypto from "crypto";
import etapi from "../support/etapi.js";
/* TriliumNextTODO: port to Vitest
etapi.describeEtapi("notes", () => {
it("create", async () => {
const { note, branch } = await etapi.postEtapi("create-note", {
parentNoteId: "root",
type: "text",
title: "Hello World!",
content: "Content",
prefix: "Custom prefix"
});
expect(note.title).toEqual("Hello World!");
expect(branch.parentNoteId).toEqual("root");
expect(branch.prefix).toEqual("Custom prefix");
const rNote = await etapi.getEtapi(`notes/${note.noteId}`);
expect(rNote.title).toEqual("Hello World!");
const rContent = await (await etapi.getEtapiContent(`notes/${note.noteId}/content`)).text();
expect(rContent).toEqual("Content");
const rBranch = await etapi.getEtapi(`branches/${branch.branchId}`);
expect(rBranch.parentNoteId).toEqual("root");
expect(rBranch.prefix).toEqual("Custom prefix");
});
it("patch", async () => {
const { note } = await etapi.postEtapi("create-note", {
parentNoteId: "root",
type: "text",
title: "Hello World!",
content: "Content"
});
await etapi.patchEtapi(`notes/${note.noteId}`, {
title: "new title",
type: "code",
mime: "text/apl",
dateCreated: "2000-01-01 12:34:56.999+0200",
utcDateCreated: "2000-01-01 10:34:56.999Z"
});
const rNote = await etapi.getEtapi(`notes/${note.noteId}`);
expect(rNote.title).toEqual("new title");
expect(rNote.type).toEqual("code");
expect(rNote.mime).toEqual("text/apl");
expect(rNote.dateCreated).toEqual("2000-01-01 12:34:56.999+0200");
expect(rNote.utcDateCreated).toEqual("2000-01-01 10:34:56.999Z");
});
it("update content", async () => {
const { note } = await etapi.postEtapi("create-note", {
parentNoteId: "root",
type: "text",
title: "Hello World!",
content: "Content"
});
await etapi.putEtapiContent(`notes/${note.noteId}/content`, "new content");
const rContent = await (await etapi.getEtapiContent(`notes/${note.noteId}/content`)).text();
expect(rContent).toEqual("new content");
});
it("create / update binary content", async () => {
const { note } = await etapi.postEtapi("create-note", {
parentNoteId: "root",
type: "file",
title: "Hello World!",
content: "ZZZ"
});
const updatedContent = crypto.randomBytes(16);
await etapi.putEtapiContent(`notes/${note.noteId}/content`, updatedContent);
const rContent = await (await etapi.getEtapiContent(`notes/${note.noteId}/content`)).arrayBuffer();
expect(Buffer.from(new Uint8Array(rContent))).toEqual(updatedContent);
});
it("delete note", async () => {
const { note } = await etapi.postEtapi("create-note", {
parentNoteId: "root",
type: "text",
title: "Hello World!",
content: "Content"
});
await etapi.deleteEtapi(`notes/${note.noteId}`);
const resp = await etapi.getEtapiResponse(`notes/${note.noteId}`);
expect(resp.status).toEqual(404);
const error = await resp.json();
expect(error.status).toEqual(404);
expect(error.code).toEqual("NOTE_NOT_FOUND");
expect(error.message).toEqual(`Note '${note.noteId}' not found.`);
});
});
*/

View File

@ -1,155 +0,0 @@
import type child_process from "child_process";
import { describe, beforeAll, afterAll } from "vitest";
let etapiAuthToken: string | undefined;
const getEtapiAuthorizationHeader = (): string => "Basic " + Buffer.from(`etapi:${etapiAuthToken}`).toString("base64");
const PORT: string = "9999";
const HOST: string = "http://localhost:" + PORT;
type SpecDefinitionsFunc = () => void;
function describeEtapi(description: string, specDefinitions: SpecDefinitionsFunc): void {
describe(description, () => {
let appProcess: ReturnType<typeof child_process.spawn>;
beforeAll(async () => {});
afterAll(() => {});
specDefinitions();
});
}
async function getEtapiResponse(url: string): Promise<Response> {
return await fetch(`${HOST}/etapi/${url}`, {
method: "GET",
headers: {
Authorization: getEtapiAuthorizationHeader()
}
});
}
async function getEtapi(url: string): Promise<any> {
const response = await getEtapiResponse(url);
return await processEtapiResponse(response);
}
async function getEtapiContent(url: string): Promise<Response> {
const response = await fetch(`${HOST}/etapi/${url}`, {
method: "GET",
headers: {
Authorization: getEtapiAuthorizationHeader()
}
});
checkStatus(response);
return response;
}
async function postEtapi(url: string, data: Record<string, unknown> = {}): Promise<any> {
const response = await fetch(`${HOST}/etapi/${url}`, {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: getEtapiAuthorizationHeader()
},
body: JSON.stringify(data)
});
return await processEtapiResponse(response);
}
async function postEtapiContent(url: string, data: BodyInit): Promise<Response> {
const response = await fetch(`${HOST}/etapi/${url}`, {
method: "POST",
headers: {
"Content-Type": "application/octet-stream",
Authorization: getEtapiAuthorizationHeader()
},
body: data
});
checkStatus(response);
return response;
}
async function putEtapi(url: string, data: Record<string, unknown> = {}): Promise<any> {
const response = await fetch(`${HOST}/etapi/${url}`, {
method: "PUT",
headers: {
"Content-Type": "application/json",
Authorization: getEtapiAuthorizationHeader()
},
body: JSON.stringify(data)
});
return await processEtapiResponse(response);
}
async function putEtapiContent(url: string, data?: BodyInit): Promise<Response> {
const response = await fetch(`${HOST}/etapi/${url}`, {
method: "PUT",
headers: {
"Content-Type": "application/octet-stream",
Authorization: getEtapiAuthorizationHeader()
},
body: data
});
checkStatus(response);
return response;
}
async function patchEtapi(url: string, data: Record<string, unknown> = {}): Promise<any> {
const response = await fetch(`${HOST}/etapi/${url}`, {
method: "PATCH",
headers: {
"Content-Type": "application/json",
Authorization: getEtapiAuthorizationHeader()
},
body: JSON.stringify(data)
});
return await processEtapiResponse(response);
}
async function deleteEtapi(url: string): Promise<any> {
const response = await fetch(`${HOST}/etapi/${url}`, {
method: "DELETE",
headers: {
Authorization: getEtapiAuthorizationHeader()
}
});
return await processEtapiResponse(response);
}
async function processEtapiResponse(response: Response): Promise<any> {
const text = await response.text();
if (response.status < 200 || response.status >= 300) {
throw new Error(`ETAPI error ${response.status}: ${text}`);
}
return text?.trim() ? JSON.parse(text) : null;
}
function checkStatus(response: Response): void {
if (response.status < 200 || response.status >= 300) {
throw new Error(`ETAPI error ${response.status}`);
}
}
export default {
describeEtapi,
getEtapi,
getEtapiResponse,
getEtapiContent,
postEtapi,
postEtapiContent,
putEtapi,
putEtapiContent,
patchEtapi,
deleteEtapi
};

View File

@ -1,22 +0,0 @@
{
"compilerOptions": {
"module": "NodeNext",
"declaration": false,
"sourceMap": true,
"outDir": "./build",
"strict": true,
"noImplicitAny": true,
"resolveJsonModule": true,
"lib": ["ES2023"],
"downlevelIteration": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowJs": true
},
"include": ["./src/public/app/**/*"],
"files": [
"./src/public/app/types.d.ts",
"./src/public/app/types-lib.d.ts",
"./src/types.d.ts"
]
}

View File

@ -1,15 +0,0 @@
{
"entryPoints": [
"src/services/backend_script_entrypoint.ts",
"src/public/app/services/frontend_script_entrypoint.ts"
],
"plugin": [
"typedoc-plugin-missing-exports"
],
"outputs": [
{
"name": "html",
"path": "./docs/Script API"
}
]
}

View File

@ -0,0 +1,22 @@
{
"name": "build-docs",
"version": "1.0.0",
"description": "",
"main": "src/main.ts",
"scripts": {
"start": "tsx ."
},
"keywords": [],
"author": "Elian Doran <contact@eliandoran.me>",
"license": "AGPL-3.0-only",
"packageManager": "pnpm@10.24.0",
"devDependencies": {
"@redocly/cli": "2.12.3",
"archiver": "7.0.1",
"fs-extra": "11.3.2",
"react": "19.2.1",
"react-dom": "19.2.1",
"typedoc": "0.28.15",
"typedoc-plugin-missing-exports": "4.1.2"
}
}

View File

@ -0,0 +1,36 @@
/**
* The backend script API is accessible to code notes with the "JS (backend)" language.
*
* The entire API is exposed as a single global: {@link api}
*
* @module Backend Script API
*/
/**
* This file creates the entrypoint for TypeDoc that simulates the context from within a
* script note on the server side.
*
* Make sure to keep in line with backend's `script_context.ts`.
*/
export type { default as AbstractBeccaEntity } from "../../server/src/becca/entities/abstract_becca_entity.js";
export type { default as BAttachment } from "../../server/src/becca/entities/battachment.js";
export type { default as BAttribute } from "../../server/src/becca/entities/battribute.js";
export type { default as BBranch } from "../../server/src/becca/entities/bbranch.js";
export type { default as BEtapiToken } from "../../server/src/becca/entities/betapi_token.js";
export type { BNote };
export type { default as BOption } from "../../server/src/becca/entities/boption.js";
export type { default as BRecentNote } from "../../server/src/becca/entities/brecent_note.js";
export type { default as BRevision } from "../../server/src/becca/entities/brevision.js";
import BNote from "../../server/src/becca/entities/bnote.js";
import BackendScriptApi, { type Api } from "../../server/src/services/backend_script_api.js";
export type { Api };
const fakeNote = new BNote();
/**
* The `api` global variable allows access to the backend script API, which is documented in {@link Api}.
*/
export const api: Api = new BackendScriptApi(fakeNote, {});

View File

@ -0,0 +1,147 @@
process.env.TRILIUM_INTEGRATION_TEST = "memory-no-store";
process.env.TRILIUM_RESOURCE_DIR = "../server/src";
process.env.NODE_ENV = "development";
import cls from "@triliumnext/server/src/services/cls.js";
import { dirname, join, resolve } from "path";
import * as fs from "fs/promises";
import * as fsExtra from "fs-extra";
import archiver from "archiver";
import { WriteStream } from "fs";
import { execSync } from "child_process";
import BuildContext from "./context.js";
const DOCS_ROOT = "../../../docs";
const OUTPUT_DIR = "../../site";
async function importAndExportDocs(sourcePath: string, outputSubDir: string) {
const note = await importData(sourcePath);
// Use a meaningful name for the temporary zip file
const zipName = outputSubDir || "user-guide";
const zipFilePath = `output-${zipName}.zip`;
try {
const { exportToZip } = (await import("@triliumnext/server/src/services/export/zip.js")).default;
const branch = note.getParentBranches()[0];
const taskContext = new (await import("@triliumnext/server/src/services/task_context.js")).default(
"no-progress-reporting",
"export",
null
);
const fileOutputStream = fsExtra.createWriteStream(zipFilePath);
await exportToZip(taskContext, branch, "share", fileOutputStream);
await waitForStreamToFinish(fileOutputStream);
// Output to root directory if outputSubDir is empty, otherwise to subdirectory
const outputPath = outputSubDir ? join(OUTPUT_DIR, outputSubDir) : OUTPUT_DIR;
await extractZip(zipFilePath, outputPath);
} finally {
if (await fsExtra.exists(zipFilePath)) {
await fsExtra.rm(zipFilePath);
}
}
}
async function buildDocsInner() {
const i18n = await import("@triliumnext/server/src/services/i18n.js");
await i18n.initializeTranslations();
const sqlInit = (await import("../../server/src/services/sql_init.js")).default;
await sqlInit.createInitialDatabase(true);
// Wait for becca to be loaded before importing data
const beccaLoader = await import("../../server/src/becca/becca_loader.js");
await beccaLoader.beccaLoaded;
// Build User Guide
console.log("Building User Guide...");
await importAndExportDocs(join(__dirname, DOCS_ROOT, "User Guide"), "user-guide");
// Build Developer Guide
console.log("Building Developer Guide...");
await importAndExportDocs(join(__dirname, DOCS_ROOT, "Developer Guide"), "developer-guide");
// Copy favicon.
await fs.copyFile("../../apps/website/src/assets/favicon.ico", join(OUTPUT_DIR, "favicon.ico"));
await fs.copyFile("../../apps/website/src/assets/favicon.ico", join(OUTPUT_DIR, "user-guide", "favicon.ico"));
await fs.copyFile("../../apps/website/src/assets/favicon.ico", join(OUTPUT_DIR, "developer-guide", "favicon.ico"));
console.log("Documentation built successfully!");
}
export async function importData(path: string) {
const buffer = await createImportZip(path);
const importService = (await import("../../server/src/services/import/zip.js")).default;
const TaskContext = (await import("../../server/src/services/task_context.js")).default;
const context = new TaskContext("no-progress-reporting", "importNotes", null);
const becca = (await import("../../server/src/becca/becca.js")).default;
const rootNote = becca.getRoot();
if (!rootNote) {
throw new Error("Missing root note for import.");
}
return await importService.importZip(context, buffer, rootNote, {
preserveIds: true
});
}
async function createImportZip(path: string) {
const inputFile = "input.zip";
const archive = archiver("zip", {
zlib: { level: 0 }
});
console.log("Archive path is ", resolve(path))
archive.directory(path, "/");
const outputStream = fsExtra.createWriteStream(inputFile);
archive.pipe(outputStream);
archive.finalize();
await waitForStreamToFinish(outputStream);
try {
return await fsExtra.readFile(inputFile);
} finally {
await fsExtra.rm(inputFile);
}
}
function waitForStreamToFinish(stream: WriteStream) {
return new Promise<void>((res, rej) => {
stream.on("finish", () => res());
stream.on("error", (err) => rej(err));
});
}
export async function extractZip(zipFilePath: string, outputPath: string, ignoredFiles?: Set<string>) {
const { readZipFile, readContent } = (await import("@triliumnext/server/src/services/import/zip.js"));
await readZipFile(await fs.readFile(zipFilePath), async (zip, entry) => {
// We ignore directories since they can appear out of order anyway.
if (!entry.fileName.endsWith("/") && !ignoredFiles?.has(entry.fileName)) {
const destPath = join(outputPath, entry.fileName);
const fileContent = await readContent(zip, entry);
await fsExtra.mkdirs(dirname(destPath));
await fs.writeFile(destPath, fileContent);
}
zip.readEntry();
});
}
export default async function buildDocs({ gitRootDir }: BuildContext) {
// Build the share theme.
execSync(`pnpm run --filter share-theme build`, {
stdio: "inherit",
cwd: gitRootDir
});
// Trigger the actual build.
await new Promise((res, rej) => {
cls.init(() => {
buildDocsInner()
.catch(rej)
.then(res);
});
});
}

View File

@ -0,0 +1,4 @@
export default interface BuildContext {
gitRootDir: string;
baseDir: string;
}

View File

@ -0,0 +1,28 @@
/**
* The front script API is accessible to code notes with the "JS (frontend)" language.
*
* The entire API is exposed as a single global: {@link api}
*
* @module Frontend Script API
*/
/**
* This file creates the entrypoint for TypeDoc that simulates the context from within a
* script note.
*
* Make sure to keep in line with frontend's `script_context.ts`.
*/
export type { default as BasicWidget } from "../../client/src/widgets/basic_widget.js";
export type { default as FAttachment } from "../../client/src/entities/fattachment.js";
export type { default as FAttribute } from "../../client/src/entities/fattribute.js";
export type { default as FBranch } from "../../client/src/entities/fbranch.js";
export type { default as FNote } from "../../client/src/entities/fnote.js";
export type { Api } from "../../client/src/services/frontend_script_api.js";
export type { default as NoteContextAwareWidget } from "../../client/src/widgets/note_context_aware_widget.js";
export type { default as RightPanelWidget } from "../../client/src/widgets/right_panel_widget.js";
import FrontendScriptApi, { type Api } from "../../client/src/services/frontend_script_api.js";
//@ts-expect-error
export const api: Api = new FrontendScriptApi();

View File

@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0; url=/user-guide">
<title>Redirecting...</title>
</head>
<body>
<p>If you are not redirected automatically, <a href="/user-guide">click here</a>.</p>
</body>
</html>

View File

@ -0,0 +1,30 @@
import { join } from "path";
import BuildContext from "./context";
import buildSwagger from "./swagger";
import { cpSync, existsSync, mkdirSync, rmSync } from "fs";
import buildDocs from "./build-docs";
import buildScriptApi from "./script-api";
const context: BuildContext = {
gitRootDir: join(__dirname, "../../../"),
baseDir: join(__dirname, "../../../site")
};
async function main() {
// Clean input dir.
if (existsSync(context.baseDir)) {
rmSync(context.baseDir, { recursive: true });
}
mkdirSync(context.baseDir);
// Start building.
await buildDocs(context);
buildSwagger(context);
buildScriptApi(context);
// Copy index and 404 files.
cpSync(join(__dirname, "index.html"), join(context.baseDir, "index.html"));
cpSync(join(context.baseDir, "user-guide/404.html"), join(context.baseDir, "404.html"));
}
main();

View File

@ -0,0 +1,15 @@
import { execSync } from "child_process";
import BuildContext from "./context";
import { join } from "path";
export default function buildScriptApi({ baseDir, gitRootDir }: BuildContext) {
// Generate types
execSync(`pnpm typecheck`, { stdio: "inherit", cwd: gitRootDir });
for (const config of [ "backend", "frontend" ]) {
const outDir = join(baseDir, "script-api", config);
execSync(`pnpm typedoc --options typedoc.${config}.json --html "${outDir}"`, {
stdio: "inherit"
});
}
}

View File

@ -0,0 +1,32 @@
import BuildContext from "./context";
import { join } from "path";
import { execSync } from "child_process";
import { mkdirSync } from "fs";
interface BuildInfo {
specPath: string;
outDir: string;
}
const DIR_PREFIX = "rest-api";
const buildInfos: BuildInfo[] = [
{
// Paths are relative to Git root.
specPath: "apps/server/internal.openapi.yaml",
outDir: `${DIR_PREFIX}/internal`
},
{
specPath: "apps/server/etapi.openapi.yaml",
outDir: `${DIR_PREFIX}/etapi`
}
];
export default function buildSwagger({ baseDir, gitRootDir }: BuildContext) {
for (const { specPath, outDir } of buildInfos) {
const absSpecPath = join(gitRootDir, specPath);
const targetDir = join(baseDir, outDir);
mkdirSync(targetDir, { recursive: true });
execSync(`pnpm redocly build-docs ${absSpecPath} -o ${targetDir}/index.html`, { stdio: "inherit" });
}
}

View File

@ -0,0 +1,36 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"module": "ESNext",
"moduleResolution": "bundler",
"target": "ES2020",
"outDir": "dist",
"strict": false,
"types": [
"node",
"express"
],
"rootDir": "src",
"tsBuildInfoFile": "dist/tsconfig.app.tsbuildinfo"
},
"include": [
"src/**/*.ts",
"../server/src/*.d.ts"
],
"exclude": [
"eslint.config.js",
"eslint.config.cjs",
"eslint.config.mjs"
],
"references": [
{
"path": "../server/tsconfig.app.json"
},
{
"path": "../desktop/tsconfig.app.json"
},
{
"path": "../client/tsconfig.app.json"
}
]
}

View File

@ -0,0 +1,15 @@
{
"extends": "../../tsconfig.base.json",
"include": [],
"references": [
{
"path": "../server"
},
{
"path": "../client"
},
{
"path": "./tsconfig.app.json"
}
]
}

View File

@ -0,0 +1,10 @@
{
"$schema": "https://typedoc.org/schema.json",
"name": "Trilium Backend API",
"entryPoints": [
"src/backend_script_entrypoint.ts"
],
"plugin": [
"typedoc-plugin-missing-exports"
]
}

View File

@ -0,0 +1,10 @@
{
"$schema": "https://typedoc.org/schema.json",
"name": "Trilium Frontend API",
"entryPoints": [
"src/frontend_script_entrypoint.ts"
],
"plugin": [
"typedoc-plugin-missing-exports"
]
}

View File

@ -1,5 +0,0 @@
import baseConfig from "../../eslint.config.mjs";
export default [
...baseConfig
];

View File

@ -1,21 +1,21 @@
{
"name": "@triliumnext/client",
"version": "0.99.0",
"version": "0.100.0",
"description": "JQuery-based client for TriliumNext, used for both web and desktop (via Electron)",
"private": true,
"license": "AGPL-3.0-only",
"author": {
"name": "Trilium Notes Team",
"email": "contact@eliandoran.me",
"url": "https://github.com/TriliumNext/Notes"
"url": "https://github.com/TriliumNext/Trilium"
},
"scripts": {
"build": "cross-env NODE_OPTIONS=--max-old-space-size=4096 vite build",
"test": "vitest",
"coverage": "vitest --coverage",
"circular-deps": "dpdm -T src/**/*.ts --tree=false --warning=false --skip-dynamic-imports=circular"
},
"dependencies": {
"@eslint/js": "9.36.0",
"@excalidraw/excalidraw": "0.18.0",
"@fullcalendar/core": "6.1.19",
"@fullcalendar/daygrid": "6.1.19",
@ -25,40 +25,43 @@
"@fullcalendar/timegrid": "6.1.19",
"@maplibre/maplibre-gl-leaflet": "0.1.3",
"@mermaid-js/layout-elk": "0.2.0",
"@mind-elixir/node-menu": "5.0.0",
"@mind-elixir/node-menu": "5.0.1",
"@popperjs/core": "2.11.8",
"@preact/signals": "2.5.1",
"@triliumnext/ckeditor5": "workspace:*",
"@triliumnext/codemirror": "workspace:*",
"@triliumnext/commons": "workspace:*",
"@triliumnext/highlightjs": "workspace:*",
"@triliumnext/share-theme": "workspace:*",
"@triliumnext/split.js": "workspace:*",
"@zumer/snapdom": "2.0.1",
"autocomplete.js": "0.38.1",
"bootstrap": "5.3.8",
"boxicons": "2.1.4",
"dayjs": "1.11.18",
"dayjs-plugin-utc": "0.1.2",
"debounce": "2.2.0",
"clsx": "2.1.1",
"color": "5.0.3",
"debounce": "3.0.0",
"draggabilly": "3.0.0",
"force-graph": "1.51.0",
"globals": "16.4.0",
"i18next": "25.5.2",
"globals": "16.5.0",
"i18next": "25.7.1",
"i18next-http-backend": "3.0.2",
"jquery": "3.7.1",
"jquery.fancytree": "2.38.5",
"jsplumb": "2.15.6",
"katex": "0.16.22",
"katex": "0.16.27",
"knockout": "3.5.1",
"leaflet": "1.9.4",
"leaflet-gpx": "2.2.0",
"mark.js": "8.11.1",
"marked": "16.3.0",
"mermaid": "11.12.0",
"mind-elixir": "5.2.0",
"marked": "17.0.1",
"mermaid": "11.12.2",
"mind-elixir": "5.3.7",
"normalize.css": "8.0.1",
"panzoom": "9.4.3",
"preact": "10.27.2",
"react-i18next": "15.7.3",
"split.js": "1.6.5",
"preact": "10.28.0",
"react-i18next": "16.4.0",
"reveal.js": "5.2.1",
"svg-pan-zoom": "3.6.2",
"tabulator-tables": "6.3.1",
"vanilla-js-wheel-zoom": "9.0.4"
@ -68,13 +71,14 @@
"@preact/preset-vite": "2.10.2",
"@types/bootstrap": "5.2.10",
"@types/jquery": "3.5.33",
"@types/leaflet": "1.9.20",
"@types/leaflet": "1.9.21",
"@types/leaflet-gpx": "1.3.8",
"@types/mark.js": "8.11.12",
"@types/tabulator-tables": "6.2.11",
"@types/reveal.js": "5.2.2",
"@types/tabulator-tables": "6.3.0",
"copy-webpack-plugin": "13.0.1",
"happy-dom": "18.0.1",
"happy-dom": "20.0.11",
"script-loader": "0.7.2",
"vite-plugin-static-copy": "3.1.2"
"vite-plugin-static-copy": "3.1.4"
}
}

View File

@ -13,7 +13,6 @@ import MainTreeExecutors from "./main_tree_executors.js";
import toast from "../services/toast.js";
import ShortcutComponent from "./shortcut_component.js";
import { t, initLocale } from "../services/i18n.js";
import type NoteDetailWidget from "../widgets/note_detail.js";
import type { ResolveOptions } from "../widgets/dialogs/delete_notes.js";
import type { PromptDialogOptions } from "../widgets/dialogs/prompt.js";
import type { ConfirmWithMessageOptions, ConfirmWithTitleOptions } from "../widgets/dialogs/confirm.js";
@ -21,8 +20,6 @@ import type LoadResults from "../services/load_results.js";
import type { Attribute } from "../services/attribute_parser.js";
import type NoteTreeWidget from "../widgets/note_tree.js";
import type { default as NoteContext, GetTextEditorCallback } from "./note_context.js";
import type TypeWidget from "../widgets/type_widgets/type_widget.js";
import type EditableTextTypeWidget from "../widgets/type_widgets/editable_text.js";
import type { NativeImage, TouchBar } from "electron";
import TouchBarComponent from "./touch_bar.js";
import type { CKTextEditor } from "@triliumnext/ckeditor5";
@ -33,6 +30,11 @@ import { ColumnComponent } from "tabulator-tables";
import { ChooseNoteTypeCallback } from "../widgets/dialogs/note_type_chooser.jsx";
import type RootContainer from "../widgets/containers/root_container.js";
import { SqlExecuteResults } from "@triliumnext/commons";
import { AddLinkOpts } from "../widgets/dialogs/add_link.jsx";
import { IncludeNoteOpts } from "../widgets/dialogs/include_note.jsx";
import { ReactWrappedWidget } from "../widgets/basic_widget.js";
import type { MarkdownImportOpts } from "../widgets/dialogs/markdown_import.jsx";
import type { InfoProps } from "../widgets/dialogs/info.jsx";
interface Layout {
getRootWidget: (appContext: AppContext) => RootContainer;
@ -123,7 +125,7 @@ export type CommandMappings = {
isNewNote?: boolean;
};
showPromptDialog: PromptDialogOptions;
showInfoDialog: ConfirmWithMessageOptions;
showInfoDialog: InfoProps;
showConfirmDialog: ConfirmWithMessageOptions;
showRecentChanges: CommandData & { ancestorNoteId: string };
showImportDialog: CommandData & { noteId: string };
@ -199,7 +201,7 @@ export type CommandMappings = {
resetLauncher: ContextMenuCommandData;
executeInActiveNoteDetailWidget: CommandData & {
callback: (value: NoteDetailWidget | PromiseLike<NoteDetailWidget>) => void;
callback: (value: ReactWrappedWidget) => void;
};
executeWithTextEditor: CommandData &
ExecuteCommandData<CKTextEditor> & {
@ -211,19 +213,19 @@ export type CommandMappings = {
* Generally should not be invoked manually, as it is used by {@link NoteContext.getContentElement}.
*/
executeWithContentElement: CommandData & ExecuteCommandData<JQuery<HTMLElement>>;
executeWithTypeWidget: CommandData & ExecuteCommandData<TypeWidget | null>;
executeWithTypeWidget: CommandData & ExecuteCommandData<ReactWrappedWidget | null>;
addTextToActiveEditor: CommandData & {
text: string;
};
/** Works only in the electron context menu. */
replaceMisspelling: CommandData;
importMarkdownInline: CommandData;
showPasswordNotSet: CommandData;
showProtectedSessionPasswordDialog: CommandData;
showUploadAttachmentsDialog: CommandData & { noteId: string };
showIncludeNoteDialog: CommandData & { textTypeWidget: EditableTextTypeWidget };
showAddLinkDialog: CommandData & { textTypeWidget: EditableTextTypeWidget, text: string };
showIncludeNoteDialog: CommandData & IncludeNoteOpts;
showAddLinkDialog: CommandData & AddLinkOpts;
showPasteMarkdownDialog: CommandData & MarkdownImportOpts;
closeProtectedSessionPasswordDialog: CommandData;
copyImageReferenceToClipboard: CommandData;
copyImageToClipboard: CommandData;
@ -270,6 +272,7 @@ export type CommandMappings = {
closeThisNoteSplit: CommandData;
moveThisNoteSplit: CommandData & { isMovingLeft: boolean };
jumpToNote: CommandData;
openTodayNote: CommandData;
commandPalette: CommandData;
// Keyboard shortcuts
@ -327,6 +330,7 @@ export type CommandMappings = {
exportAsPdf: CommandData;
openNoteExternally: CommandData;
openNoteCustom: CommandData;
openNoteOnServer: CommandData;
renderActiveNote: CommandData;
unhoist: CommandData;
reloadFrontendApp: CommandData;
@ -442,6 +446,7 @@ type EventMappings = {
error: string;
};
searchRefreshed: { ntxId?: string | null };
textEditorRefreshed: { ntxId?: string | null, editor: CKTextEditor };
hoistedNoteChanged: {
noteId: string;
ntxId: string | null;
@ -483,14 +488,9 @@ type EventMappings = {
relationMapResetPanZoom: { ntxId: string | null | undefined };
relationMapResetZoomIn: { ntxId: string | null | undefined };
relationMapResetZoomOut: { ntxId: string | null | undefined };
activeNoteChanged: {};
showAddLinkDialog: {
textTypeWidget: EditableTextTypeWidget;
text: string;
};
showIncludeDialog: {
textTypeWidget: EditableTextTypeWidget;
};
activeNoteChanged: {ntxId: string | null | undefined};
showAddLinkDialog: AddLinkOpts;
showIncludeDialog: IncludeNoteOpts;
openBulkActionsDialog: {
selectedOrActiveNoteIds: string[];
};
@ -498,6 +498,10 @@ type EventMappings = {
noteIds: string[];
};
refreshData: { ntxId: string | null | undefined };
contentSafeMarginChanged: {
top: number;
noteContext: NoteContext;
}
};
export type EventListener<T extends EventNames> = {
@ -665,6 +669,10 @@ export class AppContext extends Component {
this.beforeUnloadListeners.push(obj);
}
}
removeBeforeUnloadListener(listener: (() => boolean)) {
this.beforeUnloadListeners = this.beforeUnloadListeners.filter(l => l !== listener);
}
}
const appContext = new AppContext(window.glob.isMainWindow);

View File

@ -159,6 +159,16 @@ export default class Entrypoints extends Component {
this.openInWindowCommand({ notePath: "", hoistedNoteId: "root" });
}
async openTodayNoteCommand() {
const todayNote = await dateNoteService.getTodayNote();
if (!todayNote) {
console.warn("Missing today note.");
return;
}
await appContext.tabManager.openInSameTab(todayNote.noteId);
}
async runActiveNoteCommand() {
const noteContext = appContext.tabManager.getActiveContext();
if (!noteContext) {

View File

@ -9,10 +9,10 @@ import hoistedNoteService from "../services/hoisted_note.js";
import options from "../services/options.js";
import type { ViewScope } from "../services/link.js";
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";
import { ReactWrappedWidget } from "../widgets/basic_widget.js";
export interface SetNoteOpts {
triggerSwitchEvent?: unknown;
@ -321,14 +321,20 @@ class NoteContext extends Component implements EventListener<"entitiesReloaded">
return false;
}
if (note.type === "search") {
return false;
}
if (!["default", "contextual-help"].includes(this.viewScope?.viewMode ?? "")) {
return false;
}
// Collections must always display a note list, even if no children.
const viewType = note.getLabelValue("viewType") ?? "grid";
if (!["list", "grid"].includes(viewType)) {
return true;
if (note.type === "book") {
const viewType = note.getLabelValue("viewType") ?? "grid";
if (!["list", "grid"].includes(viewType)) {
return true;
}
}
if (!note.hasChildren()) {
@ -395,7 +401,7 @@ class NoteContext extends Component implements EventListener<"entitiesReloaded">
async getTypeWidget() {
return this.timeout(
new Promise<TypeWidget | null>((resolve) =>
new Promise<ReactWrappedWidget | null>((resolve) =>
appContext.triggerCommand("executeWithTypeWidget", {
resolve,
ntxId: this.ntxId
@ -438,4 +444,22 @@ class NoteContext extends Component implements EventListener<"entitiesReloaded">
}
}
export function openInCurrentNoteContext(evt: MouseEvent | JQuery.ClickEvent | JQuery.MouseDownEvent | React.PointerEvent<HTMLCanvasElement> | null, notePath: string, viewScope?: ViewScope) {
const ntxId = $(evt?.target as Element)
.closest("[data-ntx-id]")
.attr("data-ntx-id");
const noteContext = ntxId ? appContext.tabManager.getNoteContextById(ntxId) : appContext.tabManager.getActiveContext();
if (noteContext) {
noteContext.setNote(notePath, { viewScope }).then(() => {
if (noteContext !== appContext.tabManager.getActiveContext()) {
appContext.tabManager.activateNoteContext(noteContext.ntxId);
}
});
} else {
appContext.tabManager.openContextWithNote(notePath, { viewScope, activate: true });
}
}
export default NoteContext;

View File

@ -7,7 +7,6 @@ import protectedSessionService from "../services/protected_session.js";
import options from "../services/options.js";
import froca from "../services/froca.js";
import utils from "../services/utils.js";
import LlmChatPanel from "../widgets/llm_chat_panel.js";
import toastService from "../services/toast.js";
import noteCreateService from "../services/note_create.js";
@ -67,6 +66,13 @@ export default class RootCommandExecutor extends Component {
}
}
openNoteOnServerCommand() {
const noteId = appContext.tabManager.getActiveContextNoteId();
if (noteId) {
openService.openNoteOnServer(noteId);
}
}
enterProtectedSessionCommand() {
protectedSessionService.enterProtectedSession();
}
@ -171,7 +177,8 @@ export default class RootCommandExecutor extends Component {
}
toggleTrayCommand() {
if (!utils.isElectron()) return;
if (!utils.isElectron() || options.is("disableTray")) return;
const { BrowserWindow } = utils.dynamicRequire("@electron/remote");
const windows = BrowserWindow.getAllWindows() as Electron.BaseWindow[];
const isVisible = windows.every((w) => w.isVisible());

View File

@ -165,7 +165,7 @@ export default class TabManager extends Component {
const activeNoteContext = this.getActiveContext();
this.updateDocumentTitle(activeNoteContext);
this.triggerEvent("activeNoteChanged", {}); // trigger this even in on popstate event
this.triggerEvent("activeNoteChanged", {ntxId:activeNoteContext?.ntxId}); // trigger this even in on popstate event
}
calculateHash(): string {
@ -265,6 +265,7 @@ export default class TabManager extends Component {
mainNtxId: string | null = null
): Promise<NoteContext> {
const noteContext = new NoteContext(ntxId, hoistedNoteId, mainNtxId);
noteContext.setEmpty();
const existingNoteContext = this.children.find((nc) => nc.ntxId === noteContext.ntxId);
@ -646,7 +647,32 @@ export default class TabManager extends Component {
...this.noteContexts.slice(-noteContexts.length),
...this.noteContexts.slice(lastClosedTab.position, -noteContexts.length)
];
this.noteContextReorderEvent({ ntxIdsInOrder: ntxsInOrder.map((nc) => nc.ntxId).filter((id) => id !== null) });
// Update mainNtxId if the restored pane is the main pane in the split pane
const { oldMainNtxId, newMainNtxId } = (() => {
if (noteContexts.length !== 1) {
return { oldMainNtxId: undefined, newMainNtxId: undefined };
}
const mainNtxId = noteContexts[0]?.mainNtxId;
const index = this.noteContexts.findIndex(c => c.ntxId === mainNtxId);
// No need to update if the restored position is after mainNtxId
if (index === -1 || lastClosedTab.position > index) {
return { oldMainNtxId: undefined, newMainNtxId: undefined };
}
return {
oldMainNtxId: this.noteContexts[index].ntxId ?? undefined,
newMainNtxId: noteContexts[0]?.ntxId ?? undefined
};
})();
this.triggerCommand("noteContextReorder", {
ntxIdsInOrder: ntxsInOrder.map((nc) => nc.ntxId).filter((id) => id !== null),
oldMainNtxId,
newMainNtxId
});
let mainNtx = noteContexts.find((nc) => nc.isMainContext());
if (mainNtx) {

View File

@ -10,7 +10,6 @@ import { t } from "./services/i18n.js";
import options from "./services/options.js";
import type ElectronRemote from "@electron/remote";
import type Electron from "electron";
import "bootstrap/dist/css/bootstrap.min.css";
import "boxicons/css/boxicons.min.css";
import "autocomplete.js/index_jquery.js";
@ -23,6 +22,7 @@ bundleService.getWidgetBundlesByParent().then(async (widgetBundles) => {
appContext.setLayout(new DesktopLayout(widgetBundles));
appContext.start().catch((e) => {
toastService.showPersistent({
id: "critical-error",
title: t("toast.critical-error.title"),
icon: "alert",
message: t("toast.critical-error.message", { message: e.message })
@ -59,10 +59,14 @@ function initOnElectron() {
initDarkOrLightMode(style);
initTransparencyEffects(style, currentWindow);
initFullScreenDetection(currentWindow);
if (options.get("nativeTitleBarVisible") !== "true") {
initTitleBarButtons(style, currentWindow);
}
// Clear navigation history on frontend refresh.
currentWindow.webContents.navigationHistory.clear();
}
function initTitleBarButtons(style: CSSStyleDeclaration, currentWindow: Electron.BrowserWindow) {
@ -88,6 +92,11 @@ function initTitleBarButtons(style: CSSStyleDeclaration, currentWindow: Electron
}
}
function initFullScreenDetection(currentWindow: Electron.BrowserWindow) {
currentWindow.on("enter-full-screen", () => document.body.classList.add("full-screen"));
currentWindow.on("leave-full-screen", () => document.body.classList.remove("full-screen"));
}
function initTransparencyEffects(style: CSSStyleDeclaration, currentWindow: Electron.BrowserWindow) {
if (window.glob.platform === "win32") {
const material = style.getPropertyValue("--background-material");

View File

@ -1,12 +1,12 @@
import server from "../services/server.js";
import noteAttributeCache from "../services/note_attribute_cache.js";
import ws from "../services/ws.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";
import type FAttachment from "./fattachment.js";
import type { default as FAttribute, AttributeType } from "./fattribute.js";
import utils from "../services/utils.js";
import search from "../services/search.js";
const LABEL = "label";
const RELATION = "relation";
@ -240,7 +240,7 @@ export default class FNote {
const aNote = this.froca.getNoteFromCache(aNoteId);
if (aNote.isArchived || aNote.isHiddenCompletely()) {
if (!aNote || aNote.isArchived || aNote.isHiddenCompletely()) {
return 1;
}
@ -256,6 +256,23 @@ export default class FNote {
return this.children;
}
async getChildNoteIdsWithArchiveFiltering(includeArchived = false) {
const isHiddenNote = this.noteId.startsWith("_");
const isSearchNote = this.type === "search";
if (!includeArchived && !isHiddenNote && !isSearchNote) {
const unorderedIds = new Set(await search.searchForNoteIds(`note.parents.noteId="${this.noteId}" #!archived`));
const results: string[] = [];
for (const id of this.children) {
if (unorderedIds.has(id)) {
results.push(id);
}
}
return results;
} else {
return this.children;
}
}
async getSubtreeNoteIds(includeArchived = false) {
let noteIds: (string | string[])[] = [];
for (const child of await this.getChildNotes()) {
@ -418,7 +435,7 @@ export default class FNote {
return notePaths;
}
getSortedNotePathRecords(hoistedNoteId = "root"): NotePathRecord[] {
getSortedNotePathRecords(hoistedNoteId = "root", activeNotePath: string | null = null): NotePathRecord[] {
const isHoistedRoot = hoistedNoteId === "root";
const notePaths: NotePathRecord[] = this.getAllNotePaths().map((path) => ({
@ -429,7 +446,23 @@ export default class FNote {
isHidden: path.includes("_hidden")
}));
// Calculate the length of the prefix match between two arrays
const prefixMatchLength = (path: string[], target: string[]) => {
const diffIndex = path.findIndex((seg, i) => seg !== target[i]);
return diffIndex === -1 ? Math.min(path.length, target.length) : diffIndex;
};
notePaths.sort((a, b) => {
if (activeNotePath) {
const activeSegments = activeNotePath.split('/');
const aOverlap = prefixMatchLength(a.notePath, activeSegments);
const bOverlap = prefixMatchLength(b.notePath, activeSegments);
// Paths with more matching prefix segments are prioritized
// when the match count is equal, other criteria are used for sorting
if (bOverlap !== aOverlap) {
return bOverlap - aOverlap;
}
}
if (a.isInHoistedSubTree !== b.isInHoistedSubTree) {
return a.isInHoistedSubTree ? -1 : 1;
} else if (a.isArchived !== b.isArchived) {
@ -450,10 +483,11 @@ export default class FNote {
* Returns the note path considered to be the "best"
*
* @param {string} [hoistedNoteId='root']
* @param {string|null} [activeNotePath=null]
* @return {string[]} array of noteIds constituting the particular note path
*/
getBestNotePath(hoistedNoteId = "root") {
return this.getSortedNotePathRecords(hoistedNoteId)[0]?.notePath;
getBestNotePath(hoistedNoteId = "root", activeNotePath: string | null = null) {
return this.getSortedNotePathRecords(hoistedNoteId, activeNotePath)[0]?.notePath;
}
/**
@ -586,7 +620,7 @@ export default class FNote {
let childBranches = this.getChildBranches();
if (!childBranches) {
ws.logError(`No children for '${this.noteId}'. This shouldn't happen.`);
console.error(`No children for '${this.noteId}'. This shouldn't happen.`);
return [];
}
@ -772,6 +806,16 @@ export default class FNote {
return this.getAttributeValue(LABEL, name);
}
getLabelOrRelation(nameWithPrefix: string) {
if (nameWithPrefix.startsWith("#")) {
return this.getLabelValue(nameWithPrefix.substring(1));
} else if (nameWithPrefix.startsWith("~")) {
return this.getRelationValue(nameWithPrefix.substring(1));
} else {
return this.getLabelValue(nameWithPrefix);
}
}
/**
* @param name - relation name
* @returns relation value if relation exists, null otherwise
@ -823,8 +867,7 @@ export default class FNote {
return [];
}
const promotedAttrs = this.getAttributes()
.filter((attr) => attr.isDefinition())
const promotedAttrs = this.getAttributeDefinitions()
.filter((attr) => {
const def = attr.getDefinition();
@ -844,6 +887,11 @@ export default class FNote {
return promotedAttrs;
}
getAttributeDefinitions() {
return this.getAttributes()
.filter((attr) => attr.isDefinition());
}
hasAncestor(ancestorNoteId: string, followTemplates = false, visitedNoteIds: Set<string> | null = null) {
if (this.noteId === ancestorNoteId) {
return true;

View File

@ -1,47 +1,58 @@
import FlexContainer from "../widgets/containers/flex_container.js";
import TabRowWidget from "../widgets/tab_row.js";
import LeftPaneContainer from "../widgets/containers/left_pane_container.js";
import NoteTreeWidget from "../widgets/note_tree.js";
import NoteTitleWidget from "../widgets/note_title.jsx";
import NoteDetailWidget from "../widgets/note_detail.js";
import PromotedAttributesWidget from "../widgets/promoted_attributes.js";
import NoteIconWidget from "../widgets/note_icon.jsx";
import ScrollingContainer from "../widgets/containers/scrolling_container.js";
import RootContainer from "../widgets/containers/root_container.js";
import WatchedFileUpdateStatusWidget from "../widgets/watched_file_update_status.js";
import SpacerWidget from "../widgets/spacer.js";
import QuickSearchWidget from "../widgets/quick_search.js";
import SplitNoteContainer from "../widgets/containers/split_note_container.js";
import CreatePaneButton from "../widgets/buttons/create_pane_button.js";
import ClosePaneButton from "../widgets/buttons/close_pane_button.js";
import RightPaneContainer from "../widgets/containers/right_pane_container.js";
import NoteWrapperWidget from "../widgets/note_wrapper.js";
import FindWidget from "../widgets/find.js";
import TocWidget from "../widgets/toc.js";
import HighlightsListWidget from "../widgets/highlights_list.js";
import PasswordNoteSetDialog from "../widgets/dialogs/password_not_set.js";
import LauncherContainer from "../widgets/containers/launcher_container.js";
import MovePaneButton from "../widgets/buttons/move_pane_button.js";
import UploadAttachmentsDialog from "../widgets/dialogs/upload_attachments.js";
import ScrollPadding from "../widgets/scroll_padding.js";
import options from "../services/options.js";
import utils from "../services/utils.js";
import type { AppContext } from "../components/app_context.js";
import type { WidgetsByParent } from "../services/bundle.js";
import { applyModals } from "./layout_commons.js";
import Ribbon from "../widgets/ribbon/Ribbon.jsx";
import FloatingButtons from "../widgets/FloatingButtons.jsx";
import { DESKTOP_FLOATING_BUTTONS } from "../widgets/FloatingButtonsDefinitions.jsx";
import SearchResult from "../widgets/search_result.jsx";
import ApiLog from "../widgets/api_log.jsx";
import ClosePaneButton from "../widgets/buttons/close_pane_button.js";
import CloseZenModeButton from "../widgets/close_zen_button.jsx";
import ContentHeader from "../widgets/containers/content_header.js";
import CreatePaneButton from "../widgets/buttons/create_pane_button.js";
import FindWidget from "../widgets/find.js";
import FlexContainer from "../widgets/containers/flex_container.js";
import FloatingButtons from "../widgets/FloatingButtons.jsx";
import GlobalMenu from "../widgets/buttons/global_menu.jsx";
import HighlightsListWidget from "../widgets/highlights_list.js";
import LeftPaneContainer from "../widgets/containers/left_pane_container.js";
import LeftPaneToggle from "../widgets/buttons/left_pane_toggle.js";
import MovePaneButton from "../widgets/buttons/move_pane_button.js";
import NoteIconWidget from "../widgets/note_icon.jsx";
import NoteList from "../widgets/collections/NoteList.jsx";
import NoteTitleWidget from "../widgets/note_title.jsx";
import NoteTreeWidget from "../widgets/note_tree.js";
import NoteWrapperWidget from "../widgets/note_wrapper.js";
import options from "../services/options.js";
import PasswordNoteSetDialog from "../widgets/dialogs/password_not_set.js";
import QuickSearchWidget from "../widgets/quick_search.js";
import ReadOnlyNoteInfoBar from "../widgets/ReadOnlyNoteInfoBar.jsx";
import Ribbon from "../widgets/ribbon/Ribbon.jsx";
import RightPaneContainer from "../widgets/containers/right_pane_container.js";
import RootContainer from "../widgets/containers/root_container.js";
import ScrollingContainer from "../widgets/containers/scrolling_container.js";
import ScrollPadding from "../widgets/scroll_padding.js";
import SearchResult from "../widgets/search_result.jsx";
import SharedInfo from "../widgets/shared_info.jsx";
import SplitNoteContainer from "../widgets/containers/split_note_container.js";
import SqlResults from "../widgets/sql_result.js";
import SqlTableSchemas from "../widgets/sql_table_schemas.js";
import TabRowWidget from "../widgets/tab_row.js";
import TitleBarButtons from "../widgets/title_bar_buttons.jsx";
import LeftPaneToggle from "../widgets/buttons/left_pane_toggle.js";
import ApiLog from "../widgets/api_log.jsx";
import CloseZenModeButton from "../widgets/close_zen_button.jsx";
import SharedInfo from "../widgets/shared_info.jsx";
import NoteList from "../widgets/collections/NoteList.jsx";
import TocWidget from "../widgets/toc.js";
import type { AppContext } from "../components/app_context.js";
import type { WidgetsByParent } from "../services/bundle.js";
import UploadAttachmentsDialog from "../widgets/dialogs/upload_attachments.js";
import utils from "../services/utils.js";
import WatchedFileUpdateStatusWidget from "../widgets/watched_file_update_status.js";
import NoteDetail from "../widgets/NoteDetail.jsx";
import PromotedAttributes from "../widgets/PromotedAttributes.jsx";
import SpacerWidget from "../widgets/launch_bar/SpacerWidget.jsx";
import LauncherContainer from "../widgets/launch_bar/LauncherContainer.jsx";
import Breadcrumb from "../widgets/Breadcrumb.jsx";
import TabHistoryNavigationButtons from "../widgets/TabHistoryNavigationButtons.jsx";
import { isExperimentalFeatureEnabled } from "../services/experimental_features.js";
import NoteActions from "../widgets/ribbon/NoteActions.jsx";
import FormattingToolbar from "../widgets/ribbon/FormattingToolbar.jsx";
import StandaloneRibbonAdapter from "../widgets/ribbon/components/StandaloneRibbonAdapter.jsx";
import BreadcrumbBadges from "../widgets/BreadcrumbBadges.jsx";
import NoteTitleDetails from "../widgets/NoteTitleDetails.jsx";
import NoteStatusBar from "../widgets/NoteStatusBar.jsx";
export default class DesktopLayout {
@ -67,6 +78,12 @@ export default class DesktopLayout {
*/
const fullWidthTabBar = launcherPaneIsHorizontal || (isElectron && !hasNativeTitleBar && isMac);
const customTitleBarButtons = !hasNativeTitleBar && !isMac && !isWindows;
const isNewLayout = isExperimentalFeatureEnabled("new-layout");
const titleRow = new FlexContainer("row")
.class("title-row")
.child(<NoteIconWidget />)
.child(<NoteTitleWidget />);
const rootContainer = new RootContainer(true)
.setParent(appContext)
@ -77,6 +94,7 @@ export default class DesktopLayout {
.class("tab-row-container")
.child(new FlexContainer("row").id("tab-row-left-spacer"))
.optChild(launcherPaneIsHorizontal, <LeftPaneToggle isHorizontalLayout={true} />)
.child(<TabHistoryNavigationButtons />)
.child(new TabRowWidget().class("full-width"))
.optChild(customTitleBarButtons, <TitleBarButtons />)
.css("height", "40px")
@ -99,7 +117,12 @@ export default class DesktopLayout {
new FlexContainer("column")
.id("rest-pane")
.css("flex-grow", "1")
.optChild(!fullWidthTabBar, new FlexContainer("row").child(new TabRowWidget()).optChild(customTitleBarButtons, <TitleBarButtons />).css("height", "40px"))
.optChild(!fullWidthTabBar,
new FlexContainer("row")
.child(<TabHistoryNavigationButtons />)
.child(new TabRowWidget())
.optChild(customTitleBarButtons, <TitleBarButtons />)
.css("height", "40px"))
.child(
new FlexContainer("row")
.filling()
@ -115,30 +138,35 @@ export default class DesktopLayout {
new NoteWrapperWidget()
.child(
new FlexContainer("row")
.class("title-row")
.css("height", "50px")
.css("min-height", "50px")
.css("align-items", "center")
.cssBlock(".title-row > * { margin: 5px; }")
.child(<NoteIconWidget />)
.child(<NoteTitleWidget />)
.child(new SpacerWidget(0, 1))
.class("breadcrumb-row")
.cssBlock(".breadcrumb-row > * { margin: 5px; }")
.child(<Breadcrumb />)
.optChild(isNewLayout, <BreadcrumbBadges />)
.child(<SpacerWidget baseSize={0} growthFactor={1} />)
.child(<MovePaneButton direction="left" />)
.child(<MovePaneButton direction="right" />)
.child(<ClosePaneButton />)
.child(<CreatePaneButton />)
.optChild(isNewLayout, <NoteActions />)
)
.child(<Ribbon />)
.child(<SharedInfo />)
.optChild(!isNewLayout, titleRow)
.optChild(!isNewLayout, <Ribbon><NoteActions /></Ribbon>)
.optChild(isNewLayout, <StandaloneRibbonAdapter component={FormattingToolbar} />)
.child(new WatchedFileUpdateStatusWidget())
.child(<FloatingButtons items={DESKTOP_FLOATING_BUTTONS} />)
.child(
new ScrollingContainer()
.filling()
.child(new PromotedAttributesWidget())
.optChild(isNewLayout, titleRow)
.optChild(isNewLayout, <NoteTitleDetails />)
.optChild(!isNewLayout, new ContentHeader()
.child(<ReadOnlyNoteInfoBar />)
.child(<SharedInfo />)
)
.child(<PromotedAttributes />)
.child(<SqlTableSchemas />)
.child(new NoteDetailWidget())
.child(<NoteList />)
.child(<NoteDetail />)
.child(<NoteList media="screen" />)
.child(<SearchResult />)
.child(<SqlResults />)
.child(<ScrollPadding />)
@ -149,6 +177,11 @@ export default class DesktopLayout {
...this.customWidgets.get("node-detail-pane"), // typo, let's keep it for a while as BC
...this.customWidgets.get("note-detail-pane")
)
.optChild(isNewLayout, (
<Ribbon>
<NoteStatusBar />
</Ribbon>
))
)
)
.child(...this.customWidgets.get("center-pane"))
@ -179,14 +212,14 @@ export default class DesktopLayout {
launcherPane = new FlexContainer("row")
.css("height", "53px")
.class("horizontal")
.child(new LauncherContainer(true))
.child(<LauncherContainer isHorizontalLayout={true} />)
.child(<GlobalMenu isHorizontalLayout={true} />);
} else {
launcherPane = new FlexContainer("column")
.css("width", "53px")
.class("vertical")
.child(<GlobalMenu isHorizontalLayout={false} />)
.child(new LauncherContainer(false))
.child(<LauncherContainer isHorizontalLayout={false} />)
.child(<LeftPaneToggle isHorizontalLayout={false} />);
}

View File

@ -22,15 +22,9 @@ 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";
import PromotedAttributesWidget from "../widgets/promoted_attributes.js";
import NoteDetailWidget from "../widgets/note_detail.js";
import CallToActionDialog from "../widgets/dialogs/call_to_action.jsx";
import NoteTitleWidget from "../widgets/note_title.jsx";
import { PopupEditorFormattingToolbar } from "../widgets/ribbon/FormattingToolbar.js";
import NoteList from "../widgets/collections/NoteList.jsx";
import PopupEditorDialog from "../widgets/dialogs/PopupEditor.jsx";
import ToastContainer from "../widgets/Toast.jsx";
export function applyModals(rootContainer: RootContainer) {
rootContainer
@ -56,16 +50,7 @@ export function applyModals(rootContainer: RootContainer) {
.child(<ConfirmDialog />)
.child(<PromptDialog />)
.child(<IncorrectCpuArchDialog />)
.child(new PopupEditorDialog()
.child(new FlexContainer("row")
.class("title-row")
.css("align-items", "center")
.cssBlock(".title-row > * { margin: 5px; }")
.child(<NoteIconWidget />)
.child(<NoteTitleWidget />))
.child(<PopupEditorFormattingToolbar />)
.child(new PromotedAttributesWidget())
.child(new NoteDetailWidget())
.child(<NoteList displayOnlyCollections />))
.child(<CallToActionDialog />);
.child(<PopupEditorDialog />)
.child(<CallToActionDialog />)
.child(<ToastContainer />);
}

View File

@ -1,32 +1,39 @@
import FlexContainer from "../widgets/containers/flex_container.js";
import NoteTitleWidget from "../widgets/note_title.js";
import NoteDetailWidget from "../widgets/note_detail.js";
import QuickSearchWidget from "../widgets/quick_search.js";
import NoteTreeWidget from "../widgets/note_tree.js";
import ScreenContainer from "../widgets/mobile_widgets/screen_container.js";
import ScrollingContainer from "../widgets/containers/scrolling_container.js";
import GlobalMenuWidget from "../widgets/buttons/global_menu.js";
import LauncherContainer from "../widgets/containers/launcher_container.js";
import RootContainer from "../widgets/containers/root_container.js";
import SharedInfoWidget from "../widgets/shared_info.js";
import PromotedAttributesWidget from "../widgets/promoted_attributes.js";
import SidebarContainer from "../widgets/mobile_widgets/sidebar_container.js";
import type AppContext from "../components/app_context.js";
import TabRowWidget from "../widgets/tab_row.js";
import MobileEditorToolbar from "../widgets/type_widgets/ckeditor/mobile_editor_toolbar.js";
import { applyModals } from "./layout_commons.js";
import FilePropertiesTab from "../widgets/ribbon/FilePropertiesTab.jsx";
import { useNoteContext } from "../widgets/react/hooks.jsx";
import FloatingButtons from "../widgets/FloatingButtons.jsx";
import { MOBILE_FLOATING_BUTTONS } from "../widgets/FloatingButtonsDefinitions.jsx";
import ToggleSidebarButton from "../widgets/mobile_widgets/toggle_sidebar_button.jsx";
import { useNoteContext } from "../widgets/react/hooks.jsx";
import CloseZenModeButton from "../widgets/close_zen_button.js";
import NoteWrapperWidget from "../widgets/note_wrapper.js";
import FilePropertiesTab from "../widgets/ribbon/FilePropertiesTab.jsx";
import FlexContainer from "../widgets/containers/flex_container.js";
import FloatingButtons from "../widgets/FloatingButtons.jsx";
import GlobalMenuWidget from "../widgets/buttons/global_menu.js";
import MobileDetailMenu from "../widgets/mobile_widgets/mobile_detail_menu.js";
import NoteList from "../widgets/collections/NoteList.jsx";
import NoteTitleWidget from "../widgets/note_title.js";
import ContentHeader from "../widgets/containers/content_header.js";
import NoteTreeWidget from "../widgets/note_tree.js";
import NoteWrapperWidget from "../widgets/note_wrapper.js";
import QuickSearchWidget from "../widgets/quick_search.js";
import ReadOnlyNoteInfoBar from "../widgets/ReadOnlyNoteInfoBar.jsx";
import RootContainer from "../widgets/containers/root_container.js";
import ScreenContainer from "../widgets/mobile_widgets/screen_container.js";
import ScrollingContainer from "../widgets/containers/scrolling_container.js";
import SearchDefinitionTab from "../widgets/ribbon/SearchDefinitionTab.jsx";
import SearchResult from "../widgets/search_result.jsx";
import SharedInfoWidget from "../widgets/shared_info.js";
import SidebarContainer from "../widgets/mobile_widgets/sidebar_container.js";
import StandaloneRibbonAdapter from "../widgets/ribbon/components/StandaloneRibbonAdapter.jsx";
import TabRowWidget from "../widgets/tab_row.js";
import ToggleSidebarButton from "../widgets/mobile_widgets/toggle_sidebar_button.jsx";
import type AppContext from "../components/app_context.js";
import NoteDetail from "../widgets/NoteDetail.jsx";
import MobileEditorToolbar from "../widgets/type_widgets/text/mobile_editor_toolbar.jsx";
import PromotedAttributes from "../widgets/PromotedAttributes.jsx";
import SplitNoteContainer from "../widgets/containers/split_note_container.js";
import LauncherContainer from "../widgets/launch_bar/LauncherContainer.jsx";
const MOBILE_CSS = `
<style>
span.keyboard-shortcut,
kbd {
display: none;
}
@ -40,8 +47,8 @@ kbd {
border: none;
cursor: pointer;
font-size: 1.25em;
padding-left: 0.5em;
padding-right: 0.5em;
padding-inline-start: 0.5em;
padding-inline-end: 0.5em;
color: var(--main-text-color);
}
.quick-search {
@ -59,7 +66,7 @@ const FANCYTREE_CSS = `
margin-top: 0px;
overflow-y: auto;
contain: content;
padding-left: 10px;
padding-inline-start: 10px;
}
.fancytree-custom-icon {
@ -68,7 +75,7 @@ const FANCYTREE_CSS = `
.fancytree-title {
font-size: 1.5em;
margin-left: 0.6em !important;
margin-inline-start: 0.6em !important;
}
.fancytree-node {
@ -81,7 +88,7 @@ const FANCYTREE_CSS = `
span.fancytree-expander {
width: 24px !important;
margin-right: 5px;
margin-inline-end: 5px;
}
.fancytree-loading span.fancytree-expander {
@ -101,7 +108,7 @@ span.fancytree-expander {
.tree-wrapper .scroll-to-active-note-button,
.tree-wrapper .tree-settings-button {
position: fixed;
margin-right: 16px;
margin-inline-end: 16px;
display: none;
}
@ -126,8 +133,8 @@ export default class MobileLayout {
.class("d-md-flex d-lg-flex d-xl-flex col-12 col-sm-5 col-md-4 col-lg-3 col-xl-3")
.id("mobile-sidebar-wrapper")
.css("max-height", "100%")
.css("padding-left", "0")
.css("padding-right", "0")
.css("padding-inline-start", "0")
.css("padding-inline-end", "0")
.css("contain", "content")
.child(new FlexContainer("column").filling().id("mobile-sidebar-wrapper").child(new QuickSearchWidget()).child(new NoteTreeWidget().cssBlock(FANCYTREE_CSS)))
)
@ -136,28 +143,35 @@ export default class MobileLayout {
.id("detail-container")
.class("d-sm-flex d-md-flex d-lg-flex d-xl-flex col-12 col-sm-7 col-md-8 col-lg-9")
.child(
new NoteWrapperWidget()
.child(
new FlexContainer("row")
.contentSized()
.css("font-size", "larger")
.css("align-items", "center")
.child(<ToggleSidebarButton />)
.child(<NoteTitleWidget />)
.child(<MobileDetailMenu />)
)
.child(<SharedInfoWidget />)
.child(<FloatingButtons items={MOBILE_FLOATING_BUTTONS} />)
.child(new PromotedAttributesWidget())
.child(
new ScrollingContainer()
.filling()
.contentSized()
.child(new NoteDetailWidget())
.child(<NoteList />)
.child(<FilePropertiesWrapper />)
)
.child(<MobileEditorToolbar />)
new SplitNoteContainer(() =>
new NoteWrapperWidget()
.child(
new FlexContainer("row")
.contentSized()
.css("font-size", "larger")
.css("align-items", "center")
.child(<ToggleSidebarButton />)
.child(<NoteTitleWidget />)
.child(<MobileDetailMenu />)
)
.child(<FloatingButtons items={MOBILE_FLOATING_BUTTONS} />)
.child(<PromotedAttributes />)
.child(
new ScrollingContainer()
.filling()
.contentSized()
.child(new ContentHeader()
.child(<ReadOnlyNoteInfoBar />)
.child(<SharedInfoWidget />)
)
.child(<NoteDetail />)
.child(<NoteList media="screen" />)
.child(<StandaloneRibbonAdapter component={SearchDefinitionTab} />)
.child(<SearchResult />)
.child(<FilePropertiesWrapper />)
)
.child(<MobileEditorToolbar />)
)
)
)
)
@ -169,7 +183,7 @@ export default class MobileLayout {
.child(new FlexContainer("row")
.class("horizontal")
.css("height", "53px")
.child(new LauncherContainer(true))
.child(<LauncherContainer isHorizontalLayout />)
.child(<GlobalMenuWidget isHorizontalLayout />)
.id("launcher-pane"))
)

View File

@ -1,5 +1,3 @@
import "bootstrap/dist/css/bootstrap.min.css";
// @ts-ignore - module = undefined
// Required for correct loading of scripts in Electron
if (typeof module === 'object') {window.module = module; module = undefined;}

View File

@ -2,7 +2,7 @@ import { KeyboardActionNames } from "@triliumnext/commons";
import keyboardActionService, { getActionSync } from "../services/keyboard_actions.js";
import note_tooltip from "../services/note_tooltip.js";
import utils from "../services/utils.js";
import { should } from "vitest";
import { h, JSX, render } from "preact";
export interface ContextMenuOptions<T> {
x: number;
@ -15,6 +15,11 @@ export interface ContextMenuOptions<T> {
onHide?: () => void;
}
export interface CustomMenuItem {
kind: "custom",
componentFn: () => JSX.Element | null;
}
export interface MenuSeparatorItem {
kind: "separator";
}
@ -51,7 +56,7 @@ export interface MenuCommandItem<T> {
columns?: number;
}
export type MenuItem<T> = MenuCommandItem<T> | MenuSeparatorItem | MenuHeader;
export type MenuItem<T> = MenuCommandItem<T> | CustomMenuItem | MenuSeparatorItem | MenuHeader;
export type MenuHandler<T> = (item: MenuCommandItem<T>, e: JQuery.MouseDownEvent<HTMLElement, undefined, HTMLElement, HTMLElement>) => void;
export type ContextMenuEvent = PointerEvent | MouseEvent | JQuery.ContextMenuEvent;
@ -150,8 +155,8 @@ class ContextMenu {
this.$widget
.css({
display: "block",
top: top,
left: left
top,
left
})
.addClass("show");
}
@ -160,16 +165,19 @@ class ContextMenu {
let $group = $parent; // The current group or parent element to which items are being appended
let shouldStartNewGroup = false; // If true, the next item will start a new group
let shouldResetGroup = false; // If true, the next item will be the last one from the group
let prevItemKind: string = "";
for (let index = 0; index < items.length; index++) {
const item = items[index];
const itemKind = ("kind" in item) ? item.kind : "";
if (!item) {
continue;
}
// If the current item is a header, start a new group. This group will contain the
// header and the next item that follows the header.
if ("kind" in item && item.kind === "header") {
if (itemKind === "header") {
if (multicolumn && !shouldResetGroup) {
shouldStartNewGroup = true;
}
@ -187,7 +195,7 @@ class ContextMenu {
}
// Create a new group to avoid column breaks before and after the seaparator / header.
// This is a workaround for Firefox not supporting break-before / break-after: avoid
// This is a workaround for Firefox not supporting break-before / break-after: avoid
// for columns.
if (shouldStartNewGroup) {
$group = $("<div class='dropdown-no-break'>");
@ -195,125 +203,25 @@ class ContextMenu {
shouldStartNewGroup = false;
}
if ("kind" in item && item.kind === "separator") {
if (itemKind === "separator") {
if (prevItemKind === "separator") {
// Skip consecutive separators
continue;
}
$group.append($("<div>").addClass("dropdown-divider"));
shouldResetGroup = true; // End the group after the next item
} else if ("kind" in item && item.kind === "header") {
$group.append($("<h6>").addClass("dropdown-header").text(item.title));
} else if (itemKind === "header") {
$group.append($("<h6>").addClass("dropdown-header").text((item as MenuHeader).title));
shouldResetGroup = true;
} else {
const $icon = $("<span>");
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;");
}
if (itemKind === "custom") {
// Custom menu item
$group.append(this.createCustomMenuItem(item as CustomMenuItem));
} else {
// Standard menu item
$group.append(this.createMenuItem(item as MenuCommandItem<any>));
}
const $link = $("<span>")
.append($icon)
.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 ("keyboardShortcut" in item && item.keyboardShortcut) {
const shortcuts = getActionSync(item.keyboardShortcut).effectiveShortcuts;
if (shortcuts) {
const allShortcuts: string[] = [];
for (const effectiveShortcut of shortcuts) {
allShortcuts.push(effectiveShortcut.split("+")
.map(key => `<kbd>${key}</kbd>`)
.join("+"));
}
if (allShortcuts.length) {
const container = $("<span>").addClass("keyboard-shortcut");
container.append($(allShortcuts.join(",")));
$link.append(container);
}
}
} else if ("shortcut" in item && item.shortcut) {
$link.append($("<kbd>").text(item.shortcut));
}
const $item = $("<li>")
.addClass("dropdown-item")
.append($link)
.on("contextmenu", (e) => false)
// important to use mousedown instead of click since the former does not change focus
// (especially important for focused text for spell check)
.on("mousedown", (e) => {
e.stopPropagation();
if (e.which !== 1) {
// only left click triggers menu items
return false;
}
if (this.isMobile && "items" in item && item.items) {
const $item = $(e.target).closest(".dropdown-item");
$item.toggleClass("submenu-open");
$item.find("ul.dropdown-menu").toggleClass("show");
return false;
}
if ("handler" in item && item.handler) {
item.handler(item, e);
}
this.options?.selectMenuItemHandler(item, e);
// it's important to stop the propagation especially for sub-menus, otherwise the event
// might be handled again by top-level menu
return false;
});
$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");
}
if ("items" in item && item.items) {
$item.addClass("dropdown-submenu");
$link.addClass("dropdown-toggle");
const $subMenu = $("<ul>").addClass("dropdown-menu");
const hasColumns = !!item.columns && item.columns > 1;
if (!this.isMobile && hasColumns) {
$subMenu.css("column-count", item.columns!);
}
this.addItems($subMenu, item.items, hasColumns);
$item.append($subMenu);
}
$group.append($item);
// After adding a menu item, if the previous item was a separator or header,
// reset the group so that the next item will be appended directly to the parent.
if (shouldResetGroup) {
@ -321,9 +229,126 @@ class ContextMenu {
shouldResetGroup = false;
};
}
prevItemKind = itemKind;
}
}
private createCustomMenuItem(item: CustomMenuItem) {
const element = document.createElement("li");
element.classList.add("dropdown-custom-item");
element.onclick = () => this.hide();
render(h(item.componentFn, {}), element);
return element;
}
private createMenuItem(item: MenuCommandItem<any>) {
const $icon = $("<span>");
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>")
.append($icon)
.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 ("keyboardShortcut" in item && item.keyboardShortcut) {
const shortcuts = getActionSync(item.keyboardShortcut).effectiveShortcuts;
if (shortcuts) {
const allShortcuts: string[] = [];
for (const effectiveShortcut of shortcuts) {
allShortcuts.push(effectiveShortcut.split("+")
.map(key => `<kbd>${key}</kbd>`)
.join("+"));
}
if (allShortcuts.length) {
const container = $("<span>").addClass("keyboard-shortcut");
container.append($(allShortcuts.join(",")));
$link.append(container);
}
}
} else if ("shortcut" in item && item.shortcut) {
$link.append($("<kbd>").text(item.shortcut));
}
const $item = $("<li>")
.addClass("dropdown-item")
.append($link)
.on("contextmenu", (e) => false)
// important to use mousedown instead of click since the former does not change focus
// (especially important for focused text for spell check)
.on("mousedown", (e) => {
if (e.which !== 1) {
// only left click triggers menu items
return false;
}
if (this.isMobile && "items" in item && item.items) {
const $item = $(e.target).closest(".dropdown-item");
$item.toggleClass("submenu-open");
$item.find("ul.dropdown-menu").toggleClass("show");
return false;
}
// Prevent submenu from failing to expand on mobile
if (!("items" in item && item.items)) {
this.hide();
}
if ("handler" in item && item.handler) {
item.handler(item, e);
}
this.options?.selectMenuItemHandler(item, e);
// it's important to stop the propagation especially for sub-menus, otherwise the event
// might be handled again by top-level menu
return false;
});
if ("enabled" in item && item.enabled !== undefined && !item.enabled) {
$item.addClass("disabled");
}
if ("items" in item && item.items) {
$item.addClass("dropdown-submenu");
$link.addClass("dropdown-toggle");
const $subMenu = $("<ul>").addClass("dropdown-menu");
const hasColumns = !!item.columns && item.columns > 1;
if (!this.isMobile && hasColumns) {
$subMenu.css("column-count", item.columns!);
}
this.addItems($subMenu, item.items, hasColumns);
$item.append($subMenu);
}
return $item;
}
async hide() {
this.options?.onHide?.();
this.$widget.removeClass("show");

View File

@ -0,0 +1,21 @@
import { t } from "../services/i18n"
import attributes from "../services/attributes"
import FNote from "../entities/fnote"
export function getArchiveMenuItem(note: FNote) {
if (!note.isArchived) {
return {
title: t("board_view.archive-note"),
uiIcon: "bx bx-archive",
handler: () => attributes.addLabel(note.noteId, "archived")
}
} else {
return {
title: t("board_view.unarchive-note"),
uiIcon: "bx bx-archive-out",
handler: async () => {
attributes.removeOwnedLabelByName(note, "archived")
}
}
}
}

View File

@ -0,0 +1,86 @@
:root {
--note-color-picker-clear-color-cell-background: var(--primary-button-background-color);
--note-color-picker-clear-color-cell-color: var(--main-background-color);
--note-color-picker-clear-color-cell-selection-outline-color: var(--primary-button-border-color);
}
.note-color-picker {
display: flex;
gap: 8px;
justify-content: space-between;
}
.note-color-picker .color-cell {
--color-picker-cell-size: 14px;
width: var(--color-picker-cell-size);
height: var(--color-picker-cell-size);
border-radius: 4px;
background-color: var(--color);
}
.note-color-picker .color-cell:not(.selected):hover {
transform: scale(1.2);
}
.note-color-picker .color-cell.disabled-color-cell {
cursor: not-allowed;
}
.note-color-picker .color-cell.selected {
outline: 2px solid var(--outline-color, var(--color));
outline-offset: 2px;
}
/*
* RESET COLOR CELL
*/
.note-color-picker .color-cell-reset {
--color: var(--note-color-picker-clear-color-cell-background);
--outline-color: var(--note-color-picker-clear-color-cell-selection-outline-color);
position: relative;
display: flex;
justify-content: center;
align-items: center;
}
.note-color-picker .color-cell-reset svg {
width: var(--color-picker-cell-size);
height: var(--color-picker-cell-size);
fill: var(--note-color-picker-clear-color-cell-color);
}
/*
* CUSTOM COLOR CELL
*/
.note-color-picker .custom-color-cell::before {
position: absolute;
content: "\ed35";
display: flex;
top: 0;
left: 0;
right: 0;
bottom: 0;
font-size: calc(var(--color-picker-cell-size) * 1.3);
justify-content: center;
align-items: center;
font-family: boxicons;
font-size: 16px;
color: var(--foreground);
}
.note-color-picker .custom-color-cell {
position: relative;
display: flex;
justify-content: center;
overflow: hidden;
}
.note-color-picker .custom-color-cell.custom-color-cell-empty {
background-image: url(./custom-color.png);
background-size: cover;
--foreground: transparent;
}

View File

@ -0,0 +1,204 @@
import "./NoteColorPicker.css";
import { t } from "../../services/i18n";
import { useCallback, useEffect, useRef, useState} from "preact/hooks";
import {ComponentChildren} from "preact";
import attributes from "../../services/attributes";
import clsx from "clsx";
import Color, { ColorInstance } from "color";
import Debouncer from "../../utils/debouncer";
import FNote from "../../entities/fnote";
import froca from "../../services/froca";
import { isMobile } from "../../services/utils";
const COLOR_PALETTE = [
"#e64d4d", "#e6994d", "#e5e64d", "#99e64d", "#4de64d", "#4de699",
"#4de5e6", "#4d99e6", "#4d4de6", "#994de6", "#e64db3"
];
export interface NoteColorPickerProps {
/** The target Note instance or its ID string. */
note: FNote | string | null;
}
export default function NoteColorPicker(props: NoteColorPickerProps) {
if (!props.note) return null;
const [note, setNote] = useState<FNote | null>(null);
const [currentColor, setCurrentColor] = useState<string | null>(null);
const [isCustomColor, setIsCustomColor] = useState<boolean>(false);
useEffect(() => {
const retrieveNote = async (noteId: string) => {
const noteInstance = await froca.getNote(noteId, true);
if (noteInstance) {
setNote(noteInstance);
}
}
if (typeof props.note === "string") {
retrieveNote(props.note); // Get the note from the given ID string
} else {
setNote(props.note);
}
}, []);
useEffect(() => {
const colorLabel = note?.getLabel("color")?.value ?? null;
if (colorLabel) {
let color = tryParseColor(colorLabel);
if (color) {
setCurrentColor(color.hex().toLowerCase());
}
}
}, [note]);
useEffect(() => {
setIsCustomColor(currentColor !== null && COLOR_PALETTE.indexOf(currentColor) === -1);
}, [currentColor])
const onColorCellClicked = useCallback((color: string | null) => {
if (note) {
if (color !== null) {
attributes.setLabel(note.noteId, "color", color);
} else {
attributes.removeOwnedLabelByName(note, "color");
}
setCurrentColor(color);
}
}, [note, currentColor]);
return <div className="note-color-picker">
<ColorCell className="color-cell-reset"
tooltip={t("note-color.clear-color")}
color={null}
isSelected={(currentColor === null)}
isDisabled={(note === null)}
onSelect={onColorCellClicked}>
{/* https://pictogrammers.com/library/mdi/icon/close/ */}
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z" />
</svg>
</ColorCell>
{COLOR_PALETTE.map((color) => (
<ColorCell key={color}
tooltip={t("note-color.set-color")}
color={color}
isSelected={(color === currentColor)}
isDisabled={(note === null)}
onSelect={onColorCellClicked} />
))}
<CustomColorCell tooltip={t("note-color.set-custom-color")}
color={currentColor}
isSelected={isCustomColor}
isDisabled={(note === null)}
onSelect={onColorCellClicked} />
</div>
}
interface ColorCellProps {
children?: ComponentChildren,
className?: string,
tooltip?: string,
color: string | null,
isSelected: boolean,
isDisabled?: boolean,
onSelect?: (color: string | null) => void
}
function ColorCell(props: ColorCellProps) {
return <div className={clsx(props.className, {
"color-cell": true,
"selected": props.isSelected,
"disabled-color-cell": props.isDisabled
})}
style={`${(props.color !== null) ? `--color: ${props.color}` : ""}`}
title={props.tooltip}
onClick={() => props.onSelect?.(props.color)}>
{props.children}
</div>;
}
function CustomColorCell(props: ColorCellProps) {
const [pickedColor, setPickedColor] = useState<string | null>(null);
const colorInput = useRef<HTMLInputElement>(null);
const colorInputDebouncer = useRef<Debouncer<string | null> | null>(null);
const callbackRef = useRef(props.onSelect);
useEffect(() => {
colorInputDebouncer.current = new Debouncer(250, (color) => {
callbackRef.current?.(color);
setPickedColor(color);
});
return () => {
colorInputDebouncer.current?.destroy();
}
}, []);
useEffect(() => {
if (props.isSelected && pickedColor === null) {
setPickedColor(props.color);
}
}, [props.isSelected])
useEffect(() => {
callbackRef.current = props.onSelect;
}, [props.onSelect]);
const onSelect = useCallback(() => {
if (pickedColor !== null) {
callbackRef.current?.(pickedColor);
}
colorInput.current?.click();
}, [pickedColor]);
return <div style={`--foreground: ${getForegroundColor(props.color)};`}
onClick={isMobile() ? (e) => {
// The color picker dropdown will close on some browser if the parent context menu is
// dismissed, so stop the click propagation to prevent dismissing the menu.
e.stopPropagation();
} : undefined}>
<ColorCell {...props}
color={pickedColor}
className={clsx("custom-color-cell", {
"custom-color-cell-empty": (pickedColor === null)
})}
onSelect={onSelect}>
<input ref={colorInput}
type="color"
value={pickedColor ?? props.color ?? "#40bfbf"}
onChange={() => {colorInputDebouncer.current?.updateValue(colorInput.current?.value ?? null)}}
style="width: 0; height: 0; opacity: 0" />
</ColorCell>
</div>
}
function getForegroundColor(backgroundColor: string | null) {
if (backgroundColor === null) return "inherit";
const colorHsl = tryParseColor(backgroundColor)?.hsl();
if (colorHsl) {
let l = colorHsl.lightness();
return colorHsl.saturationl(0).lightness(l >= 50 ? 0 : 100).hex();
} else {
return "inherit";
}
}
function tryParseColor(colorStr: string): ColorInstance | null {
try {
return new Color(colorStr);
} catch(ex) {
console.error(ex);
}
return null;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -4,7 +4,7 @@ import zoomService from "../components/zoom.js";
import contextMenu, { type MenuItem } from "./context_menu.js";
import { t } from "../services/i18n.js";
import type { BrowserWindow } from "electron";
import type { CommandNames } from "../components/app_context.js";
import type { CommandNames, AppContext } from "../components/app_context.js";
function setupContextMenu() {
const electron = utils.dynamicRequire("electron");
@ -13,6 +13,8 @@ function setupContextMenu() {
// FIXME: Remove typecast once Electron is properly integrated.
const { webContents } = remote.getCurrentWindow() as BrowserWindow;
let appContext: AppContext;
webContents.on("context-menu", (event, params) => {
const { editFlags } = params;
const hasText = params.selectionText.trim().length > 0;
@ -119,6 +121,20 @@ function setupContextMenu() {
uiIcon: "bx bx-search-alt",
handler: () => electron.shell.openExternal(searchUrl)
});
items.push({
title: t("electron_context_menu.search_in_trilium", { term: shortenedSelection }),
uiIcon: "bx bx-search",
handler: async () => {
if (!appContext) {
appContext = (await import("../components/app_context.js")).default;
}
await appContext.triggerCommand("searchNotes", {
searchString: params.selectionText
});
}
});
}
if (items.length === 0) {

View File

@ -2,26 +2,32 @@ import { t } from "../services/i18n.js";
import contextMenu, { type ContextMenuEvent, type MenuItem } from "./context_menu.js";
import appContext, { type CommandNames } from "../components/app_context.js";
import type { ViewScope } from "../services/link.js";
import utils, { isMobile } from "../services/utils.js";
import { getClosestNtxId } from "../widgets/widget_utils.js";
import type { LeafletMouseEvent } from "leaflet";
function openContextMenu(notePath: string, e: ContextMenuEvent, viewScope: ViewScope = {}, hoistedNoteId: string | null = null) {
contextMenu.show({
x: e.pageX,
y: e.pageY,
items: getItems(),
selectMenuItemHandler: ({ command }) => handleLinkContextMenuItem(command, notePath, viewScope, hoistedNoteId)
items: getItems(e),
selectMenuItemHandler: ({ command }) => handleLinkContextMenuItem(command, e, notePath, viewScope, hoistedNoteId)
});
}
function getItems(): MenuItem<CommandNames>[] {
function getItems(e: ContextMenuEvent | LeafletMouseEvent): MenuItem<CommandNames>[] {
const ntxId = getNtxId(e);
const isMobileSplitOpen = isMobile() && appContext.tabManager.getNoteContextById(ntxId).getMainContext().getSubContexts().length > 1;
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: !isMobileSplitOpen ? t("link_context_menu.open_note_in_new_split") : t("link_context_menu.open_note_in_other_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_popup"), command: "openNoteInPopup", uiIcon: "bx bx-edit" }
];
}
function handleLinkContextMenuItem(command: string | undefined, notePath: string, viewScope = {}, hoistedNoteId: string | null = null) {
function handleLinkContextMenuItem(command: string | undefined, e: ContextMenuEvent | LeafletMouseEvent, notePath: string, viewScope = {}, hoistedNoteId: string | null = null) {
if (!hoistedNoteId) {
hoistedNoteId = appContext.tabManager.getActiveContext()?.hoistedNoteId ?? null;
}
@ -29,15 +35,8 @@ function handleLinkContextMenuItem(command: string | undefined, notePath: string
if (command === "openNoteInNewTab") {
appContext.tabManager.openContextWithNote(notePath, { hoistedNoteId, viewScope });
} else if (command === "openNoteInNewSplit") {
const subContexts = appContext.tabManager.getActiveContext()?.getSubContexts();
if (!subContexts) {
logError("subContexts is null");
return;
}
const { ntxId } = subContexts[subContexts.length - 1];
const ntxId = getNtxId(e);
if (!ntxId) return;
appContext.triggerCommand("openNewNoteSplit", { ntxId, notePath, hoistedNoteId, viewScope });
} else if (command === "openNoteInNewWindow") {
appContext.triggerCommand("openInWindow", { notePath, hoistedNoteId, viewScope });
@ -46,6 +45,18 @@ function handleLinkContextMenuItem(command: string | undefined, notePath: string
}
}
function getNtxId(e: ContextMenuEvent | LeafletMouseEvent) {
if (utils.isDesktop()) {
const subContexts = appContext.tabManager.getActiveContext()?.getSubContexts();
if (!subContexts) return null;
return subContexts[subContexts.length - 1].ntxId;
} else if (e.target instanceof HTMLElement) {
return getClosestNtxId(e.target);
} else {
return null;
}
}
export default {
getItems,
handleLinkContextMenuItem,

View File

@ -1,3 +1,4 @@
import NoteColorPicker from "./custom-items/NoteColorPicker.jsx";
import treeService from "../services/tree.js";
import froca from "../services/froca.js";
import clipboard from "../services/clipboard.js";
@ -137,9 +138,15 @@ export default class TreeContextMenu implements SelectMenuItemEventListener<Tree
command: "editBranchPrefix",
keyboardShortcut: "editBranchPrefix",
uiIcon: "bx bx-rename",
enabled: isNotRoot && parentNotSearch && noSelectedNotes && notOptionsOrHelp
enabled: isNotRoot && parentNotSearch && notOptionsOrHelp
},
{
title:
t("tree-context-menu.convert-to-attachment"),
command: "convertNoteToAttachment",
uiIcon: "bx bx-paperclip",
enabled: isNotRoot && !isHoisted && notOptionsOrHelp && selectedNotes.some(note => note.isEligibleForConversionToAttachment())
},
{ title: t("tree-context-menu.convert-to-attachment"), command: "convertNoteToAttachment", uiIcon: "bx bx-paperclip", enabled: isNotRoot && !isHoisted && notOptionsOrHelp },
{ kind: "separator" },
@ -241,6 +248,15 @@ export default class TreeContextMenu implements SelectMenuItemEventListener<Tree
enabled: isNotRoot && !isHoisted && parentNotSearch && notOptionsOrHelp
},
{ kind: "separator"},
(notOptionsOrHelp && selectedNotes.length === 1) ? {
kind: "custom",
componentFn: () => {
return NoteColorPicker({note});
}
} : null,
{ kind: "separator" },
{ title: t("tree-context-menu.import-into-note"), command: "importIntoNote", uiIcon: "bx bx-import", enabled: notSearch && noSelectedNotes && notOptionsOrHelp },

View File

@ -1,7 +1,6 @@
import appContext from "./components/app_context.js";
import noteAutocompleteService from "./services/note_autocomplete.js";
import glob from "./services/glob.js";
import "bootstrap/dist/css/bootstrap.min.css";
import "boxicons/css/boxicons.min.css";
import "autocomplete.js/index_jquery.js";

157
apps/client/src/print.css Normal file
View File

@ -0,0 +1,157 @@
@import "boxicons/css/boxicons.min.css";
:root {
--print-font-size: 11pt;
--ck-content-color-image-caption-background: transparent !important;
}
html,
body {
width: 100%;
height: 100%;
color: black;
}
@page {
margin: 2cm;
}
.note-list-widget.full-height,
.note-list-widget.full-height .note-list-widget-content {
height: unset !important;
}
.component {
contain: none !important;
}
body[data-note-type="text"] .ck-content {
font-size: var(--print-font-size);
text-align: justify;
}
.ck-content figcaption {
font-style: italic;
}
.ck-content a {
text-decoration: none;
}
.ck-content a:not([href^="#root/"]) {
text-decoration: underline;
color: #374a75;
}
.ck-content .todo-list__label * {
-webkit-print-color-adjust: exact;
print-color-adjust: exact;
}
@supports selector(.todo-list__label__description:has(*)) and (height: 1lh) {
.ck-content .todo-list__label__description {
/* The percentage of the line height that the check box occupies */
--box-ratio: 0.75;
/* The size of the gap between the check box and the caption */
--box-text-gap: 0.25em;
--box-size: calc(1lh * var(--box-ratio));
--box-vert-offset: calc((1lh - var(--box-size)) / 2);
display: inline-block;
padding-inline-start: calc(var(--box-size) + var(--box-text-gap));
/* Source: https://pictogrammers.com/library/mdi/icon/checkbox-blank-outline/ */
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='currentColor'%3e%3cpath d='M19%2c3H5C3.89%2c3 3%2c3.89 3%2c5V19A2%2c2 0 0%2c0 5%2c21H19A2%2c2 0 0%2c0 21%2c19V5C21%2c3.89 20.1%2c3 19%2c3M19%2c5V19H5V5H19Z' /%3e%3c/svg%3e");
background-position: 0 var(--box-vert-offset);
background-size: var(--box-size);
background-repeat: no-repeat;
}
.ck-content .todo-list__label:has(input[type="checkbox"]:checked) .todo-list__label__description {
/* Source: https://pictogrammers.com/library/mdi/icon/checkbox-outline/ */
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='currentColor'%3e%3cpath d='M19%2c3H5A2%2c2 0 0%2c0 3%2c5V19A2%2c2 0 0%2c0 5%2c21H19A2%2c2 0 0%2c0 21%2c19V5A2%2c2 0 0%2c0 19%2c3M19%2c5V19H5V5H19M10%2c17L6%2c13L7.41%2c11.58L10%2c14.17L16.59%2c7.58L18%2c9' /%3e%3c/svg%3e");
}
.ck-content .todo-list__label input[type="checkbox"] {
display: none !important;
}
}
/* #region Footnotes */
.footnote-reference a,
.footnote-back-link a {
text-decoration: none !important;
}
li.footnote-item {
position: relative;
width: fit-content;
}
.ck-content .footnote-back-link {
margin-right: 0.25em;
}
.ck-content .footnote-content {
display: inline-block;
width: unset;
}
/* #endregion */
/* #region Widows and orphans */
p,
blockquote {
widows: 4;
orphans: 4;
}
pre > code {
widows: 6;
orphans: 6;
overflow: auto;
white-space: pre-wrap !important;
}
h1,
h2,
h3,
h4,
h5,
h6 {
page-break-after: avoid;
break-after: avoid;
}
/* #endregion */
/* #region Tables */
.table thead th,
.table td,
.table th {
/* Fix center vertical alignment of table cells */
vertical-align: middle;
}
pre {
box-shadow: unset !important;
border: 0.75pt solid gray !important;
border-radius: 2pt !important;
}
th,
span[style] {
print-color-adjust: exact;
-webkit-print-color-adjust: exact;
}
/* #endregion */
/* #region Page breaks */
.page-break {
page-break-after: always;
break-after: always;
}
.page-break > *,
.page-break::after {
display: none !important;
}
/* #endregion */

151
apps/client/src/print.tsx Normal file
View File

@ -0,0 +1,151 @@
import FNote from "./entities/fnote";
import { render } from "preact";
import { CustomNoteList, useNoteViewType } from "./widgets/collections/NoteList";
import { useCallback, useLayoutEffect, useRef } from "preact/hooks";
import content_renderer from "./services/content_renderer";
import { dynamicRequire, isElectron } from "./services/utils";
import { applyInlineMermaid } from "./services/content_renderer_text";
interface RendererProps {
note: FNote;
onReady: () => void;
onProgressChanged?: (progress: number) => void;
}
async function main() {
const notePath = window.location.hash.substring(1);
const noteId = notePath.split("/").at(-1);
if (!noteId) return;
await import("./print.css");
const froca = (await import("./services/froca")).default;
const note = await froca.getNote(noteId);
render(<App note={note} noteId={noteId} />, document.body);
}
function App({ note, noteId }: { note: FNote | null | undefined, noteId: string }) {
const sentReadyEvent = useRef(false);
const onProgressChanged = useCallback((progress: number) => {
if (isElectron()) {
const { ipcRenderer } = dynamicRequire('electron');
ipcRenderer.send("print-progress", progress);
} else {
window.dispatchEvent(new CustomEvent("note-load-progress", { detail: { progress } }));
}
}, []);
const onReady = useCallback(() => {
if (sentReadyEvent.current) return;
window.dispatchEvent(new Event("note-ready"));
window._noteReady = true;
sentReadyEvent.current = true;
}, []);
const props: RendererProps | undefined | null = note && { note, onReady, onProgressChanged };
if (!note || !props) return <Error404 noteId={noteId} />
useLayoutEffect(() => {
document.body.dataset.noteType = note.type;
}, [ note ]);
return (
<>
{note.type === "book"
? <CollectionRenderer {...props} />
: <SingleNoteRenderer {...props} />
}
</>
);
}
function SingleNoteRenderer({ note, onReady }: RendererProps) {
const containerRef = useRef<HTMLDivElement>(null);
useLayoutEffect(() => {
async function load() {
if (note.type === "text") {
await import("@triliumnext/ckeditor5/src/theme/ck-content.css");
}
const { $renderedContent } = await content_renderer.getRenderedContent(note, { noChildrenList: true });
const container = containerRef.current!;
container.replaceChildren(...$renderedContent);
// Wait for all images to load.
const images = Array.from(container.querySelectorAll("img"));
await Promise.all(
images.map(img => {
if (img.complete) return Promise.resolve();
return new Promise<void>(resolve => {
img.addEventListener("load", () => resolve(), { once: true });
img.addEventListener("error", () => resolve(), { once: true });
});
})
);
// Initialize mermaid.
if (note.type === "text") {
await applyInlineMermaid(container);
}
// Check custom CSS.
await loadCustomCss(note);
}
load().then(() => requestAnimationFrame(onReady))
}, [ note ]);
return <>
<h1>{note.title}</h1>
<main ref={containerRef} />
</>;
}
function CollectionRenderer({ note, onReady, onProgressChanged }: RendererProps) {
const viewType = useNoteViewType(note);
return <CustomNoteList
viewType={viewType}
isEnabled
note={note}
notePath={note.getBestNotePath().join("/")}
ntxId="print"
highlightedTokens={null}
media="print"
onReady={async () => {
await loadCustomCss(note);
onReady();
}}
onProgressChanged={onProgressChanged}
/>;
}
function Error404({ noteId }: { noteId: string }) {
return (
<main>
<p>The note you are trying to print could not be found.</p>
<small>{noteId}</small>
</main>
)
}
async function loadCustomCss(note: FNote) {
const printCssNotes = await note.getRelationTargets("printCss");
let loadPromises: JQueryPromise<void>[] = [];
for (const printCssNote of printCssNotes) {
if (!printCssNote || (printCssNote.type !== "code" && printCssNote.mime !== "text/css")) continue;
const linkEl = document.createElement("link");
linkEl.href = `/api/notes/${printCssNote.noteId}/download`;
linkEl.rel = "stylesheet";
const promise = $.Deferred();
loadPromises.push(promise.promise());
linkEl.onload = () => promise.resolve();
document.head.appendChild(linkEl);
}
await Promise.allSettled(loadPromises);
}
main();

View File

@ -1,5 +1,15 @@
import $ from "jquery";
async function loadBootstrap() {
if (document.body.dir === "rtl") {
await import("bootstrap/dist/css/bootstrap.rtl.min.css");
} else {
await import("bootstrap/dist/css/bootstrap.min.css");
}
}
(window as any).$ = $;
(window as any).jQuery = $;
await loadBootstrap();
$("body").show();

View File

@ -90,7 +90,8 @@ const HIDDEN_ATTRIBUTES = [
"viewType",
"geolocation",
"docName",
"webViewSrc"
"webViewSrc",
"archived"
];
async function renderNormalAttributes(note: FNote) {

View File

@ -22,6 +22,15 @@ export async function setLabel(noteId: string, name: string, value: string = "",
});
}
export async function setRelation(noteId: string, name: string, value: string = "", isInheritable = false) {
await server.put(`notes/${noteId}/set-attribute`, {
type: "relation",
name: name,
value: value,
isInheritable
});
}
async function removeAttributeById(noteId: string, attributeId: string) {
await server.remove(`notes/${noteId}/attributes/${attributeId}`);
}
@ -51,6 +60,23 @@ function removeOwnedLabelByName(note: FNote, labelName: string) {
return false;
}
/**
* Removes a relation identified by its name from the given note, if it exists. Note that the relation must be owned, i.e.
* it will not remove inherited attributes.
*
* @param note the note from which to remove the relation.
* @param relationName the name of the relation to remove.
* @returns `true` if an attribute was identified and removed, `false` otherwise.
*/
function removeOwnedRelationByName(note: FNote, relationName: string) {
const relation = note.getOwnedRelation(relationName);
if (relation) {
removeAttributeById(note.noteId, relation.attributeId);
return true;
}
return false;
}
/**
* Sets the attribute of the given note to the provided value if its truthy, or removes the attribute if the value is falsy.
* For an attribute with an empty value, pass an empty string instead.
@ -100,9 +126,7 @@ function isAffecting(attrRow: AttributeRow, affectedNote: FNote | null | undefin
}
}
// TODO: This doesn't seem right.
//@ts-ignore
if (this.isInheritable) {
if (attrRow.isInheritable) {
for (const owningNote of owningNotes) {
if (owningNote.hasAncestor(attrNote.noteId, true)) {
return true;
@ -116,8 +140,10 @@ function isAffecting(attrRow: AttributeRow, affectedNote: FNote | null | undefin
export default {
addLabel,
setLabel,
setRelation,
setAttribute,
removeAttributeById,
removeOwnedLabelByName,
removeOwnedRelationByName,
isAffecting
};

View File

@ -1,6 +1,6 @@
import utils from "./utils.js";
import server from "./server.js";
import toastService, { type ToastOptions } from "./toast.js";
import toastService, { type ToastOptionsWithRequiredId } from "./toast.js";
import froca from "./froca.js";
import hoistedNoteService from "./hoisted_note.js";
import ws from "./ws.js";
@ -176,11 +176,6 @@ async function moveNodeUpInHierarchy(node: Fancytree.FancytreeNode) {
toastService.showError(resp.message);
return;
}
if (!hoistedNoteService.isTopLevelNode(node) && node.getParent().getChildren().length <= 1) {
node.getParent().folder = false;
node.getParent().renderTitle();
}
}
function filterSearchBranches(branchIds: string[]) {
@ -200,11 +195,11 @@ function filterRootNote(branchIds: string[]) {
});
}
function makeToast(id: string, message: string): ToastOptions {
function makeToast(id: string, message: string): ToastOptionsWithRequiredId {
return {
id: id,
id,
title: t("branches.delete-status"),
message: message,
message,
icon: "trash"
};
}
@ -221,7 +216,7 @@ ws.subscribeToMessages(async (message) => {
toastService.showPersistent(makeToast(message.taskId, t("branches.delete-notes-in-progress", { count: message.progressCount })));
} else if (message.type === "taskSucceeded") {
const toast = makeToast(message.taskId, t("branches.delete-finished-successfully"));
toast.closeAfter = 5000;
toast.timeout = 5000;
toastService.showPersistent(toast);
}
@ -239,7 +234,7 @@ ws.subscribeToMessages(async (message) => {
toastService.showPersistent(makeToast(message.taskId, t("branches.undeleting-notes-in-progress", { count: message.progressCount })));
} else if (message.type === "taskSucceeded") {
const toast = makeToast(message.taskId, t("branches.undeleting-notes-finished-successfully"));
toast.closeAfter = 5000;
toast.timeout = 5000;
toastService.showPersistent(toast);
}
@ -247,7 +242,7 @@ ws.subscribeToMessages(async (message) => {
async function cloneNoteToBranch(childNoteId: string, parentBranchId: string, prefix?: string) {
const resp = await server.put<Response>(`notes/${childNoteId}/clone-to-branch/${parentBranchId}`, {
prefix: prefix
prefix
});
if (!resp.success) {
@ -257,7 +252,7 @@ async function cloneNoteToBranch(childNoteId: string, parentBranchId: string, pr
async function cloneNoteToParentNote(childNoteId: string, parentNoteId: string, prefix?: string) {
const resp = await server.put<Response>(`notes/${childNoteId}/clone-to-note/${parentNoteId}`, {
prefix: prefix
prefix
});
if (!resp.success) {

View File

@ -0,0 +1,44 @@
import { describe, expect, it } from "vitest";
import { Bundle, executeBundle } from "./bundle";
import { buildNote } from "../test/easy-froca";
describe("Script bundle", () => {
it("dayjs is available", async () => {
const script = /* js */`return api.dayjs().format("YYYY-MM-DD");`;
const bundle = getBundle(script);
const result = await executeBundle(bundle, null, $());
expect(result).toMatch(/^\d{4}-\d{2}-\d{2}$/);
});
it("dayjs is-same-or-before plugin exists", async () => {
const script = /* js */`return api.dayjs("2023-10-01").isSameOrBefore(api.dayjs("2023-10-02"));`;
const bundle = getBundle(script);
const result = await executeBundle(bundle, null, $());
expect(result).toBe(true);
});
});
function getBundle(script: string) {
const id = buildNote({
title: "Script note"
}).noteId;
const bundle: Bundle = {
script: [
'',
`apiContext.modules['${id}'] = { exports: {} };`,
`return await ((async function(exports, module, require, api) {`,
`try {`,
`${script}`,
`;`,
`} catch (e) { throw new Error(\"Load of script note \\\"Client\\\" (${id}) failed with: \" + e.message); }`,
`for (const exportKey in exports) module.exports[exportKey] = exports[exportKey];`,
`return module.exports;`,
`}).call({}, {}, apiContext.modules['${id}'], apiContext.require([]), apiContext.apis['${id}']));`,
''
].join('\n'),
html: "",
noteId: id,
allNoteIds: [ id ]
};
return bundle;
}

View File

@ -27,7 +27,7 @@ async function getAndExecuteBundle(noteId: string, originEntity = null, script =
return await executeBundle(bundle, originEntity);
}
async function executeBundle(bundle: Bundle, originEntity?: Entity | null, $container?: JQuery<HTMLElement>) {
export async function executeBundle(bundle: Bundle, originEntity?: Entity | null, $container?: JQuery<HTMLElement>) {
const apiContext = await ScriptContext(bundle.noteId, bundle.allNoteIds, originEntity, $container);
try {
@ -36,10 +36,17 @@ async function executeBundle(bundle: Bundle, originEntity?: Entity | null, $cont
}.call(apiContext);
} catch (e: any) {
const note = await froca.getNote(bundle.noteId);
const message = `Execution of JS note "${note?.title}" with ID ${bundle.noteId} failed with error: ${e?.message}`;
showError(message);
logError(message);
toastService.showPersistent({
id: `custom-script-failure-${note?.noteId}`,
title: t("toast.bundle-error.title"),
icon: "bx bx-error-circle",
message: t("toast.bundle-error.message", {
id: note?.noteId,
title: note?.title,
message: e.message
})
});
logError("Widget initialization failed: ", e);
}
}
@ -102,8 +109,9 @@ async function getWidgetBundlesByParent() {
const noteId = bundle.noteId;
const note = await froca.getNote(noteId);
toastService.showPersistent({
id: `custom-script-failure-${noteId}`,
title: t("toast.bundle-error.title"),
icon: "alert",
icon: "bx bx-error-circle",
message: t("toast.bundle-error.message", {
id: noteId,
title: note?.title,

View File

@ -2,32 +2,31 @@ import renderService from "./render.js";
import protectedSessionService from "./protected_session.js";
import protectedSessionHolder from "./protected_session_holder.js";
import openService from "./open.js";
import froca from "./froca.js";
import utils from "./utils.js";
import linkService from "./link.js";
import treeService from "./tree.js";
import FNote from "../entities/fnote.js";
import FAttachment from "../entities/fattachment.js";
import imageContextMenuService from "../menus/image_context_menu.js";
import { applySingleBlockSyntaxHighlight, formatCodeBlocks } from "./syntax_highlight.js";
import { applySingleBlockSyntaxHighlight } from "./syntax_highlight.js";
import { loadElkIfNeeded, postprocessMermaidSvg } from "./mermaid.js";
import renderDoc from "./doc_renderer.js";
import { t } from "../services/i18n.js";
import WheelZoom from 'vanilla-js-wheel-zoom';
import { renderMathInElement } from "./math.js";
import { normalizeMimeTypeForCKEditor } from "@triliumnext/commons";
import renderText from "./content_renderer_text.js";
let idCounter = 1;
interface Options {
export interface RenderOptions {
tooltip?: boolean;
trim?: boolean;
imageHasZoom?: boolean;
/** If enabled, it will prevent the default behavior in which an empty note would display a list of children. */
noChildrenList?: boolean;
}
const CODE_MIME_TYPES = new Set(["application/json"]);
async function getRenderedContent(this: {} | { ctx: string }, entity: FNote | FAttachment, options: Options = {}) {
export async function getRenderedContent(this: {} | { ctx: string }, entity: FNote | FAttachment, options: RenderOptions = {}) {
options = Object.assign(
{
@ -42,7 +41,7 @@ async function getRenderedContent(this: {} | { ctx: string }, entity: FNote | FA
const $renderedContent = $('<div class="rendered-content">');
if (type === "text" || type === "book") {
await renderText(entity, $renderedContent);
await renderText(entity, $renderedContent, options);
} else if (type === "code") {
await renderCode(entity, $renderedContent);
} else if (["image", "canvas", "mindMap"].includes(type)) {
@ -114,32 +113,6 @@ async function getRenderedContent(this: {} | { ctx: string }, entity: FNote | FA
};
}
async function renderText(note: FNote | FAttachment, $renderedContent: JQuery<HTMLElement>) {
// entity must be FNote
const blob = await note.getBlob();
if (blob && !utils.isHtmlEmpty(blob.content)) {
$renderedContent.append($('<div class="ck-content">').html(blob.content));
if ($renderedContent.find("span.math-tex").length > 0) {
renderMathInElement($renderedContent[0], { trust: true });
}
const getNoteIdFromLink = (el: HTMLElement) => treeService.getNoteIdFromUrl($(el).attr("href") || "");
const referenceLinks = $renderedContent.find("a.reference-link");
const noteIdsToPrefetch = referenceLinks.map((i, el) => getNoteIdFromLink(el));
await froca.getNotes(noteIdsToPrefetch);
for (const el of referenceLinks) {
await linkService.loadReferenceLinkTitle($(el));
}
await formatCodeBlocks($renderedContent);
} else if (note instanceof FNote) {
await renderChildrenList($renderedContent, note);
}
}
/**
* Renders a code note, by displaying its content and applying syntax highlighting based on the selected MIME type.
*/
@ -161,7 +134,7 @@ async function renderCode(note: FNote | FAttachment, $renderedContent: JQuery<HT
await applySingleBlockSyntaxHighlight($codeBlock, normalizeMimeTypeForCKEditor(note.mime));
}
function renderImage(entity: FNote | FAttachment, $renderedContent: JQuery<HTMLElement>, options: Options = {}) {
function renderImage(entity: FNote | FAttachment, $renderedContent: JQuery<HTMLElement>, options: RenderOptions = {}) {
const encodedTitle = encodeURIComponent(entity.title);
let url;
@ -303,40 +276,6 @@ async function renderMermaid(note: FNote | FAttachment, $renderedContent: JQuery
}
}
/**
* @param {jQuery} $renderedContent
* @param {FNote} note
* @returns {Promise<void>}
*/
async function renderChildrenList($renderedContent: JQuery<HTMLElement>, note: FNote) {
let childNoteIds = note.getChildNoteIds();
if (!childNoteIds.length) {
return;
}
$renderedContent.css("padding", "10px");
$renderedContent.addClass("text-with-ellipsis");
if (childNoteIds.length > 10) {
childNoteIds = childNoteIds.slice(0, 10);
}
// just load the first 10 child notes
const childNotes = await froca.getNotes(childNoteIds);
for (const childNote of childNotes) {
$renderedContent.append(
await linkService.createLink(`${note.noteId}/${childNote.noteId}`, {
showTooltip: false,
showNoteIcon: true
})
);
$renderedContent.append("<br>");
}
}
function getRenderingType(entity: FNote | FAttachment) {
let type: string = "";
if ("type" in entity) {

View File

@ -0,0 +1,126 @@
import { formatCodeBlocks } from "./syntax_highlight.js";
import { getMermaidConfig } from "./mermaid.js";
import { renderMathInElement } from "./math.js";
import FNote from "../entities/fnote.js";
import FAttachment from "../entities/fattachment.js";
import tree from "./tree.js";
import froca from "./froca.js";
import link from "./link.js";
import { isHtmlEmpty } from "./utils.js";
import { default as content_renderer, type RenderOptions } from "./content_renderer.js";
export default async function renderText(note: FNote | FAttachment, $renderedContent: JQuery<HTMLElement>, options: RenderOptions = {}) {
// entity must be FNote
const blob = await note.getBlob();
if (blob && !isHtmlEmpty(blob.content)) {
$renderedContent.append($('<div class="ck-content">').html(blob.content));
await renderIncludedNotes($renderedContent[0]);
if ($renderedContent.find("span.math-tex").length > 0) {
renderMathInElement($renderedContent[0], { trust: true });
}
const getNoteIdFromLink = (el: HTMLElement) => tree.getNoteIdFromUrl($(el).attr("href") || "");
const referenceLinks = $renderedContent.find("a.reference-link");
const noteIdsToPrefetch = referenceLinks.map((i, el) => getNoteIdFromLink(el));
await froca.getNotes(noteIdsToPrefetch);
for (const el of referenceLinks) {
await link.loadReferenceLinkTitle($(el));
}
await rewriteMermaidDiagramsInContainer($renderedContent[0] as HTMLDivElement);
await formatCodeBlocks($renderedContent);
} else if (note instanceof FNote && !options.noChildrenList) {
await renderChildrenList($renderedContent, note);
}
}
async function renderIncludedNotes(contentEl: HTMLElement) {
// TODO: Consider duplicating with server's share/content_renderer.ts.
const includeNoteEls = contentEl.querySelectorAll("section.include-note");
// Gather the list of items to load.
const noteIds: string[] = [];
for (const includeNoteEl of includeNoteEls) {
const noteId = includeNoteEl.getAttribute("data-note-id");
if (noteId) {
noteIds.push(noteId);
}
}
// Load the required notes.
await froca.getNotes(noteIds);
// Render and integrate the notes.
for (const includeNoteEl of includeNoteEls) {
const noteId = includeNoteEl.getAttribute("data-note-id");
if (!noteId) continue;
const note = froca.getNoteFromCache(noteId);
if (!note) {
console.warn(`Unable to include ${noteId} because it could not be found.`);
continue;
}
const renderedContent = (await content_renderer.getRenderedContent(note)).$renderedContent;
includeNoteEl.replaceChildren(...renderedContent);
}
}
/** Rewrite the code block from <pre><code> to <div> in order not to apply a codeblock style to it. */
export async function rewriteMermaidDiagramsInContainer(container: HTMLDivElement) {
const mermaidBlocks = container.querySelectorAll('pre:has(code[class="language-mermaid"])');
if (!mermaidBlocks.length) return;
const nodes: HTMLElement[] = [];
for (const mermaidBlock of mermaidBlocks) {
const div = document.createElement("div");
div.classList.add("mermaid-diagram");
div.innerHTML = mermaidBlock.querySelector("code")?.innerHTML ?? "";
mermaidBlock.replaceWith(div);
nodes.push(div);
}
}
export async function applyInlineMermaid(container: HTMLDivElement) {
// Initialize mermaid
const mermaid = (await import("mermaid")).default;
mermaid.initialize(getMermaidConfig());
const nodes = Array.from(container.querySelectorAll<HTMLElement>("div.mermaid-diagram"));
try {
await mermaid.run({ nodes });
} catch (e) {
console.log(e);
}
}
async function renderChildrenList($renderedContent: JQuery<HTMLElement>, note: FNote) {
let childNoteIds = note.getChildNoteIds();
if (!childNoteIds.length) {
return;
}
$renderedContent.css("padding", "10px");
$renderedContent.addClass("text-with-ellipsis");
if (childNoteIds.length > 10) {
childNoteIds = childNoteIds.slice(0, 10);
}
// just load the first 10 child notes
const childNotes = await froca.getNotes(childNoteIds);
for (const childNote of childNotes) {
$renderedContent.append(
await link.createLink(`${note.noteId}/${childNote.noteId}`, {
showTooltip: false,
showNoteIcon: true
})
);
$renderedContent.append("<br>");
}
}

View File

@ -1,26 +1,91 @@
import clsx from "clsx";
import {readCssVar} from "../utils/css-var";
import Color, { ColorInstance } from "color";
const registeredClasses = new Set<string>();
const colorsWithHue = new Set<string>();
function createClassForColor(color: string | null) {
if (!color?.trim()) {
return "";
}
// Read the color lightness limits defined in the theme as CSS variables
const normalizedColorName = color.replace(/[^a-z0-9]/gi, "");
const lightThemeColorMaxLightness = readCssVar(
document.documentElement,
"tree-item-light-theme-max-color-lightness"
).asNumber(70);
if (!normalizedColorName.trim()) {
return "";
}
const darkThemeColorMinLightness = readCssVar(
document.documentElement,
"tree-item-dark-theme-min-color-lightness"
).asNumber(50);
const className = `color-${normalizedColorName}`;
function createClassForColor(colorString: string | null) {
if (!colorString?.trim()) return "";
const color = parseColor(colorString);
if (!color) return "";
const className = `color-${color.hex().substring(1)}`;
if (!registeredClasses.has(className)) {
// make the active fancytree selector more specific than the normal color setting
$("head").append(`<style>.${className}, span.fancytree-active.${className} { color: ${color} !important; }</style>`);
const adjustedColor = adjustColorLightness(color, lightThemeColorMaxLightness!,
darkThemeColorMinLightness!);
const hue = getHue(color);
$("head").append(`<style>
.${className}, span.fancytree-active.${className} {
--original-custom-color: ${color.hex()};
--light-theme-custom-color: ${adjustedColor.lightThemeColor};
--dark-theme-custom-color: ${adjustedColor.darkThemeColor};
--custom-color-hue: ${hue ?? 'unset'};
}
</style>`);
registeredClasses.add(className);
if (hue !== undefined) {
colorsWithHue.add(className);
}
}
return className;
return clsx("use-note-color", className, colorsWithHue.has(className) && "with-hue");
}
function parseColor(color: string) {
try {
return Color(color);
} catch (ex) {
console.error(ex);
}
}
/**
* Returns a pair of colors one optimized for light themes and the other for dark themes, derived
* from the specified color to maintain sufficient contrast with each theme.
* The adjustment is performed by limiting the colors lightness in the CIELAB color space,
* according to the lightThemeMaxLightness and darkThemeMinLightness parameters.
*/
function adjustColorLightness(color: ColorInstance, lightThemeMaxLightness: number, darkThemeMinLightness: number) {
const labColor = color.lab();
const lightness = labColor.l();
// For the light theme, limit the maximum lightness
const lightThemeColor = labColor.l(Math.min(lightness, lightThemeMaxLightness)).hex();
// For the dark theme, limit the minimum lightness
const darkThemeColor = labColor.l(Math.max(lightness, darkThemeMinLightness)).hex();
return {lightThemeColor, darkThemeColor};
}
/** Returns the hue of the specified color, or undefined if the color is grayscale. */
function getHue(color: ColorInstance) {
const hslColor = color.hsl();
if (hslColor.saturationl() > 0) {
return hslColor.hue();
}
}
export function getReadableTextColor(bgColor: string) {
const colorInstance = Color(bgColor);
return colorInstance.isLight() ? "#000" : "#fff";
}
export default {

View File

@ -1,4 +1,4 @@
import dayjs from "dayjs";
import { dayjs } from "@triliumnext/commons";
import type { FNoteRow } from "../entities/fnote.js";
import froca from "./froca.js";
import server from "./server.js";

View File

@ -12,7 +12,7 @@
* @param whether to execute at the beginning (`false`)
* @api public
*/
function debounce<T>(func: (...args: unknown[]) => T, waitMs: number, immediate: boolean = false) {
function debounce<T>(func: (...args: any[]) => T, waitMs: number, immediate: boolean = false) {
let timeout: any; // TODO: fix once we split client and server.
let args: unknown[] | null;
let context: unknown;

View File

@ -1,8 +1,9 @@
import { Modal } from "bootstrap";
import appContext from "../components/app_context.js";
import type { ConfirmDialogOptions, ConfirmDialogResult, ConfirmWithMessageOptions } from "../widgets/dialogs/confirm.js";
import type { ConfirmDialogOptions, ConfirmDialogResult, ConfirmWithMessageOptions, MessageType } from "../widgets/dialogs/confirm.js";
import type { PromptDialogOptions } from "../widgets/dialogs/prompt.js";
import { focusSavedElement, saveFocusedElement } from "./focus.js";
import { InfoExtraProps } from "../widgets/dialogs/info.jsx";
export async function openDialog($dialog: JQuery<HTMLElement>, closeActDialog = true, config?: Partial<Modal.Options>) {
if (closeActDialog) {
@ -37,8 +38,8 @@ export function closeActiveDialog() {
}
}
async function info(message: string) {
return new Promise((res) => appContext.triggerCommand("showInfoDialog", { message, callback: res }));
async function info(message: MessageType, extraProps?: InfoExtraProps) {
return new Promise((res) => appContext.triggerCommand("showInfoDialog", { ...extraProps, message, callback: res }));
}
/**

View File

@ -1,4 +1,5 @@
import type FNote from "../entities/fnote.js";
import { applyReferenceLinks } from "../widgets/type_widgets/text/read_only_helper.js";
import { getCurrentLanguage } from "./i18n.js";
import { formatCodeBlocks } from "./syntax_highlight.js";
@ -10,18 +11,18 @@ export default function renderDoc(note: FNote) {
if (docName) {
// find doc based on language
const url = getUrl(docName, getCurrentLanguage());
$content.load(url, (response, status) => {
$content.load(url, async (response, status) => {
// fallback to english doc if no translation available
if (status === "error") {
const fallbackUrl = getUrl(docName, "en");
$content.load(fallbackUrl, () => {
processContent(fallbackUrl, $content)
$content.load(fallbackUrl, async () => {
await processContent(fallbackUrl, $content)
resolve($content);
});
return;
}
processContent(url, $content);
await processContent(url, $content);
resolve($content);
});
} else {
@ -32,7 +33,7 @@ export default function renderDoc(note: FNote) {
});
}
function processContent(url: string, $content: JQuery<HTMLElement>) {
async function processContent(url: string, $content: JQuery<HTMLElement>) {
const dir = url.substring(0, url.lastIndexOf("/"));
// Images are relative to the docnote but that will not work when rendered in the application since the path breaks.
@ -42,6 +43,9 @@ function processContent(url: string, $content: JQuery<HTMLElement>) {
});
formatCodeBlocks($content);
// Apply reference links.
await applyReferenceLinks($content[0]);
}
function getUrl(docNameValue: string, language: string) {

View File

@ -0,0 +1,51 @@
import { t } from "./i18n";
import options from "./options";
interface ExperimentalFeature {
id: string;
name: string;
description: string;
}
export const experimentalFeatures = [
{
id: "new-layout",
name: t("experimental_features.new_layout_name"),
description: t("experimental_features.new_layout_description"),
}
] as const satisfies ExperimentalFeature[];
type ExperimentalFeatureId = typeof experimentalFeatures[number]["id"];
let enabledFeatures: Set<ExperimentalFeatureId> | null = null;
export function isExperimentalFeatureEnabled(featureId: ExperimentalFeatureId): boolean {
return getEnabledFeatures().has(featureId);
}
export function getEnabledExperimentalFeatureIds() {
return getEnabledFeatures().values();
}
export async function toggleExperimentalFeature(featureId: ExperimentalFeatureId, enable: boolean) {
const features = new Set(getEnabledFeatures());
if (enable) {
features.add(featureId);
} else {
features.delete(featureId);
}
await options.save("experimentalFeatures", JSON.stringify(Array.from(features)));
}
function getEnabledFeatures() {
if (!enabledFeatures) {
let features: ExperimentalFeatureId[] = [];
try {
features = JSON.parse(options.get("experimentalFeatures")) as ExperimentalFeatureId[];
} catch (e) {
console.warn("Failed to parse experimental features from options:", e);
}
enabledFeatures = new Set(features);
}
return enabledFeatures;
}

View File

@ -13,7 +13,7 @@ export interface Froca {
getBlob(entityType: string, entityId: string): Promise<FBlob | null>;
getNote(noteId: string, silentNotFoundError?: boolean): Promise<FNote | null>;
getNoteFromCache(noteId: string): FNote;
getNoteFromCache(noteId: string): FNote | undefined;
getNotesFromCache(noteIds: string[], silentNotFoundError?: boolean): FNote[];
getNotes(noteIds: string[], silentNotFoundError?: boolean): Promise<FNote[]>;

View File

@ -40,20 +40,23 @@ class FrocaImpl implements Froca {
constructor() {
this.initializedPromise = this.loadInitialTree();
this.#clear();
}
async loadInitialTree() {
const resp = await server.get<SubtreeResponse>("tree");
// clear the cache only directly before adding new content which is important for e.g., switching to protected session
this.#clear();
this.addResp(resp);
}
#clear() {
this.notes = {};
this.branches = {};
this.attributes = {};
this.attachments = {};
this.blobPromises = {};
this.addResp(resp);
}
async loadSubTree(subTreeNoteId: string) {
@ -285,7 +288,7 @@ class FrocaImpl implements Froca {
return (await this.getNotes([noteId], silentNotFoundError))[0];
}
getNoteFromCache(noteId: string) {
getNoteFromCache(noteId: string): FNote | undefined {
if (!noteId) {
throw new Error("Empty noteId");
}

View File

@ -11,16 +11,16 @@ import RightPanelWidget from "../widgets/right_panel_widget.js";
import ws from "./ws.js";
import appContext from "../components/app_context.js";
import NoteContextAwareWidget from "../widgets/note_context_aware_widget.js";
import BasicWidget from "../widgets/basic_widget.js";
import BasicWidget, { ReactWrappedWidget } from "../widgets/basic_widget.js";
import SpacedUpdate from "./spaced_update.js";
import shortcutService from "./shortcuts.js";
import dialogService from "./dialog.js";
import type FNote from "../entities/fnote.js";
import { t } from "./i18n.js";
import dayjs from "dayjs";
import { dayjs } from "@triliumnext/commons";
import type NoteContext from "../components/note_context.js";
import type NoteDetailWidget from "../widgets/note_detail.js";
import type Component from "../components/component.js";
import { formatLogMessage } from "@triliumnext/commons";
/**
* A whole number
@ -77,6 +77,10 @@ export interface Api {
/**
* Entity whose event triggered this execution.
*
* <p>
* For front-end scripts, generally there's no origin entity specified since the scripts are run by the user or automatically by the UI (widgets).
* If there is an origin entity specified, then it's going to be a note entity.
*/
originEntity: unknown | null;
@ -278,12 +282,16 @@ export interface Api {
getActiveContextNote(): FNote;
/**
* @returns returns active context (split)
* Obtains the currently active/focused split in the current tab.
*
* Note that this method does not return the note context of the "Quick edit" panel, it will return the note context behind it.
*/
getActiveContext(): NoteContext;
/**
* @returns returns active main context (first split in a tab, represents the tab as a whole)
* Obtains the main context of the current tab. This is the left-most split.
*
* Note that this method does not return the note context of the "Quick edit" panel, it will return the note context behind it.
*/
getActiveMainContext(): NoteContext;
@ -316,7 +324,7 @@ export interface Api {
* Get access to the widget handling note detail. Methods like `getWidgetType()` and `getTypeWidget()` to get to the
* implementation of actual widget type.
*/
getActiveNoteDetailWidget(): Promise<NoteDetailWidget>;
getActiveNoteDetailWidget(): Promise<ReactWrappedWidget>;
/**
* @returns returns a note path of active note or null if there isn't active note
*/
@ -455,7 +463,7 @@ export interface Api {
/**
* Log given message to the log pane in UI
*/
log(message: string): void;
log(message: string | object): void;
}
/**
@ -696,7 +704,7 @@ function FrontendScriptApi(this: Api, startNote: FNote, currentNote: FNote, orig
this.log = (message) => {
const { noteId } = this.startNote;
message = `${utils.now()}: ${message}`;
message = `${utils.now()}: ${formatLogMessage(message)}`;
console.log(`Script ${noteId}: ${message}`);

View File

@ -1,28 +0,0 @@
/**
* The front script API is accessible to code notes with the "JS (frontend)" language.
*
* The entire API is exposed as a single global: {@link api}
*
* @module Frontend Script API
*/
/**
* This file creates the entrypoint for TypeDoc that simulates the context from within a
* script note.
*
* Make sure to keep in line with frontend's `script_context.ts`.
*/
export type { default as BasicWidget } from "../widgets/basic_widget.js";
export type { default as FAttachment } from "../entities/fattachment.js";
export type { default as FAttribute } from "../entities/fattribute.js";
export type { default as FBranch } from "../entities/fbranch.js";
export type { default as FNote } from "../entities/fnote.js";
export type { Api } from "./frontend_script_api.js";
export type { default as NoteContextAwareWidget } from "../widgets/note_context_aware_widget.js";
export type { default as RightPanelWidget } from "../widgets/right_panel_widget.js";
import FrontendScriptApi, { type Api } from "./frontend_script_api.js";
//@ts-expect-error
export const api: Api = new FrontendScriptApi();

View File

@ -20,9 +20,6 @@ function setupGlobs() {
window.glob.froca = froca;
window.glob.treeCache = froca; // compatibility for CKEditor builds for a while
// for CKEditor integration (button on block toolbar)
window.glob.importMarkdownInline = async () => appContext.triggerCommand("importMarkdownInline");
window.onerror = function (msg, url, lineNo, columnNo, error) {
const string = String(msg).toLowerCase();

View File

@ -6,7 +6,7 @@ import { describe, expect, it } from "vitest";
describe("i18n", () => {
it("translations are valid JSON", () => {
for (const locale of LOCALES) {
if (locale.contentOnly) {
if (locale.contentOnly || locale.id === "en_rtl") {
continue;
}

View File

@ -2,7 +2,7 @@ import options from "./options.js";
import i18next from "i18next";
import i18nextHttpBackend from "i18next-http-backend";
import server from "./server.js";
import type { Locale } from "@triliumnext/commons";
import { LOCALE_IDS, setDayjsLocale, type Locale } from "@triliumnext/commons";
import { initReactI18next } from "react-i18next";
let locales: Locale[] | null;
@ -13,7 +13,7 @@ let locales: Locale[] | null;
export let translationsInitializedPromise = $.Deferred();
export async function initLocale() {
const locale = (options.get("locale") as string) || "en";
const locale = ((options.get("locale") as string) || "en") as LOCALE_IDS;
locales = await server.get<Locale[]>("options/locales");
@ -27,6 +27,7 @@ export async function initLocale() {
returnEmptyString: false
});
await setDayjsLocale(locale);
translationsInitializedPromise.resolve();
}

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