Compare commits
823 Commits
v0.91.6
...
v0.92.2-be
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8390807212 | ||
|
|
60da367570 | ||
|
|
36b0970835 | ||
|
|
3bea6af20e | ||
|
|
3c83112240 | ||
|
|
4e876ed24d | ||
|
|
94ce01bbc2 | ||
|
|
411e3dfa0e | ||
|
|
a1bfc6aae7 | ||
|
|
97bc103e76 | ||
|
|
9da1f55409 | ||
|
|
017fba518d | ||
|
|
63584c153c | ||
|
|
a4a2e55415 | ||
|
|
4a1691ac31 | ||
|
|
5a8d5c59f5 | ||
|
|
a9cebe312f | ||
|
|
43f79ca813 | ||
|
|
5c1db3cab2 | ||
|
|
bc4d820cb0 | ||
|
|
f4e6edd19e | ||
|
|
530340f753 | ||
|
|
fcc1068b06 | ||
|
|
6d19e315f4 | ||
|
|
7269c1b0aa | ||
|
|
8e69cf79a6 | ||
|
|
46f543ad54 | ||
|
|
38dbf6efcd | ||
|
|
8e68ddafd5 | ||
|
|
0c43b387ce | ||
|
|
8aa560eb82 | ||
|
|
3a2b8e9791 | ||
|
|
468b3b6027 | ||
|
|
f872073f65 | ||
|
|
ef4fc0a180 | ||
|
|
1d47df5f28 | ||
|
|
77264b5385 | ||
|
|
41e925dc94 | ||
|
|
789178061b | ||
|
|
8011969b9d | ||
|
|
9ab2fe85bd | ||
|
|
6c818427fc | ||
|
|
7dab171a0c | ||
|
|
c680c3476b | ||
|
|
bf0b6ce554 | ||
|
|
bedc61c3d0 | ||
|
|
c925ae5f15 | ||
|
|
77ee7f96c1 | ||
|
|
cadd78524c | ||
|
|
fd4f35e879 | ||
|
|
39f00bd568 | ||
|
|
ee2d4c6830 | ||
|
|
e93d47f664 | ||
|
|
0c88c4c3ee | ||
|
|
81bdd57398 | ||
|
|
fe5182ebc6 | ||
|
|
42d46bdb72 | ||
|
|
710cf68c06 | ||
|
|
300bb561bb | ||
|
|
96961898ca | ||
|
|
1520913686 | ||
|
|
6fae7a98f5 | ||
|
|
57dc168c26 | ||
|
|
946d9aee40 | ||
|
|
16b16927ef | ||
|
|
c2e4def523 | ||
|
|
1e11625f14 | ||
|
|
5495677fc2 | ||
|
|
2cefdf8b9f | ||
|
|
57b3035559 | ||
|
|
4f84ad8b81 | ||
|
|
1626767f30 | ||
|
|
91003af092 | ||
|
|
860de346a7 | ||
|
|
324a3d0d8b | ||
|
|
f9e4ae7210 | ||
|
|
bdd6395a76 | ||
|
|
1c118f2aa9 | ||
|
|
4010cb2789 | ||
|
|
f83beafd76 | ||
|
|
366264f3a9 | ||
|
|
ba91ed1855 | ||
|
|
2734e230ab | ||
|
|
ca1d5207d8 | ||
|
|
f6b6b2e740 | ||
|
|
c255af67c9 | ||
|
|
34b4e6d069 | ||
|
|
4e01534d76 | ||
|
|
fa05f15753 | ||
|
|
68c7df797d | ||
|
|
587a051430 | ||
|
|
04a6175630 | ||
|
|
bf6c5dfb20 | ||
|
|
19816493d6 | ||
|
|
cecde349b7 | ||
|
|
1a80a379dc | ||
|
|
739eaf9fc0 | ||
|
|
7f173b287a | ||
|
|
5a6c3ae426 | ||
|
|
6b5d905ebe | ||
|
|
61f2e35717 | ||
|
|
4a34d5b2df | ||
|
|
549917c1f1 | ||
|
|
4ed3a28e29 | ||
|
|
c261bf7f7a | ||
|
|
62c9e865f5 | ||
|
|
bd75a26803 | ||
|
|
9a1d26e129 | ||
|
|
bf41c54bd0 | ||
|
|
28148b32d2 | ||
|
|
eb08a976dd | ||
|
|
eeb99cf37c | ||
|
|
a0c2715980 | ||
|
|
e35ff07b9b | ||
|
|
ce1f418aa7 | ||
|
|
fbc4206908 | ||
|
|
bb4c3ae6ff | ||
|
|
0332ade13c | ||
|
|
2d968b8e9c | ||
|
|
fd2c65dcc0 | ||
|
|
aab35955bf | ||
|
|
bcb40b531f | ||
|
|
32bb43f9c1 | ||
|
|
86ab2d4008 | ||
|
|
657638ee54 | ||
|
|
50d37bbcb1 | ||
|
|
6706332be3 | ||
|
|
2ec2d784ec | ||
|
|
16caae191e | ||
|
|
c7d75b759c | ||
|
|
b837c57d06 | ||
|
|
ef3a75d58e | ||
|
|
59b474df35 | ||
|
|
fd47412d51 | ||
|
|
237f2ead73 | ||
|
|
558bee72e9 | ||
|
|
ed082f34d5 | ||
|
|
fabafeac86 | ||
|
|
4dd531e036 | ||
|
|
7bcfb1df96 | ||
|
|
e39bee23aa | ||
|
|
5550885206 | ||
|
|
d26d668741 | ||
|
|
fc8f805b28 | ||
|
|
ed8b8e50a4 | ||
|
|
bc66e98533 | ||
|
|
7af4e52766 | ||
|
|
152f3193d1 | ||
|
|
725a9fc333 | ||
|
|
ccbed7bbc3 | ||
|
|
10ba467202 | ||
|
|
793b0c9fe8 | ||
|
|
35a3d326f7 | ||
|
|
f672054441 | ||
|
|
e0e530b219 | ||
|
|
c0714a92d5 | ||
|
|
114a70b442 | ||
|
|
169b2269b1 | ||
|
|
e73ea36161 | ||
|
|
c17d10114f | ||
|
|
5677be2dd5 | ||
|
|
fbacb5bb71 | ||
|
|
630eb5ac8d | ||
|
|
a532ae6426 | ||
|
|
dc0ac4daa2 | ||
|
|
753da46935 | ||
|
|
569ed0868d | ||
|
|
324233be50 | ||
|
|
135f3d913a | ||
|
|
ee5cc18ef2 | ||
|
|
6d3325766d | ||
|
|
eff93d8e27 | ||
|
|
952ec516ee | ||
|
|
a8f9403990 | ||
|
|
aa5c69d97a | ||
|
|
b524abb883 | ||
|
|
f8c3587717 | ||
|
|
9d9b45cafb | ||
|
|
0bcabacd3a | ||
|
|
03282e12b7 | ||
|
|
dd4f8a8c27 | ||
|
|
660a393ca6 | ||
|
|
22c8cf3bee | ||
|
|
e71f0cb091 | ||
|
|
23cbc82708 | ||
|
|
1b4281cf77 | ||
|
|
a8509d8b1d | ||
|
|
10b2d19710 | ||
|
|
8111352300 | ||
|
|
64b446315d | ||
|
|
4dc2803cc6 | ||
|
|
557e4cdfea | ||
|
|
fd22d05d9b | ||
|
|
462a2713a2 | ||
|
|
68ccd23540 | ||
|
|
11a9dfd693 | ||
|
|
fc77f56516 | ||
|
|
ecb2c53c6f | ||
|
|
9299f90b85 | ||
|
|
81d5d16e1a | ||
|
|
2fe6881d73 | ||
|
|
552f87e2b3 | ||
|
|
689af591d1 | ||
|
|
ab2a7a6c4a | ||
|
|
a716d97e83 | ||
|
|
9f18eb55cb | ||
|
|
2cb27d4b03 | ||
|
|
9d7f1a2d71 | ||
|
|
be39668488 | ||
|
|
137aa93451 | ||
|
|
ab7457cf90 | ||
|
|
9221932abb | ||
|
|
1ad8c6b1cb | ||
|
|
84429e6e90 | ||
|
|
e829abbad3 | ||
|
|
2c80607bfd | ||
|
|
e8f0af8954 | ||
|
|
5b5fd77ca8 | ||
|
|
f93eef28f3 | ||
|
|
5c81627112 | ||
|
|
568a84f5d2 | ||
|
|
70d6d375f9 | ||
|
|
a115214070 | ||
|
|
0e18c405d8 | ||
|
|
e89d1b2413 | ||
|
|
21d18b1bdf | ||
|
|
0cace7f3f9 | ||
|
|
218a889725 | ||
|
|
ae41555b51 | ||
|
|
5f5d7b5432 | ||
|
|
d23734dd3f | ||
|
|
4f6085a1a4 | ||
|
|
9cddb1deac | ||
|
|
47002aa95a | ||
|
|
d2e8f946a0 | ||
|
|
688eb4d93f | ||
|
|
58eaf5eb5b | ||
|
|
a30d361b1d | ||
|
|
0145636fc5 | ||
|
|
06890585d2 | ||
|
|
3d320308c9 | ||
|
|
325431f050 | ||
|
|
35f9af15e5 | ||
|
|
4dfce746e9 | ||
|
|
0f0ebed78a | ||
|
|
469519f5df | ||
|
|
7b062badf0 | ||
|
|
f3dda940ec | ||
|
|
786f3e8d40 | ||
|
|
4592d6750b | ||
|
|
e2bbee8e16 | ||
|
|
27168b0dc5 | ||
|
|
e347cdda36 | ||
|
|
283482caa5 | ||
|
|
27b825e511 | ||
|
|
4b9667b756 | ||
|
|
e79c742d56 | ||
|
|
7ffece36f0 | ||
|
|
eecbfd0206 | ||
|
|
bfd894b5eb | ||
|
|
508908ded8 | ||
|
|
4d280f37ea | ||
|
|
cc74164b94 | ||
|
|
3f4458ea2f | ||
|
|
030e3cb805 | ||
|
|
6e17346768 | ||
|
|
4b597c5d2c | ||
|
|
e2cd875c03 | ||
|
|
8f6376e537 | ||
|
|
be4b74e791 | ||
|
|
4ed71f30f2 | ||
|
|
b692c00b8d | ||
|
|
cab0a5e41f | ||
|
|
201663d9ec | ||
|
|
38215c46ae | ||
|
|
2a740781cb | ||
|
|
04827c0ce1 | ||
|
|
4e23b5193d | ||
|
|
53576f5578 | ||
|
|
010783102a | ||
|
|
e7f5d1d280 | ||
|
|
69a6739d1f | ||
|
|
75afdbe093 | ||
|
|
cb7b25f054 | ||
|
|
9c4aa4f220 | ||
|
|
fc1e5ce23b | ||
|
|
faabec5360 | ||
|
|
202bb9e126 | ||
|
|
2f00839f52 | ||
|
|
d8962393af | ||
|
|
d9e39fa792 | ||
|
|
0ca9809457 | ||
|
|
4d0969da0a | ||
|
|
f517e4a37a | ||
|
|
0d26446262 | ||
|
|
aad38fdd21 | ||
|
|
2ac5e860b1 | ||
|
|
bd5232ed14 | ||
|
|
aafd905c72 | ||
|
|
11e2dcfc64 | ||
|
|
44811f4f4b | ||
|
|
13f7129717 | ||
|
|
b69641c0e9 | ||
|
|
8b9b843c2d | ||
|
|
a5cb78c5ec | ||
|
|
8b066b1fc8 | ||
|
|
2bb79c4209 | ||
|
|
b1bf6931f2 | ||
|
|
e3b7ae018f | ||
|
|
d7399f6bb5 | ||
|
|
d0399c173e | ||
|
|
905983e794 | ||
|
|
5390b97730 | ||
|
|
c8f5f8dfcc | ||
|
|
62f8f8f1a7 | ||
|
|
b6d73df92e | ||
|
|
9c86a03acc | ||
|
|
a600568ab8 | ||
|
|
3c8723a404 | ||
|
|
1e95135720 | ||
|
|
022f2b6e62 | ||
|
|
4160ff2a8b | ||
|
|
d7e134d18e | ||
|
|
b9aa976068 | ||
|
|
df47198616 | ||
|
|
6c4c9785ff | ||
|
|
f657b9dec1 | ||
|
|
c004adfdff | ||
|
|
57a34e5c02 | ||
|
|
7083b57ce4 | ||
|
|
316e239a3c | ||
|
|
5632932873 | ||
|
|
3ce7fef64b | ||
|
|
d859f50c98 | ||
|
|
18f5f1b759 | ||
|
|
72fe367988 | ||
|
|
48d4093274 | ||
|
|
2d1381b4f8 | ||
|
|
5d019137fa | ||
|
|
c79651add8 | ||
|
|
b6a9df981a | ||
|
|
27397be7f4 | ||
|
|
9d517988ce | ||
|
|
90ca4e923e | ||
|
|
659e551cdd | ||
|
|
2a90f4c6e9 | ||
|
|
4c44ce0ebe | ||
|
|
25cf16c101 | ||
|
|
3d531c9bca | ||
|
|
ab5a6c59b8 | ||
|
|
1bf2f10c98 | ||
|
|
f5b0c3b68b | ||
|
|
bf342f7bcf | ||
|
|
c98df4d6c2 | ||
|
|
1bc70e9fed | ||
|
|
6fcd14c23e | ||
|
|
7b8c4d2179 | ||
|
|
f50f767e79 | ||
|
|
a2995ef267 | ||
|
|
f8f1e537db | ||
|
|
96dc063b50 | ||
|
|
303cf65020 | ||
|
|
89db97e97d | ||
|
|
57c9e0477e | ||
|
|
7b36040b26 | ||
|
|
914a731094 | ||
|
|
ab7fc8871a | ||
|
|
a4021e94ad | ||
|
|
777e504a72 | ||
|
|
e063eb9ac1 | ||
|
|
2db3765bd4 | ||
|
|
61a2b2cc3a | ||
|
|
592e58099d | ||
|
|
45ab9d4395 | ||
|
|
9ff8b53ae6 | ||
|
|
8f45fb3c40 | ||
|
|
a1c97142a8 | ||
|
|
7f314d2d75 | ||
|
|
61b7d887cc | ||
|
|
172eb8a529 | ||
|
|
02c08e79ae | ||
|
|
94d1dcd99b | ||
|
|
1bfce1c8ed | ||
|
|
9f7a218772 | ||
|
|
f7397dc2f1 | ||
|
|
f12aed9ac0 | ||
|
|
50dcc92307 | ||
|
|
5552db034b | ||
|
|
cecd7eccad | ||
|
|
0138776a72 | ||
|
|
35207b8df0 | ||
|
|
0dbd136b48 | ||
|
|
02d16d0125 | ||
|
|
f77a29d7fe | ||
|
|
9d097a0ee7 | ||
|
|
c3c5ab18ef | ||
|
|
4463f215d8 | ||
|
|
d3b55932a6 | ||
|
|
2c5fb7edee | ||
|
|
c087d3c331 | ||
|
|
a98ed6cd29 | ||
|
|
c68cc70f76 | ||
|
|
97b7033959 | ||
|
|
56d36c6c11 | ||
|
|
816b0da8ba | ||
|
|
f7bf2fe614 | ||
|
|
db48e3a987 | ||
|
|
8cf6a4bec7 | ||
|
|
47e2100920 | ||
|
|
f38f9e640b | ||
|
|
7c721c4aaa | ||
|
|
1ec2b8b145 | ||
|
|
1a89a0989d | ||
|
|
4bf8cdfc39 | ||
|
|
7753905df9 | ||
|
|
399fd481ba | ||
|
|
e288272b22 | ||
|
|
ead3229c1e | ||
|
|
f2021f8ca1 | ||
|
|
e1850281e5 | ||
|
|
919a977643 | ||
|
|
48af3e9cf5 | ||
|
|
9ac7369df4 | ||
|
|
acb858bc29 | ||
|
|
a767ee3d2c | ||
|
|
5e62f4999d | ||
|
|
5d845a81f8 | ||
|
|
97cd79e083 | ||
|
|
2ddac39b65 | ||
|
|
93ee8ea3af | ||
|
|
746e8ac5ea | ||
|
|
e007840d9d | ||
|
|
c964f61155 | ||
|
|
8ca00c2138 | ||
|
|
ef0431fc58 | ||
|
|
b4929d772a | ||
|
|
cba504fb24 | ||
|
|
e4d49cc45d | ||
|
|
cd35215819 | ||
|
|
7d2ace92eb | ||
|
|
0dcd2718c8 | ||
|
|
09ae998437 | ||
|
|
f628114923 | ||
|
|
5ab455adf2 | ||
|
|
4c1aeaca93 | ||
|
|
57bf142c4c | ||
|
|
abf93dc11d | ||
|
|
e356a34f0d | ||
|
|
91073e5e70 | ||
|
|
2e1b2004dc | ||
|
|
b84b7e1cdf | ||
|
|
5173e37d8f | ||
|
|
7fa0ad336e | ||
|
|
780c7377de | ||
|
|
fe85e1e16c | ||
|
|
7590c1da24 | ||
|
|
803f59260d | ||
|
|
856a8a754e | ||
|
|
e050efd1bd | ||
|
|
62099abb29 | ||
|
|
2b83470de6 | ||
|
|
e0862ce8f3 | ||
|
|
0c1185df33 | ||
|
|
ddc6ac4590 | ||
|
|
0d62493b77 | ||
|
|
a8050c9bf8 | ||
|
|
d080c763f4 | ||
|
|
36b138655c | ||
|
|
d9f37dfc19 | ||
|
|
c6787a9cf2 | ||
|
|
b851287100 | ||
|
|
8ad8041689 | ||
|
|
5d3d9162cb | ||
|
|
a9d667e5a9 | ||
|
|
d847eab697 | ||
|
|
51cbe12866 | ||
|
|
13239500f9 | ||
|
|
bc82cdbd01 | ||
|
|
ca10d94acb | ||
|
|
880c1537d4 | ||
|
|
b818320e43 | ||
|
|
3fb60b64c0 | ||
|
|
0dfd01858b | ||
|
|
6ae143cc38 | ||
|
|
711ab84557 | ||
|
|
cfdb561bf6 | ||
|
|
ddb42bfe88 | ||
|
|
836bbba7fe | ||
|
|
bfdb69292c | ||
|
|
f9082fa812 | ||
|
|
688b5317c1 | ||
|
|
7514e2348c | ||
|
|
f3a0965312 | ||
|
|
dfc6eb8523 | ||
|
|
892734bce3 | ||
|
|
0c35714801 | ||
|
|
67b46018a2 | ||
|
|
a3d3f9f231 | ||
|
|
e1ac3e8451 | ||
|
|
a0f6534cc9 | ||
|
|
902ee74b27 | ||
|
|
ce45309818 | ||
|
|
0af08c2a7b | ||
|
|
e126d7be34 | ||
|
|
d908c9044b | ||
|
|
6facc3d05c | ||
|
|
805405484e | ||
|
|
90732a5324 | ||
|
|
5376abac0b | ||
|
|
caf613a4ef | ||
|
|
404c53ddcd | ||
|
|
4631298ad0 | ||
|
|
6953928f7a | ||
|
|
c649f473b4 | ||
|
|
2b5f37e19d | ||
|
|
4efc86b9a3 | ||
|
|
59fdc7d048 | ||
|
|
16cc4fadd7 | ||
|
|
631d46028c | ||
|
|
766473c291 | ||
|
|
c9bfd07722 | ||
|
|
664b1e32a6 | ||
|
|
6f1f728c1b | ||
|
|
3ec24231f2 | ||
|
|
4dafb47a36 | ||
|
|
8a51f05bf4 | ||
|
|
9a84dec222 | ||
|
|
c832eed0d7 | ||
|
|
0ce3ae9476 | ||
|
|
e3c7a72eee | ||
|
|
1cd49130dd | ||
|
|
aa446f7bd6 | ||
|
|
528fe1904c | ||
|
|
7d81c65e8e | ||
|
|
ccbd47e03d | ||
|
|
c32778eb65 | ||
|
|
61e56023d4 | ||
|
|
e2c0c6ef92 | ||
|
|
b2bbf9cc5b | ||
|
|
868ca2d982 | ||
|
|
363360f0d5 | ||
|
|
64654290be | ||
|
|
512440684e | ||
|
|
d0317f4bb6 | ||
|
|
d901a0f787 | ||
|
|
3796818a78 | ||
|
|
ff0514a7dc | ||
|
|
e41a02893f | ||
|
|
aca0588b26 | ||
|
|
989918efe6 | ||
|
|
b298f4acea | ||
|
|
45ddafba6d | ||
|
|
e24013adf5 | ||
|
|
122c1ad1ec | ||
|
|
02708d593f | ||
|
|
6215a21bae | ||
|
|
62dc11f9b8 | ||
|
|
bac529f1f1 | ||
|
|
ebaba4ff4a | ||
|
|
7c34a6178a | ||
|
|
61ee15cc01 | ||
|
|
94d53727d1 | ||
|
|
f1d641ac32 | ||
|
|
58e82fb0f8 | ||
|
|
acbd936654 | ||
|
|
5afddb4ecc | ||
|
|
00bb7af5bd | ||
|
|
2fdac9b438 | ||
|
|
71cd35c25d | ||
|
|
ec95f62cd2 | ||
|
|
3911c0c22b | ||
|
|
6cd2a16155 | ||
|
|
9b775a142d | ||
|
|
120b8466ac | ||
|
|
65e593f3ff | ||
|
|
c84737b90e | ||
|
|
72a9004643 | ||
|
|
7a0199595d | ||
|
|
15881dfb6b | ||
|
|
211b557920 | ||
|
|
bd638b689f | ||
|
|
3eccdd5cff | ||
|
|
7702726012 | ||
|
|
ca496e1d12 | ||
|
|
6ac868555f | ||
|
|
2bb006d80e | ||
|
|
e3816c30c0 | ||
|
|
170bba1a89 | ||
|
|
b5ee642c2d | ||
|
|
16f62bdde9 | ||
|
|
fa655ea45e | ||
|
|
2659bd33e8 | ||
|
|
3cd02f6ceb | ||
|
|
f41138800f | ||
|
|
9a3a6f90ea | ||
|
|
eedad4170e | ||
|
|
f2cc98eeec | ||
|
|
8b8f0c289e | ||
|
|
9c4535bade | ||
|
|
dd12d7f314 | ||
|
|
02d4d011c3 | ||
|
|
6d6272e5b6 | ||
|
|
e710409134 | ||
|
|
08c32da0d2 | ||
|
|
13e72c5e0a | ||
|
|
5c904f100a | ||
|
|
4917296d96 | ||
|
|
e1795a0ad1 | ||
|
|
ab0c84a57e | ||
|
|
f0ba056bb7 | ||
|
|
d71e127828 | ||
|
|
72f0de6b78 | ||
|
|
9f2dd21865 | ||
|
|
a4ce2ddd5e | ||
|
|
6e5e6989ed | ||
|
|
46f28f4f09 | ||
|
|
65be2cf048 | ||
|
|
c3587ad536 | ||
|
|
c15e46bf25 | ||
|
|
b812e67794 | ||
|
|
fedaec6c79 | ||
|
|
29b1befd60 | ||
|
|
6ab9a3979d | ||
|
|
acb7098bb8 | ||
|
|
df1d479720 | ||
|
|
ef66d330ec | ||
|
|
9a8a27c02c | ||
|
|
9eeedc827c | ||
|
|
440dbfd4d4 | ||
|
|
3094b1779e | ||
|
|
5c20a6d5ee | ||
|
|
283b19c716 | ||
|
|
de5ffb591d | ||
|
|
81db681732 | ||
|
|
45cf0334f1 | ||
|
|
738436061c | ||
|
|
92123e1761 | ||
|
|
41c96fb202 | ||
|
|
9689222fd4 | ||
|
|
05a0acbdb5 | ||
|
|
33346e0cee | ||
|
|
03c1128a72 | ||
|
|
8546fe2333 | ||
|
|
e6f5321444 | ||
|
|
668cc7e1a4 | ||
|
|
a2f1d71754 | ||
|
|
2baf75d0c1 | ||
|
|
dcf164e2ff | ||
|
|
a1dfeb14e1 | ||
|
|
72991a5649 | ||
|
|
50514e2418 | ||
|
|
495fce7594 | ||
|
|
ddb277e8e5 | ||
|
|
6db51d648b | ||
|
|
c80bf48d13 | ||
|
|
0f2e50d265 | ||
|
|
e10256e5bd | ||
|
|
43ba49833d | ||
|
|
755774042e | ||
|
|
0acd3c621e | ||
|
|
0bf3f890a2 | ||
|
|
80ddc8b4ef | ||
|
|
54f9cf831d | ||
|
|
60d8bc8238 | ||
|
|
ebc523a0fd | ||
|
|
09bf48e5a4 | ||
|
|
ae4f012390 | ||
|
|
c1f8c8a0b9 | ||
|
|
4701edff4c | ||
|
|
736f329857 | ||
|
|
4bd9d32c74 | ||
|
|
839e8a4143 | ||
|
|
cd0c79e3d2 | ||
|
|
84edf0348f | ||
|
|
4b1cbca76d | ||
|
|
9e0d002704 | ||
|
|
c09ef76f87 | ||
|
|
b59f98d63b | ||
|
|
bd363dac93 | ||
|
|
81755d804b | ||
|
|
6ad19198c6 | ||
|
|
8e88645fd3 | ||
|
|
2cc7113c2c | ||
|
|
ac5f911d4f | ||
|
|
e20180014b | ||
|
|
719046e2ca | ||
|
|
f3a3906db7 | ||
|
|
658ce103fc | ||
|
|
bfadd36f3d | ||
|
|
d1a5d317ed | ||
|
|
3927548afb | ||
|
|
ae5a9df5cc | ||
|
|
3720ca6fc4 | ||
|
|
cd031336ab | ||
|
|
30b1da0f41 | ||
|
|
143217be88 | ||
|
|
84532d42ec | ||
|
|
d4965e8d41 | ||
|
|
08133dcf3d | ||
|
|
7813c896c3 | ||
|
|
508ce4c962 | ||
|
|
8ac1beaee7 | ||
|
|
edaf030b87 | ||
|
|
e029a3991a | ||
|
|
615218513a | ||
|
|
46573714a4 | ||
|
|
414a4d7b17 | ||
|
|
09c14f8663 | ||
|
|
0f7826d6d0 | ||
|
|
c5edfbc127 | ||
|
|
b56b42bea0 | ||
|
|
dbf004d673 | ||
|
|
e3dbe21c5a | ||
|
|
48b4f37f91 | ||
|
|
298634ceaa | ||
|
|
561c50706e | ||
|
|
4a5bf28f06 | ||
|
|
d201fe7a06 | ||
|
|
7dfba9f513 | ||
|
|
c06642ba1e | ||
|
|
d5d7c1565e | ||
|
|
b44df12148 | ||
|
|
c878a6d2fd | ||
|
|
77bbdc3857 | ||
|
|
0dd91ad737 | ||
|
|
c6bbc284aa | ||
|
|
e742bdf401 | ||
|
|
e270b0b587 | ||
|
|
076c9f4d96 | ||
|
|
e425f64616 | ||
|
|
f59515fe36 | ||
|
|
67904e16a8 | ||
|
|
9c847686a6 | ||
|
|
c8a556723c | ||
|
|
ac89c2cb65 | ||
|
|
9cfd01200a | ||
|
|
f2f0bf3e10 | ||
|
|
3311f4f01c | ||
|
|
b170c234ce | ||
|
|
349ae84c8e | ||
|
|
c3656e27c8 | ||
|
|
b27537a9c3 | ||
|
|
c26dd283fa | ||
|
|
ad06eaca5e | ||
|
|
a889170844 | ||
|
|
774249d6ad | ||
|
|
700598ed63 | ||
|
|
4988468103 | ||
|
|
0fed7842cf | ||
|
|
bd37055965 | ||
|
|
748162b997 | ||
|
|
092c288df2 | ||
|
|
818cc30650 | ||
|
|
13a1b42e12 | ||
|
|
5630a7b2e3 | ||
|
|
013b42bdd1 | ||
|
|
a110161b2e | ||
|
|
328c53b725 | ||
|
|
06d9b998de | ||
|
|
e6103bf11a | ||
|
|
726683078e | ||
|
|
52814030d8 | ||
|
|
e96b9f3251 | ||
|
|
e29389296d | ||
|
|
8718dafe88 | ||
|
|
2bfb253a2a | ||
|
|
7d88e43555 | ||
|
|
82074ea7eb | ||
|
|
16ea6186dd | ||
|
|
96b25b8e5e | ||
|
|
90afd01d1f | ||
|
|
dee221e18a | ||
|
|
2f5ac6d114 | ||
|
|
fa867cd75d | ||
|
|
97295e959b | ||
|
|
41ef47576d | ||
|
|
ed201ff9a4 | ||
|
|
b43c85157b | ||
|
|
03e7f4b991 | ||
|
|
d6cb2a3751 | ||
|
|
0f2fcebe40 | ||
|
|
f4d2c5a2d2 | ||
|
|
027649213a | ||
|
|
b0014de365 | ||
|
|
84c03c214e | ||
|
|
455bb38865 | ||
|
|
d4ef84e0b7 | ||
|
|
356c0570f3 | ||
|
|
7f78504223 | ||
|
|
ec0d7c0835 | ||
|
|
8bdc5c9fea | ||
|
|
039112f106 | ||
|
|
76b99a00f4 | ||
|
|
8f612f4683 | ||
|
|
5ad4092cb2 | ||
|
|
faa4a5fcd8 | ||
|
|
e8f6f68987 | ||
|
|
07dd8995b6 | ||
|
|
4c84bc724d | ||
|
|
2773d560b9 | ||
|
|
a2a9bee7eb | ||
|
|
398591fb1f | ||
|
|
fe539b1647 | ||
|
|
15dbaf441d | ||
|
|
edd39ad0db | ||
|
|
c2dbf0a463 | ||
|
|
896d7a383b | ||
|
|
a184d5bb26 | ||
|
|
0339d83434 | ||
|
|
f7efc033e1 | ||
|
|
cb65591004 | ||
|
|
40b95325dd | ||
|
|
99a6e65d15 | ||
|
|
9724b19cd2 | ||
|
|
707d406ee9 | ||
|
|
26e3c13575 | ||
|
|
f462e7f93b | ||
|
|
5dd7b2c049 | ||
|
|
9ea7b35e6a | ||
|
|
56fb70ab5e | ||
|
|
93e740cf36 | ||
|
|
c9bf752b1f | ||
|
|
0115ea8088 |
@@ -15,3 +15,9 @@ indent_size = 2
|
||||
indent_style = space
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[*.yml]
|
||||
indent_size = 2
|
||||
indent_style = space
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
48
.github/actions/build-electron/action.yml
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
inputs:
|
||||
os:
|
||||
description: "One of the supported platforms: macos, linux, windows"
|
||||
required: true
|
||||
arch:
|
||||
description: "The architecture to build for: x64, arm64"
|
||||
required: true
|
||||
extension:
|
||||
description: "Platform specific extensions to copy in the output: dmg, deb, rpm, exe"
|
||||
required: true
|
||||
runs:
|
||||
using: composite
|
||||
steps:
|
||||
- name: Set up Python for appdmg to be installed
|
||||
if: ${{ inputs.os == 'macos' }}
|
||||
shell: bash
|
||||
run: brew install python-setuptools
|
||||
- name: Install dependencies for RPM and Flatpak package building
|
||||
if: ${{ inputs.os == 'linux' }}
|
||||
shell: bash
|
||||
run: |
|
||||
sudo apt-get update && sudo apt-get install rpm flatpak-builder elfutils
|
||||
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
||||
FLATPAK_ARCH=$(if [[ ${{ inputs.arch }} = 'arm64' ]]; then echo 'aarch64'; else echo 'x86_64'; fi)
|
||||
FLATPAK_VERSION='24.08'
|
||||
flatpak install --user --no-deps --arch $FLATPAK_ARCH --assumeyes runtime/org.freedesktop.Platform/$FLATPAK_ARCH/$FLATPAK_VERSION runtime/org.freedesktop.Sdk/$FLATPAK_ARCH/$FLATPAK_VERSION org.electronjs.Electron2.BaseApp/$FLATPAK_ARCH/$FLATPAK_VERSION
|
||||
- name: Install dependencies
|
||||
shell: bash
|
||||
run: npm ci
|
||||
- name: Temporary Flatpak arm64 workaround till https://github.com/electron/forge/pull/3839 is merged
|
||||
if: ${{ inputs.os == 'linux' && inputs.arch == 'arm64' }}
|
||||
shell: bash
|
||||
run: sed -e "s/case 'armv7l'/case 'arm64'/g" -e "s/return 'arm'/return 'aarch64'/g" -i node_modules/@electron-forge/maker-flatpak/dist/MakerFlatpak.js
|
||||
- name: Update build info
|
||||
shell: bash
|
||||
run: npm run chore:update-build-info
|
||||
- name: Run electron-forge
|
||||
shell: bash
|
||||
run: npm run electron-forge:make -- --arch=${{ inputs.arch }}
|
||||
- name: Prepare artifacts
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir -p upload;
|
||||
for ext in ${{ inputs.extension }};
|
||||
do
|
||||
file=$(find out/make -name "*.$ext" -print -quit);
|
||||
cp "$file" "upload/TriliumNextNotes-${{ github.ref_name }}-${{ inputs.os }}-${{ inputs.arch }}.$ext";
|
||||
done
|
||||
31
.github/actions/build-server/action.yml
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
inputs:
|
||||
os:
|
||||
description: "One of the supported platforms: windows"
|
||||
required: true
|
||||
arch:
|
||||
description: "The architecture to build for: x64, arm64"
|
||||
required: true
|
||||
runs:
|
||||
using: composite
|
||||
steps:
|
||||
- name: Set up node & dependencies
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
cache: "npm"
|
||||
- name: Install dependencies
|
||||
shell: bash
|
||||
run: npm ci
|
||||
- name: Run Linux server build
|
||||
env:
|
||||
MATRIX_ARCH: ${{ inputs.arch }}
|
||||
shell: bash
|
||||
run: |
|
||||
npm run chore:update-build-info
|
||||
./bin/build-server.sh
|
||||
- name: Prepare artifacts
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir -p upload
|
||||
file=$(find dist -name '*.tar.xz' -print -quit)
|
||||
cp "$file" "upload/TriliumNextNotes-Server-${{ github.ref_name }}-${{ inputs.os }}-${{ inputs.arch }}.tar.xz"
|
||||
73
.github/workflows/main-docker.yml
vendored
@@ -33,7 +33,7 @@ jobs:
|
||||
steps:
|
||||
- name: Checkout the repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
|
||||
- name: Set IMAGE_NAME to lowercase
|
||||
run: echo "IMAGE_NAME=${IMAGE_NAME,,}" >> $GITHUB_ENV
|
||||
- name: Set TEST_TAG to lowercase
|
||||
@@ -47,16 +47,16 @@ jobs:
|
||||
with:
|
||||
node-version: 20
|
||||
cache: "npm"
|
||||
|
||||
|
||||
- name: Install npm dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Install Playwright Browsers
|
||||
run: npx playwright install --with-deps
|
||||
|
||||
|
||||
- name: Run the TypeScript build
|
||||
run: npx tsc
|
||||
|
||||
|
||||
- name: Create server-package.json
|
||||
run: cat package.json | grep -v electron > server-package.json
|
||||
|
||||
@@ -69,12 +69,12 @@ jobs:
|
||||
tags: ${{ env.TEST_TAG }}
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
|
||||
|
||||
- name: Validate container run output
|
||||
run: |
|
||||
CONTAINER_ID=$(docker run -d --log-driver=journald --rm --network=host -e TRILIUM_PORT=8082 --volume ./integration-tests/db:/home/node/trilium-data --name trilium_local ${{ env.TEST_TAG }})
|
||||
echo "Container ID: $CONTAINER_ID"
|
||||
|
||||
|
||||
- name: Wait for the healthchecks to pass
|
||||
uses: stringbean/docker-healthcheck-action@v3
|
||||
with:
|
||||
@@ -82,7 +82,7 @@ jobs:
|
||||
wait-time: 50
|
||||
require-status: running
|
||||
require-healthy: true
|
||||
|
||||
|
||||
- name: Run Playwright tests
|
||||
run: TRILIUM_DOCKER=1 npx playwright test
|
||||
- uses: actions/upload-artifact@v4
|
||||
@@ -100,7 +100,20 @@ jobs:
|
||||
|
||||
build:
|
||||
name: Build Docker images
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- dockerfile: Dockerfile.alpine
|
||||
platform: linux/amd64
|
||||
image: ubuntu-latest
|
||||
- dockerfile: Dockerfile
|
||||
platform: linux/arm64
|
||||
image: ubuntu-24.04-arm
|
||||
- dockerfile: Dockerfile
|
||||
platform: linux/arm/v7
|
||||
image: ubuntu-24.04-arm
|
||||
runs-on: ${{ matrix.image }}
|
||||
needs:
|
||||
- test_docker
|
||||
permissions:
|
||||
@@ -108,16 +121,6 @@ jobs:
|
||||
packages: write
|
||||
attestations: write
|
||||
id-token: write
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- dockerfile: Dockerfile.alpine
|
||||
platform: linux/amd64
|
||||
- dockerfile: Dockerfile
|
||||
platform: linux/arm64
|
||||
- dockerfile: Dockerfile
|
||||
platform: linux/arm/v7
|
||||
steps:
|
||||
- name: Prepare
|
||||
run: |
|
||||
@@ -144,13 +147,13 @@ jobs:
|
||||
type=sha
|
||||
flavor: |
|
||||
latest=false
|
||||
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
|
||||
|
||||
- name: Set up node & dependencies
|
||||
uses: actions/setup-node@v4
|
||||
@@ -169,14 +172,14 @@ jobs:
|
||||
registry: ${{ env.GHCR_REGISTRY }}
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
|
||||
- name: Login to DockerHub
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ${{ env.DOCKERHUB_REGISTRY }}
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
|
||||
|
||||
- name: Build and push by digest
|
||||
id: build
|
||||
uses: docker/build-push-action@v6
|
||||
@@ -186,13 +189,13 @@ jobs:
|
||||
platforms: ${{ matrix.platform }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
outputs: type=image,name=${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }},push-by-digest=true,name-canonical=true,push=true
|
||||
|
||||
|
||||
- name: Export digest
|
||||
run: |
|
||||
mkdir -p /tmp/digests
|
||||
digest="${{ steps.build.outputs.digest }}"
|
||||
touch "/tmp/digests/${digest#sha256:}"
|
||||
|
||||
|
||||
- name: Upload digest
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
@@ -220,7 +223,7 @@ jobs:
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
|
||||
- name: Docker meta
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
@@ -237,14 +240,14 @@ jobs:
|
||||
registry: ${{ env.GHCR_REGISTRY }}
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
|
||||
- name: Login to DockerHub
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ${{ env.DOCKERHUB_REGISTRY }}
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
|
||||
|
||||
- name: Create manifest list and push
|
||||
working-directory: /tmp/digests
|
||||
run: |
|
||||
@@ -255,7 +258,7 @@ jobs:
|
||||
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
|
||||
-t ${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}:${REF_NAME} \
|
||||
$(printf '${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}@sha256:%s ' *)
|
||||
|
||||
|
||||
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
|
||||
-t ${{ env.DOCKERHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:${REF_NAME} \
|
||||
$(printf '${{ env.DOCKERHUB_REGISTRY }}/${{ env.IMAGE_NAME }}@sha256:%s ' *)
|
||||
@@ -267,25 +270,25 @@ jobs:
|
||||
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
|
||||
-t ${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}:stable \
|
||||
$(printf '${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}@sha256:%s ' *)
|
||||
|
||||
|
||||
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
|
||||
-t ${{ env.DOCKERHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:stable \
|
||||
$(printf '${{ env.DOCKERHUB_REGISTRY }}/${{ env.IMAGE_NAME }}@sha256:%s ' *)
|
||||
|
||||
|
||||
# Small delay to ensure stable tag is fully propagated
|
||||
sleep 5
|
||||
|
||||
|
||||
# Now update latest tags
|
||||
docker buildx imagetools create \
|
||||
-t ${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}:latest \
|
||||
${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}:stable
|
||||
|
||||
|
||||
docker buildx imagetools create \
|
||||
-t ${{ env.DOCKERHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:latest \
|
||||
${{ env.DOCKERHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:stable
|
||||
|
||||
|
||||
fi
|
||||
|
||||
|
||||
- name: Inspect image
|
||||
run: |
|
||||
docker buildx imagetools inspect ${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.meta.outputs.version }}
|
||||
|
||||
60
.github/workflows/main.yml
vendored
@@ -7,7 +7,7 @@ on:
|
||||
paths-ignore:
|
||||
- "docs/**"
|
||||
- ".github/workflows/main-docker.yml"
|
||||
workflow_dispatch:
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
@@ -23,13 +23,13 @@ jobs:
|
||||
os:
|
||||
- name: macos
|
||||
image: macos-latest
|
||||
extension: dmg
|
||||
extension: [dmg, zip]
|
||||
- name: linux
|
||||
image: ubuntu-latest
|
||||
extension: deb
|
||||
extension: [deb, rpm, zip, flatpak]
|
||||
- name: windows
|
||||
image: windows-latest
|
||||
extension: exe
|
||||
extension: [exe, zip]
|
||||
runs-on: ${{ matrix.os.image }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
@@ -37,31 +37,12 @@ jobs:
|
||||
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: Run the build
|
||||
uses: ./.github/actions/build-electron
|
||||
with:
|
||||
os: ${{ matrix.os.name }}
|
||||
arch: ${{ matrix.arch }}
|
||||
extension: ${{ matrix.os.extension }}
|
||||
- name: Publish artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
@@ -72,6 +53,7 @@ jobs:
|
||||
with:
|
||||
name: TriliumNextNotes ${{ matrix.os.name }} ${{ matrix.arch }}.${{matrix.os.extension}}
|
||||
path: upload/*.${{ matrix.os.extension }}
|
||||
|
||||
build_linux_server:
|
||||
name: Build Linux Server
|
||||
strategy:
|
||||
@@ -86,24 +68,10 @@ jobs:
|
||||
runs-on: ${{ matrix.runs-on }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Set up node & dependencies
|
||||
uses: actions/setup-node@v4
|
||||
- name: Run the build
|
||||
uses: ./.github/actions/build-server
|
||||
with:
|
||||
node-version: 20
|
||||
cache: "npm"
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
- name: Run Linux server build
|
||||
env:
|
||||
MATRIX_ARCH: ${{ matrix.arch }}
|
||||
run: |
|
||||
npm run update-build-info
|
||||
./bin/build-server.sh
|
||||
- name: Prepare artifacts
|
||||
run: |
|
||||
mkdir -p upload
|
||||
file=$(find dist -name '*.tar.xz' -print -quit)
|
||||
cp "$file" "upload/TriliumNextNotes-linux-${{ matrix.arch }}-${{ github.ref_name }}.tar.xz"
|
||||
arch: ${{ matrix.arch }}
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: TriliumNextNotes linux server ${{ matrix.arch }}
|
||||
|
||||
121
.github/workflows/nightly.yml
vendored
@@ -12,7 +12,7 @@ permissions:
|
||||
contents: write
|
||||
jobs:
|
||||
nightly-electron:
|
||||
name: Deploy nightly
|
||||
name: Deploy nightly
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
@@ -20,76 +20,43 @@ jobs:
|
||||
os:
|
||||
- name: macos
|
||||
image: macos-latest
|
||||
extension: dmg
|
||||
extension: [dmg, zip]
|
||||
- name: linux
|
||||
image: ubuntu-latest
|
||||
extension: deb
|
||||
extension: [deb, rpm, zip, flatpak]
|
||||
- name: windows
|
||||
image: windows-latest
|
||||
extension: exe
|
||||
runs-on: ${{ matrix.os.image }}
|
||||
extension: [exe, zip]
|
||||
runs-on: ${{ matrix.os.image }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Set up node & dependencies
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
- name: Set up Python for appdmg to be installed
|
||||
if: ${{ matrix.os.name == 'macos' }}
|
||||
run: brew install python-setuptools
|
||||
- name: Install dependencies
|
||||
shell: bash
|
||||
run: npm ci
|
||||
- name: Update build info
|
||||
run: npm run update-build-info
|
||||
- name: Update nightly version
|
||||
run: npm run ci-update-nightly-version
|
||||
- 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 }}.zip"
|
||||
file=$(find out/make -name '*.${{ matrix.os.extension }}' -print -quit)
|
||||
cp "$file" "upload/TriliumNextNotes-${{ 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-${{ 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-${{ matrix.os.name }}-${{ matrix.arch }}.${{ matrix.os.extension }}"
|
||||
- name: Publish artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
run: npm run chore:ci-update-nightly-version
|
||||
- name: Run the build
|
||||
uses: ./.github/actions/build-electron
|
||||
with:
|
||||
name: TriliumNextNotes ${{ matrix.os.name }} ${{ matrix.arch }}
|
||||
path: upload/*.zip
|
||||
overwrite: true
|
||||
- name: Publish installer artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: TriliumNextNotes ${{ matrix.os.name }} ${{ matrix.arch }}
|
||||
path: upload/*.${{ matrix.os.extension }}
|
||||
overwrite: true
|
||||
os: ${{ matrix.os.name }}
|
||||
arch: ${{ matrix.arch }}
|
||||
extension: ${{ join(matrix.os.extension, ' ') }}
|
||||
|
||||
- name: Deploy release
|
||||
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||
- name: Publish release
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
upload_url: ${{ env.GITHUB_UPLOAD_URL }}
|
||||
release_id: ${{ env.GITHUB_RELEASE_ID }}
|
||||
asset_path: upload/TriliumNextNotes-${{ matrix.os.name }}-${{ matrix.arch }}.zip # path to archive to upload
|
||||
asset_name: TriliumNextNotes-${{ matrix.os.name }}-${{ matrix.arch }}-nightly.zip # name to upload the release as, use $$ to insert date (YYYYMMDD) and 6 letter commit hash
|
||||
asset_content_type: application/zip # required by GitHub API
|
||||
- name: Deploy installer release
|
||||
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||
with:
|
||||
upload_url: ${{ env.GITHUB_UPLOAD_URL }}
|
||||
release_id: ${{ env.GITHUB_RELEASE_ID }}
|
||||
asset_path: upload/TriliumNextNotes-${{ matrix.os.name }}-${{ matrix.arch }}.${{ matrix.os.extension }} # path to archive to upload
|
||||
asset_name: TriliumNextNotes-${{ matrix.os.name }}-${{ matrix.arch }}-nightly.${{ matrix.os.extension }} # name to upload the release as, use $$ to insert date (YYYYMMDD) and 6 letter commit hash
|
||||
asset_content_type: application/zip # required by GitHub API
|
||||
make_latest: false
|
||||
prerelease: true
|
||||
draft: false
|
||||
fail_on_unmatched_files: true
|
||||
files: upload/*.*
|
||||
tag_name: nightly
|
||||
name: Nightly Build
|
||||
|
||||
nightly-server:
|
||||
name: Deploy server nightly
|
||||
strategy:
|
||||
@@ -104,34 +71,20 @@ jobs:
|
||||
runs-on: ${{ matrix.runs-on }}
|
||||
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
|
||||
env:
|
||||
MATRIX_ARCH: ${{ matrix.arch }}
|
||||
run: |
|
||||
npm run update-build-info
|
||||
./bin/build-server.sh
|
||||
- name: Prepare artifacts
|
||||
run: |
|
||||
mkdir -p upload
|
||||
file=$(find dist -name '*.tar.xz' -print -quit)
|
||||
cp "$file" "upload/TriliumNextNotes-linux-${{ matrix.arch }}-${{ github.ref_name }}.tar.xz"
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: TriliumNextNotes linux server ${{ matrix.arch }}
|
||||
path: upload/TriliumNextNotes-linux-${{ matrix.arch }}-${{ github.ref_name }}.tar.xz
|
||||
|
||||
- name: Deploy release
|
||||
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||
- name: Run the build
|
||||
uses: ./.github/actions/build-server
|
||||
with:
|
||||
upload_url: ${{ env.GITHUB_UPLOAD_URL }}
|
||||
release_id: ${{ env.GITHUB_RELEASE_ID }}
|
||||
asset_path: upload/TriliumNextNotes-linux-x64-${{ github.ref_name }}.tar.xz # path to archive to upload
|
||||
asset_name: TriliumNextNotes-linux-x64-nightly.zip # name to upload the release as, use $$ to insert date (YYYYMMDD) and 6 letter commit hash
|
||||
asset_content_type: application/zip # required by GitHub API
|
||||
os: linux
|
||||
arch: ${{ matrix.arch }}
|
||||
|
||||
- name: Publish release
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
make_latest: false
|
||||
prerelease: true
|
||||
draft: false
|
||||
fail_on_unmatched_files: true
|
||||
files: upload/*.*
|
||||
tag_name: nightly
|
||||
name: Nightly Build
|
||||
|
||||
65
.github/workflows/release.yml
vendored
@@ -3,7 +3,7 @@ on:
|
||||
push:
|
||||
tags:
|
||||
- "v*"
|
||||
workflow_dispatch:
|
||||
workflow_dispatch:
|
||||
permissions:
|
||||
contents: write
|
||||
concurrency:
|
||||
@@ -20,13 +20,13 @@ jobs:
|
||||
os:
|
||||
- name: macos
|
||||
image: macos-latest
|
||||
extension: dmg
|
||||
extension: [dmg, zip]
|
||||
- name: linux
|
||||
image: ubuntu-latest
|
||||
extension: deb
|
||||
extension: [deb, rpm, zip, flatpak]
|
||||
- name: windows
|
||||
image: windows-latest
|
||||
extension: exe
|
||||
extension: [exe, zip]
|
||||
runs-on: ${{ matrix.os.image }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
@@ -34,37 +34,19 @@ jobs:
|
||||
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: Run the build
|
||||
uses: ./.github/actions/build-electron
|
||||
with:
|
||||
os: ${{ matrix.os.name }}
|
||||
arch: ${{ matrix.arch }}
|
||||
extension: ${{ join(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
|
||||
strategy:
|
||||
@@ -79,27 +61,16 @@ jobs:
|
||||
runs-on: ${{ matrix.runs-on }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Set up node & dependencies
|
||||
uses: actions/setup-node@v4
|
||||
|
||||
- name: Run the build
|
||||
uses: ./.github/actions/build-server
|
||||
with:
|
||||
node-version: 20
|
||||
cache: "npm"
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
- name: Run Linux server build
|
||||
env:
|
||||
MATRIX_ARCH: ${{ matrix.arch }}
|
||||
run: |
|
||||
npm run update-build-info
|
||||
./bin/build-server.sh
|
||||
- name: Prepare artifacts
|
||||
run: |
|
||||
mkdir -p upload
|
||||
file=$(find dist -name '*.tar.xz' -print -quit)
|
||||
cp "$file" "upload/TriliumNextNotes-linux-${{ matrix.arch }}-${{ github.ref_name }}.tar.xz"
|
||||
os: linux
|
||||
arch: ${{ matrix.arch }}
|
||||
|
||||
- name: Publish release
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
draft: true
|
||||
fail_on_unmatched_files: true
|
||||
files: upload/*.*
|
||||
files: upload/*.*
|
||||
|
||||
2
.gitignore
vendored
@@ -1,3 +1,4 @@
|
||||
.cache
|
||||
.DS_Store
|
||||
node_modules/
|
||||
dist/
|
||||
@@ -7,6 +8,7 @@ src/public/app-dist/
|
||||
npm-debug.log
|
||||
yarn-error.log
|
||||
po-*/
|
||||
.flatpak-builder/
|
||||
|
||||
*.db
|
||||
!integration-tests/db/document.db
|
||||
|
||||
@@ -4,7 +4,7 @@ image:
|
||||
tasks:
|
||||
- before: nvm install 20.15.1 && nvm use 20.15.1
|
||||
init: npm install
|
||||
command: npm run start-server
|
||||
command: npm run server:start
|
||||
|
||||
ports:
|
||||
- port: 8080
|
||||
|
||||
3
.vscode/settings.json
vendored
@@ -18,5 +18,6 @@
|
||||
"github-actions.workflows.pinned.workflows": [".github/workflows/nightly.yml"],
|
||||
"[css]": {
|
||||
"editor.defaultFormatter": "vscode.css-language-features"
|
||||
}
|
||||
},
|
||||
"npm.exclude": ["**/build", "**/dist", "**/out/**"]
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Build stage
|
||||
FROM node:22.13.1-bullseye-slim AS builder
|
||||
FROM node:22.14.0-bullseye-slim AS builder
|
||||
|
||||
# Configure build dependencies in a single layer
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
@@ -25,7 +25,7 @@ RUN cp -R build/src/* src/. && \
|
||||
cp build/docker_healthcheck.js . && \
|
||||
rm docker_healthcheck.ts && \
|
||||
npm install && \
|
||||
npm run webpack && \
|
||||
npm run build:webpack && \
|
||||
npm prune --omit=dev && \
|
||||
npm cache clean --force && \
|
||||
cp -r src/public/app/doc_notes src/public/app-dist/. && \
|
||||
@@ -36,7 +36,7 @@ RUN cp -R build/src/* src/. && \
|
||||
rm -r build
|
||||
|
||||
# Runtime stage
|
||||
FROM node:22.13.1-bullseye-slim
|
||||
FROM node:22.14.0-bullseye-slim
|
||||
|
||||
# Install only runtime dependencies
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Build stage
|
||||
FROM node:22.13.1-alpine AS builder
|
||||
FROM node:22.14.0-alpine AS builder
|
||||
|
||||
# Configure build dependencies
|
||||
RUN apk add --no-cache --virtual .build-dependencies \
|
||||
@@ -24,7 +24,7 @@ RUN cp -R build/src/* src/. && \
|
||||
cp build/docker_healthcheck.js . && \
|
||||
rm docker_healthcheck.ts && \
|
||||
npm install && \
|
||||
npm run webpack && \
|
||||
npm run build:webpack && \
|
||||
npm prune --omit=dev && \
|
||||
npm cache clean --force && \
|
||||
cp -r src/public/app/doc_notes src/public/app-dist/. && \
|
||||
@@ -35,7 +35,7 @@ RUN cp -R build/src/* src/. && \
|
||||
rm -r build
|
||||
|
||||
# Runtime stage
|
||||
FROM node:22.13.1-alpine
|
||||
FROM node:22.14.0-alpine
|
||||
|
||||
# Install runtime dependencies
|
||||
RUN apk add --no-cache su-exec shadow
|
||||
|
||||
@@ -78,7 +78,7 @@ Trilium 也提供 Flatpak:
|
||||
|
||||
```shell
|
||||
npm install
|
||||
npm run start-server
|
||||
npm run server:start
|
||||
```
|
||||
|
||||
## 👏 致谢
|
||||
|
||||
@@ -86,7 +86,7 @@ Clone localmente y ejecute
|
||||
|
||||
```shell
|
||||
npm install
|
||||
npm run start-server
|
||||
npm run server:start
|
||||
```
|
||||
|
||||
## 👏 Reconocimientos
|
||||
|
||||
@@ -73,7 +73,7 @@ Clona localmente ed esegui
|
||||
|
||||
```shell
|
||||
npm install
|
||||
npm run start-server
|
||||
npm run server:start
|
||||
```
|
||||
|
||||
## 👏 Riconoscimenti
|
||||
|
||||
@@ -54,7 +54,7 @@ Trilium は Flatpak としても提供されます:
|
||||
|
||||
```shell
|
||||
npm install
|
||||
npm run start-server
|
||||
npm run server:start
|
||||
```
|
||||
|
||||
## 📢 シャウトアウト
|
||||
|
||||
@@ -102,7 +102,7 @@ You can also read [Patterns of personal knowledge base](https://triliumnext.gith
|
||||
git clone https://github.com/TriliumNext/Notes.git
|
||||
cd Notes
|
||||
npm install
|
||||
npm run start-server
|
||||
npm run server:start
|
||||
```
|
||||
|
||||
### Documentation
|
||||
@@ -118,8 +118,10 @@ Head on over to our [Docs repo](https://github.com/TriliumNext/Docs)
|
||||
|
||||
## 🤝 Support
|
||||
|
||||
You can support the original Trilium developer using GitHub Sponsors, [PayPal](https://paypal.me/za4am) or Bitcoin (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2).
|
||||
Support for the TriliumNext organization will be possible in the near future.
|
||||
Support for the TriliumNext organization will be possible in the near future. For now, you can:
|
||||
- Support continued development on TriliumNext by supporting our developers: [eliandoran](https://github.com/sponsors/eliandoran) (See the [repository insights]([developers]([url](https://github.com/TriliumNext/Notes/graphs/contributors))) for a full list)
|
||||
- Show a token of gratitude to the original Trilium developer ([zadam](https://github.com/sponsors/zadam)) via [PayPal](https://paypal.me/za4am) or Bitcoin (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2).
|
||||
|
||||
|
||||
## 🔑 License
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ Trilium предоставляется в виде десктопного при
|
||||
|
||||
```shell
|
||||
npm install
|
||||
npm run start-server
|
||||
npm run server:start
|
||||
```
|
||||
|
||||
## 👏 Благодарности
|
||||
|
||||
@@ -7,9 +7,9 @@ const DEST_DIR_NODE_MODULES = path.join(DEST_DIR, "node_modules");
|
||||
|
||||
const VERBOSE = process.env.VERBOSE;
|
||||
|
||||
function log(...args) {
|
||||
function log(...args: any[]) {
|
||||
if (VERBOSE) {
|
||||
console.log(args);
|
||||
console.log(...args);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,12 @@ const copy = async () => {
|
||||
fs.copySync(path.join("build", srcFile), destFile, { recursive: true });
|
||||
}
|
||||
|
||||
const filesToCopy = ["config-sample.ini", "tsconfig.webpack.json"];
|
||||
const filesToCopy = [
|
||||
"config-sample.ini",
|
||||
"tsconfig.webpack.json",
|
||||
"./src/etapi/etapi.openapi.yaml",
|
||||
"./src/routes/api/openapi.json"
|
||||
];
|
||||
for (const file of filesToCopy) {
|
||||
log(`Copying ${file}`);
|
||||
await fs.copy(file, path.join(DEST_DIR, file));
|
||||
@@ -81,7 +86,6 @@ const copy = async () => {
|
||||
"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/",
|
||||
|
||||
@@ -23,7 +23,7 @@ rm -rf "$DIR"
|
||||
mkdir -pv "$DIR"
|
||||
|
||||
echo Webpack start
|
||||
npm run webpack
|
||||
npm run build:webpack
|
||||
echo Webpack finish
|
||||
|
||||
echo "Copying Trilium to build directory $DIR"
|
||||
|
||||
@@ -22,6 +22,10 @@ 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"
|
||||
|
||||
# Build dev icons (including tray)
|
||||
inkscape -w 16 -h 16 "../icon-purple.svg" -o "./png/16x16-dev.png"
|
||||
inkscape -w 32 -h 32 "../icon-purple.svg" -o "./png/32x32-dev.png"
|
||||
inkscape -w 256 -h 256 "../icon-purple.svg" -o "./png/256x256-dev.png"
|
||||
|
||||
# Build Mac .icns
|
||||
@@ -41,5 +45,8 @@ 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 Windows setup icon
|
||||
magick -background none "../icon-installer.svg" -define icon:auto-resize=16,32,48,64,128,256 "./win/setup.ico"
|
||||
|
||||
# Build Squirrel splash image
|
||||
magick "./png/256x256.png" -background "#ffffff" -gravity center -extent 640x480 "./win/setup-banner.gif"
|
||||
@@ -1,12 +1,17 @@
|
||||
[Desktop Entry]
|
||||
<% if (productName) { %>Name=<%= productName %>
|
||||
<% } %><% if (description) { %>Comment=<%= description %>
|
||||
<% } %><% if (genericName) { %>GenericName=<%= genericName %>
|
||||
<% } %><% if (name) { %>Exec=<%= name %> %U
|
||||
Icon=<%= name %>
|
||||
<% } %>Type=Application
|
||||
StartupNotify=true
|
||||
<% if (productName) { %>StartupWMClass=<%= productName %>
|
||||
<% } if (categories && categories.length) { %>Categories=<%= categories.join(';') %>;
|
||||
<% } %><% if (mimeType && mimeType.length) { %>MimeType=<%= mimeType.join(';') %>;
|
||||
<% } %>
|
||||
<%=
|
||||
Object.entries({
|
||||
"Name": productName,
|
||||
"Comment": description,
|
||||
"GenericName": genericName,
|
||||
"Exec": name ? `${name} %U` : undefined,
|
||||
"Icon": name,
|
||||
"Type": "Application",
|
||||
"StartupNotify": "true",
|
||||
"StartupWMClass": productName,
|
||||
"Categories": categories?.length ? `${categories.join(";")};` : undefined,
|
||||
"MimeType": mimeType?.length ? `${mimeType.join(";")};` : undefined
|
||||
})
|
||||
.map(line => line[1] ? line.join("=") : undefined)
|
||||
.filter(line => !!line)
|
||||
.join("\n")%>
|
||||
189
bin/generate-openapi.ts
Normal file
@@ -0,0 +1,189 @@
|
||||
import { fileURLToPath } from "url";
|
||||
import { dirname, join } from "path";
|
||||
import swaggerJsdoc from 'swagger-jsdoc';
|
||||
import fs from "fs";
|
||||
|
||||
/*
|
||||
* Usage: npm run generate-openapi | tail -n1 > x.json
|
||||
*
|
||||
* Inspect generated file by opening it in https://editor-next.swagger.io/
|
||||
*
|
||||
*/
|
||||
|
||||
const options = {
|
||||
definition: {
|
||||
openapi: '3.1.1',
|
||||
info: {
|
||||
title: 'Trilium Notes - Sync server API',
|
||||
version: '0.96.6',
|
||||
description: "This is the internal sync server API used by Trilium Notes / TriliumNext Notes.\n\n_If you're looking for the officially supported External Trilium API, see [here](https://triliumnext.github.io/Docs/Wiki/etapi.html)._\n\nThis page does not yet list all routes. For a full list, see the [route controller](https://github.com/TriliumNext/Notes/blob/v0.91.6/src/routes/routes.ts).",
|
||||
contact: {
|
||||
name: "TriliumNext issue tracker",
|
||||
url: "https://github.com/TriliumNext/Notes/issues",
|
||||
},
|
||||
license: {
|
||||
name: "GNU Free Documentation License 1.3 (or later)",
|
||||
url: "https://www.gnu.org/licenses/fdl-1.3",
|
||||
},
|
||||
},
|
||||
},
|
||||
apis: [
|
||||
// Put individual files here to have them ordered first.
|
||||
'./src/routes/api/setup.ts',
|
||||
// all other files
|
||||
'./src/routes/api/*.ts', './bin/generate-openapi.js'
|
||||
],
|
||||
};
|
||||
|
||||
const openapiSpecification = swaggerJsdoc(options);
|
||||
const scriptDir = dirname(fileURLToPath(import.meta.url));
|
||||
const outputPath = join(scriptDir, "..", "src", "routes", "api", "openapi.json");
|
||||
fs.writeFileSync(outputPath, JSON.stringify(openapiSpecification));
|
||||
console.log("Saved to ", outputPath);
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* tags:
|
||||
* - name: auth
|
||||
* description: Authentication
|
||||
* - name: sync
|
||||
* description: Synchronization
|
||||
* - name: data
|
||||
*/
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* components:
|
||||
* schemas:
|
||||
* Attribute:
|
||||
* type: object
|
||||
* properties:
|
||||
* attributeId:
|
||||
* type: string
|
||||
* example: "4G1DPrI58PAb"
|
||||
* noteId:
|
||||
* $ref: "#/components/schemas/NoteId"
|
||||
* type:
|
||||
* type: string
|
||||
* enum: ["attribute", "relation"]
|
||||
* name:
|
||||
* type: string
|
||||
* example: "internalLink"
|
||||
* value:
|
||||
* type: string
|
||||
* example: "hA8aHSpTRdZ6"
|
||||
* description: "If type = \"relation\", a note ID. Otherwise, the attribute content."
|
||||
* position:
|
||||
* type: integer
|
||||
* example: 20
|
||||
* isInheritable:
|
||||
* type: boolean
|
||||
* Blob:
|
||||
* type: object
|
||||
* properties:
|
||||
* blobId:
|
||||
* type: string
|
||||
* example: "8iqMIB8eiY1tPYmElfjm"
|
||||
* content:
|
||||
* type:
|
||||
* - string
|
||||
* - 'null'
|
||||
* description: "`null` if not text."
|
||||
* contentLength:
|
||||
* type: integer
|
||||
* dateModified:
|
||||
* $ref: "#/components/schemas/DateTime"
|
||||
* utcDateModified:
|
||||
* $ref: "#/components/schemas/UtcDateTime"
|
||||
* Branch:
|
||||
* type: object
|
||||
* properties:
|
||||
* branchId:
|
||||
* $ref: "#/components/schemas/BranchId"
|
||||
* noteId:
|
||||
* $ref: "#/components/schemas/NoteId"
|
||||
* parentNoteId:
|
||||
* $ref: "#/components/schemas/NoteId"
|
||||
* notePosition:
|
||||
* type: integer
|
||||
* example: 20
|
||||
* prefix:
|
||||
* type:
|
||||
* - string
|
||||
* - 'null'
|
||||
* isExpanded:
|
||||
* type: boolean
|
||||
* BranchId:
|
||||
* type: string
|
||||
* example: "WUjhaGp4EKah_ur11rSfHkzeV"
|
||||
* description: Equal to `{parentNoteId}_{noteId}`
|
||||
* DateTime:
|
||||
* type: string
|
||||
* example: "2025-02-14 08:19:59.203+0100"
|
||||
* EntityChange:
|
||||
* type: object
|
||||
* properties:
|
||||
* entityChange:
|
||||
* type: object
|
||||
* properties:
|
||||
* entityName:
|
||||
* type: string
|
||||
* example: "notes"
|
||||
* description: Database table for this entity.
|
||||
* changeId:
|
||||
* type: string
|
||||
* example: "changeId9630"
|
||||
* description: ID, referenced in `entity_changes` table.
|
||||
* entity:
|
||||
* type: object
|
||||
* description: Encoded entity data. Object has one property for each database column.
|
||||
* Note:
|
||||
* type: object
|
||||
* properties:
|
||||
* noteId:
|
||||
* $ref: "#/components/schemas/NoteId"
|
||||
* title:
|
||||
* type: string
|
||||
* isProtected:
|
||||
* type: boolean
|
||||
* type:
|
||||
* type: string
|
||||
* example: "text"
|
||||
* enum: ["text", "code", "render", "file", "image", "search", "relationMap", "book", "noteMap", "mermaid", "canvas", "webView", "launcher", "doc", "contentWidget", "mindMap", "geoMap"]
|
||||
* description: "[Reference list](https://github.com/TriliumNext/Notes/blob/v0.91.6/src/services/note_types.ts)"
|
||||
* mime:
|
||||
* type: string
|
||||
* example: "text/html"
|
||||
* blobId:
|
||||
* type: string
|
||||
* example: "z4PhNX7vuL3xVChQ1m2A"
|
||||
* NoteId:
|
||||
* type: string
|
||||
* example: "ur11rSfHkzeV"
|
||||
* description: "12-character note ID. Special values: \"none\"`, `\"root\"."
|
||||
* Timestamps:
|
||||
* type: object
|
||||
* properties:
|
||||
* dateCreated:
|
||||
* $ref: "#/components/schemas/DateTime"
|
||||
* dateModified:
|
||||
* $ref: "#/components/schemas/DateTime"
|
||||
* utcDateCreated:
|
||||
* $ref: "#/components/schemas/UtcDateTime"
|
||||
* utcDateModified:
|
||||
* $ref: "#/components/schemas/UtcDateTime"
|
||||
* UtcDateTime:
|
||||
* type: string
|
||||
* example: "2025-02-13T07:42:47.698Z"
|
||||
* description: "Result of `new Date().toISOString().replace('T', ' ')`"
|
||||
* securitySchemes:
|
||||
* user-password:
|
||||
* type: apiKey
|
||||
* name: trilium-cred
|
||||
* in: header
|
||||
* description: "Username and password, formatted as `user:password`"
|
||||
* session:
|
||||
* type: apiKey
|
||||
* in: cookie
|
||||
* name: trilium.sid
|
||||
*/
|
||||
@@ -32,7 +32,7 @@ mv package.json.tmp package.json
|
||||
|
||||
git add package.json
|
||||
|
||||
npm run update-build-info
|
||||
npm run chore:update-build-info
|
||||
|
||||
git add src/services/build.ts
|
||||
|
||||
|
||||
1
bin/tray-icons/bookmarks.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-bookmark"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M18 7v14l-6 -4l-6 4v-14a4 4 0 0 1 4 -4h4a4 4 0 0 1 4 4z" /></svg>
|
||||
|
After Width: | Height: | Size: 383 B |
39
bin/tray-icons/build-icons.sh
Normal file
@@ -0,0 +1,39 @@
|
||||
#!/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
|
||||
|
||||
script_dir=$(realpath $(dirname $0))
|
||||
images_dir="$script_dir/../../images"
|
||||
output_dir="$images_dir/app-icons/tray"
|
||||
|
||||
function generateDpiScaledIcons {
|
||||
file=$1
|
||||
suffix=$2
|
||||
name="$(basename $file .svg)$suffix"
|
||||
inkscape -w 16 -h 16 "$file" -o "$output_dir/$name.png"
|
||||
inkscape -w 20 -h 20 "$file" -o "$output_dir/$name@1.25x.png"
|
||||
inkscape -w 24 -h 24 "$file" -o "$output_dir/$name@1.5x.png"
|
||||
inkscape -w 32 -h 32 "$file" -o "$output_dir/$name@2x.png"
|
||||
}
|
||||
|
||||
generateDpiScaledIcons "$images_dir/icon-black.svg" "Template"
|
||||
generateDpiScaledIcons "$images_dir/icon-color.svg"
|
||||
generateDpiScaledIcons "$images_dir/icon-purple.svg"
|
||||
|
||||
for file in *.svg; do
|
||||
name="$(basename $file .svg)Template"
|
||||
generateDpiScaledIcons "$file" "Template"
|
||||
magick "$output_dir/$name.png" -channel RGB -negate "$output_dir/$name-inverted.png"
|
||||
magick "$output_dir/$name@1.25x.png" -channel RGB -negate "$output_dir/$name-inverted@1.25x.png"
|
||||
magick "$output_dir/$name@1.5x.png" -channel RGB -negate "$output_dir/$name-inverted@1.5x.png"
|
||||
magick "$output_dir/$name@2x.png" -channel RGB -negate "$output_dir/$name-inverted@2x.png"
|
||||
done
|
||||
|
||||
1
bin/tray-icons/close.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-x"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M18 6l-12 12" /><path d="M6 6l12 12" /></svg>
|
||||
|
After Width: | Height: | Size: 356 B |
1
bin/tray-icons/new-note.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-plus"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M12 5l0 14" /><path d="M5 12l14 0" /></svg>
|
||||
|
After Width: | Height: | Size: 357 B |
1
bin/tray-icons/recents.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-history"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M12 8l0 4l2 2" /><path d="M3.05 11a9 9 0 1 1 .5 4m-.5 5v-5h5" /></svg>
|
||||
|
After Width: | Height: | Size: 387 B |
1
bin/tray-icons/today.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-calendar-star"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M11 21h-5a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v3.5" /><path d="M16 3v4" /><path d="M8 3v4" /><path d="M4 11h11" /><path d="M17.8 20.817l-2.172 1.138a.392 .392 0 0 1 -.568 -.41l.415 -2.411l-1.757 -1.707a.389 .389 0 0 1 .217 -.665l2.428 -.352l1.086 -2.193a.392 .392 0 0 1 .702 0l1.086 2.193l2.428 .352a.39 .39 0 0 1 .217 .665l-1.757 1.707l.414 2.41a.39 .39 0 0 1 -.567 .411l-2.172 -1.138z" /></svg>
|
||||
|
After Width: | Height: | Size: 734 B |
@@ -28,6 +28,21 @@ keyPath=
|
||||
# expressjs shortcuts are supported: loopback(127.0.0.1/8, ::1/128), linklocal(169.254.0.0/16, fe80::/10), uniquelocal(10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, fc00::/7)
|
||||
trustedReverseProxy=false
|
||||
|
||||
|
||||
[Session]
|
||||
# Use this setting to set a custom value for the "Path" Attribute value of the session cookie.
|
||||
# This can be useful, when you have several instances running on the same domain, under different paths (e.g. by using a reverse proxy).
|
||||
# It prevents your instances from overwriting each others' cookies, allowing you to stay logged in multiple instances simultanteously.
|
||||
# E.g. if you have instances running under https://your-domain.com/triliumNext/instanceA and https://your-domain.com/triliumNext/instanceB
|
||||
# you would want to set the cookiePath value to "/triliumNext/instanceA" for your first and "/triliumNext/instanceB" for your second instance
|
||||
cookiePath=/
|
||||
|
||||
# Use this setting to set a custom value for the "Max-Age" Attribute of the session cookie.
|
||||
# This controls how long your session will be valid, before it expires and you need to log in again, when you use the "Remember Me" option.
|
||||
# Value needs to be entered in Seconds.
|
||||
# Default value is 1814400 Seconds, which is 21 Days.
|
||||
cookieMaxAge=1814400
|
||||
|
||||
[Sync]
|
||||
#syncServerHost=
|
||||
#syncServerTimeout=
|
||||
|
||||
BIN
db/demo.zip
@@ -38,12 +38,12 @@
|
||||
|
||||
|
||||
<div id="content" class="type-text ck-content">
|
||||
<h3>The native node bindings</h3><p><code>better-sqlite3</code> has native Node bindings. With updates of <code>better-sqlite3</code>, but also of Electron and Node.js versions, these bindings need to be updated.</p><p>Note that Electron and Node.js versions need different versions of these bindings, since Electron usually packs a different version of Node.js.</p><p>During development, <code>npm install</code> tries to build or reuse prebuilt natives for the current Node.js version. This makes <code>npm run start-server</code> work out of the box. Trying to run <code>npm run start-electron</code> with these versions generally causes an error such as this:</p><pre><code class="language-text-plain">Uncaught Exception:
|
||||
<h3>The native node bindings</h3><p><code>better-sqlite3</code> has native Node bindings. With updates of <code>better-sqlite3</code>, but also of Electron and Node.js versions, these bindings need to be updated.</p><p>Note that Electron and Node.js versions need different versions of these bindings, since Electron usually packs a different version of Node.js.</p><p>During development, <code>npm install</code> tries to build or reuse prebuilt natives for the current Node.js version. This makes <code>npm run server:start</code> work out of the box. Trying to run <code>npm run electron:start</code> with these versions generally causes an error such as this:</p><pre><code class="language-text-plain">Uncaught Exception:
|
||||
Error: The module '/Users/elian/Projects/Notes/node_modules/better-sqlite3/build/Release/better_sqlite3.node'
|
||||
was compiled against a different Node.js version using
|
||||
NODE_MODULE_VERSION 108. This version of Node.js requires
|
||||
NODE_MODULE_VERSION 116. Please try re-compiling or re-installing
|
||||
the module (for instance, using `npm rebuild` or `npm install`).</code></pre><h3>How the natives are handled</h3><p>Locally, this can be fixed by rebuilding the binaries, which is what <code>npm run switch-electron</code> does, which uses <code>electron-rebuild</code> under the hood.</p><p>When the deliveries are built (see <a class="reference-link type-text" href="UTB518X6X9Uh.html">Build deliveries locally</a>), it is not feasible to rebuild the dependencies since we are building for multiple platforms. Luckily, <code>better-sqlite3</code> provides these prebuilt binaries from us, available as artifacts on <a href="https://github.com/WiseLibs/better-sqlite3/releases/">their GitHub releases page</a>. </p><p>The build script manages the natives for <code>better-sqlite3</code> by keeping a copy of the <code>.node</code> file for every platform in <code>bin/better-sqlite3</code>.</p><p>Whenever the version of <code>better-sqlite3</code> changes, the <code>.node</code> files must also be renewed based on their releases page. To simplify this process, a script was created in <code>bin/better-sqlite3/update.sh</code>.</p><h2>How to update the natives</h2><p>The update script needs to know the version of Electron or Node.js for which to download the prebuilt binaries.</p><p>If you get errors during download, check on the <a href="https://github.com/WiseLibs/better-sqlite3/releases/">releases page</a> to ensure that this particular combination of Electron/Node actually exists for the given release.</p><p>To determine the <code>NODE_MODULE_VERSION</code> that is required, look for <code>This version of Node.js requires</code><br><code>NODE_MODULE_VERSION</code> in the error when starting Trilium via:</p><ul><li><code>npm run start-electron</code> (or run any Electron <a href="UTB518X6X9Uh.html" class="type-text">delivery</a>), case in which the <span style="color:#c0bfbc;"><code>ELECTRON_VERSION</code> variable needs to be changed.</span></li><li><span style="color:#c0bfbc;"><code>npm run start-server</code></span> (or run the Linux server delivery), case in which the <code>NODE_VERSION</code> variable needs to be changed.</li></ul><p>Check which files got changed after running the update script and for each platform that got changed, test it locally via <a class="reference-link type-text" href="UTB518X6X9Uh.html">Build deliveries locally</a> or via the CI.</p>
|
||||
the module (for instance, using `npm rebuild` or `npm install`).</code></pre><h3>How the natives are handled</h3><p>Locally, this can be fixed by rebuilding the binaries, which is what <code>npm run electron:switch</code> does, which uses <code>electron-rebuild</code> under the hood.</p><p>When the deliveries are built (see <a class="reference-link type-text" href="UTB518X6X9Uh.html">Build deliveries locally</a>), it is not feasible to rebuild the dependencies since we are building for multiple platforms. Luckily, <code>better-sqlite3</code> provides these prebuilt binaries from us, available as artifacts on <a href="https://github.com/WiseLibs/better-sqlite3/releases/">their GitHub releases page</a>. </p><p>The build script manages the natives for <code>better-sqlite3</code> by keeping a copy of the <code>.node</code> file for every platform in <code>bin/better-sqlite3</code>.</p><p>Whenever the version of <code>better-sqlite3</code> changes, the <code>.node</code> files must also be renewed based on their releases page. To simplify this process, a script was created in <code>bin/better-sqlite3/update.sh</code>.</p><h2>How to update the natives</h2><p>The update script needs to know the version of Electron or Node.js for which to download the prebuilt binaries.</p><p>If you get errors during download, check on the <a href="https://github.com/WiseLibs/better-sqlite3/releases/">releases page</a> to ensure that this particular combination of Electron/Node actually exists for the given release.</p><p>To determine the <code>NODE_MODULE_VERSION</code> that is required, look for <code>This version of Node.js requires</code><br><code>NODE_MODULE_VERSION</code> in the error when starting Trilium via:</p><ul><li><code>npm run electron:start</code> (or run any Electron <a href="UTB518X6X9Uh.html" class="type-text">delivery</a>), case in which the <span style="color:#c0bfbc;"><code>ELECTRON_VERSION</code> variable needs to be changed.</span></li><li><span style="color:#c0bfbc;"><code>npm run server:start</code></span> (or run the Linux server delivery), case in which the <code>NODE_VERSION</code> variable needs to be changed.</li></ul><p>Check which files got changed after running the update script and for each platform that got changed, test it locally via <a class="reference-link type-text" href="UTB518X6X9Uh.html">Build deliveries locally</a> or via the CI.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
|
||||
<div id="content" class="type-text ck-content">
|
||||
<h2>Server live reload</h2><p>If running the server using <code>npm run start-server</code>, the server will watch for changes in <code>src/public</code> and trigger a frontend reload if that occurs.</p><h2>Electron live reload</h2><p>Similarly, <code>npm run start-electron</code> supports live refresh as well.</p><p>However, a core difference is that Electron watches <code>dist/src/public</code> instead of <code>src/public</code> since Electron runs on its own copy of the files.</p><p>To ameliorate that, a separate watch script has been implemented which automatically copies files from <code>src/public</code> to <code>dist/src/public</code> whenever a change is detected. To run it:</p><pre><code class="language-text-plain">npm run </code></pre><h2>Technical details</h2><ul><li>This mechanism is managed at server level by watching for changes in<code>services/ws.ts</code>.</li></ul>
|
||||
<h2>Server live reload</h2><p>If running the server using <code>npm run server:start</code>, the server will watch for changes in <code>src/public</code> and trigger a frontend reload if that occurs.</p><h2>Electron live reload</h2><p>Similarly, <code>npm run electron:start</code> supports live refresh as well.</p><p>However, a core difference is that Electron watches <code>dist/src/public</code> instead of <code>src/public</code> since Electron runs on its own copy of the files.</p><p>To ameliorate that, a separate watch script has been implemented which automatically copies files from <code>src/public</code> to <code>dist/src/public</code> whenever a change is detected. To run it:</p><pre><code class="language-text-plain">npm run </code></pre><h2>Technical details</h2><ul><li>This mechanism is managed at server level by watching for changes in<code>services/ws.ts</code>.</li></ul>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
<a id="server" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Server<a href="#server" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>To install TriliumNext on your own server (including via Docker from <a href="https://hub.docker.com/r/triliumnext/notes" target="_blank" class="external">Dockerhub</a>) follow <a href="https://triliumnext.github.io/Docs/Wiki/server-installation" target="_blank" class="external">the server installation docs</a>.</p>
|
||||
<a id="📝-documentation" class="tsd-anchor"></a><h2 class="tsd-anchor-link">📝 Documentation<a href="#📝-documentation" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p><a href="https://triliumnext.github.io/Docs" target="_blank" class="external">See wiki for complete list of documentation pages.</a></p>
|
||||
<p>You can also read <a href="https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge" target="_blank" class="external">Patterns of personal knowledge base</a> to get some inspiration on how you might use TriliumNext.</p>
|
||||
<a id="💻-contribute" class="tsd-anchor"></a><h2 class="tsd-anchor-link">💻 Contribute<a href="#💻-contribute" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><a id="code" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Code<a href="#code" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><pre><code class="shell"><span class="hl-0">git</span><span class="hl-1"> </span><span class="hl-3">clone</span><span class="hl-1"> </span><span class="hl-3">https://github.com/TriliumNext/Notes.git</span><br/><span class="hl-0">cd</span><span class="hl-1"> </span><span class="hl-3">Notes</span><br/><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-3">install</span><br/><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-3">run</span><span class="hl-1"> </span><span class="hl-3">start-server</span>
|
||||
<a id="💻-contribute" class="tsd-anchor"></a><h2 class="tsd-anchor-link">💻 Contribute<a href="#💻-contribute" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><a id="code" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Code<a href="#code" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><pre><code class="shell"><span class="hl-0">git</span><span class="hl-1"> </span><span class="hl-3">clone</span><span class="hl-1"> </span><span class="hl-3">https://github.com/TriliumNext/Notes.git</span><br/><span class="hl-0">cd</span><span class="hl-1"> </span><span class="hl-3">Notes</span><br/><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-3">install</span><br/><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-3">run</span><span class="hl-1"> </span><span class="hl-3">server:start</span>
|
||||
</code><button type="button">Copy</button></pre>
|
||||
|
||||
<a id="documentation" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Documentation<a href="#documentation" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>Head on over to our <a href="https://github.com/TriliumNext/Docs" target="_blank" class="external">Docs repo</a></p>
|
||||
|
||||
@@ -78,7 +78,7 @@ Trilium 也提供 Flatpak:
|
||||
|
||||
```shell
|
||||
npm install
|
||||
npm run start-server
|
||||
npm run server:start
|
||||
```
|
||||
|
||||
## 👏 致谢
|
||||
|
||||
@@ -86,7 +86,7 @@ Clone localmente y ejecute
|
||||
|
||||
```shell
|
||||
npm install
|
||||
npm run start-server
|
||||
npm run server:start
|
||||
```
|
||||
|
||||
## 👏 Reconocimientos
|
||||
|
||||
@@ -73,7 +73,7 @@ Clona localmente ed esegui
|
||||
|
||||
```shell
|
||||
npm install
|
||||
npm run start-server
|
||||
npm run server:start
|
||||
```
|
||||
|
||||
## 👏 Riconoscimenti
|
||||
|
||||
@@ -54,7 +54,7 @@ Trilium は Flatpak としても提供されます:
|
||||
|
||||
```shell
|
||||
npm install
|
||||
npm run start-server
|
||||
npm run server:start
|
||||
```
|
||||
|
||||
## 📢 シャウトアウト
|
||||
|
||||
@@ -102,7 +102,7 @@ You can also read [Patterns of personal knowledge base](https://triliumnext.gith
|
||||
git clone https://github.com/TriliumNext/Notes.git
|
||||
cd Notes
|
||||
npm install
|
||||
npm run start-server
|
||||
npm run server:start
|
||||
```
|
||||
|
||||
### Documentation
|
||||
|
||||
@@ -44,7 +44,7 @@ Trilium предоставляется в виде десктопного при
|
||||
|
||||
```shell
|
||||
npm install
|
||||
npm run start-server
|
||||
npm run server:start
|
||||
```
|
||||
|
||||
## 👏 Благодарности
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
|
||||
<div id="content" class="type-text ck-content">
|
||||
<h3>Run server</h3><p>Run with default settings:</p><pre><code class="language-text-plain">npm run start-server</code></pre><p>Run with custom port:</p><pre><code class="language-text-plain">TRILIUM_PORT=8082 npm run start-server</code></pre><h3>Run Electron</h3><p>Rebuild <code>better-sqlite3</code> dependency:</p><pre><code class="language-text-plain">npm run switch-electron</code></pre><p>Then run Electron:</p><pre><code class="language-text-plain">npm run start-electron</code></pre><p>To run Electron using the same data directory as the production version:</p><pre><code class="language-text-plain">npm run start-electron-no-dir</code></pre><p>When done, switch back the <code>better-sqlite3</code> dependency:</p><pre><code class="language-text-plain">npm run switch-server</code></pre>
|
||||
<h3>Run server</h3><p>Run with default settings:</p><pre><code class="language-text-plain">npm run server:start</code></pre><p>Run with custom port:</p><pre><code class="language-text-plain">TRILIUM_PORT=8082 npm run server:start</code></pre><h3>Run Electron</h3><p>Rebuild <code>better-sqlite3</code> dependency:</p><pre><code class="language-text-plain">npm run electron:switch</code></pre><p>Then run Electron:</p><pre><code class="language-text-plain">npm run electron:start</code></pre><p>To run Electron using the same data directory as the production version:</p><pre><code class="language-text-plain">npm run electron:start-no-dir</code></pre><p>When done, switch back the <code>better-sqlite3</code> dependency:</p><pre><code class="language-text-plain">npm run server:switch</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
|
||||
<div id="content" class="type-text ck-content">
|
||||
<ul><li>Provides context about when the build was made and the corresponding Git revision.</li><li>The information is displayed to the client when going in the about dialog.</li><li>The build information is hard-coded in <code>src/services/build.ts</code>. This file is generated automatically via <code>npm run update-build-info</code> which itself is run automatically whenever making a build in the CI, or a <a href="UTB518X6X9Uh.html" class="type-text">local delivery</a>.</li></ul>
|
||||
<ul><li>Provides context about when the build was made and the corresponding Git revision.</li><li>The information is displayed to the client when going in the about dialog.</li><li>The build information is hard-coded in <code>src/services/build.ts</code>. This file is generated automatically via <code>npm run chore:update-build-info</code> which itself is run automatically whenever making a build in the CI, or a <a href="UTB518X6X9Uh.html" class="type-text">local delivery</a>.</li></ul>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@@ -8,8 +8,8 @@ test("Help popup", async ({ page, context }) => {
|
||||
await app.goto();
|
||||
|
||||
const popupPromise = page.waitForEvent("popup");
|
||||
await app.currentNoteSplit.press("F1");
|
||||
await page.getByRole("link", { name: "online↗" }).click();
|
||||
await app.currentNoteSplit.press("Shift+F1");
|
||||
await page.getByRole("link", { name: "online" }).click();
|
||||
const popup = await popupPromise;
|
||||
expect(popup.url()).toBe("https://triliumnext.github.io/Docs/");
|
||||
});
|
||||
|
||||
@@ -26,6 +26,8 @@ electronDl({ saveAs: true });
|
||||
// needed for excalidraw export https://github.com/zadam/trilium/issues/4271
|
||||
electron.app.commandLine.appendSwitch("enable-experimental-web-platform-features");
|
||||
|
||||
electron.app.userAgentFallback = `${electron.app.getName()} ${electron.app.getVersion()}`;
|
||||
|
||||
// Quit when all windows are closed, except on macOS. There, it's common
|
||||
// for applications and their menu bar to stay active until the user quits
|
||||
// explicitly with Cmd + Q.
|
||||
|
||||
@@ -3,6 +3,13 @@ const fs = require("fs-extra");
|
||||
|
||||
const APP_NAME = "TriliumNext Notes";
|
||||
|
||||
const extraResourcesForPlatform = getExtraResourcesForPlatform();
|
||||
const baseLinuxMakerConfigOptions = {
|
||||
icon: "./images/app-icons/png/128x128.png",
|
||||
desktopTemplate: path.resolve("./bin/electron-forge/desktop.ejs"),
|
||||
categories: ["Office", "Utility"]
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
packagerConfig: {
|
||||
executableName: "trilium",
|
||||
@@ -12,7 +19,7 @@ module.exports = {
|
||||
icon: "./images/app-icons/icon",
|
||||
extraResource: [
|
||||
// Moved to root
|
||||
...getExtraResourcesForPlatform(),
|
||||
...extraResourcesForPlatform,
|
||||
|
||||
// Moved to resources (TriliumNext Notes.app/Contents/Resources on macOS)
|
||||
"translations/",
|
||||
@@ -20,22 +27,18 @@ module.exports = {
|
||||
],
|
||||
afterComplete: [
|
||||
(buildPath, _electronVersion, platform, _arch, callback) => {
|
||||
const extraResources = getExtraResourcesForPlatform();
|
||||
for (const resource of extraResources) {
|
||||
for (const resource of extraResourcesForPlatform) {
|
||||
const baseName = path.basename(resource);
|
||||
let sourcePath;
|
||||
if (platform === "darwin") {
|
||||
sourcePath = path.join(buildPath, `${APP_NAME}.app`, "Contents", "Resources", baseName);
|
||||
} else {
|
||||
sourcePath = path.join(buildPath, "resources", baseName);
|
||||
}
|
||||
let destPath;
|
||||
|
||||
if (baseName !== "256x256.png") {
|
||||
destPath = path.join(buildPath, baseName);
|
||||
} else {
|
||||
destPath = path.join(buildPath, "icon.png");
|
||||
}
|
||||
// prettier-ignore
|
||||
const sourcePath = (platform === "darwin")
|
||||
? path.join(buildPath, `${APP_NAME}.app`, "Contents", "Resources", baseName)
|
||||
: path.join(buildPath, "resources", baseName);
|
||||
|
||||
// prettier-ignore
|
||||
const destPath = (baseName !== "256x256.png")
|
||||
? path.join(buildPath, baseName)
|
||||
: path.join(buildPath, "icon.png");
|
||||
|
||||
// Copy files from resources folder to root
|
||||
fs.move(sourcePath, destPath)
|
||||
@@ -53,8 +56,38 @@ module.exports = {
|
||||
name: "@electron-forge/maker-deb",
|
||||
config: {
|
||||
options: {
|
||||
icon: "./images/app-icons/png/128x128.png",
|
||||
desktopTemplate: path.resolve("./bin/electron-forge/desktop.ejs")
|
||||
...baseLinuxMakerConfigOptions
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "@electron-forge/maker-flatpak",
|
||||
config: {
|
||||
options: {
|
||||
...baseLinuxMakerConfigOptions,
|
||||
id: "com.triliumnext.notes",
|
||||
runtimeVersion: "24.08",
|
||||
base: "org.electronjs.Electron2.BaseApp",
|
||||
baseVersion: "24.08",
|
||||
baseFlatpakref: "https://flathub.org/repo/flathub.flatpakrepo",
|
||||
modules: [
|
||||
{
|
||||
name: "zypak",
|
||||
sources: {
|
||||
type: "git",
|
||||
url: "https://github.com/refi64/zypak",
|
||||
tag: "v2024.01.17"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "@electron-forge/maker-rpm",
|
||||
config: {
|
||||
options: {
|
||||
...baseLinuxMakerConfigOptions
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -62,7 +95,7 @@ module.exports = {
|
||||
name: "@electron-forge/maker-squirrel",
|
||||
config: {
|
||||
iconUrl: "https://raw.githubusercontent.com/TriliumNext/Notes/develop/images/app-icons/icon.ico",
|
||||
setupIcon: "./images/app-icons/icon.ico",
|
||||
setupIcon: "./images/app-icons/win/setup.ico",
|
||||
loadingGif: "./images/app-icons/win/setup-banner.gif"
|
||||
}
|
||||
},
|
||||
@@ -91,21 +124,20 @@ module.exports = {
|
||||
};
|
||||
|
||||
function getExtraResourcesForPlatform() {
|
||||
let resources = ["dump-db/", "./bin/tpl/anonymize-database.sql"];
|
||||
const scripts = ["trilium-portable", "trilium-safe-mode", "trilium-no-cert-check"];
|
||||
const resources = ["dump-db/", "./bin/tpl/anonymize-database.sql"];
|
||||
|
||||
const getScriptRessources = () => {
|
||||
const scripts = ["trilium-portable", "trilium-safe-mode", "trilium-no-cert-check"];
|
||||
const scriptExt = (process.platform === "win32") ? "bat" : "sh";
|
||||
return scripts.map(script => `./bin/tpl/${script}.${scriptExt}`);
|
||||
}
|
||||
|
||||
switch (process.platform) {
|
||||
case "win32":
|
||||
for (const script of scripts) {
|
||||
resources.push(`./bin/tpl/${script}.bat`);
|
||||
}
|
||||
break;
|
||||
case "darwin":
|
||||
resources.push(...getScriptRessources())
|
||||
break;
|
||||
case "linux":
|
||||
resources.push("images/app-icons/png/256x256.png");
|
||||
for (const script of scripts) {
|
||||
resources.push(`./bin/tpl/${script}.sh`);
|
||||
}
|
||||
resources.push(...getScriptRessources(), "images/app-icons/png/256x256.png");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
BIN
images/app-icons/png/16x16-dev.png
Normal file
|
After Width: | Height: | Size: 635 B |
BIN
images/app-icons/png/32x32-dev.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
images/app-icons/tray/bookmarksTemplate-inverted.png
Normal file
|
After Width: | Height: | Size: 336 B |
BIN
images/app-icons/tray/bookmarksTemplate-inverted@1.25x.png
Normal file
|
After Width: | Height: | Size: 364 B |
BIN
images/app-icons/tray/bookmarksTemplate-inverted@1.5x.png
Normal file
|
After Width: | Height: | Size: 412 B |
BIN
images/app-icons/tray/bookmarksTemplate-inverted@2x.png
Normal file
|
After Width: | Height: | Size: 456 B |
BIN
images/app-icons/tray/bookmarksTemplate.png
Normal file
|
After Width: | Height: | Size: 314 B |
BIN
images/app-icons/tray/bookmarksTemplate@1.25x.png
Normal file
|
After Width: | Height: | Size: 343 B |
BIN
images/app-icons/tray/bookmarksTemplate@1.5x.png
Normal file
|
After Width: | Height: | Size: 423 B |
BIN
images/app-icons/tray/bookmarksTemplate@2x.png
Normal file
|
After Width: | Height: | Size: 493 B |
BIN
images/app-icons/tray/closeTemplate-inverted.png
Normal file
|
After Width: | Height: | Size: 258 B |
BIN
images/app-icons/tray/closeTemplate-inverted@1.25x.png
Normal file
|
After Width: | Height: | Size: 271 B |
BIN
images/app-icons/tray/closeTemplate-inverted@1.5x.png
Normal file
|
After Width: | Height: | Size: 293 B |
BIN
images/app-icons/tray/closeTemplate-inverted@2x.png
Normal file
|
After Width: | Height: | Size: 334 B |
BIN
images/app-icons/tray/closeTemplate.png
Normal file
|
After Width: | Height: | Size: 254 B |
BIN
images/app-icons/tray/closeTemplate@1.25x.png
Normal file
|
After Width: | Height: | Size: 268 B |
BIN
images/app-icons/tray/closeTemplate@1.5x.png
Normal file
|
After Width: | Height: | Size: 306 B |
BIN
images/app-icons/tray/closeTemplate@2x.png
Normal file
|
After Width: | Height: | Size: 339 B |
BIN
images/app-icons/tray/icon-blackTemplate.png
Normal file
|
After Width: | Height: | Size: 390 B |
BIN
images/app-icons/tray/icon-blackTemplate@1.25x.png
Normal file
|
After Width: | Height: | Size: 490 B |
BIN
images/app-icons/tray/icon-blackTemplate@1.5x.png
Normal file
|
After Width: | Height: | Size: 589 B |
BIN
images/app-icons/tray/icon-blackTemplate@2x.png
Normal file
|
After Width: | Height: | Size: 728 B |
BIN
images/app-icons/tray/icon-color.png
Normal file
|
After Width: | Height: | Size: 626 B |
BIN
images/app-icons/tray/icon-color@1.25x.png
Normal file
|
After Width: | Height: | Size: 797 B |
BIN
images/app-icons/tray/icon-color@1.5x.png
Normal file
|
After Width: | Height: | Size: 975 B |
BIN
images/app-icons/tray/icon-color@2x.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
images/app-icons/tray/icon-purple.png
Normal file
|
After Width: | Height: | Size: 635 B |
BIN
images/app-icons/tray/icon-purple@1.25x.png
Normal file
|
After Width: | Height: | Size: 804 B |
BIN
images/app-icons/tray/icon-purple@1.5x.png
Normal file
|
After Width: | Height: | Size: 997 B |
BIN
images/app-icons/tray/icon-purple@2x.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
images/app-icons/tray/new-noteTemplate-inverted.png
Normal file
|
After Width: | Height: | Size: 252 B |
BIN
images/app-icons/tray/new-noteTemplate-inverted@1.25x.png
Normal file
|
After Width: | Height: | Size: 265 B |
BIN
images/app-icons/tray/new-noteTemplate-inverted@1.5x.png
Normal file
|
After Width: | Height: | Size: 273 B |
BIN
images/app-icons/tray/new-noteTemplate-inverted@2x.png
Normal file
|
After Width: | Height: | Size: 269 B |
BIN
images/app-icons/tray/new-noteTemplate.png
Normal file
|
After Width: | Height: | Size: 202 B |
BIN
images/app-icons/tray/new-noteTemplate@1.25x.png
Normal file
|
After Width: | Height: | Size: 237 B |
BIN
images/app-icons/tray/new-noteTemplate@1.5x.png
Normal file
|
After Width: | Height: | Size: 241 B |
BIN
images/app-icons/tray/new-noteTemplate@2x.png
Normal file
|
After Width: | Height: | Size: 242 B |
BIN
images/app-icons/tray/recentsTemplate-inverted.png
Normal file
|
After Width: | Height: | Size: 443 B |
BIN
images/app-icons/tray/recentsTemplate-inverted@1.25x.png
Normal file
|
After Width: | Height: | Size: 481 B |
BIN
images/app-icons/tray/recentsTemplate-inverted@1.5x.png
Normal file
|
After Width: | Height: | Size: 576 B |
BIN
images/app-icons/tray/recentsTemplate-inverted@2x.png
Normal file
|
After Width: | Height: | Size: 700 B |
BIN
images/app-icons/tray/recentsTemplate.png
Normal file
|
After Width: | Height: | Size: 450 B |
BIN
images/app-icons/tray/recentsTemplate@1.25x.png
Normal file
|
After Width: | Height: | Size: 501 B |
BIN
images/app-icons/tray/recentsTemplate@1.5x.png
Normal file
|
After Width: | Height: | Size: 627 B |
BIN
images/app-icons/tray/recentsTemplate@2x.png
Normal file
|
After Width: | Height: | Size: 798 B |
BIN
images/app-icons/tray/todayTemplate-inverted.png
Normal file
|
After Width: | Height: | Size: 397 B |
BIN
images/app-icons/tray/todayTemplate-inverted@1.25x.png
Normal file
|
After Width: | Height: | Size: 484 B |
BIN
images/app-icons/tray/todayTemplate-inverted@1.5x.png
Normal file
|
After Width: | Height: | Size: 513 B |
BIN
images/app-icons/tray/todayTemplate-inverted@2x.png
Normal file
|
After Width: | Height: | Size: 605 B |
BIN
images/app-icons/tray/todayTemplate.png
Normal file
|
After Width: | Height: | Size: 378 B |
BIN
images/app-icons/tray/todayTemplate@1.25x.png
Normal file
|
After Width: | Height: | Size: 500 B |
BIN
images/app-icons/tray/todayTemplate@1.5x.png
Normal file
|
After Width: | Height: | Size: 534 B |
BIN
images/app-icons/tray/todayTemplate@2x.png
Normal file
|
After Width: | Height: | Size: 667 B |