Compare commits
1734 Commits
android-v2
...
server-v3.
Author | SHA1 | Date | |
---|---|---|---|
|
0c405951ed | ||
|
4b411e600c | ||
|
bf58a52394 | ||
|
36d3736bff | ||
|
4df0b9f851 | ||
|
914b5e230d | ||
|
9278fd7910 | ||
|
2180ad1d9b | ||
|
d301cdf992 | ||
|
200d3c84e0 | ||
|
6cadaa2137 | ||
|
8221081514 | ||
|
dd06b1e680 | ||
|
70e0ae0c2c | ||
|
7aeec923e3 | ||
|
70d64225c8 | ||
|
ad0ecc2320 | ||
|
8a28edcda8 | ||
|
c8640aa7f8 | ||
|
ddf75d6c52 | ||
|
0a42317e07 | ||
|
51ce1b06fe | ||
|
44c735afac | ||
|
c6154cfb4e | ||
|
d2aad1d6c7 | ||
|
3e81cc8585 | ||
|
abc5c062c3 | ||
|
316ef9d960 | ||
|
b870f8344c | ||
|
6f6683d15d | ||
|
da59aef95b | ||
|
c55979cd03 | ||
|
07f4217f17 | ||
|
8a7071179d | ||
|
2c9a12307e | ||
|
dd3864fa47 | ||
|
43c1c5849b | ||
|
5e08ff0621 | ||
|
45838c0223 | ||
|
91ac4f8526 | ||
|
3603350287 | ||
|
bcde346ebe | ||
|
9803d7985d | ||
|
30f6b3ecb2 | ||
|
0b287d1113 | ||
|
be18655ceb | ||
|
be43ff42c9 | ||
|
1230e1b30c | ||
|
f5d168b16a | ||
|
7055d3db18 | ||
|
18a9c3f841 | ||
|
a4ab197c42 | ||
|
2b5881a103 | ||
|
e9dee4cd99 | ||
|
dd948f5c95 | ||
|
798e1b8f4f | ||
|
b3f69794b1 | ||
|
f25e1a5e80 | ||
|
786e55c972 | ||
|
cd9155514c | ||
|
3e9e669642 | ||
|
e36a30eb1a | ||
|
1975ebd438 | ||
|
94bff77313 | ||
|
6e3258a5d8 | ||
|
c55c8d62ec | ||
|
c7031568a8 | ||
|
c2c72215b9 | ||
|
cc09f92d3b | ||
|
8312196faa | ||
|
a16a66c37b | ||
|
a8210225a0 | ||
|
cd50454664 | ||
|
986163721d | ||
|
e41dcb9bc9 | ||
|
f90e642f43 | ||
|
67d1dd36be | ||
|
2cba693905 | ||
|
a226ede5d7 | ||
|
7994c0bc79 | ||
|
d589891a86 | ||
|
fe6c949cc1 | ||
|
4e677d2baf | ||
|
25aab57af5 | ||
|
db81064c98 | ||
|
9b82578253 | ||
|
bb513c83ac | ||
|
662185816d | ||
|
cc1582d535 | ||
|
aa6348a127 | ||
|
68f4b8ed0c | ||
|
98540493e0 | ||
|
762daa5a68 | ||
|
827233605e | ||
|
31b13defb6 | ||
|
8611391d01 | ||
|
5a3d57e39a | ||
|
e22ccd6edf | ||
|
8aec0ae445 | ||
|
24a2f5452c | ||
|
d6f1ca4ba4 | ||
|
2a058ed809 | ||
|
877123bda7 | ||
|
d621e631f7 | ||
|
64d1da9773 | ||
|
2643bb9b32 | ||
|
5c737b3ccd | ||
|
23f75f8784 | ||
|
60b2f69620 | ||
|
1d00b7a68e | ||
|
d0b783c595 | ||
|
9c446b03da | ||
|
0603c56446 | ||
|
4223864302 | ||
|
0ddf5732a8 | ||
|
a5ffc11831 | ||
|
157ad2c0cd | ||
|
0ac710ecf9 | ||
|
d3046582e1 | ||
|
9642640cda | ||
|
dab2438df0 | ||
|
dc7871b655 | ||
|
ff465767ab | ||
|
c58aac9387 | ||
|
29e55b8231 | ||
|
dc10ff6215 | ||
|
e8e3ef36ed | ||
|
e1b41cff5f | ||
|
5782ee6ba1 | ||
|
cbf81d1257 | ||
|
c357b77a48 | ||
|
64c14fe76f | ||
|
b2c1d7a2ba | ||
|
dbd4cffef3 | ||
|
d190463325 | ||
|
2c1aa5d620 | ||
|
52d255352a | ||
|
76274033db | ||
|
92abfac3af | ||
|
c6956df1c9 | ||
|
0bd1e202a2 | ||
|
f602ad8a63 | ||
|
6a1b498e96 | ||
|
ca64451503 | ||
|
519f3f5898 | ||
|
907b1e969e | ||
|
216b750a90 | ||
|
219d5bcae3 | ||
|
b59774a763 | ||
|
0494719e4f | ||
|
0e1b81685a | ||
|
c157cd0cb3 | ||
|
5c711df2e4 | ||
|
e520a695a6 | ||
|
5ee8a9a454 | ||
|
6b73879512 | ||
|
f08235f05c | ||
|
a4b1b9a2bf | ||
|
fc8ea6df0b | ||
|
2fba101333 | ||
|
35a0b22df2 | ||
|
e177bffb1c | ||
|
f95ca578c2 | ||
|
4bed47a1af | ||
|
5a0b0e6314 | ||
|
f119212068 | ||
|
cd12de78d6 | ||
|
6aa2c5f116 | ||
|
e287e5cbab | ||
|
d70a5b25a0 | ||
|
d2df7e6feb | ||
|
e9ee8c8419 | ||
|
8d2ae7e20e | ||
|
50d5843344 | ||
|
1fdc327977 | ||
|
c18ab5a7fb | ||
|
11216902d0 | ||
|
950ffef84d | ||
|
86e6445526 | ||
|
ab286b6da3 | ||
|
8c24928cf4 | ||
|
3952060dac | ||
|
877f39bb0e | ||
|
652812a15c | ||
|
597f3188bd | ||
|
d7d50f4373 | ||
|
83db585c0b | ||
|
d817ddd5c6 | ||
|
98fce34fe9 | ||
|
a81af0711c | ||
|
72575e3c6f | ||
|
e8f305dea5 | ||
|
e1e2ba8888 | ||
|
633d87ebfe | ||
|
a9e1be944f | ||
|
6048f9613c | ||
|
0a76494555 | ||
|
edbb6137ea | ||
|
4d216ef907 | ||
|
2f71c40ceb | ||
|
d3ea6fbe1d | ||
|
d45864888a | ||
|
0e92ab654a | ||
|
9e5c0ef3ce | ||
|
431cc15a51 | ||
|
82118810d9 | ||
|
bacaf800f2 | ||
|
4d827afccb | ||
|
e70efcbd60 | ||
|
ac154ee1e8 | ||
|
6220267abb | ||
|
1cdb74b0e2 | ||
|
43f2d78663 | ||
|
7694ec5da4 | ||
|
533f8f47ce | ||
|
3ae834e508 | ||
|
8e547219b8 | ||
|
f380983c96 | ||
|
8990dec4bd | ||
|
8b0cc64aad | ||
|
1bc6655d43 | ||
|
70756760f5 | ||
|
2b43a9a4d6 | ||
|
abe6c1791b | ||
|
2478ddbfa9 | ||
|
467500dbf8 | ||
|
4151e07ee0 | ||
|
d131f67d3f | ||
|
40914beb9b | ||
|
c40e6ae8ee | ||
|
537205ecb2 | ||
|
91a1353ef3 | ||
|
d9df2dc03a | ||
|
28ff17a078 | ||
|
3cba4ec82c | ||
|
482c9e9aab | ||
|
c197d89ddc | ||
|
9b50539591 | ||
|
a4be89144e | ||
|
5f2f3ed9d8 | ||
|
5078341c15 | ||
|
9e80e2e072 | ||
|
2da789aaa4 | ||
|
ac28d31cce | ||
|
b147cc6235 | ||
|
6dc1bc7870 | ||
|
b3e84b699d | ||
|
c3a734c980 | ||
|
51d5d58cec | ||
|
df3924f71f | ||
|
2399e56602 | ||
|
3983a3a52f | ||
|
dc96811940 | ||
|
dbc8e39d5e | ||
|
5a30528131 | ||
|
9338c5c810 | ||
|
0a5bc9647d | ||
|
09413606cf | ||
|
1fa327f034 | ||
|
7863118565 | ||
|
955d39bf2e | ||
|
979753d8a7 | ||
|
c7e3a31ed8 | ||
|
dc445579da | ||
|
815b922988 | ||
|
81f3a02dba | ||
|
154b78f7ce | ||
|
d946c4bdc9 | ||
|
421edb6691 | ||
|
30dbacc1a1 | ||
|
61b95c3afb | ||
|
a453617743 | ||
|
30f64b1dfb | ||
|
6f0d3595b9 | ||
|
a35f0296c1 | ||
|
a5e3083bfd | ||
|
dd9d5e3cfb | ||
|
a62ae2b895 | ||
|
01621d4f56 | ||
|
7cd9f82f8c | ||
|
388d124d91 | ||
|
d1ea90cd5c | ||
|
8ca8295cc5 | ||
|
84d577720a | ||
|
363b829db7 | ||
|
82b021245c | ||
|
3db862f870 | ||
|
c219bf710d | ||
|
7575abbf54 | ||
|
189ba7795a | ||
|
91354e5c52 | ||
|
f0aa9949a2 | ||
|
0fa14bcb19 | ||
|
1d2535c9ec | ||
|
3801b60fae | ||
|
d2caaeb4ba | ||
|
1aefcb9da5 | ||
|
d935a491ba | ||
|
5d84f80ad1 | ||
|
d1fc69ffbe | ||
|
ca9759738f | ||
|
95ca6c4c12 | ||
|
e7583a1ae4 | ||
|
56dce15537 | ||
|
df577bc08c | ||
|
9c4142fcd2 | ||
|
021cdf8034 | ||
|
f5b5cf74c5 | ||
|
ceea0bc0ad | ||
|
23032b9417 | ||
|
f42a358818 | ||
|
d879e3dcf0 | ||
|
abc2f91623 | ||
|
fee85069ac | ||
|
9ea80c2e2b | ||
|
24542ca404 | ||
|
955316f6f7 | ||
|
8fb7d194d5 | ||
|
cfaa2936bf | ||
|
eb5c4606f0 | ||
|
0275434077 | ||
|
f776d527ca | ||
|
4e8b896688 | ||
|
257b58f4fb | ||
|
8cf5ac33d1 | ||
|
2f3b388188 | ||
|
13f71e713c | ||
|
36bf24e914 | ||
|
ef0a2ca2d8 | ||
|
fea71df181 | ||
|
54a82befa0 | ||
|
e652db05e1 | ||
|
48fd5d30f7 | ||
|
9373c334b3 | ||
|
1087c49b9f | ||
|
9bd930d89a | ||
|
380ba28bac | ||
|
1dd02f1746 | ||
|
81ec3eb5e2 | ||
|
3e911204df | ||
|
db07bd208a | ||
|
5dfbb18838 | ||
|
a7add9961f | ||
|
f382ab3d13 | ||
|
b07ca88a29 | ||
|
d05ddfc258 | ||
|
e68abc5d07 | ||
|
9e18aa7488 | ||
|
85bd6d17f0 | ||
|
d648e43cfb | ||
|
c9608cf4a1 | ||
|
5dcbf4ce4a | ||
|
e5c31e555f | ||
|
5d7d248a83 | ||
|
13d8fbbd65 | ||
|
48f5da65bb | ||
|
1293037ff9 | ||
|
a07dfbc164 | ||
|
546c75b955 | ||
|
bcff7ac1d3 | ||
|
6fa1520023 | ||
|
f782c97cb7 | ||
|
cad00cb824 | ||
|
a6e8774f22 | ||
|
d7b3ef8ddf | ||
|
f8b80386f3 | ||
|
30a8a38019 | ||
|
2b89d73d91 | ||
|
1993d3089a | ||
|
bbe1611cdf | ||
|
f655291c39 | ||
|
fb6a807a37 | ||
|
7faed0d291 | ||
|
b0f9380dc1 | ||
|
d9be5bb6fd | ||
|
0868db8c5d | ||
|
4d7fa5972f | ||
|
e36f37707f | ||
|
84eab775c3 | ||
|
bb66e81abe | ||
|
6eac8d9ccf | ||
|
8e3c81717e | ||
|
521cb3e5ad | ||
|
fb0bfe6a2b | ||
|
9a5842c621 | ||
|
11b33474b7 | ||
|
24d02c5fc3 | ||
|
e4c6b9c2b2 | ||
|
0fadf1b0be | ||
|
226a8b3813 | ||
|
6c0258e8a6 | ||
|
388701015d | ||
|
4ad0ced568 | ||
|
cc87ece6fb | ||
|
4356a2010d | ||
|
f091c32992 | ||
|
49e86d116f | ||
|
e16f452bdf | ||
|
de83b42972 | ||
|
2426cedb18 | ||
|
6a7d0ee22c | ||
|
0b4b768049 | ||
|
33942d44c8 | ||
|
551bcc68cf | ||
|
50b16c6054 | ||
|
3ff720463b | ||
|
d58126484a | ||
|
5056ac4e61 | ||
|
360ece6f88 | ||
|
a08ebb9ce5 | ||
|
0876086caa | ||
|
a169f757a6 | ||
|
a616dc3cd2 | ||
|
b248700e28 | ||
|
5aa29d38ef | ||
|
4d5b1ce5fd | ||
|
1e21fc242b | ||
|
a99202412c | ||
|
279e93398f | ||
|
3894c05217 | ||
|
1fca7eddcb | ||
|
4a88d6ff7a | ||
|
cbef725cc8 | ||
|
3711f72cb0 | ||
|
1db8e65321 | ||
|
9fb104ec7c | ||
|
39924b7dd2 | ||
|
1766f4a63d | ||
|
0b6082d679 | ||
|
62ccf1eb2f | ||
|
496d6c8254 | ||
|
f3bd6d473c | ||
|
0aba14f581 | ||
|
02a0d0d0cc | ||
|
5a44f62fb6 | ||
|
10583bf426 | ||
|
b3ea127848 | ||
|
cbe55055e9 | ||
|
6f174952ab | ||
|
2194eb4df5 | ||
|
9b9bb6eb49 | ||
|
da10297572 | ||
|
9866c27156 | ||
|
ce26e085ff | ||
|
6875fd271c | ||
|
a5c14c8d10 | ||
|
580188c477 | ||
|
0e1f6f48ef | ||
|
b10a993592 | ||
|
50e1c26890 | ||
|
fb09870d21 | ||
|
43fb20bd79 | ||
|
4339ae72b6 | ||
|
99b01c2822 | ||
|
82d4c4d4cc | ||
|
6fff7284cf | ||
|
e0b420c288 | ||
|
c9ee4900ef | ||
|
8fb85abe1a | ||
|
7590c13db4 | ||
|
2fc9bd476b | ||
|
ddd18551eb | ||
|
e32d6e93f3 | ||
|
7193dd1918 | ||
|
c7bb4f0e4b | ||
|
a62e35c123 | ||
|
100f8a23f4 | ||
|
612d72d765 | ||
|
2974465882 | ||
|
f7f4a50d35 | ||
|
441021bb7e | ||
|
4c0ec8c5a0 | ||
|
9f8552a038 | ||
|
05a588af48 | ||
|
743ed2d9b8 | ||
|
289d36f1f1 | ||
|
cce6898d83 | ||
|
f4ee4a178e | ||
|
ff09937ca2 | ||
|
a2d0908eb6 | ||
|
d060edba66 | ||
|
d2a45be18f | ||
|
84d0b1f080 | ||
|
3c6f7ceeaa | ||
|
fba1ad2d95 | ||
|
b32dc39965 | ||
|
49338b91c8 | ||
|
26fa2e7900 | ||
|
aa6348c5c2 | ||
|
bed5297829 | ||
|
3732a57af3 | ||
|
f1e5ab8255 | ||
|
c2844470c5 | ||
|
6cbdde578d | ||
|
4057aae300 | ||
|
f07e4e9b5a | ||
|
2d9c2d533d | ||
|
92c13c2991 | ||
|
d7f4f5f2b8 | ||
|
59feec1fe2 | ||
|
e77fa19fea | ||
|
4580c63ac7 | ||
|
576a73db5b | ||
|
4e7d74e49a | ||
|
c6d319e333 | ||
|
9f5282c8f5 | ||
|
3a316a1dbc | ||
|
08f29b7866 | ||
|
c364fd087f | ||
|
006fb215a1 | ||
|
27742b9cc3 | ||
|
4d679ce928 | ||
|
0774f03863 | ||
|
db966f919e | ||
|
d46afbf067 | ||
|
badc7dabe8 | ||
|
8102e52c59 | ||
|
173b4f3ab3 | ||
|
549934b04e | ||
|
683601c427 | ||
|
334005c1ff | ||
|
81993628ab | ||
|
2779a9cffc | ||
|
1d6c1e4664 | ||
|
9edcd4eb8f | ||
|
0b3f6a268e | ||
|
a2069df3e0 | ||
|
1ad150c1bf | ||
|
41b251d67a | ||
|
9175780382 | ||
|
2c40cec639 | ||
|
efb58c5f40 | ||
|
6afa2d1385 | ||
|
38be0e81a9 | ||
|
609ee3e227 | ||
|
23a6bbe014 | ||
|
1b9e9655be | ||
|
9d8cd1d707 | ||
|
591c458a4f | ||
|
6974c8ba11 | ||
|
e1531b77c6 | ||
|
23cd7d90d1 | ||
|
2ccbd9fdc2 | ||
|
bfdc6ca7bf | ||
|
f9b1a32ae7 | ||
|
1a195e23dd | ||
|
26ae3f853e | ||
|
e84e9a58e1 | ||
|
3b8da5023d | ||
|
548d41d0d4 | ||
|
d6c921249f | ||
|
e044c50b03 | ||
|
beec74d792 | ||
|
8b4e163b28 | ||
|
b61467097d | ||
|
447e4638d1 | ||
|
b831525b20 | ||
|
e05be832d5 | ||
|
64c9c3179f | ||
|
0ea61f26eb | ||
|
349fa426ea | ||
|
e3d5f0c9cf | ||
|
e63d545ed8 | ||
|
ab3058612d | ||
|
715abcce32 | ||
|
f165b3f870 | ||
|
8895d745e7 | ||
|
33a9b96a31 | ||
|
d1ac3d415e | ||
|
432fac8fda | ||
|
0f23882d47 | ||
|
693c0f22c8 | ||
|
e2db7a6b61 | ||
|
2a74f60812 | ||
|
2419291976 | ||
|
733845eb95 | ||
|
b3315aeb03 | ||
|
d88c522d96 | ||
|
c0cefc30f4 | ||
|
0dc3589661 | ||
|
f64c3d5484 | ||
|
5fceb5a3c9 | ||
|
916b3f6f69 | ||
|
0c4e8eeafc | ||
|
b27e0ff1f4 | ||
|
59ffb0f265 | ||
|
20b4fd85c1 | ||
|
fc2da05ba6 | ||
|
948ca605b0 | ||
|
eda2c69334 | ||
|
42ab9ecd95 | ||
|
5935c9c147 | ||
|
90640e590e | ||
|
75b8caf816 | ||
|
3ea403d004 | ||
|
058a559de4 | ||
|
ac43c62ce8 | ||
|
c4a7749f2a | ||
|
e6c09da639 | ||
|
2d05b5f43e | ||
|
63d0855a59 | ||
|
3d42485315 | ||
|
f772cc500c | ||
|
ad8bcacbca | ||
|
fbab549a1c | ||
|
817f3bc121 | ||
|
e3576683b0 | ||
|
85c2eb43dd | ||
|
0f2b2b1e7b | ||
|
8fd2eeaea5 | ||
|
b97a14c559 | ||
|
bbb97bcb02 | ||
|
8a51ed892a | ||
|
0cac69c2fa | ||
|
feb946acfb | ||
|
220f867814 | ||
|
050a896c8b | ||
|
d13e7b32c3 | ||
|
a56f104fe8 | ||
|
99696637b9 | ||
|
be5a6c189a | ||
|
a01f519131 | ||
|
a71ee1d0b8 | ||
|
a40bb77feb | ||
|
5c23765458 | ||
|
d023ce592c | ||
|
8c4bf057d6 | ||
|
b9dc226031 | ||
|
a81c1ff663 | ||
|
c909d85acc | ||
|
0965c6d257 | ||
|
5beb80bf61 | ||
|
1b2f5e5cd8 | ||
|
2db82ac732 | ||
|
3f1ec682b9 | ||
|
59b3030e45 | ||
|
54d223a721 | ||
|
e5771a36bb | ||
|
31a5ee20df | ||
|
efd9ada977 | ||
|
b4450ae4ef | ||
|
73076bd4b7 | ||
|
0ba0550baf | ||
|
41b03f9356 | ||
|
95f1992b8a | ||
|
11c1c0638d | ||
|
e0daf807a6 | ||
|
2594c1edb1 | ||
|
e80bede7b7 | ||
|
1eb721c717 | ||
|
38b6484f12 | ||
|
a0163ba793 | ||
|
e2e589e907 | ||
|
93f96c03b1 | ||
|
77f09a4408 | ||
|
faf30306da | ||
|
c1c02204fa | ||
|
017480eb45 | ||
|
8931a68ec8 | ||
|
3c6a419cad | ||
|
dce4c715e3 | ||
|
5763de3b26 | ||
|
4fa61e443f | ||
|
84e312563a | ||
|
707c21a2fe | ||
|
d0057ae838 | ||
|
8d3ac630c5 | ||
|
b5f06b6958 | ||
|
5a07b795d3 | ||
|
bfab4426ca | ||
|
bcb5218e1a | ||
|
c897cc1582 | ||
|
ea61bfc498 | ||
|
ca5d35339f | ||
|
5c00ea93c2 | ||
|
f005977ce0 | ||
|
79773dab95 | ||
|
69168f1ec2 | ||
|
147a66d64e | ||
|
ec36847de0 | ||
|
d7bef7e923 | ||
|
55faab25b5 | ||
|
4da8060e62 | ||
|
821cfc5bd8 | ||
|
9956caea1b | ||
|
f95b663f28 | ||
|
dd990e7cf6 | ||
|
23dec124dd | ||
|
2b6cb908fa | ||
|
40475d60fb | ||
|
48e96a055f | ||
|
3dbc9a5723 | ||
|
9832af0d3a | ||
|
26caf2a4c6 | ||
|
29d7804ffd | ||
|
6fe0104483 | ||
|
04f5433839 | ||
|
0bfa28d795 | ||
|
ac2258769a | ||
|
7cd0ed1714 | ||
|
803d508c69 | ||
|
3c13568107 | ||
|
e41394b57f | ||
|
0b13dbddd8 | ||
|
2a2dd96c02 | ||
|
2f7b2fb948 | ||
|
4e8316a6ee | ||
|
01412b4500 | ||
|
2df8137281 | ||
|
f24e229a4e | ||
|
fa6060d6d2 | ||
|
2d6796db16 | ||
|
82be4f566a | ||
|
f353686166 | ||
|
a6dbe4b67a | ||
|
b597d5f9d1 | ||
|
f0496bd348 | ||
|
a746c02d4a | ||
|
02def5900e | ||
|
fd06c18cf0 | ||
|
6163364b26 | ||
|
7e9c7d7d23 | ||
|
88d02b04dd | ||
|
42e39b7789 | ||
|
9b3ce555cb | ||
|
bae311b2a9 | ||
|
f8a09e5540 | ||
|
461ba1762a | ||
|
82a4b8915b | ||
|
e8593e7ae5 | ||
|
8f1c7bf61c | ||
|
23c08f77e0 | ||
|
e1fa7d0e83 | ||
|
fc3c59bad5 | ||
|
8588e36373 | ||
|
1f43b199d5 | ||
|
e2fd48eecd | ||
|
d0e6368867 | ||
|
4f98aad24f | ||
|
fae313785d | ||
|
db5bbeecd4 | ||
|
d2b7d64f4f | ||
|
4f2d0c8e5d | ||
|
3bca12fd4a | ||
|
4ccc46e4db | ||
|
5062cd1616 | ||
|
1710155a6f | ||
|
4cb693b4d6 | ||
|
e607a7376f | ||
|
d1403ba2cb | ||
|
74be949d33 | ||
|
2afc2ca369 | ||
|
b617a84696 | ||
|
c691fedc12 | ||
|
12a26023dd | ||
|
700ffa2529 | ||
|
5fdd088504 | ||
|
fe89b1cf21 | ||
|
3d1bbf3c4d | ||
|
580d2914e7 | ||
|
33599324d6 | ||
|
02bdb7a79c | ||
|
a1c64eeefc | ||
|
78015028ec | ||
|
beff45e195 | ||
|
6a0dd4e20d | ||
|
ea420967c4 | ||
|
c19d0773b3 | ||
|
59a8c2115c | ||
|
88cae93fc4 | ||
|
4eb0fb542e | ||
|
60a1617b22 | ||
|
e05d7197bd | ||
|
9dc29d034b | ||
|
32fe122e60 | ||
|
8fcb377162 | ||
|
598677b207 | ||
|
b3437fa4cd | ||
|
0d82584777 | ||
|
e627fb7fad | ||
|
b60acf038b | ||
|
111820c0cf | ||
|
263a7ef076 | ||
|
255d3e737d | ||
|
9cb13af7b0 | ||
|
7bc81880e1 | ||
|
eb53c7e3b9 | ||
|
b94cf5a107 | ||
|
72163018b4 | ||
|
0cbf8d8ebc | ||
|
bde14f9ddc | ||
|
b220413a9b | ||
|
72472623cc | ||
|
7e599c3a3e | ||
|
74ba386ae3 | ||
|
06f05d3823 | ||
|
6ada0a0103 | ||
|
39bd7d3aef | ||
|
b5313067cd | ||
|
1edef99811 | ||
|
6518c17679 | ||
|
3ef07ac39a | ||
|
bfcf3815a4 | ||
|
292479ac28 | ||
|
786e58ed54 | ||
|
b88630855f | ||
|
b956a21dae | ||
|
c4ebb64fb2 | ||
|
fb181cf935 | ||
|
f6fdc9fe66 | ||
|
23f521de74 | ||
|
88ed7c934f | ||
|
4c7a1f0f88 | ||
|
98b7354373 | ||
|
8d8cca06eb | ||
|
45b61e1f49 | ||
|
f58d29a6a6 | ||
|
4caca4934e | ||
|
a8613d1444 | ||
|
c6377eafbf | ||
|
aa23d5cdff | ||
|
a97c04c21c | ||
|
9f66d7cfcd | ||
|
a52b206dfb | ||
|
806377e6ee | ||
|
6ce55a5737 | ||
|
cd40861ec8 | ||
|
a1aa4f78c9 | ||
|
0caecedb8f | ||
|
af7e172438 | ||
|
1f45252fc6 | ||
|
d2ae02d066 | ||
|
6d98f8102d | ||
|
08eab7a73a | ||
|
8d8c91ef50 | ||
|
88b3c7f526 | ||
|
24731edf92 | ||
|
85557b6882 | ||
|
8dfc873ceb | ||
|
8961aebc3a | ||
|
500c31565d | ||
|
223a685529 | ||
|
135d46f31b | ||
|
9f997c2fb6 | ||
|
a6cf0a3a81 | ||
|
1c2c071952 | ||
|
08348c88eb | ||
|
70bfb9f18d | ||
|
292d2fbc15 | ||
|
88cf1d6232 | ||
|
9cf298ef44 | ||
|
19af6a8722 | ||
|
5c8be448ab | ||
|
f69dffcf23 | ||
|
88271bf1a7 | ||
|
14cc053094 | ||
|
65ef700fdc | ||
|
9dbd481f28 | ||
|
e5c8b4bb66 | ||
|
ff6d700499 | ||
|
fc1699ac91 | ||
|
596bcd8d8b | ||
|
ecc4f3e22a | ||
|
c0dc30d0c4 | ||
|
f02af3af3b | ||
|
8179d3e723 | ||
|
60e347a782 | ||
|
06264847cc | ||
|
3137d5be33 | ||
|
d4c35b8c0b | ||
|
39ad1e23a8 | ||
|
d6dd23e921 | ||
|
b108bf799d | ||
|
6d92e982dc | ||
|
40bd2dfe21 | ||
|
819de1cfa4 | ||
|
a6d6e70b3d | ||
|
05cf51ec65 | ||
|
0935b6f697 | ||
|
dd5240d018 | ||
|
3fbb3b6b82 | ||
|
77b74daa0e | ||
|
8c0769fdb3 | ||
|
d2028588e8 | ||
|
4b99c2062c | ||
|
ce0218700e | ||
|
d63f498f4c | ||
|
56d2aced8a | ||
|
db2a194b69 | ||
|
f7a970f466 | ||
|
f7fa7a195f | ||
|
e6ec27a501 | ||
|
331f7ebe5c | ||
|
afcd2d2a39 | ||
|
8129f4a89f | ||
|
72c1bb3724 | ||
|
8fdccd287e | ||
|
b69a7403bc | ||
|
bdc9fa9dc3 | ||
|
9c07e57e28 | ||
|
821daeca94 | ||
|
480bf238f6 | ||
|
8ff13e5fc4 | ||
|
8e1970d08e | ||
|
86d92dd302 | ||
|
71b466507f | ||
|
11ce5f6c52 | ||
|
630b4061f0 | ||
|
912c943114 | ||
|
8e377e0306 | ||
|
1535e020a3 | ||
|
23d5d3426d | ||
|
6ab7a0836e | ||
|
278691211d | ||
|
356d4688a0 | ||
|
6b1d31387b | ||
|
70bfb26c9a | ||
|
71f70f4d2c | ||
|
64e4ebb1f3 | ||
|
2d984ce9a8 | ||
|
eaf160e0b1 | ||
|
624bfd9175 | ||
|
9ad1249f11 | ||
|
668849603d | ||
|
24f4c8e6ab | ||
|
46f5784edc | ||
|
fae2443481 | ||
|
37d65e000a | ||
|
6dd90eb03f | ||
|
3d8f713eb7 | ||
|
c35efe15d2 | ||
|
1596b46b86 | ||
|
4de0236194 | ||
|
2ab9702e32 | ||
|
24954bd0f0 | ||
|
2d4322be56 | ||
|
abb069bf50 | ||
|
a81d9fe17a | ||
|
6d44158050 | ||
|
a63cf3a90d | ||
|
ddb4f8c45b | ||
|
d7adab59ef | ||
|
e41374496e | ||
|
62d514463c | ||
|
332078b4ea | ||
|
c60e11646d | ||
|
c607fe9c75 | ||
|
1a4ba2c74a | ||
|
e49bca8315 | ||
|
636fbdf7d0 | ||
|
ee97434bb0 | ||
|
599cf5b86f | ||
|
2fd6a3a2fa | ||
|
a3e04103de | ||
|
731260926d | ||
|
a43635610a | ||
|
e307459652 | ||
|
c197a83de8 | ||
|
320d0df60d | ||
|
7e4533d811 | ||
|
f32fe63205 | ||
|
be117bca86 | ||
|
2b7bd902f3 | ||
|
3e0fb48e44 | ||
|
6d7fd19167 | ||
|
c3520d9eb1 | ||
|
5fd3cecc96 | ||
|
0d8666c946 | ||
|
4a475f1b53 | ||
|
8679cc5704 | ||
|
a48c4ba93f | ||
|
12db667128 | ||
|
6215de6080 | ||
|
7d2f384475 | ||
|
6ea1ac09a4 | ||
|
f2841a9a94 | ||
|
46ade2e0f8 | ||
|
d89be23069 | ||
|
337d50437b | ||
|
2479a8471e | ||
|
16e82b5462 | ||
|
1a82255865 | ||
|
a64d6e3270 | ||
|
ae1620dd50 | ||
|
d804e95d06 | ||
|
6c091910cd | ||
|
78d9a7e636 | ||
|
a074532497 | ||
|
5d2df358ac | ||
|
dfdc2fda27 | ||
|
a1f9c9c3d8 | ||
|
3270122419 | ||
|
838da6f161 | ||
|
e4b8976aa0 | ||
|
a86ee1d34e | ||
|
17e1eecb11 | ||
|
dd9a389711 | ||
|
55eaedb8b2 | ||
|
5f34a1bc92 | ||
|
f781face3a | ||
|
78ecd28d73 | ||
|
f8d772de87 | ||
|
77c39ac084 | ||
|
85e57a3953 | ||
|
95968f6690 | ||
|
f0b73ee916 | ||
|
a44412ae78 | ||
|
c7116b135f | ||
|
801d36c41f | ||
|
1d46adf801 | ||
|
94edaea210 | ||
|
3557138c84 | ||
|
77e74112ad | ||
|
5db88995c0 | ||
|
8eda8d3c84 | ||
|
1437dd5f27 | ||
|
9eb4944614 | ||
|
b4ef5abb88 | ||
|
4115e2054f | ||
|
8485277dcf | ||
|
fac9ea3b42 | ||
|
45f8e27d6a | ||
|
c8a478d970 | ||
|
75dfb0af5f | ||
|
5e592a3096 | ||
|
84e46ad874 | ||
|
0ec917bb96 | ||
|
818f9f58d1 | ||
|
e1abe0b4cb | ||
|
c972ce223e | ||
|
d9dadf28cb | ||
|
1fb392ff4e | ||
|
affa620983 | ||
|
ed31d8202b | ||
|
573ea6051c | ||
|
f1ec54532f | ||
|
5eb96d71e1 | ||
|
73251bac4a | ||
|
f40a0da195 | ||
|
8dc1ab2cc5 | ||
|
1b46c9f5e7 | ||
|
483ab55a36 | ||
|
502002f9f6 | ||
|
8d8014511f | ||
|
28569e652e | ||
|
9acf36d802 | ||
|
06d26767ed | ||
|
88858d4413 | ||
|
27309427a1 | ||
|
e83a18a907 | ||
|
9bd8b11f67 | ||
|
3a14c7ce2d | ||
|
fe4c9a2401 | ||
|
d2fb19cf6d | ||
|
1f8e3fb620 | ||
|
8bbe1d30b4 | ||
|
ec92f716de | ||
|
ab819d9210 | ||
|
e465b45d6e | ||
|
a4a4170d49 | ||
|
1dcf528443 | ||
|
8cf4ef88b5 | ||
|
bf634270be | ||
|
56437d3e1b | ||
|
d095ab2be7 | ||
|
4751b4dd74 | ||
|
ce22d8238c | ||
|
9e2b9e5b8d | ||
|
4952980e0a | ||
|
59989d2735 | ||
|
eb7f2855b0 | ||
|
a0e3e4fefb | ||
|
de9661448b | ||
|
562aabafa1 | ||
|
a659e45a68 | ||
|
8e44a15c8d | ||
|
a086358824 | ||
|
889c395818 | ||
|
7d0cc675aa | ||
|
73d3f92ae2 | ||
|
f5ceb4064c | ||
|
53d7bc86ca | ||
|
4495fc9a03 | ||
|
7ee5cad21e | ||
|
940739ce12 | ||
|
5730c1efcd | ||
|
b17f28ce94 | ||
|
629e968878 | ||
|
47a924ff4e | ||
|
c511fb59c7 | ||
|
80aeff6ecd | ||
|
97d15bb26a | ||
|
99b36cbff1 | ||
|
74c3d2c9fb | ||
|
df8c7fd31c | ||
|
3a780b9490 | ||
|
97ddb67f68 | ||
|
f50a27985b | ||
|
061a9d5bff | ||
|
06f42e8246 | ||
|
19f0b667b1 | ||
|
ac7165461a | ||
|
efb48e6145 | ||
|
f94c16b22e | ||
|
0938dc9d52 | ||
|
e049698012 | ||
|
c9fb06fd0c | ||
|
96850b7b98 | ||
|
32710e44c3 | ||
|
32e16f6e51 | ||
|
f938d5f489 | ||
|
99b840da34 | ||
|
55c222c577 | ||
|
418a6e455f | ||
|
789d19b18c | ||
|
59b26f2c63 | ||
|
f1eeeabdc5 | ||
|
d2a33b006b | ||
|
2386f583e8 | ||
|
70c5448402 | ||
|
4e3326b12f | ||
|
34092d8491 | ||
|
b8caf08fac | ||
|
b0d0e641ea | ||
|
3a1de4e941 | ||
|
97274c95a5 | ||
|
300d0e3ca5 | ||
|
50d08cd178 | ||
|
28f3d53b3b | ||
|
768e59938c | ||
|
6c7948a087 | ||
|
cc2b442519 | ||
|
fa285a9404 | ||
|
84faa7229d | ||
|
254747ee78 | ||
|
ef167051d6 | ||
|
1ccbdc2341 | ||
|
14747b79cd | ||
|
111385f1ef | ||
|
f36d395a84 | ||
|
5d997084f7 | ||
|
132548181f | ||
|
452c71e8cb | ||
|
f7ac95f850 | ||
|
33286efe9a | ||
|
f21a93febe | ||
|
f817c47dc0 | ||
|
9ccca16df7 | ||
|
114f5695b7 | ||
|
916fa39012 | ||
|
db77a51129 | ||
|
b09d6e8568 | ||
|
3bf9438a59 | ||
|
554894e910 | ||
|
51f1e0202f | ||
|
8b7758442b | ||
|
63bf7694f0 | ||
|
df3aaa7dfd | ||
|
826006ce8b | ||
|
1e085ee619 | ||
|
efb753e229 | ||
|
faf332a0e8 | ||
|
83308337b5 | ||
|
73193df120 | ||
|
2dd27cdd00 | ||
|
c5e3672e9e | ||
|
366517999f | ||
|
8445ffaa86 | ||
|
2a76970461 | ||
|
9fcaf5bd18 | ||
|
652add9af2 | ||
|
c632ea5c48 | ||
|
7ee5f68770 | ||
|
1040675781 | ||
|
24a37e0fef | ||
|
bfe2d262a5 | ||
|
8faf5148a6 | ||
|
27c5dd1852 | ||
|
fae51b90a7 | ||
|
ccd181851c | ||
|
cd0ff94c0c | ||
|
e9e6d8a69c | ||
|
7ad3b34ec3 | ||
|
f39021d373 | ||
|
13116fec76 | ||
|
d49b2ec0e9 | ||
|
09d088b2b5 | ||
|
3312bd27c9 | ||
|
453bdb293f | ||
|
6b0e1598ed | ||
|
56f25d3094 | ||
|
3e458c0028 | ||
|
a747828276 | ||
|
a90e3e04a4 | ||
|
487f01d2ec | ||
|
36c25fdd86 | ||
|
a9fecb31c3 | ||
|
ca8fd8d7ae | ||
|
fb345b1317 | ||
|
966fe38ae3 | ||
|
3042e615ac | ||
|
fd2ae51b93 | ||
|
1227730393 | ||
|
8622bd506f | ||
|
5d6a39ce51 | ||
|
5245c06ed3 | ||
|
3c5977346e | ||
|
a3dc9c2721 | ||
|
90ec1f5bc6 | ||
|
99caa014ca | ||
|
00d0cd1cf7 | ||
|
d6480e50d2 | ||
|
a1a06dd7d0 | ||
|
95b73b5f41 | ||
|
cc00cdfa55 | ||
|
548ba7d712 | ||
|
1ea0c56d7b | ||
|
f764e76f01 | ||
|
4862c2e8ea | ||
|
cbb4d43981 | ||
|
87269e6bcd | ||
|
7d19d294a6 | ||
|
5f3ac323ff | ||
|
0a766d7314 | ||
|
e73535ace0 | ||
|
8e93f0975f | ||
|
57c316a591 | ||
|
f1691b7743 | ||
|
92a025011e | ||
|
d5fa8d0216 | ||
|
1f74a42dfa | ||
|
569b567f21 | ||
|
85f890e7c5 | ||
|
4056fc2281 | ||
|
70c2f0a70a | ||
|
aac8d58372 | ||
|
8ec233f59c | ||
|
a0dd7f58ac | ||
|
443e04b369 | ||
|
cfd9bca4d6 | ||
|
f17157f7e2 | ||
|
18b9f5c79b | ||
|
1b060925a4 | ||
|
00fa618596 | ||
|
131ec9e913 | ||
|
e31ec031f4 | ||
|
431ce430a0 | ||
|
5cdc1e93b3 | ||
|
09216b8b59 | ||
|
1bb3632a70 | ||
|
03617eb8a7 | ||
|
034e568d26 | ||
|
a0faca0997 | ||
|
5268b5bf6b | ||
|
5b3f05f939 | ||
|
b1a669de01 | ||
|
a5f118bc26 | ||
|
10978781cd | ||
|
8bdec4c2b4 | ||
|
be58fced93 | ||
|
c5dfa4c055 | ||
|
74bc9b36aa | ||
|
993fbfb93f | ||
|
97b5276f81 | ||
|
c6c7de286a | ||
|
aec77b543c | ||
|
34b265475d | ||
|
4e95486c5c | ||
|
296b60800a | ||
|
332e19ce64 | ||
|
8984243020 | ||
|
65c47189f9 | ||
|
6aca77a0ae | ||
|
0670ad92d7 | ||
|
bce71a00e9 | ||
|
83b50aaa8e | ||
|
c7c4371902 | ||
|
4978a473a1 | ||
|
4d89d9f285 | ||
|
15770e9298 | ||
|
06797ec0ab | ||
|
b69bf84ab6 | ||
|
7ec02fc8d8 | ||
|
dd28c9f4d7 | ||
|
7fe98e9dc9 | ||
|
6358c39810 | ||
|
294cc4a440 | ||
|
ae1347bb7c | ||
|
b6d659baf2 | ||
|
5756e160da | ||
|
113c046de6 | ||
|
1ef4e574b7 | ||
|
eccc74cf72 | ||
|
a4137a83d8 | ||
|
ed9b4fb831 | ||
|
1d31f63947 | ||
|
74cda4e2ab | ||
|
39db5cd061 | ||
|
11d9e0a72f | ||
|
7683284352 | ||
|
e84ea8ab04 | ||
|
b638056150 | ||
|
ff86c253d3 | ||
|
86d9f7e1cb | ||
|
385fe7bbe0 | ||
|
313587097a | ||
|
8393ccc7f8 | ||
|
e3ba605592 | ||
|
035557de9f | ||
|
97ff2b51f1 | ||
|
87f7fb6841 | ||
|
9fe31544f7 | ||
|
89dfbe3ec1 | ||
|
0c640c5e77 | ||
|
a3eec19b32 | ||
|
c0c3b4d23e | ||
|
1812587970 | ||
|
1bb724fe0e | ||
|
346f49fa66 | ||
|
55d25308f8 | ||
|
514a8cf841 | ||
|
837826ea4f | ||
|
681d1d67f3 | ||
|
d2f3252de2 | ||
|
859d3e867e | ||
|
238683e36f | ||
|
2ae08ff46e | ||
|
ce672915da | ||
|
a2071bfed2 | ||
|
03c3feef16 | ||
|
b3f4414026 | ||
|
04c6863d7f | ||
|
b678e2fb5d | ||
|
1179de7c36 | ||
|
58ca1a938b | ||
|
9713034f18 | ||
|
28b8818c4d | ||
|
2e2a2b3193 | ||
|
42900bcc66 | ||
|
ce451c5850 | ||
|
5b4477f7bd | ||
|
660ebcfc77 | ||
|
86872fb07c | ||
|
c55bb95950 | ||
|
d613d1ab4e | ||
|
cd5d648eec | ||
|
384b17738a | ||
|
500c8facdb | ||
|
6f76fe728f | ||
|
2488dd3806 | ||
|
9d3cccdf71 | ||
|
8dc75efc4c | ||
|
7caed19a32 | ||
|
a301470ac5 | ||
|
f899c97c4c | ||
|
8630c8e630 | ||
|
29daec2c07 | ||
|
ce3a28de70 | ||
|
1e6cc11868 | ||
|
3e0f6994a1 | ||
|
c10e617870 | ||
|
cade585292 | ||
|
f60e105d77 | ||
|
b622f9b938 | ||
|
00084c5798 | ||
|
554fb7026a | ||
|
04a6c36b5c | ||
|
adbf819cc0 | ||
|
3062f83367 | ||
|
bdb2e588f3 | ||
|
688d807eee | ||
|
06aa64016f | ||
|
06c7c132b8 | ||
|
fcb837ca99 | ||
|
7f34afcaea | ||
|
876fa324e5 | ||
|
f781183250 | ||
|
c1ae449ce2 | ||
|
c4aa18a63e | ||
|
27b86fbb00 | ||
|
569c6d8479 | ||
|
d3e2d3fc4a | ||
|
9b5ee63638 | ||
|
dee68681f5 | ||
|
f85db1496e | ||
|
0839b0314e | ||
|
40dbb8bd7f | ||
|
2de5c1bbf8 | ||
|
20edc63785 | ||
|
b936f9ba7c | ||
|
a5419e61d5 | ||
|
ec4d4141ef | ||
|
b5a16f756a | ||
|
0331d2a8db | ||
|
79eedcf6a6 | ||
|
0715340dc0 | ||
|
a59ad20bd5 | ||
|
e3de158d18 | ||
|
e9514e742b | ||
|
d2c060cd97 | ||
|
57fc70cec1 | ||
|
180f52dab2 | ||
|
0c6df3dd73 | ||
|
b29bf7de5d | ||
|
382f0d8218 | ||
|
55d72a8f68 | ||
|
e9ebd845b9 | ||
|
ea29cf4e13 | ||
|
d260d0efce | ||
|
e92f89df99 | ||
|
44e8950f1b | ||
|
32141d4e23 | ||
|
7d068cfb87 | ||
|
9c3e751ebc | ||
|
eecad1aefc | ||
|
eb06ac673b | ||
|
5e2c54f2ad | ||
|
15649c89f1 | ||
|
42483a4d46 | ||
|
56b010ba0e | ||
|
cfd98e3a4d | ||
|
40db753417 | ||
|
3d2c100fe9 | ||
|
fd4d7ead43 | ||
|
073df50244 | ||
|
6973734d5b | ||
|
b44b30124c | ||
|
60f447dd49 | ||
|
7638bdf171 | ||
|
9dc480e8d1 | ||
|
c2dbb9606f | ||
|
a40c3b792e | ||
|
08aa2ae939 | ||
|
85d98f5254 | ||
|
310a90744a | ||
|
b3ec92a57e | ||
|
b9eb4522f5 | ||
|
04298f0eba | ||
|
a53a8d67a1 | ||
|
6467bf0fc1 | ||
|
4ac0cdf556 | ||
|
3e34f150b8 | ||
|
e72cce0d07 | ||
|
78b8839ae3 | ||
|
49cd17e520 | ||
|
c16ce1c434 | ||
|
8eea3953f3 | ||
|
8cb9c08bcb | ||
|
bc7a0fa095 | ||
|
298549e51a | ||
|
da393f6c34 | ||
|
8bdac6ffbf | ||
|
55cafb8891 | ||
|
238468ddaa | ||
|
b152732d7f | ||
|
56dde88003 | ||
|
9e0a0468b2 | ||
|
e203397f89 | ||
|
3e22041672 | ||
|
0d018a8d7a | ||
|
c3954d7326 | ||
|
d7401d70a7 | ||
|
bae16f7a65 | ||
|
25cd5affca | ||
|
91004f5714 | ||
|
c35085d1d5 | ||
|
17a8ce5010 | ||
|
4d8fcff6d5 | ||
|
75cb639ed2 | ||
|
3222b620b9 | ||
|
d7a0d74c4d | ||
|
52810c51f5 | ||
|
1b96a16586 | ||
|
971c4e5e84 | ||
|
9ef0a504ec | ||
|
e59211deea | ||
|
3177729663 | ||
|
70c7804a43 | ||
|
c40682f16f | ||
|
406c778cfd | ||
|
9d17ab429d | ||
|
20f8bb76f7 | ||
|
5e4c35a18f | ||
|
9a6484c488 | ||
|
1dfebf5ed3 | ||
|
be2f4d3d79 | ||
|
a1cea6776f | ||
|
3c10282848 | ||
|
d9a16b5c0f | ||
|
28c7268f82 | ||
|
3eab87ae69 | ||
|
9acbac6613 | ||
|
9a10cd4bec | ||
|
5aba1e38a2 | ||
|
b812027281 | ||
|
dfc08da40c | ||
|
f5f47f3c08 | ||
|
8d5ee36745 | ||
|
7068670554 | ||
|
6e3162f92f | ||
|
6494b74d0c | ||
|
d26d9f16d9 | ||
|
4c6969b17d | ||
|
9a2a251eec | ||
|
f6c7213f69 | ||
|
4827d0bf92 | ||
|
f0f6590312 | ||
|
fa83d48141 | ||
|
c409160ad7 | ||
|
ff1f1b190e | ||
|
53d5cf55bc | ||
|
f19b1c5364 | ||
|
07fbd547dc | ||
|
cb540a5abb | ||
|
a7b303259c | ||
|
ee181c1fd6 | ||
|
2e8fc99c5c | ||
|
4a78cd2564 | ||
|
95e42c4ca7 | ||
|
98bb0250f2 | ||
|
5aba5e544d | ||
|
0ca36bbf66 | ||
|
5d3034d418 | ||
|
438dddda6e | ||
|
8bd6132398 | ||
|
d1c6c0622b | ||
|
bd5b3feabe | ||
|
22f4d19dd1 | ||
|
a86f859b42 | ||
|
4bef8aa632 | ||
|
40ae03c438 | ||
|
afedc53354 | ||
|
0d5bca20d3 | ||
|
f254255ba5 | ||
|
fc1c1a3c20 | ||
|
3c31b2bc38 | ||
|
b4cc6803e7 | ||
|
2ac7997c07 | ||
|
0055345689 | ||
|
f43f5c0a34 | ||
|
dee66ec6ad | ||
|
094175c067 | ||
|
e5a643e796 | ||
|
ef9a1daf18 | ||
|
9035fe67a4 | ||
|
fc1da80086 | ||
|
d5ac7c6bc0 | ||
|
28fd9c3039 | ||
|
83599234a9 | ||
|
c2e49ebb2b | ||
|
64684dc896 | ||
|
0b63ba1a28 | ||
|
47f95cb294 | ||
|
69cbd45782 | ||
|
31368f3148 | ||
|
1fb1d4714c | ||
|
69e591c01d | ||
|
2bc0d5e8e7 | ||
|
57c182b9a4 | ||
|
ac721cf8f4 | ||
|
935f90422f | ||
|
c308f858f1 | ||
|
5ce5edf7ba | ||
|
16594eaae3 | ||
|
1548eab677 | ||
|
ae9c8f27da | ||
|
ea6b704754 | ||
|
ff62bd8ff7 | ||
|
774d924abd | ||
|
9a115c9e93 | ||
|
9f5109aed7 | ||
|
dd04a39f3b | ||
|
514123d2b6 | ||
|
fbeaf31a14 | ||
|
e5e191110c | ||
|
836e23c082 | ||
|
4c5e708977 | ||
|
1b846fca90 | ||
|
f1a833ef21 | ||
|
4a61ff2df3 | ||
|
2e3783f1c6 | ||
|
de03679be0 | ||
|
5820f63ea6 | ||
|
bfc31127af | ||
|
d1db799b5c | ||
|
5a30a790ca | ||
|
ab8f1492b1 | ||
|
7cfe9bb4b6 | ||
|
563b9d8f71 | ||
|
2aea7fcc25 | ||
|
e2a79c16c1 | ||
|
2d0a53eaca | ||
|
0b2bb80bb8 | ||
|
f378662196 | ||
|
6588adbfe0 | ||
|
7ae9f30922 | ||
|
1cfbf000d6 | ||
|
7f50cb9787 | ||
|
7dbbcb06b5 | ||
|
4b520222ed | ||
|
d4b32d3a91 | ||
|
9aaea7fb69 | ||
|
6e1331e580 | ||
|
9f81f4cc49 | ||
|
530375f221 | ||
|
640174b7cd | ||
|
279416b66d | ||
|
9602323e0f | ||
|
115eb5defb | ||
|
012fe0fb44 | ||
|
771ada0184 | ||
|
cb21a91fac | ||
|
3000afca49 | ||
|
b7189d57f2 | ||
|
e5d53b6276 | ||
|
ecb6ac3554 | ||
|
1b27e4c07d | ||
|
4151c65fc2 | ||
|
c626386ebd | ||
|
7dfa3137c4 | ||
|
0f9da943cd | ||
|
485a685e5a | ||
|
3a0b180487 | ||
|
605233c572 | ||
|
37344fe718 | ||
|
f74570b403 | ||
|
13f907e7f1 | ||
|
f2ee35c82a | ||
|
29d4a026e2 | ||
|
c7e312e959 | ||
|
e6a811e259 | ||
|
5408dd71d3 | ||
|
edc8865e50 | ||
|
a80fea9c4b | ||
|
92c85ca07c | ||
|
296d586b04 | ||
|
6f0fd4219e | ||
|
35fe392058 | ||
|
61f8a2afd3 | ||
|
347ba9bb38 | ||
|
802f6c462e | ||
|
39b44ff439 | ||
|
627b830739 | ||
|
d58185afe0 | ||
|
0b3a5a431d | ||
|
c54603025b | ||
|
debd8a6ebe | ||
|
d614d40cfd | ||
|
628877147e | ||
|
c163491371 | ||
|
16d77bfa10 | ||
|
11e1a49b5c | ||
|
b1877fcd0d | ||
|
4b7f0bfbb9 | ||
|
2f06697aa2 | ||
|
07aba918a0 | ||
|
01ec640bdb | ||
|
c1e5adf658 | ||
|
a364f66d4b | ||
|
a906e73b22 | ||
|
8b9ce9ec72 | ||
|
e462881502 | ||
|
0e8f0a2dc1 | ||
|
2252a06a50 | ||
|
6ecc478402 | ||
|
da06383458 | ||
|
a56c78db8b | ||
|
6ebc7993be | ||
|
b8243e5518 | ||
|
a5a4aaf765 | ||
|
0f793a4cf0 | ||
|
ce11761dc9 | ||
|
437b3bbfe8 | ||
|
6dbfa6e4d8 | ||
|
3451133fd7 | ||
|
1932187e0f | ||
|
eefde7baba | ||
|
a225c11822 | ||
|
b35246cd64 | ||
|
4289c08538 | ||
|
b58ca5095c | ||
|
a2e5125335 | ||
|
7938eab6e2 | ||
|
b322ff247c | ||
|
fc8fadce2b | ||
|
9485c323d1 | ||
|
40749cabff | ||
|
cddd8213d5 | ||
|
fd48697fb2 | ||
|
28819931a3 | ||
|
815fe8d3ba | ||
|
564adb9a57 | ||
|
987417502f | ||
|
43d36f9415 | ||
|
24776ee6ce | ||
|
9a26e8aafd | ||
|
0e45336140 | ||
|
2d4fc08f2b | ||
|
b51e16c255 | ||
|
bc8392ad52 | ||
|
dba218a681 | ||
|
e83306c1f7 | ||
|
a0f003f9d5 | ||
|
0e6b5b338c | ||
|
ddbd3601ab | ||
|
236d977c41 | ||
|
7c539976dd | ||
|
fa0b741529 | ||
|
a133bb06a3 | ||
|
e71ec2bc49 | ||
|
99e8818ba0 | ||
|
e4197a985e | ||
|
c023cee0b8 | ||
|
e42fa68114 | ||
|
582f0853bb | ||
|
07ee20a0ff | ||
|
7f78e94d6e | ||
|
3fbf5ef5d0 | ||
|
25b12a2366 | ||
|
07b4117aa1 | ||
|
8abd9b401b | ||
|
1c5a79c353 | ||
|
149e409bfa | ||
|
e4854b0bc2 | ||
|
857e25d84f | ||
|
af59295968 | ||
|
c94ec4e064 | ||
|
999baf4b3d | ||
|
bfb802cd09 | ||
|
61cd924bb1 | ||
|
3e13a95053 | ||
|
b69d752734 | ||
|
821cc346f7 | ||
|
8402c20a3f |
9
.envrc
Normal file
@@ -0,0 +1,9 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Automatically sets up your devbox environment whenever you cd into this
|
||||
# directory via our direnv integration:
|
||||
|
||||
eval "$(devbox generate direnv --print-envrc)"
|
||||
|
||||
# check out https://www.jetpack.io/devbox/docs/ide_configuration/direnv/
|
||||
# for more details
|
699
.eslintignore
41
.eslintrc.js
@@ -15,6 +15,19 @@ module.exports = {
|
||||
'globals': {
|
||||
'Atomics': 'readonly',
|
||||
'SharedArrayBuffer': 'readonly',
|
||||
'BufferEncoding': 'readonly',
|
||||
'AsyncIterable': 'readonly',
|
||||
'FileSystemFileHandle': 'readonly',
|
||||
'FileSystemDirectoryHandle': 'readonly',
|
||||
'ReadableStreamDefaultReader': 'readonly',
|
||||
'FileSystemCreateWritableOptions': 'readonly',
|
||||
'FileSystemHandle': 'readonly',
|
||||
'IDBTransactionMode': 'readonly',
|
||||
|
||||
// ServiceWorker
|
||||
'ExtendableEvent': 'readonly',
|
||||
'WindowClient': 'readonly',
|
||||
'FetchEvent': 'readonly',
|
||||
|
||||
// Jest variables
|
||||
'test': 'readonly',
|
||||
@@ -70,6 +83,11 @@ module.exports = {
|
||||
'no-var': ['error'],
|
||||
'no-new-func': ['error'],
|
||||
'import/prefer-default-export': ['error'],
|
||||
'prefer-promise-reject-errors': ['error', {
|
||||
allowEmptyReject: true,
|
||||
}],
|
||||
'no-throw-literal': ['error'],
|
||||
'no-unused-expressions': ['error'],
|
||||
|
||||
// This rule should not be enabled since it matters in what order
|
||||
// imports are done, in particular in relation to the shim.setReact
|
||||
@@ -101,6 +119,19 @@ module.exports = {
|
||||
'no-unneeded-ternary': 'error',
|
||||
'github/array-foreach': ['error'],
|
||||
|
||||
'no-restricted-properties': ['error',
|
||||
{
|
||||
'property': 'focus',
|
||||
'message': 'Please use focusHandler::focus() instead',
|
||||
},
|
||||
{
|
||||
'property': 'blur',
|
||||
'message': 'Please use focusHandler::blur() instead',
|
||||
},
|
||||
],
|
||||
|
||||
'@typescript-eslint/no-explicit-any': ['error'],
|
||||
|
||||
// -------------------------------
|
||||
// Formatting
|
||||
// -------------------------------
|
||||
@@ -253,7 +284,15 @@ module.exports = {
|
||||
selector: 'enumMember',
|
||||
format: null,
|
||||
'filter': {
|
||||
'regex': '^(GET|POST|PUT|DELETE|PATCH|HEAD|SQLite|PostgreSQL|ASC|DESC|E2EE|OR|AND|UNION|INTERSECT|EXCLUSION|INCLUSION|EUR|GBP|USD|SJCL.*)$',
|
||||
'regex': '^(GET|POST|PUT|DELETE|PATCH|HEAD|SQLite|PostgreSQL|ASC|DESC|E2EE|OR|AND|UNION|INTERSECT|EXCLUSION|INCLUSION|EUR|GBP|USD|SJCL.*|iOS)$',
|
||||
'match': true,
|
||||
},
|
||||
},
|
||||
{
|
||||
selector: 'enumMember',
|
||||
format: null,
|
||||
'filter': {
|
||||
'regex': '^(sha1|sha256|sha384|sha512|AES_128_GCM|AES_192_GCM|AES_256_GCM)$',
|
||||
'match': true,
|
||||
},
|
||||
},
|
||||
|
4
.github/PULL_REQUEST_TEMPLATE
vendored
@@ -20,6 +20,6 @@ If it's not related to any platform (such as a translation, change to the docume
|
||||
|
||||
Then please append the issue that you've addressed or fixed. Use "Resolves #123" for new features or improvements and "Fixes #123" for bug fixes.
|
||||
|
||||
AND PLEASE READ THE GUIDE: https://github.com/laurent22/joplin/blob/dev/CONTRIBUTING.md
|
||||
AND PLEASE READ THE GUIDE: https://github.com/laurent22/joplin/blob/dev/readme/dev/index.md
|
||||
|
||||
-->
|
||||
-->
|
77
.github/scripts/run_ci.sh
vendored
@@ -67,6 +67,7 @@ echo "IS_MACOS=$IS_MACOS"
|
||||
echo "Node $( node -v )"
|
||||
echo "Npm $( npm -v )"
|
||||
echo "Yarn $( yarn -v )"
|
||||
echo "Rust $( rustc --version )"
|
||||
|
||||
# =============================================================================
|
||||
# Install packages
|
||||
@@ -90,7 +91,7 @@ if [ "$RUN_TESTS" == "1" ]; then
|
||||
# On Linux, we run the Joplin Server tests using PostgreSQL
|
||||
if [ "$IS_LINUX" == "1" ]; then
|
||||
echo "Running Joplin Server tests using PostgreSQL..."
|
||||
sudo docker-compose --file docker-compose.db-dev.yml up -d
|
||||
sudo docker compose --file docker-compose.db-dev.yml up -d
|
||||
cmdResult=$?
|
||||
if [ $cmdResult -ne 0 ]; then
|
||||
exit $cmdResult
|
||||
@@ -107,7 +108,7 @@ if [ "$RUN_TESTS" == "1" ]; then
|
||||
#
|
||||
# https://stackoverflow.com/questions/38558989
|
||||
export NODE_OPTIONS="--max-old-space-size=32768"
|
||||
yarn run test-ci
|
||||
yarn test-ci
|
||||
testResult=$?
|
||||
if [ $testResult -ne 0 ]; then
|
||||
exit $testResult
|
||||
@@ -122,13 +123,13 @@ fi
|
||||
if [ "$RUN_TESTS" == "1" ]; then
|
||||
echo "Step: Running linter..."
|
||||
|
||||
yarn run linter-ci ./
|
||||
yarn linter-ci ./
|
||||
testResult=$?
|
||||
if [ $testResult -ne 0 ]; then
|
||||
exit $testResult
|
||||
fi
|
||||
|
||||
yarn run packageJsonLint
|
||||
yarn packageJsonLint
|
||||
testResult=$?
|
||||
if [ $testResult -ne 0 ]; then
|
||||
exit $testResult
|
||||
@@ -141,15 +142,13 @@ fi
|
||||
# for Linux only is sufficient.
|
||||
# =============================================================================
|
||||
|
||||
if [ "$IS_PULL_REQUEST" == "1" ]; then
|
||||
if [ "$IS_LINUX" == "1" ]; then
|
||||
echo "Step: Validating translations..."
|
||||
if [ "$IS_LINUX" == "1" ]; then
|
||||
echo "Step: Validating translations..."
|
||||
|
||||
node packages/tools/validate-translation.js
|
||||
testResult=$?
|
||||
if [ $testResult -ne 0 ]; then
|
||||
exit $testResult
|
||||
fi
|
||||
node packages/tools/validate-translation.js
|
||||
testResult=$?
|
||||
if [ $testResult -ne 0 ]; then
|
||||
exit $testResult
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -175,19 +174,21 @@ fi
|
||||
|
||||
# =============================================================================
|
||||
# Check .gitignore and .eslintignore files - they should be updated when
|
||||
# new TypeScript files are added by running `yarn run updateIgnored`.
|
||||
# new TypeScript files are added by running `yarn updateIgnored`.
|
||||
# See coding_style.md
|
||||
# =============================================================================
|
||||
|
||||
if [ "$IS_PULL_REQUEST" == "1" ]; then
|
||||
if [ "$IS_LINUX" == "1" ]; then
|
||||
echo "Step: Checking for files that should have been ignored..."
|
||||
if [ "$IS_LINUX" == "1" ]; then
|
||||
echo "Step: Checking for files that should have been ignored..."
|
||||
|
||||
node packages/tools/checkIgnoredFiles.js
|
||||
testResult=$?
|
||||
if [ $testResult -ne 0 ]; then
|
||||
exit $testResult
|
||||
fi
|
||||
# .gitignore and .eslintignore can be modified during yarn install. Reset them
|
||||
# so that checkIgnoredFiles works.
|
||||
git restore .gitignore .eslintignore
|
||||
|
||||
node packages/tools/checkIgnoredFiles.js
|
||||
testResult=$?
|
||||
if [ $testResult -ne 0 ]; then
|
||||
exit $testResult
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -196,11 +197,27 @@ fi
|
||||
# =============================================================================
|
||||
|
||||
if [ "$RUN_TESTS" == "1" ]; then
|
||||
echo "Step: Check that the website still builds..."
|
||||
if [ "$IS_LINUX" == "1" ]; then
|
||||
echo "Step: Check that the website still builds..."
|
||||
|
||||
mkdir -p ../joplin-website/docs
|
||||
ll ../joplin-website/docs/api/references/plugin_api
|
||||
SKIP_SPONSOR_PROCESSING=1 yarn run buildWebsite
|
||||
mkdir -p ../joplin-website/docs
|
||||
CROWDIN_PERSONAL_TOKEN="$CROWDIN_PERSONAL_TOKEN" yarn crowdinDownload
|
||||
SKIP_SPONSOR_PROCESSING=1 yarn buildWebsite
|
||||
testResult=$?
|
||||
if [ $testResult -ne 0 ]; then
|
||||
exit $testResult
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# =============================================================================
|
||||
# Spellchecking
|
||||
# =============================================================================
|
||||
|
||||
if [ "$IS_LINUX" == "1" ]; then
|
||||
echo "Step: Spellchecking..."
|
||||
|
||||
yarn spellcheck --all
|
||||
testResult=$?
|
||||
if [ $testResult -ne 0 ]; then
|
||||
exit $testResult
|
||||
@@ -253,14 +270,14 @@ if [ "$IS_DESKTOP_RELEASE" == "1" ]; then
|
||||
# "python" and seems to no longer respect the PYTHON_PATH environment variable.
|
||||
# We work around this by aliasing python.
|
||||
alias python=$(which python3)
|
||||
USE_HARD_LINKS=false yarn run dist
|
||||
USE_HARD_LINKS=false yarn dist
|
||||
else
|
||||
USE_HARD_LINKS=false yarn run dist
|
||||
USE_HARD_LINKS=false yarn dist
|
||||
fi
|
||||
elif [[ $IS_LINUX = 1 ]] && [ "$IS_SERVER_RELEASE" == "1" ]; then
|
||||
echo "Step: Building Docker Image..."
|
||||
cd "$ROOT_DIR"
|
||||
yarn run buildServerDocker --tag-name $GIT_TAG_NAME --push-images --repository $SERVER_REPOSITORY
|
||||
yarn buildServerDocker --tag-name $GIT_TAG_NAME --push-images --repository $SERVER_REPOSITORY
|
||||
else
|
||||
echo "Step: Building but *not* publishing desktop application..."
|
||||
|
||||
@@ -274,8 +291,8 @@ else
|
||||
export CSC_IDENTITY_AUTO_DISCOVERY=false
|
||||
npm pkg set 'build.mac.identity'=null --json
|
||||
|
||||
USE_HARD_LINKS=false yarn run dist --publish=never
|
||||
USE_HARD_LINKS=false yarn dist --publish=never
|
||||
else
|
||||
USE_HARD_LINKS=false yarn run dist --publish=never
|
||||
USE_HARD_LINKS=false yarn dist --publish=never
|
||||
fi
|
||||
fi
|
||||
|
25
.github/workflows/automerge.yml
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
name: automerge
|
||||
on:
|
||||
schedule:
|
||||
- cron: '*/10 * * * *'
|
||||
jobs:
|
||||
|
||||
# This job will make the action fail if any of the checks hasn't passed
|
||||
# https://github.com/marketplace/actions/allcheckspassed
|
||||
# allchecks:
|
||||
# runs-on: ubuntu-latest
|
||||
# steps:
|
||||
# - uses: wechuli/allcheckspassed@v1
|
||||
|
||||
automerge:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
steps:
|
||||
- id: automerge
|
||||
name: automerge
|
||||
uses: "pascalgn/automerge-action@v0.16.3"
|
||||
env:
|
||||
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
|
||||
MERGE_METHOD: "squash"
|
||||
LOG: "DEBUG"
|
29
.github/workflows/build-android.yml
vendored
@@ -5,34 +5,29 @@ name: react-native-android-build-apk
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
pre_job:
|
||||
AssembleRelease:
|
||||
if: github.repository == 'laurent22/joplin'
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
should_skip: ${{ steps.skip_check.outputs.should_skip }}
|
||||
steps:
|
||||
- id: skip_check
|
||||
uses: fkirc/skip-duplicate-actions@v5
|
||||
with:
|
||||
concurrent_skipping: 'same_content_newer'
|
||||
|
||||
BuildAndroidDebug:
|
||||
needs: pre_job
|
||||
if: github.repository == 'laurent22/joplin' && needs.pre_job.outputs.should_skip != 'true'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Install Linux dependencies
|
||||
run: |
|
||||
sudo apt-get update || true
|
||||
sudo apt-get install -y libsecret-1-dev
|
||||
|
||||
- uses: actions/setup-java@v4
|
||||
with:
|
||||
distribution: 'temurin'
|
||||
java-version: '20'
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- uses: actions/setup-node@v2
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '18'
|
||||
cache: 'yarn'
|
||||
|
||||
- uses: dtolnay/rust-toolchain@stable
|
||||
|
||||
- name: Install Yarn
|
||||
run: |
|
||||
corepack enable
|
||||
@@ -40,7 +35,9 @@ jobs:
|
||||
- name: Install
|
||||
run: yarn install
|
||||
|
||||
- name: Build Android Release
|
||||
- name: Assemble Android Release
|
||||
run: |
|
||||
cd packages/app-mobile/android && ./gradlew assembleDebug
|
||||
cd packages/app-mobile/android
|
||||
sed -i -- 's/signingConfig signingConfigs.release/signingConfig signingConfigs.debug/' app/build.gradle
|
||||
./gradlew assembleRelease
|
||||
|
45
.github/workflows/build-macos-m1.yml
vendored
@@ -1,27 +1,15 @@
|
||||
name: Build macOS M1
|
||||
on: [push, pull_request]
|
||||
jobs:
|
||||
pre_job:
|
||||
if: github.repository == 'laurent22/joplin'
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
should_skip: ${{ steps.skip_check.outputs.should_skip }}
|
||||
steps:
|
||||
- id: skip_check
|
||||
uses: fkirc/skip-duplicate-actions@v5
|
||||
with:
|
||||
concurrent_skipping: 'same_content_newer'
|
||||
|
||||
Main:
|
||||
needs: pre_job
|
||||
# We always process desktop release tags, because they also publish the release
|
||||
if: github.repository == 'laurent22/joplin' && (needs.pre_job.outputs.should_skip != 'true' || startsWith(github.ref, 'refs/tags/v'))
|
||||
if: github.repository == 'laurent22/joplin'
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
- uses: olegtarasov/get-tag@v2.1
|
||||
- uses: actions/setup-node@v2
|
||||
- uses: olegtarasov/get-tag@v2.1.3
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
# We need to pin the version to 18.15, because 18.16+ fails with this error:
|
||||
# https://github.com/facebook/react-native/issues/36440
|
||||
@@ -40,10 +28,18 @@ jobs:
|
||||
brew install pango
|
||||
|
||||
# See github-action-main.yml for explanation
|
||||
- uses: actions/setup-python@v4
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.11'
|
||||
|
||||
- name: Set Publish Flag
|
||||
run: |
|
||||
if [[ $GIT_TAG_NAME = v* ]]; then
|
||||
echo "PUBLISH_ENABLED=true" >> $GITHUB_ENV
|
||||
else
|
||||
echo "PUBLISH_ENABLED=false" >> $GITHUB_ENV
|
||||
fi
|
||||
|
||||
- name: Build macOS M1 app
|
||||
env:
|
||||
APPLE_ASC_PROVIDER: ${{ secrets.APPLE_ASC_PROVIDER }}
|
||||
@@ -56,20 +52,23 @@ jobs:
|
||||
GH_REPO: ${{ github.repository }}
|
||||
IS_CONTINUOUS_INTEGRATION: 1
|
||||
BUILD_SEQUENCIAL: 1
|
||||
PUBLISH_ENABLED: ${{ env.PUBLISH_ENABLED }}
|
||||
run: |
|
||||
export npm_config_arch=arm64
|
||||
export npm_config_target_arch=arm64
|
||||
yarn install
|
||||
cd packages/app-desktop
|
||||
npm pkg set 'build.mac.artifactName'='${productName}-${version}-${arch}.${ext}'
|
||||
npm pkg set 'build.mac.target.target'='dmg'
|
||||
npm pkg set 'build.mac.target.arch[0]'='arm64'
|
||||
npm pkg set 'build.mac.target[0].target'='dmg'
|
||||
npm pkg set 'build.mac.target[0].arch[0]'='arm64'
|
||||
npm pkg set 'build.mac.target[1].target'='zip'
|
||||
npm pkg set 'build.mac.target[1].arch[0]'='arm64'
|
||||
|
||||
if [[ $GIT_TAG_NAME = v* ]]; then
|
||||
if [[ "$PUBLISH_ENABLED" == "true" ]]; then
|
||||
echo "Building and publishing desktop application..."
|
||||
PYTHON_PATH=$(which python) USE_HARD_LINKS=false yarn run dist --mac --arm64
|
||||
PYTHON_PATH=$(which python) USE_HARD_LINKS=false yarn dist --mac --arm64
|
||||
|
||||
yarn renameReleaseAssets --repo="$GH_REPO" --tag="$GIT_TAG_NAME" --token="$GITHUB_TOKEN"
|
||||
yarn modifyReleaseAssets --repo="$GH_REPO" --tag="$GIT_TAG_NAME" --token="$GITHUB_TOKEN"
|
||||
else
|
||||
echo "Building but *not* publishing desktop application..."
|
||||
|
||||
@@ -80,5 +79,5 @@ jobs:
|
||||
export CSC_IDENTITY_AUTO_DISCOVERY=false
|
||||
npm pkg set 'build.mac.identity'=null --json
|
||||
|
||||
PYTHON_PATH=$(which python) USE_HARD_LINKS=false yarn run dist --mac --arm64 --publish=never
|
||||
fi
|
||||
PYTHON_PATH=$(which python) USE_HARD_LINKS=false yarn dist --mac --arm64 --publish=never
|
||||
fi
|
4
.github/workflows/cla.yml
vendored
@@ -13,7 +13,7 @@ jobs:
|
||||
- name: "CLA Assistant"
|
||||
if: (github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA') || github.event_name == 'pull_request_target'
|
||||
# Beta Release
|
||||
uses: contributor-assistant/github-action@v2.3.1
|
||||
uses: contributor-assistant/github-action@v2.3.2
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
# the below token should have repo scope and must be manually added by you in the repository's secret
|
||||
@@ -22,7 +22,7 @@ jobs:
|
||||
path-to-signatures: 'readme/cla_signatures.json'
|
||||
path-to-document: 'https://github.com/laurent22/joplin/blob/dev/readme/cla.md' # e.g. a CLA or a DCO document
|
||||
# branch should not be protected
|
||||
branch: 'dev'
|
||||
branch: 'cla_signatures'
|
||||
allowlist: joplinbot,renovate[bot]
|
||||
|
||||
# the followings are the optional inputs - If the optional inputs are not given, then default values will be taken
|
||||
|
2
.github/workflows/close-stale-issues.yml
vendored
@@ -9,7 +9,7 @@ jobs:
|
||||
if: github.repository == 'laurent22/joplin'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/stale@v4
|
||||
- uses: actions/stale@v9
|
||||
with:
|
||||
# Use this to do a dry run from a pull request
|
||||
# debug-only: true
|
||||
|
37
.github/workflows/github-actions-main.yml
vendored
@@ -1,29 +1,15 @@
|
||||
name: Joplin Continuous Integration
|
||||
on: [push, pull_request]
|
||||
jobs:
|
||||
pre_job:
|
||||
if: github.repository == 'laurent22/joplin'
|
||||
# Do not use unbuntu-latest because it causes `The operation was canceled` failures:
|
||||
# https://github.com/actions/runner-images/issues/6709
|
||||
runs-on: ubuntu-20.04
|
||||
outputs:
|
||||
should_skip: ${{ steps.skip_check.outputs.should_skip }}
|
||||
steps:
|
||||
- id: skip_check
|
||||
uses: fkirc/skip-duplicate-actions@v5
|
||||
with:
|
||||
concurrent_skipping: 'same_content_newer'
|
||||
|
||||
Main:
|
||||
needs: pre_job
|
||||
# We always process server or desktop release tags, because they also publish the release
|
||||
if: github.repository == 'laurent22/joplin' && (needs.pre_job.outputs.should_skip != 'true' || startsWith(github.ref, 'refs/tags/server-v') || startsWith(github.ref, 'refs/tags/v'))
|
||||
if: github.repository == 'laurent22/joplin'
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
# Do not use unbuntu-latest because it causes `The operation was canceled` failures:
|
||||
# https://github.com/actions/runner-images/issues/6709
|
||||
os: [macos-latest, ubuntu-20.04, windows-2019]
|
||||
os: [macos-13, ubuntu-20.04, windows-2019]
|
||||
steps:
|
||||
|
||||
# Trying to fix random networking issues on Windows
|
||||
@@ -82,8 +68,9 @@ jobs:
|
||||
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
- uses: olegtarasov/get-tag@v2.1
|
||||
- uses: actions/setup-node@v2
|
||||
- uses: olegtarasov/get-tag@v2.1.3
|
||||
- uses: dtolnay/rust-toolchain@stable
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
# We need to pin the version to 18.15, because 18.16+ fails with this error:
|
||||
# https://github.com/facebook/react-native/issues/36440
|
||||
@@ -109,7 +96,7 @@ jobs:
|
||||
# Python to an earlier version.
|
||||
# Fixes error `ModuleNotFoundError: No module named 'distutils'`
|
||||
# Ref: https://github.com/nodejs/node-gyp/issues/2869
|
||||
- uses: actions/setup-python@v4
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.11'
|
||||
|
||||
@@ -127,6 +114,7 @@ jobs:
|
||||
BUILD_SEQUENCIAL: 1
|
||||
SERVER_REPOSITORY: joplin/server
|
||||
SERVER_TAG_PREFIX: server
|
||||
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
|
||||
run: |
|
||||
"${GITHUB_WORKSPACE}/.github/scripts/run_ci.sh"
|
||||
|
||||
@@ -141,7 +129,7 @@ jobs:
|
||||
# To ensure that the operations stop on failure, all commands
|
||||
# should be on one line with "&&" in between.
|
||||
run: |
|
||||
yarn install && cd packages/app-desktop && yarn run dist
|
||||
yarn install && cd packages/app-desktop && yarn dist
|
||||
|
||||
# Build and package the Windows app, without publishing it, just to
|
||||
# verify that the build process hasn't been broken.
|
||||
@@ -153,11 +141,10 @@ jobs:
|
||||
SERVER_REPOSITORY: joplin/server
|
||||
SERVER_TAG_PREFIX: server
|
||||
run: |
|
||||
yarn install && cd packages/app-desktop && yarn run dist --publish=never
|
||||
yarn install && cd packages/app-desktop && yarn dist --publish=never
|
||||
|
||||
ServerDockerImage:
|
||||
needs: pre_job
|
||||
if: github.repository == 'laurent22/joplin' && needs.pre_job.outputs.should_skip != 'true'
|
||||
if: github.repository == 'laurent22/joplin'
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
@@ -182,7 +169,7 @@ jobs:
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- uses: actions/setup-node@v2
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '18'
|
||||
cache: 'yarn'
|
||||
@@ -197,7 +184,7 @@ jobs:
|
||||
BUILD_SEQUENCIAL: 1
|
||||
run: |
|
||||
yarn install
|
||||
yarn run buildServerDocker --tag-name server-v0.0.0 --repository joplin/server
|
||||
yarn buildServerDocker --tag-name server-v0.0.0 --repository joplin/server
|
||||
|
||||
# Basic test to ensure that the created build is valid. It should exit with
|
||||
# code 0 if it works.
|
||||
|
694
.gitignore
vendored
@@ -3,23 +3,23 @@
|
||||
"prefer-absolute-version-dependencies": ["error",
|
||||
{
|
||||
"exceptions": [
|
||||
"@joplin/lib",
|
||||
"@joplin/renderer",
|
||||
"@joplin/editor",
|
||||
"@joplin/pdf-viewer",
|
||||
"@joplin/fork-htmlparser2",
|
||||
"@joplin/fork-sax",
|
||||
"@joplin/fork-uslug",
|
||||
"@joplin/htmlpack",
|
||||
"@joplin/turndown",
|
||||
"@joplin/turndown-plugin-gfm",
|
||||
"@joplin/tools",
|
||||
"@joplin/react-native-saf-x",
|
||||
"@joplin/lib",
|
||||
"@joplin/onenote-converter",
|
||||
"@joplin/pdf-viewer",
|
||||
"@joplin/react-native-alarm-notification",
|
||||
"@joplin/react-native-saf-x",
|
||||
"@joplin/renderer",
|
||||
"@joplin/tools",
|
||||
"@joplin/turndown-plugin-gfm",
|
||||
"@joplin/turndown",
|
||||
"@joplin/utils"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
3
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"cSpell.enabled": true
|
||||
}
|
@@ -0,0 +1,62 @@
|
||||
diff --git a/android/src/newarch/java/com/reactnativecommunity/slider/ReactSliderManager.java b/android/src/newarch/java/com/reactnativecommunity/slider/ReactSliderManager.java
|
||||
index a5bb95eec3337b93a2338a2869a2bda176c91cae..87817688eb280c2f702c26dc35558c6a0a4db1ea 100644
|
||||
--- a/android/src/newarch/java/com/reactnativecommunity/slider/ReactSliderManager.java
|
||||
+++ b/android/src/newarch/java/com/reactnativecommunity/slider/ReactSliderManager.java
|
||||
@@ -42,12 +42,20 @@ public class ReactSliderManager extends SimpleViewManager<ReactSlider> implement
|
||||
public void onProgressChanged(SeekBar seekbar, int progress, boolean fromUser) {
|
||||
ReactSlider slider = (ReactSlider)seekbar;
|
||||
|
||||
- if(progress < slider.getLowerLimit()) {
|
||||
- progress = slider.getLowerLimit();
|
||||
- seekbar.setProgress(progress);
|
||||
- } else if (progress > slider.getUpperLimit()) {
|
||||
- progress = slider.getUpperLimit();
|
||||
- seekbar.setProgress(progress);
|
||||
+ // During initialization, lowerLimit can be greater than upperLimit.
|
||||
+ //
|
||||
+ // If a change event is received during this, we need a check to prevent
|
||||
+ // infinite recursion.
|
||||
+ //
|
||||
+ // Issue: https://github.com/callstack/react-native-slider/issues/571
|
||||
+ if (slider.getLowerLimit() <= slider.getUpperLimit()) {
|
||||
+ if(progress < slider.getLowerLimit()) {
|
||||
+ progress = slider.getLowerLimit();
|
||||
+ seekbar.setProgress(progress);
|
||||
+ } else if (progress > slider.getUpperLimit()) {
|
||||
+ progress = slider.getUpperLimit();
|
||||
+ seekbar.setProgress(progress);
|
||||
+ }
|
||||
}
|
||||
|
||||
ReactContext reactContext = (ReactContext) seekbar.getContext();
|
||||
diff --git a/android/src/oldarch/java/com/reactnativecommunity/slider/ReactSliderManager.java b/android/src/oldarch/java/com/reactnativecommunity/slider/ReactSliderManager.java
|
||||
index 3ff5930f85a3cd92c2549925f41058abb188a57e..ab3681fdfe0b736c97020e1434e450c8183e6f18 100644
|
||||
--- a/android/src/oldarch/java/com/reactnativecommunity/slider/ReactSliderManager.java
|
||||
+++ b/android/src/oldarch/java/com/reactnativecommunity/slider/ReactSliderManager.java
|
||||
@@ -30,12 +30,20 @@ public class ReactSliderManager extends SimpleViewManager<ReactSlider> {
|
||||
public void onProgressChanged(SeekBar seekbar, int progress, boolean fromUser) {
|
||||
ReactSlider slider = (ReactSlider)seekbar;
|
||||
|
||||
- if(progress < slider.getLowerLimit()) {
|
||||
- progress = slider.getLowerLimit();
|
||||
- seekbar.setProgress(progress);
|
||||
- } else if(progress > slider.getUpperLimit()) {
|
||||
- progress = slider.getUpperLimit();
|
||||
- seekbar.setProgress(progress);
|
||||
+ // During initialization, lowerLimit can be greater than upperLimit.
|
||||
+ //
|
||||
+ // If a change event is received during this, we need a check to prevent
|
||||
+ // infinite recursion.
|
||||
+ //
|
||||
+ // Issue: https://github.com/callstack/react-native-slider/issues/571
|
||||
+ if (slider.getLowerLimit() <= slider.getUpperLimit()) {
|
||||
+ if(progress < slider.getLowerLimit()) {
|
||||
+ progress = slider.getLowerLimit();
|
||||
+ seekbar.setProgress(progress);
|
||||
+ } else if (progress > slider.getUpperLimit()) {
|
||||
+ progress = slider.getUpperLimit();
|
||||
+ seekbar.setProgress(progress);
|
||||
+ }
|
||||
}
|
||||
|
||||
ReactContext reactContext = (ReactContext) seekbar.getContext();
|
90
.yarn/patches/app-builder-lib-npm-24.13.3-86a66c0bf3.patch
Normal file
@@ -0,0 +1,90 @@
|
||||
# This patch's goal is to work around an issue in the NSIS uninstaller on Windows:
|
||||
# - For future uninstallers, this patch backports an upstream commit that changes how
|
||||
# running copies of the app are found.
|
||||
# - See https://github.com/electron-userland/electron-builder/pull/8133
|
||||
# - If an existing uninstaller fails, gives an option to continue with the installation
|
||||
# despite the failure.
|
||||
# - Updates "uninstall failed" error messages to state that uninstallation failed (rather
|
||||
# than incorrectly stating that the issue was with closing the app).
|
||||
#
|
||||
# See https://github.com/laurent22/joplin/pull/11541
|
||||
diff --git a/templates/nsis/include/allowOnlyOneInstallerInstance.nsh b/templates/nsis/include/allowOnlyOneInstallerInstance.nsh
|
||||
index fe5d45c730f36c9fe8d8cfea12e242e501b67139..97b27fce6798e30e3e631221435f09b3579e77c3 100644
|
||||
--- a/templates/nsis/include/allowOnlyOneInstallerInstance.nsh
|
||||
+++ b/templates/nsis/include/allowOnlyOneInstallerInstance.nsh
|
||||
@@ -42,7 +42,7 @@
|
||||
${nsProcess::FindProcess} "${_FILE}" ${_ERR}
|
||||
!else
|
||||
# find process owned by current user
|
||||
- nsExec::Exec `%SYSTEMROOT%\System32\cmd.exe /c tasklist /FI "USERNAME eq %USERNAME%" /FI "IMAGENAME eq ${_FILE}" /FO csv | %SYSTEMROOT%\System32\find.exe "${_FILE}"`
|
||||
+ nsExec::Exec `"$SYSDIR\cmd.exe" /c tasklist /FI "USERNAME eq %USERNAME%" /FI "IMAGENAME eq ${_FILE}" /FO csv | "$SYSDIR\find.exe" "${_FILE}"`
|
||||
Pop ${_ERR}
|
||||
!endif
|
||||
!macroend
|
||||
@@ -73,7 +73,7 @@
|
||||
!ifdef INSTALL_MODE_PER_ALL_USERS
|
||||
nsExec::Exec `taskkill /im "${APP_EXECUTABLE_FILENAME}" /fi "PID ne $pid"`
|
||||
!else
|
||||
- nsExec::Exec `%SYSTEMROOT%\System32\cmd.exe /c taskkill /im "${APP_EXECUTABLE_FILENAME}" /fi "PID ne $pid" /fi "USERNAME eq %USERNAME%"`
|
||||
+ nsExec::Exec `"$SYSDIR\cmd.exe" /c taskkill /im "${APP_EXECUTABLE_FILENAME}" /fi "PID ne $pid" /fi "USERNAME eq %USERNAME%"`
|
||||
!endif
|
||||
# to ensure that files are not "in-use"
|
||||
Sleep 300
|
||||
@@ -91,7 +91,7 @@
|
||||
!ifdef INSTALL_MODE_PER_ALL_USERS
|
||||
nsExec::Exec `taskkill /f /im "${APP_EXECUTABLE_FILENAME}" /fi "PID ne $pid"`
|
||||
!else
|
||||
- nsExec::Exec `%SYSTEMROOT%\System32\cmd.exe /c taskkill /f /im "${APP_EXECUTABLE_FILENAME}" /fi "PID ne $pid" /fi "USERNAME eq %USERNAME%"`
|
||||
+ nsExec::Exec `"$SYSDIR\cmd.exe" /c taskkill /f /im "${APP_EXECUTABLE_FILENAME}" /fi "PID ne $pid" /fi "USERNAME eq %USERNAME%"`
|
||||
!endif
|
||||
!insertmacro FIND_PROCESS "${APP_EXECUTABLE_FILENAME}" $R0
|
||||
${If} $R0 == 0
|
||||
diff --git a/templates/nsis/include/installUtil.nsh b/templates/nsis/include/installUtil.nsh
|
||||
index 47367741632726ba0886ac516461dbe98b7aea58..675965762375925a505ca6d8bbb67507ef696c2e 100644
|
||||
--- a/templates/nsis/include/installUtil.nsh
|
||||
+++ b/templates/nsis/include/installUtil.nsh
|
||||
@@ -126,10 +126,11 @@ Function handleUninstallResult
|
||||
Return
|
||||
|
||||
${if} $R0 != 0
|
||||
- MessageBox MB_OK|MB_ICONEXCLAMATION "$(uninstallFailed): $R0"
|
||||
+ # MessageBox MB_OK|MB_ICONEXCLAMATION "$(uninstallFailed): $R0"
|
||||
DetailPrint `Uninstall was not successful. Uninstaller error code: $R0.`
|
||||
- SetErrorLevel 2
|
||||
- Quit
|
||||
+ DetailPrint `Continuing anyway. See https://github.com/laurent22/joplin/pull/11612.`
|
||||
+ # SetErrorLevel 2
|
||||
+ # Quit
|
||||
${endif}
|
||||
FunctionEnd
|
||||
|
||||
@@ -216,11 +217,13 @@ Function uninstallOldVersion
|
||||
IntOp $R5 $R5 + 1
|
||||
|
||||
${if} $R5 > 5
|
||||
- MessageBox MB_RETRYCANCEL|MB_ICONEXCLAMATION "$(appCannotBeClosed)" /SD IDCANCEL IDRETRY OneMoreAttempt
|
||||
- Return
|
||||
+ MessageBox MB_RETRYCANCEL|MB_ICONEXCLAMATION "$(appCannotBeUninstalled)" /SD IDCANCEL IDRETRY ContinueWithoutUninstall
|
||||
+ Abort ; Exit early
|
||||
+ ContinueWithoutUninstall:
|
||||
+ Return
|
||||
${endIf}
|
||||
|
||||
- OneMoreAttempt:
|
||||
+# OneMoreAttempt: ; Commented out because unused
|
||||
ExecWait '"$uninstallerFileNameTemp" /S /KEEP_APP_DATA $0 _?=$installationDir' $R0
|
||||
ifErrors TryInPlace CheckResult
|
||||
|
||||
diff --git a/templates/nsis/messages.yml b/templates/nsis/messages.yml
|
||||
index a1c2847fa48d79f835b30b48e999ccaf3c818657..6884c18d1e77dbd6be114401d23cf5caf3e0dd94 100644
|
||||
--- a/templates/nsis/messages.yml
|
||||
+++ b/templates/nsis/messages.yml
|
||||
@@ -235,3 +235,8 @@ uninstallFailed:
|
||||
sv: Det gick inte att avinstallera gamla programfiler. Försök att köra installationsprogrammet igen.
|
||||
uk: Не вдалось видалити старі файли застосунку. Будь ласка, спробуйте запустити встановлювач знов.
|
||||
zh_TW: 無法俺安裝舊的應用程式檔案。 請嘗試再次執行安裝程式。
|
||||
+
|
||||
+
|
||||
+appCannotBeUninstalled:
|
||||
+ en: "The old version of ${PRODUCT_NAME} could not be removed. \nClick Retry to skip this step."
|
||||
+
|
@@ -1,13 +0,0 @@
|
||||
diff --git a/templates/nsis/include/allowOnlyOneInstallerInstance.nsh b/templates/nsis/include/allowOnlyOneInstallerInstance.nsh
|
||||
index a1fd1875d852ff69c087a3103eff827c20d37ca5..5222614ddad3276876857e7a9dde4017a6b9fc85 100644
|
||||
--- a/templates/nsis/include/allowOnlyOneInstallerInstance.nsh
|
||||
+++ b/templates/nsis/include/allowOnlyOneInstallerInstance.nsh
|
||||
@@ -42,7 +42,7 @@
|
||||
${nsProcess::FindProcess} "${_FILE}" ${_ERR}
|
||||
!else
|
||||
# find process owned by current user
|
||||
- nsExec::Exec `cmd /c tasklist /FI "USERNAME eq %USERNAME%" /FI "IMAGENAME eq ${_FILE}" | %SYSTEMROOT%\System32\find.exe "${_FILE}"`
|
||||
+ nsExec::Exec `cmd /c tasklist /FI "USERNAME eq %USERNAME%" /FI "PID ne $pid" /FI "IMAGENAME eq ${_FILE}" | %SYSTEMROOT%\System32\find.exe "${_FILE}"`
|
||||
Pop ${_ERR}
|
||||
!endif
|
||||
!macroend
|
33
.yarn/patches/husky-npm-3.1.0-5cc13e4e34.patch
Normal file
@@ -0,0 +1,33 @@
|
||||
diff --git a/lib/runner/index.js b/lib/runner/index.js
|
||||
index 87e3b3957619728e3ed1ca61e2d83df1c49f928f..6d5ab905415da0577341c8f5b67d4806adcf7549 100644
|
||||
--- a/lib/runner/index.js
|
||||
+++ b/lib/runner/index.js
|
||||
@@ -68,15 +68,19 @@ function run([, scriptPath, hookName = '', HUSKY_GIT_PARAMS], getStdinFn = get_s
|
||||
return 0;
|
||||
}
|
||||
catch (err) {
|
||||
- const noVerifyMessage = [
|
||||
- 'commit-msg',
|
||||
- 'pre-commit',
|
||||
- 'pre-rebase',
|
||||
- 'pre-push'
|
||||
- ].includes(hookName)
|
||||
- ? '(add --no-verify to bypass)'
|
||||
- : '(cannot be bypassed with --no-verify due to Git specs)';
|
||||
- console.log(`husky > ${hookName} hook failed ${noVerifyMessage}`);
|
||||
+ // We do not want to print this "add --no-verify to bypass" message because that's
|
||||
+ // literally what some developers do instead of trying to fix the errors.
|
||||
+
|
||||
+ // const noVerifyMessage = [
|
||||
+ // 'commit-msg',
|
||||
+ // 'pre-commit',
|
||||
+ // 'pre-rebase',
|
||||
+ // 'pre-push'
|
||||
+ // ].includes(hookName)
|
||||
+ // ? '(add --no-verify to bypass)'
|
||||
+ // : '(cannot be bypassed with --no-verify due to Git specs)';
|
||||
+
|
||||
+ console.log(`husky > ${hookName} hook failed (Please fix the errors listed above and try again)`);
|
||||
return err.code;
|
||||
}
|
||||
});
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedModule.java b/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedModule.java
|
||||
index 0f52b73c61625db2a3081c0950b6bdd2b06e3d40..b0fc3de4be0b3a26b638683613c63c783c2739bb 100644
|
||||
index 8a719ca35af1cc3a4192c5c5f8258fd4f7fea990..5f8831f81cd164a4f627423427ead92fa286b115 100644
|
||||
--- a/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedModule.java
|
||||
+++ b/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedModule.java
|
||||
@@ -38,7 +38,7 @@ import com.facebook.react.uimanager.common.ViewUtil;
|
||||
@@ -37,7 +37,7 @@ import com.facebook.react.uimanager.common.ViewUtil;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Queue;
|
||||
@@ -11,7 +11,7 @@ index 0f52b73c61625db2a3081c0950b6bdd2b06e3d40..b0fc3de4be0b3a26b638683613c63c78
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
/**
|
||||
@@ -151,7 +151,10 @@ public class NativeAnimatedModule extends NativeAnimatedModuleSpec
|
||||
@@ -149,7 +149,10 @@ public class NativeAnimatedModule extends NativeAnimatedModuleSpec
|
||||
}
|
||||
|
||||
private class ConcurrentOperationQueue {
|
@@ -0,0 +1,37 @@
|
||||
diff --git a/platforms/android/src/main/java/org/pgsqlite/SQLitePlugin.java b/platforms/android/src/main/java/org/pgsqlite/SQLitePlugin.java
|
||||
index 4f2391b..f7cc433 100644
|
||||
--- a/platforms/android/src/main/java/org/pgsqlite/SQLitePlugin.java
|
||||
+++ b/platforms/android/src/main/java/org/pgsqlite/SQLitePlugin.java
|
||||
@@ -8,11 +8,14 @@
|
||||
package org.pgsqlite;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
+import android.database.AbstractWindowedCursor;
|
||||
import android.database.Cursor;
|
||||
+import android.database.CursorWindow;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.database.sqlite.SQLiteException;
|
||||
import android.database.sqlite.SQLiteStatement;
|
||||
import android.content.Context;
|
||||
+import android.os.Build;
|
||||
import android.util.Base64;
|
||||
|
||||
import java.io.Closeable;
|
||||
@@ -808,6 +811,17 @@ public class SQLitePlugin extends ReactContextBaseJavaModule {
|
||||
throw ex;
|
||||
}
|
||||
|
||||
+ // To try to fix the error "Row too big to fit into CursorWindow" when using sqlite binary bundled with the device
|
||||
+ // https://github.com/andpor/react-native-sqlite-storage/issues/364#issuecomment-526423153
|
||||
+ // https://github.com/laurent22/joplin/issues/1767#issuecomment-515617991
|
||||
+
|
||||
+ if (cur != null && Build.VERSION.SDK_INT >= 28) {
|
||||
+ CursorWindow cw = new CursorWindow(null, 50 * 1024 * 1024);
|
||||
+ AbstractWindowedCursor ac = (AbstractWindowedCursor) cur;
|
||||
+ ac.setWindow(cw);
|
||||
+ cur = ac;
|
||||
+ }
|
||||
+
|
||||
// If query result has rows
|
||||
if (cur != null && cur.moveToFirst()) {
|
||||
WritableArray rowsArrayResult = Arguments.createArray();
|
118
.yarn/patches/rn-fetch-blob-npm-0.12.0-cf02e3c544.patch
Normal file
@@ -0,0 +1,118 @@
|
||||
# Fixes sync issues caused by locale-sensitive lowercasing
|
||||
# of HTTP headers.
|
||||
# See https://github.com/laurent22/joplin/issues/10681
|
||||
diff --git a/android/src/main/java/com/RNFetchBlob/RNFetchBlobConfig.java b/android/src/main/java/com/RNFetchBlob/RNFetchBlobConfig.java
|
||||
index 8ac9e7a855162cefbf99024eb013c8a3b11de1ec..1c639cf9d84821b6ffc132960e2d1c044bedbd48 100644
|
||||
--- a/android/src/main/java/com/RNFetchBlob/RNFetchBlobConfig.java
|
||||
+++ b/android/src/main/java/com/RNFetchBlob/RNFetchBlobConfig.java
|
||||
@@ -2,6 +2,7 @@ package com.RNFetchBlob;
|
||||
|
||||
import com.facebook.react.bridge.ReadableArray;
|
||||
import com.facebook.react.bridge.ReadableMap;
|
||||
+import java.util.Locale;
|
||||
|
||||
class RNFetchBlobConfig {
|
||||
|
||||
@@ -33,7 +34,7 @@ class RNFetchBlobConfig {
|
||||
}
|
||||
if(options.hasKey("binaryContentTypes"))
|
||||
this.binaryContentTypes = options.getArray("binaryContentTypes");
|
||||
- if(this.path != null && path.toLowerCase().contains("?append=true")) {
|
||||
+ if(this.path != null && path.toLowerCase(Locale.ROOT).contains("?append=true")) {
|
||||
this.overwrite = false;
|
||||
}
|
||||
if(options.hasKey("overwrite"))
|
||||
diff --git a/android/src/main/java/com/RNFetchBlob/RNFetchBlobFS.java b/android/src/main/java/com/RNFetchBlob/RNFetchBlobFS.java
|
||||
index a4d70153f41e6c14eec65412b5b59822f1c6750b..d98c439f7b0aeb79afc82ab9f653e9c021086426 100644
|
||||
--- a/android/src/main/java/com/RNFetchBlob/RNFetchBlobFS.java
|
||||
+++ b/android/src/main/java/com/RNFetchBlob/RNFetchBlobFS.java
|
||||
@@ -29,6 +29,7 @@ import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
+import java.util.Locale;
|
||||
|
||||
class RNFetchBlobFS {
|
||||
|
||||
@@ -210,7 +211,7 @@ class RNFetchBlobFS {
|
||||
return;
|
||||
}
|
||||
|
||||
- switch (encoding.toLowerCase()) {
|
||||
+ switch (encoding.toLowerCase(Locale.ROOT)) {
|
||||
case "base64" :
|
||||
promise.resolve(Base64.encodeToString(bytes, Base64.NO_WRAP));
|
||||
break;
|
||||
@@ -1050,7 +1051,7 @@ class RNFetchBlobFS {
|
||||
if(encoding.equalsIgnoreCase("ascii")) {
|
||||
return data.getBytes(Charset.forName("US-ASCII"));
|
||||
}
|
||||
- else if(encoding.toLowerCase().contains("base64")) {
|
||||
+ else if(encoding.toLowerCase(Locale.ROOT).contains("base64")) {
|
||||
return Base64.decode(data, Base64.NO_WRAP);
|
||||
|
||||
}
|
||||
diff --git a/android/src/main/java/com/RNFetchBlob/RNFetchBlobReq.java b/android/src/main/java/com/RNFetchBlob/RNFetchBlobReq.java
|
||||
index a8abd71833879201e3438b2fa51d712a311c4551..b70cc13c004229f69157de5f82ae5ec3abf4358e 100644
|
||||
--- a/android/src/main/java/com/RNFetchBlob/RNFetchBlobReq.java
|
||||
+++ b/android/src/main/java/com/RNFetchBlob/RNFetchBlobReq.java
|
||||
@@ -49,6 +49,7 @@ import java.security.KeyStore;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
+import java.util.Locale;
|
||||
import java.util.HashMap;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
@@ -300,14 +301,14 @@ public class RNFetchBlobReq extends BroadcastReceiver implements Runnable {
|
||||
responseFormat = ResponseFormat.UTF8;
|
||||
}
|
||||
else {
|
||||
- builder.header(key.toLowerCase(), value);
|
||||
- mheaders.put(key.toLowerCase(), value);
|
||||
+ builder.header(key.toLowerCase(Locale.ROOT), value);
|
||||
+ mheaders.put(key.toLowerCase(Locale.ROOT), value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(method.equalsIgnoreCase("post") || method.equalsIgnoreCase("put") || method.equalsIgnoreCase("patch")) {
|
||||
- String cType = getHeaderIgnoreCases(mheaders, "Content-Type").toLowerCase();
|
||||
+ String cType = getHeaderIgnoreCases(mheaders, "Content-Type").toLowerCase(Locale.ROOT);
|
||||
|
||||
if(rawRequestBodyArray != null) {
|
||||
requestType = RequestType.Form;
|
||||
@@ -323,7 +324,7 @@ public class RNFetchBlobReq extends BroadcastReceiver implements Runnable {
|
||||
|| rawRequestBody.startsWith(RNFetchBlobConst.CONTENT_PREFIX)) {
|
||||
requestType = RequestType.SingleFile;
|
||||
}
|
||||
- else if (cType.toLowerCase().contains(";base64") || cType.toLowerCase().startsWith("application/octet")) {
|
||||
+ else if (cType.toLowerCase(Locale.ROOT).contains(";base64") || cType.toLowerCase(Locale.ROOT).startsWith("application/octet")) {
|
||||
cType = cType.replace(";base64","").replace(";BASE64","");
|
||||
if(mheaders.containsKey("content-type"))
|
||||
mheaders.put("content-type", cType);
|
||||
@@ -686,7 +687,7 @@ public class RNFetchBlobReq extends BroadcastReceiver implements Runnable {
|
||||
boolean isCustomBinary = false;
|
||||
if(options.binaryContentTypes != null) {
|
||||
for(int i = 0; i< options.binaryContentTypes.size();i++) {
|
||||
- if(ctype.toLowerCase().contains(options.binaryContentTypes.getString(i).toLowerCase())) {
|
||||
+ if(ctype.toLowerCase(Locale.ROOT).contains(options.binaryContentTypes.getString(i).toLowerCase(Locale.ROOT))) {
|
||||
isCustomBinary = true;
|
||||
break;
|
||||
}
|
||||
@@ -698,13 +699,13 @@ public class RNFetchBlobReq extends BroadcastReceiver implements Runnable {
|
||||
private String getHeaderIgnoreCases(Headers headers, String field) {
|
||||
String val = headers.get(field);
|
||||
if(val != null) return val;
|
||||
- return headers.get(field.toLowerCase()) == null ? "" : headers.get(field.toLowerCase());
|
||||
+ return headers.get(field.toLowerCase(Locale.ROOT)) == null ? "" : headers.get(field.toLowerCase(Locale.ROOT));
|
||||
}
|
||||
|
||||
private String getHeaderIgnoreCases(HashMap<String,String> headers, String field) {
|
||||
String val = headers.get(field);
|
||||
if(val != null) return val;
|
||||
- String lowerCasedValue = headers.get(field.toLowerCase());
|
||||
+ String lowerCasedValue = headers.get(field.toLowerCase(Locale.ROOT));
|
||||
return lowerCasedValue == null ? "" : lowerCasedValue;
|
||||
}
|
||||
|
874
.yarn/releases/yarn-3.6.4.cjs
vendored
875
.yarn/releases/yarn-3.8.3.cjs
vendored
Executable file
@@ -6,7 +6,7 @@ plugins:
|
||||
- path: .yarn/plugins/@yarnpkg/plugin-workspace-tools.cjs
|
||||
spec: "@yarnpkg/plugin-workspace-tools"
|
||||
|
||||
yarnPath: .yarn/releases/yarn-3.6.4.cjs
|
||||
yarnPath: .yarn/releases/yarn-3.8.3.cjs
|
||||
|
||||
logFilters:
|
||||
|
||||
|
@@ -8,7 +8,6 @@
|
||||
import { Node } from '@ephox/dom-globals';
|
||||
import { Arr, Option } from '@ephox/katamari';
|
||||
import { HTMLElement } from '@ephox/sand';
|
||||
import DomQuery from 'tinymce/core/api/dom/DomQuery';
|
||||
import Editor from 'tinymce/core/api/Editor';
|
||||
import Tools from 'tinymce/core/api/util/Tools';
|
||||
import * as NodeType from './NodeType';
|
||||
@@ -49,7 +48,7 @@ const findParentListItemsNodes = function (editor, elms) {
|
||||
return parentLi ? parentLi : elm;
|
||||
});
|
||||
|
||||
return DomQuery.unique(listItemsElms);
|
||||
return [...new Set(listItemsElms)];
|
||||
};
|
||||
|
||||
const getSelectedListItems = function (editor) {
|
||||
@@ -89,7 +88,7 @@ const getSelectedListRoots = (editor: Editor): Node[] => {
|
||||
|
||||
const getUniqueListRoots = (editor: Editor, lists: Node[]): Node[] => {
|
||||
const listRoots = Arr.map(lists, (list) => findLastParentListNode(editor, list).getOr(list));
|
||||
return DomQuery.unique(listRoots);
|
||||
return [...new Set(listRoots)];
|
||||
};
|
||||
|
||||
const isList = (editor: Editor): boolean => {
|
||||
|
@@ -48,8 +48,7 @@ const listState = function (editor: Editor, listName, options:any = {}) {
|
||||
|
||||
const register = function (editor: Editor) {
|
||||
const hasPlugin = function (editor, plugin) {
|
||||
const plugins = editor.settings.plugins ? editor.settings.plugins : '';
|
||||
return Tools.inArray(plugins.split(/[ ,]/), plugin) !== -1;
|
||||
return editor.hasPlugin(plugin);
|
||||
};
|
||||
|
||||
const _ = Settings.getLocalizationFunction(editor);
|
||||
|
BIN
Assets/WebsiteAssets/images/desktop-set-alarm.png
Normal file
After Width: | Height: | Size: 41 KiB |
1
Assets/WebsiteAssets/images/draw/add-new-image.svg
Normal file
After Width: | Height: | Size: 345 KiB |
BIN
Assets/WebsiteAssets/images/draw/average-selection-color.png
Normal file
After Width: | Height: | Size: 185 KiB |
BIN
Assets/WebsiteAssets/images/draw/change-visible-region.png
Normal file
After Width: | Height: | Size: 568 KiB |
BIN
Assets/WebsiteAssets/images/draw/color-under-cursor.png
Normal file
After Width: | Height: | Size: 199 KiB |
BIN
Assets/WebsiteAssets/images/draw/desktop-create-new-drawing.png
Normal file
After Width: | Height: | Size: 123 KiB |
After Width: | Height: | Size: 184 KiB |
1
Assets/WebsiteAssets/images/draw/edit-from-viewer.svg
Normal file
After Width: | Height: | Size: 200 KiB |
1
Assets/WebsiteAssets/images/draw/editor-toolbar-top.svg
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
Assets/WebsiteAssets/images/draw/help-icon.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
Assets/WebsiteAssets/images/draw/infinite-zoom-demo.mp4
Normal file
BIN
Assets/WebsiteAssets/images/draw/lock-rotation.png
Normal file
After Width: | Height: | Size: 104 KiB |
1
Assets/WebsiteAssets/images/draw/long-press-edit.svg
Normal file
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 246 KiB |
BIN
Assets/WebsiteAssets/images/draw/restore-auto-resize.png
Normal file
After Width: | Height: | Size: 310 KiB |
1
Assets/WebsiteAssets/images/draw/show-pen-menu.svg
Normal file
After Width: | Height: | Size: 141 KiB |
After Width: | Height: | Size: 87 KiB |
BIN
Assets/WebsiteAssets/images/news/20240127-promo-tile.png
Normal file
After Width: | Height: | Size: 282 KiB |
BIN
Assets/WebsiteAssets/images/news/20240301-rte-colors.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
Assets/WebsiteAssets/images/news/20240701-mfa.png
Normal file
After Width: | Height: | Size: 244 KiB |
BIN
Assets/WebsiteAssets/images/news/20240701-mobile-plugins.png
Normal file
After Width: | Height: | Size: 337 KiB |
BIN
Assets/WebsiteAssets/images/news/20240701-note-list-multi.png
Normal file
After Width: | Height: | Size: 82 KiB |
BIN
Assets/WebsiteAssets/images/news/20240701-ocr-data.png
Normal file
After Width: | Height: | Size: 71 KiB |
BIN
Assets/WebsiteAssets/images/news/20240701-trash.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
Assets/WebsiteAssets/images/news/20241128-voice-typing.jpg
Normal file
After Width: | Height: | Size: 183 KiB |
BIN
Assets/WebsiteAssets/images/news/20241207-wcag2.jpg
Normal file
After Width: | Height: | Size: 86 KiB |
BIN
Assets/WebsiteAssets/images/news/20241216-rocketbook.jpg
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
Assets/WebsiteAssets/images/news/20241217-htr.jpg
Normal file
After Width: | Height: | Size: 327 KiB |
BIN
Assets/WebsiteAssets/images/news/20250114-mobile-toolbar.png
Normal file
After Width: | Height: | Size: 111 KiB |
BIN
Assets/WebsiteAssets/images/news/20250114-multi-window.png
Normal file
After Width: | Height: | Size: 63 KiB |
BIN
Assets/WebsiteAssets/images/note_list/LeftToRight_Thumbnails.png
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
Assets/WebsiteAssets/images/note_list/TopToBottom.png
Normal file
After Width: | Height: | Size: 75 KiB |
BIN
Assets/WebsiteAssets/images/note_list/TopToBottom_Editable.png
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
Assets/WebsiteAssets/images/ocr/view_ocr_text.png
Normal file
After Width: | Height: | Size: 60 KiB |
BIN
Assets/WebsiteAssets/images/sponsors/BYTV.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
Assets/WebsiteAssets/images/sponsors/BestKru.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
Assets/WebsiteAssets/images/sponsors/CasinoReviews.png
Normal file
After Width: | Height: | Size: 63 KiB |
BIN
Assets/WebsiteAssets/images/sponsors/Edubirdie.png
Normal file
After Width: | Height: | Size: 34 KiB |
BIN
Assets/WebsiteAssets/images/sponsors/EssayPro.png
Normal file
After Width: | Height: | Size: 49 KiB |
BIN
Assets/WebsiteAssets/images/sponsors/Famegear.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
Assets/WebsiteAssets/images/sponsors/RealGambling.png
Normal file
After Width: | Height: | Size: 9.5 KiB |
BIN
Assets/WebsiteAssets/images/sponsors/Route4Me.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
Assets/WebsiteAssets/images/sponsors/Slotozilla.png
Normal file
After Width: | Height: | Size: 38 KiB |
BIN
Assets/WebsiteAssets/images/sponsors/SocialFollowers.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
Assets/WebsiteAssets/images/sponsors/Stormlikes.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
Assets/WebsiteAssets/images/sponsors/Useviral.png
Normal file
After Width: | Height: | Size: 112 KiB |
BIN
Assets/WebsiteAssets/images/sponsors/WebDesignAgency.png
Normal file
After Width: | Height: | Size: 138 KiB |
BIN
Assets/WebsiteAssets/images/use_cases/business/customers.png
Normal file
After Width: | Height: | Size: 201 KiB |
BIN
Assets/WebsiteAssets/images/use_cases/business/meeting.png
Normal file
After Width: | Height: | Size: 312 KiB |
BIN
Assets/WebsiteAssets/images/use_cases/business/share.png
Normal file
After Width: | Height: | Size: 119 KiB |
BIN
Assets/WebsiteAssets/images/use_cases/business/tracking.png
Normal file
After Width: | Height: | Size: 53 KiB |
After Width: | Height: | Size: 127 KiB |
After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 451 KiB |
BIN
Assets/WebsiteAssets/images/use_cases/research/organise.png
Normal file
After Width: | Height: | Size: 60 KiB |
BIN
Assets/WebsiteAssets/images/use_cases/research/resources.png
Normal file
After Width: | Height: | Size: 78 KiB |
BIN
Assets/WebsiteAssets/images/use_cases/research/search.png
Normal file
After Width: | Height: | Size: 110 KiB |
BIN
Assets/WebsiteAssets/images/use_cases/research/share.png
Normal file
After Width: | Height: | Size: 119 KiB |
BIN
Assets/WebsiteAssets/images/use_cases/students/handwritten.png
Normal file
After Width: | Height: | Size: 144 KiB |
BIN
Assets/WebsiteAssets/images/use_cases/students/lists.png
Normal file
After Width: | Height: | Size: 52 KiB |
BIN
Assets/WebsiteAssets/images/use_cases/students/multimedia.png
Normal file
After Width: | Height: | Size: 198 KiB |
BIN
Assets/WebsiteAssets/images/use_cases/students/organise.png
Normal file
After Width: | Height: | Size: 68 KiB |
BIN
Assets/WebsiteAssets/images/use_cases/students/share.png
Normal file
After Width: | Height: | Size: 117 KiB |
@@ -1,4 +1,165 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Joplin]]></title><description><![CDATA[Joplin, the open source note-taking application]]></description><link>https://joplinapp.org</link><generator>RSS for Node</generator><lastBuildDate>Sat, 23 Dec 2023 00:00:00 GMT</lastBuildDate><atom:link href="https://joplinapp.org/rss.xml" rel="self" type="application/rss+xml"/><pubDate>Sat, 23 Dec 2023 00:00:00 GMT</pubDate><item><title><![CDATA[Faster synchronisation in upcoming Joplin version!]]></title><description><![CDATA[<p>The next version of Joplin Cloud (and Joplin Server) will include a change that will make synchronisation, in particular when synchronising a new device for the first time, significantly faster. This is achieved by bundling more data with the calls that retrieve notes and other data, thus reducing the number of unnecessary requests.</p>
|
||||
<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Joplin]]></title><description><![CDATA[Joplin, the open source note-taking application]]></description><link>https://joplinapp.org</link><generator>RSS for Node</generator><lastBuildDate>Tue, 14 Jan 2025 00:00:00 GMT</lastBuildDate><atom:link href="https://joplinapp.org/rss.xml" rel="self" type="application/rss+xml"/><pubDate>Tue, 14 Jan 2025 00:00:00 GMT</pubDate><item><title><![CDATA[What's new in Joplin 3.2]]></title><description><![CDATA[<h2>Import OneNote Archives<a name="import-onenote-archives" href="#import-onenote-archives" class="heading-anchor">🔗</a></h2>
|
||||
<p>Joplin now supports importing OneNote archives, a significant step for users transitioning from OneNote. Microsoft has long made it challenging to leave OneNote, offering limited export options and complex formats that make it difficult for app developers to support it. Despite these hurdles, @pedr tackled these issues head-on, developing an import tool that simplifies the process. This addition makes Joplin a practical choice for those looking to move away from OneNote's ecosystem.</p>
|
||||
<p>To use this feature, select <strong>File</strong> => <strong>Import</strong> => <strong>ZIP - OneNote Notebook</strong></p>
|
||||
<h2>Multi-window support<a name="multi-window-support" href="#multi-window-support" class="heading-anchor">🔗</a></h2>
|
||||
<p>We're excited to introduce Multi-Window Support, a highly requested feature that makes managing multiple notes easier than ever. With this update, you can open notes in different windows and each window operates independently, allowing you to compare notes, reference content, and organise projects with greater flexibility.</p>
|
||||
<p>To use this feature, right-click on a note, select <strong>Open in...</strong> and select <strong>Edit in new window</strong></p>
|
||||
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20250114-multi-window.png" alt=""></p>
|
||||
<h2>Customisable toolbar on mobile<a name="customisable-toolbar-on-mobile" href="#customisable-toolbar-on-mobile" class="heading-anchor">🔗</a></h2>
|
||||
<p>The new customisable toolbar on mobile is now draggable, making it easier to access the buttons you need. You can also choose which buttons to display by tapping the Cog button, allowing for a more personalised and efficient note-editing experience!</p>
|
||||
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20250114-mobile-toolbar.png" alt=""></p>
|
||||
<h2>Enhanced Accessibility<a name="enhanced-accessibility" href="#enhanced-accessibility" class="heading-anchor">🔗</a></h2>
|
||||
<p>In order to implement the <a href="https://www.w3.org/TR/WCAG20/">WCAG 2.0 guidelines</a>, accessibility has seen a substantial upgrade thanks to the efforts of @personalizedrefrigerator. The desktop and mobile apps now offer better keyboard navigation, including improved functionality in dropdown menus and settings. Focus indicators have been made more visible, while ARIA labels have been added to boost compatibility with screen readers. Specific areas like note attachments, sidebars, and dialogs have also been optimised to ensure accessibility for all users.</p>
|
||||
<h2>Refined Drawing and Markdown Editing<a name="refined-drawing-and-markdown-editing" href="#refined-drawing-and-markdown-editing" class="heading-anchor">🔗</a></h2>
|
||||
<p>Joplin's drawing and editing features have been fine-tuned for a smoother experience. Freehand Drawing on mobile and desktop has been updated to version 2.14.0, addressing several usability issues and bugs. Additionally, the Freehand Drawing plugin is now part of the desktop app by default. These changes enhance the reliability and integration of the drawing tool.</p>
|
||||
<h2>Faster and more secure encryption<a name="faster-and-more-secure-encryption" href="#faster-and-more-secure-encryption" class="heading-anchor">🔗</a></h2>
|
||||
<p>For GSoC 2024, @wh201906 worked on optimising the encryption and decryption processes, boosting speed for mobile devices in particular (but desktop too). Additionally, the encryption security was improved by transitioning to a more robust 256-bit key.</p>
|
||||
<p>As of now this feature is optional and can be enabled by going to the <strong>Configuration Screen</strong>, then <strong>Synchronisation</strong> => <strong>Advanced options</strong> => <strong>Use beta encryption</strong>.</p>
|
||||
<h2>Expanded Plugin Support<a name="expanded-plugin-support" href="#expanded-plugin-support" class="heading-anchor">🔗</a></h2>
|
||||
<p>Developers will appreciate the updates to Joplin's plugin ecosystem. A new API has been introduced to create <a href="https://joplinapp.org/api/references/plugin_api/classes/joplinviewsdialogs.html#showtoast">toast notifications</a>, alongside updates to CodeMirror packages. A new <a href="https://github.com/laurent22/joplin/blob/5ee8a9a45493683c72a36b52e1460b5acdd4f1ac/packages/lib/commands/renderMarkup.ts#L23"><code>renderMarkup</code></a> command has been introduced to allow you to render Markdown content to HTML using the Joplin built-in API.</p>
|
||||
<h1>Full changelogs<a name="full-changelogs" href="#full-changelogs" class="heading-anchor">🔗</a></h1>
|
||||
<p>This is just an overview of the main features. The full changelogs are available there:</p>
|
||||
<ul>
|
||||
<li>Desktop: <a href="https://joplinapp.org/help/about/changelog/desktop">https://joplinapp.org/help/about/changelog/desktop</a></li>
|
||||
<li>Android: <a href="https://joplinapp.org/help/about/changelog/android/">https://joplinapp.org/help/about/changelog/android/</a></li>
|
||||
<li>iOS: <a href="https://joplinapp.org/help/about/changelog/ios/">https://joplinapp.org/help/about/changelog/ios/</a></li>
|
||||
</ul>
|
||||
]]></description><link>https://joplinapp.org/news/20250114-release-3-2</link><guid isPermaLink="false">20250114-release-3-2</guid><pubDate>Tue, 14 Jan 2025 00:00:00 GMT</pubDate><twitter-text>What's new in Joplin 3.2</twitter-text></item><item><title><![CDATA[Project 4: Handwritten Text Recognition (HTR) for Joplin]]></title><description><![CDATA[<p>Joplin is partnering with a French government institution to bring you innovative new features! We will work on accessibility, voice typing, HTR and add Rocketbook integration. Today we'll present the planned HTR integration:</p>
|
||||
<p>Currently, Joplin’s OCR (Optical Character Recognition) feature is designed to recognise printed text, which works great for scanning documents with standard fonts. However, we’re looking to expand this functionality to support handwritten text recognition (HTR), which would be beneficial to handle scanned, handwritten documents, as well as for the upcoming Rocketbook integration.</p>
|
||||
<p>Handwritten text recognition is complex task, requiring significant processing power and large machine learning models. Because of this, we plan to implement HTR via a server, possibly integrated with Joplin Cloud or Joplin Server. The beauty of this approach is that handwritten text recognition is a rapidly evolving field, so we can continuously improve the server-side model. This means that every Joplin app can benefit from these updates without needing to redeploy or update the app itself.</p>
|
||||
<p>For the Rocketbook integration, this integration will make a significant difference. Right now, your handwritten documents would be scanned as images, but with HTR, Joplin will be able to recognise the actual text you’ve written. Not only will your handwritten notes become searchable, but you’ll also be able to copy and paste the text into other documents.</p>
|
||||
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20241217-htr.jpg" alt="HTR illustration"></p>
|
||||
]]></description><link>https://joplinapp.org/news/20241217-project-4-htr</link><guid isPermaLink="false">20241217-project-4-htr</guid><pubDate>Tue, 17 Dec 2024 00:00:00 GMT</pubDate><twitter-text></twitter-text></item><item><title><![CDATA[Project 3: Rocketbook integration with Joplin]]></title><description><![CDATA[<p>Joplin is partnering with a French government institution to bring you innovative new features! We will work on accessibility, voice typing, HTR and add Rocketbook integration. Today we'll present the planned Rocketbook integration:</p>
|
||||
<p><a href="https://getrocketbook.com/pages/how-rocketbook-works">Rocketbook</a> is a popular brand of smart notebooks designed to make note-taking more efficient and sustainable. These notebooks feature special erasable pages that you can write on with specific pens and then wipe clean with a damp cloth. What makes Rocketbook even more appealing is its ability to scan and upload your notes to cloud services for easy storage and sharing.</p>
|
||||
<p>We plan to create an integration between Rocketbook and Joplin, designed to make the note-taking process even smoother. While Rocketbook typically works through its own official app, we plan to integrate it directly into Joplin without relying on third-party apps or APIs. This means that you can enjoy the benefits of Rocketbook’s smart features while using Joplin as your primary note-taking platform.</p>
|
||||
<p>The great thing about this integration is that it’s not limited to just Rocketbook. As long as the smart notebook uses QR codes to identify pages, the same functionality will work. This means you can use Joplin with a wide variety of smart notebooks, making it a versatile tool for all your note-taking needs.</p>
|
||||
<p>With this integration, we’re making it easier than ever to combine the power of smart notebooks with the flexibility of Joplin’s open-source platform. Whether you're using Rocketbook or another smart notebook, Joplin will be ready to help you organise and access your notes in the cloud!</p>
|
||||
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20241216-rocketbook.jpg" alt="Rocketbook notebook"></p>
|
||||
]]></description><link>https://joplinapp.org/news/20241216-project-3-rocketbook</link><guid isPermaLink="false">20241216-project-3-rocketbook</guid><pubDate>Mon, 16 Dec 2024 00:00:00 GMT</pubDate><twitter-text></twitter-text></item><item><title><![CDATA[Project 2: Making Joplin more accessible with WCAG-2 compliance]]></title><description><![CDATA[<p>We're always looking for ways to make Joplin better for everyone, and one of the key steps in improving accessibility is implementing the <a href="https://www.w3.org/TR/WCAG20/">Web Content Accessibility Guidelines</a> (WCAG 2). These guidelines help ensure that our app is usable for all users, including those with disabilities, while also enhancing the overall user experience for everyone.</p>
|
||||
<p>To get started with WCAG 2 support, we’ll run an accessibility audit with a tool such as <a href="https://wave.webaim.org">Web Accessibility Evaluation Tools</a> (WAVE). This will help us spot any accessibility issues in the app that we need to address.</p>
|
||||
<p>Once the audit is complete, we'll take action on the issues we find. Here's a look at some of the things we'll focus on:</p>
|
||||
<ul>
|
||||
<li>
|
||||
<p><strong>Making content easier to perceive</strong>: We’ll make sure there are text alternatives for non-text content, provide captions for multimedia, and check that colour contrast is strong enough for easy reading.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>Improving operability</strong>: Every feature will be accessible through the keyboard, ensuring that users who can't rely on a mouse can still navigate easily.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>Enhancing comprehension</strong>: We’ll ensure that the text is readable, the layout is predictable, and input assistance is available for those who need it.</p>
|
||||
</li>
|
||||
</ul>
|
||||
<p>We’ll also use ARIA standards and test for compatibility with assistive technologies to make sure everything works well with tools like screen readers.</p>
|
||||
<p>To ensure we're on the right track, we’ll invite users with disabilities to test the app and help us identify any remaining barriers. Accessibility is something we’ll keep working on, so we'll continue testing, refining, and making improvements to ensure Joplin stays accessible to everyone. It’s a journey, and we’re committed to making the experience better for all our users.</p>
|
||||
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20241207-wcag2.jpg" alt="WCAG 2 logo"></p>
|
||||
]]></description><link>https://joplinapp.org/news/20241207-project-2-wcag2</link><guid isPermaLink="false">20241207-project-2-wcag2</guid><pubDate>Sat, 07 Dec 2024 00:00:00 GMT</pubDate><twitter-text></twitter-text></item><item><title><![CDATA[Project 1: Making voice typing even better for everyone]]></title><description><![CDATA[<p>Joplin is partnering with a French government institution to bring you innovative new features! We will work on accessibility, voice typing, HTR and add Rocketbook integration. Today we'll present the planned improvements to voice typing:</p>
|
||||
<p>Right now, voice input works pretty well, but there’s one thing that still needs improvement: punctuation. Our current system is accurate, but it doesn’t pick up on things like commas or periods, which can make spoken text harder to understand. That’s why we’re looking into other voice recognition engines that can handle punctuation better while keeping the accuracy we need.</p>
|
||||
<p>Improving voice input like this isn’t just about convenience – it’s about making our app more accessible to everyone. For people with visual impairments, being able to use voice input means they don’t have to rely on typing. Those with motor difficulties can control the app without needing to use their hands. And for users with dyslexia or other learning challenges, voice input can be much easier and more natural than typing out words.</p>
|
||||
<p>We’re excited to experiment with this new feature, knowing it could make a real difference for people who rely on voice technology to get things done.</p>
|
||||
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20241128-voice-typing.jpg" alt=""></p>
|
||||
]]></description><link>https://joplinapp.org/news/20241128-project-1-voice-input</link><guid isPermaLink="false">20241128-project-1-voice-input</guid><pubDate>Thu, 28 Nov 2024 00:00:00 GMT</pubDate><twitter-text></twitter-text></item><item><title><![CDATA[What's new in Joplin 3.0]]></title><description><![CDATA[<h2>Desktop application<a name="desktop-application" href="#desktop-application" class="heading-anchor">🔗</a></h2>
|
||||
<h3>Trash folder<a name="trash-folder" href="#trash-folder" class="heading-anchor">🔗</a></h3>
|
||||
<p>Joplin now support a trash folder - any deleted notes or notebooks will be moved to that folder. You can also choose to have these notes permanently deleted after a number of days.</p>
|
||||
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20240701-trash.png" alt=""></p>
|
||||
<p>Support for the trash folder has a somewhat long history in Joplin since it's an obvious and important feature to add, yet it can be particularly tricky once you start realising how many parts of the app it's going to impact.</p>
|
||||
<p>Many attempts have been made over time: my first attempt was based on the note history feature. Indeed since this feature already saves versions of notes, it seems to make sense to use it for the trash feature, and indeed the note history feature <a href="https://joplinapp.org/news/20190523-221026">was designed for this originally</a>. However that approach turned to be needlessly complicated and after modifying hundreds of files just for this, the idea was dropped.</p>
|
||||
<p>The next one was based on using a <a href="https://github.com/laurent22/joplin/issues/483">special "trash" tag</a> - deleted notes would have this tag attached to them and would appear in a special "trash" folder. This approach also had <a href="https://github.com/laurent22/joplin/issues/483">many issues</a> probably the main one being that notebooks can't be tagged, which means we would have to add support for tagged notebooks and that in itself would also be a massive change.</p>
|
||||
<p><a href="https://discourse.joplinapp.org/t/trashcan/3998/16">Various</a>, <a href="https://discourse.joplinapp.org/t/poll-trash-bin-plugin/19951">ideas,</a> were also attempted using plugins, by creating a special "trash folder", but in the end no such plugin was ever created, probably due to limitations of the plugin API.</p>
|
||||
<p>In the end, turned out that this <a href="https://github.com/laurent22/joplin/issues/483#issuecomment-585655742">old idea</a> of adding a "deleted" property to each note and notebook was the easiest approach. With this it was simpler to get to a working solution relatively quickly, and then it was a matter of ensuring that deleted notes don't appear where they shouldn't, such as search results, etc.</p>
|
||||
<h3>Joplin Cloud multi-factor authentication<a name="joplin-cloud-multi-factor-authentication" href="#joplin-cloud-multi-factor-authentication" class="heading-anchor">🔗</a></h3>
|
||||
<p>Multi-factor authentication (MFA), also known as two-factor authentication (2FA) is a security process that requires you to provide two or more verification factors to gain access to a system or account. It typically includes something you know (password), something you have (security token), and something you are (biometric verification).</p>
|
||||
<p>To better secure your account, Joplin Cloud and all Joplin applications now support MFA. To enable it, go to your Joplin Cloud profile, click on "Enable multi-factor authentication" and follow the instructions. Please note that all your applications will then be disconnected, so you will need to login again (your data of course will remain on the app so you won't have to download it again).</p>
|
||||
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20240701-mfa.png" alt=""></p>
|
||||
<h3>Note list with multiple columns<a name="note-list-with-multiple-columns" href="#note-list-with-multiple-columns" class="heading-anchor">🔗</a></h3>
|
||||
<p>In this release we add support for multiple columns in the note list. You can display various properties of the notes, as well as sort the notes by these properties. As usual this feature can be controlled and customised by plugins so for example it should be possible to display custom columns, and display custom information including thumbnails.</p>
|
||||
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20240701-note-list-multi.png" alt=""></p>
|
||||
<h3>Plugin API enhancement<a name="plugin-api-enhancement" href="#plugin-api-enhancement" class="heading-anchor">🔗</a></h3>
|
||||
<p>The plugin API has received several updates to facilitate easy customisation of the app As mentioned above, it is now possible to customise the new note list. Besides this, we've added support for loading PDFs and creating images from them, which can for example be used to create thumbnails.</p>
|
||||
<p>Many other small enhancements have been made to the plugin API to help you tailor the app to your needs!</p>
|
||||
<h3>View OCR data<a name="view-ocr-data" href="#view-ocr-data" class="heading-anchor">🔗</a></h3>
|
||||
<p>Now when you right-click on an image or PDF you have an option to view the OCR (Optical character recognition) data associated with it. That will allow you for example to easily copy and paste the text.</p>
|
||||
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20240701-ocr-data.png" alt=""></p>
|
||||
<h2>Plugin support on mobile<a name="plugin-support-on-mobile" href="#plugin-support-on-mobile" class="heading-anchor">🔗</a></h2>
|
||||
<p>As always, most of the above changes also apply to mobile (iOS and Android), for example the trash folder and MFA support.</p>
|
||||
<p>Additionally the mobile application now adds support for plugins. To enable the feature, go to the settings then to the "Plugins" section. The feature is currently in Beta, in particular it means that some plugins do not work or only partially work. Normally the app should not offer you to install a non-working plugin but that may still happen. In general if you notice any issue with this beta feature please let me us know as we're keen to improve it.</p>
|
||||
<p>Support for cross-platform plugins in Joplin is great news as it means a lot of new features become available on mobile. As of now, we have checked the following plugins and can confirm that they work on mobile:</p>
|
||||
<ul>
|
||||
<li><a href="https://joplinapp.org/plugins/plugin/com.whatever.quick-links/">Quick Links</a></li>
|
||||
<li><a href="https://joplinapp.org/plugins/plugin/com.whatever.inline-tags/">Inline Tags</a></li>
|
||||
<li><a href="https://joplinapp.org/plugins/plugin/io.github.personalizedrefrigerator.codemirror6-settings/">CodeMirror 6 settings</a></li>
|
||||
<li><a href="https://joplinapp.org/plugins/plugin/com.hieuthi.joplin.function-plot/">Function plot</a></li>
|
||||
<li><a href="https://joplinapp.org/plugins/plugin/joplin.plugin.space-indenter/">Space indenter</a></li>
|
||||
<li><a href="https://joplinapp.org/plugins/plugin/joplin.plugin.alondmnt.tag-navigator/">Inline Tag Navigator</a></li>
|
||||
</ul>
|
||||
<p>Those are just some examples - many more are working!</p>
|
||||
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20240701-mobile-plugins.png" alt=""></p>
|
||||
<h1>Full changelogs<a name="full-changelogs" href="#full-changelogs" class="heading-anchor">🔗</a></h1>
|
||||
<p>This is just an overview of the main features. The full changelogs are available there:</p>
|
||||
<ul>
|
||||
<li>Desktop: <a href="https://joplinapp.org/help/about/changelog/desktop">https://joplinapp.org/help/about/changelog/desktop</a></li>
|
||||
<li>Android: <a href="https://joplinapp.org/help/about/changelog/android/">https://joplinapp.org/help/about/changelog/android/</a></li>
|
||||
<li>iOS: <a href="https://joplinapp.org/help/about/changelog/ios/">https://joplinapp.org/help/about/changelog/ios/</a></li>
|
||||
</ul>
|
||||
]]></description><link>https://joplinapp.org/news/20240701-release-3-0</link><guid isPermaLink="false">20240701-release-3-0</guid><pubDate>Mon, 01 Jul 2024 00:00:00 GMT</pubDate><twitter-text>What's new in Joplin 3.0</twitter-text></item><item><title><![CDATA[What's new in Joplin 2.14]]></title><description><![CDATA[<h2>OCR<a name="ocr" href="#ocr" class="heading-anchor">🔗</a></h2>
|
||||
<p>Optical Character Recognition (OCR) in Joplin enables the transformation of text-containing images into machine-readable text formats. From this version you can enable OCR in the Configuration screen under the "General" section. Once activated, Joplin scans images and PDFs, extracting text data for searchability.</p>
|
||||
<p>While OCR search is available on both desktop and mobile apps, document scanning is limited to the desktop due to resource demands. For more information head to the <a href="https://joplinapp.org/help/apps/ocr">OCR official documentation</a>!</p>
|
||||
<h2>Bundled plugins<a name="bundled-plugins" href="#bundled-plugins" class="heading-anchor">🔗</a></h2>
|
||||
<p>Joplin will now bundle high quality plugins that we feel will benefit most users. With this version we include the great <a href="https://github.com/JackGruber/joplin-plugin-backup">Backup plugin</a> by JackGruber. This will provide another layer of safety when using Joplin as by default it will automatically backup your notes in a "JoplinBackup" folder in your home directory.</p>
|
||||
<p>Note that, just like any other plugin, you can change the plugin configuration or even disable it from the settings.</p>
|
||||
<h2>ENEX importer<a name="enex-importer" href="#enex-importer" class="heading-anchor">🔗</a></h2>
|
||||
<p>As usual in recent version, there are plenty of improvements to the <a href="https://joplinapp.org/help/apps/import_export#importing-from-evernote">Joplin ENEX importer</a>. Besides the various fixes and enhancement to support this format, we've added a few useful features:</p>
|
||||
<h3>Restore note links after importing an ENEX file<a name="restore-note-links-after-importing-an-enex-file" href="#restore-note-links-after-importing-an-enex-file" class="heading-anchor">🔗</a></h3>
|
||||
<p>Evernote Export files do not include the necessary information to reliably restore the links between notes, so for a long time this feature was not supported by the importer.</p>
|
||||
<p>Now however Joplin will try to guess what note is linked to what other note based on the note title, which in many cases will give the expected result. But not always - when that happens, and Joplin cannot detect the link target, the application leaves the original Evernote link. That way you can manually restore it yourself or at least find back what the note was linked to.</p>
|
||||
<h3>Import a directory of ENEX files<a name="import-a-directory-of-enex-files" href="#import-a-directory-of-enex-files" class="heading-anchor">🔗</a></h3>
|
||||
<p>It is notoriously difficult to export data from Evernote because, among other issues, you can only export one notebook at a time, which is an obvious problems when you have dozens of notebooks. Unfortunately we cannot improve this part of the process since this up to Evernote, however we now make it easier to import all these notebook files by adding support for importing a folder of ENEX files. To use this feature, go to File > Import, and select one of the "ENEX (Directory)" options.</p>
|
||||
<p>This will process all the ENEX files in that directory and create a notebook in Joplin for each of them.</p>
|
||||
<h2>Beta Markdown editor<a name="beta-markdown-editor" href="#beta-markdown-editor" class="heading-anchor">🔗</a></h2>
|
||||
<p>This version features further improvements to the new Markdown editor based on <a href="https://codemirror.net/">CodeMirror 6</a>. The goal eventually is to be able to use the same editor on both the desktop and mobile application (which already uses CodeMirror 6), which will allow a more consistent user experience across devices.</p>
|
||||
<p>Plugin support has also been improved in this version - plugin authors can now write native CodeMirror 6 extensions using the plugin API. For more information check the documentation on <a href="https://joplinapp.org/help/api/tutorials/cm6_plugin/">how to create a Markdown plugin</a>!</p>
|
||||
<p>Another benefit of this new editor is that, in a future version, it will allow us to support plugins on the mobile application since a plugin written for the desktop app will work on mobile too. There are several other advantages that Henry <a href="https://discourse.joplinapp.org/t/pre-release-v2-13-is-now-available-updated-18-11-2023/32697/12?u=laurent">listed in this forum post</a>.</p>
|
||||
<h2>Rich text editor improvements<a name="rich-text-editor-improvements" href="#rich-text-editor-improvements" class="heading-anchor">🔗</a></h2>
|
||||
<p>We continue making improvements to the Rich Text Editor (RTE) in particular to improve interoperability with other applications, such as LibreOffice, Office or web browsers, as well as better handling of copy and paste.</p>
|
||||
<p>Another notable addition is support for setting colours, which was a frequently asked feature. To use the feature, select it from the "..." button in the toolbar. Note that once applied the colours will work in the Markdown editor too!</p>
|
||||
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20240301-rte-colors.png" alt=""></p>
|
||||
<p>See below for the full list of RTE changes:</p>
|
||||
<ul>
|
||||
<li>Fixed: Rich text editor: Fix context menu not shown in some cases</li>
|
||||
<li>Improved: Speed up pasting text and images in Rich Text Editor</li>
|
||||
<li>Fixed: Fix drag-and-drop of images and text in the rich text editor</li>
|
||||
<li>Fixed: Fix images with SVG data URLs corrupted in the rich text editor</li>
|
||||
<li>Fixed: Pasting rich text in the RTE sometimes result in invalid markup</li>
|
||||
<li>Fixed: Rich text editor: Fix newline behavior in new notes</li>
|
||||
<li>Improved: Add support for changing text colors in rich text editor</li>
|
||||
<li>Fixed: Fix HTML resource links lost when editing notes in the rich text editor</li>
|
||||
<li>Fixed: Fix code blocks with blank lines break tables in the rich text editor</li>
|
||||
<li>Fixed: Copied and pasted text from Firefox to RTE does not include images</li>
|
||||
<li>Fixed: Pasting rich text in the RTE sometimes result in invalid markup</li>
|
||||
<li>Fixed: Fixed copying and pasting an image from Chrome in RTE</li>
|
||||
</ul>
|
||||
<h1>Full changelog<a name="full-changelog" href="#full-changelog" class="heading-anchor">🔗</a></h1>
|
||||
<p>This is just an overview of the main features. The full changelog is available there:</p>
|
||||
<ul>
|
||||
<li>Desktop: <a href="https://joplinapp.org/help/about/changelog/desktop">https://joplinapp.org/help/about/changelog/desktop</a></li>
|
||||
<li>Android: <a href="https://joplinapp.org/help/about/changelog/android/">https://joplinapp.org/help/about/changelog/android/</a></li>
|
||||
<li>iOS: <a href="https://joplinapp.org/help/about/changelog/ios/">https://joplinapp.org/help/about/changelog/ios/</a></li>
|
||||
</ul>
|
||||
]]></description><link>https://joplinapp.org/news/20240301-release-2-14</link><guid isPermaLink="false">20240301-release-2-14</guid><pubDate>Fri, 01 Mar 2024 00:00:00 GMT</pubDate><twitter-text>What's new in Joplin 2.14</twitter-text></item><item><title><![CDATA[Support for new plugin metadata]]></title><description><![CDATA[<p>The plugin manifest now supports new properties to better describe and present your plugins on Joplin Plugins website. Those are the <code>icons</code>, <code>categories</code>, <code>screenshots</code> and <code>promo_tile</code> properties.</p>
|
||||
<h2>Icon<a name="icon" href="#icon" class="heading-anchor">🔗</a></h2>
|
||||
<p>This is the icon that will be used in various plugin pages, including in your main plugin page. It will be shown on the main result page too. If not provided, a default icon will be displayed instead.</p>
|
||||
<h2>Category<a name="category" href="#category" class="heading-anchor">🔗</a></h2>
|
||||
<p>You can supply one or more category for your plugin - it will be used to filter the plugins on the website.</p>
|
||||
<h2>Screenshots<a name="screenshots" href="#screenshots" class="heading-anchor">🔗</a></h2>
|
||||
<p>Again you can provide one or more screenshots to present your plugin on the website.</p>
|
||||
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20240127-icon-category-screenshot.png" alt=""></p>
|
||||
<p><em>An example of plugin with icon, category and screenshot</em></p>
|
||||
<h2>Promo tile<a name="promo-tile" href="#promo-tile" class="heading-anchor">🔗</a></h2>
|
||||
<p>The promo tile is an optional image that is used to display your plugin on the main website page. If no promo tile is supplied, the icon will be used instead.</p>
|
||||
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20240127-promo-tile.png" alt=""></p>
|
||||
<p><em>An example of promo tile</em></p>
|
||||
<h2>More information<a name="more-information" href="#more-information" class="heading-anchor">🔗</a></h2>
|
||||
<p>For more information on how to set this plugin metadata, please check the <a href="https://joplinapp.org/help/api/references/plugin_manifest">Plugin Manifest documentation</a></p>
|
||||
]]></description><link>https://joplinapp.org/news/20240127-new-plugin-metadata</link><guid isPermaLink="false">20240127-new-plugin-metadata</guid><pubDate>Sat, 27 Jan 2024 00:00:00 GMT</pubDate><twitter-text></twitter-text></item><item><title><![CDATA[Faster synchronisation in upcoming Joplin version!]]></title><description><![CDATA[<p>The next version of Joplin Cloud (and Joplin Server) will include a change that will make synchronisation, in particular when synchronising a new device for the first time, significantly faster. This is achieved by bundling more data with the calls that retrieve notes and other data, thus reducing the number of unnecessary requests.</p>
|
||||
<p>This change will be applied soon to Joplin Cloud (and Server), and the Joplin mobile, desktop and CLI applications will be able to use it from version 2.14.</p>
|
||||
<p>In my tests with about 26,000 items, synchronisation was more than twice as fast on Joplin Cloud (22.5 minutes vs 9.5 minutes):</p>
|
||||
<h2>Before<a name="before" href="#before" class="heading-anchor">🔗</a></h2>
|
||||
@@ -258,110 +419,4 @@ sys 0m38.013s</p>
|
||||
<p>Renovate on the other hand upgrades packages one at a time, and run our test units to ensure everything is still working as expected. It also upgrades multiple instances of the same package across the monorepo, which is convenient to keep our code consistent. It also has a number of options to make our life easier, such as the ability to automatically merge a pull request for patch releases since this is usually safe (when a package is, for example upgraded from 1.0.1 to 1.0.3).</p>
|
||||
<p>Although Renovate automates the package upgrades it doesn't mean all upgrades are straightforward - our tests won't catch all issues, so the apps might end up being broken or cannot be compiled anymore. So there's manual work involved to get everything working after certain upgrades - for the most part this has been done and the apps appear to be stable so far.</p>
|
||||
<p>This will however be an important part of pre-release 2.10 (or should it be 3.0?) - we hope that everything works but we may need your support to try this version and report any glitch you may have found. As always pre-release regressions have the highest priority so we aim to fix them as quickly as possible.</p>
|
||||
]]></description><link>https://joplinapp.org/news/20221115-renovate</link><guid isPermaLink="false">20221115-renovate</guid><pubDate>Tue, 15 Nov 2022 00:00:00 GMT</pubDate><twitter-text>Modernising and securing Joplin, one package at a time</twitter-text></item><item><title><![CDATA[Joplin Cloud is now part of the Joplin company]]></title><description><![CDATA[<p>As some of you may know Joplin Cloud so far has been operating under my own single-person limited company in the UK. This was mostly for convenience since it meant I could get things going quickly without having to setup a special structure for it.</p>
|
||||
<p>Now that Joplin Cloud is becoming more mature however a proper company, simply called Joplin, has been created. This company will be based in France, and will be used mainly to handle the commercial part of the project, which currently is mostly Joplin Cloud. I'm still heading the company so there won't be any major change to the way the project is managed.</p>
|
||||
<h2>What does it mean for Joplin Cloud?<a name="what-does-it-mean-for-joplin-cloud" href="#what-does-it-mean-for-joplin-cloud" class="heading-anchor">🔗</a></h2>
|
||||
<p>There will be no significant change - the website ownership simply moves from one company in the UK to one in France. The new company is still owned by myself so I will keep following the same roadmap.</p>
|
||||
<h2>What does it mean for the open source apps?<a name="what-does-it-mean-for-the-open-source-apps" href="#what-does-it-mean-for-the-open-source-apps" class="heading-anchor">🔗</a></h2>
|
||||
<p>On the short term, the only visible change will be moving the non-open source assets, such as logo or trademark from the UK company to the French one. So expect a few changes in copyright notices here and there.</p>
|
||||
<p>In the medium to long term, I would like to hire one or two software developers to help me with the Joplin Cloud development, because we reached a point where managing the whole project is difficult for a single person, so some help is needed. Some of their work might also touch the open source apps since both are quite related - but of course that work will remain open source too.</p>
|
||||
<p>As a general rule, there will be a permanent commitment to keep the apps open source and to derive value from Joplin Cloud/Server.</p>
|
||||
<p>Longer term I would like to create a non-profit organisation to handle the open source applications and to make decisions about the project, as well as to decide how to allocate any funding we receive (for example from GSoC).</p>
|
||||
<h2>Looking forward<a name="looking-forward" href="#looking-forward" class="heading-anchor">🔗</a></h2>
|
||||
<p>Those past 6 years of developing Joplin have been an exciting and rewarding experience, thank you to all of you of the friendly and vibrant Joplin community for your contribution toward making Joplin the software it is today, and looking forward to continuing the journey together!</p>
|
||||
]]></description><link>https://joplinapp.org/news/20221012-Joplin-Company</link><guid isPermaLink="false">20221012-Joplin-Company</guid><pubDate>Wed, 12 Oct 2022 00:00:00 GMT</pubDate><twitter-text>Joplin Cloud is now operated by the Joplin company! More info on the announcement post.</twitter-text></item><item><title><![CDATA[Joplin interview on Website Planet]]></title><description><![CDATA[<p>Website Planet has recently conducted an interview about Joplin - it may give you some insight on the current status of the project, our priorities, and future plans! More on the article page - <a href="https://www.websiteplanet.com/blog/interview-joplin/">Organise Your Thoughts with Open Source Note-Taking App, Joplin</a></p>
|
||||
]]></description><link>https://joplinapp.org/news/20220906-interview-websiteplanet</link><guid isPermaLink="false">20220906-interview-websiteplanet</guid><pubDate>Tue, 06 Sep 2022 00:00:00 GMT</pubDate><twitter-text></twitter-text></item><item><title><![CDATA[Joplin first meetup on 30 August!]]></title><description><![CDATA[<p>We are glad to announce <a href="https://www.meetup.com/joplin/events/287611873/">the first Joplin Meetup</a> that will take place on 30 August 2022 in London!</p>
|
||||
<p>This is an opportunity to meet other Joplin users as well as some of the main contributors, to discuss the apps, or to ask questions and exchange tips and tricks on how to use the app, develop plugins or contribute to the application. Everybody, technical or not, is welcome!</p>
|
||||
<p>We will meet at the Old Thameside Inn next to London Bridge. If the weather allows we will be on the terrace outside, if not inside.</p>
|
||||
<p>More information on the official Meetup page:</p>
|
||||
<p><a href="https://www.meetup.com/joplin/events/287611873/">https://www.meetup.com/joplin/events/287611873/</a></p>
|
||||
]]></description><link>https://joplinapp.org/news/20220808-first-meetup</link><guid isPermaLink="false">20220808-first-meetup</guid><pubDate>Mon, 08 Aug 2022 00:00:00 GMT</pubDate><twitter-text>Joplin will have its first Meetup on 30 August! Come and join us at the Old Thameside Inn next to London Bridge! https://www.meetup.com/joplin/events/287611873/</twitter-text></item><item><title><![CDATA[Joplin 2.8 is available!]]></title><description><![CDATA[<p>As always a lot of changes and new features in this new version available on both desktop and mobile.</p>
|
||||
<h2>Multiple profile support<a name="multiple-profile-support" href="#multiple-profile-support" class="heading-anchor">🔗</a></h2>
|
||||
<p>Perhaps the most visible change in this version is the support for multiple profiles. You can now create as many application profile as you wish, each with their own settings, and easily switch from one to another. The main use case is to support for example a "work" profile and a "personal" profile, to allow you to keep things independent, and each profile can sync with a different sync target.</p>
|
||||
<p>To create a new profile, open <strong>File > Switch profile</strong> and select <strong>Create new profile</strong>, enter the profile name and press OK. The app will automatically switch to this new profile, which you can now configure.</p>
|
||||
<p>To switch back to the previous profile, again open <strong>File > Switch profile</strong> and select <strong>Default</strong>.</p>
|
||||
<p>Note that profiles all share certain settings, such as language, font size, theme, etc. This is done so that you don't have reconfigure every details when switching profiles. Other settings such as sync configuration is per profile.</p>
|
||||
<p>The feature is available on desktop only for now, and should be ported to mobile relatively soon.</p>
|
||||
<h2>Save Mermaid graph as PNG/SVG<a name="save-mermaid-graph-as-png-svg" href="#save-mermaid-graph-as-png-svg" class="heading-anchor">🔗</a></h2>
|
||||
<p>This convenient feature allows exporting a Mermaid graph as a PNG or SVG image, or allows copying the image as a DataUrl, which can then be pasted in any compatible text editor. Thanks Asrient for implementing this!</p>
|
||||
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20220606-mermaid-as-png.png" alt=""></p>
|
||||
<h2>Publish a mini-website using Joplin Cloud<a name="publish-a-mini-website-using-joplin-cloud" href="#publish-a-mini-website-using-joplin-cloud" class="heading-anchor">🔗</a></h2>
|
||||
<p>Joplin Cloud now supports publishing a note "recursively", which means the notes and all the notes it is linked to. This allows easily publishing a simple website made of multiples and images.</p>
|
||||
<p>To make use of this feature, simply select <strong>Also publish linked notes</strong> when publishing a note.</p>
|
||||
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20220606-publish-website.png" alt=""></p>
|
||||
<h2>And more!<a name="and-more" href="#and-more" class="heading-anchor">🔗</a></h2>
|
||||
<p>In total there are 38 changes to improve the app reliability, security and usability. Full changelog is at <a href="https://joplinapp.org/help/about/changelog/desktop">https://joplinapp.org/help/about/changelog/desktop</a></p>
|
||||
]]></description><link>https://joplinapp.org/news/20220606-release-2-8</link><guid isPermaLink="false">20220606-release-2-8</guid><pubDate>Mon, 06 Jun 2022 00:00:00 GMT</pubDate><twitter-text></twitter-text></item><item><title><![CDATA[Joplin received 6 Contributor Projects for GSoC 2022!]]></title><description><![CDATA[<p>We are glad to announce that Google allocated us six projects this year for Google Summer of Code! So this is six contributors who will be working on various parts of the apps, both desktop and mobile, over the summer.</p>
|
||||
<p>Over the next few weeks, till 13 June, will be the Community Bonding Period during which GSoC contributors get to know mentors, read documentation, and get up to speed to begin working on their projects.</p>
|
||||
<p>Here's the full list of projects, contributors and mentors.</p>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Project Title</th>
|
||||
<th>Contributor</th>
|
||||
<th>Assigned Mentor(s)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Improve PDF previewer of Joplin</td>
|
||||
<td>asrient</td>
|
||||
<td>Roman, JackGruber</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Implement default plugins on desktop application</td>
|
||||
<td>mak2002</td>
|
||||
<td>CalebJohn, Laurent</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Mobile — Easier Editing</td>
|
||||
<td>Henry H</td>
|
||||
<td>Daeraxa, CalebJohn</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Improve plugin search and discoverability</td>
|
||||
<td>Retr0ve</td>
|
||||
<td>JackGruber, Stefan</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Tablet Layout Project</td>
|
||||
<td>Tolu-Mals</td>
|
||||
<td>Laurent, Daeraxa</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Email Plugin</td>
|
||||
<td>Bishoy Magdy Adeeb</td>
|
||||
<td>Stefan, Roman</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
]]></description><link>https://joplinapp.org/news/20220522-gsoc-contributors</link><guid isPermaLink="false">20220522-gsoc-contributors</guid><pubDate>Sun, 22 May 2022 00:00:00 GMT</pubDate><twitter-text>Joplin received 6 Contributor Projects for GSoC 2022! Welcome to our new contributors who will be working on these projects over summer!</twitter-text></item><item><title><![CDATA[GSoC "Contributor Proposals" phase is starting now!]]></title><description><![CDATA[<p>The "Contributor Proposals" phase of GSoC 2022 is starting today! If you would like to be a contributor, now is the time to choose your project idea, write your proposal, and upload it to <a href="https://summerofcode.withgoogle.com/">https://summerofcode.withgoogle.com/</a></p>
|
||||
<p>When it's done, please also let us know by posting an update on your forum introduction post.</p>
|
||||
<p>If you haven't created a pull request yet, it's still time to create one. Doing so will greatly increase your chances of being selected!</p>
|
||||
]]></description><link>https://joplinapp.org/news/20220405-gsoc-contributor-proposals</link><guid isPermaLink="false">20220405-gsoc-contributor-proposals</guid><pubDate>Tue, 05 Apr 2022 00:00:00 GMT</pubDate><twitter-text></twitter-text></item><item><title><![CDATA[Joplin participates in Google Summer of Code 2022!]]></title><description><![CDATA[<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20220308-gsoc-banner.png" alt=""></p>
|
||||
<p>For the third year, Joplin has been selected as a <strong>Google Summer of Code</strong> mentor organisation! We look forward to start working with the contributors on some great new projects. This year's main themes are:</p>
|
||||
<ul>
|
||||
<li><strong>Mobile and tablet development</strong> - we want to improve the mobile/tablet application on iOS and Android.</li>
|
||||
<li><strong>Plugin and external apps</strong> - leverage the Joplin API to create plugins and external apps.</li>
|
||||
<li>And of course contributors are welcome to suggest their own ideas.</li>
|
||||
</ul>
|
||||
<p>Our full idea list is available here: <a href="https://joplinapp.org/help/dev/gsoc/gsoc2022/ideas">GSoC 2022 idea list</a></p>
|
||||
<p>In the coming month (<strong>March 7 - April 3</strong>), contributors will start getting involved in the forum and start discussing project ideas with the mentors and community. It's also a good time to start looking at Joplin's source code, perhaps work on fixing bugs or implement small features to get familiar with the source code, and to show us your skills.</p>
|
||||
<p>One difference with previous years is that anyone, not just students, are allowed to participate.</p>
|
||||
<p>Additionally, last year Google only allowed smaller projects, while this year they allow again small and large projects, so we've indicated this in the idea list - the small ones are <strong>175 hours</strong>, and the large ones <strong>350 hours</strong>.</p>
|
||||
]]></description><link>https://joplinapp.org/news/20220308-gsoc2022-start</link><guid isPermaLink="false">20220308-gsoc2022-start</guid><pubDate>Tue, 08 Mar 2022 00:00:00 GMT</pubDate><twitter-text></twitter-text></item><item><title><![CDATA[Joplin 2.7 is available!]]></title><description><![CDATA[<p>This new release is largely focused on bug fixing and optimising various parts of the apps. There's about 26 improvements and 25 bugs and security fixes included - as always many of these apply to both the mobile and desktop app (see the <a href="https://joplinapp.org/help/about/changelog/desktop">desktop changelog</a> and <a href="https://joplinapp.org/help/about/changelog/android/">mobile changelog</a>).</p>
|
||||
<p>Many thanks to all the contributors who helped create this release!</p>
|
||||
<p>Below are some of the more noticeable changes:</p>
|
||||
<h2>Notebook custom icons<a name="notebook-custom-icons" href="#notebook-custom-icons" class="heading-anchor">🔗</a></h2>
|
||||
<p>Since version 2.6 it was possible to assign an emoji icon to a notebook, and with this new version it's now possible to assign any custom icon. The icon may be a PNG or JPG file of any size. The app will then import the file and resize it to the correct size. To use a custom icon, follow these steps:</p>
|
||||
<p>Right-click on a notebook, and select "Edit":</p>
|
||||
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20220224-edit-notebook.png" alt=""></p>
|
||||
<p>In the "Edit notebook" dialog, click "Select file..." and browse to your icon image:</p>
|
||||
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20220224-edit-dialog.png" alt=""></p>
|
||||
<p>Click "OK" and the icon will now appear next to the notebook:</p>
|
||||
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20220224-notebook-icon.png" alt=""></p>
|
||||
<p>The icon can be changed only from the desktop application at the moment, but it will sync and be displayed correctly on the mobile app too.</p>
|
||||
<h2>Plugin API improvements<a name="plugin-api-improvements" href="#plugin-api-improvements" class="heading-anchor">🔗</a></h2>
|
||||
<p>This version also includes a number of improvements to the plugin API, in particular it is now easier to customise the editor context menu from a plugin and dynamically add items to it depending on the context. For example, with the Rich Markdown plugin it will be possible to right-click on an image and open it, or copy it to the clipboard.</p>
|
||||
<p>A few additional functions have also been added to make plugin development simpler - in particular a command to open any item, whether it's a notebook, note, tag or attachement; and functions to work with attachements, in particular to reveal an attachement in the system file explorer, and to track changes to an attachement.</p>
|
||||
]]></description><link>https://joplinapp.org/news/20220224-release-2-7</link><guid isPermaLink="false">20220224-release-2-7</guid><pubDate>Thu, 24 Feb 2022 00:00:00 GMT</pubDate><twitter-text></twitter-text></item></channel></rss>
|
||||
]]></description><link>https://joplinapp.org/news/20221115-renovate</link><guid isPermaLink="false">20221115-renovate</guid><pubDate>Tue, 15 Nov 2022 00:00:00 GMT</pubDate><twitter-text>Modernising and securing Joplin, one package at a time</twitter-text></item></channel></rss>
|
@@ -1,6 +1,6 @@
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-12 social-links">
|
||||
<a class="social-link-twitter" href="https://twitter.com/joplinapp" title="Joplin Twitter feed"><i class="fab fa-twitter"></i></a>
|
||||
<a class="social-link-bluesky" href="https://bsky.app/profile/joplinapp.bsky.social" title="Joplin Bluesky feed"><i class="fa-brands fa-bluesky"></i></a>
|
||||
<a class="social-link-mastodon" href="https://mastodon.social/@joplinapp" title="Joplin Mastodon feed"><i class="fab fa-mastodon"></i></a>
|
||||
<a class="social-link-patreon" href="https://www.patreon.com/joplin" title="Joplin Patreon"><i class="fab fa-patreon"></i></a>
|
||||
<a class="social-link-discord" href="https://discord.gg/VSj7AFHvpq" title="Joplin Discord chat"><i class="fab fa-discord"></i></a>
|
||||
@@ -8,4 +8,4 @@
|
||||
<a class="social-link-lemmy" href="https://sopuli.xyz/c/joplinapp" title="Joplin Lemmy Community"><i class="fas fa-otter"></i></a>
|
||||
<a class="social-link-github" href="https://github.com/laurent22/joplin/" title="Joplin GitHub repository"><i class="fab fa-github"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@@ -1 +1 @@
|
||||
<a href="https://twitter.com/joplinapp" title="Joplin Twitter feed" class="fw500 twitter-link"><i class="fab fa-twitter"></i></a>
|
||||
<a href="https://bsky.app/profile/joplinapp.bsky.social" title="Joplin Bluesky feed" class="fw500 twitter-link"><i class="fa-brands fa-bluesky"></i></a>
|
Before Width: | Height: | Size: 730 KiB |