mirror of
https://github.com/zadam/trilium.git
synced 2025-11-06 05:15:59 +01:00
Compare commits
1426 Commits
v0.61.4-be
...
v0.90.6-be
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4106cc61b5 | ||
|
|
7c0d6930fa | ||
|
|
1c8cc36402 | ||
|
|
4f6392ce14 | ||
|
|
c6abbf0cf7 | ||
|
|
89beda16fd | ||
|
|
6dee56d72e | ||
|
|
e4d6ab3a6e | ||
|
|
c964f9eeff | ||
|
|
7248d5bab8 | ||
|
|
42c714891a | ||
|
|
2b01392b41 | ||
|
|
8eb12b2280 | ||
|
|
67528789ed | ||
|
|
2e86ae6556 | ||
|
|
1e6e9fa417 | ||
|
|
a27feee1be | ||
|
|
6a3e4671b6 | ||
|
|
6a8825d972 | ||
|
|
3a87f8bc31 | ||
|
|
15a041a195 | ||
|
|
891621be69 | ||
|
|
4113574a43 | ||
|
|
cef8086419 | ||
|
|
9d59203121 | ||
|
|
f426e3d764 | ||
|
|
f378411bb8 | ||
|
|
b882bcb1df | ||
|
|
8abb8f9e0e | ||
|
|
191c9e9c82 | ||
|
|
94c5fba66f | ||
|
|
86c74c7fdb | ||
|
|
9cf45468ae | ||
|
|
c2ce7d617a | ||
|
|
50c0252055 | ||
|
|
f82ff5aa76 | ||
|
|
0b5945f219 | ||
|
|
0bdb6d7e96 | ||
|
|
e78ab589b0 | ||
|
|
339bd84cf9 | ||
|
|
529760213b | ||
|
|
1c17bf82a0 | ||
|
|
200e1c016c | ||
|
|
f29e047ba2 | ||
|
|
466d4966fd | ||
|
|
8a83267ead | ||
|
|
5e8be78760 | ||
|
|
2a6870d73b | ||
|
|
ace237989c | ||
|
|
61e0678af4 | ||
|
|
27a287f8ea | ||
|
|
87b8c623c5 | ||
|
|
64b4aba6ba | ||
|
|
5c2446be67 | ||
|
|
1437df7de1 | ||
|
|
ad88042e5b | ||
|
|
f3669dfc42 | ||
|
|
efdc3ebfac | ||
|
|
2751d655e6 | ||
|
|
73ba913f59 | ||
|
|
49a373426e | ||
|
|
392fb2abad | ||
|
|
d543e8147f | ||
|
|
27dbcdd281 | ||
|
|
0dbad48d47 | ||
|
|
07170a5a39 | ||
|
|
13860a3f16 | ||
|
|
95b7a30d06 | ||
|
|
b32f3ffd84 | ||
|
|
6c54f3c804 | ||
|
|
1b08487ee9 | ||
|
|
ff3d01f2c7 | ||
|
|
10df00d62f | ||
|
|
73c19c6cbf | ||
|
|
c2959fe52d | ||
|
|
594f816702 | ||
|
|
e39dd1525d | ||
|
|
945bc7ded3 | ||
|
|
5df6f32fda | ||
|
|
d31bc8a0bd | ||
|
|
73e25fc721 | ||
|
|
5df371b20a | ||
|
|
e6e478e857 | ||
|
|
bfea3d53b3 | ||
|
|
9fa31db207 | ||
|
|
84efc13b52 | ||
|
|
607af4b8fc | ||
|
|
08060abe76 | ||
|
|
27f513e2a3 | ||
|
|
40651e9852 | ||
|
|
c6d043b42c | ||
|
|
3a3dae3d02 | ||
|
|
5c326c553c | ||
|
|
981ff34ac4 | ||
|
|
f5330cb915 | ||
|
|
dab97071c0 | ||
|
|
84056415ca | ||
|
|
9cc2e7745e | ||
|
|
cb57ceb541 | ||
|
|
0fd92a379b | ||
|
|
1a17b8907a | ||
|
|
b7ed153b14 | ||
|
|
b1163624ba | ||
|
|
59a92c33b6 | ||
|
|
55403c6e76 | ||
|
|
35171fe2b4 | ||
|
|
95158c30b7 | ||
|
|
da20a377c1 | ||
|
|
fcbb178096 | ||
|
|
553a2f9929 | ||
|
|
e5213640d7 | ||
|
|
c95da1c813 | ||
|
|
2ee290034a | ||
|
|
69a81afd09 | ||
|
|
a18ac7c504 | ||
|
|
07bd3de4fb | ||
|
|
ef955a300a | ||
|
|
19cb783e66 | ||
|
|
d2dd61f297 | ||
|
|
a769aef059 | ||
|
|
6eb6bfa25d | ||
|
|
6b916c1494 | ||
|
|
08a4b2d19a | ||
|
|
2890885157 | ||
|
|
2d65797dfc | ||
|
|
bb2fa70cd6 | ||
|
|
937e87d760 | ||
|
|
808797a48b | ||
|
|
c61f76f020 | ||
|
|
16073ea4aa | ||
|
|
3163b8687b | ||
|
|
1c1d71e2d0 | ||
|
|
e70531fcc1 | ||
|
|
12756a165f | ||
|
|
fa4b890bce | ||
|
|
c1ab1296f8 | ||
|
|
1284cf9868 | ||
|
|
b0480e1667 | ||
|
|
ca6b4c3497 | ||
|
|
1172908e41 | ||
|
|
4a8c3d719f | ||
|
|
bd732386e4 | ||
|
|
8e87bcf37b | ||
|
|
0198f135ac | ||
|
|
ff3effdb31 | ||
|
|
22d344e764 | ||
|
|
c85a8ecc7d | ||
|
|
2fec1b79af | ||
|
|
69586e6876 | ||
|
|
d2bd369144 | ||
|
|
47e8977371 | ||
|
|
71f8d09043 | ||
|
|
216afdd494 | ||
|
|
2de2c7fc9d | ||
|
|
e7eec0f328 | ||
|
|
4c3694bfa3 | ||
|
|
34d2f20e16 | ||
|
|
a78859fc2a | ||
|
|
cc98ae0ea4 | ||
|
|
6b8cb54e71 | ||
|
|
5609612473 | ||
|
|
317505484e | ||
|
|
d1f4d99c19 | ||
|
|
2e56db6475 | ||
|
|
1656cfae63 | ||
|
|
295cd6ac83 | ||
|
|
bd20cec286 | ||
|
|
115c2576cf | ||
|
|
c204b31cda | ||
|
|
07fb8c072d | ||
|
|
9210f915ca | ||
|
|
78e908c761 | ||
|
|
68733cf0c2 | ||
|
|
b231905981 | ||
|
|
a9b094bf27 | ||
|
|
3c37f13f54 | ||
|
|
196c4f7976 | ||
|
|
f378cf9ff9 | ||
|
|
ef20645447 | ||
|
|
c4a4acdc39 | ||
|
|
54a63e7689 | ||
|
|
dcdbb092c3 | ||
|
|
e87ef882d5 | ||
|
|
221fc66ca1 | ||
|
|
ec3066caee | ||
|
|
45e2b565ef | ||
|
|
ffdc90012e | ||
|
|
307c6ebb73 | ||
|
|
9fc0b7cc38 | ||
|
|
b5e8fcaf57 | ||
|
|
0967ee1b46 | ||
|
|
c16c528270 | ||
|
|
d3803fc6f3 | ||
|
|
18515111ff | ||
|
|
ea34a1688c | ||
|
|
aa5a7294df | ||
|
|
e086ba5eb4 | ||
|
|
22dc4ef997 | ||
|
|
bc648e981e | ||
|
|
51afb63e25 | ||
|
|
6871216649 | ||
|
|
94340ab1a1 | ||
|
|
3a837cf663 | ||
|
|
edebe8f7c6 | ||
|
|
3028b20a7f | ||
|
|
2752f30f21 | ||
|
|
395cf59e59 | ||
|
|
6113990b50 | ||
|
|
71495f3878 | ||
|
|
b83c6023c4 | ||
|
|
2cc34efbde | ||
|
|
4090386cc3 | ||
|
|
ee9ce5fadc | ||
|
|
f7639d2537 | ||
|
|
16851d10b4 | ||
|
|
468e996ba1 | ||
|
|
86603573f0 | ||
|
|
690bd4ce5f | ||
|
|
daeea2258d | ||
|
|
8cc583e714 | ||
|
|
a29392e75a | ||
|
|
061b0c981d | ||
|
|
72b669b5db | ||
|
|
2a5c444eff | ||
|
|
0deb5df11d | ||
|
|
280f9a98c4 | ||
|
|
b05e51f2f1 | ||
|
|
9efa748e66 | ||
|
|
8932028a75 | ||
|
|
62e483a21a | ||
|
|
e2bdfbbedb | ||
|
|
f297105c25 | ||
|
|
ddc82853fc | ||
|
|
64f99ba637 | ||
|
|
1542eb14b3 | ||
|
|
5aa0040a83 | ||
|
|
c2e7ccddb4 | ||
|
|
c9d0d339eb | ||
|
|
d6aa4d26dd | ||
|
|
d0042b5891 | ||
|
|
f6f5cc2ecb | ||
|
|
38f19e21f0 | ||
|
|
b78ac44e73 | ||
|
|
19ad1a1b82 | ||
|
|
00b40df6e1 | ||
|
|
9d5966819b | ||
|
|
13ad877b2f | ||
|
|
138b85dd3c | ||
|
|
50a6a1f3dc | ||
|
|
42058034a5 | ||
|
|
3014b11422 | ||
|
|
a98f01d924 | ||
|
|
d09195097d | ||
|
|
676bff43d9 | ||
|
|
6a459427fb | ||
|
|
513b0c6597 | ||
|
|
36f51baf2b | ||
|
|
3cc3c751b4 | ||
|
|
5fbda79dbe | ||
|
|
b7ce4d04ba | ||
|
|
ec4b35ea75 | ||
|
|
e8dc75df51 | ||
|
|
febd1d5ab3 | ||
|
|
fcf4b57838 | ||
|
|
9885abc626 | ||
|
|
01f99d7f12 | ||
|
|
17e306a3c9 | ||
|
|
32eaded3af | ||
|
|
865c0fb981 | ||
|
|
645fd43339 | ||
|
|
85db664756 | ||
|
|
f4e7dcd5e8 | ||
|
|
4bc24246ab | ||
|
|
9cf14cc3a8 | ||
|
|
e64234b462 | ||
|
|
5295d956a2 | ||
|
|
a8814f0e9b | ||
|
|
883e71612c | ||
|
|
2efbe97286 | ||
|
|
cc9bb31b9c | ||
|
|
b2e27144b7 | ||
|
|
8dbafa3cd9 | ||
|
|
14bdd3819f | ||
|
|
72173533a6 | ||
|
|
0b7bf533fa | ||
|
|
b3791f7a6a | ||
|
|
3042ce13e7 | ||
|
|
ac9a9a7758 | ||
|
|
94c53e6342 | ||
|
|
eb91cfd650 | ||
|
|
3d955abd31 | ||
|
|
8f6087068e | ||
|
|
2754bd7a93 | ||
|
|
40f74656f3 | ||
|
|
cba15f9df5 | ||
|
|
b72626aab6 | ||
|
|
712ef92f7c | ||
|
|
c3b742df3b | ||
|
|
85eaf0cb52 | ||
|
|
c1fcb10bc0 | ||
|
|
743fee2783 | ||
|
|
9453ec4e29 | ||
|
|
74c4634da2 | ||
|
|
a8bb064557 | ||
|
|
b7809a709c | ||
|
|
2916182cdf | ||
|
|
42e3f126e4 | ||
|
|
e10df0708c | ||
|
|
46164de94a | ||
|
|
39c0250833 | ||
|
|
e5e92c8ece | ||
|
|
5f6aba8a10 | ||
|
|
e5c1d38722 | ||
|
|
835891999e | ||
|
|
729715ebfb | ||
|
|
bdc6a1fe29 | ||
|
|
931e319fbf | ||
|
|
6743eb8d1b | ||
|
|
e2aaa97a01 | ||
|
|
c2a8f4f4a3 | ||
|
|
4270ab416e | ||
|
|
d47a5c4ffe | ||
|
|
97e127a4af | ||
|
|
cfd33c802c | ||
|
|
971f52f92a | ||
|
|
71c09b1d67 | ||
|
|
f3641e5fa6 | ||
|
|
8f5859f344 | ||
|
|
a8337c51dd | ||
|
|
2f9a75b74c | ||
|
|
2d7ffaf2a8 | ||
|
|
8ca6dbe34b | ||
|
|
5ee62d4d65 | ||
|
|
3544dc6650 | ||
|
|
03cb773560 | ||
|
|
3659cad587 | ||
|
|
54b9bcb6de | ||
|
|
712b180f94 | ||
|
|
3ce2c98317 | ||
|
|
880b0420cc | ||
|
|
c0a26889e4 | ||
|
|
efc5ac0e9b | ||
|
|
86463086fa | ||
|
|
48ac02a1a7 | ||
|
|
a94c2c45b7 | ||
|
|
f81bf509cd | ||
|
|
7906c8b64f | ||
|
|
80289b8059 | ||
|
|
96aecf8544 | ||
|
|
deb2f389df | ||
|
|
ab25778e7e | ||
|
|
d93a94322e | ||
|
|
156d3c421c | ||
|
|
7fc3fdab94 | ||
|
|
625e9efcf3 | ||
|
|
e2d43b4538 | ||
|
|
3b0ea51f5f | ||
|
|
9320a548f4 | ||
|
|
4081f44a0e | ||
|
|
d21ca03e9c | ||
|
|
355c4164c9 | ||
|
|
989a0d6cd9 | ||
|
|
8a0fec0a63 | ||
|
|
eb91834539 | ||
|
|
c104475cd6 | ||
|
|
2a09c620fd | ||
|
|
fe03db7dba | ||
|
|
5b74a931aa | ||
|
|
ee4544cefe | ||
|
|
d84f4387c5 | ||
|
|
75e8a6cdc0 | ||
|
|
38a9ad6a46 | ||
|
|
b99510ad4f | ||
|
|
02ecdf565e | ||
|
|
f116e52228 | ||
|
|
3ff361495e | ||
|
|
50434201cf | ||
|
|
99ca701a5c | ||
|
|
f7b5dbd12f | ||
|
|
71e69d34ed | ||
|
|
738684c4c7 | ||
|
|
bcf892ca37 | ||
|
|
92b0c7f0b7 | ||
|
|
bc5a1de9b7 | ||
|
|
89314fac03 | ||
|
|
347f18058f | ||
|
|
2f0d41922b | ||
|
|
1d142b9e57 | ||
|
|
e654f053b1 | ||
|
|
d5693e21df | ||
|
|
32dc064ffa | ||
|
|
d9d8fff249 | ||
|
|
312c85ae30 | ||
|
|
f5e02102e7 | ||
|
|
f32fb168dc | ||
|
|
1871846b64 | ||
|
|
f5ebd66661 | ||
|
|
e4d464d6c9 | ||
|
|
557f6096b4 | ||
|
|
84c535ae0d | ||
|
|
e5cdccc066 | ||
|
|
ac4f902bb9 | ||
|
|
3bc83e19fa | ||
|
|
3466786a96 | ||
|
|
b58b7a6575 | ||
|
|
48cf41b5a5 | ||
|
|
7b2d70ba56 | ||
|
|
1a5649e8ac | ||
|
|
0f7446c198 | ||
|
|
0ba9fc7f5b | ||
|
|
584ba246e3 | ||
|
|
22761d8a00 | ||
|
|
7bb70bb659 | ||
|
|
f3e09c3a4b | ||
|
|
fa2d0578c0 | ||
|
|
da96344690 | ||
|
|
b508b5bbfd | ||
|
|
dc48eeb7c1 | ||
|
|
3ba8f93412 | ||
|
|
25db092b41 | ||
|
|
ae80a748af | ||
|
|
6006d01f8b | ||
|
|
7fb3abb4ea | ||
|
|
bb19cc216b | ||
|
|
709101c540 | ||
|
|
eca9459d4c | ||
|
|
24af2e55dc | ||
|
|
42f0073ab6 | ||
|
|
20ee62dfb1 | ||
|
|
2787feb593 | ||
|
|
8a5dca5dca | ||
|
|
d5ec62f797 | ||
|
|
3595ace249 | ||
|
|
ed0970b33b | ||
|
|
ed0d86c787 | ||
|
|
212d61c1d2 | ||
|
|
3067380338 | ||
|
|
76fcea7189 | ||
|
|
379c07a7fa | ||
|
|
a8d6e5b1ea | ||
|
|
5691554442 | ||
|
|
a01065908d | ||
|
|
f382d3c728 | ||
|
|
fd1f43d192 | ||
|
|
989462c1b8 | ||
|
|
bd6ef06732 | ||
|
|
b9a2be6808 | ||
|
|
ece343ac09 | ||
|
|
2fb05ab37d | ||
|
|
de342c3285 | ||
|
|
906dad62a8 | ||
|
|
0606fe01f6 | ||
|
|
1b5b3e697e | ||
|
|
3aa38b998a | ||
|
|
45bf75b864 | ||
|
|
7f2caa00cb | ||
|
|
935e882f3e | ||
|
|
e9e329c6dd | ||
|
|
faa9ebe1bc | ||
|
|
26efa9299e | ||
|
|
3dbf8fb1c1 | ||
|
|
6f6ce38538 | ||
|
|
e74eff75db | ||
|
|
7fb4a66127 | ||
|
|
ef4f0f80b9 | ||
|
|
dd14ba9e0e | ||
|
|
c39d131426 | ||
|
|
b0d6564a63 | ||
|
|
c20c8d1176 | ||
|
|
10239d1a0b | ||
|
|
f0a561565e | ||
|
|
e53b7dd297 | ||
|
|
997da1c3bc | ||
|
|
c1b5eb086b | ||
|
|
cb9b4c07e5 | ||
|
|
043313c71a | ||
|
|
62804ec67a | ||
|
|
4edb0374fc | ||
|
|
2e9a624bfd | ||
|
|
715a952148 | ||
|
|
d09578735e | ||
|
|
374a51b77c | ||
|
|
5a8442f3d8 | ||
|
|
f07a6600c9 | ||
|
|
b2f688a3e5 | ||
|
|
4a7c447528 | ||
|
|
028565d89b | ||
|
|
b55e93c7c1 | ||
|
|
ad7a29a700 | ||
|
|
f49008bf21 | ||
|
|
3ac643b3ac | ||
|
|
2e2400edb3 | ||
|
|
6c36c47135 | ||
|
|
a5f7a3a029 | ||
|
|
52af97c88f | ||
|
|
dcb5d539b3 | ||
|
|
19e776b1f6 | ||
|
|
f9a4f9b538 | ||
|
|
5277c3e6b6 | ||
|
|
e380fa5224 | ||
|
|
5eabdf8496 | ||
|
|
128af66797 | ||
|
|
80e647ffec | ||
|
|
7dc8c662ca | ||
|
|
cc55e1b657 | ||
|
|
27c2d1efbd | ||
|
|
4dc615fe68 | ||
|
|
9647738162 | ||
|
|
5b8148206d | ||
|
|
758c08ec85 | ||
|
|
cb0d1d80a1 | ||
|
|
9dcf51b117 | ||
|
|
389097bcc2 | ||
|
|
366e791e2d | ||
|
|
d570b3c428 | ||
|
|
3b3f676964 | ||
|
|
77ddf529ac | ||
|
|
ba74f39d86 | ||
|
|
76890de33b | ||
|
|
e9860e9523 | ||
|
|
44d095777c | ||
|
|
af726eff6c | ||
|
|
abd860754f | ||
|
|
1a5b3ab0e3 | ||
|
|
8a507d3cc0 | ||
|
|
645c16e450 | ||
|
|
338012ec7e | ||
|
|
e778680e94 | ||
|
|
9b9180e5c8 | ||
|
|
460bd6b979 | ||
|
|
45a751ac6c | ||
|
|
c080dab9fa | ||
|
|
75ccf9c3a7 | ||
|
|
66415abe8a | ||
|
|
431e04d039 | ||
|
|
946a02fd67 | ||
|
|
6a7f95f75b | ||
|
|
2a57765dd9 | ||
|
|
42c0a557b4 | ||
|
|
aa6cf1f11c | ||
|
|
d73b10d10d | ||
|
|
6aea3b1472 | ||
|
|
edc18e5be8 | ||
|
|
86659552ee | ||
|
|
03ab41bfba | ||
|
|
956beb1cc0 | ||
|
|
9db4e1d7d3 | ||
|
|
776d2e7402 | ||
|
|
41286d41ee | ||
|
|
4bae19b1c3 | ||
|
|
b587ec474c | ||
|
|
837b7ce3d1 | ||
|
|
05776d178e | ||
|
|
46c193dd9f | ||
|
|
5bcae52d08 | ||
|
|
4f5fa9f42b | ||
|
|
d381ef5100 | ||
|
|
0a1a8c5a27 | ||
|
|
5db499cf56 | ||
|
|
bfab6b4d5c | ||
|
|
621cc4a065 | ||
|
|
30c1810211 | ||
|
|
e284ea945c | ||
|
|
288e677495 | ||
|
|
5ea35dd851 | ||
|
|
d4bf162e92 | ||
|
|
d14cf7c246 | ||
|
|
784891409f | ||
|
|
0dbe6702ff | ||
|
|
10ec7d6b2b | ||
|
|
33d6d51d59 | ||
|
|
a71a53de97 | ||
|
|
6a0949e5b4 | ||
|
|
33a26b0b70 | ||
|
|
ab23459299 | ||
|
|
f18939942b | ||
|
|
40363f6e8e | ||
|
|
583a4420fd | ||
|
|
508b53d47b | ||
|
|
dd416ed042 | ||
|
|
a10cc7bf8b | ||
|
|
1cd6670c55 | ||
|
|
87fbd4bce8 | ||
|
|
b6c5880484 | ||
|
|
27c296fa6c | ||
|
|
fb7c0fdb4c | ||
|
|
93a0782009 | ||
|
|
508b5e3c69 | ||
|
|
f137d38300 | ||
|
|
da0829245f | ||
|
|
0a7828b9ae | ||
|
|
86808c07bd | ||
|
|
3852753a89 | ||
|
|
fe385bf2e4 | ||
|
|
013f25a49b | ||
|
|
8a30663d1e | ||
|
|
6de1291efa | ||
|
|
4f018c8ceb | ||
|
|
bf29b30004 | ||
|
|
c5561530ec | ||
|
|
f4d19e2bc1 | ||
|
|
4ed88d28e9 | ||
|
|
8ac8f6c2df | ||
|
|
ad93fe4b75 | ||
|
|
efdae79c10 | ||
|
|
a8fd3be133 | ||
|
|
0c87fab550 | ||
|
|
20c729e62b | ||
|
|
5d3e54ee9c | ||
|
|
1dc894e279 | ||
|
|
46f76d7284 | ||
|
|
6c8e9f69b0 | ||
|
|
ecb8a7f394 | ||
|
|
0ceae0a65e | ||
|
|
55eecb0f61 | ||
|
|
2750df04a3 | ||
|
|
35d11cc0d2 | ||
|
|
8fb67c9766 | ||
|
|
971c1472a5 | ||
|
|
893a563afb | ||
|
|
8b79975500 | ||
|
|
824bc4705f | ||
|
|
75d583e064 | ||
|
|
7562c28686 | ||
|
|
4ef6406a76 | ||
|
|
be978e893f | ||
|
|
95b8bf620f | ||
|
|
e74b7f6964 | ||
|
|
612907c830 | ||
|
|
6a2ed4f621 | ||
|
|
bc60d77cd7 | ||
|
|
fe4bf31de8 | ||
|
|
0c0bcdcf4e | ||
|
|
a7006df892 | ||
|
|
690048e910 | ||
|
|
2dbe3c62c2 | ||
|
|
1eefa65418 | ||
|
|
7ad977de63 | ||
|
|
d48cdb1c8d | ||
|
|
ea1da1e155 | ||
|
|
623b2730ed | ||
|
|
c0b3c8496e | ||
|
|
9fdb7b29de | ||
|
|
e89faf6786 | ||
|
|
66108c1067 | ||
|
|
eb39da19b3 | ||
|
|
105aa3e5f8 | ||
|
|
9dc22264f4 | ||
|
|
80d2a69f47 | ||
|
|
e393914b94 | ||
|
|
eff6ca3365 | ||
|
|
6a7eb9b34f | ||
|
|
1e54a9660b | ||
|
|
653fba3b71 | ||
|
|
ea47668916 | ||
|
|
81a2b206ca | ||
|
|
ddce014495 | ||
|
|
f323193c9d | ||
|
|
b811f3d399 | ||
|
|
bbbbc3b860 | ||
|
|
c9f27547a2 | ||
|
|
6bf063b92f | ||
|
|
590442b0d5 | ||
|
|
4862b324a5 | ||
|
|
f678c4337b | ||
|
|
686b9c840e | ||
|
|
2e8b2d4b81 | ||
|
|
3d423d25f8 | ||
|
|
79123b0c63 | ||
|
|
595402adea | ||
|
|
f40257b591 | ||
|
|
b6ca2281f7 | ||
|
|
186650b1cf | ||
|
|
1dad4bc80f | ||
|
|
d66a70f099 | ||
|
|
0792714e45 | ||
|
|
6ecbf1c528 | ||
|
|
5460359753 | ||
|
|
75ebe24abb | ||
|
|
3f5e5fd840 | ||
|
|
998db5ce95 | ||
|
|
7aed6d4ad4 | ||
|
|
99ea741275 | ||
|
|
e6ff99198f | ||
|
|
7c43a49046 | ||
|
|
5b30bae5b2 | ||
|
|
947aaa6156 | ||
|
|
534fe87fb1 | ||
|
|
1652a7a2ec | ||
|
|
7184c648ab | ||
|
|
be239d2230 | ||
|
|
439bf410ac | ||
|
|
5aadcb69f8 | ||
|
|
543c29e539 | ||
|
|
8bcff49198 | ||
|
|
c0cc1e3b52 | ||
|
|
19550eec6a | ||
|
|
45f2691053 | ||
|
|
ba2931b854 | ||
|
|
d5c1bd1085 | ||
|
|
606490a611 | ||
|
|
d99cc11d8b | ||
|
|
1b0690ddfc | ||
|
|
ef92d17272 | ||
|
|
7fd63e8064 | ||
|
|
d18bfb9d69 | ||
|
|
60d134a89b | ||
|
|
9b88228be9 | ||
|
|
0a7fcf399f | ||
|
|
408369fcac | ||
|
|
c435b97e10 | ||
|
|
e7c3dab56f | ||
|
|
374b1f9bb2 | ||
|
|
5f23a4e3c7 | ||
|
|
4e93209fbd | ||
|
|
1cff016923 | ||
|
|
a80a857e46 | ||
|
|
47c5f60a85 | ||
|
|
ec2e6f2507 | ||
|
|
8eb1e803b5 | ||
|
|
17fac31cd1 | ||
|
|
615f15756b | ||
|
|
d7f8cb4e38 | ||
|
|
44ad22ceea | ||
|
|
40dfc46250 | ||
|
|
9775a8b7c5 | ||
|
|
82a437f2a8 | ||
|
|
a64a0e52ec | ||
|
|
88c4171031 | ||
|
|
b6c7e2e48f | ||
|
|
305d28b5b3 | ||
|
|
a88bf68eb6 | ||
|
|
8ebebecd93 | ||
|
|
b88f81b718 | ||
|
|
f0d30dbe49 | ||
|
|
d142d3261d | ||
|
|
25b49e1ca2 | ||
|
|
c7f19e04fa | ||
|
|
a2711cfb7b | ||
|
|
fcb30f6319 | ||
|
|
aa4960f1a5 | ||
|
|
ade6d08ded | ||
|
|
045f318612 | ||
|
|
2d67abbc12 | ||
|
|
5f539427a9 | ||
|
|
f984b361ee | ||
|
|
e7f11d6687 | ||
|
|
3e82d30a32 | ||
|
|
d2604e91d4 | ||
|
|
e2b4eaf9cc | ||
|
|
0a69ed91b6 | ||
|
|
8c0ce174b5 | ||
|
|
c8adf2a685 | ||
|
|
a68b75f069 | ||
|
|
2771bd4ece | ||
|
|
19cf9df52c | ||
|
|
15168fb213 | ||
|
|
0d700d6951 | ||
|
|
67cb02ed92 | ||
|
|
1d1ccc8d63 | ||
|
|
262e4db0f2 | ||
|
|
c814187a25 | ||
|
|
138be84e45 | ||
|
|
625d935f08 | ||
|
|
98d12901a5 | ||
|
|
1372cc1cb9 | ||
|
|
a072016fc5 | ||
|
|
97230ca82a | ||
|
|
4c69384b5d | ||
|
|
6ac3c172b1 | ||
|
|
a66e4435ba | ||
|
|
ae29699e65 | ||
|
|
9022bc338a | ||
|
|
dededcd303 | ||
|
|
4638351ec8 | ||
|
|
1ac65fff47 | ||
|
|
17eda952e4 | ||
|
|
8629993fe4 | ||
|
|
8297e1a835 | ||
|
|
b517b18394 | ||
|
|
32e34eec90 | ||
|
|
fb32ab9707 | ||
|
|
8acfb5b558 | ||
|
|
a7ae16bb39 | ||
|
|
c08393f04b | ||
|
|
88aba1c844 | ||
|
|
7c76d28f75 | ||
|
|
b3c2602620 | ||
|
|
0865e90cae | ||
|
|
e1d74cd2f5 | ||
|
|
c4c2259e69 | ||
|
|
3e4b0d5f91 | ||
|
|
b07df6061f | ||
|
|
80a1b8b44d | ||
|
|
45e3632c6e | ||
|
|
39e152b0b9 | ||
|
|
2a99ecc384 | ||
|
|
22477f90ae | ||
|
|
d8c2ba0ed8 | ||
|
|
74441273a8 | ||
|
|
ed79c1c62a | ||
|
|
9b9b452055 | ||
|
|
5fdf094e9d | ||
|
|
e4024408bd | ||
|
|
602b4988ae | ||
|
|
071f9400d7 | ||
|
|
1e2a30adcc | ||
|
|
a6de065bf4 | ||
|
|
3bd7231ba9 | ||
|
|
4bb46aeb9c | ||
|
|
26859e83e4 | ||
|
|
569bdf19be | ||
|
|
b8eb301f34 | ||
|
|
10c21d3403 | ||
|
|
a18b054dbb | ||
|
|
2e906af77d | ||
|
|
34cd2eba91 | ||
|
|
7fe6d1ab4d | ||
|
|
c2eefad287 | ||
|
|
202fda3c30 | ||
|
|
4940207b15 | ||
|
|
79c9d7e305 | ||
|
|
6e042c20e9 | ||
|
|
7a98718e64 | ||
|
|
6bbb1f8404 | ||
|
|
cecfc4cd34 | ||
|
|
c1875a8c8f | ||
|
|
249e81c9eb | ||
|
|
5804dc52bc | ||
|
|
90cf913083 | ||
|
|
fa82158e30 | ||
|
|
de42df40bb | ||
|
|
6265aa99d3 | ||
|
|
4ab6f159e5 | ||
|
|
b50ceaf299 | ||
|
|
96c8c9080d | ||
|
|
66d7548046 | ||
|
|
4b1c351195 | ||
|
|
eb7a7e4988 | ||
|
|
3d75366f02 | ||
|
|
c63c7d518c | ||
|
|
37697c7db7 | ||
|
|
b1744c3867 | ||
|
|
b0d6035a67 | ||
|
|
3902719008 | ||
|
|
291b791b67 | ||
|
|
b552f40ae8 | ||
|
|
0ab137de03 | ||
|
|
952c3cc12f | ||
|
|
e451237361 | ||
|
|
27637b0483 | ||
|
|
122ff3bb1d | ||
|
|
f98f84d419 | ||
|
|
40ef533c5f | ||
|
|
fd77c5e8c4 | ||
|
|
706b9d0f46 | ||
|
|
82f5553980 | ||
|
|
c0349b3f84 | ||
|
|
9330241045 | ||
|
|
b13ad5d01e | ||
|
|
ea36b37f66 | ||
|
|
92ca32bd70 | ||
|
|
59c533cb6c | ||
|
|
884b6618fb | ||
|
|
15dee4b952 | ||
|
|
a154dc76ce | ||
|
|
532ed1d3f9 | ||
|
|
984ce49168 | ||
|
|
16283d4054 | ||
|
|
915de23e34 | ||
|
|
53d4873c1f | ||
|
|
764d251b0a | ||
|
|
aa233b8adb | ||
|
|
ed47c23e23 | ||
|
|
5baabecdee | ||
|
|
17c7e2d8e7 | ||
|
|
5d452a1525 | ||
|
|
f857b8a9bb | ||
|
|
a354b54a08 | ||
|
|
e96b56e061 | ||
|
|
0daa4cc89a | ||
|
|
99d50957dd | ||
|
|
d4c8d24d50 | ||
|
|
a420129631 | ||
|
|
090d353fd0 | ||
|
|
b84b27692c | ||
|
|
adc384a971 | ||
|
|
08f0c01eef | ||
|
|
db2b33704f | ||
|
|
3eb7ed5dda | ||
|
|
5e5add7e47 | ||
|
|
ac1e1ebe43 | ||
|
|
499bfaea9b | ||
|
|
fa4772b91e | ||
|
|
fa7b190c6b | ||
|
|
84feec2e7e | ||
|
|
3035473751 | ||
|
|
399458b52f | ||
|
|
becac5fbad | ||
|
|
1e26b31090 | ||
|
|
0ebd03869d | ||
|
|
a4a713f102 | ||
|
|
83d5d6bbd8 | ||
|
|
90f4c6b0d1 | ||
|
|
926b3e9650 | ||
|
|
cbad58201e | ||
|
|
040ed39a4e | ||
|
|
9f6a8dc75c | ||
|
|
bfb8aa6481 | ||
|
|
2bb4cccd82 | ||
|
|
6fad5f2b51 | ||
|
|
36357bdf86 | ||
|
|
80eaf10656 | ||
|
|
f46ce0417d | ||
|
|
6f1e6402f0 | ||
|
|
bdfa13a8a0 | ||
|
|
d5622dfbf7 | ||
|
|
0948853539 | ||
|
|
0ad337c8e8 | ||
|
|
9565b0b43d | ||
|
|
a115b14136 | ||
|
|
bb8bfc61ed | ||
|
|
2d19f073d9 | ||
|
|
ff5d5d20d9 | ||
|
|
8c5f680dca | ||
|
|
7f0102181d | ||
|
|
59d618f06b | ||
|
|
cc1a545e13 | ||
|
|
fd37fd3a45 | ||
|
|
052a0a44f2 | ||
|
|
fa0ed35752 | ||
|
|
29d37c40c1 | ||
|
|
1728365fa1 | ||
|
|
cfeb0cc6f7 | ||
|
|
ec4bd6659a | ||
|
|
0903cf2646 | ||
|
|
cbc01e1a8d | ||
|
|
11c7533984 | ||
|
|
aff1c30557 | ||
|
|
3d9da26bb3 | ||
|
|
91ddabbb9b | ||
|
|
3030fbe60b | ||
|
|
5f4f30f84b | ||
|
|
45cb7ced2c | ||
|
|
dbccf6b433 | ||
|
|
6df09cb157 | ||
|
|
6cedad07e5 | ||
|
|
e4556afcc9 | ||
|
|
d89b791914 | ||
|
|
43c89c0e9d | ||
|
|
0ba80b176c | ||
|
|
3ea4b7a72b | ||
|
|
330334dcb4 | ||
|
|
ddcbb29a67 | ||
|
|
9ea4fcd667 | ||
|
|
0d4fb42731 | ||
|
|
d8d729342d | ||
|
|
2fbd2e3c29 | ||
|
|
15169289f0 | ||
|
|
29b3fb3646 | ||
|
|
533a597a5c | ||
|
|
deed58c2fc | ||
|
|
8acb64198c | ||
|
|
f5b690d088 | ||
|
|
0f7f0ceedc | ||
|
|
87708aa9c3 | ||
|
|
c63d05b582 | ||
|
|
460982d290 | ||
|
|
414964e791 | ||
|
|
3df6acda32 | ||
|
|
571c9f544c | ||
|
|
acb31b621f | ||
|
|
35886c3b00 | ||
|
|
ccc51e0123 | ||
|
|
0df488667e | ||
|
|
7018cc77a3 | ||
|
|
8d2eddd14d | ||
|
|
414515bc87 | ||
|
|
ce60fc0c3a | ||
|
|
216f3f2c07 | ||
|
|
80e6ced5db | ||
|
|
fbf77f3382 | ||
|
|
1010d11827 | ||
|
|
1f95e88cfd | ||
|
|
5d683721b1 | ||
|
|
de7f4de05b | ||
|
|
669988953d | ||
|
|
dc22d05657 | ||
|
|
00c692cf28 | ||
|
|
77fb7bc6e8 | ||
|
|
f31d788e2e | ||
|
|
45582ebaac | ||
|
|
748a551def | ||
|
|
d35613f510 | ||
|
|
3d5ef81860 | ||
|
|
9f99b4282a | ||
|
|
3b7812f829 | ||
|
|
1c7532df46 | ||
|
|
a029ee268a | ||
|
|
1b58dbe401 | ||
|
|
56ca0ea5d0 | ||
|
|
246a90d73c | ||
|
|
a58abffe58 | ||
|
|
8936a3fa3b | ||
|
|
6b8ee084e6 | ||
|
|
5916a8b5b8 | ||
|
|
a183f21078 | ||
|
|
9826fed905 | ||
|
|
a06aa9df8a | ||
|
|
1e91db865b | ||
|
|
8af5434462 | ||
|
|
6f0659c03c | ||
|
|
b8ccf5ba8f | ||
|
|
45a6c9558f | ||
|
|
4df599fec2 | ||
|
|
030aec2f3e | ||
|
|
8b250e4a13 | ||
|
|
2f96dc2d9d | ||
|
|
26388ad3b6 | ||
|
|
2c0063a5cc | ||
|
|
3a20bef1a9 | ||
|
|
9aec3390dd | ||
|
|
f9ba8ca87d | ||
|
|
f51f070b2f | ||
|
|
cf18e61a33 | ||
|
|
4b1d2c6bad | ||
|
|
06287da9d8 | ||
|
|
eef8297ce1 | ||
|
|
2f15d79476 | ||
|
|
768aaf2d78 | ||
|
|
6dd2cd39aa | ||
|
|
e04bd5aaf0 | ||
|
|
cb14d4d8f9 | ||
|
|
85af0a24ee | ||
|
|
3a7d0d1f13 | ||
|
|
5309d4ad5c | ||
|
|
786d851293 | ||
|
|
b63e870038 | ||
|
|
c20d2273e6 | ||
|
|
dc359b2a74 | ||
|
|
d3c9e7e157 | ||
|
|
82a9808dea | ||
|
|
e2a727ec8a | ||
|
|
7a9365457a | ||
|
|
28735fa16a | ||
|
|
ff2e05fe83 | ||
|
|
96b6d17d77 | ||
|
|
78f631373b | ||
|
|
981221d599 | ||
|
|
bda11fad40 | ||
|
|
39627a4fc4 | ||
|
|
094895ec72 | ||
|
|
15677f7178 | ||
|
|
3a0bb91b77 | ||
|
|
157f894c9b | ||
|
|
e6dec701c0 | ||
|
|
450b52f6da | ||
|
|
4ef31eaf3d | ||
|
|
2d865576cf | ||
|
|
41e623b009 | ||
|
|
239786e7d1 | ||
|
|
89e1e47900 | ||
|
|
67cb926233 | ||
|
|
2f813dfc5d | ||
|
|
a939599223 | ||
|
|
fb10e0ad33 | ||
|
|
46bd5bc1ef | ||
|
|
5abfb5c08a | ||
|
|
9357caeb5a | ||
|
|
6b58e59819 | ||
|
|
c6df25ece8 | ||
|
|
ebd6276b5e | ||
|
|
92e8b155e4 | ||
|
|
e76093e75c | ||
|
|
4f8073daa7 | ||
|
|
47fb96faa8 | ||
|
|
6e33553146 | ||
|
|
807941e6a5 | ||
|
|
1e30c0702e | ||
|
|
69b686ba3b | ||
|
|
ace5660809 | ||
|
|
8bc99fd799 | ||
|
|
f0c3a090a2 | ||
|
|
17e063f01d | ||
|
|
76c9873705 | ||
|
|
2c7b774356 | ||
|
|
390ad6d813 | ||
|
|
77800d073f | ||
|
|
1953c7896f | ||
|
|
dff4f73366 | ||
|
|
cd43752f61 | ||
|
|
23a5cea338 | ||
|
|
e2cb3c0d14 | ||
|
|
d6046efa1b | ||
|
|
ee608fcf46 | ||
|
|
894b08a1b8 | ||
|
|
4e549baedc | ||
|
|
6b6e42e9ba | ||
|
|
0404b78fb8 | ||
|
|
d63d42d87c | ||
|
|
37baa4cd74 | ||
|
|
68e03c434e | ||
|
|
394530921e | ||
|
|
57ccd5a954 | ||
|
|
a28d8843ac | ||
|
|
cb523faaad | ||
|
|
f704cacdee | ||
|
|
8dbc592563 | ||
|
|
439743d2b0 | ||
|
|
a3783131a2 | ||
|
|
8199073342 | ||
|
|
33af9a3595 | ||
|
|
30c3c10524 | ||
|
|
df85a5eee4 | ||
|
|
0ac397e7ff | ||
|
|
d243880099 | ||
|
|
2e23c521c3 | ||
|
|
eb761b286f | ||
|
|
d0f6ff5f98 | ||
|
|
c35167f2f5 | ||
|
|
84feaabc52 | ||
|
|
a6036859b8 | ||
|
|
929f7f3114 | ||
|
|
9e914b9016 | ||
|
|
947627d8a0 | ||
|
|
ed00797179 | ||
|
|
93dcce2217 | ||
|
|
686af0c6a1 | ||
|
|
d07f02b95f | ||
|
|
ad74952194 | ||
|
|
10f3df3ed4 | ||
|
|
18e2e6779b | ||
|
|
ed129c307b | ||
|
|
8742e4bfe9 | ||
|
|
3b10bb742b | ||
|
|
1f206a9c24 | ||
|
|
f026646bb5 | ||
|
|
f9bfc8ad86 | ||
|
|
e70539ff48 | ||
|
|
a439be79b3 | ||
|
|
edf2dfe8f9 | ||
|
|
0e4c49ea5b | ||
|
|
52cfd138d1 | ||
|
|
258b97f833 | ||
|
|
837b17d62a | ||
|
|
d82720f62f | ||
|
|
cf99345962 | ||
|
|
9e54496d00 | ||
|
|
8ae6598b8a | ||
|
|
722299dd26 | ||
|
|
e2b1421bf3 | ||
|
|
1f41d39bc7 | ||
|
|
ce39d3b4ce | ||
|
|
ef2ade849b | ||
|
|
88067c071c | ||
|
|
f5018e9820 | ||
|
|
1561f402f0 | ||
|
|
0d7889d212 | ||
|
|
19a10e59e9 | ||
|
|
746abb02d3 | ||
|
|
23351298c8 | ||
|
|
426a8f75aa | ||
|
|
999cf0d9e3 | ||
|
|
0afc41060a | ||
|
|
6e2d76c2b4 | ||
|
|
3abf74a9f3 | ||
|
|
5d52498da1 | ||
|
|
cf068211ff | ||
|
|
0507c46ae9 | ||
|
|
69ed3644f9 | ||
|
|
b0c5894691 | ||
|
|
f10fc7bd7f | ||
|
|
bdbaacaac9 | ||
|
|
2790f52e36 | ||
|
|
6515dd7b23 | ||
|
|
5a38bf78e1 | ||
|
|
4bdb40904f | ||
|
|
e7d98206f9 | ||
|
|
1939375161 | ||
|
|
ec737d02b2 | ||
|
|
927e5ede0c | ||
|
|
4c1bc10d0f | ||
|
|
fe82b1d2d6 | ||
|
|
a5c150baba | ||
|
|
3470347523 | ||
|
|
e25c86e947 | ||
|
|
fb1478f2dd | ||
|
|
c8d6f20c3b | ||
|
|
5af1c7756c | ||
|
|
38e6008aa2 | ||
|
|
9a587e8c8c | ||
|
|
30bd216500 | ||
|
|
e9282976d5 | ||
|
|
7cace222c0 | ||
|
|
df79f3d9c9 | ||
|
|
ddfa0d0749 | ||
|
|
a3ce5b5d28 | ||
|
|
b17848609b | ||
|
|
c0c5e30898 | ||
|
|
b1e0492e05 | ||
|
|
2faee49bd9 | ||
|
|
380b967407 | ||
|
|
145a09edd1 | ||
|
|
b07628abda | ||
|
|
e9ece21d20 | ||
|
|
b700f069fe | ||
|
|
40fb6aa168 | ||
|
|
341480e7cf | ||
|
|
bde311fd76 | ||
|
|
f8bc03feaf | ||
|
|
7fc1eb5262 | ||
|
|
531e9d4aff | ||
|
|
e0d4766c2d | ||
|
|
ab4e83771c | ||
|
|
803b6df40c | ||
|
|
1ebdb0f5e1 | ||
|
|
df5951ce46 | ||
|
|
809ffa0c6e | ||
|
|
6dd466ddaf | ||
|
|
a45b801a84 | ||
|
|
f8ade4d0c5 | ||
|
|
889cb1d7b1 | ||
|
|
d3a477b8f2 | ||
|
|
4db042736c | ||
|
|
612e4406b5 | ||
|
|
76f874ef6d | ||
|
|
f37f47ce5b | ||
|
|
45ed436426 | ||
|
|
9314cf87c5 | ||
|
|
0efc42081d | ||
|
|
7d80fe19e0 | ||
|
|
de8c351e25 | ||
|
|
695c9d5cf3 | ||
|
|
8690228d98 | ||
|
|
01093d05d7 | ||
|
|
690caf7da1 | ||
|
|
a9b63111ae | ||
|
|
eb0a68d0ab | ||
|
|
48e98b2ac3 | ||
|
|
ed1a731950 | ||
|
|
4660c154e9 | ||
|
|
ef974ab1f5 | ||
|
|
bacae67374 | ||
|
|
cc20d17bd2 | ||
|
|
494b240015 | ||
|
|
1cd391a132 | ||
|
|
1c15527d95 | ||
|
|
7af79ec33b | ||
|
|
4294c043d8 | ||
|
|
e5b925abf8 | ||
|
|
90c0a4a437 | ||
|
|
692f7868bc | ||
|
|
5282af55f6 | ||
|
|
aefc4c6bd2 | ||
|
|
b39ba76505 | ||
|
|
9d918e7a54 | ||
|
|
4773f9392b | ||
|
|
5c10fc26be | ||
|
|
38db7f9db7 | ||
|
|
5163e50e7d | ||
|
|
5115b33446 | ||
|
|
b01fe5ead9 | ||
|
|
b1d4a258a1 | ||
|
|
ca041bb658 | ||
|
|
52244ddc99 | ||
|
|
87a60e325f | ||
|
|
0a172d8bc1 | ||
|
|
67a12d3c4d | ||
|
|
5b2ba3646d | ||
|
|
148bff9f77 | ||
|
|
2132cf3bdc | ||
|
|
d5271c17e3 | ||
|
|
b764761e58 | ||
|
|
c666fc3b98 | ||
|
|
ba34df2e15 | ||
|
|
840ac2d63e | ||
|
|
5dd4586ebe | ||
|
|
bd7fa16e96 | ||
|
|
846ac9305e | ||
|
|
db8014c0ef | ||
|
|
a3540772dd | ||
|
|
137703ada4 | ||
|
|
ec6b8476f9 | ||
|
|
d09d3f5a96 | ||
|
|
3d15aeae58 | ||
|
|
9765892d18 | ||
|
|
00f5924251 | ||
|
|
99d0f22403 | ||
|
|
78f8a37587 | ||
|
|
86d62866f2 | ||
|
|
1dc3fafcbf | ||
|
|
7f06952d9e | ||
|
|
78b6614eea | ||
|
|
9665e872c2 | ||
|
|
9db0a062ed | ||
|
|
055bb39e4d | ||
|
|
1261a06a30 | ||
|
|
91eb3c45d5 | ||
|
|
3944235592 | ||
|
|
5be61e6142 | ||
|
|
62ccf798ee | ||
|
|
d259931bd2 | ||
|
|
7729aad1e9 | ||
|
|
70d6bd0157 | ||
|
|
e5555beea9 | ||
|
|
9767b6269a | ||
|
|
7e486fda06 | ||
|
|
9f726304aa | ||
|
|
614cc4dd82 | ||
|
|
3e8f09d306 | ||
|
|
613b83e638 | ||
|
|
4ac609ff57 | ||
|
|
c14ce2c428 | ||
|
|
984bd726e9 | ||
|
|
964abf390b | ||
|
|
af24758ad4 | ||
|
|
528d94a8fb | ||
|
|
be918628c3 | ||
|
|
602b9ae64a | ||
|
|
602a166e36 | ||
|
|
2e69cc8331 | ||
|
|
aaad858395 | ||
|
|
b266c327e4 | ||
|
|
149462e3ab | ||
|
|
237d309406 | ||
|
|
48248224f8 | ||
|
|
79e5e3b65f | ||
|
|
d0383f3044 | ||
|
|
62ecd1ad76 | ||
|
|
75b7706c2c | ||
|
|
584b176643 | ||
|
|
a16555bbff | ||
|
|
a749e24147 | ||
|
|
bb81f110dd | ||
|
|
5dd6f49104 | ||
|
|
bc6be44b19 | ||
|
|
8075265753 | ||
|
|
9d69024758 | ||
|
|
40ca949890 | ||
|
|
035113db4d | ||
|
|
4a67f63abd | ||
|
|
d9666210f1 | ||
|
|
925bba134e | ||
|
|
d46801ff1f | ||
|
|
7848c7e319 | ||
|
|
65e53741e7 | ||
|
|
a83e8ff91a | ||
|
|
542e2579df | ||
|
|
81d64e020e | ||
|
|
9413cd2296 | ||
|
|
5b85713bf3 | ||
|
|
15254e2dfc | ||
|
|
5f6d562bf8 | ||
|
|
f37dc66074 | ||
|
|
c881b39860 | ||
|
|
0b84524807 | ||
|
|
5218f7b7a6 | ||
|
|
8062bb7e2a | ||
|
|
806062c8d1 | ||
|
|
83f19c0537 | ||
|
|
0424728012 | ||
|
|
3a83d58b25 | ||
|
|
6fa9d996e8 | ||
|
|
1ea3d238e0 | ||
|
|
eb273b7dbb | ||
|
|
55374ac4d9 | ||
|
|
8070c00b5f | ||
|
|
da8025f1e4 | ||
|
|
d2263c68f8 | ||
|
|
92e43bc051 | ||
|
|
40971afe4f | ||
|
|
90fc4b8293 | ||
|
|
97d8b19868 | ||
|
|
2bc7da91a6 | ||
|
|
2b4cbb5f6b | ||
|
|
72b2a6ecb6 | ||
|
|
7b662b04ff | ||
|
|
f8e4a665bd | ||
|
|
f9a27dd90c | ||
|
|
641985737f | ||
|
|
121e4ba2ea | ||
|
|
01474ecd2d | ||
|
|
82e4e28e7b | ||
|
|
06eb522a8c | ||
|
|
21098be307 | ||
|
|
886ee0dbcb | ||
|
|
6f7fbacca1 | ||
|
|
f5ddabc042 | ||
|
|
8da5b90aea | ||
|
|
23848526c0 | ||
|
|
e7d57bc08f | ||
|
|
041758766a | ||
|
|
69980c798b | ||
|
|
4de6a803e9 | ||
|
|
748c5064b5 | ||
|
|
c6e8966ecd | ||
|
|
8c247ba7c6 | ||
|
|
52b5711ecd | ||
|
|
58fe3a62af | ||
|
|
af4d0c3ba6 | ||
|
|
4bba0aa842 | ||
|
|
ae9af8ea23 | ||
|
|
eea29aba0e | ||
|
|
abbd0b50eb | ||
|
|
739ab28763 | ||
|
|
c551eae651 | ||
|
|
d5aea26960 | ||
|
|
d3730ac1a9 | ||
|
|
f2a510e4c5 | ||
|
|
4717242dc7 | ||
|
|
b5ef09e779 | ||
|
|
d706b3a447 | ||
|
|
6c96cca3a5 | ||
|
|
c1865f8564 | ||
|
|
515c5411a6 | ||
|
|
3f7a5504c7 | ||
|
|
8c7c37cf98 | ||
|
|
d93e00adce | ||
|
|
0e16e48db6 | ||
|
|
c0f48c0e99 | ||
|
|
abedf2bba4 | ||
|
|
bb0137b2fd | ||
|
|
6c54c7d17d | ||
|
|
cd95adcecb | ||
|
|
90255ac55b | ||
|
|
e741c2826c |
@@ -5,3 +5,6 @@
|
|||||||
/docs
|
/docs
|
||||||
/npm-debug.log
|
/npm-debug.log
|
||||||
node_modules
|
node_modules
|
||||||
|
|
||||||
|
src/**/*.ts
|
||||||
|
!src/services/asset_path.ts
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
node_modules
|
|
||||||
dist
|
|
||||||
bin
|
|
||||||
docs
|
|
||||||
libraries
|
|
||||||
coverage
|
|
||||||
play
|
|
||||||
211
.eslintrc.js
211
.eslintrc.js
@@ -1,211 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
env: {
|
|
||||||
browser: true,
|
|
||||||
commonjs: true,
|
|
||||||
es2021: true,
|
|
||||||
node: true,
|
|
||||||
},
|
|
||||||
// plugins: ['prettier'], // to be activated
|
|
||||||
extends: ['eslint:recommended', 'airbnb-base', 'plugin:jsonc/recommended-with-jsonc', 'prettier'],
|
|
||||||
overrides: [
|
|
||||||
{
|
|
||||||
files: ['*.json', '*.json5', '*.jsonc'],
|
|
||||||
parser: 'jsonc-eslint-parser',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
files: ['package.json'],
|
|
||||||
parser: 'jsonc-eslint-parser',
|
|
||||||
rules: {
|
|
||||||
'jsonc/sort-keys': [
|
|
||||||
'off',
|
|
||||||
{
|
|
||||||
pathPattern: '^$',
|
|
||||||
order: [
|
|
||||||
'name',
|
|
||||||
'version',
|
|
||||||
'private',
|
|
||||||
'packageManager',
|
|
||||||
'description',
|
|
||||||
'type',
|
|
||||||
'keywords',
|
|
||||||
'homepage',
|
|
||||||
'bugs',
|
|
||||||
'license',
|
|
||||||
'author',
|
|
||||||
'contributors',
|
|
||||||
'funding',
|
|
||||||
'files',
|
|
||||||
'main',
|
|
||||||
'module',
|
|
||||||
'exports',
|
|
||||||
'unpkg',
|
|
||||||
'jsdelivr',
|
|
||||||
'browser',
|
|
||||||
'bin',
|
|
||||||
'man',
|
|
||||||
'directories',
|
|
||||||
'repository',
|
|
||||||
'publishConfig',
|
|
||||||
'scripts',
|
|
||||||
'peerDependencies',
|
|
||||||
'peerDependenciesMeta',
|
|
||||||
'optionalDependencies',
|
|
||||||
'dependencies',
|
|
||||||
'devDependencies',
|
|
||||||
'engines',
|
|
||||||
'config',
|
|
||||||
'overrides',
|
|
||||||
'pnpm',
|
|
||||||
'husky',
|
|
||||||
'lint-staged',
|
|
||||||
'eslintConfig',
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
pathPattern: '^(?:dev|peer|optional|bundled)?[Dd]ependencies$',
|
|
||||||
order: { type: 'asc' },
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
globals: {
|
|
||||||
$: true,
|
|
||||||
jQuery: true,
|
|
||||||
glob: true,
|
|
||||||
log: true,
|
|
||||||
EditorWatchdog: true,
|
|
||||||
// \src\share\canvas_share.js
|
|
||||||
React: true,
|
|
||||||
appState: true,
|
|
||||||
ExcalidrawLib: true,
|
|
||||||
elements: true,
|
|
||||||
files: true,
|
|
||||||
ReactDOM: true,
|
|
||||||
// src\public\app\widgets\type_widgets\relation_map.js
|
|
||||||
jsPlumb: true,
|
|
||||||
panzoom: true,
|
|
||||||
logError: true,
|
|
||||||
// src\public\app\widgets\type_widgets\image.js
|
|
||||||
WZoom: true,
|
|
||||||
// \src\public\app\widgets\type_widgets\read_only_text.js
|
|
||||||
renderMathInElement: true,
|
|
||||||
// \src\public\app\widgets\type_widgets\editable_text.js
|
|
||||||
BalloonEditor: true,
|
|
||||||
FancytreeNode: true,
|
|
||||||
CKEditorInspector: true,
|
|
||||||
// \src\public\app\widgets\type_widgets\editable_code.js
|
|
||||||
CodeMirror: true,
|
|
||||||
// \src\public\app\services\resizer.js
|
|
||||||
Split: true,
|
|
||||||
// \src\public\app\services\content_renderer.js
|
|
||||||
mermaid: true,
|
|
||||||
// src\public\app\services\frontend_script_api.js
|
|
||||||
dayjs: true,
|
|
||||||
// \src\public\app\widgets\note_map.js
|
|
||||||
ForceGraph: true,
|
|
||||||
// \src\public\app\setup.js
|
|
||||||
ko: true,
|
|
||||||
syncInProgress: true,
|
|
||||||
// src\public\app\services\utils.js
|
|
||||||
logInfo: true,
|
|
||||||
__non_webpack_require__: true,
|
|
||||||
//
|
|
||||||
},
|
|
||||||
parserOptions: {
|
|
||||||
ecmaVersion: 'latest',
|
|
||||||
sourceType: 'module',
|
|
||||||
},
|
|
||||||
rules: {
|
|
||||||
// eslint:recommended
|
|
||||||
'no-unused-vars': 'off',
|
|
||||||
'linebreak-style': 'off',
|
|
||||||
'no-useless-escape': 'off',
|
|
||||||
'no-empty': 'off',
|
|
||||||
'no-constant-condition': 'off',
|
|
||||||
'getter-return': 'off',
|
|
||||||
'no-cond-assign': 'off',
|
|
||||||
'no-async-promise-executor': 'off',
|
|
||||||
'no-extra-semi': 'off',
|
|
||||||
'no-inner-declarations': 'off',
|
|
||||||
|
|
||||||
// prettier
|
|
||||||
'prettier/prettier': ['off', { endOfLine: 'auto' }],
|
|
||||||
|
|
||||||
// airbnb-base
|
|
||||||
'no-console': 'off',
|
|
||||||
'no-plusplus': 'off',
|
|
||||||
'no-param-reassign': 'off',
|
|
||||||
'global-require': 'off',
|
|
||||||
'no-use-before-define': 'off',
|
|
||||||
'no-await-in-loop': 'off',
|
|
||||||
radix: 'off',
|
|
||||||
'import/order': 'off',
|
|
||||||
'import/no-extraneous-dependencies': 'off',
|
|
||||||
'prefer-destructuring': 'off',
|
|
||||||
'no-shadow': 'off',
|
|
||||||
'no-new': 'off',
|
|
||||||
'no-restricted-syntax': 'off',
|
|
||||||
strict: 'off',
|
|
||||||
'class-methods-use-this': 'off',
|
|
||||||
'no-else-return': 'off',
|
|
||||||
'import/no-dynamic-require': 'off',
|
|
||||||
'no-underscore-dangle': 'off',
|
|
||||||
'prefer-template': 'off',
|
|
||||||
'consistent-return': 'off',
|
|
||||||
'no-continue': 'off',
|
|
||||||
'object-shorthand': 'off',
|
|
||||||
'one-var': 'off',
|
|
||||||
'prefer-const': 'off',
|
|
||||||
'spaced-comment': 'off',
|
|
||||||
'no-loop-func': 'off',
|
|
||||||
'arrow-body-style': 'off',
|
|
||||||
|
|
||||||
'guard-for-in': 'off',
|
|
||||||
'no-return-assign': 'off',
|
|
||||||
'dot-notation': 'off',
|
|
||||||
|
|
||||||
'func-names': 'off',
|
|
||||||
'import/no-useless-path-segments': 'off',
|
|
||||||
'default-param-last': 'off',
|
|
||||||
'prefer-arrow-callback': 'off',
|
|
||||||
'no-unneeded-ternary': 'off',
|
|
||||||
'no-return-await': 'off',
|
|
||||||
'import/extensions': 'off',
|
|
||||||
|
|
||||||
'no-var': 'off',
|
|
||||||
'import/newline-after-import': 'off',
|
|
||||||
'no-restricted-globals': 'off',
|
|
||||||
'operator-assignment': 'off',
|
|
||||||
'no-eval': 'off',
|
|
||||||
'max-classes-per-file': 'off',
|
|
||||||
'vars-on-top': 'off',
|
|
||||||
'no-bitwise': 'off',
|
|
||||||
'no-lonely-if': 'off',
|
|
||||||
'no-multi-assign': 'off',
|
|
||||||
'no-promise-executor-return': 'off',
|
|
||||||
'no-empty-function': 'off',
|
|
||||||
'import/no-unresolved': 'off',
|
|
||||||
camelcase: 'off',
|
|
||||||
eqeqeq: 'off',
|
|
||||||
'lines-between-class-members': 'off',
|
|
||||||
'import/no-cycle': 'off',
|
|
||||||
'new-cap': 'off',
|
|
||||||
'prefer-object-spread': 'off',
|
|
||||||
'no-new-func': 'off',
|
|
||||||
'no-unused-expressions': 'off',
|
|
||||||
'lines-around-directive': 'off',
|
|
||||||
'prefer-exponentiation-operator': 'off',
|
|
||||||
'no-restricted-properties': 'off',
|
|
||||||
'prefer-rest-params': 'off',
|
|
||||||
'no-unreachable-loop': 'off',
|
|
||||||
'no-alert': 'off',
|
|
||||||
'no-useless-return': 'off',
|
|
||||||
'no-nested-ternary': 'off',
|
|
||||||
'prefer-regex-literals': 'off',
|
|
||||||
'import/no-named-as-default-member': 'off',
|
|
||||||
yoda: 'off',
|
|
||||||
'no-script-url': 'off',
|
|
||||||
'no-prototype-builtins':'off'
|
|
||||||
},
|
|
||||||
};
|
|
||||||
10
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
10
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -5,9 +5,9 @@ labels: "Type: Bug"
|
|||||||
body:
|
body:
|
||||||
- type: input
|
- type: input
|
||||||
attributes:
|
attributes:
|
||||||
label: Trilium Version
|
label: TriliumNext Version
|
||||||
description: What version of Trilium are you using?
|
description: What version of TriliumNext are you using?
|
||||||
placeholder: 0.57.0-beta
|
placeholder: 0.90.0-beta
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
- type: dropdown
|
- type: dropdown
|
||||||
@@ -24,7 +24,7 @@ body:
|
|||||||
- type: dropdown
|
- type: dropdown
|
||||||
attributes:
|
attributes:
|
||||||
label: What is your setup?
|
label: What is your setup?
|
||||||
description: https://github.com/zadam/trilium/wiki#choose-the-setup
|
description: https://triliumnext.github.io/Docs/Wiki/quick-start.html
|
||||||
options:
|
options:
|
||||||
- Local (no sync)
|
- Local (no sync)
|
||||||
- Local + server sync
|
- Local + server sync
|
||||||
@@ -47,6 +47,6 @@ body:
|
|||||||
- type: textarea
|
- type: textarea
|
||||||
attributes:
|
attributes:
|
||||||
label: Error logs
|
label: Error logs
|
||||||
description: Please provide error logs, see [wiki page](https://github.com/zadam/trilium/wiki/Error-logs) for instructions on how to submit them.
|
description: Please provide error logs, see [wiki page](https://triliumnext.github.io/Docs/Wiki/error-logs.html) for instructions on how to submit them.
|
||||||
validations:
|
validations:
|
||||||
required: false
|
required: false
|
||||||
|
|||||||
33
.github/workflows/dev.yml
vendored
Normal file
33
.github/workflows/dev.yml
vendored
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
name: Dev
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches-ignore:
|
||||||
|
- 'develop'
|
||||||
|
- 'feature/update**'
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build_docker:
|
||||||
|
name: Build Docker image
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Set up node & dependencies
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
cache: "npm"
|
||||||
|
- run: npm ci
|
||||||
|
- name: Run the TypeScript build
|
||||||
|
run: npx tsc
|
||||||
|
- name: Create server-package.json
|
||||||
|
run: cat package.json | grep -v electron > server-package.json
|
||||||
|
- uses: docker/setup-buildx-action@v3
|
||||||
|
- uses: docker/build-push-action@v6
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
cache-from: type=gha
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
143
.github/workflows/main-docker-alpine.yml
vendored
Normal file
143
.github/workflows/main-docker-alpine.yml
vendored
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
env:
|
||||||
|
GHCR_REGISTRY: ghcr.io
|
||||||
|
DOCKERHUB_REGISTRY: docker.io
|
||||||
|
IMAGE_NAME: ${{ github.repository }}
|
||||||
|
TEST_TAG: triliumnext/notes:test
|
||||||
|
PLATFORMS: linux/amd64
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test_docker:
|
||||||
|
name: Check Docker build
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout the repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
- name: Set up node & dependencies
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
cache: "npm"
|
||||||
|
|
||||||
|
- run: npm ci
|
||||||
|
|
||||||
|
- name: Run the TypeScript build
|
||||||
|
run: npx tsc
|
||||||
|
|
||||||
|
- name: Create server-package.json
|
||||||
|
run: cat package.json | grep -v electron > server-package.json
|
||||||
|
|
||||||
|
- name: Build and export to Docker
|
||||||
|
uses: docker/build-push-action@v6
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
load: true
|
||||||
|
tags: ${{ env.TEST_TAG }}
|
||||||
|
cache-from: type=gha
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
|
|
||||||
|
- name: Run the container in the background
|
||||||
|
run: docker run -d --rm --name trilium_local ${{ env.TEST_TAG }}
|
||||||
|
|
||||||
|
- name: Wait for the healthchecks to pass
|
||||||
|
uses: stringbean/docker-healthcheck-action@v1
|
||||||
|
with:
|
||||||
|
container: trilium_local
|
||||||
|
wait-time: 50
|
||||||
|
require-status: running
|
||||||
|
require-healthy: true
|
||||||
|
|
||||||
|
build_docker:
|
||||||
|
name: Build Docker images
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs:
|
||||||
|
- test_docker
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
packages: write
|
||||||
|
attestations: write
|
||||||
|
id-token: write
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Extract metadata (tags, labels) for GHCR image
|
||||||
|
id: ghcr-meta
|
||||||
|
uses: docker/metadata-action@v4
|
||||||
|
with:
|
||||||
|
images: ${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||||
|
tags: |
|
||||||
|
type=ref,event=branch
|
||||||
|
type=ref,event=tag
|
||||||
|
type=sha
|
||||||
|
- name: Extract metadata (tags, labels) for DockerHub image
|
||||||
|
id: dh-meta
|
||||||
|
uses: docker/metadata-action@v4
|
||||||
|
with:
|
||||||
|
images: ${{ env.DOCKERHUB_REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||||
|
tags: |
|
||||||
|
type=ref,event=branch
|
||||||
|
type=ref,event=tag
|
||||||
|
type=sha
|
||||||
|
- name: Set up node & dependencies
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
cache: "npm"
|
||||||
|
- run: npm ci
|
||||||
|
- name: Run the TypeScript build
|
||||||
|
run: npx tsc
|
||||||
|
- name: Create server-package.json
|
||||||
|
run: cat package.json | grep -v electron > server-package.json
|
||||||
|
- name: Log in to the GHCR container registry
|
||||||
|
uses: docker/login-action@v2
|
||||||
|
with:
|
||||||
|
registry: ${{ env.GHCR_REGISTRY }}
|
||||||
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
- uses: docker/setup-buildx-action@v3
|
||||||
|
- name: Build and push container image to GHCR
|
||||||
|
uses: docker/build-push-action@v6
|
||||||
|
id: ghcr-push
|
||||||
|
with:
|
||||||
|
file: ./Dockerfile.alpine
|
||||||
|
context: .
|
||||||
|
platforms: ${{ env.PLATFORMS }}
|
||||||
|
push: true
|
||||||
|
tags: ${{ steps.ghcr-meta.outputs.tags }}
|
||||||
|
labels: ${{ steps.ghcr-meta.outputs.labels }}
|
||||||
|
cache-from: type=gha
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
|
- name: Generate and push artifact attestation to GHCR
|
||||||
|
uses: actions/attest-build-provenance@v1
|
||||||
|
with:
|
||||||
|
subject-name: ${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME}}
|
||||||
|
subject-digest: ${{ steps.ghcr-push.outputs.digest }}
|
||||||
|
push-to-registry: true
|
||||||
|
- name: Log in to the DockerHub container registry
|
||||||
|
uses: docker/login-action@v2
|
||||||
|
with:
|
||||||
|
registry: ${{ env.DOCKERHUB_REGISTRY }}
|
||||||
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
- name: Build and push image to DockerHub
|
||||||
|
uses: docker/build-push-action@v6
|
||||||
|
id: dh-push
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
platforms: ${{ env.PLATFORMS }}
|
||||||
|
push: true
|
||||||
|
tags: ${{ steps.dh-meta.outputs.tags }}
|
||||||
|
labels: ${{ steps.dh-meta.outputs.labels }}
|
||||||
|
cache-from: type=gha
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
|
- name: Generate and push artifact attestation to DockerHub
|
||||||
|
uses: actions/attest-build-provenance@v1
|
||||||
|
with:
|
||||||
|
subject-name: ${{ env.DOCKERHUB_REGISTRY }}/${{ env.IMAGE_NAME}}
|
||||||
|
subject-digest: ${{ steps.dh-push.outputs.digest }}
|
||||||
|
push-to-registry: true
|
||||||
152
.github/workflows/main-docker.yml
vendored
Normal file
152
.github/workflows/main-docker.yml
vendored
Normal file
@@ -0,0 +1,152 @@
|
|||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- "develop"
|
||||||
|
- "feature/update**"
|
||||||
|
- "feature/server_esm**"
|
||||||
|
paths-ignore:
|
||||||
|
- "docs/**"
|
||||||
|
- "bin/**"
|
||||||
|
tags:
|
||||||
|
- "v*"
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
env:
|
||||||
|
GHCR_REGISTRY: ghcr.io
|
||||||
|
DOCKERHUB_REGISTRY: docker.io
|
||||||
|
IMAGE_NAME: ${{ github.repository }}
|
||||||
|
TEST_TAG: triliumnext/notes:test
|
||||||
|
PLATFORMS: linux/amd64,linux/arm64,linux/arm/v7
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test_docker:
|
||||||
|
name: Check Docker build
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout the repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
- name: Set up node & dependencies
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
cache: "npm"
|
||||||
|
|
||||||
|
- run: npm ci
|
||||||
|
|
||||||
|
- name: Run the TypeScript build
|
||||||
|
run: npx tsc
|
||||||
|
|
||||||
|
- name: Create server-package.json
|
||||||
|
run: cat package.json | grep -v electron > server-package.json
|
||||||
|
|
||||||
|
- name: Build and export to Docker
|
||||||
|
uses: docker/build-push-action@v6
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
load: true
|
||||||
|
tags: ${{ env.TEST_TAG }}
|
||||||
|
cache-from: type=gha
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
|
|
||||||
|
- name: Run the container in the background
|
||||||
|
run: docker run -d --rm --name trilium_local ${{ env.TEST_TAG }}
|
||||||
|
|
||||||
|
- name: Wait for the healthchecks to pass
|
||||||
|
uses: stringbean/docker-healthcheck-action@v1
|
||||||
|
with:
|
||||||
|
container: trilium_local
|
||||||
|
wait-time: 50
|
||||||
|
require-status: running
|
||||||
|
require-healthy: true
|
||||||
|
|
||||||
|
build_docker:
|
||||||
|
name: Build Docker images
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs:
|
||||||
|
- test_docker
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
packages: write
|
||||||
|
attestations: write
|
||||||
|
id-token: write
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Extract metadata (tags, labels) for GHCR image
|
||||||
|
id: ghcr-meta
|
||||||
|
uses: docker/metadata-action@v4
|
||||||
|
with:
|
||||||
|
images: ${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||||
|
tags: |
|
||||||
|
type=ref,event=branch
|
||||||
|
type=ref,event=tag
|
||||||
|
type=sha
|
||||||
|
- name: Extract metadata (tags, labels) for DockerHub image
|
||||||
|
id: dh-meta
|
||||||
|
uses: docker/metadata-action@v4
|
||||||
|
with:
|
||||||
|
images: ${{ env.DOCKERHUB_REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||||
|
tags: |
|
||||||
|
type=ref,event=branch
|
||||||
|
type=ref,event=tag
|
||||||
|
type=sha
|
||||||
|
- name: Set up node & dependencies
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
cache: "npm"
|
||||||
|
- run: npm ci
|
||||||
|
- name: Run the TypeScript build
|
||||||
|
run: npx tsc
|
||||||
|
- name: Create server-package.json
|
||||||
|
run: cat package.json | grep -v electron > server-package.json
|
||||||
|
- name: Log in to the GHCR container registry
|
||||||
|
uses: docker/login-action@v2
|
||||||
|
with:
|
||||||
|
registry: ${{ env.GHCR_REGISTRY }}
|
||||||
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
- uses: docker/setup-buildx-action@v3
|
||||||
|
- name: Build and push container image to GHCR
|
||||||
|
uses: docker/build-push-action@v6
|
||||||
|
id: ghcr-push
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
platforms: ${{ env.PLATFORMS }}
|
||||||
|
push: true
|
||||||
|
tags: ${{ steps.ghcr-meta.outputs.tags }}
|
||||||
|
labels: ${{ steps.ghcr-meta.outputs.labels }}
|
||||||
|
cache-from: type=gha
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
|
- name: Generate and push artifact attestation to GHCR
|
||||||
|
uses: actions/attest-build-provenance@v1
|
||||||
|
with:
|
||||||
|
subject-name: ${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME}}
|
||||||
|
subject-digest: ${{ steps.ghcr-push.outputs.digest }}
|
||||||
|
push-to-registry: true
|
||||||
|
- name: Log in to the DockerHub container registry
|
||||||
|
uses: docker/login-action@v2
|
||||||
|
with:
|
||||||
|
registry: ${{ env.DOCKERHUB_REGISTRY }}
|
||||||
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
- name: Build and push image to DockerHub
|
||||||
|
uses: docker/build-push-action@v6
|
||||||
|
id: dh-push
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
platforms: ${{ env.PLATFORMS }}
|
||||||
|
push: true
|
||||||
|
tags: ${{ steps.dh-meta.outputs.tags }}
|
||||||
|
labels: ${{ steps.dh-meta.outputs.labels }}
|
||||||
|
cache-from: type=gha
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
|
- name: Generate and push artifact attestation to DockerHub
|
||||||
|
uses: actions/attest-build-provenance@v1
|
||||||
|
with:
|
||||||
|
subject-name: ${{ env.DOCKERHUB_REGISTRY }}/${{ env.IMAGE_NAME}}
|
||||||
|
subject-digest: ${{ steps.dh-push.outputs.digest }}
|
||||||
|
push-to-registry: true
|
||||||
100
.github/workflows/main.yml
vendored
Normal file
100
.github/workflows/main.yml
vendored
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
name: Main
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- "feature/update**"
|
||||||
|
- "feature/server_esm**"
|
||||||
|
paths-ignore:
|
||||||
|
- "docs/**"
|
||||||
|
- ".github/workflows/main-docker.yml"
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
make-electron:
|
||||||
|
name: Make Electron
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
arch: [x64, arm64]
|
||||||
|
os:
|
||||||
|
- name: macos
|
||||||
|
image: macos-latest
|
||||||
|
extension: dmg
|
||||||
|
- name: linux
|
||||||
|
image: ubuntu-latest
|
||||||
|
extension: deb
|
||||||
|
- name: windows
|
||||||
|
image: windows-latest
|
||||||
|
extension: exe
|
||||||
|
runs-on: ${{ matrix.os.image }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Set up node & dependencies
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
- name: Set up Python for appdmg to be installed
|
||||||
|
if: ${{ matrix.os.name == 'macos' }}
|
||||||
|
run: brew install python-setuptools
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
|
- name: Update build info
|
||||||
|
run: npm run update-build-info
|
||||||
|
- name: Run electron-forge
|
||||||
|
run: npm run make-electron -- --arch=${{ matrix.arch }}
|
||||||
|
- name: Prepare artifacts (Unix)
|
||||||
|
if: runner.os != 'windows'
|
||||||
|
run: |
|
||||||
|
mkdir -p upload
|
||||||
|
file=$(find out/make -name '*.zip' -print -quit)
|
||||||
|
cp "$file" "upload/TriliumNextNotes-${{ matrix.os.name }}-${{ matrix.arch }}-${{ github.ref_name }}.zip"
|
||||||
|
file=$(find out/make -name '*.${{ matrix.os.extension }}' -print -quit)
|
||||||
|
cp "$file" "upload/TriliumNextNotes-${{ matrix.os.name }}-${{ matrix.arch }}-${{ github.ref_name }}.${{ matrix.os.extension }}"
|
||||||
|
- name: Prepare artifacts (Windows)
|
||||||
|
if: runner.os == 'windows'
|
||||||
|
run: |
|
||||||
|
mkdir upload
|
||||||
|
$file = Get-ChildItem -Path out/make -Filter '*.zip' -Recurse | Select-Object -First 1
|
||||||
|
Copy-Item -Path $file.FullName -Destination "upload/TriliumNextNotes-${{ matrix.os.name }}-${{ matrix.arch }}-${{ github.ref_name }}.zip"
|
||||||
|
$file = Get-ChildItem -Path out/make -Filter '*.${{ matrix.os.extension }}' -Recurse | Select-Object -First 1
|
||||||
|
Copy-Item -Path $file.FullName -Destination "upload/TriliumNextNotes-${{ matrix.os.name }}-${{ matrix.arch }}-${{ github.ref_name }}.${{ matrix.os.extension }}"
|
||||||
|
- name: Publish artifacts
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: TriliumNextNotes ${{ matrix.os.name }} ${{ matrix.arch }}.zip
|
||||||
|
path: upload/*.zip
|
||||||
|
- name: Publish installer artifacts
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: TriliumNextNotes ${{ matrix.os.name }} ${{ matrix.arch }}.${{matrix.os.extension}}
|
||||||
|
path: upload/*.${{ matrix.os.extension }}
|
||||||
|
build_linux_server-x64:
|
||||||
|
name: Build Linux Server x86_64
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Set up node & dependencies
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
cache: "npm"
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
|
- name: Run Linux server build (x86_64)
|
||||||
|
run: |
|
||||||
|
npm run update-build-info
|
||||||
|
./bin/build-server.sh
|
||||||
|
- name: Prepare artifacts
|
||||||
|
if: runner.os != 'windows'
|
||||||
|
run: |
|
||||||
|
mkdir -p upload
|
||||||
|
file=$(find dist -name '*.tar.xz' -print -quit)
|
||||||
|
cp "$file" "upload/TriliumNextNotes-linux-x64-${{ github.ref_name }}.tar.xz"
|
||||||
|
- uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: TriliumNextNotes linux server x64
|
||||||
|
path: upload/TriliumNextNotes-linux-x64-${{ github.ref_name }}.tar.xz
|
||||||
27
.github/workflows/playwright.yml
vendored
Normal file
27
.github/workflows/playwright.yml
vendored
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
name: Playwright Tests
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ main, master ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ main, master ]
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
timeout-minutes: 60
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: lts/*
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
|
- name: Install Playwright Browsers
|
||||||
|
run: npx playwright install --with-deps
|
||||||
|
- name: Run Playwright tests
|
||||||
|
run: npx playwright test
|
||||||
|
- uses: actions/upload-artifact@v4
|
||||||
|
if: always()
|
||||||
|
with:
|
||||||
|
name: playwright-report
|
||||||
|
path: playwright-report/
|
||||||
|
retention-days: 30
|
||||||
95
.github/workflows/release.yml
vendored
Normal file
95
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
name: Release
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- "v*"
|
||||||
|
workflow_dispatch:
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
make-electron:
|
||||||
|
name: Make Electron
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
arch: [x64, arm64]
|
||||||
|
os:
|
||||||
|
- name: macos
|
||||||
|
image: macos-latest
|
||||||
|
extension: dmg
|
||||||
|
- name: linux
|
||||||
|
image: ubuntu-latest
|
||||||
|
extension: deb
|
||||||
|
- name: windows
|
||||||
|
image: windows-latest
|
||||||
|
extension: exe
|
||||||
|
runs-on: ${{ matrix.os.image }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Set up node & dependencies
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
- name: Set up Python for appdmg to be installed
|
||||||
|
if: ${{ matrix.os.name == 'macos' }}
|
||||||
|
run: brew install python-setuptools
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
|
- name: Update build info
|
||||||
|
run: npm run update-build-info
|
||||||
|
- name: Run electron-forge
|
||||||
|
run: npm run make-electron -- --arch=${{ matrix.arch }}
|
||||||
|
- name: Prepare artifacts (Unix)
|
||||||
|
if: runner.os != 'windows'
|
||||||
|
run: |
|
||||||
|
mkdir -p upload
|
||||||
|
file=$(find out/make -name '*.zip' -print -quit)
|
||||||
|
cp "$file" "upload/TriliumNextNotes-${{ github.ref_name }}-${{ matrix.os.name }}-${{ matrix.arch }}.zip"
|
||||||
|
file=$(find out/make -name '*.${{ matrix.os.extension }}' -print -quit)
|
||||||
|
cp "$file" "upload/TriliumNextNotes-${{ github.ref_name }}-${{ matrix.os.name }}-${{ matrix.arch }}.${{ matrix.os.extension }}"
|
||||||
|
- name: Prepare artifacts (Windows)
|
||||||
|
if: runner.os == 'windows'
|
||||||
|
run: |
|
||||||
|
mkdir upload
|
||||||
|
$file = Get-ChildItem -Path out/make -Filter '*.zip' -Recurse | Select-Object -First 1
|
||||||
|
Copy-Item -Path $file.FullName -Destination "upload/TriliumNextNotes-${{ github.ref_name }}-${{ matrix.os.name }}-${{ matrix.arch }}.zip"
|
||||||
|
$file = Get-ChildItem -Path out/make -Filter '*.${{ matrix.os.extension }}' -Recurse | Select-Object -First 1
|
||||||
|
Copy-Item -Path $file.FullName -Destination "upload/TriliumNextNotes-${{ github.ref_name }}-${{ matrix.os.name }}-${{ matrix.arch }}.${{ matrix.os.extension }}"
|
||||||
|
- name: Publish release
|
||||||
|
uses: softprops/action-gh-release@v2
|
||||||
|
with:
|
||||||
|
draft: true
|
||||||
|
fail_on_unmatched_files: true
|
||||||
|
files: upload/*.*
|
||||||
|
build_linux_server-x64:
|
||||||
|
name: Build Linux Server x86_64
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Set up node & dependencies
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
cache: "npm"
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
|
- name: Run Linux server build (x86_64)
|
||||||
|
run: |
|
||||||
|
npm run update-build-info
|
||||||
|
./bin/build-server.sh
|
||||||
|
- name: Prepare artifacts
|
||||||
|
if: runner.os != 'windows'
|
||||||
|
run: |
|
||||||
|
mkdir -p upload
|
||||||
|
file=$(find dist -name '*.tar.xz' -print -quit)
|
||||||
|
cp "$file" "upload/TriliumNextNotes-${{ github.ref_name }}-server-linux-x64.tar.xz"
|
||||||
|
- name: Publish release
|
||||||
|
uses: softprops/action-gh-release@v2
|
||||||
|
with:
|
||||||
|
draft: true
|
||||||
|
fail_on_unmatched_files: true
|
||||||
|
files: upload/*.*
|
||||||
19
.gitignore
vendored
19
.gitignore
vendored
@@ -1,15 +1,34 @@
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
node_modules/
|
node_modules/
|
||||||
dist/
|
dist/
|
||||||
|
build/
|
||||||
src/public/app-dist/
|
src/public/app-dist/
|
||||||
npm-debug.log
|
npm-debug.log
|
||||||
yarn-error.log
|
yarn-error.log
|
||||||
|
|
||||||
*.db
|
*.db
|
||||||
|
!integration-tests/db/document.db
|
||||||
|
integration-tests/db/log
|
||||||
|
integration-tests/db/sessions
|
||||||
|
integration-tests/db/backup
|
||||||
|
integration-tests/db/session_secret.txt
|
||||||
|
|
||||||
config.ini
|
config.ini
|
||||||
cert.key
|
cert.key
|
||||||
cert.crt
|
cert.crt
|
||||||
server-package.json
|
server-package.json
|
||||||
.idea/httpRequests/
|
.idea/httpRequests/
|
||||||
|
.idea/shelf/
|
||||||
data/
|
data/
|
||||||
|
data-test/
|
||||||
tmp/
|
tmp/
|
||||||
.eslintcache
|
.eslintcache
|
||||||
|
|
||||||
|
out/
|
||||||
|
|
||||||
|
images/app-icons/mac/*.png
|
||||||
|
/test-results/
|
||||||
|
/playwright-report/
|
||||||
|
/blob-report/
|
||||||
|
/playwright/.cache/
|
||||||
|
/playwright/.auth/
|
||||||
@@ -2,7 +2,7 @@ image:
|
|||||||
file: .gitpod.dockerfile
|
file: .gitpod.dockerfile
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- before: nvm install 18.16.1 && nvm use 18.16.1
|
- before: nvm install 20.15.1 && nvm use 20.15.1
|
||||||
init: npm install
|
init: npm install
|
||||||
command: npm run start-server
|
command: npm run start-server
|
||||||
|
|
||||||
|
|||||||
1
.husky/.gitignore
vendored
1
.husky/.gitignore
vendored
@@ -1 +0,0 @@
|
|||||||
_
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
. "$(dirname "$0")/_/husky.sh"
|
|
||||||
|
|
||||||
#npx lint-staged
|
|
||||||
8
.idea/codeStyles/Project.xml
generated
8
.idea/codeStyles/Project.xml
generated
@@ -6,8 +6,10 @@
|
|||||||
<option name="TAB_SIZE" value="2" />
|
<option name="TAB_SIZE" value="2" />
|
||||||
</value>
|
</value>
|
||||||
</option>
|
</option>
|
||||||
<JSCodeStyleSettings version="0">
|
<codeStyleSettings language="JSON">
|
||||||
<option name="USE_EXPLICIT_JS_EXTENSION" value="TRUE" />
|
<indentOptions>
|
||||||
</JSCodeStyleSettings>
|
<option name="INDENT_SIZE" value="4" />
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
</code_scheme>
|
</code_scheme>
|
||||||
</component>
|
</component>
|
||||||
6
.idea/jsLinters/eslint.xml
generated
6
.idea/jsLinters/eslint.xml
generated
@@ -1,6 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="EslintConfiguration">
|
|
||||||
<option name="fix-on-save" value="true" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
14
.prettierrc
Normal file
14
.prettierrc
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"printWidth": 200,
|
||||||
|
"tabWidth": 4,
|
||||||
|
"useTabs": false,
|
||||||
|
"semi": true,
|
||||||
|
"singleQuote": true,
|
||||||
|
"quoteProps": "as-needed",
|
||||||
|
"trailingComma": "none",
|
||||||
|
"bracketSpacing": false,
|
||||||
|
"arrowParens": "always",
|
||||||
|
"proseWrap": "preserve",
|
||||||
|
"htmlWhitespaceSensitivity": "css",
|
||||||
|
"endOfLine": "lf"
|
||||||
|
}
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
//https://prettier.io/docs/en/options.html
|
|
||||||
module.exports = {
|
|
||||||
semi: true,
|
|
||||||
trailingComma: 'es5',
|
|
||||||
singleQuote: true,
|
|
||||||
printWidth: 120,
|
|
||||||
tabWidth: 4,
|
|
||||||
// useTabs: false,
|
|
||||||
// bracketSpacing: true,
|
|
||||||
// htmlWhitespaceSensitivity: 'ignore',
|
|
||||||
};
|
|
||||||
3
.vscode/extensions.json
vendored
3
.vscode/extensions.json
vendored
@@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"recommendations": [
|
"recommendations": [
|
||||||
"dbaeumer.vscode-eslint",
|
"lokalise.i18n-ally"
|
||||||
"esbenp.prettier-vscode",
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
31
.vscode/i18n-ally-custom-framework.yml
vendored
Normal file
31
.vscode/i18n-ally-custom-framework.yml
vendored
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
# An array of strings which contain Language Ids defined by VS Code
|
||||||
|
# You can check available language ids here: https://code.visualstudio.com/docs/languages/identifiers
|
||||||
|
languageIds:
|
||||||
|
- javascript
|
||||||
|
- typescript
|
||||||
|
|
||||||
|
# An array of RegExes to find the key usage. **The key should be captured in the first match group**.
|
||||||
|
# You should unescape RegEx strings in order to fit in the YAML file
|
||||||
|
# To help with this, you can use https://www.freeformatter.com/json-escape.html
|
||||||
|
usageMatchRegex:
|
||||||
|
# The following example shows how to detect `t("your.i18n.keys")`
|
||||||
|
# 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})['\"`]"
|
||||||
|
|
||||||
|
# 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
|
||||||
|
# useTranslation() hook.
|
||||||
|
# You should unescape RegEx strings in order to fit in the YAML file
|
||||||
|
# To help with this, you can use https://www.freeformatter.com/json-escape.html
|
||||||
|
scopeRangeRegex: "useTranslation\\(\\s*\\[?\\s*['\"`](.*?)['\"`]"
|
||||||
|
|
||||||
|
# An array of strings containing refactor templates.
|
||||||
|
# The "$1" will be replaced by the keypath specified.
|
||||||
|
refactorTemplates:
|
||||||
|
- t("$1")
|
||||||
|
- ${t("$1")}
|
||||||
|
|
||||||
|
|
||||||
|
# If set to true, only enables this custom framework (will disable all built-in frameworks)
|
||||||
|
monopoly: true
|
||||||
7
.vscode/i18n-ally-reviews.yml
vendored
Normal file
7
.vscode/i18n-ally-reviews.yml
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# Review comments generated by i18n-ally. Please commit this file.
|
||||||
|
|
||||||
|
reviews:
|
||||||
|
help.inPageSearch:
|
||||||
|
description: >-
|
||||||
|
Describes the shortcut which triggers a search within the current
|
||||||
|
page/note only
|
||||||
47
.vscode/settings.json
vendored
47
.vscode/settings.json
vendored
@@ -1,33 +1,20 @@
|
|||||||
{
|
{
|
||||||
"[javascript]": {
|
"editor.formatOnSave": false,
|
||||||
"editor.defaultFormatter": "dbaeumer.vscode-eslint"
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||||
},
|
|
||||||
"[json]": {
|
|
||||||
"editor.defaultFormatter": "dbaeumer.vscode-eslint"
|
|
||||||
},
|
|
||||||
"editor.formatOnSave": true,
|
|
||||||
"eslint.format.enable": true,
|
|
||||||
"eslint.probe": [
|
|
||||||
"javascript",
|
|
||||||
"javascriptreact",
|
|
||||||
"typescript",
|
|
||||||
"typescriptreact",
|
|
||||||
"html",
|
|
||||||
"vue",
|
|
||||||
"markdown",
|
|
||||||
"json",
|
|
||||||
"jsonc"
|
|
||||||
],
|
|
||||||
"eslint.validate": [
|
|
||||||
"javascript",
|
|
||||||
"javascriptreact",
|
|
||||||
"typescript",
|
|
||||||
"typescriptreact",
|
|
||||||
"html",
|
|
||||||
"vue",
|
|
||||||
"markdown",
|
|
||||||
"json",
|
|
||||||
"jsonc"
|
|
||||||
],
|
|
||||||
"files.eol": "\n",
|
"files.eol": "\n",
|
||||||
|
"typescript.tsdk": "node_modules/typescript/lib",
|
||||||
|
"i18n-ally.sourceLanguage": "en",
|
||||||
|
"i18n-ally.keystyle": "nested",
|
||||||
|
"i18n-ally.localesPaths": [
|
||||||
|
"./src/public/translations"
|
||||||
|
],
|
||||||
|
"[jsonc]": {
|
||||||
|
"editor.defaultFormatter": "vscode.json-language-features"
|
||||||
|
},
|
||||||
|
"[javascript]": {
|
||||||
|
"editor.defaultFormatter": "vscode.typescript-language-features"
|
||||||
|
},
|
||||||
|
"[typescript]": {
|
||||||
|
"editor.defaultFormatter": "vscode.typescript-language-features"
|
||||||
|
},
|
||||||
}
|
}
|
||||||
17
.vscode/tasks.json
vendored
Normal file
17
.vscode/tasks.json
vendored
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"version": "2.0.0",
|
||||||
|
"tasks": [
|
||||||
|
{
|
||||||
|
"type": "npm",
|
||||||
|
"script": "errors",
|
||||||
|
"problemMatcher": "$tsc-watch",
|
||||||
|
"isBackground": true,
|
||||||
|
"presentation": {
|
||||||
|
"revealProblems": "never"
|
||||||
|
},
|
||||||
|
"runOptions": {
|
||||||
|
"runOn": "folderOpen"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
66
Dockerfile
66
Dockerfile
@@ -1,17 +1,8 @@
|
|||||||
# !!! Don't try to build this Dockerfile directly, run it through bin/build-docker.sh script !!!
|
# !!! Don't try to build this Dockerfile directly, run it through bin/build-docker.sh script !!!
|
||||||
FROM node:18.16.1-alpine
|
FROM node:20.15.1-bullseye-slim
|
||||||
|
|
||||||
# Create app directory
|
# Configure system dependencies
|
||||||
WORKDIR /usr/src/app
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
|
|
||||||
# Bundle app source
|
|
||||||
COPY . .
|
|
||||||
|
|
||||||
COPY server-package.json package.json
|
|
||||||
|
|
||||||
# Install app dependencies
|
|
||||||
RUN set -x \
|
|
||||||
&& apk add --no-cache --virtual .build-dependencies \
|
|
||||||
autoconf \
|
autoconf \
|
||||||
automake \
|
automake \
|
||||||
g++ \
|
g++ \
|
||||||
@@ -21,22 +12,49 @@ RUN set -x \
|
|||||||
nasm \
|
nasm \
|
||||||
libpng-dev \
|
libpng-dev \
|
||||||
python3 \
|
python3 \
|
||||||
&& npm install \
|
gosu \
|
||||||
&& apk del .build-dependencies \
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
&& npm run webpack \
|
|
||||||
&& npm prune --omit=dev \
|
# Create app directory
|
||||||
&& cp src/public/app/share.js src/public/app-dist/. \
|
WORKDIR /usr/src/app
|
||||||
&& cp -r src/public/app/doc_notes src/public/app-dist/. \
|
|
||||||
&& rm -rf src/public/app
|
# Bundle app source
|
||||||
|
COPY . .
|
||||||
|
COPY server-package.json package.json
|
||||||
|
|
||||||
|
# Copy TypeScript build artifacts into the original directory structure.
|
||||||
|
# Copy the healthcheck
|
||||||
|
RUN cp -R build/src/* src/. && \
|
||||||
|
cp build/docker_healthcheck.js . && \
|
||||||
|
rm -r build && \
|
||||||
|
rm docker_healthcheck.ts
|
||||||
|
|
||||||
|
# Install app dependencies
|
||||||
|
RUN apt-get purge -y --auto-remove \
|
||||||
|
autoconf \
|
||||||
|
automake \
|
||||||
|
g++ \
|
||||||
|
gcc \
|
||||||
|
libtool \
|
||||||
|
make \
|
||||||
|
nasm \
|
||||||
|
libpng-dev \
|
||||||
|
python3 \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
RUN npm install && \
|
||||||
|
npm run webpack && \
|
||||||
|
npm prune --omit=dev
|
||||||
|
RUN cp src/public/app/share.js src/public/app-dist/. && \
|
||||||
|
cp -r src/public/app/doc_notes src/public/app-dist/. && \
|
||||||
|
rm -rf src/public/app && rm src/services/asset_path.ts
|
||||||
|
|
||||||
# Some setup tools need to be kept
|
# Some setup tools need to be kept
|
||||||
RUN apk add --no-cache su-exec shadow
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
|
gosu \
|
||||||
# Add application user and setup proper volume permissions
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
RUN adduser -s /bin/false node; exit 0
|
|
||||||
|
|
||||||
# Start the application
|
# Start the application
|
||||||
EXPOSE 8080
|
EXPOSE 8080
|
||||||
CMD [ "./start-docker.sh" ]
|
CMD [ "./start-docker.sh" ]
|
||||||
|
|
||||||
HEALTHCHECK --start-period=10s CMD exec su-exec node node docker_healthcheck.js
|
HEALTHCHECK --start-period=10s CMD exec gosu node node docker_healthcheck.js
|
||||||
53
Dockerfile.alpine
Normal file
53
Dockerfile.alpine
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# !!! Don't try to build this Dockerfile directly, run it through bin/build-docker.sh script !!!
|
||||||
|
FROM node:20.15.1-alpine
|
||||||
|
|
||||||
|
# Configure system dependencies
|
||||||
|
RUN apk add --no-cache --virtual .build-dependencies \
|
||||||
|
autoconf \
|
||||||
|
automake \
|
||||||
|
g++ \
|
||||||
|
gcc \
|
||||||
|
libtool \
|
||||||
|
make \
|
||||||
|
nasm \
|
||||||
|
libpng-dev \
|
||||||
|
python3
|
||||||
|
|
||||||
|
# Create app directory
|
||||||
|
WORKDIR /usr/src/app
|
||||||
|
|
||||||
|
# Bundle app source
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
COPY server-package.json package.json
|
||||||
|
|
||||||
|
# Copy TypeScript build artifacts into the original directory structure.
|
||||||
|
# Copy the healthcheck
|
||||||
|
RUN cp -R build/src/* src/. && \
|
||||||
|
cp build/docker_healthcheck.js . && \
|
||||||
|
rm -r build && \
|
||||||
|
rm docker_healthcheck.ts
|
||||||
|
|
||||||
|
# Install app dependencies
|
||||||
|
RUN set -x && \
|
||||||
|
npm install && \
|
||||||
|
apk del .build-dependencies && \
|
||||||
|
npm run webpack && \
|
||||||
|
npm prune --omit=dev && \
|
||||||
|
cp src/public/app/share.js src/public/app-dist/. && \
|
||||||
|
cp -r src/public/app/doc_notes src/public/app-dist/. && \
|
||||||
|
rm -rf src/public/app && \
|
||||||
|
rm src/services/asset_path.ts
|
||||||
|
|
||||||
|
|
||||||
|
# Some setup tools need to be kept
|
||||||
|
RUN apk add --no-cache su-exec shadow
|
||||||
|
|
||||||
|
# Add application user and setup proper volume permissions
|
||||||
|
RUN adduser -s /bin/false node; exit 0
|
||||||
|
|
||||||
|
# Start the application
|
||||||
|
EXPOSE 8080
|
||||||
|
CMD [ "./start-docker.sh" ]
|
||||||
|
|
||||||
|
HEALTHCHECK --start-period=10s CMD exec su-exec node node docker_healthcheck.js
|
||||||
@@ -1,82 +1,97 @@
|
|||||||
# Trilium Notes
|
# TriliumNext Notes
|
||||||
|
|
||||||
[English](https://github.com/zadam/trilium/blob/master/README.md) | [Chinese](https://github.com/zadam/trilium/blob/master/README-ZH_CN.md) | [Russian](https://github.com/zadam/trilium/blob/master/README.ru.md) | [Japanese](https://github.com/zadam/trilium/blob/master/README.ja.md)
|
[English](https://github.com/TriliumNext/Notes/blob/master/README.md) | [Chinese](https://github.com/TriliumNext/Notes/blob/master/README-ZH_CN.md) | [Russian](https://github.com/TriliumNext/Notes/blob/master/README.ru.md) | [Japanese](https://github.com/TriliumNext/Notes/blob/master/README.ja.md) | [Italian](https://github.com/TriliumNext/Notes/blob/master/README.it.md) | [Spanish](https://github.com/TriliumNext/Notes/blob/master/README.es.md)
|
||||||
|
|
||||||
[](https://gitter.im/trilium-notes/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
TriliumNext Notes 是一个层次化的笔记应用程序,专注于建立大型个人知识库。请参阅[屏幕截图](https://triliumnext.github.io/Docs/Wiki/screenshot-tour)以快速了解:
|
||||||
Trilium Notes 是一个层次化的笔记应用程序,专注于建立大型个人知识库。请参阅[屏幕截图](https://github.com/zadam/trilium/wiki/Screenshot-tour)以快速了解:
|
|
||||||
|
|
||||||

|
<a href="https://triliumnext.github.io/Docs/Wiki/screenshot-tour"><img src="https://github.com/TriliumNext/Docs/blob/main/Wiki/images/screenshot.png?raw=true" alt="Trilium Screenshot" width="1000"></a>
|
||||||
|
|
||||||
Ukraine is currently suffering from Russian aggression, please consider donating to [one of these charities](https://old.reddit.com/r/ukraine/comments/s6g5un/want_to_support_ukraine_heres_a_list_of_charities/).
|
## ⚠️ 为什么选择TriliumNext?
|
||||||
|
|
||||||
<img src="https://upload.wikimedia.org/wikipedia/commons/4/49/Flag_of_Ukraine.svg" alt="drawing" width="600"/>
|
[原始的Trilium项目目前处于维护模式](https://github.com/zadam/trilium/issues/4620)
|
||||||
<img src="https://signmyrocket.com//uploads/2b2a523cd0c0e76cdbba95a89a9636b2_1676971281.jpg" alt="Trilium Notes supports Ukraine!" width="600"/>
|
|
||||||
|
|
||||||
## 特性
|
## 🗭 与我们讨论
|
||||||
|
|
||||||
* 笔记可以排列成任意深的树。单个笔记可以放在树中的多个位置(请参阅[克隆](https://github.com/zadam/trilium/wiki/Cloning-notes))
|
欢迎加入我们的官方讨论和社区。我们专注于Trilium的开发,乐于听取您对功能、建议或问题的意见!
|
||||||
* 丰富的所见即所得笔记编辑功能,包括带有 Markdown [自动格式化功能的](https://github.com/zadam/trilium/wiki/Text-notes#autoformat)表格,图像和[数学](https://github.com/zadam/trilium/wiki/Text-notes#math-support)
|
|
||||||
* 支持编辑[使用源代码的笔记](https://github.com/zadam/trilium/wiki/Code-notes),包括语法高亮显示
|
- [Matrix](https://matrix.to/#/#triliumnext:matrix.org)(用于同步讨论)
|
||||||
* 笔记之间快速[导航](https://github.com/zadam/trilium/wiki/Note-navigation),全文搜索和[笔记聚焦](https://github.com/zadam/trilium/wiki/Note-hoisting)
|
- [Github Discussions](https://github.com/TriliumNext/Notes/discussions)(用于异步讨论)
|
||||||
* 无缝[笔记版本控制](https://github.com/zadam/trilium/wiki/Note-revisions)
|
- [Wiki](https://triliumnext.github.io/Docs/)(用于常见操作问题和用户指南)
|
||||||
* 笔记[属性](https://github.com/zadam/trilium/wiki/Attributes)可用于笔记组织,查询和高级[脚本编写](https://github.com/zadam/trilium/wiki/Scripts)
|
|
||||||
* [同步](https://github.com/zadam/trilium/wiki/Synchronization)与自托管同步服务器
|
上面链接的两个房间是镜像的,所以您可以在任意平台上使用XMPP或者Matrix来和我们交流。
|
||||||
|
|
||||||
|
### 非官方社区
|
||||||
|
|
||||||
|
[Trilium Rocks](https://discord.gg/aqdX9mXX4r)
|
||||||
|
|
||||||
|
## 🎁 特性
|
||||||
|
|
||||||
|
* 笔记可以排列成任意深的树。单个笔记可以放在树中的多个位置(请参阅[克隆](https://triliumnext.github.io/Docs/Wiki/cloning-notes))
|
||||||
|
* 丰富的所见即所得笔记编辑功能,包括带有 Markdown [自动格式化功能的](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat)表格,图像和[数学公式](https://triliumnext.github.io/Docs/Wiki/text-notes#math-support)
|
||||||
|
* 支持编辑[使用源代码的笔记](https://triliumnext.github.io/Docs/Wiki/code-notes),包括语法高亮显示
|
||||||
|
* 笔记之间快速[导航](https://triliumnext.github.io/Docs/Wiki/note-navigation),全文搜索和[提升笔记](https://triliumnext.github.io/Docs/Wiki/note-hoisting)
|
||||||
|
* 无缝[笔记版本控制](https://triliumnext.github.io/Docs/Wiki/note-revisions)
|
||||||
|
* 笔记[属性](https://triliumnext.github.io/Docs/Wiki/attributes)可用于笔记组织,查询和高级[脚本编写](https://triliumnext.github.io/Docs/Wiki/scripts)
|
||||||
|
* [同步](https://triliumnext.github.io/Docs/Wiki/synchronization)与自托管同步服务器
|
||||||
* 有一个[第三方提供的同步服务器托管服务](https://trilium.cc/paid-hosting)
|
* 有一个[第三方提供的同步服务器托管服务](https://trilium.cc/paid-hosting)
|
||||||
* 公开地[分享](https://github.com/zadam/trilium/wiki/Sharing)(发布)笔记到互联网
|
* 公开地[分享](https://triliumnext.github.io/Docs/Wiki/sharing)(发布)笔记到互联网
|
||||||
* 具有按笔记粒度的强大的[笔记加密](https://github.com/zadam/trilium/wiki/Protected-notes)
|
* 具有按笔记粒度的强大的[笔记加密](https://triliumnext.github.io/Docs/Wiki/protected-notes)
|
||||||
* 使用自带的 Excalidraw 来绘制图表(笔记类型“画布”)
|
* 使用自带的 Excalidraw 来绘制图表(笔记类型“画布”)
|
||||||
* [关系图](https://github.com/zadam/trilium/wiki/Relation-map)和[链接图](https://github.com/zadam/trilium/wiki/Link-map),用于可视化笔记及其关系
|
* [关系图](https://triliumnext.github.io/Docs/Wiki/relation-map)和[链接图](https://triliumnext.github.io/Docs/Wiki/link-map),用于可视化笔记及其关系
|
||||||
* [脚本](https://github.com/zadam/trilium/wiki/Scripts) - 请参阅[高级功能展示](https://github.com/zadam/trilium/wiki/Advanced-showcases)
|
* [脚本](https://triliumnext.github.io/Docs/Wiki/scripts) - 请参阅[高级功能展示](https://triliumnext.github.io/Docs/Wiki/advanced-showcases)
|
||||||
|
* 可用于自动化的 [REST API](https://triliumnext.github.io/Docs/Wiki/etapi)
|
||||||
* 在拥有超过 10 万条笔记时仍能保持良好的可用性和性能
|
* 在拥有超过 10 万条笔记时仍能保持良好的可用性和性能
|
||||||
* 针对智能手机和平板电脑进行优化的[用于移动设备的前端](https://github.com/zadam/trilium/wiki/Mobile-frontend)
|
* 针对智能手机和平板电脑进行优化的[用于移动设备的前端](https://triliumnext.github.io/Docs/Wiki/mobile-frontend)
|
||||||
* [夜间主题](https://github.com/zadam/trilium/wiki/Themes)
|
* [夜间主题](https://triliumnext.github.io/Docs/Wiki/themes)
|
||||||
* [Evernote](https://github.com/zadam/trilium/wiki/Evernote-import) 和 [Markdown 导入导出](https://github.com/zadam/trilium/wiki/Markdown)功能
|
* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) 和 [Markdown 导入导出](https://triliumnext.github.io/Docs/Wiki/markdown)功能
|
||||||
* 使用[网页剪藏](https://github.com/zadam/trilium/wiki/Web-clipper)轻松保存互联网上的内容
|
* 使用[网页剪藏](https://triliumnext.github.io/Docs/Wiki/web-clipper)轻松保存互联网上的内容
|
||||||
|
|
||||||
## 构建
|
✨ 查看以下第三方资源,获取更多关于TriliumNext的好东西:
|
||||||
|
|
||||||
Trilium 可以用作桌面应用程序(Linux 和 Windows)或服务器(Linux)上托管的 Web 应用程序。虽然有 macOS 版本的桌面应用程序,但它[不受支持](https://github.com/zadam/trilium/wiki/FAQ#mac-os-support)。
|
- [awesome-trilium](https://github.com/Nriver/awesome-trilium):提供第三方主题、脚本、插件等资源的列表。
|
||||||
|
- [TriliumRocks!](https://trilium.rocks/):提供教程、指南等更多内容。
|
||||||
|
|
||||||
* 如果要在桌面上使用 Trilium,请从[最新版本](https://github.com/zadam/trilium/releases/latest)下载适用于您平台的二进制版本,解压缩该软件包并运行`trilium`可执行文件。
|
## 🏗 构建
|
||||||
* 如果要在服务器上安装 Trilium,请参考[此页面](https://github.com/zadam/trilium/wiki/Server-installation)。
|
|
||||||
|
Trilium 可以用作桌面应用程序(Linux 和 Windows)或服务器(Linux)上托管的 Web 应用程序。虽然有 macOS 版本的桌面应用程序,但它[不受支持](https://triliumnext.github.io/Docs/Wiki/faq#mac-os-support)。
|
||||||
|
|
||||||
|
* 如果要在桌面上使用 Trilium,请从[最新版本](https://github.com/TriliumNext/Notes/releases/latest)下载适用于您平台的二进制版本,解压缩该软件包并运行`trilium`可执行文件。
|
||||||
|
* 如果要在服务器上安装 Trilium,请参考[此页面](https://triliumnext.github.io/Docs/Wiki/server-installation)。
|
||||||
* 当前仅支持(测试过)最近发布的 Chrome 和 Firefox 浏览器。
|
* 当前仅支持(测试过)最近发布的 Chrome 和 Firefox 浏览器。
|
||||||
|
|
||||||
Trilium 也提供 Flatpak:
|
Trilium 也提供 Flatpak:
|
||||||
|
|
||||||
[<img width="240" src="https://flathub.org/assets/badges/flathub-badge-en.png">](https://flathub.org/apps/details/com.github.zadam.trilium)
|
[<img width="240" src="https://flathub.org/assets/badges/flathub-badge-en.png">](https://flathub.org/apps/details/com.github.zadam.trilium)
|
||||||
|
|
||||||
## 文档
|
## 📝 文档
|
||||||
|
|
||||||
[有关文档页面的完整列表,请参见 Wiki。](https://github.com/zadam/trilium/wiki/)
|
[有关文档页面的完整列表,请参见 Wiki。](https://triliumnext.github.io/Docs/)
|
||||||
|
|
||||||
* [Wiki 的中文翻译版本](https://github.com/baddate/trilium/wiki/)
|
* [Wiki 的中文翻译版本](https://github.com/baddate/trilium/wiki/)
|
||||||
|
|
||||||
您还可以阅读[个人知识库模式](https://github.com/zadam/trilium/wiki/Patterns-of-personal-knowledge-base),以获取有关如何使用 Trilium 的灵感。
|
您还可以阅读[个人知识库模式](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge),以获取有关如何使用 Trilium 的灵感。
|
||||||
|
|
||||||
## 贡献
|
## 💻 贡献
|
||||||
|
|
||||||
使用基于浏览器的开发环境
|
|
||||||
|
|
||||||
[](https://gitpod.io/#https://github.com/zadam/trilium)
|
|
||||||
|
|
||||||
或者克隆本仓库到本地,并运行
|
或者克隆本仓库到本地,并运行
|
||||||
|
|
||||||
```
|
```shell
|
||||||
npm install
|
npm install
|
||||||
npm run start-server
|
npm run start-server
|
||||||
```
|
```
|
||||||
|
|
||||||
## 致谢
|
## 👏 致谢
|
||||||
|
|
||||||
* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - 市面上最好的所见即所得编辑器,拥有互动性强且聆听能力强的团队
|
* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - 市面上最好的所见即所得编辑器,拥有互动性强且聆听能力强的团队
|
||||||
* [FancyTree](https://github.com/mar10/fancytree) - 一个非常丰富的关于树的库,强大到没有对手。没有它,Trilium Notes 将不会如此。
|
* [FancyTree](https://github.com/mar10/fancytree) - 一个非常丰富的关于树的库,强大到没有对手。没有它,Trilium Notes 将不会如此。
|
||||||
* [CodeMirror](https://github.com/codemirror/CodeMirror) - 支持大量语言的代码编辑器
|
* [CodeMirror](https://github.com/codemirror/CodeMirror) - 支持大量语言的代码编辑器
|
||||||
* [jsPlumb](https://github.com/jsplumb/jsplumb) - 强大的可视化连接库。用于[关系图](https://github.com/zadam/trilium/wiki/Relation-map)和[链接图](https://github.com/zadam/trilium/wiki/Link-map)
|
* [jsPlumb](https://github.com/jsplumb/jsplumb) - 强大的可视化连接库。用于[关系图](https://triliumnext.github.io/Docs/Wiki/relation-map)和[链接图](https://triliumnext.github.io/Docs/Wiki/link-map)
|
||||||
|
|
||||||
## 捐赠
|
## 🤝 捐赠
|
||||||
|
|
||||||
你可以通过 GitHub Sponsors,[PayPal](https://paypal.me/za4am) 或者比特币 (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2) 来捐赠。
|
你可以通过 GitHub Sponsors,[PayPal](https://paypal.me/za4am) 或者比特币 (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2) 来捐赠。
|
||||||
|
|
||||||
## 许可证
|
## 🔑 许可证
|
||||||
|
|
||||||
本程序是自由软件:你可以再发布本软件和/或修改本软件,只要你遵循 Free Software Foundation 发布的 GNU Affero General Public License 的第三版或者任何(由你选择)更晚的版本。
|
本程序是自由软件:你可以再发布本软件和/或修改本软件,只要你遵循 Free Software Foundation 发布的 GNU Affero General Public License 的第三版或者任何(由你选择)更晚的版本。
|
||||||
|
|||||||
106
README.es.md
Normal file
106
README.es.md
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
# TriliumNext Notes
|
||||||
|
|
||||||
|
[English](https://github.com/TriliumNext/Notes/blob/master/README.md) | [Chinese](https://github.com/TriliumNext/Notes/blob/master/README-ZH_CN.md) | [Russian](https://github.com/TriliumNext/Notes/blob/master/README.ru.md) | [Japanese](https://github.com/TriliumNext/Notes/blob/master/README.ja.md) | [Italian](https://github.com/TriliumNext/Notes/blob/master/README.it.md) | [Spanish](https://github.com/TriliumNext/Notes/blob/master/README.es.md)
|
||||||
|
|
||||||
|
TriliumNext Notes es una aplicación de toma de notas jerárquicas multi-plataforma y de código libre con un enfoque en la construcción de grandes bases de conocimiento personal.
|
||||||
|
|
||||||
|
Vea estas [capturas de pantalla](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) para un vistazo rápido:
|
||||||
|
|
||||||
|
<a href="https://triliumnext.github.io/Docs/Wiki/screenshot-tour"><img src="https://github.com/TriliumNext/Docs/blob/main/Wiki/images/screenshot.png?raw=true" alt="Trilium Screenshot" width="1000"></a>
|
||||||
|
|
||||||
|
## ⚠️ ¿Por qué usar TriliumNext?
|
||||||
|
|
||||||
|
[El proyecto Trilium original está en modo de mantenimiento](https://github.com/zadam/trilium/issues/4620)
|
||||||
|
|
||||||
|
### ¿Cómo migrar desde Trilium?
|
||||||
|
|
||||||
|
No hay pasos de migración especiales para migrar de una instancia de zadam/Trilium a una instancia de TriliumNext/Notes. Simplemente actualice su instancia de Trilium a la última versión e [instale TriliumNext/Notes como de costumbre](#-Instalación)
|
||||||
|
|
||||||
|
## 💬 Discuta con nosotros
|
||||||
|
|
||||||
|
Siéntase libre de unirse a nuestras conversaciones oficiales. ¡Nos encantaría escuchar de las características, sugerencias o problemas que pueda tener!
|
||||||
|
|
||||||
|
- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (Para discusiones síncronas)
|
||||||
|
- La sala `General` es replicada a [XMPP](xmpp:discuss@trilium.thisgreat.party?join)
|
||||||
|
- [Discusiones de GitHub](https://github.com/TriliumNext/Notes/discussions) (Para discusiones asíncronas)
|
||||||
|
- [Wiki](https://triliumnext.github.io/Docs/) (Para preguntas frecuentes y guías de usuario)
|
||||||
|
|
||||||
|
## 🎁 Características
|
||||||
|
|
||||||
|
- Las notas pueden ser acomodadas en un árbol de profundidad arbitraria. Una sola nota puede ser colocada en múltiples lugares del árbol (vea [clonar](https://triliumnext.github.io/Docs/Wiki/cloning-notes)
|
||||||
|
- Edición de notas WYSIWYG enriquecida que incluye, por ejemplo, tablas, imágenes y [matemáticas](https://triliumnext.github.io/Docs/Wiki/text-notes) con [autoformato](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) markdown
|
||||||
|
- Soporte para editar [notas con código fuente](https://triliumnext.github.io/Docs/Wiki/code-notes), incluyendo resaltado de sintaxis
|
||||||
|
- Rápida y sencilla [navegación entre notas](https://triliumnext.github.io/Docs/Wiki/note-navigation), búsqueda de texto completo y [elevación de notas](https://triliumnext.github.io/Docs/Wiki/note-hoisting)
|
||||||
|
- [Versionado de notas](https://triliumnext.github.io/Docs/Wiki/note-revisions) sutil
|
||||||
|
- Los [atributos](https://triliumnext.github.io/Docs/Wiki/attributes) de las notas pueden utilizarse para organización, realizar consultas y [scripts](https://triliumnext.github.io/Docs/Wiki/scripts) avanzados
|
||||||
|
- [Sincronización](https://triliumnext.github.io/Docs/Wiki/synchronization) con servidor de sincronización propio
|
||||||
|
- existe un [servicio de terceros para alojar el servidor de sincronización](https://trilium.cc/paid-hosting)
|
||||||
|
- [Compartir](https://triliumnext.github.io/Docs/Wiki/sharing) (publicar) notas al Internet público
|
||||||
|
- Fuerte [encriptación de notas](https://triliumnext.github.io/Docs/Wiki/protected-notes) con granularidad para cada nota
|
||||||
|
- Esbozo de diagramas con Excalidraw incorporado (tipo de nota «canvas»)
|
||||||
|
- [Mapas de relaciones](<https://triliumnext.github.io/Docs/Wiki/relation-map>) y [mapas de enlaces](https://triliumnext.github.io/Docs/Wiki/link-map) para visualizar las notas y sus relaciones
|
||||||
|
- [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - vea [casos de uso avanzados](https://triliumnext.github.io/Docs/Wiki/advanced-showcases)
|
||||||
|
- [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) para automatización
|
||||||
|
- Escala bien tanto en uso como en rendimiento a partir de 100,000 notas
|
||||||
|
- [Interfaz móvil](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) optimizada para teléfonos inteligentes y tabletas
|
||||||
|
- [Tema nocturno](https://triliumnext.github.io/Docs/Wiki/themes)
|
||||||
|
- Importación y exportación de [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) y [Markdown](https://triliumnext.github.io/Docs/Wiki/markdown)
|
||||||
|
- [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) para guardar fácilmente contenido web
|
||||||
|
|
||||||
|
✨ Consulte los/las siguientes recursos/comunidades de terceros para obtener más información sobre complementos para TriliumNext:
|
||||||
|
|
||||||
|
- [awesome-trilium](https://github.com/Nriver/awesome-trilium) para temas, scripts, plugins y más de terceros.
|
||||||
|
- [TriliumRocks!](https://trilium.rocks/) para tutoriales, guías y mucho más.
|
||||||
|
|
||||||
|
## 🏗 Instalación
|
||||||
|
|
||||||
|
### Escritorio
|
||||||
|
|
||||||
|
Para usar TriliumNext en su máquina de escritorio (Linux, MacOS y Windows) tiene algunas opciones:
|
||||||
|
|
||||||
|
- Descargue la versión binaria para su plataforma desde la [página de lanzamientos](https://github.com/TriliumNext/Notes/releases/latest), descomprima el paquete y ejecute el ejecutable `trilium`.
|
||||||
|
- Acceda a TriliumNext a través de la interfaz web de una instalación de servidor (ver más abajo)
|
||||||
|
- Actualmente solo las últimas versiones de Chrome y Firefox son compatibles (y están probadas).
|
||||||
|
- (Próximamente) TriliumNext también se proporcionará como un Flatpak
|
||||||
|
|
||||||
|
### Móvil
|
||||||
|
|
||||||
|
Para usar TriliumNext en un dispositivo móvil:
|
||||||
|
|
||||||
|
- Utilice un navegador web móvil para acceder a la interfaz móvil de una instalación de servidor (ver más abajo)
|
||||||
|
- El uso de una aplicación móvil aún no está soportado ([vea aquí](https://github.com/TriliumNext/Notes/issues/72)) para seguir las mejoras móviles.
|
||||||
|
|
||||||
|
### Servidor
|
||||||
|
|
||||||
|
Para instalar TriliumNext en su servidor (incluyendo vía Docker desde [Dockerhub](https://hub.docker.com/r/triliumnext/notes)) siga la [documentación de instalación de servidor](https://triliumnext.github.io/Docs/Wiki/server-installation).
|
||||||
|
|
||||||
|
## 📝 Documentación
|
||||||
|
|
||||||
|
[Vea la Wiki para la lista completa de páginas de documentación.](https://triliumnext.github.io/Docs)
|
||||||
|
|
||||||
|
También puede leer [Patrones para una base de conocimiento personal](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) para obtener un poco de inspiración de como podría usar TriliumNext.
|
||||||
|
|
||||||
|
## 💻 Contribuir
|
||||||
|
|
||||||
|
Clone localmente y ejecute
|
||||||
|
|
||||||
|
```shell
|
||||||
|
npm install
|
||||||
|
npm run start-server
|
||||||
|
```
|
||||||
|
|
||||||
|
## 👏 Reconocimientos
|
||||||
|
|
||||||
|
- [CKEditor 5](https://github.com/ckeditor/ckeditor5) - el mejor editor WYSIWYG en el mercado, equipo muy interactivo y atento
|
||||||
|
- [FancyTree](https://github.com/mar10/fancytree) - biblioteca de árbol muy rica en funciones sin competencia real. TriliumNext Notes no sería lo mismo sin esta.
|
||||||
|
- [CodeMirror](https://github.com/codemirror/CodeMirror) - editor de código con soporte para una gran cantidad de lenguajes
|
||||||
|
- [jsPlumb](https://github.com/jsplumb/jsplumb) - biblioteca de conectividad visual sin competencia. Usado en [mapas de relación](https://triliumnext.github.io/Docs/Wiki/Relation-map) y [mapas de enlace](https://triliumnext.github.io/Docs/Wiki/Link-map)
|
||||||
|
|
||||||
|
## 🤝 Soporte
|
||||||
|
|
||||||
|
Puede apoyar al desarrollador original de Trilium usando GitHub Sponsors, [PayPal](https://paypal.me/za4am) o Bitcoin (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2).
|
||||||
|
Apoyo para la organización TriliumNext será posible en un futuro próximo.
|
||||||
|
|
||||||
|
## 🔑 Licencia
|
||||||
|
|
||||||
|
Este programa es software libre: puede redistribuirlo y/o modificarlo bajo los términos de la Licencia Pública General de Affero GNU publicada por la Free Software Foundation, ya sea la versión 3 de la Licencia, o (a su elección) cualquier versión posterior.
|
||||||
93
README.it.md
Normal file
93
README.it.md
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
# TriliumNext Notes
|
||||||
|
|
||||||
|
[English](https://github.com/TriliumNext/Notes/blob/master/README.md) | [Chinese](https://github.com/TriliumNext/Notes/blob/master/README-ZH_CN.md) | [Russian](https://github.com/TriliumNext/Notes/blob/master/README.ru.md) | [Japanese](https://github.com/TriliumNext/Notes/blob/master/README.ja.md) | [Italian](https://github.com/TriliumNext/Notes/blob/master/README.it.md) | [Spanish](https://github.com/TriliumNext/Notes/blob/master/README.es.md)
|
||||||
|
|
||||||
|
TriliumNext Notes è un'applicazione per appunti ad organizzazione gerarchica, studiata per la costruzione di archivi di conoscenza personali di grandi dimensioni.
|
||||||
|
|
||||||
|
Vedi [fotografie](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) per una panoramica veloce:
|
||||||
|
|
||||||
|
<a href="https://triliumnext.github.io/Docs/Wiki/screenshot-tour"><img src="https://github.com/TriliumNext/Docs/blob/main/Wiki/images/screenshot.png?raw=true" alt="Trilium Screenshot" width="1000"></a>
|
||||||
|
|
||||||
|
## ⚠️ Perchè TriliumNext?
|
||||||
|
[Il progetto originale Trilium è in modalità di manutenzione](https://github.com/zadam/trilium/issues/4620)
|
||||||
|
|
||||||
|
## 🗭 Discuti con noi
|
||||||
|
Sentiti libero di unirti alle nostre discussioni ufficiali e alla nostra comunità. Siamo concentrati sullo sviluppo di Trilium e ci piacerebbe sapere quali funzioni, suggerimenti o eventuali problemi hai!
|
||||||
|
|
||||||
|
- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (Per discussioni sincrone)
|
||||||
|
- [Discussioni Github](https://github.com/TriliumNext/Notes/discussions) (Per discussioni asincrone)
|
||||||
|
- [Wiki](https://triliumnext.github.io/Docs/) (Per le domande più comuni e le guide per l'utente)
|
||||||
|
|
||||||
|
Le due stanze linkate sopra sono connesse e contengono gli stessi messaggi, quindi puoi usare XMPP o Matrix da qualsiasi client tu preferisca, praticamente su qualsiasi piattaforma!
|
||||||
|
### Comunità non ufficiali
|
||||||
|
|
||||||
|
[Trilium Rocks](https://discord.gg/aqdX9mXX4r)
|
||||||
|
## 🎁 Funzionalità
|
||||||
|
|
||||||
|
* Gli appunti possono essere organizzati in un albero di profondità arbitraria. Un singolo appunto può essere collocato in più posti nell'albero (vedi [clonazione](https://triliumnext.github.io/Docs/Wiki/cloning-notes))
|
||||||
|
* Ricco editor visuale (WYSIWYG), con supporto -tra l'altro- per tabelle, immagini ed [espressioni matematiche](https://triliumnext.github.io/Docs/Wiki/text-notes#math-support) e con [formattazione automatica](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) per markdown
|
||||||
|
* Supporto per la modifica di [appunti con codice sorgente](https://triliumnext.github.io/Docs/Wiki/code-notes), con evidenziazione della sintassi
|
||||||
|
* [Navigazione veloce](https://triliumnext.github.io/Docs/Wiki/note-navigation) tra gli appunti, ricerca testuale completa e [fissaggio degli appunti](https://triliumnext.github.io/Docs/Wiki/note-hoisting)
|
||||||
|
* Supporto integrato ed automatico per le [revisioni degli appunti](https://triliumnext.github.io/Docs/Wiki/note-revisions)
|
||||||
|
* Gli [attributi](https://triliumnext.github.io/Docs/Wiki/attributes) degli appunti possono essere utilizzati per l'organizzazione, per l'interrogazione e per lo scripting avanzato (prorgrammazione).
|
||||||
|
* [Sincronizzazione](https://triliumnext.github.io/Docs/Wiki/synchronization) con un server di sincronizzazione auto-ospitato
|
||||||
|
* c'è un [servizio di terze parti per ospitare server di sincronizzazione](https://trilium.cc/paid-hosting)
|
||||||
|
* [Condivisione](https://triliumnext.github.io/Docs/Wiki/sharing) (pubblicazione) di appunti sull'internet pubblico
|
||||||
|
* Robusta [crittografia](https://triliumnext.github.io/Docs/Wiki/protected-notes) configurabile singolarmente per ogni appunto
|
||||||
|
* Disegno di diagrammi con Excalidraw (tipo di appunto "canvas")
|
||||||
|
* [Mappe relazionali](https://triliumnext.github.io/Docs/Wiki/relation-map) e [mappe di collegamenti](https://triliumnext.github.io/Docs/Wiki/link-map) per visualizzare gli appunti e le loro relazioni
|
||||||
|
* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - vedi [Esempi avanzati](https://triliumnext.github.io/Docs/Wiki/advanced-showcases)
|
||||||
|
* [API REST](https://triliumnext.github.io/Docs/Wiki/etapi) per l'automazione
|
||||||
|
* Si adatta bene sia in termini di usabilità che di prestazioni fino ad oltre 100 000 appunti
|
||||||
|
* Interfaccia utente ottimizzata per il [mobile](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) (smartphone e tablet)
|
||||||
|
* [Tema Notturno](https://triliumnext.github.io/Docs/Wiki/themes)
|
||||||
|
* Supporto per importazione ed esportazione da e per [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) e [Markdown import](https://triliumnext.github.io/Docs/Wiki/markdown)
|
||||||
|
* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) per il salvataggio facile di contenuti web
|
||||||
|
|
||||||
|
✨ Dai un'occhiata alle seguenti risorse di terze parti per scoprire altre bellezze legate a TriliumNext:
|
||||||
|
|
||||||
|
-[awesome-trilium](https://github.com/Nriver/awesome-trilium) per temi, script, plugin e altro di terze parti.
|
||||||
|
- [TriliumRocks!](https://trilium.rocks/) per tutorial, guide e molto altro.
|
||||||
|
## 🏗 Rilasci
|
||||||
|
|
||||||
|
|
||||||
|
Trilium è fornito come applicazione desktop (Linux e Windows) o come applicazione web ospitata sul tuo server (Linux). La versione desktop per Mac OS è disponibile, ma [non è supportata](https://triliumnext.github.io/Docs/Wiki/faq#mac-os-support).
|
||||||
|
|
||||||
|
* Se vuoi usare Trilium sul tuo desktop, scarica il rilascio binario per la tua piattaforma dall'[ultimo rilascio](https://github.com/TriliumNext/Notes/releases/latest), decomprimi l'archivio e avvia l'eseguibile ```trilium```.
|
||||||
|
* Se vuoi installare Trilium su un server, segui [questa pagina](https://triliumnext.github.io/Docs/Wiki/server-installation).
|
||||||
|
* Per ora solo Chrome e Firefox sono i browser supportati (testati).
|
||||||
|
|
||||||
|
TriliumNext sarà fornito anche come Flatpak:
|
||||||
|
|
||||||
|
<img width="240" src="https://flathub.org/assets/badges/flathub-badge-en.png">
|
||||||
|
|
||||||
|
## 📝 Documentazione
|
||||||
|
|
||||||
|
[Vedi la wiki per una lista completa delle pagine di documentazione.](https://triliumnext.github.io/Docs/)
|
||||||
|
|
||||||
|
Puoi anche leggere ["Patterns of personal knowledge base"](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) per avere un'ispirazione su come potresti utilizzare Trilium.
|
||||||
|
|
||||||
|
## 💻 Contribuire
|
||||||
|
|
||||||
|
Clona localmente ed esegui
|
||||||
|
|
||||||
|
```shell
|
||||||
|
npm install
|
||||||
|
npm run start-server
|
||||||
|
```
|
||||||
|
|
||||||
|
## 👏 Riconoscimenti
|
||||||
|
|
||||||
|
* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - miglior editor visuale (WYSIWYG) sul mercato, squadra di sviluppo attenta e reattiva
|
||||||
|
* [FancyTree](https://github.com/mar10/fancytree) - libreria per alberi molto ricca di funzionalità, senza pari. Trilium Notes non sarebbe lo stesso senza di essa.
|
||||||
|
* [CodeMirror](https://github.com/codemirror/CodeMirror) - editor di codice con supporto per un'enorme quantità di linguaggi.
|
||||||
|
* [jsPlumb](https://github.com/jsplumb/jsplumb) - libreria per la connettività visuale senza pari. Utilizzata per [mappe relazionali](https://triliumnext.github.io/Docs/Wiki/relation-map) e [mappe di collegamenti](https://triliumnext.github.io/Docs/Wiki/link-map).
|
||||||
|
|
||||||
|
## 🤝 Supporto
|
||||||
|
|
||||||
|
Puoi sostenere lo sviluppatore originale di Trilium utilizzando gli sponsor di GitHub, [PayPal](https://paypal.me/za4am) o Bitcoin (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2).
|
||||||
|
Il supporto all'organizzazione TriliumNext sarà possibile nel prossimo futuro.
|
||||||
|
|
||||||
|
## 🔑 Licenza
|
||||||
|
|
||||||
|
Questo programma è software libero: è possibile redistribuirlo e/o modificarlo nei termini della GNU Affero General Public License come pubblicata dalla Free Software Foundation, sia la versione 3 della Licenza, o (a propria scelta) qualsiasi versione successiva.
|
||||||
66
README.ja.md
66
README.ja.md
@@ -1,48 +1,41 @@
|
|||||||
# Trilium Notes
|
# TriliumNext Notes
|
||||||
|
|
||||||
[English](https://github.com/zadam/trilium/blob/master/README.md) | [Chinese](https://github.com/zadam/trilium/blob/master/README-ZH_CN.md) | [Russian](https://github.com/zadam/trilium/blob/master/README.ru.md) | [Japanese](https://github.com/zadam/trilium/blob/master/README.ja.md)
|
[English](https://github.com/TriliumNext/Notes/blob/master/README.md) | [Chinese](https://github.com/TriliumNext/Notes/blob/master/README-ZH_CN.md) | [Russian](https://github.com/TriliumNext/Notes/blob/master/README.ru.md) | [Japanese](https://github.com/TriliumNext/Notes/blob/master/README.ja.md) | [Italian](https://github.com/TriliumNext/Notes/blob/master/README.it.md) | [Spanish](https://github.com/TriliumNext/Notes/blob/master/README.es.md)
|
||||||
|
|
||||||
Trilium Notes は、大規模な個人知識ベースの構築に焦点を当てた、階層型ノートアプリケーションです。概要は[スクリーンショット](https://github.com/zadam/trilium/wiki/Screenshot-tour)をご覧ください:
|
Trilium Notes は、大規模な個人知識ベースの構築に焦点を当てた、階層型ノートアプリケーションです。概要は[スクリーンショット](https://triliumnext.github.io/Docs/Wiki/screenshot-tour)をご覧ください:
|
||||||
|
|
||||||
<a href="https://github.com/zadam/trilium/wiki/Screenshot-tour"><img src="https://raw.githubusercontent.com/wiki/zadam/trilium/images/screenshot.png" alt="Trilium Screenshot" width="1000"></a>
|
<a href="https://triliumnext.github.io/Docs/Wiki/screenshot-tour"><img src="https://raw.githubusercontent.com/wiki/zadam/trilium/images/screenshot.png" alt="Trilium Screenshot" width="1000"></a>
|
||||||
|
|
||||||
ウクライナは現在、ロシアの侵略から自国を守っています。[ウクライナ軍や人道的な慈善団体への寄付](https://standforukraine.com/)をご検討ください。
|
|
||||||
|
|
||||||
<p float="left">
|
|
||||||
<img src="https://upload.wikimedia.org/wikipedia/commons/4/49/Flag_of_Ukraine.svg" alt="drawing" width="400"/>
|
|
||||||
<img src="https://signmyrocket.com//uploads/2b2a523cd0c0e76cdbba95a89a9636b2_1676971281.jpg" alt="Trilium Notes supports Ukraine!" width="570"/>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
## 🎁 特徴
|
## 🎁 特徴
|
||||||
|
|
||||||
* ノートは、任意の深さのツリーに配置できます。単一のノートをツリー内の複数の場所に配置できます ([cloning](https://github.com/zadam/trilium/wiki/Cloning-notes) を参照)
|
* ノートは、任意の深さのツリーに配置できます。単一のノートをツリー内の複数の場所に配置できます ([cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes) を参照)
|
||||||
* マークダウン[オートフォーマット](https://github.com/zadam/trilium/wiki/Text-notes#autoformat)による、表、画像、[数学](https://github.com/zadam/trilium/wiki/Text-notes#math-support)などの豊富な WYSIWYG ノート編集機能
|
* マークダウン[オートフォーマット](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat)による、表、画像、[数学](https://triliumnext.github.io/Docs/Wiki/text-notes#math-support)などの豊富な WYSIWYG ノート編集機能
|
||||||
* シンタックスハイライトを含む[ソースコード付きノート](https://github.com/zadam/trilium/wiki/Code-notes)の編集をサポート
|
* シンタックスハイライトを含む[ソースコード付きノート](https://triliumnext.github.io/Docs/Wiki/code-notes)の編集をサポート
|
||||||
* [ノート間のナビゲーション](https://github.com/zadam/trilium/wiki/Note-navigation)、全文検索、[ノートホイスト](https://github.com/zadam/trilium/wiki/Note-hoisting)が高速かつ簡単に行えます
|
* [ノート間のナビゲーション](https://triliumnext.github.io/Docs/Wiki/note-navigation)、全文検索、[ノートホイスト](https://triliumnext.github.io/Docs/Wiki/note-hoisting)が高速かつ簡単に行えます
|
||||||
* シームレスな[ノートのバージョン管理](https://github.com/zadam/trilium/wiki/Note-revisions)
|
* シームレスな[ノートのバージョン管理](https://triliumnext.github.io/Docs/Wiki/note-revisions)
|
||||||
* ノート[属性](https://github.com/zadam/trilium/wiki/Attributes)は、ノート整理、クエリ、高度な[スクリプト](https://github.com/zadam/trilium/wiki/Scripts)に使用できます
|
* ノート[属性](https://triliumnext.github.io/Docs/Wiki/Attributes)は、ノート整理、クエリ、高度な[スクリプト](https://triliumnext.github.io/Docs/Wiki/scripts)に使用できます
|
||||||
* 自己ホスト型同期サーバーとの[同期](https://github.com/zadam/trilium/wiki/Synchronization)
|
* 自己ホスト型同期サーバーとの[同期](https://triliumnext.github.io/Docs/Wiki/synchronization)
|
||||||
* [同期サーバーをホストするサードパーティ・サービス](https://trilium.cc/paid-hosting)があります
|
* [同期サーバーをホストするサードパーティ・サービス](https://trilium.cc/paid-hosting)があります
|
||||||
* 公開インターネットへのノートの[共有](https://github.com/zadam/trilium/wiki/Sharing)(公開)
|
* 公開インターネットへのノートの[共有](https://triliumnext.github.io/Docs/Wiki/sharing)(公開)
|
||||||
* ノートごとの粒度を持つ強力な[ノート暗号化](https://github.com/zadam/trilium/wiki/Protected-notes)
|
* ノートごとの粒度を持つ強力な[ノート暗号化](https://triliumnext.github.io/Docs/Wiki/protected-notes)
|
||||||
* 組み込みの Excalidraw を使用した図のスケッチ (ノート タイプ"キャンバス")
|
* 組み込みの Excalidraw を使用した図のスケッチ (ノート タイプ"キャンバス")
|
||||||
* ノートとその関係を可視化するための[関係図](https://github.com/zadam/trilium/wiki/Relation-map)と[リンクマップ](https://github.com/zadam/trilium/wiki/Link-map)
|
* ノートとその関係を可視化するための[関係図](https://triliumnext.github.io/Docs/Wiki/relation-map)と[リンクマップ](https://triliumnext.github.io/Docs/Wiki/link-map)
|
||||||
* [スクリプティング](https://github.com/zadam/trilium/wiki/Scripts) - [高度なショーケース](https://github.com/zadam/trilium/wiki/Advanced-showcases)を参照
|
* [スクリプティング](https://triliumnext.github.io/Docs/Wiki/scripts) - [高度なショーケース](https://triliumnext.github.io/Docs/Wiki/advanced-showcases)を参照
|
||||||
* 自動化のための [REST API](https://github.com/zadam/trilium/wiki/ETAPI)
|
* 自動化のための [REST API](https://triliumnext.github.io/Docs/Wiki/etapi)
|
||||||
* ユーザビリティとパフォーマンスの両方で 100 000 ノート以上に拡張可能
|
* ユーザビリティとパフォーマンスの両方で 100 000 ノート以上に拡張可能
|
||||||
* スマートフォンとタブレット向けのタッチ最適化[モバイルフロントエンド](https://github.com/zadam/trilium/wiki/Mobile-frontend)
|
* スマートフォンとタブレット向けのタッチ最適化[モバイルフロントエンド](https://triliumnext.github.io/Docs/Wiki/mobile-frontend)
|
||||||
* [ナイトテーマ](https://github.com/zadam/trilium/wiki/Themes)
|
* [ナイトテーマ](https://triliumnext.github.io/Docs/Wiki/themes)
|
||||||
* [Evernote](https://github.com/zadam/trilium/wiki/Evernote-import) と [Markdown のインポートとエクスポート](https://github.com/zadam/trilium/wiki/Markdown)
|
* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) と [Markdown のインポートとエクスポート](https://triliumnext.github.io/Docs/Wiki/Markdown)
|
||||||
* Web コンテンツを簡単に保存するための [Web クリッパー](https://github.com/zadam/trilium/wiki/Web-clipper)
|
* Web コンテンツを簡単に保存するための [Web クリッパー](https://triliumnext.github.io/Docs/Wiki/web-clipper)
|
||||||
|
|
||||||
サードパーティのテーマ、スクリプト、プラグインなどは、 [awesome-trilium](https://github.com/Nriver/awesome-trilium) をチェックしてください。
|
サードパーティのテーマ、スクリプト、プラグインなどは、 [awesome-trilium](https://github.com/Nriver/awesome-trilium) をチェックしてください。
|
||||||
|
|
||||||
## 🏗 ビルド
|
## 🏗 ビルド
|
||||||
|
|
||||||
Trilium は、デスクトップアプリケーション(Linux、Windows)またはサーバー上でホストされるウェブアプリケーション(Linux)として提供されます。 Mac OS のデスクトップビルドも利用可能ですが、 [unsupported](https://github.com/zadam/trilium/wiki/FAQ#mac-os-support) となっています。
|
Trilium は、デスクトップアプリケーション(Linux、Windows)またはサーバー上でホストされるウェブアプリケーション(Linux)として提供されます。 Mac OS のデスクトップビルドも利用可能ですが、 [unsupported](https://triliumnext.github.io/Docs/Wiki/faq#mac-os-support) となっています。
|
||||||
|
|
||||||
* デスクトップで Trilium を使用したい場合は、 [latest release](https://github.com/zadam/trilium/releases/latest) からお使いのプラットフォームのバイナリリリースをダウンロードし、パッケージを解凍して ``trilium`` の実行ファイルを実行してください。
|
* デスクトップで Trilium を使用したい場合は、 [latest release](https://github.com/TriliumNext/Notes/releases/latest) からお使いのプラットフォームのバイナリリリースをダウンロードし、パッケージを解凍して ``trilium`` の実行ファイルを実行してください。
|
||||||
* サーバーに Trilium をインストールする場合は、[このページ](https://github.com/zadam/trilium/wiki/Server-installation)に従ってください。
|
* サーバーに Trilium をインストールする場合は、[このページ](https://triliumnext.github.io/Docs/Wiki/server-installation)に従ってください。
|
||||||
* 現在、対応(動作確認)しているブラウザは、最近の Chrome と Firefox のみです。
|
* 現在、対応(動作確認)しているブラウザは、最近の Chrome と Firefox のみです。
|
||||||
|
|
||||||
Trilium は Flatpak としても提供されます:
|
Trilium は Flatpak としても提供されます:
|
||||||
@@ -51,18 +44,15 @@ Trilium は Flatpak としても提供されます:
|
|||||||
|
|
||||||
## 📝 ドキュメント
|
## 📝 ドキュメント
|
||||||
|
|
||||||
[ドキュメントページの全リストはwikiをご覧ください。](https://github.com/zadam/trilium/wiki/)
|
[ドキュメントページの全リストはwikiをご覧ください。](https://triliumnext.github.io/Docs/)
|
||||||
|
|
||||||
また、[個人的な知識基盤のパターン](https://github.com/zadam/trilium/wiki/Patterns-of-personal-knowledge-base)を読むと、 Trilium の使い方のヒントを得ることができます。
|
また、[個人的な知識基盤のパターン](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge)を読むと、 Trilium の使い方のヒントを得ることができます。
|
||||||
|
|
||||||
## 💻 コントリビュート
|
## 💻 コントリビュート
|
||||||
|
|
||||||
ブラウザベースの開発環境を使用
|
|
||||||
|
|
||||||
[](https://gitpod.io/#https://github.com/zadam/trilium)
|
|
||||||
|
|
||||||
または、ローカルにクローンして実行
|
または、ローカルにクローンして実行
|
||||||
```
|
|
||||||
|
```shell
|
||||||
npm install
|
npm install
|
||||||
npm run start-server
|
npm run start-server
|
||||||
```
|
```
|
||||||
@@ -72,7 +62,7 @@ npm run start-server
|
|||||||
* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - 市場で最高の WYSIWYG エディター、非常にインタラクティブで聞き上手なチーム
|
* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - 市場で最高の WYSIWYG エディター、非常にインタラクティブで聞き上手なチーム
|
||||||
* [FancyTree](https://github.com/mar10/fancytree) - 真の競争相手がいない、非常に機能豊富なツリーライブラリです。 Trilium Notes は、これなしでは成り立たないでしょう。
|
* [FancyTree](https://github.com/mar10/fancytree) - 真の競争相手がいない、非常に機能豊富なツリーライブラリです。 Trilium Notes は、これなしでは成り立たないでしょう。
|
||||||
* [CodeMirror](https://github.com/codemirror/CodeMirror) - 膨大な数の言語をサポートするコードエディタ
|
* [CodeMirror](https://github.com/codemirror/CodeMirror) - 膨大な数の言語をサポートするコードエディタ
|
||||||
* [jsPlumb](https://github.com/jsplumb/jsplumb) - 競合のないビジュアルコネクティビティライブラリです。[関係図](https://github.com/zadam/trilium/wiki/Relation-map)、[リンク図](https://github.com/zadam/trilium/wiki/Link-map)で使用。
|
* [jsPlumb](https://github.com/jsplumb/jsplumb) - 競合のないビジュアルコネクティビティライブラリです。[関係図](https://triliumnext.github.io/Docs/Wiki/relation-map)、[リンク図](https://triliumnext.github.io/Docs/Wiki/link-map)で使用。
|
||||||
|
|
||||||
## 🤝 サポート
|
## 🤝 サポート
|
||||||
|
|
||||||
|
|||||||
111
README.md
111
README.md
@@ -1,82 +1,105 @@
|
|||||||
# Trilium Notes
|
# TriliumNext Notes
|
||||||
|
|
||||||
[](https://gitter.im/trilium-notes/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [English](https://github.com/zadam/trilium/blob/master/README.md) | [Chinese](https://github.com/zadam/trilium/blob/master/README-ZH_CN.md) | [Russian](https://github.com/zadam/trilium/blob/master/README.ru.md) | [Japanese](https://github.com/zadam/trilium/blob/master/README.ja.md)
|
[English](https://github.com/TriliumNext/Notes/blob/master/README.md) | [Chinese](https://github.com/TriliumNext/Notes/blob/master/README-ZH_CN.md) | [Russian](https://github.com/TriliumNext/Notes/blob/master/README.ru.md) | [Japanese](https://github.com/TriliumNext/Notes/blob/master/README.ja.md) | [Italian](https://github.com/TriliumNext/Notes/blob/master/README.it.md) | [Spanish](https://github.com/TriliumNext/Notes/blob/master/README.es.md)
|
||||||
|
|
||||||
Trilium Notes is a hierarchical note taking application with focus on building large personal knowledge bases. See [screenshots](https://github.com/zadam/trilium/wiki/Screenshot-tour) for quick overview:
|
TriliumNext Notes is an open-source, cross-platform hierarchical note taking application with focus on building large personal knowledge bases.
|
||||||
|
|
||||||
<a href="https://github.com/zadam/trilium/wiki/Screenshot-tour"><img src="https://raw.githubusercontent.com/wiki/zadam/trilium/images/screenshot.png" alt="Trilium Screenshot" width="1000"></a>
|
See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for quick overview:
|
||||||
|
|
||||||
Ukraine is currently defending itself from Russian aggression, please consider [donating to Ukrainian Army or humanitarian charities](https://standforukraine.com/).
|
<a href="https://triliumnext.github.io/Docs/Wiki/screenshot-tour"><img src="https://github.com/TriliumNext/Docs/blob/main/Wiki/images/screenshot.png?raw=true" alt="Trilium Screenshot" width="1000"></a>
|
||||||
|
|
||||||
<p float="left">
|
## ⚠️ Why TriliumNext?
|
||||||
<img src="https://upload.wikimedia.org/wikipedia/commons/4/49/Flag_of_Ukraine.svg" alt="drawing" width="400"/>
|
|
||||||
<img src="https://signmyrocket.com//uploads/2b2a523cd0c0e76cdbba95a89a9636b2_1676971281.jpg" alt="Trilium Notes supports Ukraine!" width="570"/>
|
[The original Trilium project is in maintenance mode](https://github.com/zadam/trilium/issues/4620)
|
||||||
</p>
|
|
||||||
|
### Migrating from Trilium?
|
||||||
|
|
||||||
|
There are no special migration steps to migrate from a zadam/Trilium instance to a TriliumNext/Notes instance. Just upgrade your Trilium instance to the latest version and [install TriliumNext/Notes as usual](#-installation)
|
||||||
|
|
||||||
|
## 💬 Discuss with us
|
||||||
|
|
||||||
|
Feel free to join our official conversations. We would love to hear what features, suggestions, or issues you may have!
|
||||||
|
|
||||||
|
- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous discussions)
|
||||||
|
- The `General` Matrix room is also bridged to [XMPP](xmpp:discuss@trilium.thisgreat.party?join)
|
||||||
|
- [Github Discussions](https://github.com/TriliumNext/Notes/discussions) (For Asynchronous discussions)
|
||||||
|
- [Wiki](https://triliumnext.github.io/Docs/) (For common how-to questions and user guides)
|
||||||
|
|
||||||
## 🎁 Features
|
## 🎁 Features
|
||||||
|
|
||||||
* Notes can be arranged into arbitrarily deep tree. Single note can be placed into multiple places in the tree (see [cloning](https://github.com/zadam/trilium/wiki/Cloning-notes))
|
* Notes can be arranged into arbitrarily deep tree. Single note can be placed into multiple places in the tree (see [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes))
|
||||||
* Rich WYSIWYG note editing including e.g. tables, images and [math](https://github.com/zadam/trilium/wiki/Text-notes#math-support) with markdown [autoformat](https://github.com/zadam/trilium/wiki/Text-notes#autoformat)
|
* Rich WYSIWYG note editing including e.g. tables, images and [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat)
|
||||||
* Support for editing [notes with source code](https://github.com/zadam/trilium/wiki/Code-notes), including syntax highlighting
|
* 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://github.com/zadam/trilium/wiki/Note-navigation), full text search and [note hoisting](https://github.com/zadam/trilium/wiki/Note-hoisting)
|
* 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://github.com/zadam/trilium/wiki/Note-revisions)
|
* Seamless [note versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions)
|
||||||
* Note [attributes](https://github.com/zadam/trilium/wiki/Attributes) can be used for note organization, querying and advanced [scripting](https://github.com/zadam/trilium/wiki/Scripts)
|
* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be used for note organization, querying and advanced [scripting](https://triliumnext.github.io/Docs/Wiki/scripts)
|
||||||
* [Synchronization](https://github.com/zadam/trilium/wiki/Synchronization) with self-hosted sync server
|
* [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)
|
* there's a [3rd party service for hosting synchronisation server](https://trilium.cc/paid-hosting)
|
||||||
* [Sharing](https://github.com/zadam/trilium/wiki/Sharing) (publishing) notes to public internet
|
* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes to public internet
|
||||||
* Strong [note encryption](https://github.com/zadam/trilium/wiki/Protected-notes) with per-note granularity
|
* Strong [note encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with per-note granularity
|
||||||
* Sketching diagrams with built-in Excalidraw (note type "canvas")
|
* Sketching diagrams with built-in Excalidraw (note type "canvas")
|
||||||
* [Relation maps](https://github.com/zadam/trilium/wiki/Relation-map) and [link maps](https://github.com/zadam/trilium/wiki/Link-map) for visualizing notes and their relations
|
* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing notes and their relations
|
||||||
* [Scripting](https://github.com/zadam/trilium/wiki/Scripts) - see [Advanced showcases](https://github.com/zadam/trilium/wiki/Advanced-showcases)
|
* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases)
|
||||||
* [REST API](https://github.com/zadam/trilium/wiki/ETAPI) for automation
|
* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation
|
||||||
* Scales well in both usability and performance upwards of 100 000 notes
|
* Scales well in both usability and performance upwards of 100 000 notes
|
||||||
* Touch optimized [mobile frontend](https://github.com/zadam/trilium/wiki/Mobile-frontend) for smartphones and tablets
|
* Touch optimized [mobile frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for smartphones and tablets
|
||||||
* [Night theme](https://github.com/zadam/trilium/wiki/Themes)
|
* [Night theme](https://triliumnext.github.io/Docs/Wiki/themes)
|
||||||
* [Evernote](https://github.com/zadam/trilium/wiki/Evernote-import) and [Markdown import & export](https://github.com/zadam/trilium/wiki/Markdown)
|
* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown)
|
||||||
* [Web Clipper](https://github.com/zadam/trilium/wiki/Web-clipper) for easy saving of web content
|
* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy saving of web content
|
||||||
|
|
||||||
Check out [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party themes, scripts, plugins and more.
|
✨ Check out the following third-party resources/communities for more TriliumNext related goodies:
|
||||||
|
|
||||||
## 🏗 Builds
|
- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party themes, scripts, plugins and more.
|
||||||
|
- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more.
|
||||||
|
|
||||||
Trilium is provided as either desktop application (Linux and Windows) or web application hosted on your server (Linux). Mac OS desktop build is available, but it is [unsupported](https://github.com/zadam/trilium/wiki/FAQ#mac-os-support).
|
## 🏗 Installation
|
||||||
|
|
||||||
* If you want to use Trilium on the desktop, download binary release for your platform from [latest release](https://github.com/zadam/trilium/releases/latest), unzip the package and run ```trilium``` executable.
|
### Desktop
|
||||||
* If you want to install Trilium on server, follow [this page](https://github.com/zadam/trilium/wiki/Server-installation).
|
|
||||||
* Currently only recent Chrome and Firefox are supported (tested) browsers.
|
|
||||||
|
|
||||||
Trilium is also provided as a Flatpak:
|
To use TriliumNext on your desktop machine (Linux, MacOS, and Windows) you have a few options:
|
||||||
|
|
||||||
[<img width="240" src="https://flathub.org/assets/badges/flathub-badge-en.png">](https://flathub.org/apps/details/com.github.zadam.trilium)
|
* Download the binary release for your platform from the [latest release page](https://github.com/TriliumNext/Notes/releases/latest), unzip the package and run the ```trilium``` executable.
|
||||||
|
* Access TriliumNext via the web interface of a server installation (see below)
|
||||||
|
* Currently only the latest versions of Chrome & Firefox are supported (and tested).
|
||||||
|
* (Coming Soon) TriliumNext will also be provided as a Flatpak
|
||||||
|
|
||||||
|
### Mobile
|
||||||
|
|
||||||
|
To use TriliumNext on a mobile device:
|
||||||
|
|
||||||
|
* Use a mobile web browser to access the mobile interface of a server installation (see below)
|
||||||
|
* Use of a mobile app is not yet supported ([see here](https://github.com/TriliumNext/Notes/issues/72)) to track mobile improvements.
|
||||||
|
|
||||||
|
### Server
|
||||||
|
|
||||||
|
To install TriliumNext on your own server (including via Docker from [Dockerhub](https://hub.docker.com/r/triliumnext/notes)) follow [the server installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation).
|
||||||
|
|
||||||
## 📝 Documentation
|
## 📝 Documentation
|
||||||
|
|
||||||
[See wiki for complete list of documentation pages.](https://github.com/zadam/trilium/wiki/)
|
[See wiki for complete list of documentation pages.](https://triliumnext.github.io/Docs)
|
||||||
|
|
||||||
You can also read [Patterns of personal knowledge base](https://github.com/zadam/trilium/wiki/Patterns-of-personal-knowledge-base) to get some inspiration on how you might use Trilium.
|
You can also read [Patterns of personal knowledge base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) to get some inspiration on how you might use TriliumNext.
|
||||||
|
|
||||||
## 💻 Contribute
|
## 💻 Contribute
|
||||||
|
|
||||||
Use a browser based dev environment
|
Clone locally and run
|
||||||
|
|
||||||
[](https://gitpod.io/#https://github.com/zadam/trilium)
|
```shell
|
||||||
|
|
||||||
Or clone locally and run
|
|
||||||
```
|
|
||||||
npm install
|
npm install
|
||||||
npm run start-server
|
npm run start-server
|
||||||
```
|
```
|
||||||
|
|
||||||
## 📢 Shoutouts
|
## 👏 Shoutouts
|
||||||
|
|
||||||
* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - best WYSIWYG editor on the market, very interactive and listening team
|
* [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.
|
* [FancyTree](https://github.com/mar10/fancytree) - very feature rich tree library without real competition. TriliumNext Notes would not be the same without it.
|
||||||
* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with support for huge amount of languages
|
* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with support for huge amount of languages
|
||||||
* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library without competition. Used in [relation maps](https://github.com/zadam/trilium/wiki/Relation-map) and [link maps](https://github.com/zadam/trilium/wiki/Link-map)
|
* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library without competition. Used in [relation maps](https://triliumnext.github.io/Docs/Wiki/Relation-map) and [link maps](https://triliumnext.github.io/Docs/Wiki/Link-map)
|
||||||
|
|
||||||
## 🤝 Support
|
## 🤝 Support
|
||||||
|
|
||||||
You can support Trilium using GitHub Sponsors, [PayPal](https://paypal.me/za4am) or Bitcoin (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2).
|
You can support the original Trilium developer using GitHub Sponsors, [PayPal](https://paypal.me/za4am) or Bitcoin (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2).
|
||||||
|
Support for the TriliumNext organization will be possible in the near future.
|
||||||
|
|
||||||
## 🔑 License
|
## 🔑 License
|
||||||
|
|
||||||
|
|||||||
73
README.ru.md
73
README.ru.md
@@ -1,68 +1,59 @@
|
|||||||
# Trilium Notes
|
# TriliumNext Notes
|
||||||
|
|
||||||
[English](https://github.com/zadam/trilium/blob/master/README.md) | [Chinese](https://github.com/zadam/trilium/blob/master/README-ZH_CN.md) | [Russian](https://github.com/zadam/trilium/blob/master/README.ru.md) | [Japanese](https://github.com/zadam/trilium/blob/master/README.ja.md)
|
[English](https://github.com/TriliumNext/Notes/blob/master/README.md) | [Chinese](https://github.com/TriliumNext/Notes/blob/master/README-ZH_CN.md) | [Russian](https://github.com/TriliumNext/Notes/blob/master/README.ru.md) | [Japanese](https://github.com/TriliumNext/Notes/blob/master/README.ja.md) | [Italian](https://github.com/TriliumNext/Notes/blob/master/README.it.md) | [Spanish](https://github.com/TriliumNext/Notes/blob/master/README.es.md)
|
||||||
|
|
||||||
[](https://gitter.im/trilium-notes/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
Trilium Notes – это приложение для заметок с иерархической структурой, ориентированное на создание больших персональных баз знаний. Для быстрого ознакомления посмотрите [скриншот-тур](https://triliumnext.github.io/Docs/Wiki/screenshot-tour):
|
||||||
Trilium Notes – это приложение для заметок с иерархической структурой, ориентированное на создание больших персональных баз знаний. Для быстрого ознакомления посмотрите [скриншот-тур](https://github.com/zadam/trilium/wiki/Screenshot-tour):
|
|
||||||
|
|
||||||

|
<a href="https://triliumnext.github.io/Docs/Wiki/screenshot-tour"><img src="https://github.com/TriliumNext/Docs/blob/main/Wiki/images/screenshot.png?raw=true" alt="Trilium Screenshot" width="1000"></a>
|
||||||
|
|
||||||
Ukraine is currently suffering from Russian aggression, please consider donating to [one of these charities](https://old.reddit.com/r/ukraine/comments/s6g5un/want_to_support_ukraine_heres_a_list_of_charities/).
|
## 🎁 Возможности
|
||||||
|
|
||||||
<img src="https://upload.wikimedia.org/wikipedia/commons/4/49/Flag_of_Ukraine.svg" alt="drawing" width="600"/>
|
* Заметки можно расположить в виде дерева произвольной глубины. Отдельную заметку можно разместить в нескольких местах дерева (см. [клонирование](https://triliumnext.github.io/Docs/Wiki/cloning-notes))
|
||||||
<img src="https://signmyrocket.com//uploads/2b2a523cd0c0e76cdbba95a89a9636b2_1676971281.jpg" alt="Trilium Notes supports Ukraine!" width="600"/>
|
* Продвинутый визуальный редактор (WYSIWYG) позволяет работать с таблицами, изображениями, [формулами](https://triliumnext.github.io/Docs/Wiki/text-notes#math-support) и разметкой markdown, имеет [автоформатирование](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat)
|
||||||
|
* Редактирование [заметок с исходным кодом](https://triliumnext.github.io/Docs/Wiki/code-notes), включая подсветку синтаксиса
|
||||||
## Возможности
|
* Быстрая и простая [навигация между заметками](https://triliumnext.github.io/Docs/Wiki/note-navigation), полнотекстовый поиск и [выделение заметок](https://triliumnext.github.io/Docs/Wiki/note-hoisting) в отдельный блок
|
||||||
|
* Бесшовное [версионирование заметки](https://triliumnext.github.io/Docs/Wiki/note-revisions)
|
||||||
* Заметки можно расположить в виде дерева произвольной глубины. Отдельную заметку можно разместить в нескольких местах дерева (см. [клонирование](https://github.com/zadam/trilium/wiki/Cloning-notes))
|
* Специальные [атрибуты](https://triliumnext.github.io/Docs/Wiki/attributes) позволяют гибко организовать структуру, используются для поиска и продвинутого [скриптинга](https://triliumnext.github.io/Docs/Wiki/scripts)
|
||||||
* Продвинутый визуальный редактор (WYSIWYG) позволяет работать с таблицами, изображениями, [формулами](https://github.com/zadam/trilium/wiki/Text-notes#math-support) и разметкой markdown, имеет [автоформатирование](https://github.com/zadam/trilium/wiki/Text-notes#autoformat)
|
* [Синхронизация](https://triliumnext.github.io/Docs/Wiki/synchronization) заметок со своим сервером
|
||||||
* Редактирование [заметок с исходным кодом](https://github.com/zadam/trilium/wiki/Code-notes), включая подсветку синтаксиса
|
* Надёжное [шифрование](https://triliumnext.github.io/Docs/Wiki/protected-notes) с детализацией по каждой заметке
|
||||||
* Быстрая и простая [навигация между заметками](https://github.com/zadam/trilium/wiki/Note-navigation), полнотекстовый поиск и [выделение заметок](https://github.com/zadam/trilium/wiki/Note-hoisting) в отдельный блок
|
* [Карты связей](https://triliumnext.github.io/Docs/Wiki/relation-map) и [карты ссылок](https://triliumnext.github.io/Docs/Wiki/link-map) для визуализации их взяимосвязей
|
||||||
* Бесшовное [версионирование заметки](https://github.com/zadam/trilium/wiki/Note-revisions)
|
* [Скрипты](https://triliumnext.github.io/Docs/Wiki/scripts) - см. [продвинутые примеры](https://triliumnext.github.io/Docs/Wiki/advanced-showcases)
|
||||||
* Специальные [атрибуты](https://github.com/zadam/trilium/wiki/Attributes) позволяют гибко организовать структуру, используются для поиска и продвинутого [скриптинга](https://github.com/zadam/trilium/wiki/Scripts)
|
|
||||||
* [Синхронизация](https://github.com/zadam/trilium/wiki/Synchronization) заметок со своим сервером
|
|
||||||
* Надёжное [шифрование](https://github.com/zadam/trilium/wiki/Protected-notes) с детализацией по каждой заметке
|
|
||||||
* [Карты связей](https://github.com/zadam/trilium/wiki/Relation-map) и [карты ссылок](https://github.com/zadam/trilium/wiki/Link-map) для визуализации их взяимосвязей
|
|
||||||
* [Скрипты](https://github.com/zadam/trilium/wiki/Scripts) - см. [продвинутые примеры](https://github.com/zadam/trilium/wiki/Advanced-showcases)
|
|
||||||
* Хорошо масштабируется, как по удобству использования, так и по производительности до 100000 заметок
|
* Хорошо масштабируется, как по удобству использования, так и по производительности до 100000 заметок
|
||||||
* Оптимизированный [мобильный фронтенд](https://github.com/zadam/trilium/wiki/Mobile-frontend) смартфонов и планшетов
|
* Оптимизированный [мобильный фронтенд](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) смартфонов и планшетов
|
||||||
* [Темная тема](https://github.com/zadam/trilium/wiki/Themes)
|
* [Темная тема](https://triliumnext.github.io/Docs/Wiki/themes)
|
||||||
* Импорт и экпорт [Evernote](https://github.com/zadam/trilium/wiki/Evernote-import) и данных в [markdown](https://github.com/zadam/trilium/wiki/Markdown) формате
|
* Импорт и экпорт [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) и данных в [markdown](https://triliumnext.github.io/Docs/Wiki/markdown) формате
|
||||||
* [Web Clipper](https://github.com/zadam/trilium/wiki/Web-clipper) для удобного сохранения веб-контента
|
* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) для удобного сохранения веб-контента
|
||||||
|
|
||||||
## Сборки
|
## 🏗 Сборки
|
||||||
|
|
||||||
Trilium предоставляется в виде десктопного приложения (Linux и Windows) или веб-приложения, размещенного на вашем сервере (Linux). Доступна сборка Mac OS, но она [не поддерживается](https://github.com/zadam/trilium/wiki/FAQ#mac-os-support).
|
Trilium предоставляется в виде десктопного приложения (Linux и Windows) или веб-приложения, размещенного на вашем сервере (Linux). Доступна сборка Mac OS, но она [не поддерживается](https://triliumnext.github.io/Docs/Wiki/faq#mac-os-support).
|
||||||
|
|
||||||
* Если вы хотите использовать Trilium на десктопе, скачайте архив для своей платформы со страницы [релизов](https://github.com/zadam/trilium/releases/latest), распакуйте и запустите исполняемый файл ```trilium```.
|
* Если вы хотите использовать Trilium на десктопе, скачайте архив для своей платформы со страницы [релизов](https://github.com/TriliumNext/Notes/releases/latest), распакуйте и запустите исполняемый файл ```trilium```.
|
||||||
* Если вы хотите установить Trilium на сервере, следуйте этой [инструкции](https://github.com/zadam/trilium/wiki/Server-installation).
|
* Если вы хотите установить Trilium на сервере, следуйте этой [инструкции](https://triliumnext.github.io/Docs/Wiki/server-installation).
|
||||||
* В данный момент поддерживаются (протестированы) последние версии браузеров Chrome и Firefox.
|
* В данный момент поддерживаются (протестированы) последние версии браузеров Chrome и Firefox.
|
||||||
|
|
||||||
## Документация
|
## 📝 Документация
|
||||||
|
|
||||||
[Полный список страниц документации доступен в Wiki.](https://github.com/zadam/trilium/wiki/)
|
[Полный список страниц документации доступен в Wiki.](https://triliumnext.github.io/Docs/)
|
||||||
|
|
||||||
Вы также можете ознакомиться с [шаблонами персональных баз знаний](https://github.com/zadam/trilium/wiki/Patterns-of-personal-knowledge-base), чтобы получить представление о том, как можно использовать Trilium.
|
Вы также можете ознакомиться с [шаблонами персональных баз знаний](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge), чтобы получить представление о том, как можно использовать Trilium.
|
||||||
|
|
||||||
## Участвуйте в разработке
|
## 💻 Участвуйте в разработке
|
||||||
|
|
||||||
Используйте онлайн среду разработки в браузере
|
|
||||||
|
|
||||||
[](https://gitpod.io/#https://github.com/zadam/trilium)
|
|
||||||
|
|
||||||
Или склонируйте на своё устройство и запустите
|
Или склонируйте на своё устройство и запустите
|
||||||
```
|
|
||||||
|
```shell
|
||||||
npm install
|
npm install
|
||||||
npm run start-server
|
npm run start-server
|
||||||
```
|
```
|
||||||
|
|
||||||
## Благодарности
|
## 👏 Благодарности
|
||||||
|
|
||||||
* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - лучший WYSIWYG редактор, очень активная и внимательная команда.
|
* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - лучший WYSIWYG редактор, очень активная и внимательная команда.
|
||||||
* [FancyTree](https://github.com/mar10/fancytree) - многофункциональная библиотека для создания древовидных структур. Вне конкуренции. Без него Trilium Notes не были бы таким.
|
* [FancyTree](https://github.com/mar10/fancytree) - многофункциональная библиотека для создания древовидных структур. Вне конкуренции. Без него Trilium Notes не были бы таким.
|
||||||
* [CodeMirror](https://github.com/codemirror/CodeMirror) - редактор кода с поддержкой огромного количество языков.
|
* [CodeMirror](https://github.com/codemirror/CodeMirror) - редактор кода с поддержкой огромного количество языков.
|
||||||
* [jsPlumb](https://github.com/jsplumb/jsplumb) - библиотека для визуализации связей. Вне конкуренции. Используется в [картах связей](https://github.com/zadam/trilium/wiki/Relation-map) и [картах ссылок](https://github.com/zadam/trilium/wiki/Link-map).
|
* [jsPlumb](https://github.com/jsplumb/jsplumb) - библиотека для визуализации связей. Вне конкуренции. Используется в [картах связей](https://triliumnext.github.io/Docs/Wiki/relation-map) и [картах ссылок](https://triliumnext.github.io/Docs/Wiki/link-map).
|
||||||
|
|
||||||
## Лицензия
|
## 🔑 Лицензия
|
||||||
|
|
||||||
Эта программа является бесплатным программным обеспечением: вы можете распространять и/или изменять ее в соответствии с условиями GNU Affero General Public License, опубликованной Free Software Foundation, либо версии 3 Лицензии, либо (по вашему выбору) любой более поздней версии.
|
Эта программа является бесплатным программным обеспечением: вы можете распространять и/или изменять ее в соответствии с условиями GNU Affero General Public License, опубликованной Free Software Foundation, либо версии 3 Лицензии, либо (по вашему выбору) любой более поздней версии.
|
||||||
|
|||||||
@@ -10,4 +10,4 @@ Description above is a general rule and may be altered on case by case basis.
|
|||||||
|
|
||||||
## Reporting a Vulnerability
|
## Reporting a Vulnerability
|
||||||
|
|
||||||
You can report low severity vulnerabilities as GitHub issues, more severe vulnerabilities should be reported to the email zadam.apps@gmail.com
|
You can report low severity vulnerabilities as GitHub issues, more severe vulnerabilities should be reported to the email [contact@eliandoran.me](mailto:contact@eliandoran.me)
|
||||||
|
|||||||
10
_check_ts_progress.sh
Executable file
10
_check_ts_progress.sh
Executable file
@@ -0,0 +1,10 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
cloc HEAD \
|
||||||
|
--git --md \
|
||||||
|
--include-lang=javascript,typescript \
|
||||||
|
--found=filelist.txt \
|
||||||
|
--exclude-dir=public,libraries,views,docs
|
||||||
|
|
||||||
|
grep -R \.js$ filelist.txt
|
||||||
|
rm filelist.txt
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,22 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
echo "Packaging debian x64 distribution..."
|
|
||||||
|
|
||||||
VERSION=`jq -r ".version" package.json`
|
|
||||||
|
|
||||||
./node_modules/.bin/electron-installer-debian --config bin/deb-options.json --options.version=${VERSION} --arch amd64
|
|
||||||
|
|
||||||
|
|
||||||
# hacky stop-gag measure to produce debian compatible XZ compressed debs until this is fixed: https://github.com/electron-userland/electron-installer-debian/issues/272
|
|
||||||
cd dist
|
|
||||||
ar x trilium_${VERSION}_amd64.deb
|
|
||||||
rm trilium_${VERSION}_amd64.deb
|
|
||||||
# recompress
|
|
||||||
< control.tar.zst zstd -d | xz > control.tar.xz
|
|
||||||
< data.tar.zst zstd -d | xz > data.tar.xz
|
|
||||||
# create deb archive (I really do not know, what argument "sdsd" is for but something is required for ar to create the archive as desired)
|
|
||||||
ar -m -c -a sdsd trilium_${VERSION}_amd64.deb debian-binary control.tar.xz data.tar.xz
|
|
||||||
|
|
||||||
rm control* data* debian-binary
|
|
||||||
|
|
||||||
echo "Converted to XZ deb"
|
|
||||||
@@ -1,12 +1,17 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e # Fail on any command error
|
||||||
|
|
||||||
VERSION=`jq -r ".version" package.json`
|
VERSION=`jq -r ".version" package.json`
|
||||||
SERIES=${VERSION:0:4}-latest
|
SERIES=${VERSION:0:4}-latest
|
||||||
|
|
||||||
cat package.json | grep -v electron > server-package.json
|
cat package.json | grep -v electron > server-package.json
|
||||||
|
|
||||||
sudo docker build -t zadam/trilium:$VERSION --network host -t zadam/trilium:$SERIES .
|
echo "Compiling typescript..."
|
||||||
|
npx tsc
|
||||||
|
|
||||||
|
sudo docker build -t triliumnext/notes:$VERSION --network host -t triliumnext/notes:$SERIES .
|
||||||
|
|
||||||
if [[ $VERSION != *"beta"* ]]; then
|
if [[ $VERSION != *"beta"* ]]; then
|
||||||
sudo docker tag zadam/trilium:$VERSION zadam/trilium:latest
|
sudo docker tag triliumnext/notes:$VERSION triliumnext/notes:latest
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,50 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
SRC_DIR=./dist/trilium-linux-x64-src
|
|
||||||
|
|
||||||
if [ "$1" != "DONTCOPY" ]
|
|
||||||
then
|
|
||||||
./bin/copy-trilium.sh $SRC_DIR
|
|
||||||
fi
|
|
||||||
|
|
||||||
rm -r $SRC_DIR/src/public/app-dist/*.mobile.*
|
|
||||||
|
|
||||||
echo "Copying required linux-x64 binaries"
|
|
||||||
|
|
||||||
cp -r bin/better-sqlite3/linux-desktop-better_sqlite3.node $SRC_DIR/node_modules/better-sqlite3/build/Release/better_sqlite3.node
|
|
||||||
|
|
||||||
echo "Packaging linux x64 electron build"
|
|
||||||
|
|
||||||
./node_modules/.bin/electron-packager $SRC_DIR --asar --out=dist --executable-name=trilium --platform=linux --arch=x64 --overwrite
|
|
||||||
|
|
||||||
BUILD_DIR=./dist/trilium-linux-x64
|
|
||||||
rm -rf $BUILD_DIR
|
|
||||||
|
|
||||||
mv "./dist/Trilium Notes-linux-x64" $BUILD_DIR
|
|
||||||
|
|
||||||
cp images/app-icons/png/128x128.png $BUILD_DIR/icon.png
|
|
||||||
|
|
||||||
cp bin/tpl/anonymize-database.sql $BUILD_DIR/
|
|
||||||
|
|
||||||
cp -r dump-db $BUILD_DIR/
|
|
||||||
rm -rf $BUILD_DIR/dump-db/node_modules
|
|
||||||
|
|
||||||
cp bin/tpl/trilium-portable.sh $BUILD_DIR/
|
|
||||||
chmod 755 $BUILD_DIR/trilium-portable.sh
|
|
||||||
|
|
||||||
cp bin/tpl/trilium-safe-mode.sh $BUILD_DIR/
|
|
||||||
chmod 755 $BUILD_DIR/trilium-safe-mode.sh
|
|
||||||
|
|
||||||
cp bin/tpl/trilium-no-cert-check.sh $BUILD_DIR/
|
|
||||||
chmod 755 $BUILD_DIR/trilium-no-cert-check.sh
|
|
||||||
|
|
||||||
echo "Packaging linux x64 electron distribution..."
|
|
||||||
VERSION=`jq -r ".version" package.json`
|
|
||||||
|
|
||||||
cd dist
|
|
||||||
|
|
||||||
tar cJf trilium-linux-x64-${VERSION}.tar.xz trilium-linux-x64
|
|
||||||
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
bin/build-debian.sh
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
SRC_DIR=./dist/trilium-mac-x64-src
|
|
||||||
|
|
||||||
if [ "$1" != "DONTCOPY" ]
|
|
||||||
then
|
|
||||||
./bin/copy-trilium.sh $SRC_DIR
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Copying required mac binaries"
|
|
||||||
|
|
||||||
cp -r bin/better-sqlite3/mac-better_sqlite3.node $SRC_DIR/node_modules/better-sqlite3/build/Release/better_sqlite3.node
|
|
||||||
|
|
||||||
rm -r $SRC_DIR/src/public/app-dist/*.mobile.*
|
|
||||||
|
|
||||||
echo "Packaging mac x64 electron build"
|
|
||||||
|
|
||||||
./node_modules/.bin/electron-packager $SRC_DIR --asar --out=dist --executable-name=trilium --platform=darwin --arch=x64 --overwrite --icon=images/app-icons/mac/icon.icns
|
|
||||||
|
|
||||||
BUILD_DIR=./dist/trilium-mac-x64
|
|
||||||
rm -rf $BUILD_DIR
|
|
||||||
|
|
||||||
# Mac build has by default useless directory level
|
|
||||||
mv "./dist/Trilium Notes-darwin-x64" $BUILD_DIR
|
|
||||||
|
|
||||||
cp bin/tpl/anonymize-database.sql $BUILD_DIR/
|
|
||||||
|
|
||||||
cp -r dump-db $BUILD_DIR/
|
|
||||||
rm -rf $BUILD_DIR/dump-db/node_modules
|
|
||||||
|
|
||||||
echo "Zipping mac x64 electron distribution..."
|
|
||||||
|
|
||||||
VERSION=`jq -r ".version" package.json`
|
|
||||||
|
|
||||||
cd dist
|
|
||||||
|
|
||||||
rm trilium-mac-x64-${VERSION}.zip
|
|
||||||
zip -r9 --symlinks trilium-mac-x64-${VERSION}.zip trilium-mac-x64
|
|
||||||
@@ -1,7 +1,9 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e # Fail on any command error
|
||||||
|
|
||||||
PKG_DIR=dist/trilium-linux-x64-server
|
PKG_DIR=dist/trilium-linux-x64-server
|
||||||
NODE_VERSION=18.16.1
|
NODE_VERSION=20.15.1
|
||||||
|
|
||||||
if [ "$1" != "DONTCOPY" ]
|
if [ "$1" != "DONTCOPY" ]
|
||||||
then
|
then
|
||||||
@@ -20,11 +22,8 @@ rm -r $PKG_DIR/node/lib/node_modules/npm
|
|||||||
rm -r $PKG_DIR/node/include/node
|
rm -r $PKG_DIR/node/include/node
|
||||||
|
|
||||||
rm -r $PKG_DIR/node_modules/electron*
|
rm -r $PKG_DIR/node_modules/electron*
|
||||||
rm -r $PKG_DIR/webpack*
|
|
||||||
rm -r $PKG_DIR/electron.js
|
rm -r $PKG_DIR/electron.js
|
||||||
|
|
||||||
cp -r bin/better-sqlite3/linux-server-better_sqlite3.node $PKG_DIR/node_modules/better-sqlite3/build/Release/better_sqlite3.node
|
|
||||||
|
|
||||||
printf "#!/bin/sh\n./node/bin/node src/www" > $PKG_DIR/trilium.sh
|
printf "#!/bin/sh\n./node/bin/node src/www" > $PKG_DIR/trilium.sh
|
||||||
chmod 755 $PKG_DIR/trilium.sh
|
chmod 755 $PKG_DIR/trilium.sh
|
||||||
|
|
||||||
|
|||||||
@@ -1,37 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
SRC_DIR=./dist/trilium-windows-x64-src
|
|
||||||
|
|
||||||
if [ "$1" != "DONTCOPY" ]
|
|
||||||
then
|
|
||||||
./bin/copy-trilium.sh $SRC_DIR
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Copying required windows binaries"
|
|
||||||
|
|
||||||
cp -r bin/better-sqlite3/win-better_sqlite3.node $SRC_DIR/node_modules/better-sqlite3/build/Release/better_sqlite3.node
|
|
||||||
|
|
||||||
rm -r $SRC_DIR/src/public/app-dist/*.mobile.*
|
|
||||||
|
|
||||||
echo "Packaging windows x64 electron build"
|
|
||||||
|
|
||||||
./node_modules/.bin/electron-packager $SRC_DIR --asar --out=dist --executable-name=trilium --platform=win32 --arch=x64 --overwrite --icon=images/app-icons/win/icon.ico
|
|
||||||
|
|
||||||
BUILD_DIR=./dist/trilium-windows-x64
|
|
||||||
rm -rf $BUILD_DIR
|
|
||||||
|
|
||||||
mv "./dist/Trilium Notes-win32-x64" $BUILD_DIR
|
|
||||||
|
|
||||||
cp bin/tpl/anonymize-database.sql $BUILD_DIR/
|
|
||||||
|
|
||||||
cp -r dump-db $BUILD_DIR/
|
|
||||||
rm -rf $BUILD_DIR/dump-db/node_modules
|
|
||||||
|
|
||||||
cp bin/tpl/trilium-{portable,no-cert-check,safe-mode}.bat $BUILD_DIR/
|
|
||||||
|
|
||||||
echo "Zipping windows x64 electron distribution..."
|
|
||||||
VERSION=`jq -r ".version" package.json`
|
|
||||||
|
|
||||||
cd dist
|
|
||||||
|
|
||||||
zip -r9 trilium-windows-x64-${VERSION}.zip trilium-windows-x64
|
|
||||||
30
bin/build.sh
30
bin/build.sh
@@ -1,5 +1,32 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e # Fail on any command error
|
||||||
|
|
||||||
|
if ! command -v jq &> /dev/null; then
|
||||||
|
echo "Missing command: jq"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! command -v fakeroot &> /dev/null; then
|
||||||
|
echo "Missing command: fakeroot"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! command -v dpkg-deb &> /dev/null; then
|
||||||
|
echo "Missing command: dpkg-deb"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if dpkg-deb 2>&1 | grep BusyBox &> /dev/null; then
|
||||||
|
echo "The dpkg-deb binary provided by BusyBox is not compatible. The Debian tool needs to be used instead."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! command -v wine &> /dev/null; then
|
||||||
|
echo "Missing command: wine"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
echo "Deleting existing builds"
|
echo "Deleting existing builds"
|
||||||
|
|
||||||
rm -rf dist/*
|
rm -rf dist/*
|
||||||
@@ -13,11 +40,14 @@ cp -r $SRC_DIR ./dist/trilium-linux-x64-src
|
|||||||
cp -r $SRC_DIR ./dist/trilium-linux-x64-server
|
cp -r $SRC_DIR ./dist/trilium-linux-x64-server
|
||||||
cp -r $SRC_DIR ./dist/trilium-windows-x64-src
|
cp -r $SRC_DIR ./dist/trilium-windows-x64-src
|
||||||
cp -r $SRC_DIR ./dist/trilium-mac-x64-src
|
cp -r $SRC_DIR ./dist/trilium-mac-x64-src
|
||||||
|
cp -r $SRC_DIR ./dist/trilium-mac-arm64-src
|
||||||
|
|
||||||
bin/build-win-x64.sh DONTCOPY
|
bin/build-win-x64.sh DONTCOPY
|
||||||
|
|
||||||
bin/build-mac-x64.sh DONTCOPY
|
bin/build-mac-x64.sh DONTCOPY
|
||||||
|
|
||||||
|
bin/build-mac-arm64.sh DONTCOPY
|
||||||
|
|
||||||
bin/build-linux-x64.sh DONTCOPY
|
bin/build-linux-x64.sh DONTCOPY
|
||||||
|
|
||||||
bin/build-server.sh DONTCOPY
|
bin/build-server.sh DONTCOPY
|
||||||
|
|||||||
102
bin/copy-dist.ts
Normal file
102
bin/copy-dist.ts
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
import fs from "fs-extra";
|
||||||
|
import path from "path";
|
||||||
|
|
||||||
|
const DEST_DIR = "./dist";
|
||||||
|
const DEST_DIR_SRC = path.join(DEST_DIR, "src");
|
||||||
|
const DEST_DIR_NODE_MODULES = path.join(DEST_DIR, "node_modules");
|
||||||
|
|
||||||
|
const VERBOSE = process.env.VERBOSE;
|
||||||
|
|
||||||
|
function log(...args) {
|
||||||
|
if (VERBOSE) {
|
||||||
|
console.log(args);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function copyNodeModuleFileOrFolder(source: string) {
|
||||||
|
const adjustedSource = source.substring(13);
|
||||||
|
const destination = path.join(DEST_DIR_NODE_MODULES, adjustedSource);
|
||||||
|
|
||||||
|
log(`Copying ${source} to ${destination}`);
|
||||||
|
await fs.ensureDir(path.dirname(destination));
|
||||||
|
await fs.copy(source, destination);
|
||||||
|
}
|
||||||
|
|
||||||
|
const copy = async () => {
|
||||||
|
for (const srcFile of fs.readdirSync("build")) {
|
||||||
|
const destFile = path.join(DEST_DIR, path.basename(srcFile));
|
||||||
|
log(`Copying source ${srcFile} -> ${destFile}.`);
|
||||||
|
fs.copySync(path.join("build", srcFile), destFile, { recursive: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
const filesToCopy = ["config-sample.ini"];
|
||||||
|
for (const file of filesToCopy) {
|
||||||
|
log(`Copying ${file}`);
|
||||||
|
await fs.copy(file, path.join(DEST_DIR, file));
|
||||||
|
}
|
||||||
|
|
||||||
|
const dirsToCopy = ["images", "libraries", "db"];
|
||||||
|
for (const dir of dirsToCopy) {
|
||||||
|
log(`Copying ${dir}`);
|
||||||
|
await fs.copy(dir, path.join(DEST_DIR, dir));
|
||||||
|
}
|
||||||
|
|
||||||
|
const srcDirsToCopy = ["./src/public", "./src/views", "./build"];
|
||||||
|
for (const dir of srcDirsToCopy) {
|
||||||
|
log(`Copying ${dir}`);
|
||||||
|
await fs.copy(dir, path.join(DEST_DIR_SRC, path.basename(dir)));
|
||||||
|
}
|
||||||
|
|
||||||
|
const nodeModulesFile = [
|
||||||
|
"node_modules/react/umd/react.production.min.js",
|
||||||
|
"node_modules/react/umd/react.development.js",
|
||||||
|
"node_modules/react-dom/umd/react-dom.production.min.js",
|
||||||
|
"node_modules/react-dom/umd/react-dom.development.js",
|
||||||
|
"node_modules/katex/dist/katex.min.js",
|
||||||
|
"node_modules/katex/dist/contrib/mhchem.min.js",
|
||||||
|
"node_modules/katex/dist/contrib/auto-render.min.js",
|
||||||
|
];
|
||||||
|
|
||||||
|
for (const file of nodeModulesFile) {
|
||||||
|
await copyNodeModuleFileOrFolder(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
const nodeModulesFolder = [
|
||||||
|
"node_modules/@excalidraw/excalidraw/dist/",
|
||||||
|
"node_modules/katex/dist/",
|
||||||
|
"node_modules/dayjs/",
|
||||||
|
"node_modules/force-graph/dist/",
|
||||||
|
"node_modules/boxicons/css/",
|
||||||
|
"node_modules/boxicons/fonts/",
|
||||||
|
"node_modules/mermaid/dist/",
|
||||||
|
"node_modules/jquery/dist/",
|
||||||
|
"node_modules/jquery-hotkeys/",
|
||||||
|
"node_modules/print-this/",
|
||||||
|
"node_modules/split.js/dist/",
|
||||||
|
"node_modules/panzoom/dist/",
|
||||||
|
"node_modules/i18next/",
|
||||||
|
"node_modules/i18next-http-backend/",
|
||||||
|
"node_modules/eslint/bin/",
|
||||||
|
"node_modules/jsplumb/dist/",
|
||||||
|
"node_modules/vanilla-js-wheel-zoom/dist/",
|
||||||
|
"node_modules/mark.js/dist/",
|
||||||
|
"node_modules/knockout/build/output/",
|
||||||
|
"node_modules/normalize.css/",
|
||||||
|
"node_modules/jquery.fancytree/dist/",
|
||||||
|
"node_modules/bootstrap/dist/",
|
||||||
|
"node_modules/autocomplete.js/dist/",
|
||||||
|
"node_modules/codemirror/lib/",
|
||||||
|
"node_modules/codemirror/addon/",
|
||||||
|
"node_modules/codemirror/mode/",
|
||||||
|
"node_modules/codemirror/keymap/",
|
||||||
|
"node_modules/mind-elixir/dist/"
|
||||||
|
];
|
||||||
|
|
||||||
|
for (const folder of nodeModulesFolder) {
|
||||||
|
await copyNodeModuleFileOrFolder(folder);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
copy()
|
||||||
|
.then(() => console.log("Copying complete!"))
|
||||||
|
.catch((err) => console.error("Error during copy:", err));
|
||||||
@@ -1,50 +1,75 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e # Fail on any command error
|
||||||
|
shopt -s globstar
|
||||||
|
|
||||||
if [[ $# -eq 0 ]] ; then
|
if [[ $# -eq 0 ]] ; then
|
||||||
echo "Missing argument of target directory"
|
echo "Missing argument of target directory"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
if ! [[ $(which npm) ]]; then
|
||||||
|
echo "Missing npm"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
n exec 18.16.1 npm run webpack
|
# Trigger the TypeScript build
|
||||||
|
echo TypeScript build start
|
||||||
|
npx tsc
|
||||||
|
echo TypeScript build finished
|
||||||
|
|
||||||
DIR=$1
|
# Copy the TypeScript artifacts
|
||||||
|
DIR="$1"
|
||||||
|
rm -rf "$DIR"
|
||||||
|
mkdir -pv "$DIR"
|
||||||
|
|
||||||
rm -rf $DIR
|
echo Webpack start
|
||||||
mkdir $DIR
|
npm run webpack
|
||||||
|
echo Webpack finish
|
||||||
|
|
||||||
echo "Copying Trilium to build directory $DIR"
|
echo "Copying Trilium to build directory $DIR"
|
||||||
|
|
||||||
cp -r images $DIR/
|
for d in 'images' 'libraries' 'src' 'db'; do
|
||||||
cp -r libraries $DIR/
|
cp -r "$d" "$DIR"/
|
||||||
cp -r src $DIR/
|
done
|
||||||
cp -r db $DIR/
|
|
||||||
cp -r package.json $DIR/
|
for f in 'package.json' 'package-lock.json' 'README.md' 'LICENSE' 'config-sample.ini'; do
|
||||||
cp -r package-lock.json $DIR/
|
cp "$f" "$DIR"/
|
||||||
cp -r README.md $DIR/
|
done
|
||||||
cp -r LICENSE $DIR/
|
|
||||||
cp -r config-sample.ini $DIR/
|
# Patch package.json main
|
||||||
cp -r electron.js $DIR/
|
sed -i 's/.\/dist\/electron.js/electron.js/g' "$DIR/package.json"
|
||||||
cp webpack-* $DIR/
|
|
||||||
|
script_dir=$(realpath $(dirname $0))
|
||||||
|
cp -R "$script_dir/../build/src" "$DIR"
|
||||||
|
cp "$script_dir/../build/electron.js" "$DIR"
|
||||||
|
|
||||||
# run in subshell (so we return to original dir)
|
# run in subshell (so we return to original dir)
|
||||||
(cd $DIR && n exec 18.16.1 npm install --only=prod)
|
(cd $DIR && npm install --omit=dev)
|
||||||
|
|
||||||
# cleanup of useless files in dependencies
|
if [[ -d "$DIR"/node_modules ]]; then
|
||||||
rm -r $DIR/node_modules/image-q/demo
|
# cleanup of useless files in dependencies
|
||||||
rm -r $DIR/node_modules/better-sqlite3/Release
|
for d in 'image-q/demo' \
|
||||||
rm -r $DIR/node_modules/better-sqlite3/deps/sqlite3.tar.gz
|
'@excalidraw/excalidraw/dist/excalidraw-assets-dev' '@excalidraw/excalidraw/dist/excalidraw.development.js' '@excalidraw/excalidraw/dist/excalidraw-with-preact.development.js' \
|
||||||
rm -r $DIR/node_modules/@jimp/plugin-print/fonts
|
'mermaid/dist/mermaid.js' \
|
||||||
rm -r $DIR/node_modules/jimp/browser
|
'boxicons/svg' 'boxicons/node_modules/react'/* \
|
||||||
rm -r $DIR/node_modules/jimp/fonts
|
'@jimp/plugin-print/fonts' 'jimp/browser' 'jimp/fonts'; do
|
||||||
|
[[ -e "$DIR"/node_modules/"$d" ]] && rm -r "$DIR"/node_modules/"$d"
|
||||||
|
done
|
||||||
|
|
||||||
# delete all tests (there are often large images as test file for jimp etc.)
|
# delete all tests (there are often large images as test file for jimp etc.)
|
||||||
find $DIR/node_modules -name test -exec rm -rf {} \;
|
for d in 'test' 'docs' 'demo' 'example'; do
|
||||||
find $DIR/node_modules -name docs -exec rm -rf {} \;
|
find "$DIR"/node_modules -name "$d" -exec rm -rf {} +
|
||||||
find $DIR/node_modules -name demo -exec rm -rf {} \;
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
find $DIR/libraries -name "*.map" -type f -delete
|
find $DIR/libraries -name "*.map" -type f -delete
|
||||||
|
find $DIR/node_modules -name "*.map" -type f -delete
|
||||||
|
find $DIR -name "*.ts" -type f -delete
|
||||||
|
|
||||||
cp $DIR/src/public/app/share.js $DIR/src/public/app-dist/
|
d="$DIR"/src/public
|
||||||
cp -r $DIR/src/public/app/doc_notes $DIR/src/public/app-dist/
|
[[ -d "$d"/app-dist ]] || mkdir -pv "$d"/app-dist
|
||||||
|
cp "$d"/app/share.js "$d"/app-dist/
|
||||||
|
cp -r "$d"/app/doc_notes "$d"/app-dist/
|
||||||
|
|
||||||
rm -rf $DIR/src/public/app
|
rm -rf "$d"/app
|
||||||
|
unset f d DIR
|
||||||
|
|||||||
6
bin/create-anonymization-script.js → bin/create-anonymization-script.ts
Normal file → Executable file
6
bin/create-anonymization-script.js → bin/create-anonymization-script.ts
Normal file → Executable file
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env node
|
#!/usr/bin/env node
|
||||||
|
|
||||||
const anonymizationService = require('../src/services/anonymization');
|
import anonymizationService from '../src/services/anonymization.js';
|
||||||
const fs = require('fs');
|
import fs from 'fs';
|
||||||
const path = require('path');
|
import path from 'path';
|
||||||
|
|
||||||
fs.writeFileSync(path.resolve(__dirname, 'tpl', 'anonymize-database.sql'), anonymizationService.getFullAnonymizationScript());
|
fs.writeFileSync(path.resolve(__dirname, 'tpl', 'anonymize-database.sql'), anonymizationService.getFullAnonymizationScript());
|
||||||
45
bin/create-icons.sh
Executable file
45
bin/create-icons.sh
Executable file
@@ -0,0 +1,45 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
if ! command -v magick &> /dev/null; then
|
||||||
|
echo "This tool requires ImageMagick to be installed in order to create the icons."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! command -v inkscape &> /dev/null; then
|
||||||
|
echo "This tool requires Inkscape to be render sharper SVGs than ImageMagick."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! command -v icnsutil &> /dev/null; then
|
||||||
|
echo "This tool requires icnsutil to be installed in order to generate macOS icons."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
script_dir=$(realpath $(dirname $0))
|
||||||
|
cd "${script_dir}/../images/app-icons"
|
||||||
|
inkscape -w 180 -h 180 "../icon-color.svg" -o "./ios/apple-touch-icon.png"
|
||||||
|
|
||||||
|
# Build PNGs
|
||||||
|
inkscape -w 128 -h 128 "../icon-color.svg" -o "./png/128x128.png"
|
||||||
|
inkscape -w 256 -h 256 "../icon-color.svg" -o "./png/256x256.png"
|
||||||
|
inkscape -w 256 -h 256 "../icon-purple.svg" -o "./png/256x256-dev.png"
|
||||||
|
|
||||||
|
# Build Mac .icns
|
||||||
|
declare -a sizes=("16" "32" "512" "1024")
|
||||||
|
for size in "${sizes[@]}"; do
|
||||||
|
inkscape -w $size -h $size "../icon-color.svg" -o "./png/${size}x${size}.png"
|
||||||
|
done
|
||||||
|
|
||||||
|
mkdir -p fakeapp.app
|
||||||
|
npx iconsur set fakeapp.app -l -i "png/1024x1024.png" -o "mac/1024x1024.png" -s 0.8
|
||||||
|
declare -a sizes=("16x16" "32x32" "128x128" "512x512")
|
||||||
|
for size in "${sizes[@]}"; do
|
||||||
|
magick "mac/1024x1024.png" -resize "${size}" "mac/${size}.png"
|
||||||
|
done
|
||||||
|
icnsutil compose -f "mac/icon.icns" ./mac/*.png
|
||||||
|
|
||||||
|
# Build Windows icon
|
||||||
|
magick -background none "../icon-color.svg" -define icon:auto-resize=16,32,48,64,128,256 "./icon.ico"
|
||||||
|
|
||||||
|
# Build Squirrel splash image
|
||||||
|
magick "./png/256x256.png" -background "#ffffff" -gravity center -extent 640x480 "./win/setup-banner.gif"
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"src": "dist/trilium-linux-x64",
|
"src": "dist/trilium-linux-x64",
|
||||||
"dest": "dist/",
|
"dest": "dist/",
|
||||||
|
"compression": "xz",
|
||||||
"name": "trilium",
|
"name": "trilium",
|
||||||
"productName": "Trilium Notes",
|
"productName": "Trilium Notes",
|
||||||
"genericName": "Note taker",
|
"genericName": "Note taker",
|
||||||
|
|||||||
3
bin/docs/.env.example
Normal file
3
bin/docs/.env.example
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
SHARE_PROTOCOL=http
|
||||||
|
SHARE_HOST=notes.johnsmith.me
|
||||||
|
ROOT_NOTE_ID=4yYHqKbLovVX
|
||||||
2
bin/docs/.gitignore
vendored
Normal file
2
bin/docs/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
output
|
||||||
|
.env
|
||||||
23
bin/docs/assets/v0.63.6/app-dist/share.js
Normal file
23
bin/docs/assets/v0.63.6/app-dist/share.js
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
/**
|
||||||
|
* Fetch note with given ID from backend
|
||||||
|
*
|
||||||
|
* @param noteId of the given note to be fetched. If false, fetches current note.
|
||||||
|
*/
|
||||||
|
async function fetchNote(noteId = null) {
|
||||||
|
if (!noteId) {
|
||||||
|
noteId = document.body.getAttribute("data-note-id");
|
||||||
|
}
|
||||||
|
|
||||||
|
const resp = await fetch(`api/notes/${noteId}`);
|
||||||
|
|
||||||
|
return await resp.json();
|
||||||
|
}
|
||||||
|
|
||||||
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
|
const toggleMenuButton = document.getElementById('toggleMenuButton');
|
||||||
|
const layout = document.getElementById('layout');
|
||||||
|
|
||||||
|
if (toggleMenuButton && layout) {
|
||||||
|
toggleMenuButton.addEventListener('click', () => layout.classList.toggle('showMenu'));
|
||||||
|
}
|
||||||
|
}, false);
|
||||||
551
bin/docs/assets/v0.63.6/libraries/ckeditor/ckeditor-content.css
Normal file
551
bin/docs/assets/v0.63.6/libraries/ckeditor/ckeditor-content.css
Normal file
@@ -0,0 +1,551 @@
|
|||||||
|
/* !!!!!! TRILIUM CUSTOM CHANGES !!!!!! */
|
||||||
|
|
||||||
|
.printed-content .ck-widget__selection-handle, .printed-content .ck-widget__type-around { /* gets rid of triangles: https://github.com/zadam/trilium/issues/1129 */
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CKEditor 5 (v41.0.0) content styles.
|
||||||
|
* Generated on Fri, 26 Jan 2024 10:23:49 GMT.
|
||||||
|
* For more information, check out https://ckeditor.com/docs/ckeditor5/latest/installation/advanced/content-styles.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--ck-color-image-caption-background: hsl(0, 0%, 97%);
|
||||||
|
--ck-color-image-caption-text: hsl(0, 0%, 20%);
|
||||||
|
--ck-color-mention-background: hsla(341, 100%, 30%, 0.1);
|
||||||
|
--ck-color-mention-text: hsl(341, 100%, 30%);
|
||||||
|
--ck-color-selector-caption-background: hsl(0, 0%, 97%);
|
||||||
|
--ck-color-selector-caption-text: hsl(0, 0%, 20%);
|
||||||
|
--ck-highlight-marker-blue: hsl(201, 97%, 72%);
|
||||||
|
--ck-highlight-marker-green: hsl(120, 93%, 68%);
|
||||||
|
--ck-highlight-marker-pink: hsl(345, 96%, 73%);
|
||||||
|
--ck-highlight-marker-yellow: hsl(60, 97%, 73%);
|
||||||
|
--ck-highlight-pen-green: hsl(112, 100%, 27%);
|
||||||
|
--ck-highlight-pen-red: hsl(0, 85%, 49%);
|
||||||
|
--ck-image-style-spacing: 1.5em;
|
||||||
|
--ck-inline-image-style-spacing: calc(var(--ck-image-style-spacing) / 2);
|
||||||
|
--ck-todo-list-checkmark-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* @ckeditor/ckeditor5-table/theme/tablecolumnresize.css */
|
||||||
|
.ck-content .table .ck-table-resized {
|
||||||
|
table-layout: fixed;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-table/theme/tablecolumnresize.css */
|
||||||
|
.ck-content .table table {
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-table/theme/tablecolumnresize.css */
|
||||||
|
.ck-content .table td,
|
||||||
|
.ck-content .table th {
|
||||||
|
overflow-wrap: break-word;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-table/theme/table.css */
|
||||||
|
.ck-content .table {
|
||||||
|
margin: 0.9em auto;
|
||||||
|
display: table;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-table/theme/table.css */
|
||||||
|
.ck-content .table table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
border-spacing: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border: 1px double hsl(0, 0%, 70%);
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-table/theme/table.css */
|
||||||
|
.ck-content .table table td,
|
||||||
|
.ck-content .table table th {
|
||||||
|
min-width: 2em;
|
||||||
|
padding: .4em;
|
||||||
|
border: 1px solid hsl(0, 0%, 75%);
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-table/theme/table.css */
|
||||||
|
.ck-content .table table th {
|
||||||
|
font-weight: bold;
|
||||||
|
background: hsla(0, 0%, 0%, 5%);
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-table/theme/table.css */
|
||||||
|
.ck-content[dir="rtl"] .table th {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-table/theme/table.css */
|
||||||
|
.ck-content[dir="ltr"] .table th {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-table/theme/tablecaption.css */
|
||||||
|
.ck-content .table > figcaption {
|
||||||
|
display: table-caption;
|
||||||
|
caption-side: top;
|
||||||
|
word-break: break-word;
|
||||||
|
text-align: center;
|
||||||
|
color: var(--ck-color-selector-caption-text);
|
||||||
|
background-color: var(--ck-color-selector-caption-background);
|
||||||
|
padding: .6em;
|
||||||
|
font-size: .75em;
|
||||||
|
outline-offset: -1px;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-page-break/theme/pagebreak.css */
|
||||||
|
.ck-content .page-break {
|
||||||
|
position: relative;
|
||||||
|
clear: both;
|
||||||
|
padding: 5px 0;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-page-break/theme/pagebreak.css */
|
||||||
|
.ck-content .page-break::after {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
border-bottom: 2px dashed hsl(0, 0%, 77%);
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-page-break/theme/pagebreak.css */
|
||||||
|
.ck-content .page-break__label {
|
||||||
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
|
padding: .3em .6em;
|
||||||
|
display: block;
|
||||||
|
text-transform: uppercase;
|
||||||
|
border: 1px solid hsl(0, 0%, 77%);
|
||||||
|
border-radius: 2px;
|
||||||
|
font-family: Helvetica, Arial, Tahoma, Verdana, Sans-Serif;
|
||||||
|
font-size: 0.75em;
|
||||||
|
font-weight: bold;
|
||||||
|
color: hsl(0, 0%, 20%);
|
||||||
|
background: hsl(0, 0%, 100%);
|
||||||
|
box-shadow: 2px 2px 1px hsla(0, 0%, 0%, 0.15);
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-media-embed/theme/mediaembed.css */
|
||||||
|
.ck-content .media {
|
||||||
|
clear: both;
|
||||||
|
margin: 0.9em 0;
|
||||||
|
display: block;
|
||||||
|
min-width: 15em;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-list/theme/todolist.css */
|
||||||
|
.ck-content .todo-list {
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-list/theme/todolist.css */
|
||||||
|
.ck-content .todo-list li {
|
||||||
|
position: relative;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-list/theme/todolist.css */
|
||||||
|
.ck-content .todo-list li .todo-list {
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-list/theme/todolist.css */
|
||||||
|
.ck-content .todo-list .todo-list__label > input {
|
||||||
|
-webkit-appearance: none;
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
width: var(--ck-todo-list-checkmark-size);
|
||||||
|
height: var(--ck-todo-list-checkmark-size);
|
||||||
|
vertical-align: middle;
|
||||||
|
border: 0;
|
||||||
|
left: -25px;
|
||||||
|
margin-right: -15px;
|
||||||
|
right: 0;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-list/theme/todolist.css */
|
||||||
|
.ck-content[dir=rtl] .todo-list .todo-list__label > input {
|
||||||
|
left: 0;
|
||||||
|
margin-right: 0;
|
||||||
|
right: -25px;
|
||||||
|
margin-left: -15px;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-list/theme/todolist.css */
|
||||||
|
.ck-content .todo-list .todo-list__label > input::before {
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
box-sizing: border-box;
|
||||||
|
content: '';
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border: 1px solid hsl(0, 0%, 20%);
|
||||||
|
border-radius: 2px;
|
||||||
|
transition: 250ms ease-in-out box-shadow;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-list/theme/todolist.css */
|
||||||
|
.ck-content .todo-list .todo-list__label > input::after {
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
box-sizing: content-box;
|
||||||
|
pointer-events: none;
|
||||||
|
content: '';
|
||||||
|
left: calc( var(--ck-todo-list-checkmark-size) / 3 );
|
||||||
|
top: calc( var(--ck-todo-list-checkmark-size) / 5.3 );
|
||||||
|
width: calc( var(--ck-todo-list-checkmark-size) / 5.3 );
|
||||||
|
height: calc( var(--ck-todo-list-checkmark-size) / 2.6 );
|
||||||
|
border-style: solid;
|
||||||
|
border-color: transparent;
|
||||||
|
border-width: 0 calc( var(--ck-todo-list-checkmark-size) / 8 ) calc( var(--ck-todo-list-checkmark-size) / 8 ) 0;
|
||||||
|
transform: rotate(45deg);
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-list/theme/todolist.css */
|
||||||
|
.ck-content .todo-list .todo-list__label > input[checked]::before {
|
||||||
|
background: hsl(126, 64%, 41%);
|
||||||
|
border-color: hsl(126, 64%, 41%);
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-list/theme/todolist.css */
|
||||||
|
.ck-content .todo-list .todo-list__label > input[checked]::after {
|
||||||
|
border-color: hsl(0, 0%, 100%);
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-list/theme/todolist.css */
|
||||||
|
.ck-content .todo-list .todo-list__label .todo-list__label__description {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-list/theme/todolist.css */
|
||||||
|
.ck-content .todo-list .todo-list__label.todo-list__label_without-description input[type=checkbox] {
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-list/theme/todolist.css */
|
||||||
|
.ck-editor__editable.ck-content .todo-list .todo-list__label > input,
|
||||||
|
.ck-editor__editable.ck-content .todo-list .todo-list__label > span[contenteditable=false] > input {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-list/theme/todolist.css */
|
||||||
|
.ck-editor__editable.ck-content .todo-list .todo-list__label > input:hover::before, .ck-editor__editable.ck-content .todo-list .todo-list__label > span[contenteditable=false] > input:hover::before {
|
||||||
|
box-shadow: 0 0 0 5px hsla(0, 0%, 0%, 0.1);
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-list/theme/todolist.css */
|
||||||
|
.ck-editor__editable.ck-content .todo-list .todo-list__label > span[contenteditable=false] > input {
|
||||||
|
-webkit-appearance: none;
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
width: var(--ck-todo-list-checkmark-size);
|
||||||
|
height: var(--ck-todo-list-checkmark-size);
|
||||||
|
vertical-align: middle;
|
||||||
|
border: 0;
|
||||||
|
left: -25px;
|
||||||
|
margin-right: -15px;
|
||||||
|
right: 0;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-list/theme/todolist.css */
|
||||||
|
.ck-editor__editable.ck-content[dir=rtl] .todo-list .todo-list__label > span[contenteditable=false] > input {
|
||||||
|
left: 0;
|
||||||
|
margin-right: 0;
|
||||||
|
right: -25px;
|
||||||
|
margin-left: -15px;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-list/theme/todolist.css */
|
||||||
|
.ck-editor__editable.ck-content .todo-list .todo-list__label > span[contenteditable=false] > input::before {
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
box-sizing: border-box;
|
||||||
|
content: '';
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border: 1px solid hsl(0, 0%, 20%);
|
||||||
|
border-radius: 2px;
|
||||||
|
transition: 250ms ease-in-out box-shadow;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-list/theme/todolist.css */
|
||||||
|
.ck-editor__editable.ck-content .todo-list .todo-list__label > span[contenteditable=false] > input::after {
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
box-sizing: content-box;
|
||||||
|
pointer-events: none;
|
||||||
|
content: '';
|
||||||
|
left: calc( var(--ck-todo-list-checkmark-size) / 3 );
|
||||||
|
top: calc( var(--ck-todo-list-checkmark-size) / 5.3 );
|
||||||
|
width: calc( var(--ck-todo-list-checkmark-size) / 5.3 );
|
||||||
|
height: calc( var(--ck-todo-list-checkmark-size) / 2.6 );
|
||||||
|
border-style: solid;
|
||||||
|
border-color: transparent;
|
||||||
|
border-width: 0 calc( var(--ck-todo-list-checkmark-size) / 8 ) calc( var(--ck-todo-list-checkmark-size) / 8 ) 0;
|
||||||
|
transform: rotate(45deg);
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-list/theme/todolist.css */
|
||||||
|
.ck-editor__editable.ck-content .todo-list .todo-list__label > span[contenteditable=false] > input[checked]::before {
|
||||||
|
background: hsl(126, 64%, 41%);
|
||||||
|
border-color: hsl(126, 64%, 41%);
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-list/theme/todolist.css */
|
||||||
|
.ck-editor__editable.ck-content .todo-list .todo-list__label > span[contenteditable=false] > input[checked]::after {
|
||||||
|
border-color: hsl(0, 0%, 100%);
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-list/theme/todolist.css */
|
||||||
|
.ck-editor__editable.ck-content .todo-list .todo-list__label.todo-list__label_without-description input[type=checkbox] {
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-list/theme/list.css */
|
||||||
|
.ck-content ol {
|
||||||
|
list-style-type: decimal;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-list/theme/list.css */
|
||||||
|
.ck-content ol ol {
|
||||||
|
list-style-type: lower-latin;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-list/theme/list.css */
|
||||||
|
.ck-content ol ol ol {
|
||||||
|
list-style-type: lower-roman;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-list/theme/list.css */
|
||||||
|
.ck-content ol ol ol ol {
|
||||||
|
list-style-type: upper-latin;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-list/theme/list.css */
|
||||||
|
.ck-content ol ol ol ol ol {
|
||||||
|
list-style-type: upper-roman;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-list/theme/list.css */
|
||||||
|
.ck-content ul {
|
||||||
|
list-style-type: disc;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-list/theme/list.css */
|
||||||
|
.ck-content ul ul {
|
||||||
|
list-style-type: circle;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-list/theme/list.css */
|
||||||
|
.ck-content ul ul ul {
|
||||||
|
list-style-type: square;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-list/theme/list.css */
|
||||||
|
.ck-content ul ul ul ul {
|
||||||
|
list-style-type: square;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-image/theme/image.css */
|
||||||
|
.ck-content .image {
|
||||||
|
display: table;
|
||||||
|
clear: both;
|
||||||
|
text-align: center;
|
||||||
|
margin: 0.9em auto;
|
||||||
|
min-width: 50px;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-image/theme/image.css */
|
||||||
|
.ck-content .image img {
|
||||||
|
display: block;
|
||||||
|
margin: 0 auto;
|
||||||
|
max-width: 100%;
|
||||||
|
min-width: 100%;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-image/theme/image.css */
|
||||||
|
.ck-content .image-inline {
|
||||||
|
/*
|
||||||
|
* Normally, the .image-inline would have "display: inline-block" and "img { width: 100% }" (to follow the wrapper while resizing).;
|
||||||
|
* Unfortunately, together with "srcset", it gets automatically stretched up to the width of the editing root.
|
||||||
|
* This strange behavior does not happen with inline-flex.
|
||||||
|
*/
|
||||||
|
display: inline-flex;
|
||||||
|
max-width: 100%;
|
||||||
|
align-items: flex-start;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-image/theme/image.css */
|
||||||
|
.ck-content .image-inline picture {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-image/theme/image.css */
|
||||||
|
.ck-content .image-inline picture,
|
||||||
|
.ck-content .image-inline img {
|
||||||
|
flex-grow: 1;
|
||||||
|
flex-shrink: 1;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-image/theme/imageresize.css */
|
||||||
|
.ck-content img.image_resized {
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-image/theme/imageresize.css */
|
||||||
|
.ck-content .image.image_resized {
|
||||||
|
max-width: 100%;
|
||||||
|
display: block;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-image/theme/imageresize.css */
|
||||||
|
.ck-content .image.image_resized img {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-image/theme/imageresize.css */
|
||||||
|
.ck-content .image.image_resized > figcaption {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-image/theme/imagecaption.css */
|
||||||
|
.ck-content .image > figcaption {
|
||||||
|
display: table-caption;
|
||||||
|
caption-side: bottom;
|
||||||
|
word-break: break-word;
|
||||||
|
color: var(--ck-color-image-caption-text);
|
||||||
|
background-color: var(--ck-color-image-caption-background);
|
||||||
|
padding: .6em;
|
||||||
|
font-size: .75em;
|
||||||
|
outline-offset: -1px;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-image/theme/imagestyle.css */
|
||||||
|
.ck-content .image-style-block-align-left,
|
||||||
|
.ck-content .image-style-block-align-right {
|
||||||
|
max-width: calc(100% - var(--ck-image-style-spacing));
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-image/theme/imagestyle.css */
|
||||||
|
.ck-content .image-style-align-left,
|
||||||
|
.ck-content .image-style-align-right {
|
||||||
|
clear: none;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-image/theme/imagestyle.css */
|
||||||
|
.ck-content .image-style-side {
|
||||||
|
float: right;
|
||||||
|
margin-left: var(--ck-image-style-spacing);
|
||||||
|
max-width: 50%;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-image/theme/imagestyle.css */
|
||||||
|
.ck-content .image-style-align-left {
|
||||||
|
float: left;
|
||||||
|
margin-right: var(--ck-image-style-spacing);
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-image/theme/imagestyle.css */
|
||||||
|
.ck-content .image-style-align-center {
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-image/theme/imagestyle.css */
|
||||||
|
.ck-content .image-style-align-right {
|
||||||
|
float: right;
|
||||||
|
margin-left: var(--ck-image-style-spacing);
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-image/theme/imagestyle.css */
|
||||||
|
.ck-content .image-style-block-align-right {
|
||||||
|
margin-right: 0;
|
||||||
|
margin-left: auto;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-image/theme/imagestyle.css */
|
||||||
|
.ck-content .image-style-block-align-left {
|
||||||
|
margin-left: 0;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-image/theme/imagestyle.css */
|
||||||
|
.ck-content p + .image-style-align-left,
|
||||||
|
.ck-content p + .image-style-align-right,
|
||||||
|
.ck-content p + .image-style-side {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-image/theme/imagestyle.css */
|
||||||
|
.ck-content .image-inline.image-style-align-left,
|
||||||
|
.ck-content .image-inline.image-style-align-right {
|
||||||
|
margin-top: var(--ck-inline-image-style-spacing);
|
||||||
|
margin-bottom: var(--ck-inline-image-style-spacing);
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-image/theme/imagestyle.css */
|
||||||
|
.ck-content .image-inline.image-style-align-left {
|
||||||
|
margin-right: var(--ck-inline-image-style-spacing);
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-image/theme/imagestyle.css */
|
||||||
|
.ck-content .image-inline.image-style-align-right {
|
||||||
|
margin-left: var(--ck-inline-image-style-spacing);
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-highlight/theme/highlight.css */
|
||||||
|
.ck-content .marker-yellow {
|
||||||
|
background-color: var(--ck-highlight-marker-yellow);
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-highlight/theme/highlight.css */
|
||||||
|
.ck-content .marker-green {
|
||||||
|
background-color: var(--ck-highlight-marker-green);
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-highlight/theme/highlight.css */
|
||||||
|
.ck-content .marker-pink {
|
||||||
|
background-color: var(--ck-highlight-marker-pink);
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-highlight/theme/highlight.css */
|
||||||
|
.ck-content .marker-blue {
|
||||||
|
background-color: var(--ck-highlight-marker-blue);
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-highlight/theme/highlight.css */
|
||||||
|
.ck-content .pen-red {
|
||||||
|
color: var(--ck-highlight-pen-red);
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-highlight/theme/highlight.css */
|
||||||
|
.ck-content .pen-green {
|
||||||
|
color: var(--ck-highlight-pen-green);
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-block-quote/theme/blockquote.css */
|
||||||
|
.ck-content blockquote {
|
||||||
|
overflow: hidden;
|
||||||
|
padding-right: 1.5em;
|
||||||
|
padding-left: 1.5em;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-right: 0;
|
||||||
|
font-style: italic;
|
||||||
|
border-left: solid 5px hsl(0, 0%, 80%);
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-block-quote/theme/blockquote.css */
|
||||||
|
.ck-content[dir="rtl"] blockquote {
|
||||||
|
border-left: 0;
|
||||||
|
border-right: solid 5px hsl(0, 0%, 80%);
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-basic-styles/theme/code.css */
|
||||||
|
.ck-content code {
|
||||||
|
background-color: hsla(0, 0%, 78%, 0.3);
|
||||||
|
padding: .15em;
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-font/theme/fontsize.css */
|
||||||
|
.ck-content .text-tiny {
|
||||||
|
font-size: .7em;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-font/theme/fontsize.css */
|
||||||
|
.ck-content .text-small {
|
||||||
|
font-size: .85em;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-font/theme/fontsize.css */
|
||||||
|
.ck-content .text-big {
|
||||||
|
font-size: 1.4em;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-font/theme/fontsize.css */
|
||||||
|
.ck-content .text-huge {
|
||||||
|
font-size: 1.8em;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-mention/theme/mention.css */
|
||||||
|
.ck-content .mention {
|
||||||
|
background: var(--ck-color-mention-background);
|
||||||
|
color: var(--ck-color-mention-text);
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-horizontal-line/theme/horizontalline.css */
|
||||||
|
.ck-content hr {
|
||||||
|
margin: 15px 0;
|
||||||
|
height: 4px;
|
||||||
|
background: hsl(0, 0%, 87%);
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-code-block/theme/codeblock.css */
|
||||||
|
.ck-content pre {
|
||||||
|
padding: 1em;
|
||||||
|
color: hsl(0, 0%, 20.8%);
|
||||||
|
background: hsla(0, 0%, 78%, 0.3);
|
||||||
|
border: 1px solid hsl(0, 0%, 77%);
|
||||||
|
border-radius: 2px;
|
||||||
|
text-align: left;
|
||||||
|
direction: ltr;
|
||||||
|
tab-size: 4;
|
||||||
|
white-space: pre-wrap;
|
||||||
|
font-style: normal;
|
||||||
|
min-width: 200px;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-code-block/theme/codeblock.css */
|
||||||
|
.ck-content pre code {
|
||||||
|
background: unset;
|
||||||
|
padding: 0;
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
@media print {
|
||||||
|
/* @ckeditor/ckeditor5-page-break/theme/pagebreak.css */
|
||||||
|
.ck-content .page-break {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
/* @ckeditor/ckeditor5-page-break/theme/pagebreak.css */
|
||||||
|
.ck-content .page-break::after {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
165
bin/docs/assets/v0.63.6/stylesheets/share.css
Normal file
165
bin/docs/assets/v0.63.6/stylesheets/share.css
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
body {
|
||||||
|
font-family: 'Lucida Grande', 'Lucida Sans Unicode', arial, sans-serif;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
#layout {
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row-reverse;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menu {
|
||||||
|
padding: 25px;
|
||||||
|
flex-basis: 0;
|
||||||
|
flex-grow: 1;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menu p {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menu > p {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 110%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menu ul {
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#main {
|
||||||
|
flex-basis: 0;
|
||||||
|
flex-grow: 3;
|
||||||
|
overflow: auto;
|
||||||
|
padding: 10px 20px 20px 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#parentLink {
|
||||||
|
float: right;
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#title {
|
||||||
|
margin: 0;
|
||||||
|
padding-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
word-wrap: anywhere;
|
||||||
|
}
|
||||||
|
|
||||||
|
iframe.pdf-view {
|
||||||
|
width: 100%;
|
||||||
|
height: 800px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#toggleMenuButton {
|
||||||
|
display: none;
|
||||||
|
position: fixed;
|
||||||
|
top: 8px;
|
||||||
|
left: 5px;
|
||||||
|
width: 1.4em;
|
||||||
|
border-radius: 5px;
|
||||||
|
border: 1px solid #aaa;
|
||||||
|
font-size: 2rem;
|
||||||
|
z-index: 10;
|
||||||
|
height: auto;
|
||||||
|
color: black;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
#childLinks.grid ul {
|
||||||
|
list-style-type: none;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#childLinks.grid ul li {
|
||||||
|
width: 180px;
|
||||||
|
height: 140px;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#childLinks.grid ul li a {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
border-radius: 5px;
|
||||||
|
justify-content: center;
|
||||||
|
align-content: center;
|
||||||
|
text-align: center;
|
||||||
|
font-size: large;
|
||||||
|
}
|
||||||
|
|
||||||
|
#childLinks.grid ul li a:hover {
|
||||||
|
background: #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
#childLinks.list ul {
|
||||||
|
list-style-type: none;
|
||||||
|
display: inline-flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
padding: 0;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#childLinks.list ul li {
|
||||||
|
margin-right: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#noteClippedFrom {
|
||||||
|
padding: 10px 0 10px 0;
|
||||||
|
margin: 20px 0 20px 0;
|
||||||
|
color: #666;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
border-left: 0;
|
||||||
|
border-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#toggleMenuButton::after {
|
||||||
|
position: relative;
|
||||||
|
top: -2px;
|
||||||
|
left: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 48em) {
|
||||||
|
#layout.showMenu #menu {
|
||||||
|
display: block;
|
||||||
|
margin-top: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#toggleMenuButton {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
#layout.showMenu #main {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#title {
|
||||||
|
padding-left: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#layout.showMenu #toggleMenuButton::after {
|
||||||
|
content: "«";
|
||||||
|
}
|
||||||
|
|
||||||
|
#toggleMenuButton::after {
|
||||||
|
content: "»";
|
||||||
|
}
|
||||||
|
|
||||||
|
#menu {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
10
bin/docs/index.template.html
Normal file
10
bin/docs/index.template.html
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="refresh" content="0; url=./{{ROOT_NOTE_ID}}.html" />
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
43
bin/docs/prepare.sh
Executable file
43
bin/docs/prepare.sh
Executable file
@@ -0,0 +1,43 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
script_dir=$(realpath $(dirname $0))
|
||||||
|
|
||||||
|
cd "$script_dir"
|
||||||
|
|
||||||
|
env_file="$script_dir/.env"
|
||||||
|
|
||||||
|
if [ ! -f "$env_file" ]; then
|
||||||
|
echo "Missing .env file, cannot proceed."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
output_dir="$script_dir/../../docs"
|
||||||
|
mkdir -p "$output_dir"
|
||||||
|
rm -f "$output_dir"/*
|
||||||
|
rm -rf "$output_dir"/{assets,share}
|
||||||
|
|
||||||
|
source "$env_file"
|
||||||
|
|
||||||
|
# Download everything in output/notes.example.com/share/...
|
||||||
|
share_url="$SHARE_PROTOCOL://$SHARE_HOST/share/$ROOT_NOTE_ID"
|
||||||
|
wget -rpEk -e robots=off "$share_url" -P "$output_dir"
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo -e \\nDownloading failed, make sure you are using the real wget package and not the busybox one.
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get rid of the domain in the output folder
|
||||||
|
mv "$output_dir/$SHARE_HOST"/* "$output_dir/"
|
||||||
|
rmdir "$output_dir/$SHARE_HOST"
|
||||||
|
|
||||||
|
# Create home page with redirect
|
||||||
|
index_dest_path="$output_dir/index.html"
|
||||||
|
cp index.template.html "$index_dest_path"
|
||||||
|
sed -i "s/{{ROOT_NOTE_ID}}/$ROOT_NOTE_ID/g" "$index_dest_path"
|
||||||
|
|
||||||
|
# Rewrite links to get rid of the share folder
|
||||||
|
sed -i "s/<link href=\"\\.\\./<link href=\"\\./g" "$output_dir/share"/*.html
|
||||||
|
sed -i "s/<script src=\"\\.\\./<script src=\"\\./g" "$output_dir/share"/*.html
|
||||||
|
sed -i "s/rel=\"shortcut icon\" href=\"\\.\\./rel=\"shortcut icon\" href=\"\\./g" "$output_dir/share"/*.html
|
||||||
|
cp -r "$output_dir/share"/* "$output_dir"
|
||||||
|
rm -r "$output_dir/share"
|
||||||
8
bin/docs/preview.sh
Executable file
8
bin/docs/preview.sh
Executable file
@@ -0,0 +1,8 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
LISTEN_ADDRESS=127.0.0.1:8088
|
||||||
|
|
||||||
|
script_dir=$(realpath $(dirname $0))
|
||||||
|
output_dir="$script_dir/../../docs"
|
||||||
|
echo "Preview the documentation at http://$LISTEN_ADDRESS"
|
||||||
|
httpd -fv -p "$LISTEN_ADDRESS" -h "$output_dir"
|
||||||
@@ -7,6 +7,11 @@ if [[ $# -eq 0 ]] ; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if ! command -v jq &> /dev/null; then
|
||||||
|
echo "Missing command: jq"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
VERSION=$1
|
VERSION=$1
|
||||||
|
|
||||||
if ! [[ ${VERSION} =~ ^[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,2}(-.+)?$ ]] ;
|
if ! [[ ${VERSION} =~ ^[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,2}(-.+)?$ ]] ;
|
||||||
@@ -22,13 +27,14 @@ fi
|
|||||||
|
|
||||||
echo "Releasing Trilium $VERSION"
|
echo "Releasing Trilium $VERSION"
|
||||||
|
|
||||||
jq '.version = "'$VERSION'"' package.json|sponge package.json
|
jq '.version = "'$VERSION'"' package.json > package.json.tmp
|
||||||
|
mv package.json.tmp package.json
|
||||||
|
|
||||||
git add package.json
|
git add package.json
|
||||||
|
|
||||||
echo 'module.exports = { buildDate:"'`date --iso-8601=seconds`'", buildRevision: "'`git log -1 --format="%H"`'" };' > src/services/build.js
|
npm run update-build-info
|
||||||
|
|
||||||
git add src/services/build.js
|
git add src/services/build.ts
|
||||||
|
|
||||||
TAG=v$VERSION
|
TAG=v$VERSION
|
||||||
|
|
||||||
@@ -41,31 +47,3 @@ echo "Tagging commit with $TAG"
|
|||||||
|
|
||||||
git tag $TAG
|
git tag $TAG
|
||||||
git push origin $TAG
|
git push origin $TAG
|
||||||
|
|
||||||
bin/build.sh
|
|
||||||
|
|
||||||
LINUX_X64_BUILD=trilium-linux-x64-$VERSION.tar.xz
|
|
||||||
DEBIAN_X64_BUILD=trilium_${VERSION}_amd64.deb
|
|
||||||
WINDOWS_X64_BUILD=trilium-windows-x64-$VERSION.zip
|
|
||||||
MAC_X64_BUILD=trilium-mac-x64-$VERSION.zip
|
|
||||||
SERVER_BUILD=trilium-linux-x64-server-$VERSION.tar.xz
|
|
||||||
|
|
||||||
echo "Creating release in GitHub"
|
|
||||||
|
|
||||||
EXTRA=
|
|
||||||
|
|
||||||
if [[ $TAG == *"beta"* ]]; then
|
|
||||||
EXTRA=--prerelease
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "$GITHUB_CLI_AUTH_TOKEN" | gh auth login --with-token
|
|
||||||
|
|
||||||
gh release create "$TAG" \
|
|
||||||
--title "$TAG release" \
|
|
||||||
--notes "" \
|
|
||||||
$EXTRA \
|
|
||||||
"dist/$DEBIAN_X64_BUILD" \
|
|
||||||
"dist/$LINUX_X64_BUILD" \
|
|
||||||
"dist/$WINDOWS_X64_BUILD" \
|
|
||||||
"dist/$MAC_X64_BUILD" \
|
|
||||||
"dist/$SERVER_BUILD"
|
|
||||||
|
|||||||
@@ -1,160 +1,45 @@
|
|||||||
|
|
||||||
UPDATE etapi_tokens SET tokenHash = 'API token hash value';
|
UPDATE etapi_tokens SET tokenHash = 'API token hash value';
|
||||||
UPDATE notes SET title = 'title' WHERE noteId != 'root' AND noteId NOT LIKE '\_%' ESCAPE '\';
|
UPDATE notes SET title = 'title'
|
||||||
|
WHERE noteId NOT IN ('root', '_hidden', '_share')
|
||||||
|
AND SUBSTR(noteId, 1, 8) != '_options'
|
||||||
|
AND SUBSTR(noteId, 1, 3) != '_lb';
|
||||||
UPDATE blobs SET content = 'text' WHERE content IS NOT NULL;
|
UPDATE blobs SET content = 'text' WHERE content IS NOT NULL;
|
||||||
UPDATE revisions SET title = 'title';
|
UPDATE revisions SET title = 'title';
|
||||||
|
|
||||||
UPDATE attributes SET name = 'name', value = 'value'
|
UPDATE attributes SET name = 'name', value = 'value' WHERE type = 'label'
|
||||||
WHERE type = 'label'
|
AND name NOT IN
|
||||||
AND name NOT IN ('inbox',
|
('inbox', 'disableVersioning', 'calendarRoot', 'archived', 'excludeFromExport', 'disableInclusion', 'appCss',
|
||||||
'disableVersioning',
|
'appTheme', 'hidePromotedAttributes', 'readOnly', 'autoReadOnlyDisabled', 'cssClass', 'iconClass',
|
||||||
'calendarRoot',
|
'keyboardShortcut', 'run', 'runOnInstance', 'runAtHour', 'customRequestHandler', 'customResourceProvider',
|
||||||
'archived',
|
'widget', 'noteInfoWidgetDisabled', 'linkMapWidgetDisabled', 'revisionsWidgetDisabled',
|
||||||
'excludeFromExport',
|
'whatLinksHereWidgetDisabled', 'similarNotesWidgetDisabled', 'workspace', 'workspaceIconClass',
|
||||||
'disableInclusion',
|
'workspaceTabBackgroundColor', 'workspaceCalendarRoot', 'workspaceTemplate', 'searchHome', 'workspaceInbox',
|
||||||
'appCss',
|
'workspaceSearchHome', 'sqlConsoleHome', 'datePattern', 'pageSize', 'viewType', 'mapRootNoteId',
|
||||||
'appTheme',
|
'bookmarkFolder', 'sorted', 'sortDirection', 'sortFoldersFirst', 'sortNatural', 'sortLocale', 'top',
|
||||||
'hidePromotedAttributes',
|
'fullContentWidth', 'shareHiddenFromTree', 'shareExternalLink', 'shareOmitDefaultCss', 'shareRoot', 'shareDescription',
|
||||||
'readOnly',
|
'shareRaw', 'shareDisallowRobotIndexing', 'shareIndex', 'displayRelations', 'hideRelations', 'titleTemplate',
|
||||||
'autoReadOnlyDisabled',
|
'template', 'toc', 'color', 'keepCurrentHoisting', 'executeButton', 'executeDescription', 'newNotesOnTop',
|
||||||
'cssClass',
|
'clipperInbox', 'internalLink', 'imageLink', 'relationMapLink', 'includeMapLink', 'runOnNoteCreation',
|
||||||
'iconClass',
|
'runOnNoteTitleChange', 'runOnNoteChange', 'runOnNoteContentChange', 'runOnNoteDeletion', 'runOnBranchCreation', 'runOnBranchChange',
|
||||||
'keyboardShortcut',
|
'runOnBranchDeletion', 'runOnChildNoteCreation', 'runOnAttributeCreation', 'runOnAttributeChange', 'template',
|
||||||
'run',
|
'inherit', 'widget', 'renderNote', 'shareCss', 'shareJs', 'shareTemplate', 'shareFavicon');
|
||||||
'runOnInstance',
|
UPDATE attributes SET name = 'name' WHERE type = 'relation'
|
||||||
'runAtHour',
|
AND name NOT IN
|
||||||
'customRequestHandler',
|
('inbox', 'disableVersioning', 'calendarRoot', 'archived', 'excludeFromExport', 'disableInclusion', 'appCss',
|
||||||
'customResourceProvider',
|
'appTheme', 'hidePromotedAttributes', 'readOnly', 'autoReadOnlyDisabled', 'cssClass', 'iconClass',
|
||||||
'widget',
|
'keyboardShortcut', 'run', 'runOnInstance', 'runAtHour', 'customRequestHandler', 'customResourceProvider',
|
||||||
'noteInfoWidgetDisabled',
|
'widget', 'noteInfoWidgetDisabled', 'linkMapWidgetDisabled', 'revisionsWidgetDisabled',
|
||||||
'linkMapWidgetDisabled',
|
'whatLinksHereWidgetDisabled', 'similarNotesWidgetDisabled', 'workspace', 'workspaceIconClass',
|
||||||
'revisionsWidgetDisabled',
|
'workspaceTabBackgroundColor', 'workspaceCalendarRoot', 'workspaceTemplate', 'searchHome', 'workspaceInbox',
|
||||||
'whatLinksHereWidgetDisabled',
|
'workspaceSearchHome', 'sqlConsoleHome', 'datePattern', 'pageSize', 'viewType', 'mapRootNoteId',
|
||||||
'similarNotesWidgetDisabled',
|
'bookmarkFolder', 'sorted', 'sortDirection', 'sortFoldersFirst', 'sortNatural', 'sortLocale', 'top',
|
||||||
'workspace',
|
'fullContentWidth', 'shareHiddenFromTree', 'shareExternalLink', 'shareOmitDefaultCss', 'shareRoot', 'shareDescription',
|
||||||
'workspaceIconClass',
|
'shareRaw', 'shareDisallowRobotIndexing', 'shareIndex', 'displayRelations', 'hideRelations', 'titleTemplate',
|
||||||
'workspaceTabBackgroundColor',
|
'template', 'toc', 'color', 'keepCurrentHoisting', 'executeButton', 'executeDescription', 'newNotesOnTop',
|
||||||
'searchHome',
|
'clipperInbox', 'internalLink', 'imageLink', 'relationMapLink', 'includeMapLink', 'runOnNoteCreation',
|
||||||
'workspaceInbox',
|
'runOnNoteTitleChange', 'runOnNoteChange', 'runOnNoteContentChange', 'runOnNoteDeletion', 'runOnBranchCreation', 'runOnBranchChange',
|
||||||
'workspaceSearchHome',
|
'runOnBranchDeletion', 'runOnChildNoteCreation', 'runOnAttributeCreation', 'runOnAttributeChange', 'template',
|
||||||
'sqlConsoleHome',
|
'inherit', 'widget', 'renderNote', 'shareCss', 'shareJs', 'shareTemplate', 'shareFavicon');
|
||||||
'datePattern',
|
|
||||||
'pageSize',
|
|
||||||
'viewType',
|
|
||||||
'mapRootNoteId',
|
|
||||||
'bookmarkFolder',
|
|
||||||
'sorted',
|
|
||||||
'top',
|
|
||||||
'fullContentWidth',
|
|
||||||
'shareHiddenFromTree',
|
|
||||||
'shareAlias',
|
|
||||||
'shareOmitDefaultCss',
|
|
||||||
'shareRoot',
|
|
||||||
'internalLink',
|
|
||||||
'imageLink',
|
|
||||||
'relationMapLink',
|
|
||||||
'includeMapLink',
|
|
||||||
'runOnNoteCreation',
|
|
||||||
'runOnNoteTitleChange',
|
|
||||||
'runOnNoteContentChange',
|
|
||||||
'runOnNoteChange',
|
|
||||||
'runOnChildNoteCreation',
|
|
||||||
'runOnAttributeCreation',
|
|
||||||
'runOnAttributeChange',
|
|
||||||
'template',
|
|
||||||
'inherit',
|
|
||||||
'widget',
|
|
||||||
'renderNote',
|
|
||||||
'shareCss',
|
|
||||||
'shareJs',
|
|
||||||
'shareFavicon',
|
|
||||||
'executeButton',
|
|
||||||
'keepCurrentHoisting',
|
|
||||||
'color',
|
|
||||||
'toc',
|
|
||||||
'excludeFromNoteMap',
|
|
||||||
'docName',
|
|
||||||
'launcherType',
|
|
||||||
'builtinWidget',
|
|
||||||
'baseSize',
|
|
||||||
'growthFactor'
|
|
||||||
);
|
|
||||||
|
|
||||||
UPDATE attributes SET name = 'name'
|
|
||||||
AND name NOT IN ('inbox',
|
|
||||||
'disableVersioning',
|
|
||||||
'calendarRoot',
|
|
||||||
'archived',
|
|
||||||
'excludeFromExport',
|
|
||||||
'disableInclusion',
|
|
||||||
'appCss',
|
|
||||||
'appTheme',
|
|
||||||
'hidePromotedAttributes',
|
|
||||||
'readOnly',
|
|
||||||
'autoReadOnlyDisabled',
|
|
||||||
'cssClass',
|
|
||||||
'iconClass',
|
|
||||||
'keyboardShortcut',
|
|
||||||
'run',
|
|
||||||
'runOnInstance',
|
|
||||||
'runAtHour',
|
|
||||||
'customRequestHandler',
|
|
||||||
'customResourceProvider',
|
|
||||||
'widget',
|
|
||||||
'noteInfoWidgetDisabled',
|
|
||||||
'linkMapWidgetDisabled',
|
|
||||||
'revisionsWidgetDisabled',
|
|
||||||
'whatLinksHereWidgetDisabled',
|
|
||||||
'similarNotesWidgetDisabled',
|
|
||||||
'workspace',
|
|
||||||
'workspaceIconClass',
|
|
||||||
'workspaceTabBackgroundColor',
|
|
||||||
'searchHome',
|
|
||||||
'workspaceInbox',
|
|
||||||
'workspaceSearchHome',
|
|
||||||
'sqlConsoleHome',
|
|
||||||
'datePattern',
|
|
||||||
'pageSize',
|
|
||||||
'viewType',
|
|
||||||
'mapRootNoteId',
|
|
||||||
'bookmarkFolder',
|
|
||||||
'sorted',
|
|
||||||
'top',
|
|
||||||
'fullContentWidth',
|
|
||||||
'shareHiddenFromTree',
|
|
||||||
'shareAlias',
|
|
||||||
'shareOmitDefaultCss',
|
|
||||||
'shareRoot',
|
|
||||||
'internalLink',
|
|
||||||
'imageLink',
|
|
||||||
'relationMapLink',
|
|
||||||
'includeMapLink',
|
|
||||||
'runOnNoteCreation',
|
|
||||||
'runOnNoteTitleChange',
|
|
||||||
'runOnNoteContentChange',
|
|
||||||
'runOnNoteChange',
|
|
||||||
'runOnChildNoteCreation',
|
|
||||||
'runOnAttributeCreation',
|
|
||||||
'runOnAttributeChange',
|
|
||||||
'template',
|
|
||||||
'inherit',
|
|
||||||
'widget',
|
|
||||||
'renderNote',
|
|
||||||
'shareCss',
|
|
||||||
'shareJs',
|
|
||||||
'shareFavicon',
|
|
||||||
'executeButton',
|
|
||||||
'keepCurrentHoisting',
|
|
||||||
'color',
|
|
||||||
'toc',
|
|
||||||
'excludeFromNoteMap',
|
|
||||||
'docName',
|
|
||||||
'launcherType',
|
|
||||||
'builtinWidget',
|
|
||||||
'baseSize',
|
|
||||||
'growthFactor'
|
|
||||||
);
|
|
||||||
|
|
||||||
UPDATE branches SET prefix = 'prefix' WHERE prefix IS NOT NULL AND prefix != 'recovered';
|
UPDATE branches SET prefix = 'prefix' WHERE prefix IS NOT NULL AND prefix != 'recovered';
|
||||||
UPDATE options SET value = 'anonymized' WHERE name IN
|
UPDATE options SET value = 'anonymized' WHERE name IN
|
||||||
('documentId', 'documentSecret', 'encryptedDataKey',
|
('documentId', 'documentSecret', 'encryptedDataKey',
|
||||||
|
|||||||
25
bin/update-build-info.ts
Normal file
25
bin/update-build-info.ts
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
import child_process from "child_process";
|
||||||
|
import fs from "fs";
|
||||||
|
|
||||||
|
function getBuildDate() {
|
||||||
|
const now = new Date();
|
||||||
|
now.setMilliseconds(0);
|
||||||
|
return now
|
||||||
|
.toISOString()
|
||||||
|
.replace(".000", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
function getGitRevision() {
|
||||||
|
return child_process.execSync('git log -1 --format="%H"')
|
||||||
|
.toString("utf-8")
|
||||||
|
.trimEnd();
|
||||||
|
}
|
||||||
|
|
||||||
|
const output = `\
|
||||||
|
export default {
|
||||||
|
buildDate: "${getBuildDate()}",
|
||||||
|
buildRevision: "${getGitRevision()}"
|
||||||
|
};
|
||||||
|
`;
|
||||||
|
|
||||||
|
fs.writeFileSync("src/services/build.ts", output);
|
||||||
BIN
db/demo.zip
BIN
db/demo.zip
Binary file not shown.
@@ -1 +0,0 @@
|
|||||||
module.exports = () => console.log("NOOP, moved to migration 0189");
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
-- black theme has been removed, dark is closest replacement
|
|
||||||
UPDATE options SET value = 'dark' WHERE name = 'theme' AND value = 'black';
|
|
||||||
|
|
||||||
UPDATE options SET value = 'light' WHERE name = 'theme' AND value = 'white';
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
ALTER TABLE branches DROP COLUMN utcDateCreated;
|
|
||||||
ALTER TABLE options DROP COLUMN utcDateCreated;
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
CREATE TABLE IF NOT EXISTS "mig_entity_changes" (
|
|
||||||
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
||||||
`entityName` TEXT NOT NULL,
|
|
||||||
`entityId` TEXT NOT NULL,
|
|
||||||
`hash` TEXT NOT NULL,
|
|
||||||
`isErased` INT NOT NULL,
|
|
||||||
`changeId` TEXT NOT NULL,
|
|
||||||
`sourceId` TEXT NOT NULL,
|
|
||||||
`isSynced` INTEGER NOT NULL,
|
|
||||||
`utcDateChanged` TEXT NOT NULL
|
|
||||||
);
|
|
||||||
|
|
||||||
INSERT INTO mig_entity_changes (id, entityName, entityId, hash, isErased, changeId, sourceId, isSynced, utcDateChanged)
|
|
||||||
SELECT id, entityName, entityId, hash, isErased, '', sourceId, isSynced, utcDateChanged FROM entity_changes;
|
|
||||||
|
|
||||||
-- delete duplicates https://github.com/zadam/trilium/issues/2534
|
|
||||||
DELETE FROM mig_entity_changes WHERE isErased = 0 AND id IN (
|
|
||||||
SELECT id FROM mig_entity_changes ec
|
|
||||||
WHERE (
|
|
||||||
SELECT COUNT(*) FROM mig_entity_changes
|
|
||||||
WHERE ec.entityName = mig_entity_changes.entityName
|
|
||||||
AND ec.entityId = mig_entity_changes.entityId
|
|
||||||
) > 1
|
|
||||||
);
|
|
||||||
|
|
||||||
DROP TABLE entity_changes;
|
|
||||||
|
|
||||||
ALTER TABLE mig_entity_changes RENAME TO entity_changes;
|
|
||||||
|
|
||||||
CREATE UNIQUE INDEX `IDX_entityChanges_entityName_entityId` ON "entity_changes" (
|
|
||||||
`entityName`,
|
|
||||||
`entityId`
|
|
||||||
);
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
UPDATE branches SET branchId = 'hidden' where branchId = (
|
|
||||||
SELECT branchId FROM branches
|
|
||||||
WHERE parentNoteId = 'root'
|
|
||||||
AND noteId = 'hidden'
|
|
||||||
AND isDeleted = 0
|
|
||||||
ORDER BY utcDateModified
|
|
||||||
LIMIT 1
|
|
||||||
);
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
DELETE FROM options WHERE name = 'username';
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
CREATE TABLE IF NOT EXISTS "etapi_tokens"
|
|
||||||
(
|
|
||||||
etapiTokenId TEXT PRIMARY KEY NOT NULL,
|
|
||||||
name TEXT NOT NULL,
|
|
||||||
tokenHash TEXT NOT NULL,
|
|
||||||
utcDateCreated TEXT NOT NULL,
|
|
||||||
utcDateModified TEXT NOT NULL,
|
|
||||||
isDeleted INT NOT NULL DEFAULT 0);
|
|
||||||
|
|
||||||
INSERT INTO etapi_tokens (etapiTokenId, name, tokenHash, utcDateCreated, utcDateModified, isDeleted)
|
|
||||||
SELECT apiTokenId, 'Trilium Sender', token, utcDateCreated, utcDateCreated, isDeleted FROM api_tokens;
|
|
||||||
|
|
||||||
DROP TABLE api_tokens;
|
|
||||||
|
|
||||||
UPDATE entity_changes SET entityName = 'etapi_tokens' WHERE entityName = 'api_tokens';
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
module.exports = () => {
|
|
||||||
const sql = require('../../src/services/sql');
|
|
||||||
const crypto = require('crypto');
|
|
||||||
|
|
||||||
for (const {etapiTokenId, token} of sql.getRows("SELECT etapiTokenId, tokenHash AS token FROM etapi_tokens")) {
|
|
||||||
const tokenHash = crypto.createHash('sha256').update(token).digest('base64');
|
|
||||||
|
|
||||||
sql.execute(`UPDATE etapi_tokens SET tokenHash = ? WHERE etapiTokenId = ?`, [tokenHash, etapiTokenId]);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
DROP TABLE entity_changes;
|
|
||||||
-- not preserving the data because of https://github.com/zadam/trilium/issues/3447
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS "entity_changes" (
|
|
||||||
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
||||||
`entityName` TEXT NOT NULL,
|
|
||||||
`entityId` TEXT NOT NULL,
|
|
||||||
`hash` TEXT NOT NULL,
|
|
||||||
`isErased` INT NOT NULL,
|
|
||||||
`changeId` TEXT NOT NULL,
|
|
||||||
`componentId` TEXT NOT NULL,
|
|
||||||
`instanceId` TEXT NOT NULL,
|
|
||||||
`isSynced` INTEGER NOT NULL,
|
|
||||||
`utcDateChanged` TEXT NOT NULL
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE UNIQUE INDEX `IDX_entityChanges_entityName_entityId` ON "entity_changes" (
|
|
||||||
`entityName`,
|
|
||||||
`entityId`
|
|
||||||
);
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
CREATE INDEX `IDX_entity_changes_changeId` ON `entity_changes` (`changeId`);
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
const becca = require('../../src/becca/becca');
|
|
||||||
const beccaLoader = require('../../src/becca/becca_loader');
|
|
||||||
const cls = require('../../src/services/cls');
|
|
||||||
|
|
||||||
module.exports = () => {
|
|
||||||
cls.init(() => {
|
|
||||||
beccaLoader.load();
|
|
||||||
|
|
||||||
for (const note of Object.values(becca.notes)) {
|
|
||||||
if (note.hasLabel('calendarRoot')) {
|
|
||||||
note.addLabel('excludeFromNoteMap', "", true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
-- removing potential remnants of recent notes in entity changes, see https://github.com/zadam/trilium/issues/2842
|
|
||||||
DELETE FROM entity_changes WHERE entityName = 'recent_notes';
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
UPDATE attributes SET value = replace(value, 'setLabelValue', 'updateLabelValue') WHERE name = 'action' AND type = 'label';
|
|
||||||
UPDATE attributes SET value = replace(value, 'setRelationTarget', 'updateRelationTarget') WHERE name = 'action' AND type = 'label';
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
module.exports = () => console.log("NOOP, increased because of protected notes IV change");
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
UPDATE branches SET branchId = '_hidden__search' WHERE parentNoteId = 'hidden' AND noteId = 'search' AND isDeleted = 0;
|
|
||||||
UPDATE branches SET branchId = 'root__globalNoteMap' WHERE parentNoteId = 'singles' AND noteId = 'globalnotemap' AND isDeleted = 0;
|
|
||||||
UPDATE branches SET branchId = '_hidden__sqlConsole' WHERE parentNoteId = 'hidden' AND noteId = 'sqlconsole' AND isDeleted = 0;
|
|
||||||
UPDATE branches SET branchId = 'root__hidden' WHERE parentNoteId = 'root' AND noteId = 'hidden' AND isDeleted = 0;
|
|
||||||
UPDATE branches SET branchId = '_hidden__bulkAction' WHERE parentNoteId = 'hidden' AND noteId = 'bulkaction' AND isDeleted = 0;
|
|
||||||
UPDATE branches SET branchId = '_hidden__share' WHERE parentNoteId = 'root' AND noteId = 'share' AND isDeleted = 0;
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
UPDATE notes SET noteId = '_globalNoteMap', title = 'Note Map' WHERE noteId = 'globalnotemap';
|
|
||||||
UPDATE note_contents SET noteId = '_globalNoteMap' WHERE noteId = 'globalnotemap';
|
|
||||||
UPDATE note_revisions SET noteId = '_globalNoteMap' WHERE noteId = 'globalnotemap';
|
|
||||||
UPDATE branches SET noteId = '_globalNoteMap' WHERE noteId = 'globalnotemap';
|
|
||||||
UPDATE branches SET parentNoteId = '_globalNoteMap' WHERE parentNoteId = 'globalnotemap';
|
|
||||||
UPDATE attributes SET noteId = '_globalNoteMap' WHERE noteId = 'globalnotemap';
|
|
||||||
UPDATE attributes SET value = '_globalNoteMap' WHERE type = 'relation' AND value = 'globalnotemap';
|
|
||||||
UPDATE entity_changes SET entityId = '_globalNoteMap' WHERE entityId = 'globalnotemap';
|
|
||||||
|
|
||||||
UPDATE notes SET noteId = '_bulkAction', title = 'Bulk Action' WHERE noteId = 'bulkaction';
|
|
||||||
UPDATE note_contents SET noteId = '_bulkAction' WHERE noteId = 'bulkaction';
|
|
||||||
UPDATE note_revisions SET noteId = '_bulkAction' WHERE noteId = 'bulkaction';
|
|
||||||
UPDATE branches SET parentNoteId = '_bulkAction' WHERE parentNoteId = 'bulkaction';
|
|
||||||
UPDATE branches SET noteId = '_bulkAction' WHERE noteId = 'bulkaction';
|
|
||||||
UPDATE attributes SET noteId = '_bulkAction' WHERE noteId = 'bulkaction';
|
|
||||||
UPDATE attributes SET value = '_bulkAction' WHERE type = 'relation' AND value = 'bulkaction';
|
|
||||||
UPDATE entity_changes SET entityId = '_bulkAction' WHERE entityId = 'bulkaction';
|
|
||||||
|
|
||||||
UPDATE notes SET noteId = '_sqlConsole', title = 'SQL Console History' WHERE noteId = 'sqlconsole';
|
|
||||||
UPDATE note_contents SET noteId = '_sqlConsole' WHERE noteId = 'sqlconsole';
|
|
||||||
UPDATE note_revisions SET noteId = '_sqlConsole' WHERE noteId = 'sqlconsole';
|
|
||||||
UPDATE branches SET noteId = '_sqlConsole' WHERE noteId = 'sqlconsole';
|
|
||||||
UPDATE branches SET parentNoteId = '_sqlConsole' WHERE parentNoteId = 'sqlconsole';
|
|
||||||
UPDATE attributes SET noteId = '_sqlConsole' WHERE noteId = 'sqlconsole';
|
|
||||||
UPDATE attributes SET value = '_sqlConsole' WHERE type = 'relation' AND value = 'sqlconsole';
|
|
||||||
UPDATE entity_changes SET entityId = '_sqlConsole' WHERE entityId = 'sqlconsole';
|
|
||||||
|
|
||||||
UPDATE notes SET noteId = '_hidden', title = 'Hidden Notes' WHERE noteId = 'hidden';
|
|
||||||
UPDATE note_contents SET noteId = '_hidden' WHERE noteId = 'hidden';
|
|
||||||
UPDATE note_revisions SET noteId = '_hidden' WHERE noteId = 'hidden';
|
|
||||||
UPDATE branches SET noteId = '_hidden', prefix = NULL WHERE noteId = 'hidden';
|
|
||||||
UPDATE branches SET parentNoteId = '_hidden' WHERE parentNoteId = 'hidden';
|
|
||||||
UPDATE attributes SET noteId = '_hidden' WHERE noteId = 'hidden';
|
|
||||||
UPDATE attributes SET value = '_hidden' WHERE type = 'relation' AND value = 'hidden';
|
|
||||||
UPDATE entity_changes SET entityId = '_hidden' WHERE entityId = 'hidden';
|
|
||||||
|
|
||||||
UPDATE notes SET noteId = '_search', title = 'Search History' WHERE noteId = 'search';
|
|
||||||
UPDATE note_contents SET noteId = '_search' WHERE noteId = 'search';
|
|
||||||
UPDATE note_revisions SET noteId = '_search' WHERE noteId = 'search';
|
|
||||||
UPDATE branches SET noteId = '_search' WHERE noteId = 'search';
|
|
||||||
UPDATE branches SET parentNoteId = '_search' WHERE parentNoteId = 'search';
|
|
||||||
UPDATE attributes SET noteId = '_search' WHERE noteId = 'search';
|
|
||||||
UPDATE attributes SET value = '_search' WHERE type = 'relation' AND value = 'search';
|
|
||||||
UPDATE entity_changes SET entityId = '_search' WHERE entityId = 'search';
|
|
||||||
|
|
||||||
UPDATE notes SET noteId = '_share', title = 'Shared Notes' WHERE noteId = 'share';
|
|
||||||
UPDATE note_contents SET noteId = '_share' WHERE noteId = 'share';
|
|
||||||
UPDATE note_revisions SET noteId = '_share' WHERE noteId = 'share';
|
|
||||||
UPDATE branches SET noteId = '_share' WHERE noteId = 'share';
|
|
||||||
UPDATE branches SET parentNoteId = '_share' WHERE parentNoteId = 'share';
|
|
||||||
UPDATE attributes SET noteId = '_share' WHERE noteId = 'share';
|
|
||||||
UPDATE attributes SET value = '_share' WHERE type = 'relation' AND value = 'share';
|
|
||||||
UPDATE entity_changes SET entityId = '_share' WHERE entityId = 'share';
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
module.exports = () => {
|
|
||||||
const hiddenSubtreeService = require('../../src/services/hidden_subtree');
|
|
||||||
const cls = require("../../src/services/cls");
|
|
||||||
const beccaLoader = require("../../src/becca/becca_loader");
|
|
||||||
|
|
||||||
cls.init(() => {
|
|
||||||
beccaLoader.load();
|
|
||||||
// make sure the hidden subtree exists since the subsequent migrations we will move some existing notes into it (share...)
|
|
||||||
// in previous releases hidden subtree was created lazily
|
|
||||||
hiddenSubtreeService.checkHiddenSubtree(true);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
DELETE FROM branches WHERE noteId = '_share' AND parentNoteId != 'root' AND parentNoteId != '_hidden'; -- delete all other branches of _share if any
|
|
||||||
UPDATE branches SET parentNoteId = '_hidden' WHERE noteId = '_share';
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
DELETE FROM branches WHERE noteId = '_globalNoteMap' AND parentNoteId != 'singles' AND parentNoteId != '_hidden'; -- make sure there are no clones which would fail at the next line
|
|
||||||
UPDATE branches SET parentNoteId = '_hidden' WHERE noteId = '_globalNoteMap';
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
DELETE FROM branches WHERE noteId = 'singles';
|
|
||||||
DELETE FROM notes WHERE noteId = 'singles';
|
|
||||||
DELETE FROM note_contents WHERE noteId = 'singles';
|
|
||||||
DELETE FROM note_revisions WHERE noteId = 'singles';
|
|
||||||
DELETE FROM attributes WHERE noteId = 'singles';
|
|
||||||
DELETE FROM entity_changes WHERE entityId = 'singles';
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
module.exports = () => {
|
|
||||||
const cls = require("../../src/services/cls");
|
|
||||||
const cloningService = require("../../src/services/cloning");
|
|
||||||
const beccaLoader = require("../../src/becca/becca_loader");
|
|
||||||
const becca = require("../../src/becca/becca");
|
|
||||||
|
|
||||||
cls.init(() => {
|
|
||||||
beccaLoader.load();
|
|
||||||
|
|
||||||
for (const attr of becca.findAttributes('label','bookmarked')) {
|
|
||||||
cloningService.toggleNoteInParent(true, attr.noteId, '_lbBookmarks');
|
|
||||||
|
|
||||||
attr.markAsDeleted("0204__migrate_bookmarks_to_clones");
|
|
||||||
}
|
|
||||||
|
|
||||||
// bookmarkFolder used to work in 0.57 without the bookmarked label
|
|
||||||
for (const attr of becca.findAttributes('label','bookmarkFolder')) {
|
|
||||||
cloningService.toggleNoteInParent(true, attr.noteId, '_lbBookmarks');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
UPDATE notes SET type = 'relationMap' WHERE type = 'relation-map';
|
|
||||||
UPDATE notes SET type = 'noteMap' WHERE type = 'note-map';
|
|
||||||
UPDATE notes SET type = 'webView' WHERE type = 'web-view';
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
// the history was previously not exposed and the fact they were not cleaned up is rather a side-effect than an intention
|
|
||||||
|
|
||||||
module.exports = () => {
|
|
||||||
const cls = require("../../src/services/cls");
|
|
||||||
const beccaLoader = require("../../src/becca/becca_loader");
|
|
||||||
const becca = require("../../src/becca/becca");
|
|
||||||
|
|
||||||
cls.init(() => {
|
|
||||||
beccaLoader.load();
|
|
||||||
|
|
||||||
// deleting just branches because they might be cloned (and therefore saved) also outside of the hidden subtree
|
|
||||||
|
|
||||||
const searchRoot = becca.getNote('_search');
|
|
||||||
|
|
||||||
for (const searchBranch of searchRoot.getChildBranches()) {
|
|
||||||
const searchNote = searchBranch.getNote();
|
|
||||||
|
|
||||||
if (searchNote.type === 'search') {
|
|
||||||
searchBranch.deleteBranch('0206__delete_search_and_sql_console_history');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const sqlConsoleRoot = becca.getNote('_sqlConsole');
|
|
||||||
|
|
||||||
for (const sqlConsoleBranch of sqlConsoleRoot.getChildBranches()) {
|
|
||||||
const sqlConsoleNote = sqlConsoleBranch.getNote();
|
|
||||||
|
|
||||||
if (sqlConsoleNote.type === 'code' && sqlConsoleNote.mime === 'text/x-sqlite;schema=trilium') {
|
|
||||||
sqlConsoleBranch.deleteBranch('0206__delete_search_and_sql_console_history');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
UPDATE notes SET title = 'SQL Console History' WHERE noteId = '_sqlConsole';
|
|
||||||
UPDATE notes SET title = 'Search History' WHERE noteId = '_search';
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
module.exports = () => {
|
|
||||||
const cls = require("../../src/services/cls");
|
|
||||||
const beccaLoader = require("../../src/becca/becca_loader");
|
|
||||||
const becca = require("../../src/becca/becca");
|
|
||||||
|
|
||||||
cls.init(() => {
|
|
||||||
beccaLoader.load();
|
|
||||||
|
|
||||||
for (const label of becca.getNote('_hidden').getLabels('archived')) {
|
|
||||||
label.markAsDeleted('0208__remove_archived_from_hidden');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
UPDATE attributes SET name = 'workspaceInbox' WHERE type = 'label' AND name = 'hoistedInbox';
|
|
||||||
UPDATE entity_changes SET entityId = 'workspaceInbox' WHERE entityName = 'attributes' AND entityId = 'hoistedInbox';
|
|
||||||
|
|
||||||
UPDATE attributes SET name = 'workspaceSearchHome' WHERE type = 'label' AND name = 'hoistedSearchHome';
|
|
||||||
UPDATE entity_changes SET entityId = 'workspaceSearchHome' WHERE entityName = 'attributes' AND entityId = 'hoistedSearchHome';
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
module.exports = async () => {
|
|
||||||
const cls = require("../../src/services/cls");
|
|
||||||
const beccaLoader = require("../../src/becca/becca_loader");
|
|
||||||
const log = require("../../src/services/log");
|
|
||||||
const consistencyChecks = require("../../src/services/consistency_checks");
|
|
||||||
const eraseService = require("../../src/services/erase");
|
|
||||||
|
|
||||||
await cls.init(async () => {
|
|
||||||
// precaution for the 0211 migration
|
|
||||||
eraseService.eraseDeletedNotesNow();
|
|
||||||
|
|
||||||
beccaLoader.load();
|
|
||||||
|
|
||||||
try {
|
|
||||||
// precaution before running 211 which might produce unique constraint problems if the DB was not consistent
|
|
||||||
consistencyChecks.runOnDemandChecksWithoutExclusiveLock(true);
|
|
||||||
}
|
|
||||||
catch (e) {
|
|
||||||
// consistency checks might start failing in the future if there's some incompatible migration down the road
|
|
||||||
// we can optimistically assume the DB is consistent and still continue
|
|
||||||
log.error(`Consistency checks failed in migration 0210: ${e.message} ${e.stack}`);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
-- case based on isDeleted is needed, otherwise 2 branches (1 deleted, 1 not) might get the same ID
|
|
||||||
UPDATE entity_changes SET entityId = COALESCE((
|
|
||||||
SELECT
|
|
||||||
CASE isDeleted
|
|
||||||
WHEN 0 THEN parentNoteId || '_' || noteId
|
|
||||||
WHEN 1 THEN branchId
|
|
||||||
END
|
|
||||||
FROM branches WHERE branchId = entityId
|
|
||||||
), entityId)
|
|
||||||
WHERE entityName = 'branches' AND isErased = 0;
|
|
||||||
|
|
||||||
UPDATE branches SET branchId = parentNoteId || '_' || noteId WHERE isDeleted = 0;
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
module.exports = () => {
|
|
||||||
const cls = require("../../src/services/cls");
|
|
||||||
const beccaLoader = require("../../src/becca/becca_loader");
|
|
||||||
const becca = require("../../src/becca/becca");
|
|
||||||
const log = require("../../src/services/log");
|
|
||||||
|
|
||||||
cls.init(() => {
|
|
||||||
beccaLoader.load();
|
|
||||||
|
|
||||||
const hidden = becca.getNote("_hidden");
|
|
||||||
|
|
||||||
if (!hidden) {
|
|
||||||
log.info("MIGRATION 212: no _hidden note, skipping.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const noteId of hidden.getSubtreeNoteIds({includeHidden: true})) {
|
|
||||||
if (noteId.startsWith("_")) { // is "named" note
|
|
||||||
const note = becca.getNote(noteId);
|
|
||||||
|
|
||||||
for (const attr of note.getOwnedAttributes().slice()) {
|
|
||||||
attr.markAsDeleted("0212__delete_all_attributes_of_named_notes");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
module.exports = () => {
|
|
||||||
const beccaLoader = require("../../src/becca/becca_loader");
|
|
||||||
const becca = require("../../src/becca/becca");
|
|
||||||
const cls = require("../../src/services/cls");
|
|
||||||
const log = require("../../src/services/log");
|
|
||||||
|
|
||||||
cls.init(() => {
|
|
||||||
beccaLoader.load();
|
|
||||||
|
|
||||||
for (const note of Object.values(becca.notes)) {
|
|
||||||
try {
|
|
||||||
if (!note.isJavaScript()) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!note.mime?.endsWith('env=frontend') && !note.mime?.endsWith('env=backend')) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
const origContent = note.getContent().toString();
|
|
||||||
const fixedContent = origContent
|
|
||||||
.replaceAll("runOnServer", "runOnBackend")
|
|
||||||
.replaceAll("api.refreshTree()", "")
|
|
||||||
.replaceAll("addTextToActiveTabEditor", "addTextToActiveContextEditor")
|
|
||||||
.replaceAll("getActiveTabNote", "getActiveContextNote")
|
|
||||||
.replaceAll("getActiveTabTextEditor", "getActiveContextTextEditor")
|
|
||||||
.replaceAll("getActiveTabNotePath", "getActiveContextNotePath")
|
|
||||||
.replaceAll("getDateNote", "getDayNote")
|
|
||||||
.replaceAll("utils.unescapeHtml", "unescapeHtml")
|
|
||||||
.replaceAll("sortNotesByTitle", "sortNotes")
|
|
||||||
.replaceAll("CollapsibleWidget", "RightPanelWidget")
|
|
||||||
.replaceAll("TabAwareWidget", "NoteContextAwareWidget")
|
|
||||||
.replaceAll("TabCachingWidget", "NoteContextAwareWidget")
|
|
||||||
.replaceAll("NoteContextCachingWidget", "NoteContextAwareWidget");
|
|
||||||
|
|
||||||
if (origContent !== fixedContent) {
|
|
||||||
log.info(`Replacing legacy API calls for note '${note.noteId}'`);
|
|
||||||
|
|
||||||
note.saveNoteRevision();
|
|
||||||
note.setContent(fixedContent);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (e) {
|
|
||||||
log.error(`Error during migration to 213 for note '${note.noteId}': ${e.message} ${e.stack}`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
UPDATE branches SET notePosition = notePosition - 999899999 WHERE parentNoteId = 'root' AND notePosition > 999999999;
|
|
||||||
@@ -8,3 +8,6 @@ CREATE TABLE IF NOT EXISTS "blobs" (
|
|||||||
|
|
||||||
ALTER TABLE notes ADD blobId TEXT DEFAULT NULL;
|
ALTER TABLE notes ADD blobId TEXT DEFAULT NULL;
|
||||||
ALTER TABLE note_revisions ADD blobId TEXT DEFAULT NULL;
|
ALTER TABLE note_revisions ADD blobId TEXT DEFAULT NULL;
|
||||||
|
|
||||||
|
CREATE INDEX IF NOT EXISTS IDX_notes_blobId on notes (blobId);
|
||||||
|
CREATE INDEX IF NOT EXISTS IDX_note_revisions_blobId on note_revisions (blobId);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
module.exports = () => {
|
module.exports = () => {
|
||||||
const sql = require("../../src/services/sql");
|
const sql = require('../../src/services/sql');
|
||||||
const utils = require("../../src/services/utils");
|
const utils = require('../../src/services/utils');
|
||||||
|
|
||||||
const existingBlobIds = new Set();
|
const existingBlobIds = new Set();
|
||||||
|
|
||||||
|
|||||||
@@ -21,5 +21,6 @@ CREATE INDEX `IDX_revisions_utcDateCreated` ON `revisions` (`utcDateCreated`);
|
|||||||
CREATE INDEX `IDX_revisions_utcDateLastEdited` ON `revisions` (`utcDateLastEdited`);
|
CREATE INDEX `IDX_revisions_utcDateLastEdited` ON `revisions` (`utcDateLastEdited`);
|
||||||
CREATE INDEX `IDX_revisions_dateCreated` ON `revisions` (`dateCreated`);
|
CREATE INDEX `IDX_revisions_dateCreated` ON `revisions` (`dateCreated`);
|
||||||
CREATE INDEX `IDX_revisions_dateLastEdited` ON `revisions` (`dateLastEdited`);
|
CREATE INDEX `IDX_revisions_dateLastEdited` ON `revisions` (`dateLastEdited`);
|
||||||
|
CREATE INDEX IF NOT EXISTS IDX_revisions_blobId on revisions (blobId);
|
||||||
|
|
||||||
UPDATE entity_changes SET entityName = 'revisions' WHERE entityName = 'note_revisions';
|
UPDATE entity_changes SET entityName = 'revisions' WHERE entityName = 'note_revisions';
|
||||||
|
|||||||
@@ -19,3 +19,5 @@ CREATE INDEX IDX_attachments_ownerId_role
|
|||||||
|
|
||||||
CREATE INDEX IDX_attachments_utcDateScheduledForErasureSince
|
CREATE INDEX IDX_attachments_utcDateScheduledForErasureSince
|
||||||
on attachments (utcDateScheduledForErasureSince);
|
on attachments (utcDateScheduledForErasureSince);
|
||||||
|
|
||||||
|
CREATE INDEX IF NOT EXISTS IDX_attachments_blobId on attachments (blobId);
|
||||||
|
|||||||
@@ -1,15 +1,19 @@
|
|||||||
module.exports = () => {
|
module.exports = () => {
|
||||||
const beccaLoader = require("../../src/becca/becca_loader");
|
const beccaLoader = require('../../src/becca/becca_loader');
|
||||||
const becca = require("../../src/becca/becca");
|
const becca = require('../../src/becca/becca');
|
||||||
const cls = require("../../src/services/cls");
|
const cls = require('../../src/services/cls');
|
||||||
const log = require("../../src/services/log");
|
const log = require('../../src/services/log');
|
||||||
|
const sql = require('../../src/services/sql');
|
||||||
|
|
||||||
cls.init(() => {
|
cls.init(() => {
|
||||||
|
// emergency disabling of image compression since it appears to make problems in migration to 0.61
|
||||||
|
sql.execute(`UPDATE options SET value = 'false' WHERE name = 'compressImages'`);
|
||||||
|
|
||||||
beccaLoader.load();
|
beccaLoader.load();
|
||||||
|
|
||||||
for (const note of Object.values(becca.notes)) {
|
for (const note of Object.values(becca.notes)) {
|
||||||
try {
|
try {
|
||||||
const attachment = note.convertToParentAttachment({autoConversion: true});
|
const attachment = note.convertToParentAttachment({ autoConversion: true });
|
||||||
|
|
||||||
if (attachment) {
|
if (attachment) {
|
||||||
log.info(`Auto-converted note '${note.noteId}' into attachment '${attachment.attachmentId}'.`);
|
log.info(`Auto-converted note '${note.noteId}' into attachment '${attachment.attachmentId}'.`);
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user