Compare commits
1421 Commits
usearch_ag
...
server_rev
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f1a1d8f873 | ||
|
|
da7edac292 | ||
|
|
daaf73664a | ||
|
|
17127b8f0e | ||
|
|
b9c8fdb080 | ||
|
|
98868dd76f | ||
|
|
b58aeddeba | ||
|
|
e9ef9d55a4 | ||
|
|
968f04c04a | ||
|
|
59cb3f091e | ||
|
|
630f5a2706 | ||
|
|
4a743be322 | ||
|
|
c2db1f7da9 | ||
|
|
843e956a8a | ||
|
|
c2d1c66888 | ||
|
|
e2aabfb95a | ||
|
|
dbf88c7bed | ||
|
|
a06a5be983 | ||
|
|
3bba125f1c | ||
|
|
1718e5d1d6 | ||
|
|
b16c9af36b | ||
|
|
1cc3499019 | ||
|
|
4260c3c769 | ||
|
|
209291e09a | ||
|
|
dd08ca82fe | ||
|
|
8d71a6bb58 | ||
|
|
c583fa4742 | ||
|
|
ec0d3c4266 | ||
|
|
55cc92e57d | ||
|
|
3f71d491e9 | ||
|
|
304daf0b09 | ||
|
|
e1281657ba | ||
|
|
595871f571 | ||
|
|
d31127c2e3 | ||
|
|
09d7b82c08 | ||
|
|
88c9f4943b | ||
|
|
cacc7dc85a | ||
|
|
24a30709cd | ||
|
|
8e4e06af73 | ||
|
|
439b4fdeec | ||
|
|
32efdf464e | ||
|
|
f76fa34e5b | ||
|
|
868c45baa4 | ||
|
|
fa1838c82e | ||
|
|
6b5db8d85b | ||
|
|
9c071c0dab | ||
|
|
73b87950de | ||
|
|
ee0c7472a1 | ||
|
|
ba56908d2d | ||
|
|
b5d725e139 | ||
|
|
5750d72c5a | ||
|
|
00a430927f | ||
|
|
ab57a1f8fe | ||
|
|
cfdeb475ef | ||
|
|
1f0f240f97 | ||
|
|
2ff5058a3e | ||
|
|
641dfdd11e | ||
|
|
054ad8b480 | ||
|
|
b3827dd812 | ||
|
|
087ba629e0 | ||
|
|
e0c647f583 | ||
|
|
e08f97e543 | ||
|
|
efa82b7fb7 | ||
|
|
7c325065a5 | ||
|
|
4a346c47d1 | ||
|
|
dee38e3ed8 | ||
|
|
69237fa659 | ||
|
|
fb8a22d370 | ||
|
|
8a177bbe2c | ||
|
|
943a524ba9 | ||
|
|
63746523e2 | ||
|
|
b5868468bd | ||
|
|
aa48543a98 | ||
|
|
164da10772 | ||
|
|
291368f7ba | ||
|
|
b6d797681d | ||
|
|
d67dc4b76f | ||
|
|
d78fa3f27d | ||
|
|
e30b8024e2 | ||
|
|
c95d3b8c00 | ||
|
|
ec532ad2ac | ||
|
|
479f2188b6 | ||
|
|
c7d96482cb | ||
|
|
67e1a64e7f | ||
|
|
49a8016786 | ||
|
|
39558a27c9 | ||
|
|
f7d4273c1d | ||
|
|
3369e14f69 | ||
|
|
9b28996d3f | ||
|
|
fd98243394 | ||
|
|
9cd6784837 | ||
|
|
127c480855 | ||
|
|
d1717ef308 | ||
|
|
08a43f5d64 | ||
|
|
bcb389c56d | ||
|
|
689edebec4 | ||
|
|
a97658b67d | ||
|
|
b6dafd5a17 | ||
|
|
a6e78ab732 | ||
|
|
e3ab4eda15 | ||
|
|
de8fa9f9e9 | ||
|
|
14bc47c055 | ||
|
|
99a8f5152a | ||
|
|
b68fda70ef | ||
|
|
987c02fdac | ||
|
|
0f8ea1e814 | ||
|
|
27af2c3bbc | ||
|
|
96c2270062 | ||
|
|
781583c1db | ||
|
|
06d3f679f1 | ||
|
|
a809ab58b3 | ||
|
|
f06314fb13 | ||
|
|
9696409b01 | ||
|
|
b8d69e79f0 | ||
|
|
7f3311ad36 | ||
|
|
18dba3f629 | ||
|
|
22e85b0364 | ||
|
|
26fbe84d9c | ||
|
|
82cc0559b4 | ||
|
|
1c780c4b02 | ||
|
|
86f14f985b | ||
|
|
fa6694e2f9 | ||
|
|
35f0251064 | ||
|
|
aa60c3c71a | ||
|
|
d2c1437210 | ||
|
|
e31768afe9 | ||
|
|
90c1638e7d | ||
|
|
8a4b038e86 | ||
|
|
a3dbaf7015 | ||
|
|
3b7d13aec0 | ||
|
|
d2228ccd58 | ||
|
|
9233149e25 | ||
|
|
0e66632337 | ||
|
|
b092d2e250 | ||
|
|
e259b06d63 | ||
|
|
2920f77c75 | ||
|
|
884e805f46 | ||
|
|
848771dcaa | ||
|
|
97b3a3cb57 | ||
|
|
8f55749607 | ||
|
|
384a2f2c0a | ||
|
|
03c903fc5b | ||
|
|
d7d5e85618 | ||
|
|
f04b62e540 | ||
|
|
9db925c3a6 | ||
|
|
aeac72e35c | ||
|
|
85bea417a1 | ||
|
|
cb282aa56e | ||
|
|
834234143a | ||
|
|
4fc8f32df8 | ||
|
|
25c962c001 | ||
|
|
9937b9f096 | ||
|
|
407a8bd257 | ||
|
|
7eea133441 | ||
|
|
37e2ccaac3 | ||
|
|
0f101110e6 | ||
|
|
69fcdcf14b | ||
|
|
9f028adb63 | ||
|
|
7e08f2ab3c | ||
|
|
2595fdebae | ||
|
|
9938db6af4 | ||
|
|
abd5704ebb | ||
|
|
30262f82a5 | ||
|
|
fddbbe5135 | ||
|
|
db981d0344 | ||
|
|
6f15b4178b | ||
|
|
bfd0bc116d | ||
|
|
ae28125a7a | ||
|
|
aa80f86a7a | ||
|
|
6221f904e4 | ||
|
|
beb3276c53 | ||
|
|
96276a1234 | ||
|
|
6e025945ae | ||
|
|
3fb02cf343 | ||
|
|
6d20b9cd55 | ||
|
|
a34a07644e | ||
|
|
67b9ba09fa | ||
|
|
01d3c80240 | ||
|
|
be7b57f3d5 | ||
|
|
786620a5ac | ||
|
|
2a0795dd47 | ||
|
|
68d831ef3d | ||
|
|
5b175b3734 | ||
|
|
1d7f9522e3 | ||
|
|
f9adbdf639 | ||
|
|
d327eb027c | ||
|
|
ef1a5358fd | ||
|
|
f4b909f4a7 | ||
|
|
236c6f612b | ||
|
|
c54ca8c7ae | ||
|
|
4c5d340b57 | ||
|
|
02ea875497 | ||
|
|
bafa3b5c5b | ||
|
|
1dc83b272a | ||
|
|
1d3b3eb1cf | ||
|
|
6a5e012236 | ||
|
|
f1cc16ddae | ||
|
|
62a798d527 | ||
|
|
0e41627306 | ||
|
|
bcd5ca7bf5 | ||
|
|
ba94427b36 | ||
|
|
b7c11998c6 | ||
|
|
4864091202 | ||
|
|
72c45bd706 | ||
|
|
8335c9ac7e | ||
|
|
db30b8cfe8 | ||
|
|
65f75e3467 | ||
|
|
b9d9c6f65a | ||
|
|
e07fdfb5e1 | ||
|
|
2a7b218fed | ||
|
|
63a9ef9455 | ||
|
|
148a3c13db | ||
|
|
e79426e47f | ||
|
|
a5f3085e01 | ||
|
|
ec5b5ca80d | ||
|
|
2d076c3df8 | ||
|
|
6e67a8b815 | ||
|
|
896c2a3fe9 | ||
|
|
cbe7d2532b | ||
|
|
099b4202c0 | ||
|
|
6f181a7bbd | ||
|
|
211fa7cc11 | ||
|
|
043f8913c2 | ||
|
|
0748c9bf8d | ||
|
|
6e979c7591 | ||
|
|
53210c2212 | ||
|
|
85fb861980 | ||
|
|
efc19d1262 | ||
|
|
172531c585 | ||
|
|
8cc0fa7305 | ||
|
|
cc19b24cc4 | ||
|
|
87f04dbaa6 | ||
|
|
bf644477dc | ||
|
|
5748039371 | ||
|
|
7e93b52e5e | ||
|
|
e173982115 | ||
|
|
4445ef8aef | ||
|
|
3b273a9e7b | ||
|
|
ec23e869e8 | ||
|
|
dcb4dd4944 | ||
|
|
12f890a501 | ||
|
|
4e474d4f29 | ||
|
|
9020907b56 | ||
|
|
3812a92913 | ||
|
|
369fcddc39 | ||
|
|
b08545d40d | ||
|
|
99d7685be2 | ||
|
|
9f12229b28 | ||
|
|
d1951a1f10 | ||
|
|
85a3a2f2ea | ||
|
|
275c1d4705 | ||
|
|
d3bef2e8cb | ||
|
|
522704ccb8 | ||
|
|
6ae0516bd7 | ||
|
|
e64d66a320 | ||
|
|
093624a6ee | ||
|
|
9d87560d5c | ||
|
|
04a23c03d2 | ||
|
|
2ffce031de | ||
|
|
d4d29d1957 | ||
|
|
94b4c6b0bb | ||
|
|
a2072c022c | ||
|
|
7dabd9545e | ||
|
|
46dc71ebd2 | ||
|
|
bbe10b1618 | ||
|
|
c9521fb626 | ||
|
|
70b5b8e682 | ||
|
|
5c0b3795c2 | ||
|
|
69cf09e13d | ||
|
|
9e4a67312f | ||
|
|
4e8a4250dc | ||
|
|
ea5ebd0965 | ||
|
|
ef752a244c | ||
|
|
6249211bca | ||
|
|
5b7d4a8806 | ||
|
|
337c25b670 | ||
|
|
595e458c49 | ||
|
|
eb92929647 | ||
|
|
9d24914c1c | ||
|
|
e68b695284 | ||
|
|
0343bdd393 | ||
|
|
745528a9f1 | ||
|
|
b7e6015720 | ||
|
|
a3364408b7 | ||
|
|
67c65657a4 | ||
|
|
fd39c78e5d | ||
|
|
e88a3b59e7 | ||
|
|
44c73cb110 | ||
|
|
5c4b4b9194 | ||
|
|
802a3edf9b | ||
|
|
aec3ec718b | ||
|
|
e856a653b8 | ||
|
|
21fb4e6a03 | ||
|
|
ef7ff0b186 | ||
|
|
95c35d7df8 | ||
|
|
0d5b1ef094 | ||
|
|
033caedfb5 | ||
|
|
32d1d357ba | ||
|
|
9927cc1988 | ||
|
|
efaab96e2c | ||
|
|
1a6c6d2b67 | ||
|
|
093e3a0061 | ||
|
|
f7597e5ea5 | ||
|
|
2c57a99b5f | ||
|
|
d7b6c771e8 | ||
|
|
1feebfdb83 | ||
|
|
f1f0a77bc0 | ||
|
|
a8c270433a | ||
|
|
7aa327badd | ||
|
|
042e08f504 | ||
|
|
c2a84cd707 | ||
|
|
45d89e4108 | ||
|
|
290df814b8 | ||
|
|
42f2d51766 | ||
|
|
06656c1d88 | ||
|
|
794d1e0112 | ||
|
|
d2a0c74554 | ||
|
|
81e40b0872 | ||
|
|
cd51f1f147 | ||
|
|
cbe7c32150 | ||
|
|
089a5835b0 | ||
|
|
06a30078da | ||
|
|
97bdcffd9d | ||
|
|
c74f79e93b | ||
|
|
162a2efe71 | ||
|
|
1634c90ad9 | ||
|
|
2235482345 | ||
|
|
e2bee5d5a4 | ||
|
|
5e4ad6e6a4 | ||
|
|
ad7dad59bc | ||
|
|
cf99651e2d | ||
|
|
4a26ce1b58 | ||
|
|
9bdb0f6a94 | ||
|
|
3a46f9994f | ||
|
|
f053b7962b | ||
|
|
76a479064e | ||
|
|
ffb19c3a65 | ||
|
|
ddcfd2ff43 | ||
|
|
3c7b1c6c5e | ||
|
|
d04ee0aa71 | ||
|
|
ce020d4398 | ||
|
|
028a5cf827 | ||
|
|
c60288b0df | ||
|
|
2fba8a2705 | ||
|
|
f66304815e | ||
|
|
17ac627ddd | ||
|
|
54aec6e0db | ||
|
|
7edb1fab7b | ||
|
|
21738995cc | ||
|
|
b752af7046 | ||
|
|
60b044e61a | ||
|
|
98364405c6 | ||
|
|
23558a2584 | ||
|
|
035f40dc0a | ||
|
|
910a64dc1c | ||
|
|
8c5bc316f9 | ||
|
|
645bb485a7 | ||
|
|
68fa4d87eb | ||
|
|
f527624027 | ||
|
|
fb06332272 | ||
|
|
4fda4b5773 | ||
|
|
68efbc2bed | ||
|
|
e47d6a8ece | ||
|
|
09466f05c6 | ||
|
|
738088e8a5 | ||
|
|
54dde95545 | ||
|
|
7ded133caf | ||
|
|
fe2f066733 | ||
|
|
5034fb4496 | ||
|
|
b854730533 | ||
|
|
a538e852bd | ||
|
|
436a5811cb | ||
|
|
27a400743c | ||
|
|
4e692fce1f | ||
|
|
09de1f2d46 | ||
|
|
2caf773bbe | ||
|
|
edc015d589 | ||
|
|
d5707a030b | ||
|
|
8ed7fa0e4c | ||
|
|
4f9e9f30aa | ||
|
|
f08f72c46a | ||
|
|
4885c13d86 | ||
|
|
46b0b7ce70 | ||
|
|
bd267edf3f | ||
|
|
b0d44f3799 | ||
|
|
bb91471cdc | ||
|
|
7f24ffd7ef | ||
|
|
fb03c88a5d | ||
|
|
07420304d0 | ||
|
|
aa26a48e67 | ||
|
|
bd776dc98d | ||
|
|
dc3f0be186 | ||
|
|
5cc68e5bb5 | ||
|
|
092d8aa9f5 | ||
|
|
2d87237d10 | ||
|
|
579c2620bf | ||
|
|
3c2eeadec6 | ||
|
|
1b178ec6ab | ||
|
|
944b2ec4b8 | ||
|
|
ac7e4eeccf | ||
|
|
0bddd91b2e | ||
|
|
ae225cf89d | ||
|
|
8569b27e8f | ||
|
|
4f4649f7a2 | ||
|
|
b69f1bd237 | ||
|
|
59e9967518 | ||
|
|
0621c3d30b | ||
|
|
236a51b0b8 | ||
|
|
c9f5c03e17 | ||
|
|
1a3b38f219 | ||
|
|
ce377308e3 | ||
|
|
155bb5a214 | ||
|
|
9d9b7a87f5 | ||
|
|
0c3b751b30 | ||
|
|
6a8cfe31de | ||
|
|
c9175bee04 | ||
|
|
76939691fd | ||
|
|
c2b6bfa1ed | ||
|
|
0056d87009 | ||
|
|
eaefeebe83 | ||
|
|
d92183bd0b | ||
|
|
27605ce156 | ||
|
|
df3a6a5a22 | ||
|
|
eeff3d5cdf | ||
|
|
0565b71653 | ||
|
|
8e5786c6fb | ||
|
|
4b826d1aed | ||
|
|
556177358e | ||
|
|
19f4acfc94 | ||
|
|
599e59c548 | ||
|
|
19b508d869 | ||
|
|
c4719f7d9d | ||
|
|
d5eea09c8a | ||
|
|
04125bc30c | ||
|
|
fda415aab1 | ||
|
|
ab052dcb89 | ||
|
|
5210a5a0ba | ||
|
|
7607d2a14a | ||
|
|
0abf4354aa | ||
|
|
6c3cc168c9 | ||
|
|
516420d872 | ||
|
|
358a86f18f | ||
|
|
52d024a263 | ||
|
|
da3df70544 | ||
|
|
e3ed92e930 | ||
|
|
cfce0bc198 | ||
|
|
f9b2b90f4e | ||
|
|
c60aed7f0f | ||
|
|
1cc9115972 | ||
|
|
332d4219ac | ||
|
|
3bda830156 | ||
|
|
00799c531a | ||
|
|
883b5b66e9 | ||
|
|
759bea83bb | ||
|
|
51ba11cfcc | ||
|
|
4c82d6bc84 | ||
|
|
f66f6ab9be | ||
|
|
5f76391379 | ||
|
|
fa39effe9c | ||
|
|
61a7b4f07a | ||
|
|
798a03007a | ||
|
|
8386e3a4f1 | ||
|
|
3575704724 | ||
|
|
e8b68d7d28 | ||
|
|
c7bf3a0a9d | ||
|
|
66617ada86 | ||
|
|
edacaaa334 | ||
|
|
dfec66f971 | ||
|
|
70faf61391 | ||
|
|
9903201fa8 | ||
|
|
4a0f0f295d | ||
|
|
16a2a5cc13 | ||
|
|
6405886aca | ||
|
|
ad0cf583b5 | ||
|
|
2608a8c9ab | ||
|
|
d4e9bdd035 | ||
|
|
b6de9497d3 | ||
|
|
e27f4544d0 | ||
|
|
ac8efa9d7d | ||
|
|
489c806923 | ||
|
|
e1a2946a2b | ||
|
|
354c08921b | ||
|
|
a7f89d0077 | ||
|
|
7d8fb296af | ||
|
|
7509a367c5 | ||
|
|
5f0154f9fe | ||
|
|
0c6cc8f7a1 | ||
|
|
7f0ac9629e | ||
|
|
c4a9b2e4f9 | ||
|
|
fcef3fd4e5 | ||
|
|
a434862b2f | ||
|
|
c91ad8348e | ||
|
|
cac053f4e9 | ||
|
|
99b379280f | ||
|
|
0529c8cf9b | ||
|
|
5ae5341658 | ||
|
|
b3bff83a40 | ||
|
|
9efd99fd10 | ||
|
|
7fc4f36970 | ||
|
|
fc5837ea3b | ||
|
|
7ebb039b35 | ||
|
|
f33eb83eef | ||
|
|
81947c61ab | ||
|
|
8d3057e011 | ||
|
|
d5a46f273a | ||
|
|
b02e987fdc | ||
|
|
ed6e401688 | ||
|
|
1256852259 | ||
|
|
5b360a549a | ||
|
|
0337cccea4 | ||
|
|
7514b93261 | ||
|
|
f5c5ffd86d | ||
|
|
ac4b737e89 | ||
|
|
4792775630 | ||
|
|
f22ca13205 | ||
|
|
7076deb46e | ||
|
|
4eebcc03b9 | ||
|
|
7eed321c99 | ||
|
|
9b39dd2697 | ||
|
|
8e34fa7bf3 | ||
|
|
4be696dd6d | ||
|
|
ea90f5c6cb | ||
|
|
ccaa00152e | ||
|
|
1b4ead7f77 | ||
|
|
a9b454a631 | ||
|
|
a44db791d3 | ||
|
|
23b017c17d | ||
|
|
4a81c56a55 | ||
|
|
5141b04695 | ||
|
|
e70d704ced | ||
|
|
3f87fd1a5a | ||
|
|
72028ec9d2 | ||
|
|
7af11786fb | ||
|
|
61fb167cec | ||
|
|
9fd950f928 | ||
|
|
a888d40722 | ||
|
|
5d594b4952 | ||
|
|
55a21c1233 | ||
|
|
49e2ae3120 | ||
|
|
5ee16e992b | ||
|
|
ad269fe995 | ||
|
|
17937f8c54 | ||
|
|
886ceec05c | ||
|
|
433be55081 | ||
|
|
e664a3ec70 | ||
|
|
ad9fd6d547 | ||
|
|
d921541d5d | ||
|
|
6b16f7f172 | ||
|
|
e463d68688 | ||
|
|
41cda039ec | ||
|
|
4989204b59 | ||
|
|
04ae708f33 | ||
|
|
d803c31d63 | ||
|
|
903c46bae0 | ||
|
|
6b965b1aa6 | ||
|
|
04395739d5 | ||
|
|
c5ec0891c9 | ||
|
|
3213735a4d | ||
|
|
b854a603af | ||
|
|
641f48e27d | ||
|
|
7016861281 | ||
|
|
ae5144635e | ||
|
|
a0a0556037 | ||
|
|
be8d1932b1 | ||
|
|
b127cf724b | ||
|
|
cc1177150b | ||
|
|
9f82c3788b | ||
|
|
67be26604f | ||
|
|
ec4deb5179 | ||
|
|
f02f10f832 | ||
|
|
eb75b2addf | ||
|
|
a0061da938 | ||
|
|
e5fbd5fde5 | ||
|
|
6c53421e36 | ||
|
|
e38477aa64 | ||
|
|
27380d3c42 | ||
|
|
a70f9327aa | ||
|
|
5dd6482937 | ||
|
|
6465106302 | ||
|
|
5b6d0e7a2a | ||
|
|
8b46cf6bc5 | ||
|
|
090e8bbf40 | ||
|
|
4ccb782740 | ||
|
|
54722ac5c3 | ||
|
|
8e1711c951 | ||
|
|
088630ccce | ||
|
|
799b1b0d03 | ||
|
|
dc787a2754 | ||
|
|
d319f42a4d | ||
|
|
aea62fcd2c | ||
|
|
b8eb200295 | ||
|
|
f16b75ae9c | ||
|
|
47359051a1 | ||
|
|
b273a70a3e | ||
|
|
3b3038ebb9 | ||
|
|
569a16cc5b | ||
|
|
3780d41765 | ||
|
|
78b9ce1674 | ||
|
|
601a1d029b | ||
|
|
5c55e52cc1 | ||
|
|
2740ad75af | ||
|
|
e3a72987ce | ||
|
|
6870ed24f2 | ||
|
|
ab2d49b162 | ||
|
|
cd98458ada | ||
|
|
909cba41bc | ||
|
|
3fdfb6c57d | ||
|
|
2fbce97f89 | ||
|
|
e4fd78250d | ||
|
|
cef3679bb3 | ||
|
|
e65b5cefdc | ||
|
|
71650df31f | ||
|
|
b785fe69f4 | ||
|
|
67c3375ace | ||
|
|
bdb5f5894e | ||
|
|
a0d4326d62 | ||
|
|
a16b20122d | ||
|
|
b981152dee | ||
|
|
63c1e63035 | ||
|
|
2c2b8f77cb | ||
|
|
ef4b9ebc42 | ||
|
|
1babaf529e | ||
|
|
f4ec5f348d | ||
|
|
5a881440d9 | ||
|
|
44f8d80b22 | ||
|
|
477c01bc55 | ||
|
|
b2df63e499 | ||
|
|
038de1d7ad | ||
|
|
5f1e393ac7 | ||
|
|
e38a39200a | ||
|
|
217b40a107 | ||
|
|
938e7284d7 | ||
|
|
8fe3182b79 | ||
|
|
d271472984 | ||
|
|
3acb04f4cc | ||
|
|
9628bf8723 | ||
|
|
4161371a8e | ||
|
|
0bb10f2ee0 | ||
|
|
3f50771e18 | ||
|
|
9d707fcb48 | ||
|
|
a13db6b268 | ||
|
|
2b9d80d23f | ||
|
|
8706b368ba | ||
|
|
d46b27e81f | ||
|
|
58f3144ea0 | ||
|
|
d65aeaf181 | ||
|
|
da8b9daff0 | ||
|
|
a6a1b4baa8 | ||
|
|
b9f6d19152 | ||
|
|
324d2fbe4f | ||
|
|
86446ab8bf | ||
|
|
380289e660 | ||
|
|
c66ee58d85 | ||
|
|
37a70125b9 | ||
|
|
c8715ca846 | ||
|
|
d3491b80ee | ||
|
|
fa62abb7be | ||
|
|
2b57a59b47 | ||
|
|
3bf3018d22 | ||
|
|
fd331c0733 | ||
|
|
b5f12b56fa | ||
|
|
096a1dd043 | ||
|
|
02e2abef07 | ||
|
|
e629db5bb1 | ||
|
|
1274ea21d4 | ||
|
|
6fda320c83 | ||
|
|
7a3cd9a139 | ||
|
|
06a5611a56 | ||
|
|
db8fa98ac6 | ||
|
|
952f8212dc | ||
|
|
24507f5f23 | ||
|
|
66079b0af2 | ||
|
|
88498f11fc | ||
|
|
c5afc6d453 | ||
|
|
5d7848752f | ||
|
|
bf93e28a3d | ||
|
|
124006929f | ||
|
|
bf8713ba21 | ||
|
|
878b46631f | ||
|
|
4832739ff8 | ||
|
|
67f43453aa | ||
|
|
43eb6ca30f | ||
|
|
2449c6d592 | ||
|
|
f41bd1818d | ||
|
|
8f8056a918 | ||
|
|
c14846f4fc | ||
|
|
2eaa2d6ee2 | ||
|
|
d183000fe3 | ||
|
|
396b893f43 | ||
|
|
fffb1e2734 | ||
|
|
4419090831 | ||
|
|
f6e464bb21 | ||
|
|
88d3f2388c | ||
|
|
7bbbeceab5 | ||
|
|
8d35e16abe | ||
|
|
282f908ffd | ||
|
|
9f86b3fdd2 | ||
|
|
a3c011070a | ||
|
|
ef76904b4d | ||
|
|
aa4b44f8bd | ||
|
|
311b7ef77e | ||
|
|
2678b94433 | ||
|
|
eac85d1708 | ||
|
|
766608696d | ||
|
|
59b761bf33 | ||
|
|
b93f78b3c9 | ||
|
|
bcc293358f | ||
|
|
4c30d9d6d1 | ||
|
|
022dd35d5a | ||
|
|
9351c1121e | ||
|
|
a7a69aa558 | ||
|
|
3923f18cd8 | ||
|
|
fbd0bf257e | ||
|
|
86d09d997a | ||
|
|
241e1cbf88 | ||
|
|
fc4379f4e1 | ||
|
|
d84c42e5c1 | ||
|
|
b092fcaf29 | ||
|
|
3dd9696f75 | ||
|
|
0eba503d2f | ||
|
|
b6ea502bc3 | ||
|
|
e603853e52 | ||
|
|
fa137dcccc | ||
|
|
7719c4604e | ||
|
|
4b82516909 | ||
|
|
17648c582a | ||
|
|
1559ae7f42 | ||
|
|
498a60d752 | ||
|
|
22b6707e92 | ||
|
|
08b92cc560 | ||
|
|
37bc453de6 | ||
|
|
493fe4b3a5 | ||
|
|
f22a065c15 | ||
|
|
6b50b24abf | ||
|
|
b0b8169e2e | ||
|
|
53ab5b05c3 | ||
|
|
bd93fe5538 | ||
|
|
96ebaf3c7f | ||
|
|
0ba9bdb666 | ||
|
|
f66a433442 | ||
|
|
c14021f2a7 | ||
|
|
85ac983ab9 | ||
|
|
3f0897ae77 | ||
|
|
f7e96794cd | ||
|
|
1624ef52d7 | ||
|
|
b7541e02e1 | ||
|
|
db69caedf9 | ||
|
|
9dac908dc1 | ||
|
|
7211f4992a | ||
|
|
606a838ad0 | ||
|
|
65bf785cce | ||
|
|
3bcab0216f | ||
|
|
cb83a19edf | ||
|
|
6df16159d0 | ||
|
|
a840950fbb | ||
|
|
8ae29074c5 | ||
|
|
f22372c271 | ||
|
|
568d4eadff | ||
|
|
755de42dbe | ||
|
|
1016706a6b | ||
|
|
76bff25de1 | ||
|
|
d1c393b177 | ||
|
|
4e52caf23b | ||
|
|
03462771a4 | ||
|
|
c9304c1992 | ||
|
|
2baeaf1119 | ||
|
|
6cdc6ce9b4 | ||
|
|
97307598f0 | ||
|
|
de4bbf44d7 | ||
|
|
bc39f60183 | ||
|
|
45308a70a8 | ||
|
|
450c7b187f | ||
|
|
f3438751ed | ||
|
|
919d1a4503 | ||
|
|
de0f3205ac | ||
|
|
d8f2965f82 | ||
|
|
7954b143b5 | ||
|
|
17d33fc9f6 | ||
|
|
c18b1a7e83 | ||
|
|
21ec31d4d3 | ||
|
|
bd0f04258a | ||
|
|
7d995bd83a | ||
|
|
98fd2021b7 | ||
|
|
63fc066301 | ||
|
|
d9fa30dbef | ||
|
|
012a3bef0a | ||
|
|
c23cd8d2f0 | ||
|
|
9e80aeb061 | ||
|
|
cbf82f464d | ||
|
|
eb5a0cb1db | ||
|
|
43b96776e4 | ||
|
|
57d919b56f | ||
|
|
54b9661ddc | ||
|
|
b13f4c0b18 | ||
|
|
d8e5526655 | ||
|
|
e4de98b9d6 | ||
|
|
130148e5d6 | ||
|
|
e2f40f1e33 | ||
|
|
13c9afb219 | ||
|
|
a32a6e9b9e | ||
|
|
64d04ca22d | ||
|
|
1996bc2612 | ||
|
|
eaa15b0d66 | ||
|
|
8003b8a6b8 | ||
|
|
904a2c9743 | ||
|
|
c3d4214ad0 | ||
|
|
f641fac98c | ||
|
|
b03bdfb9d6 | ||
|
|
f3484eff79 | ||
|
|
55aa8d73f0 | ||
|
|
07da6cece6 | ||
|
|
6799acf965 | ||
|
|
b3bb79ecd4 | ||
|
|
858d9d3f04 | ||
|
|
caa180ba1a | ||
|
|
d58388e5d2 | ||
|
|
6b5c4f07c2 | ||
|
|
03e7ad6268 | ||
|
|
61bd4eefa7 | ||
|
|
92e33c8c20 | ||
|
|
82063ce972 | ||
|
|
fd8bbc3c95 | ||
|
|
9cca314ea9 | ||
|
|
33a64106be | ||
|
|
519287805f | ||
|
|
83bf37c8bb | ||
|
|
8af2aa35d4 | ||
|
|
f743dc14d5 | ||
|
|
573d269aac | ||
|
|
18ef86ddc3 | ||
|
|
d6a340ac79 | ||
|
|
b217093bc9 | ||
|
|
d265181c26 | ||
|
|
a022d4aaa2 | ||
|
|
c4f6ed6938 | ||
|
|
6e3a0b1b94 | ||
|
|
f6b6cfa4d0 | ||
|
|
3ba6ecc3c2 | ||
|
|
bdfaf6dcd2 | ||
|
|
6e5fb95e8f | ||
|
|
0c81d2ff56 | ||
|
|
d1dd9aacfe | ||
|
|
7f18c4e669 | ||
|
|
fe334c0a24 | ||
|
|
8e0172eb03 | ||
|
|
95b73953d8 | ||
|
|
34c606ddba | ||
|
|
63597b3bc4 | ||
|
|
7dd6e46543 | ||
|
|
c090609045 | ||
|
|
4c9e7956c1 | ||
|
|
1b0bc7fd1e | ||
|
|
2baa16bba7 | ||
|
|
3587f8cafd | ||
|
|
8e756215c0 | ||
|
|
6512820653 | ||
|
|
8dd4a178dd | ||
|
|
89cb13ffde | ||
|
|
81cb6c5ee4 | ||
|
|
d3cd20ef1a | ||
|
|
0670d02bb8 | ||
|
|
eef3f19644 | ||
|
|
b1e1f877d0 | ||
|
|
6be2d19b35 | ||
|
|
1b700c894d | ||
|
|
2ec460a01e | ||
|
|
ac25abf7d5 | ||
|
|
19d6f437e3 | ||
|
|
c9edc409bc | ||
|
|
599ca52e16 | ||
|
|
023de8274d | ||
|
|
1b77d0eca6 | ||
|
|
e9092fe01d | ||
|
|
8bc60f9b5b | ||
|
|
a851a1132d | ||
|
|
93930d0636 | ||
|
|
d9941a7711 | ||
|
|
d8be34000b | ||
|
|
da993fa9f6 | ||
|
|
f76e07337d | ||
|
|
b09f7d57a0 | ||
|
|
2c1dd14098 | ||
|
|
6249e5e4d6 | ||
|
|
3aa6e5712b | ||
|
|
a9d2b09260 | ||
|
|
a964976b67 | ||
|
|
e48caecfe0 | ||
|
|
686ab262b2 | ||
|
|
2418c24901 | ||
|
|
9c5e46ee11 | ||
|
|
1bbdefbd41 | ||
|
|
3dcd2570ad | ||
|
|
2ed28c3b70 | ||
|
|
3c87ef0d28 | ||
|
|
d0fc047fc9 | ||
|
|
3e0448bbe5 | ||
|
|
773d98e20c | ||
|
|
29afe01c40 | ||
|
|
d49288a1c0 | ||
|
|
d7faaa6592 | ||
|
|
b99b3646da | ||
|
|
d4ca156f53 | ||
|
|
4e59a4af5f | ||
|
|
15eb0321ac | ||
|
|
f7dfb5df24 | ||
|
|
52103c4b2f | ||
|
|
9fd724ff2d | ||
|
|
230244f2e5 | ||
|
|
7f14bdd0a0 | ||
|
|
f71e5accce | ||
|
|
e055c750aa | ||
|
|
11f2cce274 | ||
|
|
69eef7043f | ||
|
|
60cc6fda96 | ||
|
|
ee603ba82e | ||
|
|
8c8f0b46ef | ||
|
|
231a77239f | ||
|
|
89f58bf043 | ||
|
|
4dc3421ab9 | ||
|
|
ce9c227780 | ||
|
|
0d77c0a49b | ||
|
|
f9b67e2197 | ||
|
|
114ff5dc9b | ||
|
|
2a85d17cc1 | ||
|
|
d430a5cf31 | ||
|
|
f484f953fa | ||
|
|
c23d9cb96f | ||
|
|
eca8f3432e | ||
|
|
2edce34f29 | ||
|
|
af0fccf36e | ||
|
|
f00d04c0b8 | ||
|
|
a310fbe14f | ||
|
|
fc1e119fcd | ||
|
|
569423af12 | ||
|
|
8cd25252f8 | ||
|
|
1e63fe72cf | ||
|
|
1a5a7d71b6 | ||
|
|
91198d02e3 | ||
|
|
aa45fe898a | ||
|
|
92e013d5c9 | ||
|
|
9acfbf355c | ||
|
|
59f64da447 | ||
|
|
31f3958925 | ||
|
|
c78588c9c2 | ||
|
|
2dbeffe380 | ||
|
|
9f9aa17cb4 | ||
|
|
44ea3d92e2 | ||
|
|
21d3f42e2a | ||
|
|
b4052fcc00 | ||
|
|
fc7b8c18cb | ||
|
|
6983dd9364 | ||
|
|
5877d64449 | ||
|
|
cc54faf78a | ||
|
|
446b7bbd00 | ||
|
|
53468c9c3e | ||
|
|
67e1cddfa1 | ||
|
|
5c83f3aa15 | ||
|
|
d32b44bc2d | ||
|
|
b70c216131 | ||
|
|
58e2b8ab52 | ||
|
|
8b7e630bed | ||
|
|
323c37c34e | ||
|
|
b593f2d390 | ||
|
|
3800ba1dc9 | ||
|
|
8a00cfe2e7 | ||
|
|
e8e0ff63fc | ||
|
|
c324267c5f | ||
|
|
6a481f40da | ||
|
|
d02650047a | ||
|
|
b908fd8efb | ||
|
|
0aaed84549 | ||
|
|
7b980d83c1 | ||
|
|
dc9a90046e | ||
|
|
3cd5610b45 | ||
|
|
48a392ef78 | ||
|
|
1e324b3e5c | ||
|
|
37967ecc05 | ||
|
|
b3776600e6 | ||
|
|
90f3deb5e7 | ||
|
|
79d35f3710 | ||
|
|
5b2463258c | ||
|
|
7607003dd5 | ||
|
|
c4abdc3230 | ||
|
|
de079ca3b8 | ||
|
|
80f1420170 | ||
|
|
e3c7c8c994 | ||
|
|
dabdb01ce6 | ||
|
|
6a4a971863 | ||
|
|
de6a0ab5bc | ||
|
|
41102dab4b | ||
|
|
9ac77d832f | ||
|
|
2ab250e7db | ||
|
|
75e289640a | ||
|
|
6bf4b9faf4 | ||
|
|
15925b47fb | ||
|
|
a58ab7cd16 | ||
|
|
e566b1596d | ||
|
|
a61389b776 | ||
|
|
14c9dad567 | ||
|
|
fc1f3d66a2 | ||
|
|
1d45f09162 | ||
|
|
33c321c7ff | ||
|
|
6b336ed19a | ||
|
|
c6d57fe689 | ||
|
|
154fb77a1f | ||
|
|
de1a87b855 | ||
|
|
d121bd5ed2 | ||
|
|
fb55b785c2 | ||
|
|
9ec9282492 | ||
|
|
cf8ad57eea | ||
|
|
0dad2dedeb | ||
|
|
276d75b47d | ||
|
|
1230ed3018 | ||
|
|
c0d26e80b3 | ||
|
|
ea439c939f | ||
|
|
7976873384 | ||
|
|
bedda2cbc4 | ||
|
|
dd8a355ac4 | ||
|
|
f2bc7a3f20 | ||
|
|
5820bb6c1b | ||
|
|
d93f52ad1a | ||
|
|
383c12f11b | ||
|
|
5839bbd690 | ||
|
|
60b040f54b | ||
|
|
60c7adbb8a | ||
|
|
d45d3c38e6 | ||
|
|
89897aef4b | ||
|
|
dc3a242dcb | ||
|
|
03f418245d | ||
|
|
8046e2fd74 | ||
|
|
2e05ff06f4 | ||
|
|
bf831a3057 | ||
|
|
8b691fe905 | ||
|
|
7b8230fa6c | ||
|
|
379491f3de | ||
|
|
9643b244f6 | ||
|
|
48c16e92e9 | ||
|
|
6143b68eb1 | ||
|
|
73521f8253 | ||
|
|
673ae95aa8 | ||
|
|
33a64c9887 | ||
|
|
576350bc1f | ||
|
|
ad3a85d80b | ||
|
|
e27cc11a49 | ||
|
|
8504b3984a | ||
|
|
68f5f08df5 | ||
|
|
29024b91fe | ||
|
|
d96a24c2ca | ||
|
|
0f41eb99f2 | ||
|
|
7ad277c666 | ||
|
|
002cfd5419 | ||
|
|
9e8e57051a | ||
|
|
08c446a57c | ||
|
|
fe59a6f5b9 | ||
|
|
c234688542 | ||
|
|
f96e7507bc | ||
|
|
beac9f5756 | ||
|
|
3eb700661b | ||
|
|
17f9c8299f | ||
|
|
7cecb80a64 | ||
|
|
e4ae03a252 | ||
|
|
c52df50faf | ||
|
|
3502579b11 | ||
|
|
d58c500c97 | ||
|
|
3ee741abbb | ||
|
|
cf424e59f6 | ||
|
|
634a4e595c | ||
|
|
3da404a714 | ||
|
|
bdcd75a3be | ||
|
|
a75b9c0574 | ||
|
|
f407af363a | ||
|
|
17378319f6 | ||
|
|
86dc335137 | ||
|
|
4d9b7fa905 | ||
|
|
9fde80593f | ||
|
|
fdc428bde4 | ||
|
|
4edc144255 | ||
|
|
e5b60d434d | ||
|
|
7ee222925d | ||
|
|
42a6697531 | ||
|
|
223fd9a7d5 | ||
|
|
9693cb3c8d | ||
|
|
898c0e31a1 | ||
|
|
bab661914d | ||
|
|
3c4a92612d | ||
|
|
000002c327 | ||
|
|
dc051e75e3 | ||
|
|
b500912650 | ||
|
|
7e13f8b1cc | ||
|
|
d535cfc5a4 | ||
|
|
25b96825cc | ||
|
|
6d952cc89e | ||
|
|
e0303cd2a6 | ||
|
|
4d0a6e93ea | ||
|
|
15f844e538 | ||
|
|
56db78d699 | ||
|
|
a9cf299a4f | ||
|
|
5f75db4e1f | ||
|
|
8459d7ead6 | ||
|
|
64e671b0d2 | ||
|
|
23609c4bb9 | ||
|
|
331521306e | ||
|
|
141b5603eb | ||
|
|
8585f3881c | ||
|
|
432d44f4af | ||
|
|
49b4adc843 | ||
|
|
228bf55a8d | ||
|
|
00aabfc283 | ||
|
|
8463dc8721 | ||
|
|
fe224b5ab2 | ||
|
|
6e9f3bfbe2 | ||
|
|
d44fe31277 | ||
|
|
709a9f5996 | ||
|
|
71867dd63e | ||
|
|
3db9ded294 | ||
|
|
844b893ebf | ||
|
|
a6c69b80e3 | ||
|
|
7885ad18c6 | ||
|
|
dab8b634bd | ||
|
|
d59eed6974 | ||
|
|
b1837dec75 | ||
|
|
b5edd39517 | ||
|
|
0931e590a9 | ||
|
|
89917d6168 | ||
|
|
41ebc50538 | ||
|
|
f7ace0a57f | ||
|
|
b7b7d2382b | ||
|
|
49d3b033cb | ||
|
|
5a78b77da5 | ||
|
|
34f3c55573 | ||
|
|
6521921687 | ||
|
|
806bf2cd31 | ||
|
|
ff3d105271 | ||
|
|
4d30d8837a | ||
|
|
f35e2fb49c | ||
|
|
cae140b239 | ||
|
|
b11452d29a | ||
|
|
155d939ae8 | ||
|
|
11383d3689 | ||
|
|
00d4d27277 | ||
|
|
97309e9a6e | ||
|
|
501bba0283 | ||
|
|
e51506b9f8 | ||
|
|
df5b46e0d3 | ||
|
|
55dd0ea830 | ||
|
|
7e76f40f43 | ||
|
|
1c2e81353d | ||
|
|
bf53b61d03 | ||
|
|
6256ddfc78 | ||
|
|
6937701fa4 | ||
|
|
29962197d7 | ||
|
|
287e6da537 | ||
|
|
069958d220 | ||
|
|
d95fb14f8e | ||
|
|
4c231691f6 | ||
|
|
718a81e41d | ||
|
|
8d67d07f27 | ||
|
|
e965aa370c | ||
|
|
daaefd8e18 | ||
|
|
138b4a5cc4 | ||
|
|
ed48c74885 | ||
|
|
27b816e50e | ||
|
|
b5ac9a9591 | ||
|
|
7ec1eaf334 | ||
|
|
e1e66ca670 | ||
|
|
673a8df520 | ||
|
|
f55e718aca | ||
|
|
15008d0559 | ||
|
|
a1a45df14e | ||
|
|
c7b06d8a69 | ||
|
|
c0b0fa44af | ||
|
|
38bacb17e0 | ||
|
|
6febb54478 | ||
|
|
263bfa55e5 | ||
|
|
4c9a09866b | ||
|
|
a43d19fb79 | ||
|
|
999cc91f6c | ||
|
|
488886d685 | ||
|
|
485fbcf393 | ||
|
|
f434e0dd67 | ||
|
|
cbb35a8e3c | ||
|
|
caff966d3b | ||
|
|
7539a1003c | ||
|
|
ee24d12d8c | ||
|
|
4dc424464e | ||
|
|
977552fa81 | ||
|
|
644bfe72af | ||
|
|
fc21932a34 | ||
|
|
a1a480f35e | ||
|
|
61d07242ad | ||
|
|
ea217404e9 | ||
|
|
6f7250d179 | ||
|
|
9e27951c3e | ||
|
|
91891fc5b5 | ||
|
|
b62ea7b28f | ||
|
|
893e1e307d | ||
|
|
6b4653a996 | ||
|
|
06dcc697f9 | ||
|
|
f62872808d | ||
|
|
0fe5b45f8b | ||
|
|
44e71d8b09 | ||
|
|
abc1f2cd64 | ||
|
|
8a8d0e4069 | ||
|
|
ec3df01606 | ||
|
|
851fd08d5d | ||
|
|
c7cb728feb | ||
|
|
43ae1de2b5 | ||
|
|
13bac40aeb | ||
|
|
1e5abf20cd | ||
|
|
6a796debb8 | ||
|
|
7373a07a71 | ||
|
|
f9fc6b83d0 | ||
|
|
6ff586c3e9 | ||
|
|
fc9b2a186b | ||
|
|
dfbf51fa36 | ||
|
|
6a417750b2 | ||
|
|
0d08907e9c | ||
|
|
589acf459d | ||
|
|
5d0dff7172 | ||
|
|
9827ca5048 | ||
|
|
c7341e65e9 | ||
|
|
c1a2c76a38 | ||
|
|
3d58698bfc | ||
|
|
71c70dcc8c | ||
|
|
584ca125a6 | ||
|
|
4b616dcbe1 | ||
|
|
ac59eae329 | ||
|
|
44a1e6c28b | ||
|
|
d6500f8cb7 | ||
|
|
769704f0fc | ||
|
|
ba7fbcc02f | ||
|
|
613a08dd3a | ||
|
|
7087de0c94 | ||
|
|
afa0d87c76 | ||
|
|
a6428608e6 | ||
|
|
550d026061 | ||
|
|
45a41497df | ||
|
|
a0e9d8340c | ||
|
|
a48b40fc0c | ||
|
|
fa7d534c56 | ||
|
|
92d1a9d335 | ||
|
|
b8f8d90d13 | ||
|
|
c1c40581d5 | ||
|
|
4aacd1e47a | ||
|
|
4cc9311343 | ||
|
|
9f0e5d712f | ||
|
|
92096e6a21 | ||
|
|
002ef8ca5c | ||
|
|
0e4ce445e0 | ||
|
|
7a11547a14 | ||
|
|
29ac7b7df9 | ||
|
|
3b749f0e75 | ||
|
|
edc9917b57 | ||
|
|
bab5c3697b | ||
|
|
043b8e42c0 | ||
|
|
29d955933d | ||
|
|
a3b5d8dcfd | ||
|
|
86ba7a6d7a | ||
|
|
38bbd8a5d7 | ||
|
|
8339e9e1ca | ||
|
|
b359258d8b | ||
|
|
f94a65fcfb | ||
|
|
58c4ada254 | ||
|
|
a57b2448d0 | ||
|
|
f8093a65a6 | ||
|
|
81eff305d3 | ||
|
|
093ff9c395 | ||
|
|
857fabadbe | ||
|
|
9074441c5a | ||
|
|
d2b33defa1 | ||
|
|
aec107b6b7 | ||
|
|
7d56db701c | ||
|
|
de9e48aa98 | ||
|
|
6d13535d8d | ||
|
|
0df7b20fae | ||
|
|
84f7b96998 | ||
|
|
b1810c7ea6 | ||
|
|
6aeb508d6e | ||
|
|
d9d4ebdc01 | ||
|
|
2b70b22117 | ||
|
|
a12088f2f1 | ||
|
|
dbea39c182 | ||
|
|
269e9ceea7 | ||
|
|
80adeecb6b | ||
|
|
19eb3a5141 | ||
|
|
25bc6220b3 | ||
|
|
a938c82fc6 | ||
|
|
147b06f08e | ||
|
|
55be8bc5d7 | ||
|
|
dfd80a136b | ||
|
|
31f393ad5b | ||
|
|
5b3f15de34 | ||
|
|
009408581d | ||
|
|
960d2fd2b1 | ||
|
|
b4b34e89bc | ||
|
|
cc8dc77f92 | ||
|
|
350af6a43f | ||
|
|
71308f28c3 | ||
|
|
2d2f9d348d | ||
|
|
6d5a2a956f | ||
|
|
938afa34c9 | ||
|
|
4df59e7bf2 | ||
|
|
613230d218 | ||
|
|
65add2e448 | ||
|
|
bfa396b93f | ||
|
|
e473c1852c | ||
|
|
088cf4adef | ||
|
|
5b0a04142f | ||
|
|
d1d7af4f7e | ||
|
|
7b0190ff8a | ||
|
|
e2d103f20f | ||
|
|
7bfb2f0fe8 | ||
|
|
8adebbba3f | ||
|
|
719c8f7b9c | ||
|
|
af0f1600d9 | ||
|
|
b014cb57c0 | ||
|
|
1832f9f996 | ||
|
|
a94a0f199a | ||
|
|
2c0dc85d70 | ||
|
|
ca748f731e | ||
|
|
ebf6c15655 | ||
|
|
95271a45b6 | ||
|
|
e5d5ea9d3e | ||
|
|
94351f68fb | ||
|
|
87c1877736 | ||
|
|
bc6529a35f | ||
|
|
d2ee45653c | ||
|
|
d0d35937e8 | ||
|
|
f9d428e2c1 | ||
|
|
68fda97f9e | ||
|
|
f8fa731a32 | ||
|
|
38a4d96035 | ||
|
|
9cacbb4f34 | ||
|
|
bc6fce30ed | ||
|
|
930070ad14 | ||
|
|
11e5704414 | ||
|
|
81eca40f13 | ||
|
|
0fdb27ccd7 | ||
|
|
8b4e66e37c | ||
|
|
d409935ceb | ||
|
|
4d985abd07 | ||
|
|
3a127bcd8b | ||
|
|
a1e506eb85 | ||
|
|
b82427a6cf | ||
|
|
a3b4a0b80c | ||
|
|
df0b8cc44e | ||
|
|
709eb66614 | ||
|
|
0381cf66dc | ||
|
|
2317a4cadb | ||
|
|
5c6397e8ad | ||
|
|
6f0828858d | ||
|
|
76cff8d386 | ||
|
|
37c0fa1cd6 | ||
|
|
63830b798b | ||
|
|
b707b3e3dc | ||
|
|
af391346d1 | ||
|
|
e96774e325 | ||
|
|
e3329a8d73 | ||
|
|
da8174bcc7 | ||
|
|
5b1b52e529 | ||
|
|
0165f07bb9 | ||
|
|
7dee2c1526 | ||
|
|
52d2bea970 | ||
|
|
e26f78d9ed | ||
|
|
4152751d52 | ||
|
|
abdc3bbca1 | ||
|
|
8519183013 | ||
|
|
7c0450c364 | ||
|
|
eed1341003 | ||
|
|
3671080cfc | ||
|
|
c8481fdb3e | ||
|
|
146db578b6 | ||
|
|
385f35b6e5 | ||
|
|
a86e9b8f57 | ||
|
|
e06ccc35a0 | ||
|
|
47c52e31ae | ||
|
|
7953337f15 | ||
|
|
3facf47540 | ||
|
|
629d902745 | ||
|
|
277b88f332 | ||
|
|
0473bcc543 | ||
|
|
79c1affc39 | ||
|
|
20314a5d2d | ||
|
|
b43bc8a5bd | ||
|
|
ab3808adbf | ||
|
|
8d8de53167 | ||
|
|
8c58e536de | ||
|
|
8eed8a67ee | ||
|
|
89ba442731 | ||
|
|
81965d0d36 | ||
|
|
674642ac7c | ||
|
|
08889bd608 | ||
|
|
990d185e86 | ||
|
|
8db7fb3842 | ||
|
|
f18dd26716 | ||
|
|
25c5efbb8c | ||
|
|
f5e0a006c8 | ||
|
|
5141493337 | ||
|
|
e0f8e791b3 | ||
|
|
2bb28f83c1 | ||
|
|
af52644a4b | ||
|
|
eb71113d73 | ||
|
|
cd5288eb47 | ||
|
|
c8e5246f44 | ||
|
|
00c0f36d71 | ||
|
|
aaca6d62f3 | ||
|
|
f62e76eb02 | ||
|
|
9717a92142 | ||
|
|
cfe091b5b3 | ||
|
|
a450004c19 | ||
|
|
939b30c1b2 | ||
|
|
68886d72ce | ||
|
|
15947c311d | ||
|
|
da7247357a | ||
|
|
2bc84f446b | ||
|
|
c3f970b5fe | ||
|
|
7a69ac730b | ||
|
|
0b83bbbe40 | ||
|
|
e7bf39a770 | ||
|
|
3d1b6a40e2 | ||
|
|
8d55d310da |
27
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -1,39 +1,22 @@
|
||||
name: Report a bug
|
||||
description: For regressions only (things that were working earlier)
|
||||
description: Things that were working earlier but don't anymore
|
||||
labels: []
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Before opening a new issue, **please** ensure
|
||||
1. You are on the latest version,
|
||||
2. You've searched for existing issues,
|
||||
3. It was working earlier (otherwise use [this](https://github.com/ente-io/ente/discussions/categories/enhancements))
|
||||
4. It is not about self hosting (otherwise use [this](https://github.com/ente-io/ente/discussions/categories/q-a))
|
||||
**Checklist**
|
||||
1. You've searched existing [issues](https://github.com/search?q=repo%3Aente-io%2Fente+&type=issues) and [discussions](https://github.com/search?q=repo%3Aente-io%2Fente+&type=discussions)
|
||||
2. It was working earlier (otherwise use [enhancements](https://github.com/ente-io/ente/discussions/categories/enhancements))
|
||||
3. It is not about self hosting (for those use [this](https://github.com/ente-io/ente/discussions/categories/q-a))
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Description
|
||||
description: >
|
||||
Describe the bug and steps to reproduce the behaviour, and how it
|
||||
differs from the previously working behaviour.
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
attributes:
|
||||
label: Version
|
||||
description: The version can be seen at the bottom of settings.
|
||||
placeholder: e.g. v1.2.3
|
||||
- type: input
|
||||
attributes:
|
||||
label: Last working version
|
||||
description: >
|
||||
The version where things were last known to be working. It is fine
|
||||
if you don't remember the exact version (mention roughly then),
|
||||
but **if there just isn't a last working version, then please file
|
||||
it as an
|
||||
[enhancement](https://github.com/ente-io/ente/discussions/categories/enhancements))**
|
||||
(where the community upvotes can be used to help prioritize).
|
||||
placeholder: e.g. v1.2.3
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: What product are you using?
|
||||
|
||||
4
.github/workflows/auth-crowdin-push.yml
vendored
@@ -24,8 +24,8 @@ jobs:
|
||||
- name: Crowdin's action
|
||||
uses: crowdin/github-action@v2
|
||||
with:
|
||||
base_path: "auth/"
|
||||
config: "auth/crowdin.yml"
|
||||
base_path: "mobile/apps/auth/"
|
||||
config: "mobile/apps/auth/crowdin.yml"
|
||||
upload_sources: true
|
||||
upload_translations: false
|
||||
download_translations: false
|
||||
|
||||
4
.github/workflows/auth-crowdin-sync.yml
vendored
@@ -23,8 +23,8 @@ jobs:
|
||||
- name: Crowdin's action
|
||||
uses: crowdin/github-action@v2
|
||||
with:
|
||||
base_path: "auth/"
|
||||
config: "auth/crowdin.yml"
|
||||
base_path: "mobile/apps/auth/"
|
||||
config: "mobile/apps/auth/crowdin.yml"
|
||||
upload_sources: true
|
||||
upload_translations: false
|
||||
download_translations: true
|
||||
|
||||
4
.github/workflows/auth-internal-release.yml
vendored
@@ -15,7 +15,7 @@ jobs:
|
||||
|
||||
defaults:
|
||||
run:
|
||||
working-directory: auth
|
||||
working-directory: mobile/apps/auth
|
||||
|
||||
steps:
|
||||
- name: Checkout code and submodules
|
||||
@@ -55,7 +55,7 @@ jobs:
|
||||
with:
|
||||
serviceAccountJsonPlainText: ${{ secrets.SERVICE_ACCOUNT_JSON }}
|
||||
packageName: io.ente.auth
|
||||
releaseFiles: auth/build/app/outputs/bundle/playstoreRelease/app-playstore-release.aab
|
||||
releaseFiles: mobile/apps/auth/build/app/outputs/bundle/playstoreRelease/app-playstore-release.aab
|
||||
track: internal
|
||||
|
||||
- name: Notify Discord
|
||||
|
||||
2
.github/workflows/auth-lint.yml
vendored
@@ -18,7 +18,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
defaults:
|
||||
run:
|
||||
working-directory: auth
|
||||
working-directory: mobile/apps/auth
|
||||
steps:
|
||||
- name: Checkout code and submodules
|
||||
uses: actions/checkout@v4
|
||||
|
||||
20
.github/workflows/auth-release.yml
vendored
@@ -40,7 +40,7 @@ jobs:
|
||||
|
||||
defaults:
|
||||
run:
|
||||
working-directory: auth
|
||||
working-directory: mobile/apps/auth
|
||||
|
||||
steps:
|
||||
- name: Checkout code and submodules
|
||||
@@ -98,7 +98,7 @@ jobs:
|
||||
|
||||
- name: Install appimagetool
|
||||
run: |
|
||||
wget -O appimagetool "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage"
|
||||
wget -O appimagetool "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage"
|
||||
chmod +x appimagetool
|
||||
mv appimagetool /usr/local/bin/
|
||||
|
||||
@@ -124,7 +124,7 @@ jobs:
|
||||
- name: Create a draft GitHub release
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
artifacts: "auth/artifacts/*"
|
||||
artifacts: "mobile/apps/auth/artifacts/*"
|
||||
draft: true
|
||||
allowUpdates: true
|
||||
updateOnlyUnreleased: true
|
||||
@@ -136,7 +136,7 @@ jobs:
|
||||
with:
|
||||
serviceAccountJsonPlainText: ${{ secrets.SERVICE_ACCOUNT_JSON }}
|
||||
packageName: io.ente.auth
|
||||
releaseFiles: auth/build/app/outputs/bundle/playstoreRelease/app-playstore-release.aab
|
||||
releaseFiles: mobile/apps/auth/build/app/outputs/bundle/playstoreRelease/app-playstore-release.aab
|
||||
track: internal
|
||||
|
||||
build-windows:
|
||||
@@ -145,7 +145,7 @@ jobs:
|
||||
|
||||
defaults:
|
||||
run:
|
||||
working-directory: auth
|
||||
working-directory: mobile/apps/auth
|
||||
|
||||
steps:
|
||||
- name: Checkout code and submodules
|
||||
@@ -185,8 +185,8 @@ jobs:
|
||||
trusted-signing-account-name: ${{ secrets.AZURE_CODE_SIGNING_NAME }}
|
||||
certificate-profile-name: ${{ secrets.AZURE_CERT_PROFILE_NAME }}
|
||||
files: |
|
||||
${{ github.workspace }}/auth/artifacts/ente-${{ github.ref_name }}-installer.exe
|
||||
${{ github.workspace }}/auth/ente-${{ github.ref_name }}-windows/auth.exe
|
||||
${{ github.workspace }}/mobile/apps/auth/artifacts/ente-${{ github.ref_name }}-installer.exe
|
||||
${{ github.workspace }}/mobile/apps/auth/ente-${{ github.ref_name }}-windows/auth.exe
|
||||
file-digest: SHA256
|
||||
timestamp-rfc3161: http://timestamp.acs.microsoft.com
|
||||
timestamp-digest: SHA256
|
||||
@@ -201,7 +201,7 @@ jobs:
|
||||
- name: Create a draft GitHub release
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
artifacts: "auth/artifacts/*"
|
||||
artifacts: "mobile/apps/auth/artifacts/*"
|
||||
draft: true
|
||||
allowUpdates: true
|
||||
updateOnlyUnreleased: true
|
||||
@@ -211,7 +211,7 @@ jobs:
|
||||
|
||||
defaults:
|
||||
run:
|
||||
working-directory: auth
|
||||
working-directory: mobile/apps/auth
|
||||
|
||||
steps:
|
||||
- name: Checkout code and submodules
|
||||
@@ -298,7 +298,7 @@ jobs:
|
||||
- name: Create a draft GitHub release
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
artifacts: "auth/artifacts/*"
|
||||
artifacts: "mobile/apps/auth/artifacts/*"
|
||||
draft: true
|
||||
allowUpdates: true
|
||||
updateOnlyUnreleased: true
|
||||
|
||||
6
.github/workflows/auth-win-sign.yml
vendored
@@ -17,7 +17,7 @@ jobs:
|
||||
|
||||
defaults:
|
||||
run:
|
||||
working-directory: auth
|
||||
working-directory: mobile/apps/auth
|
||||
|
||||
steps:
|
||||
- name: Checkout code and submodules
|
||||
@@ -57,8 +57,8 @@ jobs:
|
||||
trusted-signing-account-name: ${{ secrets.AZURE_CODE_SIGNING_NAME }}
|
||||
certificate-profile-name: ${{ secrets.AZURE_CERT_PROFILE_NAME }}
|
||||
files: |
|
||||
${{ github.workspace }}/auth/artifacts/ente-${{ github.ref_name }}-installer.exe
|
||||
${{ github.workspace }}/auth/ente-${{ github.ref_name }}-windows/auth.exe
|
||||
${{ github.workspace }}/mobile/apps/auth/artifacts/ente-${{ github.ref_name }}-installer.exe
|
||||
${{ github.workspace }}/mobile/apps/auth/ente-${{ github.ref_name }}-windows/auth.exe
|
||||
file-digest: SHA256
|
||||
timestamp-rfc3161: http://timestamp.acs.microsoft.com
|
||||
timestamp-digest: SHA256
|
||||
|
||||
6
.github/workflows/mobile-crowdin-push.yml
vendored
@@ -5,7 +5,7 @@ on:
|
||||
branches: [main]
|
||||
paths:
|
||||
# Run workflow when mobiles's intl_en.arb is changed
|
||||
- "mobile/lib/l10n/intl_en.arb"
|
||||
- "mobile/apps/photos/lib/l10n/intl_en.arb"
|
||||
# Or the workflow itself is changed
|
||||
- ".github/workflows/mobile-crowdin.yml"
|
||||
|
||||
@@ -24,8 +24,8 @@ jobs:
|
||||
- name: Crowdin's action
|
||||
uses: crowdin/github-action@v2
|
||||
with:
|
||||
base_path: "mobile/"
|
||||
config: "mobile/crowdin.yml"
|
||||
base_path: "mobile/apps/photos/"
|
||||
config: "mobile/apps/photos/crowdin.yml"
|
||||
upload_sources: true
|
||||
upload_translations: false
|
||||
download_translations: false
|
||||
|
||||
8
.github/workflows/mobile-crowdin-sync.yml
vendored
@@ -1,4 +1,4 @@
|
||||
name: "Sync Crowdin translations (mobile)"
|
||||
name: "Sync Crowdin translations (mobile/photos)"
|
||||
|
||||
on:
|
||||
schedule:
|
||||
@@ -23,14 +23,14 @@ jobs:
|
||||
- name: Crowdin's action
|
||||
uses: crowdin/github-action@v2
|
||||
with:
|
||||
base_path: "mobile/"
|
||||
config: "mobile/crowdin.yml"
|
||||
base_path: "mobile/apps/photos/"
|
||||
config: "mobile/apps/photos/crowdin.yml"
|
||||
upload_sources: true
|
||||
upload_translations: false
|
||||
download_translations: true
|
||||
localization_branch_name: translations/mobile
|
||||
create_pull_request: true
|
||||
pull_request_title: "[mobile] New translations"
|
||||
pull_request_title: "[mobile/photos] New translations"
|
||||
pull_request_body: "New translations from [Crowdin](https://crowdin.com/project/ente-photos-app)"
|
||||
pull_request_base_branch_name: "main"
|
||||
project_id: 574741
|
||||
|
||||
@@ -16,7 +16,7 @@ jobs:
|
||||
|
||||
defaults:
|
||||
run:
|
||||
working-directory: mobile
|
||||
working-directory: mobile/apps/photos
|
||||
|
||||
steps:
|
||||
- name: Checkout code and submodules
|
||||
@@ -64,7 +64,7 @@ jobs:
|
||||
with:
|
||||
serviceAccountJsonPlainText: ${{ secrets.SERVICE_ACCOUNT_JSON }}
|
||||
packageName: io.ente.photos
|
||||
releaseFiles: mobile/build/app/outputs/bundle/playstoreRelease/app-playstore-release.aab
|
||||
releaseFiles: mobile/apps/photos/build/app/outputs/bundle/playstoreRelease/app-playstore-release.aab
|
||||
track: internal
|
||||
|
||||
- name: Notify Discord
|
||||
|
||||
@@ -15,7 +15,7 @@ jobs:
|
||||
|
||||
defaults:
|
||||
run:
|
||||
working-directory: mobile
|
||||
working-directory: mobile/apps/photos
|
||||
|
||||
steps:
|
||||
- name: Checkout code and submodules
|
||||
@@ -55,7 +55,7 @@ jobs:
|
||||
with:
|
||||
serviceAccountJsonPlainText: ${{ secrets.SERVICE_ACCOUNT_JSON }}
|
||||
packageName: io.ente.photos
|
||||
releaseFiles: mobile/build/app/outputs/bundle/playstoreRelease/app-playstore-release.aab
|
||||
releaseFiles: mobile/apps/photos/build/app/outputs/bundle/playstoreRelease/app-playstore-release.aab
|
||||
track: internal
|
||||
|
||||
- name: Notify Discord
|
||||
|
||||
4
.github/workflows/mobile-lint.yml
vendored
@@ -4,7 +4,7 @@ on:
|
||||
# Run on every pull request (open or push to it) that changes mobile/
|
||||
pull_request:
|
||||
paths:
|
||||
- "mobile/**"
|
||||
- "mobile/apps/photos/**"
|
||||
- ".github/workflows/mobile-lint.yml"
|
||||
|
||||
env:
|
||||
@@ -18,7 +18,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
defaults:
|
||||
run:
|
||||
working-directory: mobile
|
||||
working-directory: mobile/apps/photos
|
||||
steps:
|
||||
- name: Checkout code and submodules
|
||||
uses: actions/checkout@v4
|
||||
|
||||
4
.github/workflows/mobile-release.yml
vendored
@@ -20,7 +20,7 @@ jobs:
|
||||
|
||||
defaults:
|
||||
run:
|
||||
working-directory: mobile
|
||||
working-directory: mobile/apps/photos
|
||||
|
||||
steps:
|
||||
- name: Checkout code and submodules
|
||||
@@ -62,5 +62,5 @@ jobs:
|
||||
- name: Create a draft GitHub release
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
artifacts: "mobile/build/app/outputs/flutter-apk/ente-${{ github.ref_name }}.apk,mobile/build/app/outputs/flutter-apk/sha256sum"
|
||||
artifacts: "mobile/apps/photos/build/app/outputs/flutter-apk/ente-${{ github.ref_name }}.apk,mobile/apps/photos/build/app/outputs/flutter-apk/sha256sum"
|
||||
draft: true
|
||||
|
||||
10
.github/workflows/web-deploy.yml
vendored
@@ -93,3 +93,13 @@ jobs:
|
||||
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
||||
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
||||
command: pages deploy --project-name=ente --commit-dirty=true --branch=deploy/payments web/apps/payments/dist
|
||||
|
||||
- name: Build locker
|
||||
run: yarn build:locker
|
||||
|
||||
- name: Publish locker
|
||||
uses: cloudflare/wrangler-action@v3
|
||||
with:
|
||||
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
||||
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
||||
command: pages deploy --project-name=ente --commit-dirty=true --branch=deploy/locker web/apps/locker/out
|
||||
|
||||
4
.gitmodules
vendored
@@ -3,9 +3,9 @@
|
||||
url = https://github.com/ente-io/sentry-dart.git
|
||||
branch = sentry_flutter_ente
|
||||
[submodule "auth/flutter"]
|
||||
path = auth/flutter
|
||||
path = mobile/apps/auth/flutter
|
||||
url = https://github.com/flutter/flutter.git
|
||||
branch = stable
|
||||
[submodule "auth/assets/simple-icons"]
|
||||
path = auth/assets/simple-icons
|
||||
path = mobile/apps/auth/assets/simple-icons
|
||||
url = https://github.com/simple-icons/simple-icons.git
|
||||
|
||||
@@ -1,54 +1,42 @@
|
||||
# Contributing
|
||||
|
||||
First and foremost, thank you for your interest in contributing to Ente 🙏
|
||||
|
||||
There are many ways to contribute, and most of them don't require writing code.
|
||||
|
||||
* [Spread the word](#spread-the-word)
|
||||
* [Engage with the community](#engage-with-the-community)
|
||||
* [Translate](#translate)
|
||||
* [Document](#document)
|
||||
|
||||
- [Spread the word](#spread-the-word)
|
||||
- [Engage with the community](#engage-with-the-community)
|
||||
- [Translate](#translate)
|
||||
- [Document](#document)
|
||||
|
||||
## Spread the word
|
||||
|
||||
This is perhaps the most impactful contribution you can make. [Spread the
|
||||
word](https://help.ente.io/photos/features/referral-program/). Online on your
|
||||
favorite social media channels. Offline to your friends and family who are
|
||||
looking for a privacy-friendly alternative to big tech.
|
||||
**This is the most impactful contribution you can make**.
|
||||
|
||||
[Spread the word](https://help.ente.io/photos/features/referral-program/). Online on your favorite social media channels. Offline to your friends and family who are looking for a privacy-friendly alternative to big tech.
|
||||
|
||||
## Engage with the community
|
||||
|
||||
Just hang around, enjoy the vibe. Answer someone's query on our
|
||||
[Discord](https://discord.gg/z2YVKkycX3), or pile on in the sporadic #off-topic
|
||||
rants there. Chuckle (or wince!) at our [Twitter](https://twitter.com/enteio)
|
||||
memes. Suggest a new feature in our [Github
|
||||
Discussions](https://github.com/ente-io/ente/discussions/new?category=enhancements),
|
||||
or upvote the existing ones that you feel we should focus on first. Provide your
|
||||
opinion on existing threads.
|
||||
Just hang around, enjoy the vibe. The Ente community — the people who are building Ente, and the people who are using Ente — hang out at various places depending on their proclivity:
|
||||
|
||||
These might seem like small things, but it provides us energy. Knowing that
|
||||
there is a community of people who care for what we are building.
|
||||
- [Discord](https://discord.ente.io)
|
||||
- [Mastodon](https://fosstodon.org/@ente)
|
||||
- [X / Twitter](https://twitter.com/enteio)
|
||||
- [Github Discussions](https://github.com/ente-io/ente/discussions)
|
||||
|
||||
Just being around might seem a small thing, but it provides us energy. Knowing that there is a community of people who care for what we are building, **who want us to do better**.
|
||||
|
||||
## Translate
|
||||
|
||||
If you're interested in helping out with translation, please visit our Crowdin
|
||||
projects to get started:
|
||||
|
||||
| Project | |
|
||||
| ------------- | ------------- |
|
||||
| [Auth](https://crowdin.com/project/ente-authenticator-app) | [](https://crowdin.com/project/ente-authenticator-app) |
|
||||
| [Photos](https://crowdin.com/project/ente-photos-app) | [](https://crowdin.com/project/ente-photos-app) |
|
||||
| [Photos Web / Desktop](https://crowdin.com/project/ente-photos-web) | [](https://crowdin.com/project/ente-photos-web) |
|
||||
Visit our Crowdin projects to help with translations:
|
||||
|
||||
| Project | |
|
||||
| ------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| [Auth](https://crowdin.com/project/ente-authenticator-app) | [](https://crowdin.com/project/ente-authenticator-app) |
|
||||
| [Photos](https://crowdin.com/project/ente-photos-app) | [](https://crowdin.com/project/ente-photos-app) |
|
||||
| [Photos Web / Desktop](https://crowdin.com/project/ente-photos-web) | [](https://crowdin.com/project/ente-photos-web) |
|
||||
|
||||
If your language is not listed for translation, please [create a GitHub
|
||||
issue](https://github.com/ente-io/ente/issues/new?title=Request+for+New+Language+Translation&body=Language+name%3A+%0AProject%3A+auth%2Fphotos%2Fboth)
|
||||
to have it added. It is okay to have partial translations. Once ~90% of the
|
||||
strings in a language get translated, we will start surfacing it in the apps.
|
||||
|
||||
Thank you for your support.
|
||||
|
||||
## Document
|
||||
|
||||
The help guides and FAQs for users of Ente products are also open source, and
|
||||
@@ -60,25 +48,9 @@ See [docs/](docs/README.md) for how to edit these documents.
|
||||
|
||||
## Code contributions
|
||||
|
||||
Code is a small aspect of community, and the ways mentioned above are more
|
||||
important in helping us. But if you'd _really_ like to contribute code, it is
|
||||
best to start small. Consider some well-scoped changes, say like adding more
|
||||
[custom icons to auth](auth/docs/adding-icons.md).
|
||||
If you'd like to contribute code, it is best to start small. Consider some well-scoped changes, say like adding more [custom icons to auth](auth/docs/adding-icons.md), or fixing a specific bug.
|
||||
|
||||
Each of the individual product/platform specific directories in this repository
|
||||
have instructions on setting up a dev environment.
|
||||
|
||||
For anything beyond trivial bug fixes, please use
|
||||
[discussions](https://github.com/ente-io/ente/discussions) instead of performing
|
||||
code changes directly.
|
||||
|
||||
> [!TIP]
|
||||
>
|
||||
> Please remember that code is a important, but small, part of the overall big
|
||||
> picture that makes a product a joy to use. Something that's easy in code is
|
||||
> not necessarily the right choice for the product as a whole. So we'll repeat -
|
||||
> there are other ways to contribute than code that we'd request you to
|
||||
> consider.
|
||||
Code that changes the behaviour of the product might not get merged, at least not initially. The PR can serve as a discussion bed, but you might find it easier to just start a discussion instead, or post your perspective in the (likely) existing thread about the behaviour change or new feature you wish for.
|
||||
|
||||
## Leave a review or star
|
||||
|
||||
|
||||
@@ -1,97 +0,0 @@
|
||||
{
|
||||
"account": "Уліковы запіс",
|
||||
"unlock": "Разблакіраваць",
|
||||
"recoveryKey": "Ключ аднаўлення",
|
||||
"counterAppBarTitle": "Лічыльнік",
|
||||
"@counterAppBarTitle": {
|
||||
"description": "Text shown in the AppBar of the Counter Page"
|
||||
},
|
||||
"onBoardingBody": "Бяспечна зрабіць рэзервовую копію кодаў 2ФА",
|
||||
"onBoardingGetStarted": "Пачаць",
|
||||
"setupFirstAccount": "Наладзіць ваш першы ўліковы запіс",
|
||||
"importScanQrCode": "Сканіраваць код QR-код",
|
||||
"qrCode": "QR-код",
|
||||
"importEnterSetupKey": "Увесці ключ наладжвання",
|
||||
"importAccountPageTitle": "Увесці падрабязнасці ўліковага запісу",
|
||||
"secretCanNotBeEmpty": "Сакрэт не можа быць пустым",
|
||||
"bothIssuerAndAccountCanNotBeEmpty": "І выдавец, і ўліковы запіс не могуць быць пустымі",
|
||||
"incorrectDetails": "Няправільныя падрабязнасці",
|
||||
"pleaseVerifyDetails": "Праверце падрабязнасці і паспрабуйце яшчэ раз",
|
||||
"codeIssuerHint": "Выдавец",
|
||||
"codeSecretKeyHint": "Сакрэтны ключ",
|
||||
"secret": "Сакрэт",
|
||||
"all": "Усе",
|
||||
"notes": "Нататкі",
|
||||
"notesLengthLimit": "Максімальная колькасць сімвалаў у нататках не больш за {count}",
|
||||
"@notesLengthLimit": {
|
||||
"description": "Text to indicate the maximum number of characters allowed for notes",
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"description": "The maximum number of characters allowed for notes",
|
||||
"type": "int",
|
||||
"example": "100"
|
||||
}
|
||||
}
|
||||
},
|
||||
"codeAccountHint": "Уліковы запіс (vy@damen.com)",
|
||||
"codeTagHint": "Тэг",
|
||||
"accountKeyType": "Тып ключа",
|
||||
"sessionExpired": "Сеанс завяршыўся",
|
||||
"@sessionExpired": {
|
||||
"description": "Title of the dialog when the users current session is invalid/expired"
|
||||
},
|
||||
"pleaseLoginAgain": "Аўтарызуйцеся яшчэ раз",
|
||||
"loggingOut": "Выхад...",
|
||||
"timeBasedKeyType": "Заснаваныя на часе (TOTP)",
|
||||
"counterBasedKeyType": "Заснаваныя на лічыльніку (HOTP)",
|
||||
"saveAction": "Захаваць",
|
||||
"nextTotpTitle": "наступны",
|
||||
"deleteCodeTitle": "Выдаліць код?",
|
||||
"deleteCodeMessage": "Вы сапраўды хочаце выдаліць гэты код? Гэта дзеянне з'яўляецца незваротным.",
|
||||
"trashCode": "Выдаліць код?",
|
||||
"trashCodeMessage": "Вы сапраўды хочаце выдаліць код для {account}?",
|
||||
"trash": "Сметніца",
|
||||
"viewLogsAction": "Паглядзець журнал",
|
||||
"preparingLogsTitle": "Падрыхтоўка журнала...",
|
||||
"emailLogsTitle": "Адправіць журнал па электроннай пошце",
|
||||
"exportLogsAction": "Экспартаваць журнал",
|
||||
"reportABug": "Паведаміць пра памылку",
|
||||
"reportBug": "Паведаміць пра памылку",
|
||||
"contactSupport": "Звярнуцца ў службу падтрымкі",
|
||||
"blog": "Блог",
|
||||
"verifyPassword": "Праверыць пароль",
|
||||
"pleaseWait": "Пачакайце...",
|
||||
"generatingEncryptionKeysTitle": "Генерацыя ключоў шыфравання...",
|
||||
"recreatePassword": "Стварыць пароль паўторна",
|
||||
"useRecoveryKey": "Выкарыстоўваць ключ аднаўлення",
|
||||
"incorrectPasswordTitle": "Няправільны пароль",
|
||||
"welcomeBack": "З вяртаннем!",
|
||||
"changePassword": "Змяніць пароль",
|
||||
"data": "Даныя",
|
||||
"importCodes": "Імпартаваць коды",
|
||||
"passwordEmptyError": "Пароль не можа быць пустым",
|
||||
"importFromApp": "Імпартаваць коды з {appName}",
|
||||
"exportCodes": "Экспартаваць коды",
|
||||
"importLabel": "Імпарт",
|
||||
"selectFile": "Выбраць файл",
|
||||
"yes": "Так",
|
||||
"no": "Не",
|
||||
"email": "Электронная пошта",
|
||||
"support": "Падтрымка",
|
||||
"settings": "Налады",
|
||||
"pleaseTryAgain": "Калі ласка, паспрабуйце яшчэ раз",
|
||||
"delete": "Выдаліць",
|
||||
"enterYourPasswordHint": "Увядзіце ваш пароль",
|
||||
"faq": "Частыя пытанні",
|
||||
"deleteAccount": "Выдаліць уліковы запіс",
|
||||
"noDeleteAccountAction": "Не, выдаліць уліковы запіс",
|
||||
"sendEmail": "Адправіць ліст",
|
||||
"createNewAccount": "Стварыць новы ўліковы запіс",
|
||||
"confirmPassword": "Пацвердзіць пароль",
|
||||
"close": "Закрыць",
|
||||
"oopsSomethingWentWrong": "Штосьці пайшло не так.",
|
||||
"language": "Мова",
|
||||
"security": "Бяспека",
|
||||
"searchHint": "Пошук...",
|
||||
"search": "Пошук"
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{
|
||||
"loggingOut": "Väljalogimine...",
|
||||
"useRecoveryKey": "Kasuta taastevõtit"
|
||||
}
|
||||
@@ -1,141 +0,0 @@
|
||||
import 'dart:async';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:collection/collection.dart';
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:ente_auth/core/configuration.dart';
|
||||
import 'package:ente_auth/core/event_bus.dart';
|
||||
import 'package:ente_auth/core/network.dart';
|
||||
import 'package:ente_auth/events/notification_event.dart';
|
||||
import 'package:ente_auth/services/user_service.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
class UserRemoteFlagService {
|
||||
final _dio = Network.instance.getDio();
|
||||
final _logger = Logger((UserRemoteFlagService).toString());
|
||||
final _config = Configuration.instance;
|
||||
late SharedPreferences _prefs;
|
||||
|
||||
UserRemoteFlagService._privateConstructor();
|
||||
|
||||
static final UserRemoteFlagService instance =
|
||||
UserRemoteFlagService._privateConstructor();
|
||||
|
||||
static const String recoveryVerificationFlag = "recoveryKeyVerified";
|
||||
static const String needRecoveryKeyVerification =
|
||||
"needRecoveryKeyVerification";
|
||||
|
||||
Future<void> init() async {
|
||||
_prefs = await SharedPreferences.getInstance();
|
||||
}
|
||||
|
||||
bool shouldShowRecoveryVerification() {
|
||||
if (!_prefs.containsKey(needRecoveryKeyVerification)) {
|
||||
// fetch the status from remote
|
||||
unawaited(_refreshRecoveryVerificationFlag());
|
||||
return false;
|
||||
} else {
|
||||
final bool shouldShow = _prefs.getBool(needRecoveryKeyVerification)!;
|
||||
if (shouldShow) {
|
||||
// refresh the status to check if user marked it as done on another device
|
||||
unawaited(_refreshRecoveryVerificationFlag());
|
||||
}
|
||||
return shouldShow;
|
||||
}
|
||||
}
|
||||
|
||||
// markRecoveryVerificationAsDone is used to track if user has verified their
|
||||
// recovery key in the past or not. This helps in avoid showing the same
|
||||
// prompt to the user on re-install or signing into a different device
|
||||
Future<void> markRecoveryVerificationAsDone() async {
|
||||
await _updateKeyValue(recoveryVerificationFlag, true.toString());
|
||||
await _prefs.setBool(needRecoveryKeyVerification, false);
|
||||
}
|
||||
|
||||
Future<void> _refreshRecoveryVerificationFlag() async {
|
||||
_logger.finest('refresh recovery key verification flag');
|
||||
final remoteStatusValue =
|
||||
await _getValue(recoveryVerificationFlag, "false");
|
||||
final bool isNeedVerificationFlagSet =
|
||||
_prefs.containsKey(needRecoveryKeyVerification);
|
||||
if (remoteStatusValue.toLowerCase() == "true") {
|
||||
await _prefs.setBool(needRecoveryKeyVerification, false);
|
||||
// If the user verified on different device, then we should refresh
|
||||
// the UI to dismiss the Notification.
|
||||
if (isNeedVerificationFlagSet) {
|
||||
Bus.instance.fire(NotificationEvent());
|
||||
}
|
||||
} else if (!isNeedVerificationFlagSet) {
|
||||
// Verification is not done yet as remoteStatus is false and local flag to
|
||||
// show notification isn't set. Set the flag to true if any active
|
||||
// session is older than 1 day.
|
||||
final activeSessions = await UserService.instance.getActiveSessions();
|
||||
final int microSecondsInADay = const Duration(days: 1).inMicroseconds;
|
||||
final bool anyActiveSessionOlderThanADay =
|
||||
activeSessions.sessions.firstWhereOrNull(
|
||||
(e) =>
|
||||
(e.creationTime + microSecondsInADay) <
|
||||
DateTime.now().microsecondsSinceEpoch,
|
||||
) !=
|
||||
null;
|
||||
if (anyActiveSessionOlderThanADay) {
|
||||
await _prefs.setBool(needRecoveryKeyVerification, true);
|
||||
Bus.instance.fire(NotificationEvent());
|
||||
} else {
|
||||
// continue defaulting to no verification prompt
|
||||
_logger.finest('No active session older than 1 day');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Future<String> _getValue(String key, String? defaultValue) async {
|
||||
try {
|
||||
final Map<String, dynamic> queryParams = {"key": key};
|
||||
if (defaultValue != null) {
|
||||
queryParams["defaultValue"] = defaultValue;
|
||||
}
|
||||
final response = await _dio.get(
|
||||
"${_config.getHttpEndpoint()}/remote-store",
|
||||
queryParameters: queryParams,
|
||||
options: Options(
|
||||
headers: {
|
||||
"X-Auth-Token": _config.getToken(),
|
||||
},
|
||||
),
|
||||
);
|
||||
if (response.statusCode != HttpStatus.ok) {
|
||||
throw Exception("Unexpected status code ${response.statusCode}");
|
||||
}
|
||||
return response.data["value"];
|
||||
} catch (e) {
|
||||
_logger.info("Error while fetching bool status for $key", e);
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
|
||||
// _setBooleanFlag sets the corresponding flag on remote
|
||||
// to mark recovery as completed
|
||||
Future<void> _updateKeyValue(String key, String value) async {
|
||||
try {
|
||||
final response = await _dio.post(
|
||||
"${_config.getHttpEndpoint()}/remote-store/update",
|
||||
data: {
|
||||
"key": key,
|
||||
"value": value,
|
||||
},
|
||||
options: Options(
|
||||
headers: {
|
||||
"X-Auth-Token": _config.getToken(),
|
||||
},
|
||||
),
|
||||
);
|
||||
if (response.statusCode != HttpStatus.ok) {
|
||||
throw Exception("Unexpected state");
|
||||
}
|
||||
} catch (e) {
|
||||
_logger.warning("Failed to set flag for $key", e);
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,219 +0,0 @@
|
||||
import 'package:bip39/bip39.dart' as bip39;
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:ente_auth/core/configuration.dart';
|
||||
import 'package:ente_auth/ente_theme_data.dart';
|
||||
import 'package:ente_auth/l10n/l10n.dart';
|
||||
import 'package:ente_auth/services/local_authentication_service.dart';
|
||||
import 'package:ente_auth/services/user_remote_flag_service.dart';
|
||||
import 'package:ente_auth/ui/account/recovery_key_page.dart';
|
||||
import 'package:ente_auth/ui/common/gradient_button.dart';
|
||||
import 'package:ente_auth/ui/components/buttons/button_widget.dart';
|
||||
import 'package:ente_auth/utils/dialog_util.dart';
|
||||
import 'package:ente_auth/utils/navigation_util.dart';
|
||||
import 'package:ente_auth/utils/platform_util.dart';
|
||||
import 'package:ente_crypto_dart/ente_crypto_dart.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
|
||||
class VerifyRecoveryPage extends StatefulWidget {
|
||||
const VerifyRecoveryPage({super.key});
|
||||
|
||||
@override
|
||||
State<VerifyRecoveryPage> createState() => _VerifyRecoveryPageState();
|
||||
}
|
||||
|
||||
class _VerifyRecoveryPageState extends State<VerifyRecoveryPage> {
|
||||
final _recoveryKey = TextEditingController();
|
||||
final Logger _logger = Logger((_VerifyRecoveryPageState).toString());
|
||||
|
||||
void _verifyRecoveryKey() async {
|
||||
final dialog =
|
||||
createProgressDialog(context, context.l10n.verifyingRecoveryKey);
|
||||
await dialog.show();
|
||||
try {
|
||||
final String inputKey = _recoveryKey.text.trim();
|
||||
final String recoveryKey =
|
||||
CryptoUtil.bin2hex(Configuration.instance.getRecoveryKey());
|
||||
final String recoveryKeyWords = bip39.entropyToMnemonic(recoveryKey);
|
||||
if (inputKey == recoveryKey || inputKey == recoveryKeyWords) {
|
||||
try {
|
||||
await UserRemoteFlagService.instance.markRecoveryVerificationAsDone();
|
||||
} catch (e) {
|
||||
await dialog.hide();
|
||||
if (e is DioException && e.type == DioExceptionType.unknown) {
|
||||
await showErrorDialog(
|
||||
context,
|
||||
"No internet connection",
|
||||
"Please check your internet connection and try again.",
|
||||
);
|
||||
} else {
|
||||
await showGenericErrorDialog(
|
||||
context: context,
|
||||
error: e,
|
||||
);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
await dialog.hide();
|
||||
// todo: change this as per figma once the component is ready
|
||||
await showErrorDialog(
|
||||
context,
|
||||
context.l10n.recoveryKeyVerified,
|
||||
context.l10n.recoveryKeySuccessBody,
|
||||
);
|
||||
Navigator.of(context).pop();
|
||||
} else {
|
||||
throw Exception("recovery key didn't match");
|
||||
}
|
||||
} catch (e, s) {
|
||||
_logger.severe("failed to verify recovery key", e, s);
|
||||
await dialog.hide();
|
||||
final String errMessage = context.l10n.invalidRecoveryKey;
|
||||
final result = await showChoiceDialog(
|
||||
context,
|
||||
title: context.l10n.invalidKey,
|
||||
body: errMessage,
|
||||
firstButtonLabel: context.l10n.tryAgain,
|
||||
secondButtonLabel: context.l10n.viewRecoveryKey,
|
||||
secondButtonAction: ButtonAction.second,
|
||||
);
|
||||
if (result!.action == ButtonAction.second) {
|
||||
await _onViewRecoveryKeyClick();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onViewRecoveryKeyClick() async {
|
||||
final hasAuthenticated =
|
||||
await LocalAuthenticationService.instance.requestLocalAuthentication(
|
||||
context,
|
||||
"Please authenticate to view your recovery key",
|
||||
);
|
||||
await PlatformUtil.refocusWindows();
|
||||
|
||||
if (hasAuthenticated) {
|
||||
String recoveryKey;
|
||||
try {
|
||||
recoveryKey =
|
||||
CryptoUtil.bin2hex(Configuration.instance.getRecoveryKey());
|
||||
await routeToPage(
|
||||
context,
|
||||
RecoveryKeyPage(
|
||||
recoveryKey,
|
||||
context.l10n.ok,
|
||||
showAppBar: true,
|
||||
onDone: () {
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
),
|
||||
);
|
||||
} catch (e) {
|
||||
// ignore: unawaited_futures
|
||||
showGenericErrorDialog(
|
||||
context: context,
|
||||
error: e,
|
||||
);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final enteTheme = Theme.of(context).colorScheme.enteTheme;
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
elevation: 0,
|
||||
leading: IconButton(
|
||||
icon: const Icon(Icons.arrow_back),
|
||||
color: Theme.of(context).iconTheme.color,
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
),
|
||||
),
|
||||
body: Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 16.0),
|
||||
child: LayoutBuilder(
|
||||
builder: (context, constraints) {
|
||||
return SingleChildScrollView(
|
||||
child: ConstrainedBox(
|
||||
constraints: BoxConstraints(
|
||||
minWidth: constraints.maxWidth,
|
||||
minHeight: constraints.maxHeight,
|
||||
),
|
||||
child: IntrinsicHeight(
|
||||
child: Column(
|
||||
children: [
|
||||
const SizedBox(height: 12),
|
||||
SizedBox(
|
||||
width: double.infinity,
|
||||
child: Text(
|
||||
context.l10n.confirmRecoveryKey,
|
||||
style: enteTheme.textTheme.h3Bold,
|
||||
textAlign: TextAlign.left,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 18),
|
||||
Text(
|
||||
context.l10n.recoveryKeyVerifyReason,
|
||||
style: enteTheme.textTheme.small
|
||||
.copyWith(color: enteTheme.colorScheme.textMuted),
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
TextFormField(
|
||||
decoration: InputDecoration(
|
||||
filled: true,
|
||||
hintText: context.l10n.enterYourRecoveryKey,
|
||||
contentPadding: const EdgeInsets.all(20),
|
||||
border: UnderlineInputBorder(
|
||||
borderSide: BorderSide.none,
|
||||
borderRadius: BorderRadius.circular(6),
|
||||
),
|
||||
),
|
||||
style: const TextStyle(
|
||||
fontSize: 14,
|
||||
fontFeatures: [FontFeature.tabularFigures()],
|
||||
),
|
||||
controller: _recoveryKey,
|
||||
autofocus: false,
|
||||
autocorrect: false,
|
||||
keyboardType: TextInputType.multiline,
|
||||
minLines: 4,
|
||||
maxLines: null,
|
||||
onChanged: (_) {
|
||||
setState(() {});
|
||||
},
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
Expanded(
|
||||
child: Container(
|
||||
alignment: Alignment.bottomCenter,
|
||||
width: double.infinity,
|
||||
padding: const EdgeInsets.fromLTRB(0, 12, 0, 40),
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||
children: [
|
||||
GradientButton(
|
||||
onTap: _verifyRecoveryKey,
|
||||
text: context.l10n.confirm,
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 20),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -5,8 +5,6 @@
|
||||
|
||||
endpoint:
|
||||
api: "http://localhost:8080"
|
||||
# Endpoint for the account service for passkey
|
||||
accounts: "http://localhost:3001"
|
||||
|
||||
log:
|
||||
http: false # log status code & time taken by requests
|
||||
|
||||
@@ -35,6 +35,7 @@ type AuthorizationResponse struct {
|
||||
ID int64 `json:"id"`
|
||||
KeyAttributes *KeyAttributes `json:"keyAttributes,omitempty"`
|
||||
EncryptedToken string `json:"encryptedToken,omitempty"`
|
||||
AccountsUrl string `json:"accountsUrl"`
|
||||
Token string `json:"token,omitempty"`
|
||||
TwoFactorSessionID string `json:"twoFactorSessionID"`
|
||||
PassKeySessionID string `json:"passkeySessionID"`
|
||||
|
||||
@@ -110,7 +110,6 @@ func initConfig(cliConfigDir string) {
|
||||
viper.AddConfigPath(".") // optionally look for config in the working directory
|
||||
|
||||
viper.SetDefault("endpoint.api", constants.EnteApiUrl)
|
||||
viper.SetDefault("endpoint.accounts", constants.EnteAccountUrl)
|
||||
viper.SetDefault("log.http", false)
|
||||
if err := viper.ReadInConfig(); err != nil {
|
||||
if _, ok := err.(viper.ConfigFileNotFoundError); ok {
|
||||
|
||||
@@ -8,8 +8,8 @@ import (
|
||||
eCrypto "github.com/ente-io/cli/internal/crypto"
|
||||
"github.com/ente-io/cli/pkg/model"
|
||||
"github.com/ente-io/cli/utils/browser"
|
||||
"github.com/ente-io/cli/utils/constants"
|
||||
"github.com/ente-io/cli/utils/encoding"
|
||||
"github.com/spf13/viper"
|
||||
"log"
|
||||
|
||||
"github.com/kong/go-srp"
|
||||
@@ -145,7 +145,10 @@ func (c *ClICtrl) verifyPassKey(ctx context.Context, authResp *api.Authorization
|
||||
if !authResp.IsPasskeyRequired() {
|
||||
return authResp, nil
|
||||
}
|
||||
baseAccountUrl := viper.GetString("endpoint.accounts")
|
||||
baseAccountUrl := constants.EnteAccountUrl
|
||||
if authResp.AccountsUrl != "" {
|
||||
baseAccountUrl = authResp.AccountsUrl
|
||||
}
|
||||
passkeyAuthUrl := fmt.Sprintf("%s/passkeys/verify?passkeySessionID=%s&redirect=ente-cli://passkey&clientPackage=%s", baseAccountUrl, authResp.PassKeySessionID, app.ClientPkg())
|
||||
fmt.Printf("Open this url in browser to verify passkey: %s\n", passkeyAuthUrl)
|
||||
err := browser.OpenURL(passkeyAuthUrl)
|
||||
|
||||
@@ -113,6 +113,11 @@ jobs:
|
||||
APPLE_APP_SPECIFIC_PASSWORD:
|
||||
${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
|
||||
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
|
||||
# Windows Azure Trusted Signing related values
|
||||
# https://www.electron.build/code-signing-win#using-azure-trusted-signing-beta
|
||||
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
|
||||
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
|
||||
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
|
||||
# Default is "draft", but since our nightly builds update
|
||||
# existing pre-releases, set this to "prerelease".
|
||||
EP_PRE_RELEASE: true
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
# CHANGELOG
|
||||
|
||||
## v1.7.14 (Unreleased)
|
||||
## v1.7.15 (Unreleased)
|
||||
|
||||
- .
|
||||
|
||||
## v1.7.14
|
||||
|
||||
- Increase file size limit to 10 GB.
|
||||
|
||||
## v1.7.13
|
||||
|
||||
- Generate streams for videos (beta)
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
- [Electron](#electron)
|
||||
- [Dev dependencies](#dev)
|
||||
- [Functionality](#functionality)
|
||||
- [Pinned](#pinned)
|
||||
|
||||
## Electron
|
||||
|
||||
@@ -140,3 +141,13 @@ handles to avoid reopening them for every operation.
|
||||
|
||||
[chokidar](https://github.com/paulmillr/chokidar) is used as a file system
|
||||
watcher for the watch folders functionality.
|
||||
|
||||
## Pinned
|
||||
|
||||
- `electron-builder` is pinned to 26.0.14 because of
|
||||
https://github.com/electron-userland/electron-builder/issues/9161
|
||||
|
||||
To reproduce this locally, add `x64ArchFiles: "ffmpeg"` to
|
||||
`electron-builder.yml`, then run `node_modules/.bin/electron-builder --mac`.
|
||||
|
||||
- `electron-store` is pinned to 8.2.0 because subsequent versions are ESM only.
|
||||
|
||||
@@ -14,6 +14,11 @@ win:
|
||||
target:
|
||||
- target: nsis
|
||||
arch: [x64, arm64]
|
||||
azureSignOptions:
|
||||
publisherName: ENTE TECHNOLOGIES, INC.
|
||||
endpoint: https://eus.codesigning.azure.net/
|
||||
certificateProfileName: EnteTrustCertProfile
|
||||
codeSigningAccountName: EnteTechnologiesInc
|
||||
nsis:
|
||||
deleteAppDataOnUninstall: true
|
||||
linux:
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "ente",
|
||||
"version": "1.7.14-beta",
|
||||
"version": "1.7.15-beta",
|
||||
"private": true,
|
||||
"description": "Desktop client for Ente Photos",
|
||||
"repository": "github:ente-io/photos-desktop",
|
||||
@@ -21,9 +21,6 @@
|
||||
"lint-fix": "yarn prettier --write --log-level warn . && yarn eslint && yarn tsc",
|
||||
"prepare": "node scripts/vips.js"
|
||||
},
|
||||
"resolutions": {
|
||||
"jackspeak": "2.1.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"any-shell-escape": "^0.1.1",
|
||||
"auto-launch": "^5.0.6",
|
||||
@@ -31,33 +28,32 @@
|
||||
"clip-bpe-js": "^0.0.6",
|
||||
"comlink": "^4.4.2",
|
||||
"compare-versions": "^6.1.1",
|
||||
"electron-log": "^5.4.0",
|
||||
"electron-log": "^5.4.1",
|
||||
"electron-store": "^8.2.0",
|
||||
"electron-updater": "^6.6.3",
|
||||
"electron-updater": "^6.6.5",
|
||||
"ffmpeg-static": "^5.2.0",
|
||||
"lru-cache": "^11.1.0",
|
||||
"next-electron-server": "^1.0.0",
|
||||
"node-stream-zip": "^1.15.0",
|
||||
"onnxruntime-node": "^1.20.1",
|
||||
"zod": "^3.25.51"
|
||||
"onnxruntime-node": "1.22.0-rev",
|
||||
"zod": "^3.25.67"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^9.28.0",
|
||||
"@eslint/js": "^9.30.1",
|
||||
"@tsconfig/node22": "^22.0.2",
|
||||
"@types/auto-launch": "^5.0.5",
|
||||
"@types/ffmpeg-static": "^3.0.3",
|
||||
"ajv": "^8.17.1",
|
||||
"concurrently": "^9.1.2",
|
||||
"concurrently": "^9.2.0",
|
||||
"cross-env": "^7.0.3",
|
||||
"electron": "^36.4.0",
|
||||
"electron-builder": "^26.0.14",
|
||||
"electron": "^37.1.0",
|
||||
"electron-builder": "26.0.14",
|
||||
"eslint": "^9",
|
||||
"prettier": "3.5.3",
|
||||
"prettier": "3.6.2",
|
||||
"prettier-plugin-organize-imports": "^4.1.0",
|
||||
"prettier-plugin-packagejson": "^2.5.15",
|
||||
"prettier-plugin-packagejson": "^2.5.17",
|
||||
"shx": "^0.4.0",
|
||||
"typescript": "^5.8.3",
|
||||
"typescript-eslint": "^8.33.1"
|
||||
"typescript-eslint": "^8.35.1"
|
||||
},
|
||||
"packageManager": "yarn@1.22.22",
|
||||
"productName": "ente"
|
||||
|
||||
@@ -78,14 +78,6 @@ export const allowWindowClose = (): void => {
|
||||
* We call this at the end of this file.
|
||||
*/
|
||||
const main = () => {
|
||||
// Workaround for Electron 36 not launching on some Linux distros. Remove
|
||||
// once fixed or otherwise mitigated upstream.
|
||||
//
|
||||
// https://github.com/electron/electron/issues/46538#issuecomment-2808806722
|
||||
if (process.platform == "linux") {
|
||||
app.commandLine.appendSwitch("gtk-version", "3");
|
||||
}
|
||||
|
||||
const gotTheLock = app.requestSingleInstanceLock();
|
||||
if (!gotTheLock) {
|
||||
app.quit();
|
||||
|
||||
@@ -50,8 +50,8 @@ import { convertToJPEG, generateImageThumbnail } from "./services/image";
|
||||
import { logout } from "./services/logout";
|
||||
import {
|
||||
lastShownChangelogVersion,
|
||||
masterKeyB64,
|
||||
saveMasterKeyB64,
|
||||
masterKeyFromSafeStorage,
|
||||
saveMasterKeyInSafeStorage,
|
||||
setLastShownChangelogVersion,
|
||||
} from "./services/store";
|
||||
import {
|
||||
@@ -108,10 +108,12 @@ export const attachIPCHandlers = () => {
|
||||
|
||||
ipcMain.handle("selectDirectory", () => selectDirectory());
|
||||
|
||||
ipcMain.handle("masterKeyB64", () => masterKeyB64());
|
||||
ipcMain.handle("masterKeyFromSafeStorage", () =>
|
||||
masterKeyFromSafeStorage(),
|
||||
);
|
||||
|
||||
ipcMain.handle("saveMasterKeyB64", (_, masterKeyB64: string) =>
|
||||
saveMasterKeyB64(masterKeyB64),
|
||||
ipcMain.handle("saveMasterKeyInSafeStorage", (_, masterKey: string) =>
|
||||
saveMasterKeyInSafeStorage(masterKey),
|
||||
);
|
||||
|
||||
ipcMain.handle("lastShownChangelogVersion", () =>
|
||||
|
||||
@@ -184,14 +184,13 @@ const downloadModel = async (saveLocation: string, name: string) => {
|
||||
/**
|
||||
* Create an ONNX {@link InferenceSession} with some defaults.
|
||||
*/
|
||||
const createInferenceSession = async (modelPath: string) => {
|
||||
return await ort.InferenceSession.create(modelPath, {
|
||||
const createInferenceSession = (modelPath: string) =>
|
||||
ort.InferenceSession.create(modelPath, {
|
||||
// Restrict the number of threads to 1.
|
||||
intraOpNumThreads: 1,
|
||||
// Be more conservative with RAM usage.
|
||||
enableCpuMemArena: false,
|
||||
});
|
||||
};
|
||||
|
||||
const cachedCLIPImageSession = makeCachedInferenceSession(
|
||||
"mobileclip_s2_image_opset18_rgba_opt.onnx",
|
||||
@@ -233,9 +232,11 @@ const getTokenizer = () => (_tokenizer ??= new Tokenizer());
|
||||
export const computeCLIPTextEmbeddingIfAvailable = async (text: string) => {
|
||||
const sessionOrSkip = await Promise.race([
|
||||
cachedCLIPTextSession(),
|
||||
// Wait for a tick to get the session promise to resolved the first time
|
||||
// this code runs on each app start (and the model has been downloaded).
|
||||
wait(0).then(() => 1),
|
||||
// Wait a bit to get the session promise to resolved the first time this
|
||||
// code runs on each app start (in these cases the model will already be
|
||||
// downloaded, so session creation should take only a 1 or 2 ticks: file
|
||||
// system stat, and ort.InferenceSession.create).
|
||||
wait(50).then(() => 1),
|
||||
]);
|
||||
|
||||
// Don't wait for the download to complete.
|
||||
|
||||
@@ -24,17 +24,17 @@ export const clearStores = () => {
|
||||
* On macOS, `safeStorage` stores our data under a Keychain entry named
|
||||
* "<app-name> Safe Storage". In our case, "ente Safe Storage".
|
||||
*/
|
||||
export const saveMasterKeyB64 = (masterKeyB64: string) => {
|
||||
const encryptedKey = safeStorage.encryptString(masterKeyB64);
|
||||
const b64EncryptedKey = Buffer.from(encryptedKey).toString("base64");
|
||||
safeStorageStore.set("encryptionKey", b64EncryptedKey);
|
||||
export const saveMasterKeyInSafeStorage = (masterKey: string) => {
|
||||
const encryptedKeyBuffer = safeStorage.encryptString(masterKey);
|
||||
const encryptedKey = Buffer.from(encryptedKeyBuffer).toString("base64");
|
||||
safeStorageStore.set("encryptionKey", encryptedKey);
|
||||
};
|
||||
|
||||
export const masterKeyB64 = (): string | undefined => {
|
||||
const b64EncryptedKey = safeStorageStore.get("encryptionKey");
|
||||
if (!b64EncryptedKey) return undefined;
|
||||
const keyBuffer = Buffer.from(b64EncryptedKey, "base64");
|
||||
return safeStorage.decryptString(keyBuffer);
|
||||
export const masterKeyFromSafeStorage = (): string | undefined => {
|
||||
const encryptedKey = safeStorageStore.get("encryptionKey");
|
||||
if (!encryptedKey) return undefined;
|
||||
const encryptedKeyBuffer = Buffer.from(encryptedKey, "base64");
|
||||
return safeStorage.decryptString(encryptedKeyBuffer);
|
||||
};
|
||||
|
||||
export const lastShownChangelogVersion = (): number | undefined =>
|
||||
|
||||
@@ -113,10 +113,11 @@ const logout = () => {
|
||||
return ipcRenderer.invoke("logout");
|
||||
};
|
||||
|
||||
const masterKeyB64 = () => ipcRenderer.invoke("masterKeyB64");
|
||||
const masterKeyFromSafeStorage = () =>
|
||||
ipcRenderer.invoke("masterKeyFromSafeStorage");
|
||||
|
||||
const saveMasterKeyB64 = (masterKeyB64: string) =>
|
||||
ipcRenderer.invoke("saveMasterKeyB64", masterKeyB64);
|
||||
const saveMasterKeyInSafeStorage = (masterKey: string) =>
|
||||
ipcRenderer.invoke("saveMasterKeyInSafeStorage", masterKey);
|
||||
|
||||
const lastShownChangelogVersion = () =>
|
||||
ipcRenderer.invoke("lastShownChangelogVersion");
|
||||
@@ -358,8 +359,8 @@ contextBridge.exposeInMainWorld("electron", {
|
||||
selectDirectory,
|
||||
pathForFile,
|
||||
logout,
|
||||
masterKeyB64,
|
||||
saveMasterKeyB64,
|
||||
masterKeyFromSafeStorage,
|
||||
saveMasterKeyInSafeStorage,
|
||||
lastShownChangelogVersion,
|
||||
setLastShownChangelogVersion,
|
||||
isAutoLaunchEnabled,
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
ajv "^6.12.0"
|
||||
ajv-keywords "^3.4.1"
|
||||
|
||||
"@electron/asar@3.4.1":
|
||||
"@electron/asar@3.4.1", "@electron/asar@^3.2.7":
|
||||
version "3.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@electron/asar/-/asar-3.4.1.tgz#4e9196a4b54fba18c56cd8d5cac67c5bdc588065"
|
||||
integrity sha512-i4/rNPRS84t0vSRa2HorerGRXWyF4vThfHesw0dmcWHp+cspK743UanA0suA5Q5y8kzY2y6YKrvbIUn69BCAiA==
|
||||
@@ -34,15 +34,6 @@
|
||||
glob "^7.1.6"
|
||||
minimatch "^3.0.4"
|
||||
|
||||
"@electron/asar@^3.2.7":
|
||||
version "3.2.18"
|
||||
resolved "https://registry.yarnpkg.com/@electron/asar/-/asar-3.2.18.tgz#fa607f829209bab8b9e0ce6658d3fe81b2cba517"
|
||||
integrity sha512-2XyvMe3N3Nrs8cV39IKELRHTYUWFKrmqqSY1U+GMlc0jvqjIVnoxhNd2H4JolWQncbJi1DCvb5TNxZuI2fEjWg==
|
||||
dependencies:
|
||||
commander "^5.0.0"
|
||||
glob "^7.1.6"
|
||||
minimatch "^3.0.4"
|
||||
|
||||
"@electron/fuses@^1.8.0":
|
||||
version "1.8.0"
|
||||
resolved "https://registry.yarnpkg.com/@electron/fuses/-/fuses-1.8.0.tgz#ad34d3cc4703b1258b83f6989917052cfc1490a0"
|
||||
@@ -184,10 +175,10 @@
|
||||
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.9.1.tgz#4a97e85e982099d6c7ee8410aacb55adaa576f06"
|
||||
integrity sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==
|
||||
|
||||
"@eslint/js@^9.28.0":
|
||||
version "9.28.0"
|
||||
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.28.0.tgz#7822ccc2f8cae7c3cd4f902377d520e9ae03f844"
|
||||
integrity sha512-fnqSjGWd/CoIp4EXIxWVK/sHA6DOHN4+8Ix2cX5ycOY7LG0UY8nHCU5pIp2eaE1Mc7Qd8kHspYNzYXT2ojPLzg==
|
||||
"@eslint/js@^9.30.1":
|
||||
version "9.30.1"
|
||||
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.30.1.tgz#ebe9dd52a38345784c486300175a28c6013c088d"
|
||||
integrity sha512-zXhuECFlyep42KZUhWjfvsmXGX39W8K8LFb8AWXM9gSV9dQB+MrJGLKvW6Zw0Ggnbpw0VHTtrhFXYe3Gym18jg==
|
||||
|
||||
"@eslint/object-schema@^2.1.4":
|
||||
version "2.1.4"
|
||||
@@ -209,12 +200,29 @@
|
||||
resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.0.tgz#6d86b8cb322660f03d3f0aa94b99bdd8e172d570"
|
||||
integrity sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==
|
||||
|
||||
"@isaacs/fs-minipass@^4.0.0":
|
||||
"@isaacs/balanced-match@^4.0.1":
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz#2d59ae3ab4b38fb4270bfa23d30f8e2e86c7fe32"
|
||||
integrity sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==
|
||||
resolved "https://registry.yarnpkg.com/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz#3081dadbc3460661b751e7591d7faea5df39dd29"
|
||||
integrity sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==
|
||||
|
||||
"@isaacs/brace-expansion@^5.0.0":
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz#4b3dabab7d8e75a429414a96bd67bf4c1d13e0f3"
|
||||
integrity sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==
|
||||
dependencies:
|
||||
minipass "^7.0.4"
|
||||
"@isaacs/balanced-match" "^4.0.1"
|
||||
|
||||
"@isaacs/cliui@^8.0.2":
|
||||
version "8.0.2"
|
||||
resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550"
|
||||
integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==
|
||||
dependencies:
|
||||
string-width "^5.1.2"
|
||||
string-width-cjs "npm:string-width@^4.2.0"
|
||||
strip-ansi "^7.0.1"
|
||||
strip-ansi-cjs "npm:strip-ansi@^6.0.1"
|
||||
wrap-ansi "^8.1.0"
|
||||
wrap-ansi-cjs "npm:wrap-ansi@^7.0.0"
|
||||
|
||||
"@malept/cross-spawn-promise@^2.0.0":
|
||||
version "2.0.0"
|
||||
@@ -324,11 +332,6 @@
|
||||
dependencies:
|
||||
"@types/ms" "*"
|
||||
|
||||
"@types/ffmpeg-static@^3.0.3":
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/ffmpeg-static/-/ffmpeg-static-3.0.3.tgz#605358ac6304507a75c2fd5fd861534837b19e2f"
|
||||
integrity sha512-wmjANN0CiYs5clQESK+xE6plet0y9ndqaNBdQx4IIw7ZbPBMQw+14Lq4ky2WqMqGlpFJ9ZUxU0O43TvVZziyyA==
|
||||
|
||||
"@types/fs-extra@9.0.13", "@types/fs-extra@^9.0.11":
|
||||
version "9.0.13"
|
||||
resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45"
|
||||
@@ -392,78 +395,78 @@
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@typescript-eslint/eslint-plugin@8.33.1":
|
||||
version "8.33.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.33.1.tgz#532641b416ed2afd5be893cddb2a58e9cd1f7a3e"
|
||||
integrity sha512-TDCXj+YxLgtvxvFlAvpoRv9MAncDLBV2oT9Bd7YBGC/b/sEURoOYuIwLI99rjWOfY3QtDzO+mk0n4AmdFExW8A==
|
||||
"@typescript-eslint/eslint-plugin@8.35.1":
|
||||
version "8.35.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.35.1.tgz#06b1129fe26d6532abd58fb2b3fe9810bd016935"
|
||||
integrity sha512-9XNTlo7P7RJxbVeICaIIIEipqxLKguyh+3UbXuT2XQuFp6d8VOeDEGuz5IiX0dgZo8CiI6aOFLg4e8cF71SFVg==
|
||||
dependencies:
|
||||
"@eslint-community/regexpp" "^4.10.0"
|
||||
"@typescript-eslint/scope-manager" "8.33.1"
|
||||
"@typescript-eslint/type-utils" "8.33.1"
|
||||
"@typescript-eslint/utils" "8.33.1"
|
||||
"@typescript-eslint/visitor-keys" "8.33.1"
|
||||
"@typescript-eslint/scope-manager" "8.35.1"
|
||||
"@typescript-eslint/type-utils" "8.35.1"
|
||||
"@typescript-eslint/utils" "8.35.1"
|
||||
"@typescript-eslint/visitor-keys" "8.35.1"
|
||||
graphemer "^1.4.0"
|
||||
ignore "^7.0.0"
|
||||
natural-compare "^1.4.0"
|
||||
ts-api-utils "^2.1.0"
|
||||
|
||||
"@typescript-eslint/parser@8.33.1":
|
||||
version "8.33.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.33.1.tgz#ef9a5ee6aa37a6b4f46cc36d08a14f828238afe2"
|
||||
integrity sha512-qwxv6dq682yVvgKKp2qWwLgRbscDAYktPptK4JPojCwwi3R9cwrvIxS4lvBpzmcqzR4bdn54Z0IG1uHFskW4dA==
|
||||
"@typescript-eslint/parser@8.35.1":
|
||||
version "8.35.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.35.1.tgz#787312e80f0f337d85f4c2a569411c469e852d44"
|
||||
integrity sha512-3MyiDfrfLeK06bi/g9DqJxP5pV74LNv4rFTyvGDmT3x2p1yp1lOd+qYZfiRPIOf/oON+WRZR5wxxuF85qOar+w==
|
||||
dependencies:
|
||||
"@typescript-eslint/scope-manager" "8.33.1"
|
||||
"@typescript-eslint/types" "8.33.1"
|
||||
"@typescript-eslint/typescript-estree" "8.33.1"
|
||||
"@typescript-eslint/visitor-keys" "8.33.1"
|
||||
"@typescript-eslint/scope-manager" "8.35.1"
|
||||
"@typescript-eslint/types" "8.35.1"
|
||||
"@typescript-eslint/typescript-estree" "8.35.1"
|
||||
"@typescript-eslint/visitor-keys" "8.35.1"
|
||||
debug "^4.3.4"
|
||||
|
||||
"@typescript-eslint/project-service@8.33.1":
|
||||
version "8.33.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.33.1.tgz#c85e7d9a44d6a11fe64e73ac1ed47de55dc2bf9f"
|
||||
integrity sha512-DZR0efeNklDIHHGRpMpR5gJITQpu6tLr9lDJnKdONTC7vvzOlLAG/wcfxcdxEWrbiZApcoBCzXqU/Z458Za5Iw==
|
||||
"@typescript-eslint/project-service@8.35.1":
|
||||
version "8.35.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.35.1.tgz#815bb771f2f6c97780e44299434ece3c2e526127"
|
||||
integrity sha512-VYxn/5LOpVxADAuP3NrnxxHYfzVtQzLKeldIhDhzC8UHaiQvYlXvKuVho1qLduFbJjjy5U5bkGwa3rUGUb1Q6Q==
|
||||
dependencies:
|
||||
"@typescript-eslint/tsconfig-utils" "^8.33.1"
|
||||
"@typescript-eslint/types" "^8.33.1"
|
||||
"@typescript-eslint/tsconfig-utils" "^8.35.1"
|
||||
"@typescript-eslint/types" "^8.35.1"
|
||||
debug "^4.3.4"
|
||||
|
||||
"@typescript-eslint/scope-manager@8.33.1":
|
||||
version "8.33.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.33.1.tgz#d1e0efb296da5097d054bc9972e69878a2afea73"
|
||||
integrity sha512-dM4UBtgmzHR9bS0Rv09JST0RcHYearoEoo3pG5B6GoTR9XcyeqX87FEhPo+5kTvVfKCvfHaHrcgeJQc6mrDKrA==
|
||||
"@typescript-eslint/scope-manager@8.35.1":
|
||||
version "8.35.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.35.1.tgz#b19f9be65c8d1059e88a323a1a6567dbfe0a1a4e"
|
||||
integrity sha512-s/Bpd4i7ht2934nG+UoSPlYXd08KYz3bmjLEb7Ye1UVob0d1ENiT3lY8bsCmik4RqfSbPw9xJJHbugpPpP5JUg==
|
||||
dependencies:
|
||||
"@typescript-eslint/types" "8.33.1"
|
||||
"@typescript-eslint/visitor-keys" "8.33.1"
|
||||
"@typescript-eslint/types" "8.35.1"
|
||||
"@typescript-eslint/visitor-keys" "8.35.1"
|
||||
|
||||
"@typescript-eslint/tsconfig-utils@8.33.1", "@typescript-eslint/tsconfig-utils@^8.33.1":
|
||||
version "8.33.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.33.1.tgz#7836afcc097a4657a5ed56670851a450d8b70ab8"
|
||||
integrity sha512-STAQsGYbHCF0/e+ShUQ4EatXQ7ceh3fBCXkNU7/MZVKulrlq1usH7t2FhxvCpuCi5O5oi1vmVaAjrGeL71OK1g==
|
||||
"@typescript-eslint/tsconfig-utils@8.35.1", "@typescript-eslint/tsconfig-utils@^8.35.1":
|
||||
version "8.35.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.35.1.tgz#c2db8714c181cc0700216c1a2e3cf55719c58006"
|
||||
integrity sha512-K5/U9VmT9dTHoNowWZpz+/TObS3xqC5h0xAIjXPw+MNcKV9qg6eSatEnmeAwkjHijhACH0/N7bkhKvbt1+DXWQ==
|
||||
|
||||
"@typescript-eslint/type-utils@8.33.1":
|
||||
version "8.33.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.33.1.tgz#d73ee1a29d8a0abe60d4abbff4f1d040f0de15fa"
|
||||
integrity sha512-1cG37d9xOkhlykom55WVwG2QRNC7YXlxMaMzqw2uPeJixBFfKWZgaP/hjAObqMN/u3fr5BrTwTnc31/L9jQ2ww==
|
||||
"@typescript-eslint/type-utils@8.35.1":
|
||||
version "8.35.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.35.1.tgz#4f9a07d6efa0e617a67e1890d28117e68ce154bd"
|
||||
integrity sha512-HOrUBlfVRz5W2LIKpXzZoy6VTZzMu2n8q9C2V/cFngIC5U1nStJgv0tMV4sZPzdf4wQm9/ToWUFPMN9Vq9VJQQ==
|
||||
dependencies:
|
||||
"@typescript-eslint/typescript-estree" "8.33.1"
|
||||
"@typescript-eslint/utils" "8.33.1"
|
||||
"@typescript-eslint/typescript-estree" "8.35.1"
|
||||
"@typescript-eslint/utils" "8.35.1"
|
||||
debug "^4.3.4"
|
||||
ts-api-utils "^2.1.0"
|
||||
|
||||
"@typescript-eslint/types@8.33.1", "@typescript-eslint/types@^8.33.1":
|
||||
version "8.33.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.33.1.tgz#b693111bc2180f8098b68e9958cf63761657a55f"
|
||||
integrity sha512-xid1WfizGhy/TKMTwhtVOgalHwPtV8T32MS9MaH50Cwvz6x6YqRIPdD2WvW0XaqOzTV9p5xdLY0h/ZusU5Lokg==
|
||||
"@typescript-eslint/types@8.35.1", "@typescript-eslint/types@^8.35.1":
|
||||
version "8.35.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.35.1.tgz#4344dcf934495bbf25a9f83a06dd9fe2acf15780"
|
||||
integrity sha512-q/O04vVnKHfrrhNAscndAn1tuQhIkwqnaW+eu5waD5IPts2eX1dgJxgqcPx5BX109/qAz7IG6VrEPTOYKCNfRQ==
|
||||
|
||||
"@typescript-eslint/typescript-estree@8.33.1":
|
||||
version "8.33.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.33.1.tgz#d271beed470bc915b8764e22365d4925c2ea265d"
|
||||
integrity sha512-+s9LYcT8LWjdYWu7IWs7FvUxpQ/DGkdjZeE/GGulHvv8rvYwQvVaUZ6DE+j5x/prADUgSbbCWZ2nPI3usuVeOA==
|
||||
"@typescript-eslint/typescript-estree@8.35.1":
|
||||
version "8.35.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.35.1.tgz#b80e85fcb6bfbcbacb3224b1367f6ca3f03e6183"
|
||||
integrity sha512-Vvpuvj4tBxIka7cPs6Y1uvM7gJgdF5Uu9F+mBJBPY4MhvjrjWGK4H0lVgLJd/8PWZ23FTqsaJaLEkBCFUk8Y9g==
|
||||
dependencies:
|
||||
"@typescript-eslint/project-service" "8.33.1"
|
||||
"@typescript-eslint/tsconfig-utils" "8.33.1"
|
||||
"@typescript-eslint/types" "8.33.1"
|
||||
"@typescript-eslint/visitor-keys" "8.33.1"
|
||||
"@typescript-eslint/project-service" "8.35.1"
|
||||
"@typescript-eslint/tsconfig-utils" "8.35.1"
|
||||
"@typescript-eslint/types" "8.35.1"
|
||||
"@typescript-eslint/visitor-keys" "8.35.1"
|
||||
debug "^4.3.4"
|
||||
fast-glob "^3.3.2"
|
||||
is-glob "^4.0.3"
|
||||
@@ -471,23 +474,23 @@
|
||||
semver "^7.6.0"
|
||||
ts-api-utils "^2.1.0"
|
||||
|
||||
"@typescript-eslint/utils@8.33.1":
|
||||
version "8.33.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.33.1.tgz#ea22f40d3553da090f928cf17907e963643d4b96"
|
||||
integrity sha512-52HaBiEQUaRYqAXpfzWSR2U3gxk92Kw006+xZpElaPMg3C4PgM+A5LqwoQI1f9E5aZ/qlxAZxzm42WX+vn92SQ==
|
||||
"@typescript-eslint/utils@8.35.1":
|
||||
version "8.35.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.35.1.tgz#a9a0ceeb81c9d132f3f75537ad2ca7f6ca266523"
|
||||
integrity sha512-lhnwatFmOFcazAsUm3ZnZFpXSxiwoa1Lj50HphnDe1Et01NF4+hrdXONSUHIcbVu2eFb1bAf+5yjXkGVkXBKAQ==
|
||||
dependencies:
|
||||
"@eslint-community/eslint-utils" "^4.7.0"
|
||||
"@typescript-eslint/scope-manager" "8.33.1"
|
||||
"@typescript-eslint/types" "8.33.1"
|
||||
"@typescript-eslint/typescript-estree" "8.33.1"
|
||||
"@typescript-eslint/scope-manager" "8.35.1"
|
||||
"@typescript-eslint/types" "8.35.1"
|
||||
"@typescript-eslint/typescript-estree" "8.35.1"
|
||||
|
||||
"@typescript-eslint/visitor-keys@8.33.1":
|
||||
version "8.33.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.33.1.tgz#6c6e002c24d13211df3df851767f24dfdb4f42bc"
|
||||
integrity sha512-3i8NrFcZeeDHJ+7ZUuDkGT+UHq+XoFGsymNK2jZCOHcfEzRQ0BdpRtdpSx/Iyf3MHLWIcLS0COuOPibKQboIiQ==
|
||||
"@typescript-eslint/visitor-keys@8.35.1":
|
||||
version "8.35.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.35.1.tgz#aac78ab2265dd11927bc6af3f9c5a021bbc1670a"
|
||||
integrity sha512-VRwixir4zBWCSTP/ljEo091lbpypz57PoeAQ9imjG+vbeof9LplljsL1mos4ccG6H9IjfrVGM359RozUnuFhpw==
|
||||
dependencies:
|
||||
"@typescript-eslint/types" "8.33.1"
|
||||
eslint-visitor-keys "^4.2.0"
|
||||
"@typescript-eslint/types" "8.35.1"
|
||||
eslint-visitor-keys "^4.2.1"
|
||||
|
||||
"@xmldom/xmldom@^0.8.8":
|
||||
version "0.8.10"
|
||||
@@ -509,6 +512,11 @@ acorn@^8.12.0:
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248"
|
||||
integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==
|
||||
|
||||
adm-zip@^0.5.16:
|
||||
version "0.5.16"
|
||||
resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.5.16.tgz#0b5e4c779f07dedea5805cdccb1147071d94a909"
|
||||
integrity sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==
|
||||
|
||||
agent-base@6, agent-base@^6.0.2:
|
||||
version "6.0.2"
|
||||
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
|
||||
@@ -575,6 +583,11 @@ ansi-regex@^5.0.1:
|
||||
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
|
||||
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
|
||||
|
||||
ansi-regex@^6.0.1:
|
||||
version "6.1.0"
|
||||
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654"
|
||||
integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==
|
||||
|
||||
ansi-styles@^4.0.0, ansi-styles@^4.1.0:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
|
||||
@@ -582,6 +595,11 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0:
|
||||
dependencies:
|
||||
color-convert "^2.0.1"
|
||||
|
||||
ansi-styles@^6.1.0:
|
||||
version "6.2.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5"
|
||||
integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
|
||||
|
||||
any-shell-escape@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/any-shell-escape/-/any-shell-escape-0.1.1.tgz#d55ab972244c71a9a5e1ab0879f30bf110806959"
|
||||
@@ -854,11 +872,6 @@ chownr@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
|
||||
integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
|
||||
|
||||
chownr@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/chownr/-/chownr-3.0.0.tgz#9855e64ecd240a9cc4267ce8a4aa5d24a1da15e4"
|
||||
integrity sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==
|
||||
|
||||
chromium-pickle-js@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205"
|
||||
@@ -974,10 +987,10 @@ concat-stream@^2.0.0:
|
||||
readable-stream "^3.0.2"
|
||||
typedarray "^0.0.6"
|
||||
|
||||
concurrently@^9.1.2:
|
||||
version "9.1.2"
|
||||
resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-9.1.2.tgz#22d9109296961eaee773e12bfb1ce9a66bc9836c"
|
||||
integrity sha512-H9MWcoPsYddwbOGM6difjVwVZHl63nwMEwDJG/L7VGtuaJhb12h2caPG2tVPWs7emuYix252iGfqOyrz1GczTQ==
|
||||
concurrently@^9.2.0:
|
||||
version "9.2.0"
|
||||
resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-9.2.0.tgz#233e3892ceb0b5db9fd49e9c8c739737a7b638b5"
|
||||
integrity sha512-IsB/fiXTupmagMW4MNp2lx2cdSN2FfZq78vF90LBB+zZHArbIQZjQtzXCiXnvTxCZSvXanTqFLWBjw2UkLx1SQ==
|
||||
dependencies:
|
||||
chalk "^4.1.2"
|
||||
lodash "^4.17.21"
|
||||
@@ -1186,6 +1199,11 @@ dotenv@^16.4.4, dotenv@^16.4.5:
|
||||
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f"
|
||||
integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==
|
||||
|
||||
eastasianwidth@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
|
||||
integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
|
||||
|
||||
ejs@^3.1.8:
|
||||
version "3.1.10"
|
||||
resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b"
|
||||
@@ -1193,7 +1211,7 @@ ejs@^3.1.8:
|
||||
dependencies:
|
||||
jake "^10.8.5"
|
||||
|
||||
electron-builder@^26.0.14:
|
||||
electron-builder@26.0.14:
|
||||
version "26.0.14"
|
||||
resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-26.0.14.tgz#8927c6da42a69425d15e08f351e944ea0e7866da"
|
||||
integrity sha512-YBxpWLMGj0oS7fbS3LVingeZqFunU0F8s+uB9QTd5+wN4qgrf/rSGRkqoImbWg2+F2yHq11wmaA/Xr9xzvgQ0w==
|
||||
@@ -1209,10 +1227,10 @@ electron-builder@^26.0.14:
|
||||
simple-update-notifier "2.0.0"
|
||||
yargs "^17.6.2"
|
||||
|
||||
electron-log@^5.4.0:
|
||||
version "5.4.0"
|
||||
resolved "https://registry.yarnpkg.com/electron-log/-/electron-log-5.4.0.tgz#3180bf5194b2e2efacb62ec1392f8150faf4de6b"
|
||||
integrity sha512-AXI5OVppskrWxEAmCxuv8ovX+s2Br39CpCAgkGMNHQtjYT3IiVbSQTncEjFVGPgoH35ZygRm/mvUMBDWwhRxgg==
|
||||
electron-log@^5.4.1:
|
||||
version "5.4.1"
|
||||
resolved "https://registry.yarnpkg.com/electron-log/-/electron-log-5.4.1.tgz#700ddc6ef4b06c13a983468580ba7a7e579129d4"
|
||||
integrity sha512-QvisA18Z++8E3Th0zmhUelys9dEv7aIeXJlbFw3UrxCc8H9qSRW0j8/ooTef/EtHui8tVmbKSL+EIQzP9GoRLg==
|
||||
|
||||
electron-publish@26.0.13:
|
||||
version "26.0.13"
|
||||
@@ -1236,10 +1254,10 @@ electron-store@^8.2.0:
|
||||
conf "^10.2.0"
|
||||
type-fest "^2.17.0"
|
||||
|
||||
electron-updater@^6.6.3:
|
||||
version "6.6.3"
|
||||
resolved "https://registry.yarnpkg.com/electron-updater/-/electron-updater-6.6.3.tgz#a1f53671ffbb08a475d495d48f0c0d971e665d5d"
|
||||
integrity sha512-i448/SwMtqxy5wqAcXScnWjiFxZp+hmWA2jZCmojcdfodEGhi/DWTdRP01mE3lCILb8hmdE28SBaHf1oQW3+kw==
|
||||
electron-updater@^6.6.5:
|
||||
version "6.6.5"
|
||||
resolved "https://registry.yarnpkg.com/electron-updater/-/electron-updater-6.6.5.tgz#6614daa2f737c294471eee7ce7b61deda0d5543a"
|
||||
integrity sha512-jnk38WfByl2Pb0cje02xls/pJkvkq3AQZI7usDCLriU23adkerLTkRrugbCPuUxUOa79nY1g/rokHPWHZFBKyA==
|
||||
dependencies:
|
||||
builder-util-runtime "9.3.2"
|
||||
fs-extra "^10.1.0"
|
||||
@@ -1250,10 +1268,10 @@ electron-updater@^6.6.3:
|
||||
semver "^7.6.3"
|
||||
tiny-typed-emitter "^2.1.0"
|
||||
|
||||
electron@^36.4.0:
|
||||
version "36.4.0"
|
||||
resolved "https://registry.yarnpkg.com/electron/-/electron-36.4.0.tgz#9463bf5fa7565ae7be3a274f7f6a46359bcfe74d"
|
||||
integrity sha512-LLOOZEuW5oqvnjC7HBQhIqjIIJAZCIFjQxltQGLfEC7XFsBoZgQ3u3iFj+Kzw68Xj97u1n57Jdt7P98qLvUibQ==
|
||||
electron@^37.1.0:
|
||||
version "37.1.0"
|
||||
resolved "https://registry.yarnpkg.com/electron/-/electron-37.1.0.tgz#6d6d1891f8add5d2d44007e2ee5d4542140fc4b4"
|
||||
integrity sha512-Fcr3yfAw4oU392waVZSlrFUQx4P+h/k31+PRgkBY9tFx9E/zxzdPQQj0achZlG1HRDusw3ooQB+OXb9PvufdzA==
|
||||
dependencies:
|
||||
"@electron/get" "^2.0.0"
|
||||
"@types/node" "^22.7.7"
|
||||
@@ -1264,6 +1282,11 @@ emoji-regex@^8.0.0:
|
||||
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
|
||||
integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
|
||||
|
||||
emoji-regex@^9.2.2:
|
||||
version "9.2.2"
|
||||
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
|
||||
integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
|
||||
|
||||
encoding@^0.1.13:
|
||||
version "0.1.13"
|
||||
resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9"
|
||||
@@ -1328,11 +1351,16 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.3:
|
||||
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
|
||||
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
|
||||
|
||||
eslint-visitor-keys@^4.0.0, eslint-visitor-keys@^4.2.0:
|
||||
eslint-visitor-keys@^4.0.0:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45"
|
||||
integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==
|
||||
|
||||
eslint-visitor-keys@^4.2.1:
|
||||
version "4.2.1"
|
||||
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz#4cfea60fe7dd0ad8e816e1ed026c1d5251b512c1"
|
||||
integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==
|
||||
|
||||
eslint@^9:
|
||||
version "9.9.1"
|
||||
resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.9.1.tgz#147ac9305d56696fb84cf5bdecafd6517ddc77ec"
|
||||
@@ -1669,7 +1697,7 @@ glob-parent@^6.0.2:
|
||||
dependencies:
|
||||
is-glob "^4.0.3"
|
||||
|
||||
glob@^10.3.12, glob@^10.3.7:
|
||||
glob@^10.3.12:
|
||||
version "10.4.5"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956"
|
||||
integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==
|
||||
@@ -2024,12 +2052,12 @@ isexe@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
|
||||
integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
|
||||
|
||||
jackspeak@2.1.1, jackspeak@^3.1.2:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.1.1.tgz#2a42db4cfbb7e55433c28b6f75d8b796af9669cd"
|
||||
integrity sha512-juf9stUEwUaILepraGOWIJTLwg48bUnBmRqd2ln2Os1sW987zeoj/hzhbvRB95oMuS2ZTpjULmdwHNX4rzZIZw==
|
||||
jackspeak@^3.1.2:
|
||||
version "3.4.3"
|
||||
resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a"
|
||||
integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==
|
||||
dependencies:
|
||||
cliui "^8.0.1"
|
||||
"@isaacs/cliui" "^8.0.2"
|
||||
optionalDependencies:
|
||||
"@pkgjs/parseargs" "^0.11.0"
|
||||
|
||||
@@ -2276,11 +2304,11 @@ mimic-response@^3.1.0:
|
||||
integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==
|
||||
|
||||
minimatch@^10.0.0:
|
||||
version "10.0.1"
|
||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.0.1.tgz#ce0521856b453c86e25f2c4c0d03e6ff7ddc440b"
|
||||
integrity sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==
|
||||
version "10.0.3"
|
||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.0.3.tgz#cf7a0314a16c4d9ab73a7730a0e8e3c3502d47aa"
|
||||
integrity sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==
|
||||
dependencies:
|
||||
brace-expansion "^2.0.1"
|
||||
"@isaacs/brace-expansion" "^5.0.0"
|
||||
|
||||
minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
|
||||
version "3.1.2"
|
||||
@@ -2359,7 +2387,7 @@ minipass@^5.0.0:
|
||||
resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d"
|
||||
integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==
|
||||
|
||||
"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.4, minipass@^7.1.2:
|
||||
"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2:
|
||||
version "7.1.2"
|
||||
resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
|
||||
integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
|
||||
@@ -2372,14 +2400,6 @@ minizlib@^2.1.1, minizlib@^2.1.2:
|
||||
minipass "^3.0.0"
|
||||
yallist "^4.0.0"
|
||||
|
||||
minizlib@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-3.0.1.tgz#46d5329d1eb3c83924eff1d3b858ca0a31581012"
|
||||
integrity sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==
|
||||
dependencies:
|
||||
minipass "^7.0.4"
|
||||
rimraf "^5.0.5"
|
||||
|
||||
mkdirp@^0.5.1:
|
||||
version "0.5.6"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
|
||||
@@ -2392,11 +2412,6 @@ mkdirp@^1.0.3, mkdirp@^1.0.4:
|
||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
|
||||
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
|
||||
|
||||
mkdirp@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50"
|
||||
integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==
|
||||
|
||||
ms@2.1.2:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
|
||||
@@ -2489,18 +2504,19 @@ onetime@^5.1.0, onetime@^5.1.2:
|
||||
dependencies:
|
||||
mimic-fn "^2.1.0"
|
||||
|
||||
onnxruntime-common@1.20.1:
|
||||
version "1.20.1"
|
||||
resolved "https://registry.yarnpkg.com/onnxruntime-common/-/onnxruntime-common-1.20.1.tgz#b42e317d4d6728745b9e8089617c8cd938d312dc"
|
||||
integrity sha512-YiU0s0IzYYC+gWvqD1HzLc46Du1sXpSiwzKb63PACIJr6LfL27VsXSXQvt68EzD3V0D5Bc0vyJTjmMxp0ylQiw==
|
||||
onnxruntime-common@1.22.0:
|
||||
version "1.22.0"
|
||||
resolved "https://registry.yarnpkg.com/onnxruntime-common/-/onnxruntime-common-1.22.0.tgz#27d7d06ebb6c7d3dd773dfa21b6fa2ae86f64983"
|
||||
integrity sha512-vcuaNWgtF2dGQu/EP5P8UI5rEPEYqXG2sPPe5j9lg2TY/biJF8eWklTMwlDO08iuXq48xJo0awqIpK5mPG+IxA==
|
||||
|
||||
onnxruntime-node@^1.20.1:
|
||||
version "1.20.1"
|
||||
resolved "https://registry.yarnpkg.com/onnxruntime-node/-/onnxruntime-node-1.20.1.tgz#a5ba0bd160aeccdb4b7d36fbc2f6a97bde1f7843"
|
||||
integrity sha512-di/I4HDXRw+FLgq+TyHmQEDd3cEp9iFFZm0r4uJ1Wd7b/WE1VXtKWo8yemex347c6GNF/3Pv86ZfPhIWxORr0w==
|
||||
onnxruntime-node@1.22.0-rev:
|
||||
version "1.22.0-rev"
|
||||
resolved "https://registry.yarnpkg.com/onnxruntime-node/-/onnxruntime-node-1.22.0-rev.tgz#068c85adb6b938cbaaef2ffba4b35fcac3e683f4"
|
||||
integrity sha512-9vh50/mnwauFUex0NYyyLf9pmRp8q6DVMG8K+xtoXv68SSB9bESa1bEbWLqfUncgB3XucQaOV+wfMPcqANMYhQ==
|
||||
dependencies:
|
||||
onnxruntime-common "1.20.1"
|
||||
tar "^7.0.1"
|
||||
adm-zip "^0.5.16"
|
||||
global-agent "^3.0.0"
|
||||
onnxruntime-common "1.22.0"
|
||||
|
||||
optionator@^0.9.3:
|
||||
version "0.9.4"
|
||||
@@ -2680,18 +2696,18 @@ prettier-plugin-organize-imports@^4.1.0:
|
||||
resolved "https://registry.yarnpkg.com/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-4.1.0.tgz#f3d3764046a8e7ba6491431158b9be6ffd83b90f"
|
||||
integrity sha512-5aWRdCgv645xaa58X8lOxzZoiHAldAPChljr/MT0crXVOWTZ+Svl4hIWlz+niYSlO6ikE5UXkN1JrRvIP2ut0A==
|
||||
|
||||
prettier-plugin-packagejson@^2.5.15:
|
||||
version "2.5.15"
|
||||
resolved "https://registry.yarnpkg.com/prettier-plugin-packagejson/-/prettier-plugin-packagejson-2.5.15.tgz#7ea880d4bb1681b5331ea7044efd3d653776f469"
|
||||
integrity sha512-2QSx6y4IT6LTwXtCvXAopENW5IP/aujC8fobEM2pDbs0IGkiVjW/ipPuYAHuXigbNe64aGWF7vIetukuzM3CBw==
|
||||
prettier-plugin-packagejson@^2.5.17:
|
||||
version "2.5.17"
|
||||
resolved "https://registry.yarnpkg.com/prettier-plugin-packagejson/-/prettier-plugin-packagejson-2.5.17.tgz#98df28819bb5071c9330eec31ff029acf538f96e"
|
||||
integrity sha512-1WYvhTix+4EMYZQYSjAxb6+KTCULINuHUTBcxYa2ipoUS9Y2zJVjE3kuZ5I7ZWIFqyK8xpwYIunXqN5eiT7Hew==
|
||||
dependencies:
|
||||
sort-package-json "3.2.1"
|
||||
sort-package-json "3.3.1"
|
||||
synckit "0.11.8"
|
||||
|
||||
prettier@3.5.3:
|
||||
version "3.5.3"
|
||||
resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.5.3.tgz#4fc2ce0d657e7a02e602549f053b239cb7dfe1b5"
|
||||
integrity sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==
|
||||
prettier@3.6.2:
|
||||
version "3.6.2"
|
||||
resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.6.2.tgz#ccda02a1003ebbb2bfda6f83a074978f608b9393"
|
||||
integrity sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==
|
||||
|
||||
proc-log@^2.0.1:
|
||||
version "2.0.1"
|
||||
@@ -2835,13 +2851,6 @@ rimraf@^3.0.2:
|
||||
dependencies:
|
||||
glob "^7.1.3"
|
||||
|
||||
rimraf@^5.0.5:
|
||||
version "5.0.10"
|
||||
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.10.tgz#23b9843d3dc92db71f96e1a2ce92e39fd2a8221c"
|
||||
integrity sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==
|
||||
dependencies:
|
||||
glob "^10.3.7"
|
||||
|
||||
roarr@^2.15.3:
|
||||
version "2.15.4"
|
||||
resolved "https://registry.yarnpkg.com/roarr/-/roarr-2.15.4.tgz#f5fe795b7b838ccfe35dc608e0282b9eba2e7afd"
|
||||
@@ -3022,10 +3031,10 @@ sort-object-keys@^1.1.3:
|
||||
resolved "https://registry.yarnpkg.com/sort-object-keys/-/sort-object-keys-1.1.3.tgz#bff833fe85cab147b34742e45863453c1e190b45"
|
||||
integrity sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==
|
||||
|
||||
sort-package-json@3.2.1:
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/sort-package-json/-/sort-package-json-3.2.1.tgz#889f3bdf43ceeff5fa4278a7c53ae5b1520d287e"
|
||||
integrity sha512-rTfRdb20vuoAn7LDlEtCqOkYfl2X+Qze6cLbNOzcDpbmKEhJI30tTN44d5shbKJnXsvz24QQhlCm81Bag7EOKg==
|
||||
sort-package-json@3.3.1:
|
||||
version "3.3.1"
|
||||
resolved "https://registry.yarnpkg.com/sort-package-json/-/sort-package-json-3.3.1.tgz#c31c0b4cd970b7fde6b1d0197f8b768584e2e65c"
|
||||
integrity sha512-awjhQR2Iy5UN3NuguAK5+RezcEuUg9Ra4O8y2Aj+DlJa7MywyHaipAPf9bu4qqFj0hsYHHoT9sS3aV7Ucu728g==
|
||||
dependencies:
|
||||
detect-indent "^7.0.1"
|
||||
detect-newline "^4.0.1"
|
||||
@@ -3065,6 +3074,15 @@ stat-mode@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-1.0.0.tgz#68b55cb61ea639ff57136f36b216a291800d1465"
|
||||
integrity sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==
|
||||
|
||||
"string-width-cjs@npm:string-width@^4.2.0":
|
||||
version "4.2.3"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
|
||||
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
|
||||
dependencies:
|
||||
emoji-regex "^8.0.0"
|
||||
is-fullwidth-code-point "^3.0.0"
|
||||
strip-ansi "^6.0.1"
|
||||
|
||||
string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
|
||||
version "4.2.3"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
|
||||
@@ -3074,6 +3092,15 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
|
||||
is-fullwidth-code-point "^3.0.0"
|
||||
strip-ansi "^6.0.1"
|
||||
|
||||
string-width@^5.0.1, string-width@^5.1.2:
|
||||
version "5.1.2"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794"
|
||||
integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==
|
||||
dependencies:
|
||||
eastasianwidth "^0.2.0"
|
||||
emoji-regex "^9.2.2"
|
||||
strip-ansi "^7.0.1"
|
||||
|
||||
string_decoder@^1.1.1:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
|
||||
@@ -3081,6 +3108,13 @@ string_decoder@^1.1.1:
|
||||
dependencies:
|
||||
safe-buffer "~5.2.0"
|
||||
|
||||
"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
|
||||
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
|
||||
dependencies:
|
||||
ansi-regex "^5.0.1"
|
||||
|
||||
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
|
||||
@@ -3088,6 +3122,13 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1:
|
||||
dependencies:
|
||||
ansi-regex "^5.0.1"
|
||||
|
||||
strip-ansi@^7.0.1:
|
||||
version "7.1.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
|
||||
integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==
|
||||
dependencies:
|
||||
ansi-regex "^6.0.1"
|
||||
|
||||
strip-eof@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
|
||||
@@ -3143,18 +3184,6 @@ tar@^6.0.5, tar@^6.1.11, tar@^6.1.12, tar@^6.2.1:
|
||||
mkdirp "^1.0.3"
|
||||
yallist "^4.0.0"
|
||||
|
||||
tar@^7.0.1:
|
||||
version "7.4.3"
|
||||
resolved "https://registry.yarnpkg.com/tar/-/tar-7.4.3.tgz#88bbe9286a3fcd900e94592cda7a22b192e80571"
|
||||
integrity sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==
|
||||
dependencies:
|
||||
"@isaacs/fs-minipass" "^4.0.0"
|
||||
chownr "^3.0.0"
|
||||
minipass "^7.1.2"
|
||||
minizlib "^3.0.1"
|
||||
mkdirp "^3.0.1"
|
||||
yallist "^5.0.0"
|
||||
|
||||
temp-file@^3.4.0:
|
||||
version "3.4.0"
|
||||
resolved "https://registry.yarnpkg.com/temp-file/-/temp-file-3.4.0.tgz#766ea28911c683996c248ef1a20eea04d51652c7"
|
||||
@@ -3251,14 +3280,14 @@ typedarray@^0.0.6:
|
||||
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
|
||||
integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==
|
||||
|
||||
typescript-eslint@^8.33.1:
|
||||
version "8.33.1"
|
||||
resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.33.1.tgz#d2d59c9b24afe1f903a855b02145802e4ae930ff"
|
||||
integrity sha512-AgRnV4sKkWOiZ0Kjbnf5ytTJXMUZQ0qhSVdQtDNYLPLnjsATEYhaO94GlRQwi4t4gO8FfjM6NnikHeKjUm8D7A==
|
||||
typescript-eslint@^8.35.1:
|
||||
version "8.35.1"
|
||||
resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.35.1.tgz#4ddeda5c5777a7bd86516280d8099ada06055f2f"
|
||||
integrity sha512-xslJjFzhOmHYQzSB/QTeASAHbjmxOGEP6Coh93TXmUBFQoJ1VU35UHIDmG06Jd6taf3wqqC1ntBnCMeymy5Ovw==
|
||||
dependencies:
|
||||
"@typescript-eslint/eslint-plugin" "8.33.1"
|
||||
"@typescript-eslint/parser" "8.33.1"
|
||||
"@typescript-eslint/utils" "8.33.1"
|
||||
"@typescript-eslint/eslint-plugin" "8.35.1"
|
||||
"@typescript-eslint/parser" "8.35.1"
|
||||
"@typescript-eslint/utils" "8.35.1"
|
||||
|
||||
typescript@^5.4.3, typescript@^5.8.3:
|
||||
version "5.8.3"
|
||||
@@ -3356,6 +3385,15 @@ word-wrap@^1.2.5:
|
||||
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34"
|
||||
integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
|
||||
|
||||
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
|
||||
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
|
||||
dependencies:
|
||||
ansi-styles "^4.0.0"
|
||||
string-width "^4.1.0"
|
||||
strip-ansi "^6.0.0"
|
||||
|
||||
wrap-ansi@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
|
||||
@@ -3365,6 +3403,15 @@ wrap-ansi@^7.0.0:
|
||||
string-width "^4.1.0"
|
||||
strip-ansi "^6.0.0"
|
||||
|
||||
wrap-ansi@^8.1.0:
|
||||
version "8.1.0"
|
||||
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"
|
||||
integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==
|
||||
dependencies:
|
||||
ansi-styles "^6.1.0"
|
||||
string-width "^5.0.1"
|
||||
strip-ansi "^7.0.1"
|
||||
|
||||
wrappy@1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
||||
@@ -3385,11 +3432,6 @@ yallist@^4.0.0:
|
||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
|
||||
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
|
||||
|
||||
yallist@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-5.0.0.tgz#00e2de443639ed0d78fd87de0d27469fbcffb533"
|
||||
integrity sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==
|
||||
|
||||
yargs-parser@^21.1.1:
|
||||
version "21.1.1"
|
||||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
|
||||
@@ -3421,7 +3463,7 @@ yocto-queue@^0.1.0:
|
||||
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
|
||||
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
|
||||
|
||||
zod@^3.25.51:
|
||||
version "3.25.51"
|
||||
resolved "https://registry.yarnpkg.com/zod/-/zod-3.25.51.tgz#aa2cf648e54f6f060f139cf77b694819f63c9f3a"
|
||||
integrity sha512-TQSnBldh+XSGL+opiSIq0575wvDPqu09AqWe1F7JhUMKY+M91/aGlK4MhpVNO7MgYfHcVCB1ffwAUTJzllKJqg==
|
||||
zod@^3.25.67:
|
||||
version "3.25.67"
|
||||
resolved "https://registry.yarnpkg.com/zod/-/zod-3.25.67.tgz#62987e4078e2ab0f63b491ef0c4f33df24236da8"
|
||||
integrity sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==
|
||||
|
||||
@@ -8,13 +8,6 @@ export default defineConfig({
|
||||
head: [["link", { rel: "icon", type: "image/png", href: "/favicon.png" }]],
|
||||
cleanUrls: true,
|
||||
ignoreDeadLinks: "localhostLinks",
|
||||
vite: {
|
||||
build: {
|
||||
rollupOptions: {
|
||||
external: ["client-museum-s3.png"], // Added to handle static asset import
|
||||
},
|
||||
},
|
||||
},
|
||||
themeConfig: {
|
||||
// We use the default theme (with some CSS color overrides). This
|
||||
// themeConfig block can be used to further customize the default theme.
|
||||
|
||||
@@ -2,27 +2,6 @@
|
||||
// appropriate place here.
|
||||
|
||||
export const sidebar = [
|
||||
{
|
||||
text: "Overview",
|
||||
items: [
|
||||
{
|
||||
text: "Introduction",
|
||||
link: "/overview/",
|
||||
},
|
||||
{
|
||||
text: "Community",
|
||||
link: "/overview/community",
|
||||
},
|
||||
{
|
||||
text: "Contributing",
|
||||
link: "/overview/contribute",
|
||||
},
|
||||
{
|
||||
text: "Help",
|
||||
link: "/overview/help",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
text: "Photos",
|
||||
items: [
|
||||
@@ -73,6 +52,10 @@ export const sidebar = [
|
||||
link: "/photos/features/machine-learning",
|
||||
},
|
||||
{ text: "Map", link: "/photos/features/map" },
|
||||
{
|
||||
text: "Notifications",
|
||||
link: "/photos/features/notifications",
|
||||
},
|
||||
{
|
||||
text: "Passkeys",
|
||||
link: "/photos/features/passkeys",
|
||||
@@ -335,7 +318,7 @@ export const sidebar = [
|
||||
items: [
|
||||
{
|
||||
text: "Ente via Tailscale",
|
||||
link: "/self-hosting/guides/Tailscale",
|
||||
link: "/self-hosting/guides/tailscale",
|
||||
},
|
||||
{
|
||||
text: "Ente with External S3",
|
||||
|
||||
@@ -12,7 +12,7 @@ This page outlines the key features available in Ente Auth.
|
||||
Ente Auth supports the icon pack provided by
|
||||
[simple-icons](https://github.com/simple-icons/simple-icons). If an icon you
|
||||
need is missing, please refer to the
|
||||
[docs/adding-icons](https://github.com/ente-io/ente/blob/main/auth/docs/adding-icons.md)
|
||||
[docs/adding-icons](https://github.com/ente-io/ente/blob/main/mobile/apps/auth/docs/adding-icons.md)
|
||||
guide for instructions on how to contribute.
|
||||
|
||||
### Search
|
||||
@@ -136,4 +136,4 @@ Easily add or share entries using QR codes:
|
||||
right-click (desktop) a code and select "QR". This allows you to easily share
|
||||
the complete entry (including the secret) with others by letting them scan the
|
||||
displayed QR code. This can also be used to easily add the same entry to
|
||||
another authenticatior app or service.
|
||||
another authenticator app or service.
|
||||
|
||||
@@ -10,4 +10,4 @@ Ende-zu-Ende-verschlüsselte Authenticator-App für jedermann. Wir sind froh, da
|
||||
du hier bist!
|
||||
|
||||
**Please note that this German translation is currently just a placeholder.**
|
||||
Know German? [Help us fill this in!](/overview/contribute).
|
||||
Know German? [Help us fill this in!](/#contribute).
|
||||
|
||||
@@ -1,15 +1,82 @@
|
||||
---
|
||||
title: Home
|
||||
description: >
|
||||
Introduction to Ente: Products, Community and Support
|
||||
---
|
||||
|
||||
# Welcome!
|
||||
|
||||
This site contains documentation and help for Ente Photos and Ente Auth. It
|
||||
describes various features, and also offers various troubleshooting suggestions.
|
||||
{width=50% style="margin: 0 auto"}
|
||||
|
||||
Use the **sidebar** menu to navigate to information about the product (Photos or
|
||||
Auth) you'd like to know more about. Or use the **search** at the top to try and
|
||||
jump directly to page that might contain the information you need.
|
||||
## Introduction
|
||||
|
||||
To know more about Ente, see [overview](/overview/) or visit our website
|
||||
[ente.io](https://ente.io).
|
||||
Ente (pronounced en-_tay_) is a end-to-end encrypted platform for privately,
|
||||
reliably, and securely storing your data on the cloud, over which 2 applications
|
||||
have been developed and made available for mobile, web and desktop, namely:
|
||||
|
||||
- **Ente Photos** - An alternative to Google Photos and Apple Photos
|
||||
- **Ente Auth** - A free 2FA alternative to Authy
|
||||
|
||||
## History
|
||||
|
||||
Ente was the founded by Vishnu Mohandas (he's also Ente's CEO) in response to
|
||||
privacy concerns with major tech companies. The underlying motivation was the
|
||||
understanding that big tech had no incentive to fix their act, but with
|
||||
end-to-end encrypted cross platform apps, there was a way for people to take
|
||||
back control over their own data without sacrificing on features.
|
||||
|
||||
### Origin of the name
|
||||
|
||||
In Malayalam, Vishnu's native language, "ente" means "mine", thus "Ente Photos"
|
||||
literally means "my photos".
|
||||
|
||||
But one day, he discovered that "ente" means "duck" in German. This unexpected
|
||||
connection sealed the deal after looking for alternative names and led to the
|
||||
adoption of ["Ducky"](https://ente.io/blog/ducky/), representing the playfulness
|
||||
and friendly nature of the community and team.
|
||||
|
||||
## Getting Started
|
||||
|
||||
We recommend reading the documentation for [Ente Photos](/photos/) or
|
||||
[Ente Auth](/auth/) to get started with installation on the desired platform,
|
||||
explore available features and usage.
|
||||
|
||||
If you are looking to self-host Ente, we recommend you to read the
|
||||
[official documentation](/self-hosting/) for updated information on getting
|
||||
started, installation, administration and maintenance.
|
||||
|
||||
## Contributing
|
||||
|
||||
There are many ways to support Ente and you don't have to be a programmer for
|
||||
that. You can spread the word, give feedback, report bugs, help us with
|
||||
translations, contribute documentation and community guides and more.
|
||||
|
||||
To suggest new features and/or offer your perspective on how we should design
|
||||
(planned and upcoming features), use our
|
||||
[GitHub discussions](https://github.com/ente-io/ente/discussions)
|
||||
|
||||
You can find our contribution guidelines
|
||||
[here](https://github.com/ente-io/ente/blob/main/CONTRIBUTING.md).
|
||||
|
||||
You can always engage with our community and team to hang out, answer queries
|
||||
and stay updated:
|
||||
|
||||
- Chat: [Discord](https://ente.io/discord)
|
||||
- Discussions: [GitHub](https://github.com/ente-io/ente/discussions)
|
||||
- Socials:
|
||||
- Twitter: [enteio](https://twitter.com/enteio)
|
||||
- Mastodon: [@ente@fosstodon.org](https://fosstodon.org/@ente)
|
||||
- Bluesky: [ente.io](https://bsky.app/profile/ente.io)
|
||||
- Instagram: [ente.app](https://www.instagram.com/ente.app)
|
||||
- Website:
|
||||
- [Blog](https://ente.io/blog)
|
||||
- [RSS](https://ente.io/blog/rss.xml)
|
||||
|
||||
## Getting Help
|
||||
|
||||
If you encounter any issues with any of the products that's not answered by our
|
||||
documentation, please reach out to our team by sending an email to
|
||||
[support@ente.io](mailto:support@ente.io)
|
||||
|
||||
For community support, please post your queries on
|
||||
[Discord](https://discord.gg/z2YVKkycX3)
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
---
|
||||
title: Community
|
||||
description: >
|
||||
Information regarding Ente's community channels
|
||||
---
|
||||
|
||||
# Community
|
||||
|
||||
We are building Ente in the open with our community on
|
||||
[GitHub](https://github.com/ente-io/ente) and [Discord](https://ente.io/discord)
|
||||
|
||||
## Blog
|
||||
|
||||
To stay up to date with new product launches, and behind the scenes details of
|
||||
how we're building Ente, you can read our [blog](https://ente.io/blog) (or
|
||||
subscribe to it via [RSS](https://ente.io/blog/rss.xml))
|
||||
|
||||
## Socials
|
||||
|
||||
You can also follow us on [Twitter](https://twitter.com/enteio) or toot to us on
|
||||
[Mastodon](https://mstdn.social/@ente)
|
||||
@@ -1,29 +0,0 @@
|
||||
---
|
||||
title: Contribute
|
||||
description: Details about how to contribute to Ente
|
||||
---
|
||||
|
||||
# Contributing
|
||||
|
||||
There are many ways to contribute to Ente. By spreading the word, engaging with
|
||||
our community, helping us with translations or documentation.
|
||||
|
||||
You can find our contribution guidelines
|
||||
[here](https://github.com/ente-io/ente/blob/main/CONTRIBUTING.md).
|
||||
|
||||
## Suggesting features
|
||||
|
||||
To suggest new features and/or offer your perspective on how we should design
|
||||
(planned and upcoming features), use our
|
||||
[GitHub discussions](https://github.com/ente-io/ente/discussions)
|
||||
|
||||
## Documentation
|
||||
|
||||
To contribute to these docs, you can use the "Edit this page" button at the
|
||||
bottom of each page. This will allow you to directly edit the markdown file that
|
||||
is used to generate this documentation and open a quick pull request directly
|
||||
from GitHub's UI.
|
||||
|
||||
If you're more comfortable in contributing with your text editor, see the
|
||||
`docs/` folder of our GitHub repository,
|
||||
[github.com/ente-io/ente](https://github.com/ente-io/ente).
|
||||
@@ -1,13 +0,0 @@
|
||||
---
|
||||
title: Help
|
||||
description: Get help from Ente via customer support and community
|
||||
---
|
||||
|
||||
# Help
|
||||
|
||||
If you encounter any issues with any of the products that's not answered by our
|
||||
[docs](/), please reach out to our team by sending an email to
|
||||
[support@ente.io](mailto:support@ente.io)
|
||||
|
||||
For community support, please post your queries on
|
||||
[Discord](https://discord.gg/z2YVKkycX3)
|
||||
@@ -1,50 +0,0 @@
|
||||
---
|
||||
title: Introduction
|
||||
description: >
|
||||
An overview of Ente: the company, and the people behind it, and the products
|
||||
that we make.
|
||||
---
|
||||
|
||||
# About
|
||||
|
||||
Ente (pronounced en-_tay_. Like ca<i>fe</i>) is a end-to-end encrypted platform
|
||||
for privately, reliably, and securely storing your data on the cloud. On top of
|
||||
this platform, Ente offers two products:
|
||||
|
||||
- **Ente Photos** - An alternative to Google Photos and Apple Photos
|
||||
|
||||
- **Ente Auth** - A free 2FA alternative to Authy
|
||||
|
||||
Both these apps are available for all desktop (Linux, Mac, Windows) and mobile
|
||||
(Android and iOS) platforms. They also work directly in your web browser without
|
||||
you needing to install anything.
|
||||
|
||||
More products are in the pipeline.
|
||||
|
||||
## History
|
||||
|
||||
Ente was the founded by Vishnu Mohandas (he's also Ente's CEO) in response to
|
||||
privacy concerns with major tech companies. The underlying motivation was the
|
||||
understanding that big tech had no incentive to fix their act, but with
|
||||
end-to-end encrypted cross platform apps, there was a way for people to take
|
||||
back control over their own data without sacrificing on features.
|
||||
|
||||
### What does Ente mean?
|
||||
|
||||
In Malayalam, Vishnu's native language, "ente" means "mine". Thus "Ente Photos"
|
||||
has the literal meaning "my photos".
|
||||
|
||||
This was a good name, but still Vishnu looked around for better ones. But one
|
||||
day, he discovered that "ente" means "duck" in German. This unexpected
|
||||
connection sealed the deal. We should ask him why he likes ducks so much, but
|
||||
apparently he does, so this dual meaning ("mine" / "duck") led him to finalize
|
||||
the name, and also led to the adoption of "Ducky", Ente's mascot:
|
||||
|
||||
<div align="center">
|
||||
|
||||
{width=200px}
|
||||
|
||||
</div>
|
||||
|
||||
For the full origin story of Ducky you can check out
|
||||
[this blog post](https://ente.io/blog/ducky/).
|
||||
@@ -47,8 +47,20 @@ device.
|
||||
The indexes are synced across all your devices automatically using the same
|
||||
end-to-end encrypted security that we use for syncing your photos.
|
||||
|
||||
Note that the desktop app does not currently support modifying the face
|
||||
groupings, that is only supported by the mobile app.
|
||||
---
|
||||
|
||||
#### Local indexing on mobile
|
||||
|
||||
In general the machine learning is optimized to work well on most mobile device.
|
||||
However, devices with low RAM (4-6GB) and large photo libraries might struggle
|
||||
to complete the indexing without affecting performance of the app. In such case,
|
||||
you might want to disable local indexing and let the desktop run it instead.
|
||||
|
||||
You can disable local indexing from the settings, under
|
||||
`General > Advanced > Machine learning > Configuration`. This way, you can
|
||||
continue to use the ML features without your phone performance taking any hit.
|
||||
|
||||
---
|
||||
|
||||
For more information on how to use Machine Learning for face recognition please
|
||||
check out [the FAQ](../faq/face-recognition).
|
||||
|
||||
33
docs/docs/photos/features/notifications.md
Normal file
@@ -0,0 +1,33 @@
|
||||
---
|
||||
title: Notifications
|
||||
description: Details about notifications in Ente
|
||||
---
|
||||
|
||||
# Notifications
|
||||
|
||||
The Ente app can send notifications to notify you of an update, or just to
|
||||
remind you of some sweet or helpful memory at the right time.
|
||||
|
||||
## New shared photos
|
||||
|
||||
Receive notifications when someone adds a photo to a shared album that you're a
|
||||
part of.
|
||||
|
||||
## "On this day" memories
|
||||
|
||||
Receive reminders about memories from this day in previous years. These
|
||||
reminders will only be shown if there are enough photos taken across previous
|
||||
years of the specific day.
|
||||
|
||||
## Birthday notifications
|
||||
|
||||
Receive reminders when it's someone's birthday. Tapping on the notification will
|
||||
take you to photos of the birthday person. This requires you to first add a
|
||||
birthday to a person, and will only be shown if there are enough photos of that
|
||||
person.
|
||||
|
||||
## Notification permission
|
||||
|
||||
By default all notification categories are enabled if you give notification
|
||||
permission. You can disable all of the above notification categories from
|
||||
`Settings > Notifications`. Notifications currently only work on mobile.
|
||||
@@ -66,5 +66,4 @@ If you run into any issues during your data export, please reach out to
|
||||
|
||||
Note that we also provide a
|
||||
[CLI tool](https://github.com/ente-io/ente/tree/main/cli#export) to export your
|
||||
data. You can find more information about the export in the
|
||||
[export FAQ](/photos/faq/export).
|
||||
data.
|
||||
|
||||
|
Before Width: | Height: | Size: 87 KiB After Width: | Height: | Size: 87 KiB |
@@ -197,7 +197,7 @@ ports). The web server of choice in this guide is
|
||||
[Caddy](https://caddyserver.com) because with caddy you don't have to manually
|
||||
configure/setup SSL ceritifcates as caddy will take care of that.
|
||||
|
||||
```sh
|
||||
```groovy
|
||||
photos.yourdomain.com {
|
||||
reverse_proxy http://localhost:3001
|
||||
# for logging
|
||||
@@ -219,6 +219,7 @@ Next, start the caddy server :).
|
||||
sudo systemctl enable caddy
|
||||
|
||||
sudo systemctl daemon-reload
|
||||
|
||||
sudo systemctl start caddy
|
||||
```
|
||||
|
||||
|
||||
@@ -18,13 +18,6 @@ Before getting start keep the following NOTE in mind.
|
||||
> and uploading will not work. This is not necessary for those who are not
|
||||
> behing CGNAT. This guide also work on docker rootless and normal.
|
||||
|
||||
> [!CAUTION] Remember that current docker update 28.0.0 has some bug and cannot
|
||||
> connect to external network. Make sure to install docker-ce 27.5.0,
|
||||
> docker-ce-rootless-extras 27.5.0 and docker-ce-cli 27.5.0. Hopefully docker
|
||||
> 28.1.0 will resolve this issue in next week. Refrence links are
|
||||
> [Moby Github Repo Issues 49511](https://github.com/moby/moby/issues/49511) and
|
||||
> [Moby Github Repo Issues 49519](https://github.com/moby/moby/issues/49519)
|
||||
|
||||
> [!IMPORTANT] For Docker rootless, the user must have local permissions for all
|
||||
> directories required by the Ente-photos self-hosted server. This can be
|
||||
> achieved by running `sudo chown -R 1000:1000 /home/ubuntu/docker/ente`. In the
|
||||
@@ -38,7 +31,7 @@ Before getting start keep the following NOTE in mind.
|
||||
> net.ipv4.ping_group_range = 0 2147483647
|
||||
> ```
|
||||
>
|
||||
> than run `sudo sysctl --system`. Create
|
||||
> then run `sudo sysctl --system`. Create
|
||||
> `~/.config/systemd/user/docker.service.d/override.conf` with the following
|
||||
> content:
|
||||
>
|
||||
@@ -55,7 +48,7 @@ Before getting start keep the following NOTE in mind.
|
||||
## GETTING START WITH SETUP
|
||||
|
||||
First of all create a directory
|
||||
`sudo mkdir -p /home/ubuntu/docker/tsdproxy/config` than `cd docker/tsdproxy`
|
||||
`sudo mkdir -p /home/ubuntu/docker/tsdproxy/config` then `cd docker/tsdproxy`
|
||||
and create compose.yaml file by running `sudo nano compose.yaml`. Populate it
|
||||
with the following:
|
||||
|
||||
@@ -5,20 +5,32 @@ description: Getting started self hosting Ente Photos and/or Ente Auth
|
||||
|
||||
# Self Hosting
|
||||
|
||||
The entire source code for Ente is open source, including the servers. This is
|
||||
The entire source code for Ente is open source,
|
||||
[including the servers](https://ente.io/blog/open-sourcing-our-server/). This is
|
||||
the same code we use for our own cloud service.
|
||||
|
||||
> [!TIP]
|
||||
>
|
||||
> You might find our [blog post](https://ente.io/blog/open-sourcing-our-server/)
|
||||
> announcing the open sourcing of our server useful.
|
||||
## Requirements
|
||||
|
||||
## System requirements
|
||||
### Hardware
|
||||
|
||||
The server has minimal resource requirements, running as a lightweight Go
|
||||
binary. It performs well on small cloud instances, old laptops, and even
|
||||
The server is capable of running on minimal resource requirements as a
|
||||
lightweight Go binary, since most of the intensive computational tasks are done
|
||||
on the client. It performs well on small cloud instances, old laptops, and even
|
||||
[low-end embedded devices](https://github.com/ente-io/ente/discussions/594).
|
||||
|
||||
### Software
|
||||
|
||||
#### Operating System
|
||||
|
||||
Any Linux or \*nix operating system, Ubuntu or Debian is recommended to have a
|
||||
good Docker experience. Non-Linux operating systems tend to provide poor
|
||||
experience with Docker and difficulty with troubleshooting and assistance.
|
||||
|
||||
#### Docker
|
||||
|
||||
Required for running Ente's server, web application and dependent services
|
||||
(database and object storage)
|
||||
|
||||
## Getting started
|
||||
|
||||
Run this command on your terminal to setup Ente.
|
||||
@@ -28,12 +40,17 @@ sh -c "$(curl -fsSL https://raw.githubusercontent.com/ente-io/ente/main/server/q
|
||||
```
|
||||
|
||||
The above `curl` command pulls the Docker image, creates a directory `my-ente`
|
||||
in the current working directory and starts all containers required to run Ente.
|
||||
in the current working directory, prompts to start the cluster and starts all the containers required to run Ente.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
> [!TIP] Important:
|
||||
> If you have used quickstart for self-hosting Ente and are facing issues while > trying to run the cluster due to MinIO buckets not being created, please check [troubleshooting MinIO](/self-hosting/troubleshooting/docker#minio-provisioning-error)
|
||||
>
|
||||
>
|
||||
|
||||
## Queries?
|
||||
|
||||
If you need support, please ask on our community
|
||||
|
||||
@@ -32,10 +32,17 @@ After the installation is complete, a `Caddyfile` is created on the path
|
||||
`/etc/caddy/`. This file is used to configure reverse proxies among other
|
||||
things.
|
||||
|
||||
```yaml
|
||||
```groovy
|
||||
# Caddyfile - myente.xyz is just an example.
|
||||
api.myente.xyz { reverse_proxy http://localhost:8080 } ente.myente.xyz {
|
||||
reverse_proxy http://localhost:3000 }
|
||||
|
||||
api.myente.xyz {
|
||||
reverse_proxy http://localhost:8080
|
||||
}
|
||||
|
||||
ente.myente.xyz {
|
||||
reverse_proxy http://localhost:3000
|
||||
}
|
||||
|
||||
#...and so on for other endpoints
|
||||
```
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ minio-provision:
|
||||
sh -c '
|
||||
#!/bin/sh
|
||||
|
||||
while ! mc config host add h0 http://minio:3200 changeme changeme1234
|
||||
while ! mc alias set h0 http://minio:3200 your_minio_user your_minio_pass
|
||||
do
|
||||
echo "waiting for minio..."
|
||||
sleep 0.5
|
||||
@@ -135,3 +135,43 @@ If you're unsure about removing volumes, another alternative is to rename your
|
||||
`my-ente` folder. Docker uses the folder name to determine the volume name
|
||||
prefix, so giving it a different name will cause Docker to create a volume
|
||||
afresh for it.
|
||||
|
||||
## MinIO provisioning error
|
||||
|
||||
If you have used our quickstart script for self-hosting Ente (new users will be unaffected) and are using the default MinIO container for object storage, you may run into issues while starting the cluster after pulling latest images with provisioning MinIO and creating buckets.
|
||||
|
||||
You may encounter similar logs while trying to start the cluster:
|
||||
|
||||
```
|
||||
my-ente-minio-1 -> | Waiting for minio...
|
||||
my-ente-minio-1 -> | Waiting for minio...
|
||||
my-ente-minio-1 -> | Waiting for minio...
|
||||
```
|
||||
|
||||
MinIO has deprecated the `mc config` command in favor of `mc alias set` resulting in failure in execution of the command for creating bucket using `post_start` hook.
|
||||
|
||||
This can be resolved by changing `mc config host h0 add http://minio:3200 $minio_user $minio_pass` to `mc alias set h0 http://minio:3200 $minio_user $minio_pass`
|
||||
|
||||
Thus the updated `post_start` will look as follows for `minio` service:
|
||||
|
||||
``` yaml
|
||||
minio:
|
||||
...
|
||||
post_start:
|
||||
- command: |
|
||||
sh -c '
|
||||
#!/bin/sh
|
||||
|
||||
while ! mc alias set h0 http://minio:3200 your_minio_user your_minio_pass 2>/dev/null
|
||||
do
|
||||
echo "Waiting for minio..."
|
||||
sleep 0.5
|
||||
done
|
||||
|
||||
cd /data
|
||||
|
||||
mc mb -p b2-eu-cen
|
||||
mc mb -p wasabi-eu-central-2-v3
|
||||
mc mb -p scw-eu-fr-v3
|
||||
'
|
||||
```
|
||||
@@ -73,7 +73,7 @@ If the code you're working needs to modify user facing strings, see
|
||||
## 🔩 Architecture
|
||||
|
||||
The architecture that powers end-to-end encrypted storage and sync of your
|
||||
tokens has been documented [here](../architecture/README.md).
|
||||
tokens has been documented [here](architecture/README.md).
|
||||
|
||||
## 🌍 Translate
|
||||
|
||||
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 7.4 KiB |
|
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 6.8 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 9.3 KiB After Width: | Height: | Size: 9.3 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.0 KiB |
|
Before Width: | Height: | Size: 123 KiB After Width: | Height: | Size: 123 KiB |
|
Before Width: | Height: | Size: 106 KiB After Width: | Height: | Size: 106 KiB |
|
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 89 KiB After Width: | Height: | Size: 89 KiB |
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
|
Before Width: | Height: | Size: 134 KiB After Width: | Height: | Size: 134 KiB |
|
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 126 KiB After Width: | Height: | Size: 126 KiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 134 KiB After Width: | Height: | Size: 134 KiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 69 B After Width: | Height: | Size: 69 B |