Compare commits
662 Commits
v1.3.0-bet
...
feat/mobil
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3de3827103 | ||
|
|
db2fc41a67 | ||
|
|
c471ca7bd0 | ||
|
|
4f37f9d928 | ||
|
|
c8f22bda95 | ||
|
|
bfe2c36756 | ||
|
|
092fdec8a3 | ||
|
|
0e69f59c44 | ||
|
|
894d67d426 | ||
|
|
e8cdf48771 | ||
|
|
01ccea9542 | ||
|
|
3c2708c9d7 | ||
|
|
1572490620 | ||
|
|
58e284cd22 | ||
|
|
be4478e5d5 | ||
|
|
3b0421c15e | ||
|
|
e17397881f | ||
|
|
28043f528b | ||
|
|
499de180d7 | ||
|
|
b310dccaaf | ||
|
|
f71cc7d1cf | ||
|
|
51d63df26f | ||
|
|
b73b7fb1b4 | ||
|
|
6b9e4072cb | ||
|
|
a870bd12b9 | ||
|
|
192a3bb12b | ||
|
|
7dfbab5ee9 | ||
|
|
a4f658df02 | ||
|
|
37453b4f4b | ||
|
|
debca1370f | ||
|
|
55316b1175 | ||
|
|
8c98b95bd2 | ||
|
|
fd17bb17a4 | ||
|
|
9f5486d415 | ||
|
|
3b4e55def9 | ||
|
|
5b86b0e7f4 | ||
|
|
394b29b244 | ||
|
|
9c3111850d | ||
|
|
4ece9d6efe | ||
|
|
5b0ec76a8a | ||
|
|
fa99ac25ac | ||
|
|
a376a25ff4 | ||
|
|
3b3d5a156a | ||
|
|
de42e142a3 | ||
|
|
a3207f81be | ||
|
|
05138f2116 | ||
|
|
88a3a3a000 | ||
|
|
3553576bae | ||
|
|
40db445b1a | ||
|
|
98f10bdefa | ||
|
|
01cc4abdfa | ||
|
|
f48ff0f7f1 | ||
|
|
27f1545305 | ||
|
|
2ac3568d15 | ||
|
|
a50cc5f31c | ||
|
|
90064415c6 | ||
|
|
43b52cd6e2 | ||
|
|
f1334ef34e | ||
|
|
a05ebcef57 | ||
|
|
3ab5b0bdbb | ||
|
|
ac3dac35a3 | ||
|
|
2c9e2d0376 | ||
|
|
fe37c24677 | ||
|
|
51e5e1b924 | ||
|
|
f63d18e854 | ||
|
|
49aef65e5c | ||
|
|
8c0ee4d755 | ||
|
|
d8caa5a431 | ||
|
|
5801ee329f | ||
|
|
19e6a15ad0 | ||
|
|
1b5b4b89c9 | ||
|
|
aaf51443af | ||
|
|
109c98ce2a | ||
|
|
3b6469c580 | ||
|
|
2a9688180e | ||
|
|
d4f82ee211 | ||
|
|
57ac5c98b7 | ||
|
|
81d3bc9f01 | ||
|
|
0a1f4ecd18 | ||
|
|
99711a73f3 | ||
|
|
916ab6c56a | ||
|
|
203af0d060 | ||
|
|
ce0b5a9395 | ||
|
|
cb1fb70181 | ||
|
|
8164e91670 | ||
|
|
e4c43aee74 | ||
|
|
a7f5bbd271 | ||
|
|
a94d352f7f | ||
|
|
8aba588b90 | ||
|
|
b951cac42b | ||
|
|
dfc29fa3ed | ||
|
|
c9cdcc0cc5 | ||
|
|
d2ab29bfd5 | ||
|
|
18ffde1d49 | ||
|
|
54f32eec5f | ||
|
|
2d0d42e35d | ||
|
|
666d73aed1 | ||
|
|
f8602e56eb | ||
|
|
f734dca910 | ||
|
|
1c0cd2e2a7 | ||
|
|
7e762e8524 | ||
|
|
791b9cc694 | ||
|
|
61618db93c | ||
|
|
2a63046bbd | ||
|
|
030fed7d60 | ||
|
|
13c528a35e | ||
|
|
e068a253e5 | ||
|
|
4a1a05cf51 | ||
|
|
5e7c5dd3f3 | ||
|
|
af172e4516 | ||
|
|
d2b6ab25d6 | ||
|
|
0dfdfc1269 | ||
|
|
c927be4c3f | ||
|
|
f883cb3839 | ||
|
|
884a53e448 | ||
|
|
a8bf8e00ab | ||
|
|
92dba1218f | ||
|
|
f0aa0014a9 | ||
|
|
02ef835855 | ||
|
|
253a7b21b1 | ||
|
|
2c8b15cd3a | ||
|
|
8b9541b51e | ||
|
|
6d512d0374 | ||
|
|
eaa42885c3 | ||
|
|
2b232f76aa | ||
|
|
baed923a64 | ||
|
|
3ef1666ef7 | ||
|
|
4954b1cc24 | ||
|
|
b2fe51fd2a | ||
|
|
c76148687c | ||
|
|
777951bb8c | ||
|
|
833d09efe4 | ||
|
|
f816314115 | ||
|
|
63e28f9993 | ||
|
|
f33f41d41f | ||
|
|
bd825e0c32 | ||
|
|
b45cfd2212 | ||
|
|
2081e99d4a | ||
|
|
2753e89dd5 | ||
|
|
31ba428f33 | ||
|
|
d9db68c9bb | ||
|
|
6616a932c5 | ||
|
|
493b2e183f | ||
|
|
5800c158aa | ||
|
|
6fcb82bb90 | ||
|
|
0d5455c9c5 | ||
|
|
e5e1725d42 | ||
|
|
4d171273e9 | ||
|
|
8d21d2228a | ||
|
|
d98f59cbb4 | ||
|
|
f0b0656ddc | ||
|
|
62460fbfe0 | ||
|
|
802d224209 | ||
|
|
7589059756 | ||
|
|
6330aaf4ee | ||
|
|
62ebfdf7f7 | ||
|
|
87fc30d170 | ||
|
|
296a944c9f | ||
|
|
635f72996b | ||
|
|
91feb14ff4 | ||
|
|
4dbd35074c | ||
|
|
af0dec1345 | ||
|
|
74bf3702c7 | ||
|
|
e46ee95bb8 | ||
|
|
edbd3defcc | ||
|
|
f9a2b18473 | ||
|
|
418090604a | ||
|
|
6dbfa496b4 | ||
|
|
82c3fd529c | ||
|
|
b793f71f26 | ||
|
|
b8c3c4eec2 | ||
|
|
2a5b9de68b | ||
|
|
2b9a7edaef | ||
|
|
c7fbdd7a02 | ||
|
|
9e4f31ea52 | ||
|
|
3cee9498d7 | ||
|
|
7f8795c36a | ||
|
|
3441b8a282 | ||
|
|
b2a15ca5e2 | ||
|
|
bcce4a01d4 | ||
|
|
0b97e09ccc | ||
|
|
9d287b8202 | ||
|
|
3a50ccdf5c | ||
|
|
d4bf21d464 | ||
|
|
430340c084 | ||
|
|
f9b93372d4 | ||
|
|
41021548a2 | ||
|
|
6b02f3fc61 | ||
|
|
fab231a916 | ||
|
|
2c4841bb11 | ||
|
|
bd6cc99733 | ||
|
|
50a74f3612 | ||
|
|
303669cd2c | ||
|
|
eca26a977d | ||
|
|
4be6db7d31 | ||
|
|
a55fc9b2c1 | ||
|
|
28fdc79e18 | ||
|
|
bb027cf921 | ||
|
|
4f3061ed78 | ||
|
|
9deefc0fa2 | ||
|
|
bb7a94b7cc | ||
|
|
9e867c672c | ||
|
|
7c1cf1335b | ||
|
|
2cbf7273fb | ||
|
|
a917332e81 | ||
|
|
7e865c7cb0 | ||
|
|
dcf4664a18 | ||
|
|
6ad6c58691 | ||
|
|
a8b548cb0b | ||
|
|
f0e9f27c5f | ||
|
|
b019b479bd | ||
|
|
52f9047299 | ||
|
|
a39c054b62 | ||
|
|
2ed72c74d4 | ||
|
|
e62e7932ea | ||
|
|
d7216f70c6 | ||
|
|
15d16e567f | ||
|
|
9804a2ed67 | ||
|
|
696055585c | ||
|
|
474a3886f4 | ||
|
|
bc65a3bd5a | ||
|
|
51baa1a907 | ||
|
|
e7144313a4 | ||
|
|
64eefbe7bd | ||
|
|
0b97ccb767 | ||
|
|
0eed677805 | ||
|
|
40e9786215 | ||
|
|
29bec4f373 | ||
|
|
90d55bb4ba | ||
|
|
6731c89c32 | ||
|
|
530ce3e63d | ||
|
|
3bea8d9f02 | ||
|
|
19d699b19f | ||
|
|
65264b3dac | ||
|
|
1bc38ba4c1 | ||
|
|
51b7d621fa | ||
|
|
c492c0d18e | ||
|
|
a832dc1220 | ||
|
|
34e663373b | ||
|
|
1560cb4a0b | ||
|
|
20f52e471b | ||
|
|
0dcddfc810 | ||
|
|
7984fe04ba | ||
|
|
5e2f6e454e | ||
|
|
31c1709f63 | ||
|
|
801ec4ee00 | ||
|
|
90f108a61f | ||
|
|
2c163431c5 | ||
|
|
611b4ebed3 | ||
|
|
3333aa0eb7 | ||
|
|
5cb9bfc41e | ||
|
|
67cad46ee7 | ||
|
|
b08e7d8b60 | ||
|
|
67169133e6 | ||
|
|
90a89853ed | ||
|
|
d1f831df73 | ||
|
|
0e07e339b7 | ||
|
|
ac9d922245 | ||
|
|
df7fed3c82 | ||
|
|
9a8659b711 | ||
|
|
776b6ec2c0 | ||
|
|
cbf5f4da69 | ||
|
|
54354c6ee0 | ||
|
|
22f84f1ee0 | ||
|
|
eadea02eba | ||
|
|
e15cf9b088 | ||
|
|
4b03f5739e | ||
|
|
029f3f9895 | ||
|
|
383a7762e3 | ||
|
|
5098733ba0 | ||
|
|
4d9aabe296 | ||
|
|
d6d488b8d7 | ||
|
|
0a2f608639 | ||
|
|
63ba2e6717 | ||
|
|
835fb88ab3 | ||
|
|
3afd91ee60 | ||
|
|
01fd658023 | ||
|
|
25c39b73c5 | ||
|
|
223b9f2587 | ||
|
|
6a06f32d4a | ||
|
|
12e81fd30f | ||
|
|
2a857e349b | ||
|
|
7abc4b3d69 | ||
|
|
1ad09e6056 | ||
|
|
788da743a6 | ||
|
|
556c83c122 | ||
|
|
6b19f075a1 | ||
|
|
577731837f | ||
|
|
f1aef7c156 | ||
|
|
69d77225db | ||
|
|
eea52ea1e4 | ||
|
|
02529566d3 | ||
|
|
c188aefc47 | ||
|
|
5176aee1ac | ||
|
|
000fcc289b | ||
|
|
837d2b33ba | ||
|
|
cd03444a98 | ||
|
|
2feb359cf0 | ||
|
|
af7d38822c | ||
|
|
16c4dea897 | ||
|
|
2d0f3e0056 | ||
|
|
cefe53d57f | ||
|
|
a2b3c32978 | ||
|
|
b0247577c3 | ||
|
|
a5b5f89fb2 | ||
|
|
684b95c5a8 | ||
|
|
b0432d60e4 | ||
|
|
3607c9d933 | ||
|
|
3983bf71fc | ||
|
|
0dd59a5f87 | ||
|
|
e1b1984c53 | ||
|
|
498f4904c3 | ||
|
|
00e2a89745 | ||
|
|
cb08e62cc6 | ||
|
|
7aaabb27dd | ||
|
|
f411af6405 | ||
|
|
373d87c7a8 | ||
|
|
97553407a4 | ||
|
|
b5f8402ede | ||
|
|
0840d7e3f0 | ||
|
|
c4f46f826b | ||
|
|
412db5c0e8 | ||
|
|
4e49700421 | ||
|
|
6b47049117 | ||
|
|
4d4bd9cb00 | ||
|
|
2dcbbeb516 | ||
|
|
15a645ec78 | ||
|
|
16cd17aa54 | ||
|
|
310771d16f | ||
|
|
b38a1b9904 | ||
|
|
ca0dc1fc77 | ||
|
|
9fdb6953ab | ||
|
|
99a8859476 | ||
|
|
c18ee4b467 | ||
|
|
fadbf2b24a | ||
|
|
a1641e96cc | ||
|
|
451ded82c5 | ||
|
|
77373e3782 | ||
|
|
187071b026 | ||
|
|
adf47e7acc | ||
|
|
7b762e26a0 | ||
|
|
82dc56fe64 | ||
|
|
e346da33cf | ||
|
|
9f43c9e77d | ||
|
|
0b7c873556 | ||
|
|
003171bc1e | ||
|
|
311bd72b6a | ||
|
|
11fdfe65a0 | ||
|
|
7f4040fd4e | ||
|
|
0086307640 | ||
|
|
b2249f81f8 | ||
|
|
0a2c762605 | ||
|
|
e8b60ee83b | ||
|
|
70f088e384 | ||
|
|
a845bbcdc3 | ||
|
|
6969a0999e | ||
|
|
1ec6020168 | ||
|
|
6fd6636cef | ||
|
|
8bb4aa77d9 | ||
|
|
4dae48e1ad | ||
|
|
5a4ff7065b | ||
|
|
491860a85c | ||
|
|
33d18cd3b6 | ||
|
|
d0f88391e5 | ||
|
|
493e070bb9 | ||
|
|
096df49dcd | ||
|
|
cabb8c6cc8 | ||
|
|
130d296fcc | ||
|
|
e2ee633e7a | ||
|
|
248714a8d4 | ||
|
|
3e95457c0d | ||
|
|
ac1d1a343b | ||
|
|
23511f78cd | ||
|
|
f2728c5145 | ||
|
|
06c3cc2289 | ||
|
|
024c1a36d8 | ||
|
|
a8c49db64a | ||
|
|
ea9186f941 | ||
|
|
e8eb13bb30 | ||
|
|
ee4c4ca58e | ||
|
|
1b385005be | ||
|
|
5dee0ae4d4 | ||
|
|
ee776553df | ||
|
|
05758d812a | ||
|
|
7ad1a9a84b | ||
|
|
8470a38047 | ||
|
|
4547e83213 | ||
|
|
8f0355d048 | ||
|
|
6307326b01 | ||
|
|
3c0d5bf387 | ||
|
|
20cec4366b | ||
|
|
76bed46541 | ||
|
|
e3ead1c7fd | ||
|
|
d882e2e301 | ||
|
|
67d13af59e | ||
|
|
459b7aad2e | ||
|
|
e1977c6132 | ||
|
|
23c47227b6 | ||
|
|
e381a09fb1 | ||
|
|
a921cdc725 | ||
|
|
d5bc12533f | ||
|
|
688d2dd862 | ||
|
|
d940838f38 | ||
|
|
164d066dce | ||
|
|
733d15f022 | ||
|
|
4b500a1c9e | ||
|
|
5bc78d2c8b | ||
|
|
8b1da812e1 | ||
|
|
db19672295 | ||
|
|
945502fa38 | ||
|
|
f7f6bc0ada | ||
|
|
470efded2e | ||
|
|
3ce419d8cf | ||
|
|
81b7a720ed | ||
|
|
2cf5e97d1e | ||
|
|
f0766e1907 | ||
|
|
18b74ce855 | ||
|
|
004a696010 | ||
|
|
02d6ddb29b | ||
|
|
44db95d3fe | ||
|
|
11532da091 | ||
|
|
7cbb443e84 | ||
|
|
0cf8dc9bb9 | ||
|
|
09264b7918 | ||
|
|
ab9a5153fe | ||
|
|
6119e420b0 | ||
|
|
e33de24dec | ||
|
|
2b21f83bab | ||
|
|
c671db8d98 | ||
|
|
10fb45f8d9 | ||
|
|
c9d65dc82a | ||
|
|
91e8703af0 | ||
|
|
69b4cbd63f | ||
|
|
90b7c91264 | ||
|
|
8b67a1b0b6 | ||
|
|
3d59a7d6d0 | ||
|
|
caaf22da72 | ||
|
|
951b4c5f65 | ||
|
|
d0aca707a7 | ||
|
|
9c1d23d206 | ||
|
|
ea9e39423d | ||
|
|
6ce7595af9 | ||
|
|
e1725d224d | ||
|
|
0e0955f3ec | ||
|
|
00c35ff6fe | ||
|
|
2f2a2a2068 | ||
|
|
46265275e5 | ||
|
|
d144630433 | ||
|
|
bbb74ee78a | ||
|
|
153896480e | ||
|
|
54ee3ff168 | ||
|
|
f626a96c1a | ||
|
|
06435c8d58 | ||
|
|
41c2fb5510 | ||
|
|
21f78f0a29 | ||
|
|
f5b5bb09c8 | ||
|
|
6e81821b46 | ||
|
|
b88efb9a1e | ||
|
|
345d830687 | ||
|
|
f3723d4e5a | ||
|
|
7b530297ac | ||
|
|
c7cdac69ce | ||
|
|
56d79ccc8b | ||
|
|
d678f3d7b4 | ||
|
|
5d6b31f86c | ||
|
|
fefa2f9703 | ||
|
|
e59630b70e | ||
|
|
e222216e1d | ||
|
|
4cd9a9355d | ||
|
|
19fb138d51 | ||
|
|
9339ecc11b | ||
|
|
24b8a517d8 | ||
|
|
bd7f6fbe7f | ||
|
|
d0fd528d7c | ||
|
|
8a18e84ce7 | ||
|
|
338370ae7c | ||
|
|
db26e6bdf6 | ||
|
|
c8d42ab31e | ||
|
|
d97d24f1c1 | ||
|
|
45e2bfce66 | ||
|
|
3158c85630 | ||
|
|
4ee3e2b8a3 | ||
|
|
62407c4c98 | ||
|
|
8d8d7e73d5 | ||
|
|
c266ecc831 | ||
|
|
6e82a099a2 | ||
|
|
d9e204e180 | ||
|
|
8fae2ffcd1 | ||
|
|
7e42a0e41d | ||
|
|
c1a233914e | ||
|
|
e55f86385f | ||
|
|
be0edf9747 | ||
|
|
6273b95454 | ||
|
|
b2e752115e | ||
|
|
18b3cf0b0c | ||
|
|
9623194610 | ||
|
|
bcbb61a652 | ||
|
|
901218b043 | ||
|
|
91ad538f72 | ||
|
|
1183b7e3ba | ||
|
|
396a103a24 | ||
|
|
33cc8bd8d7 | ||
|
|
96428f1f9a | ||
|
|
887e595132 | ||
|
|
84b6039a81 | ||
|
|
1999f30b0e | ||
|
|
96ad89c05d | ||
|
|
78f09c5bb9 | ||
|
|
efe59ef5ba | ||
|
|
598fc48cc0 | ||
|
|
9d23424587 | ||
|
|
503d90af49 | ||
|
|
a34b2cea99 | ||
|
|
180cb16d6a | ||
|
|
3dc2d33526 | ||
|
|
845b83ebcd | ||
|
|
694373fe0e | ||
|
|
2a47187f87 | ||
|
|
124dc17fb2 | ||
|
|
2f0e4bf6c7 | ||
|
|
163163f600 | ||
|
|
65f7041788 | ||
|
|
ded18443ca | ||
|
|
400c5b5064 | ||
|
|
09369dd6be | ||
|
|
2261329146 | ||
|
|
9ed019ddb9 | ||
|
|
160dd65ada | ||
|
|
621fbdf824 | ||
|
|
e7c79e4c5f | ||
|
|
8ef4c5968c | ||
|
|
90929a4431 | ||
|
|
30724d391e | ||
|
|
e36950a674 | ||
|
|
8c0d763e8d | ||
|
|
cd1e0d634a | ||
|
|
47d45bd053 | ||
|
|
e8a8acf990 | ||
|
|
654248f341 | ||
|
|
028a15b2d4 | ||
|
|
5ae2b4863f | ||
|
|
aa530e3fe6 | ||
|
|
725b15cb41 | ||
|
|
b4b24a1e92 | ||
|
|
b40d233e99 | ||
|
|
60055afd1a | ||
|
|
b288463c75 | ||
|
|
d5ed0a14d4 | ||
|
|
b0c7a90327 | ||
|
|
3186dcb09f | ||
|
|
097ed761fd | ||
|
|
b7bd95bb98 | ||
|
|
473fda54f9 | ||
|
|
4b25751e6e | ||
|
|
16b08797ec | ||
|
|
adabd965b8 | ||
|
|
10c889ada0 | ||
|
|
0f47cbdb8e | ||
|
|
aa1e07b521 | ||
|
|
85bc525c11 | ||
|
|
7938f35fea | ||
|
|
0d7f7e024d | ||
|
|
8d65ca198f | ||
|
|
ce68fa1343 | ||
|
|
bb6a9d440d | ||
|
|
506887d80b | ||
|
|
0b3b15e612 | ||
|
|
ab9e1ceaa3 | ||
|
|
63f695b946 | ||
|
|
c1ba5e00fb | ||
|
|
392b7c99bd | ||
|
|
c0400cbfac | ||
|
|
5351369bb0 | ||
|
|
3426c5f24f | ||
|
|
39d795ff65 | ||
|
|
30bb3de5d1 | ||
|
|
18277ef0f1 | ||
|
|
a7c587d74b | ||
|
|
4187375efc | ||
|
|
57dcad1e93 | ||
|
|
42b2cefea4 | ||
|
|
c76ba98bb6 | ||
|
|
6bd6f641f1 | ||
|
|
0daef59a9f | ||
|
|
2a873c1c6a | ||
|
|
085a773967 | ||
|
|
866ba89b93 | ||
|
|
85b6cad03f | ||
|
|
14073438d5 | ||
|
|
71a1dd9383 | ||
|
|
790cce7755 | ||
|
|
9d0fee7e5e | ||
|
|
e927a95fa4 | ||
|
|
9b771e02ec | ||
|
|
b0035f04ff | ||
|
|
058b91d7af | ||
|
|
4c85b4afcc | ||
|
|
5d9794cdb6 | ||
|
|
7260840f4b | ||
|
|
156bb4ea28 | ||
|
|
89a7605055 | ||
|
|
ea4b82be25 | ||
|
|
0355f976b8 | ||
|
|
e17cb7c24a | ||
|
|
af5042261b | ||
|
|
31f7e1732c | ||
|
|
94d2cb1fec | ||
|
|
9a35547997 | ||
|
|
0c4615d413 | ||
|
|
1fb3530cbd | ||
|
|
cf4820bffb | ||
|
|
fc753b5f05 | ||
|
|
93770c1012 | ||
|
|
1dec9a9e41 | ||
|
|
c5109d7441 | ||
|
|
e1eb827b58 | ||
|
|
e8164e080e | ||
|
|
8aeaf76910 | ||
|
|
844c251711 | ||
|
|
38b932991a | ||
|
|
76d3c9ff6c | ||
|
|
62d86faf73 | ||
|
|
42d2453991 | ||
|
|
eba6395966 | ||
|
|
baae17e03b | ||
|
|
cd9acf9e90 | ||
|
|
998ab1418a | ||
|
|
0b7878e8da | ||
|
|
b10d5c0b96 | ||
|
|
0289f3534a | ||
|
|
0a85bd5ff8 | ||
|
|
afa467567e | ||
|
|
c4729d4d15 | ||
|
|
665237da08 | ||
|
|
b5d81758f1 | ||
|
|
0feef234e8 | ||
|
|
45c82cf37c | ||
|
|
f828546f1f | ||
|
|
8bd1f85043 | ||
|
|
c7146cb7e3 | ||
|
|
a3f43189ec | ||
|
|
5d6c9f3da4 | ||
|
|
2eae0333c0 | ||
|
|
e7cb15a543 | ||
|
|
9a94c17919 | ||
|
|
70fb55b94a | ||
|
|
d5bcf543ae | ||
|
|
54cc2a6643 | ||
|
|
4b557e2a39 | ||
|
|
5614750ead | ||
|
|
4f81f50e13 | ||
|
|
d139a3694e | ||
|
|
c1563efa5b | ||
|
|
183a2e786f | ||
|
|
60939bfd77 | ||
|
|
2feb9c0ba7 | ||
|
|
ed7be38a23 | ||
|
|
c2fb6d7d7a | ||
|
|
9fbb6f373e | ||
|
|
bd963308b1 | ||
|
|
4ef0ac05aa | ||
|
|
8485dc789d |
44
.cargo/config.toml
Normal file
@@ -0,0 +1,44 @@
|
||||
## 配置cargo的国内源 (依赖很多所以还是需要慢慢等待,不至于卡死下载不了)
|
||||
[source.crates-io]
|
||||
replace-with = 'rsproxy-sparse'
|
||||
[source.rsproxy]
|
||||
registry = "https://rsproxy.cn/crates.io-index"
|
||||
[source.rsproxy-sparse]
|
||||
registry = "sparse+https://rsproxy.cn/index/"
|
||||
[registries.rsproxy]
|
||||
index = "https://rsproxy.cn/crates.io-index"
|
||||
[net]
|
||||
git-fetch-with-cli = true
|
||||
|
||||
# Android NDK 链接配置
|
||||
[target.aarch64-linux-android]
|
||||
linker = "aarch64-linux-android-clang"
|
||||
rustflags = [
|
||||
"-C", "link-arg=-lc++_shared",
|
||||
"-C", "link-arg=-llog",
|
||||
"-C", "link-arg=-landroid",
|
||||
]
|
||||
|
||||
[target.armv7-linux-androideabi]
|
||||
linker = "armv7a-linux-androideabi-clang"
|
||||
rustflags = [
|
||||
"-C", "link-arg=-lc++_shared",
|
||||
"-C", "link-arg=-llog",
|
||||
"-C", "link-arg=-landroid",
|
||||
]
|
||||
|
||||
[target.i686-linux-android]
|
||||
linker = "i686-linux-android-clang"
|
||||
rustflags = [
|
||||
"-C", "link-arg=-lc++_shared",
|
||||
"-C", "link-arg=-llog",
|
||||
"-C", "link-arg=-landroid",
|
||||
]
|
||||
|
||||
[target.x86_64-linux-android]
|
||||
linker = "x86_64-linux-android-clang"
|
||||
rustflags = [
|
||||
"-C", "link-arg=-lc++_shared",
|
||||
"-C", "link-arg=-llog",
|
||||
"-C", "link-arg=-landroid",
|
||||
]
|
||||
@@ -2,9 +2,17 @@
|
||||
|
||||
root = true
|
||||
|
||||
[*] # 表示所有文件适用
|
||||
charset = utf-8 # 设置文件字符集为 utf-8
|
||||
indent_size = 2 # 缩进大小
|
||||
end_of_line = lf # 控制换行类型(lf | cr | crlf)
|
||||
trim_trailing_whitespace = true # 末尾空格修剪
|
||||
insert_final_newline = true # 始终在文件末尾插入一个新行
|
||||
[*]
|
||||
charset = utf-8
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
# 对于自动生成的文件,保持原有格式
|
||||
[src-tauri/gen/schemas/**]
|
||||
insert_final_newline = false
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[tauri-plugin-hula/permissions/schemas/**]
|
||||
insert_final_newline = false
|
||||
trim_trailing_whitespace = false
|
||||
10
.env.dev
@@ -1,10 +0,0 @@
|
||||
# 后端服务地址
|
||||
VITE_SERVICE_URL="http://localhost:9095/api/manage"
|
||||
# 项目标题
|
||||
VITE_APP_TITLE="HuLa—IM"
|
||||
# 标签后缀
|
||||
VITE_TITLE_SUFFIX=" | HuLa"
|
||||
# 项目备案号
|
||||
VITE_APP_ICP="桂ICP备2021000000号"
|
||||
# 项目名称
|
||||
VITE_APP_NAME="HuLa-IM-Tauri"
|
||||
21
.env.development
Normal file
@@ -0,0 +1,21 @@
|
||||
# 后端服务地址
|
||||
VITE_SERVICE_URL="https://hulaspark.com/api"
|
||||
# # # websocket服务地址
|
||||
VITE_WEBSOCKET_URL="wss://hulaspark.com/api/ws/ws"
|
||||
# 项目标题
|
||||
VITE_APP_TITLE="HuLa—IM"
|
||||
# 项目名称
|
||||
VITE_APP_NAME="HuLa"
|
||||
# gitee token
|
||||
VITE_GITEE_TOKEN="a9029798336825cea39ac9e4413b8579"
|
||||
|
||||
# 启用本地的服务地址,先要注释掉上面的服务地址
|
||||
# VITE_SERVICE_URL="http://192.168.1.37:18760"
|
||||
# VITE_WEBSOCKET_URL="ws://192.168.1.37:18760/ws/ws"
|
||||
|
||||
# TURN信令服务器
|
||||
VITE_TURN_SERVER_URL=
|
||||
VITE_TURN_SERVER_USER=
|
||||
VITE_TURN_SERVER_PWD=
|
||||
|
||||
VITE_USE_RUST_WEBSOCKET=true
|
||||
10
.env.prod
@@ -1,10 +0,0 @@
|
||||
# 后端服务地址
|
||||
VITE_SERVICE_URL="http://localhost:9095"
|
||||
# 项目标题
|
||||
VITE_APP_TITLE="HuLa—IM"
|
||||
# 标签后缀
|
||||
VITE_TITLE_SUFFIX=" | HuLa"
|
||||
# 项目备案号
|
||||
VITE_APP_ICP="桂ICP备2021000000号"
|
||||
# 项目名称
|
||||
VITE_APP_NAME="HuLa-IM-Tauri"
|
||||
17
.env.production
Normal file
@@ -0,0 +1,17 @@
|
||||
# 后端服务地址
|
||||
VITE_SERVICE_URL="https://hulaspark.com/api"
|
||||
# websocket服务地址
|
||||
VITE_WEBSOCKET_URL="wss://hulaspark.com/api/ws/ws"
|
||||
# 项目标题
|
||||
VITE_APP_TITLE="HuLa—IM"
|
||||
# 项目名称
|
||||
VITE_APP_NAME="HuLa"
|
||||
# gitee token
|
||||
VITE_GITEE_TOKEN="a9029798336825cea39ac9e4413b8579"
|
||||
|
||||
# TURN信令服务器
|
||||
VITE_TURN_SERVER_URL=
|
||||
VITE_TURN_SERVER_USER=
|
||||
VITE_TURN_SERVER_PWD=
|
||||
|
||||
VITE_USE_RUST_WEBSOCKET=true
|
||||
@@ -1,11 +0,0 @@
|
||||
node_modules
|
||||
*.md
|
||||
*.scss
|
||||
.vscode
|
||||
.idea
|
||||
dist
|
||||
public
|
||||
index.html
|
||||
src/assets
|
||||
.eslintrc.cjs
|
||||
**/config
|
||||
54
.eslintrc.cjs
vendored
@@ -1,54 +0,0 @@
|
||||
module.exports = {
|
||||
// 运行环境
|
||||
env: {
|
||||
browser: true, // 浏览器
|
||||
es6: true, // es6语法
|
||||
jest: true,
|
||||
},
|
||||
parser: 'vue-eslint-parser',
|
||||
parserOptions: {
|
||||
ecmaVersion: 'latest',
|
||||
parser: '@typescript-eslint/parser',
|
||||
sourceType: 'module',
|
||||
jsxPragma: 'React',
|
||||
ecmaFeatures: {
|
||||
jsx: true,
|
||||
},
|
||||
},
|
||||
extends: [
|
||||
'eslint:recommended',
|
||||
'plugin:@typescript-eslint/recommended',
|
||||
'plugin:vue/vue3-essential',
|
||||
'plugin:prettier/recommended',
|
||||
],
|
||||
overrides: [
|
||||
{
|
||||
env: {
|
||||
node: true,
|
||||
},
|
||||
files: ['.eslintrc.{js,cjs}'],
|
||||
parserOptions: {
|
||||
sourceType: 'script',
|
||||
},
|
||||
},
|
||||
],
|
||||
plugins: ['@typescript-eslint', 'vue'],
|
||||
rules: {
|
||||
'@typescript-eslint/no-non-null-assertion': 'off',
|
||||
/**
|
||||
* 使用新vue3.3的defineProps解构语法需要关闭这个校验
|
||||
* eslint-plugin-vue新版本已废弃 vue/no-setup-props-destructure,如果新版本eslint-plugin-vue
|
||||
* 需要改成vue/no-setup-props-reactivity-loss规则
|
||||
* */
|
||||
'vue/no-setup-props-destructure': 'off',
|
||||
'no-undef': 'off',
|
||||
'no-var': 'error', // 不能使用var
|
||||
'no-multiple-empty-lines': ['warn', { max: 2 }], // 不允许多个空行
|
||||
quotes: [1, 'single'], //引号类型 `` "" ''
|
||||
semi: ['error', 'never'], // 不允许在末尾加分号
|
||||
'vue/multi-word-component-names': 'off', //关闭组件命名规则
|
||||
'@typescript-eslint/no-explicit-any': 'off', // 关闭any校验
|
||||
'no-redeclare': 2, //禁止重复声明变量
|
||||
'eol-last': 'off', // 关闭行尾符(linebreak-style)的校验
|
||||
},
|
||||
}
|
||||
78
.gitattributes
vendored
@@ -1,3 +1,10 @@
|
||||
# Auto detect text files and perform LF normalization
|
||||
* text=auto eol=lf
|
||||
|
||||
# 行尾符设置
|
||||
"*.rs" eol=lf
|
||||
"Cargo.toml" eol=lf
|
||||
"Cargo.lock" eol=lf
|
||||
"*.vue" eol=lf
|
||||
"*.js" eol=lf
|
||||
"*.ts" eol=lf
|
||||
@@ -15,3 +22,74 @@
|
||||
"*.sass" eol=lf
|
||||
"*.styl" eol=lf
|
||||
"*.md" eol=lf
|
||||
|
||||
# 代码统计设置 - 只统计 Vue、TypeScript 和 Rust 文件
|
||||
# 排除 JavaScript 文件
|
||||
*.js linguist-vendored
|
||||
*.jsx linguist-vendored
|
||||
*.cjs linguist-vendored
|
||||
*.mjs linguist-vendored
|
||||
|
||||
# 排除样式文件
|
||||
*.css linguist-vendored
|
||||
*.scss linguist-vendored
|
||||
*.sass linguist-vendored
|
||||
*.less linguist-vendored
|
||||
*.styl linguist-vendored
|
||||
|
||||
# 排除配置和文档文件
|
||||
*.json linguist-vendored
|
||||
*.html linguist-vendored
|
||||
*.md linguist-documentation
|
||||
*.yml linguist-vendored
|
||||
*.yaml linguist-vendored
|
||||
|
||||
# 排除其他语言文件
|
||||
*.kt linguist-vendored
|
||||
*.java linguist-vendored
|
||||
*.py linguist-vendored
|
||||
|
||||
# 确保构建目录和依赖目录不被统计
|
||||
**/target/** linguist-vendored
|
||||
**/node_modules/** linguist-vendored
|
||||
scripts/** linguist-vendored
|
||||
**/build/** linguist-vendored
|
||||
**/dist/** linguist-vendored
|
||||
|
||||
# 确保主要代码文件被正确识别
|
||||
*.vue linguist-detectable
|
||||
*.ts linguist-detectable
|
||||
*.tsx linguist-detectable
|
||||
*.rs linguist-detectable
|
||||
|
||||
## 语言统计控制:排除 Ruby / Shell / Objective-C++
|
||||
# Ruby(例如 CocoaPods 的 Podfile 等)
|
||||
*.rb linguist-vendored
|
||||
**/Podfile linguist-vendored
|
||||
**/Podfile.lock linguist-vendored
|
||||
*.podspec* linguist-vendored
|
||||
|
||||
# Shell(包括 Android 的 gradlew)
|
||||
*.sh linguist-vendored
|
||||
**/gradlew linguist-vendored
|
||||
|
||||
# Objective-C++ / Objective-C(若仓库中存在 .m 可按需启用)
|
||||
*.mm linguist-vendored
|
||||
# *.m linguist-vendored
|
||||
|
||||
# 生成产物与平台工程整体排除,避免引入非 Rust 语言统计
|
||||
src-tauri/gen/** linguist-vendored
|
||||
src-tauri/gen/android/** linguist-vendored
|
||||
src-tauri/gen/apple/** linguist-vendored
|
||||
tauri-plugin-hula/ios/** linguist-vendored
|
||||
|
||||
# tauri-plugin-hula:仅统计 src 目录,其他子目录全部排除
|
||||
tauri-plugin-hula/*/** linguist-vendored
|
||||
tauri-plugin-hula/src/** -linguist-vendored
|
||||
|
||||
# 如果需要把上面这些都算作 Rust,而不是排除,可改用如下(示例):
|
||||
# *.rb linguist-language=Rust
|
||||
# *.sh linguist-language=Rust
|
||||
# *.mm linguist-language=Rust
|
||||
# **/Podfile linguist-language=Rust
|
||||
# **/gradlew linguist-language=Rust
|
||||
|
||||
58
.gitee/ISSUE_TEMPLATE/bug.yml
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
name: '🐛 反馈缺陷'
|
||||
description: '反馈一个问题缺陷'
|
||||
title: '[bug] '
|
||||
labels: ['bug']
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
## 首先
|
||||
1.请先搜索 [现有问题](https://gitee.com/HuLaSpark/HuLa/issues)关于此问题。<br>
|
||||
2.确保 rustc 和所有相关的 HuLa 包都是最新的。<br>
|
||||
3.确保这是 HuLa 的问题,而不是你正在使用的其他东西。<br>
|
||||
4.请记住遵循我们的社区准则并保持友好。<br>
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: '📌 软件版本'
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: '💻 系统环境'
|
||||
multiple: true
|
||||
options:
|
||||
- 'Windows'
|
||||
- 'macOS'
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: '🐛 问题描述'
|
||||
description: 请提供一个清晰且简洁的问题描述,如果适用,请包括屏幕截图。
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: info
|
||||
attributes:
|
||||
label: '☄️ 完整的 `pnpm tauri info` 输出'
|
||||
description: '请运行 “pnpm tauri info” 在控制台等待输出完毕,并将输出内容复制到此处'
|
||||
render: text
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: '📷 复现步骤'
|
||||
description: 请提供一个清晰且简洁的描述,说明如何复现问题。
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: '🚦 期望结果'
|
||||
description: 请提供一个清晰且简洁的描述,说明您期望发生什么。
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: '📝 补充信息'
|
||||
description: 如果您的问题需要进一步说明,或者您遇到的问题无法在一个简单的示例中复现,请在这里添加更多信息。
|
||||
35
.gitee/ISSUE_TEMPLATE/feature.yml
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
name: 💡 功能请求
|
||||
title: '[功能建议] '
|
||||
description: 提出想法
|
||||
labels: ['enhancement']
|
||||
|
||||
body:
|
||||
- type: textarea
|
||||
id: problem
|
||||
attributes:
|
||||
label: 描述问题
|
||||
description: 明确描述此功能将解决的问题
|
||||
placeholder: '我总是感到困扰...'
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: solution
|
||||
attributes:
|
||||
label: '描述您想要的解决方案'
|
||||
description: 明确说明您希望做出的改变
|
||||
placeholder: '我想...'
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: alternatives
|
||||
attributes:
|
||||
label: 考虑的替代方案
|
||||
description: '您考虑过的任何替代解决方案'
|
||||
|
||||
- type: textarea
|
||||
id: context
|
||||
attributes:
|
||||
label: 其他上下文
|
||||
description: 在此处添加有关问题的任何其他上下文。
|
||||
4
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
open_collective: HuLaSpark
|
||||
custom: https://opencollective.com/hulaspark
|
||||
62
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
@@ -0,0 +1,62 @@
|
||||
name: '🐛 Bug Report'
|
||||
description: 'Report an bug'
|
||||
title: '[bug] '
|
||||
labels: ['bug']
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
## First of all
|
||||
1. Please search for [existing issues](https://github.com/HuLaSpark/HuLa/issues?q=is%3Aissue) about this problem first.
|
||||
2. Make sure `rustc` and all relevant HuLa packages are up to date.
|
||||
3. Make sure it's an issue with HuLa and not something else you are using.
|
||||
4. Remember to follow our community guidelines and be friendly.
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: '📌 Version'
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: '💻 Operating System'
|
||||
multiple: true
|
||||
options:
|
||||
- 'Windows 10'
|
||||
- 'Windows 11'
|
||||
- 'macOS'
|
||||
- 'Linux'
|
||||
- 'Android'
|
||||
- 'ios'
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: '🐛 Bug Description'
|
||||
description: A clear and concise description of the bug, Include screenshots if applicable.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: info
|
||||
attributes:
|
||||
label: '☄️ intact `pnpm tauri info` output'
|
||||
description: 'Please run "pnpm tauri info" in the console and wait for the output to finish, then copy the output here'
|
||||
render: text
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: '📷 Recurrence Steps'
|
||||
description: A clear and concise description of how to recurrence.
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: '🚦 Expected Behavior'
|
||||
description: A clear and concise description of what you expected to happen.
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: '📝 Additional Information'
|
||||
description: If your problem needs further explanation, or if the issue you're seeing cannot be reproduced in a gist, please add more information here.
|
||||
62
.github/ISSUE_TEMPLATE/bug_report_cn.yml
vendored
Normal file
@@ -0,0 +1,62 @@
|
||||
name: '🐛 反馈缺陷'
|
||||
description: '反馈一个问题缺陷'
|
||||
title: '[bug] '
|
||||
labels: ['bug']
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
## 首先
|
||||
1.请先搜索 [现有问题](https://github.com/HuLaSpark/HuLa/issues?q=is%3Aissue)关于此问题。
|
||||
2.确保 rustc 和所有相关的 HuLa 包都是最新的。
|
||||
3.确保这是 HuLa 的问题,而不是你正在使用的其他东西。
|
||||
4.请记住遵循我们的社区准则并保持友好。
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: '📌 软件版本'
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: '💻 系统环境'
|
||||
multiple: true
|
||||
options:
|
||||
- 'Windows 10'
|
||||
- 'Windows 11'
|
||||
- 'macOS'
|
||||
- 'Linux'
|
||||
- 'Android'
|
||||
- 'ios'
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: '🐛 问题描述'
|
||||
description: 请提供一个清晰且简洁的问题描述,如果适用,请包括屏幕截图。
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: info
|
||||
attributes:
|
||||
label: '☄️ 完整的 `pnpm tauri info` 输出'
|
||||
description: '请运行 “pnpm tauri info” 在控制台等待输出完毕,并将输出内容复制到此处'
|
||||
render: text
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: '📷 复现步骤'
|
||||
description: 请提供一个清晰且简洁的描述,说明如何复现问题。
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: '🚦 期望结果'
|
||||
description: 请提供一个清晰且简洁的描述,说明您期望发生什么。
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: '📝 补充信息'
|
||||
description: 如果您的问题需要进一步说明,或者您遇到的问题无法在一个简单的示例中复现,请在这里添加更多信息。
|
||||
35
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
name: 💡 Feature Request
|
||||
title: '[feat] '
|
||||
description: Suggest an idea
|
||||
labels: ['enhancement']
|
||||
|
||||
body:
|
||||
- type: textarea
|
||||
id: problem
|
||||
attributes:
|
||||
label: Describe the problem
|
||||
description: A clear description of the problem this feature would solve
|
||||
placeholder: "I'm always frustrated when..."
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: solution
|
||||
attributes:
|
||||
label: "Describe the solution you'd like"
|
||||
description: A clear description of what change you would like
|
||||
placeholder: 'I would like to...'
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: alternatives
|
||||
attributes:
|
||||
label: Alternatives considered
|
||||
description: "Any alternative solutions you've considered"
|
||||
|
||||
- type: textarea
|
||||
id: context
|
||||
attributes:
|
||||
label: Additional context
|
||||
description: Add any other context about the problem here.
|
||||
35
.github/ISSUE_TEMPLATE/feature_request_cn.yml
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
name: 💡 功能请求
|
||||
title: '[feat] '
|
||||
description: 提出想法
|
||||
labels: ['enhancement']
|
||||
|
||||
body:
|
||||
- type: textarea
|
||||
id: problem
|
||||
attributes:
|
||||
label: 描述问题
|
||||
description: 明确描述此功能将解决的问题
|
||||
placeholder: '我总是感到困扰...'
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: solution
|
||||
attributes:
|
||||
label: '描述您想要的解决方案'
|
||||
description: 明确说明您希望做出的改变
|
||||
placeholder: '我想...'
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: alternatives
|
||||
attributes:
|
||||
label: 考虑的替代方案
|
||||
description: '您考虑过的任何替代解决方案'
|
||||
|
||||
- type: textarea
|
||||
id: context
|
||||
attributes:
|
||||
label: 其他上下文
|
||||
description: 在此处添加有关问题的任何其他上下文。
|
||||
23
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
#### 💻 变更类型 | Change Type
|
||||
|
||||
<!-- For change type, change [ ] to [x]. -->
|
||||
|
||||
- [ ] ✨ feat | 新增功能
|
||||
- [ ] 🐛 fix | 修复缺陷
|
||||
- [ ] ♻️ refactor | 代码重构(不包括 bug 修复、功能新增)
|
||||
- [ ] 💄 style | 代码格式(不影响功能,例如空格、分号等格式修正)
|
||||
- [ ] 📦️ build | 构建流程、外部依赖变更(如升级 npm 包、修改 vite 配置等)
|
||||
- [ ] 🚀 perf | 性能优化
|
||||
- [ ] 📝 docs | 文档变更
|
||||
- [ ] 🧪 test | 添加疏漏测试或已有测试改动
|
||||
- [ ] ⚙️ ci | 修改 CI 配置、脚本
|
||||
- [ ] ↩️ revert | 回滚 commit
|
||||
- [ ] 🛠️ chore | 对构建过程或辅助工具和库的更改(不影响源文件、测试用例)
|
||||
|
||||
#### 🔀 变更说明 | Description of Change
|
||||
|
||||
<!-- Thank you for your Pull Request. Please provide a description above. -->
|
||||
|
||||
#### 📝 补充信息 | Additional Information
|
||||
|
||||
<!-- Add any other context about the Pull Request here. -->
|
||||
41
.github/labeler.yml
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
# 前端相关变更
|
||||
'前端':
|
||||
- src/**/*
|
||||
|
||||
# 工作流程相关变更
|
||||
'工作流程':
|
||||
- .github/**/*
|
||||
|
||||
# 文档相关变更
|
||||
'文档':
|
||||
- '**/*.md'
|
||||
|
||||
# 依赖相关变更
|
||||
'依赖更新':
|
||||
- package.json
|
||||
- pnpm-lock.yaml
|
||||
|
||||
# Rust 相关变更
|
||||
'Rust':
|
||||
- '**/*.rs'
|
||||
- '**/Cargo.toml'
|
||||
- '**/Cargo.lock'
|
||||
- 'src-tauri/**/*'
|
||||
|
||||
# 配置文件变更
|
||||
'配置':
|
||||
- '*.config.ts'
|
||||
- '*.config.js'
|
||||
- 'tsconfig.json'
|
||||
- '.env*'
|
||||
|
||||
# 测试相关变更
|
||||
'测试':
|
||||
- '**/*.test.ts'
|
||||
- 'test/**/*'
|
||||
|
||||
# 样式相关变更
|
||||
'样式':
|
||||
- '**/*.css'
|
||||
- '**/*.scss'
|
||||
- 'uno.config.*'
|
||||
83
.github/workflows/codeql.yml
vendored
Normal file
@@ -0,0 +1,83 @@
|
||||
# For most projects, this workflow file will not need changing; you simply need
|
||||
# to commit it to your repository.
|
||||
#
|
||||
# You may wish to alter this file to override the set of languages analyzed,
|
||||
# or to provide custom queries or build logic.
|
||||
#
|
||||
# ******** NOTE ********
|
||||
# We have attempted to detect the languages in your repository. Please check
|
||||
# the `language` matrix defined below to confirm you have the correct set of
|
||||
# supported CodeQL languages.
|
||||
#
|
||||
name: "CodeQL"
|
||||
|
||||
on:
|
||||
# push:
|
||||
# branches: ["master"]
|
||||
# 暂时只在pr的时候运行
|
||||
pull_request:
|
||||
branches: ["master"]
|
||||
schedule:
|
||||
- cron: "0 0 1 * *" # 每月1号运行
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
# 跳过 Renovate PR
|
||||
if: |
|
||||
github.actor != 'renovate[bot]' &&
|
||||
github.actor != 'renovate-preview[bot]'
|
||||
|
||||
name: Analyze
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
actions: read
|
||||
contents: read
|
||||
security-events: write
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
language: ["javascript", "typescript"]
|
||||
# CodeQL supports [ $supported-codeql-languages ]
|
||||
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
|
||||
|
||||
steps:
|
||||
- name: Harden Runner
|
||||
uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2
|
||||
with:
|
||||
egress-policy: audit
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@df409f7d9260372bd5f19e5b04e83cb3c43714ae # v3.27.9
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
# By default, queries listed here will override any specified in a config file.
|
||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@df409f7d9260372bd5f19e5b04e83cb3c43714ae # v3.27.9
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
|
||||
|
||||
# If the Autobuild fails above, remove it and uncomment the following three lines.
|
||||
# modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.
|
||||
|
||||
# - run: |
|
||||
# echo "Run, Build Application using script"
|
||||
# ./location_of_script_within_repo/buildscript.sh
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@df409f7d9260372bd5f19e5b04e83cb3c43714ae # v3.27.9
|
||||
with:
|
||||
category: "/language:${{matrix.language}}"
|
||||
82
.github/workflows/debug-build.yml
vendored
Normal file
@@ -0,0 +1,82 @@
|
||||
name: Debug Build
|
||||
|
||||
on:
|
||||
workflow_dispatch: # 手动触发
|
||||
inputs:
|
||||
platform:
|
||||
type: choice
|
||||
description: '选择测试平台'
|
||||
required: true
|
||||
default: 'ubuntu-22.04'
|
||||
options:
|
||||
- ubuntu-22.04
|
||||
- macos-latest
|
||||
- windows-latest
|
||||
|
||||
jobs:
|
||||
debug-build:
|
||||
runs-on: ${{ inputs.platform }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install Ubuntu dependencies
|
||||
if: inputs.platform == 'ubuntu-22.04'
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y \
|
||||
libwebkit2gtk-4.1-dev \
|
||||
librsvg2-dev \
|
||||
patchelf \
|
||||
libudev-dev \
|
||||
libasound2-dev \
|
||||
pkg-config \
|
||||
libgtk-3-dev \
|
||||
libayatana-appindicator3-dev
|
||||
|
||||
# 验证安装的包
|
||||
dpkg -l | grep -E 'webkit|appindicator|rsvg|udev|asound|gtk'
|
||||
|
||||
# 添加环境变量配置
|
||||
- name: Set up environment variables
|
||||
run: echo "${{ secrets.ENV_LOCAL_CONTENT }}" > .env.local
|
||||
|
||||
# 安装 pnpm
|
||||
- name: Install pnpm
|
||||
uses: pnpm/action-setup@v4
|
||||
with:
|
||||
version: 9
|
||||
run_install: false
|
||||
|
||||
# 设置 Node.js
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '22'
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
|
||||
- name: Build Vite + Tauri
|
||||
run: pnpm build
|
||||
|
||||
# 安装 Rust
|
||||
- name: install Rust stable
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
targets: ${{ inputs.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }}
|
||||
|
||||
- name: Rust cache
|
||||
uses: swatinem/rust-cache@v2
|
||||
with:
|
||||
workspaces: './src-tauri -> target'
|
||||
|
||||
# 只构建不发布
|
||||
- name: Build Tauri app
|
||||
uses: tauri-apps/tauri-action@v0
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
|
||||
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
|
||||
with:
|
||||
releaseId: "debug-build"
|
||||
27
.github/workflows/dependency-review.yml
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
# Dependency Review Action
|
||||
#
|
||||
# This Action will scan dependency manifest files that change as part of a Pull Request,
|
||||
# surfacing known-vulnerable versions of the packages declared or updated in the PR.
|
||||
# Once installed, if the workflow run is marked as required,
|
||||
# PRs introducing known-vulnerable packages will be blocked from merging.
|
||||
#
|
||||
# Source repository: https://github.com/actions/dependency-review-action
|
||||
name: 'Dependency Review'
|
||||
on: [pull_request]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
dependency-review:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Harden Runner
|
||||
uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2
|
||||
with:
|
||||
egress-policy: audit
|
||||
|
||||
- name: 'Checkout Repository'
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
- name: 'Dependency Review'
|
||||
uses: actions/dependency-review-action@3b139cfc5fae8b618d3eae3675e383bb1769c019 # v4.5.0
|
||||
24
.github/workflows/greetings.yml
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
name: Greetings
|
||||
|
||||
on: [pull_request_target, issues]
|
||||
|
||||
# 顶层设置最小权限,推荐 contents: read
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
greeting:
|
||||
# 跳过 Renovate PR
|
||||
if: |
|
||||
github.actor != 'renovate[bot]' &&
|
||||
github.actor != 'renovate-preview[bot]'
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
issues: write
|
||||
pull-requests: write
|
||||
steps:
|
||||
- uses: actions/first-interaction@v1
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
issue-message: "👋 感谢你提出第一个 Issue!我们会尽快查看并回复。请确保已经提供了足够的信息来描述问题。"
|
||||
pr-message: "🎉 感谢你提交第一个 PR!我们很高兴你参与到 HuLa 项目中来。我们会尽快审查你的贡献。"
|
||||
22
.github/workflows/label.yml
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
# This workflow will triage pull requests and apply a label based on the
|
||||
# paths that are modified in the pull request.
|
||||
#
|
||||
# To use this workflow, you will need to set up a .github/labeler.yml
|
||||
# file with configuration. For more information, see:
|
||||
# https://github.com/actions/labeler
|
||||
|
||||
name: Labeler
|
||||
on: [pull_request_target]
|
||||
|
||||
jobs:
|
||||
label:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
|
||||
steps:
|
||||
- uses: actions/labeler@v4
|
||||
with:
|
||||
repo-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||
145
.github/workflows/pr-chatbot-review.yml
vendored
Normal file
@@ -0,0 +1,145 @@
|
||||
name: PR Review Bot
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, synchronize]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
review:
|
||||
# 跳过 Renovate PR
|
||||
if: |
|
||||
github.actor != 'renovate[bot]' &&
|
||||
github.actor != 'renovate-preview[bot]'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Get PR diff
|
||||
id: diff
|
||||
run: |
|
||||
git fetch origin ${{ github.event.pull_request.base.sha }}
|
||||
# 排除配置文件,只分析源代码文件
|
||||
DIFF=$(git diff ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} -- \
|
||||
'src/**/*.vue' \
|
||||
'src/**/*.ts' \
|
||||
'src/**/*.tsx' \
|
||||
'src-tauri/**/*.rs' \
|
||||
':!:**/*.json' \
|
||||
':!:**/*.yaml' \
|
||||
':!:**/*.yml' \
|
||||
':!:**/*.config.*' \
|
||||
':!:**/*.lock' \
|
||||
':!:**/*.toml' \
|
||||
':!:.env*' \
|
||||
':!:.eslintrc*' \
|
||||
':!:.prettierrc*')
|
||||
|
||||
# 如果没有相关文件变更,设置一个提示信息
|
||||
if [ -z "$DIFF" ]; then
|
||||
echo "NO_CHANGES=true" >> $GITHUB_ENV
|
||||
echo "DIFF=没有检测到相关文件的变更。" >> $GITHUB_ENV
|
||||
else
|
||||
echo "NO_CHANGES=false" >> $GITHUB_ENV
|
||||
echo "DIFF<<EOF" >> $GITHUB_ENV
|
||||
echo "$DIFF" >> $GITHUB_ENV
|
||||
echo "EOF" >> $GITHUB_ENV
|
||||
fi
|
||||
|
||||
# 首先安装 pnpm
|
||||
- name: Install pnpm
|
||||
uses: pnpm/action-setup@v4
|
||||
with:
|
||||
version: 9
|
||||
run_install: false
|
||||
|
||||
# 然后设置 Node.js
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '22'
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
pnpm config set registry https://registry.npmmirror.com/
|
||||
pnpm install
|
||||
pnpm add openai
|
||||
|
||||
- name: Analyze PR
|
||||
id: analyze
|
||||
if: env.NO_CHANGES != 'true'
|
||||
uses: actions/github-script@v7
|
||||
env:
|
||||
DASHSCOPE_API_KEY: ${{ secrets.DASHSCOPE_API_KEY }}
|
||||
with:
|
||||
script: |
|
||||
const OpenAI = require('openai');
|
||||
|
||||
const openai = new OpenAI({
|
||||
apiKey: process.env.DASHSCOPE_API_KEY,
|
||||
baseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1"
|
||||
});
|
||||
|
||||
const diff = process.env.DIFF;
|
||||
|
||||
try {
|
||||
const completion = await openai.chat.completions.create({
|
||||
model: "qwen-plus",
|
||||
messages: [{
|
||||
role: "system",
|
||||
content: "你是一个代码审查助手。请用中文分析以下代码变更,重点关注:\n" +
|
||||
"1. 代码逻辑的改动\n" +
|
||||
"2. 潜在的问题或优化空间\n" +
|
||||
"3. TypeScript 类型定义的准确性\n" +
|
||||
"4. Vue 组件的性能影响\n" +
|
||||
"5. Rust 代码的安全性和性能\n" +
|
||||
"请用中文简明扼要地总结。"
|
||||
}, {
|
||||
role: "user",
|
||||
content: `请分析以下代码变更并总结主要改动:\n\n${diff}`
|
||||
}],
|
||||
temperature: 0.7,
|
||||
max_tokens: 1000
|
||||
});
|
||||
|
||||
const analysis = completion.choices[0].message.content;
|
||||
core.setOutput('analysis', analysis);
|
||||
|
||||
await github.rest.issues.createComment({
|
||||
issue_number: context.issue.number,
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
body: `
|
||||
PR 代码分析
|
||||
|
||||
${analysis}
|
||||
|
||||
*这是由通义千问 AI 自动生成的 PR 分析,仅供参考。*`
|
||||
});
|
||||
} catch (error) {
|
||||
core.setFailed(`分析失败: ${error.message}`);
|
||||
}
|
||||
|
||||
- name: Skip Analysis Comment
|
||||
if: env.NO_CHANGES == 'true'
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
await github.rest.issues.createComment({
|
||||
issue_number: context.issue.number,
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
body: `## PR 代码分析
|
||||
|
||||
本次变更不包含需要分析的代码文件(src 目录下的 .vue/.ts/.tsx 文件或 src-tauri 目录下的 .rs 文件)。
|
||||
|
||||
---
|
||||
*这是自动生成的通知。*`
|
||||
});
|
||||
84
.github/workflows/release.yml
vendored
@@ -4,50 +4,98 @@ on:
|
||||
push:
|
||||
tags:
|
||||
- 'v*'
|
||||
workflow_dispatch:
|
||||
|
||||
# 确保默认情况下所有 job 都只有只读权限,只有需要写权限的 job(比如发布 release 的 job)才会单独提升权限,其他 job 依然保持最小权限,最大程度保护仓库安全
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: release-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
cancel-in-progress: true # 如果有新的发布任务,取消正在进行的任务
|
||||
|
||||
jobs:
|
||||
publish:
|
||||
publish-tauri:
|
||||
permissions:
|
||||
contents: write # 授予写入仓库内容的权限
|
||||
strategy:
|
||||
fail-fast: false
|
||||
fail-fast: false # 某个平台构建失败不影响其他平台
|
||||
matrix:
|
||||
platform: [macos-latest, windows-latest]
|
||||
include:
|
||||
- platform: "macos-latest" # for Arm based macs (M1 and above).
|
||||
args: "--target aarch64-apple-darwin"
|
||||
- platform: "macos-latest" # for Intel based macs.
|
||||
args: "--target x86_64-apple-darwin"
|
||||
- platform: "ubuntu-22.04"
|
||||
args: ""
|
||||
- platform: "windows-latest"
|
||||
args: ""
|
||||
|
||||
runs-on: ${{ matrix.platform }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: pnpm/action-setup@v2
|
||||
with:
|
||||
version: 8
|
||||
run_install: true
|
||||
|
||||
# 安装 Node.js
|
||||
- name: Use Node.js
|
||||
- name: install dependencies (ubuntu only)
|
||||
if: matrix.platform == 'ubuntu-22.04'
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y \
|
||||
libwebkit2gtk-4.1-dev \
|
||||
librsvg2-dev \
|
||||
patchelf \
|
||||
libudev-dev \
|
||||
libasound2-dev \
|
||||
pkg-config \
|
||||
libgtk-3-dev \
|
||||
libayatana-appindicator3-dev
|
||||
|
||||
# 添加环境变量配置
|
||||
- name: Set up environment variables
|
||||
run: echo "${{ secrets.ENV_LOCAL_CONTENT }}" > .env.local
|
||||
|
||||
# 首先安装 pnpm
|
||||
- name: Install pnpm
|
||||
uses: pnpm/action-setup@v4
|
||||
with:
|
||||
version: 10
|
||||
run_install: false
|
||||
|
||||
# 然后设置 Node.js
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
node-version: '22'
|
||||
cache: 'pnpm'
|
||||
|
||||
# 安装 Rust
|
||||
- name: install Rust stable
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
toolchain: stable
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
|
||||
- name: Build Vite + Tauri
|
||||
run: pnpm build
|
||||
|
||||
# 安装 Rust
|
||||
- name: install Rust stable
|
||||
uses: dtolnay/rust-toolchain@stable # Set this to dtolnay/rust-toolchain@nightly
|
||||
with:
|
||||
# Those targets are only used on macos runners so it's in an `if` to slightly speed up windows and linux builds.
|
||||
targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }}
|
||||
|
||||
- name: Rust cache
|
||||
uses: swatinem/rust-cache@v2
|
||||
with:
|
||||
workspaces: './src-tauri -> target'
|
||||
|
||||
- name: Create release
|
||||
uses: tauri-apps/tauri-action@v0
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
# 使用之前配置的私钥
|
||||
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
|
||||
# 使用之前配置的私钥密码
|
||||
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
|
||||
with:
|
||||
tagName: v__VERSION__ #这个动作会自动将\_\_VERSION\_\_替换为app version
|
||||
releaseName: 'v__VERSION__'
|
||||
releaseBody: 'See the assets to download and install this version.'
|
||||
releaseDraft: true
|
||||
prerelease: false
|
||||
prerelease: false
|
||||
args: ${{ matrix.args }}
|
||||
58
.github/workflows/rust-clippy.yml
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
# This workflow uses actions that are not certified by GitHub.
|
||||
# They are provided by a third-party and are governed by
|
||||
# separate terms of service, privacy policy, and support
|
||||
# documentation.
|
||||
# rust-clippy is a tool that runs a bunch of lints to catch common
|
||||
# mistakes in your Rust code and help improve your Rust code.
|
||||
# More details at https://github.com/rust-lang/rust-clippy
|
||||
# and https://rust-lang.github.io/rust-clippy/
|
||||
|
||||
name: rust-clippy analyze
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
# The branches below must be a subset of the branches above
|
||||
branches: [ "master" ]
|
||||
paths:
|
||||
- '**/*.rs'
|
||||
|
||||
jobs:
|
||||
rust-clippy-analyze:
|
||||
# 跳过 Renovate PR
|
||||
if: |
|
||||
github.actor != 'renovate[bot]' &&
|
||||
github.actor != 'renovate-preview[bot]'
|
||||
|
||||
name: Run rust-clippy analyzing
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
security-events: write
|
||||
actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install Rust toolchain
|
||||
uses: actions-rs/toolchain@16499b5e05bf2e26879000db0c1d13f7e13fa3af #@v1
|
||||
with:
|
||||
profile: minimal
|
||||
toolchain: stable
|
||||
components: clippy
|
||||
override: true
|
||||
|
||||
- name: Install required cargo
|
||||
run: cargo install clippy-sarif sarif-fmt
|
||||
|
||||
- name: Run rust-clippy
|
||||
run:
|
||||
cargo clippy
|
||||
--all-features
|
||||
--message-format=json | clippy-sarif | tee rust-clippy-results.sarif | sarif-fmt
|
||||
continue-on-error: true
|
||||
|
||||
- name: Upload analysis results to GitHub
|
||||
uses: github/codeql-action/upload-sarif@v3
|
||||
with:
|
||||
sarif_file: rust-clippy-results.sarif
|
||||
wait-for-processing: true
|
||||
20
.gitignore
vendored
@@ -13,16 +13,24 @@ dist-ssr
|
||||
*.local
|
||||
|
||||
# Editor directories and files
|
||||
.vscode/*
|
||||
!.vscode/extensions.json
|
||||
.idea
|
||||
.DS_Store
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
.idea
|
||||
|
||||
# 忽略自动导入的文件
|
||||
/src/typings/auto-imports.d.ts
|
||||
/src/typings/components.d.ts
|
||||
src-tauri/target
|
||||
|
||||
.history/
|
||||
|
||||
/coverage
|
||||
.cursorrules
|
||||
.claude/
|
||||
|
||||
target
|
||||
.claude/
|
||||
*.sqlite
|
||||
db.sqlite
|
||||
.idea
|
||||
|
||||
4
.husky/commit-msg
Normal file
@@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
. "$(dirname "$0")/_/husky.sh"
|
||||
|
||||
npx --no-install commitlint --edit "$1"
|
||||
4
.husky/pre-commit
Normal file
@@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
. "$(dirname "$0")/_/husky.sh"
|
||||
|
||||
pnpm run lint:staged
|
||||
26
.lintstagedrc.mjs
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
import path from 'node:path'
|
||||
|
||||
function createCommand(prefix, join) {
|
||||
return (filenames) => `${prefix} ${filenames.map((f) => path.relative(process.cwd(), f)).join(` ${join} `)}`
|
||||
}
|
||||
|
||||
export default {
|
||||
// JavaScript/TypeScript 文件使用 Biome (排除 .d.ts 文件和tauri-plugin-hula目录)
|
||||
'*.{js,jsx,ts,tsx,json}': [
|
||||
(filenames) => {
|
||||
const filteredFiles = filenames.filter((f) =>
|
||||
!f.includes('src-tauri/') &&
|
||||
!f.includes('tauri-plugin-hula/') &&
|
||||
!f.endsWith('.d.ts')
|
||||
)
|
||||
return filteredFiles.length > 0
|
||||
? `biome check --write --unsafe ${filteredFiles.map((f) => path.relative(process.cwd(), f)).join(' ')}`
|
||||
: 'echo "No files to check"'
|
||||
}
|
||||
],
|
||||
// Vue 文件:使用 Biome 检查和修复,然后用 Prettier 格式化
|
||||
'*.vue': [
|
||||
createCommand('biome check --write --unsafe', ''),
|
||||
createCommand('prettier --write', '')
|
||||
]
|
||||
}
|
||||
4
.npmrc
Normal file
@@ -0,0 +1,4 @@
|
||||
# 配置npm镜像源 (华为云)
|
||||
registry=https://repo.huaweicloud.com/repository/npm/
|
||||
# 严格检查 package.json 中 "engines" 字段指定的版本要求
|
||||
engine-strict=true
|
||||
@@ -4,4 +4,15 @@
|
||||
/node_modules/**
|
||||
**/*.svg
|
||||
**/*.sh
|
||||
/public/*
|
||||
/public/*
|
||||
.idea/**
|
||||
.vscode/**
|
||||
src-tauri/capabilities/**
|
||||
src-tauri/gen/**
|
||||
src-tauri/target/**
|
||||
src-tauri/Cargo.toml
|
||||
tauri-plugin-hula/**
|
||||
CHANGELOG.md
|
||||
auto-imports.d.ts
|
||||
.gitee/**
|
||||
.github/**
|
||||
|
||||
26
.prettierrc
@@ -1,14 +1,14 @@
|
||||
{
|
||||
"singleQuote": true,
|
||||
"semi": false,
|
||||
"printWidth": 120,
|
||||
"useTabs": false,
|
||||
"tabWidth": 2,
|
||||
"jsxSingleQuote": false,
|
||||
"trailingComma": "none",
|
||||
"bracketSpacing": true,
|
||||
"arrowParens": "always",
|
||||
"bracketSameLine": true,
|
||||
"jsxBracketSameLine": true,
|
||||
"endOfLine": "lf"
|
||||
}
|
||||
"singleQuote": true,
|
||||
"semi": false,
|
||||
"printWidth": 120,
|
||||
"useTabs": false,
|
||||
"tabWidth": 2,
|
||||
"trailingComma": "none",
|
||||
"bracketSpacing": true,
|
||||
"arrowParens": "always",
|
||||
"bracketSameLine": true,
|
||||
"endOfLine": "lf",
|
||||
"vueIndentScriptAndStyle": false,
|
||||
"htmlWhitespaceSensitivity": "ignore"
|
||||
}
|
||||
41
.release-it.json
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"plugins": {
|
||||
"@release-it/bumper": {
|
||||
"in": ["src-tauri/tauri.*.json"],
|
||||
"out": ["src-tauri/tauri.*.json"]
|
||||
},
|
||||
"@release-it/conventional-changelog": {
|
||||
"preset": {
|
||||
"name": "conventionalcommits",
|
||||
"types": [
|
||||
{ "type": "feat", "section": "✨ Features | 新功能" },
|
||||
{ "type": "fix", "section": "🐛 Bug Fixes | Bug 修复" },
|
||||
{ "type": "chore", "section": "🎫 Chores | 其他更新", "hidden": true },
|
||||
{ "type": "docs", "section": "📝 Documentation | 文档", "hidden": true },
|
||||
{ "type": "style", "section": "💄 Styles | 风格", "hidden": true },
|
||||
{ "type": "refactor", "section": "♻️ Code Refactoring | 代码重构", "hidden": true },
|
||||
{ "type": "perf", "section": "⚡️ Performance Improvements | 性能优化" },
|
||||
{ "type": "test", "section": "✅ Tests | 测试", "hidden": true },
|
||||
{ "type": "revert", "section": "⏪ Reverts | 回退", "hidden": true },
|
||||
{ "type": "build", "section": "👷 Build System | 构建", "hidden": true },
|
||||
{ "type": "ci", "section": "🔧 Continuous Integration | CI 配置", "hidden": true },
|
||||
{ "type": "config", "section": "🔨 CONFIG | 配置", "hidden": true }
|
||||
]
|
||||
},
|
||||
"infile": "CHANGELOG.md",
|
||||
"ignoreRecommendedBump": true,
|
||||
"strictSemVer": true
|
||||
}
|
||||
},
|
||||
"git": {
|
||||
"commitMessage": "chore: 发布 v${version}"
|
||||
},
|
||||
"npm": {
|
||||
"publish": false
|
||||
},
|
||||
"github": {
|
||||
"release": true,
|
||||
"draft": true,
|
||||
"releaseName": "v${version}"
|
||||
}
|
||||
}
|
||||
32
.vscode/launch.json
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"configurations": [
|
||||
{
|
||||
"type": "node-terminal",
|
||||
"name": "tauri:dev",
|
||||
"request": "launch",
|
||||
"command": "pnpm run tauri:dev",
|
||||
"cwd": "${workspaceFolder}"
|
||||
},
|
||||
{
|
||||
"type": "node-terminal",
|
||||
"name": "tauri:ios:dev",
|
||||
"request": "launch",
|
||||
"command": "pnpm run tauri:ios:dev",
|
||||
"cwd": "${workspaceFolder}"
|
||||
},
|
||||
{
|
||||
"type": "node-terminal",
|
||||
"name": "tauri:android:dev",
|
||||
"request": "launch",
|
||||
"command": "pnpm run tauri:android:dev",
|
||||
"cwd": "${workspaceFolder}"
|
||||
},
|
||||
{
|
||||
"type": "node-terminal",
|
||||
"name": "tauri:build",
|
||||
"request": "launch",
|
||||
"command": "pnpm run tauri:build",
|
||||
"cwd": "${workspaceFolder}"
|
||||
}
|
||||
]
|
||||
}
|
||||
5
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"css.customData": [".vscode/tailwindcss.json"],
|
||||
"java.configuration.updateBuildConfiguration": "disabled",
|
||||
"typescript.tsdk": "node_modules/typescript/lib"
|
||||
}
|
||||
56
.vscode/tailwindcss.json
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
{
|
||||
"version": 1.1,
|
||||
"atDirectives": [
|
||||
{
|
||||
"name": "@tailwind",
|
||||
"description": "Use the `@tailwind` directive to insert Tailwind's `base`, `components`, `utilities` and `screens` styles into your CSS.",
|
||||
"references": [
|
||||
{
|
||||
"name": "Tailwind Documentation",
|
||||
"url": "https://tailwindcss.com/docs/functions-and-directives#tailwind"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "@apply",
|
||||
"description": "Use the `@apply` directive to inline any existing utility classes into your own custom CSS. This is useful when you find a common utility pattern in your HTML that you’d like to extract to a new component.",
|
||||
"references": [
|
||||
{
|
||||
"name": "Tailwind Documentation",
|
||||
"url": "https://tailwindcss.com/docs/functions-and-directives#apply"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "@responsive",
|
||||
"description": "You can generate responsive variants of your own classes by wrapping their definitions in the `@responsive` directive:\n```css\n@responsive {\n .alert {\n background-color: #E53E3E;\n }\n}\n```\n",
|
||||
"references": [
|
||||
{
|
||||
"name": "Tailwind Documentation",
|
||||
"url": "https://tailwindcss.com/docs/functions-and-directives#responsive"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "@screen",
|
||||
"description": "The `@screen` directive allows you to create media queries that reference your breakpoints by **name** instead of duplicating their values in your own CSS:\n```css\n@screen sm {\n /* ... */\n}\n```\n…gets transformed into this:\n```css\n@media (min-width: 640px) {\n /* ... */\n}\n```\n",
|
||||
"references": [
|
||||
{
|
||||
"name": "Tailwind Documentation",
|
||||
"url": "https://tailwindcss.com/docs/functions-and-directives#screen"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "@variants",
|
||||
"description": "Generate `hover`, `focus`, `active` and other **variants** of your own utilities by wrapping their definitions in the `@variants` directive:\n```css\n@variants hover, focus {\n .btn-brand {\n background-color: #3182CE;\n }\n}\n```\n",
|
||||
"references": [
|
||||
{
|
||||
"name": "Tailwind Documentation",
|
||||
"url": "https://tailwindcss.com/docs/functions-and-directives#variants"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
13
.vscode/tasks.json
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"type": "npm",
|
||||
"script": "tauri:build:debug",
|
||||
"group": "build",
|
||||
"problemMatcher": [],
|
||||
"label": "npm: tauri:build:debug",
|
||||
"detail": "tauri build --debug"
|
||||
}
|
||||
]
|
||||
}
|
||||
610
CHANGELOG.md
@@ -1,52 +1,564 @@
|
||||
## <small>1.2.9-alpha (2024-03-08)</small>
|
||||
|
||||
* :bug: fix(custom): 回退vite版本5.0.12导致启动不了端口服务的问题 ([ba99bb2](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/ba99bb2))
|
||||
* :bug: fix(custom): 修复跨标签页没有判断类型的问题 ([e4acbd5](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/e4acbd5))
|
||||
* :bug: fix(custom): 修复新建窗口的问题,修复窗口背景的问题 ([f1010e4](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/f1010e4))
|
||||
* :bug: fix(custom): 修复已知的问题 ([600e224](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/600e224))
|
||||
* :bug: fix(custom): 修复已知问题 ([648995e](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/648995e))
|
||||
* :bug: fix(custom): 修复因为配置的问题导致的代码格式化 ([ed4d825](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/ed4d825))
|
||||
* :lipstick: style(custom): 使用.editorconfig和.gitattributes来约束行分隔符和编辑器设置 ([72808d8](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/72808d8))
|
||||
* :new: version(custom): 发布v1.0.0-alpha版本 ([d2ac653](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/d2ac653))
|
||||
* :sparkles: feat(custom): 新增登录页面样式 ([8f0d27e](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/8f0d27e))
|
||||
* :sparkles: feat(custom): 新增动态页面 ([196d2d1](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/196d2d1))
|
||||
* :sparkles: feat(custom): 新增好友和群聊详情页 ([b11593d](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/b11593d))
|
||||
* :sparkles: feat(custom): 新增好友聊天页面设置侧边栏 ([6a1688b](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/6a1688b))
|
||||
* :sparkles: feat(custom): 新增护眼主题,隐藏窗口默认顶部菜单栏,优化rust打包配置 ([295bde5](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/295bde5))
|
||||
* :sparkles: feat(custom): 新增聊天页面的总体样式 ([5e21671](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/5e21671))
|
||||
* :sparkles: feat(custom): 新增聊天页面页脚显示功能 ([ebd7a41](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/ebd7a41))
|
||||
* :sparkles: feat(custom): 新增输入框功能 ([009c3b0](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/009c3b0))
|
||||
* :sparkles: feat(custom): 新增拖拽排序、消息移除功能 ([393a689](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/393a689))
|
||||
* :sparkles: feat(custom): 新增消息气泡功能(第一版) ([2f2bd45](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/2f2bd45))
|
||||
* :sparkles: feat(custom): 新增右键菜单功能,修复隐藏顶部菜单栏后无法拖拽的问题 ([1b6e719](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/1b6e719))
|
||||
* :sparkles: feat(custom): 新增元素平滑上升的vue指令 ([e973799](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/e973799))
|
||||
* :sparkles: feat(custom): 新增主题切换功能,修复一些已知的问题 ([b6f668f](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/b6f668f))
|
||||
* :sparkles: feat(custom): 新增unocss及其插件 ([2af6767](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/2af6767))
|
||||
* :sunflower: update(custom): 更新侧边栏功能显示 ([acc0194](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/acc0194))
|
||||
* :sunflower: update(custom): 更新登录界面样式 ([2394aa2](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/2394aa2))
|
||||
* :sunflower: update(custom): 更新登录页面的样式,新增二维码登录页面 ([3fbc6b0](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/3fbc6b0))
|
||||
* :sunflower: update(custom): 更新登录页面和多窗口的样式 ([be6bc2d](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/be6bc2d))
|
||||
* :sunflower: update(custom): 更新登录页面样式,更新主页的列表样式 ([ad69ada](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/ad69ada))
|
||||
* :sunflower: update(custom): 更新好友和群聊详情页面 ([16007a2](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/16007a2))
|
||||
* :sunflower: update(custom): 更新聊天框页面的图标样式 ([60bc859](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/60bc859))
|
||||
* :sunflower: update(custom): 更新气泡动画 ([e8dc441](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/e8dc441))
|
||||
* :sunflower: update(custom): 更新图标,新增系统托盘功能 ([3f1ea39](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/3f1ea39))
|
||||
* :sunflower: update(custom): 更新图标风格和主题颜色 ([db566cd](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/db566cd))
|
||||
* :sunflower: update(custom): 更新项目主要依赖版本 ([2a609ff](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/2a609ff))
|
||||
* :sunflower: update(custom): 更新悬浮按钮样式,修复已知的部分问题 ([1f01b7b](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/1f01b7b))
|
||||
* :sunflower: update(custom): 更新依赖版本 ([5c26e4e](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/5c26e4e))
|
||||
* :sunflower: update(custom): 更新用户列表样式 ([80ff121](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/80ff121))
|
||||
* :sunflower: update(custom): 更新右键菜单到信息和用户列表中 ([487767c](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/487767c))
|
||||
* :sunflower: update(custom): 更新右键菜单位置抉择 ([070d1e6](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/070d1e6))
|
||||
* :sunflower: update(custom): 更新右键菜单样式,新增聊天输入框右键菜单 ([4224cbd](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/4224cbd))
|
||||
* :sunflower: update(custom): 更新主页的收缩功能 ([6f58e78](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/6f58e78))
|
||||
* :sunflower: update(custom): 更新主页的样式 ([bf94200](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/bf94200))
|
||||
* :sunflower: update(custom): 更新主页的样式 ([6a39060](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/6a39060))
|
||||
* :sunflower: update(custom): 更新主页消息列表样式 ([910a6c4](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/910a6c4))
|
||||
* :sunflower: update(custom): 更新cz-customizable配置 ([43145e0](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/43145e0))
|
||||
* :sunflower: update(custom): 升级vue、vue-tsc、TS、vite版本 ([27e7bd0](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/27e7bd0))
|
||||
* init 初始化仓库 ([85a59e8](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/85a59e8))
|
||||
* init 初始化项目配置 ([0b48de8](https://gitee.com/nongyehong/HuLa-IM-Tauri/commits/0b48de8))
|
||||
## [2.6.13](https://github.com/HuLaSpark/HuLa/compare/v2.6.12...v2.6.13) (2025-07-04)
|
||||
|
||||
|
||||
### ✨ Features | 新功能
|
||||
|
||||
* **component:** :sparkles: 增加文件类型(除语音、视频)等文件类型的样式兼容 ([99711a7](https://github.com/HuLaSpark/HuLa/commit/99711a73f3296eaefe1281251f76303465cd72d5))
|
||||
* **component:** :sparkles:增加上传视频、文件、音频等功能 ([#292](https://github.com/HuLaSpark/HuLa/issues/292)) ([203af0d](https://github.com/HuLaSpark/HuLa/commit/203af0d06030a6b19c5a2a4705098073f0e9000d))
|
||||
* **view:** :sparkles: 保持窗口位置和大小 ([#287](https://github.com/HuLaSpark/HuLa/issues/287)) ([dfc29fa](https://github.com/HuLaSpark/HuLa/commit/dfc29fa3ed19313f4bc8539a0c788d8c6df3eaab))
|
||||
|
||||
|
||||
### 🐛 Bug Fixes | Bug 修复
|
||||
|
||||
* **common:** :bug: 修复未提示用户错误弹框问题 ([916ab6c](https://github.com/HuLaSpark/HuLa/commit/916ab6c56aeab81b99a14fd2fc6200ffd2226a6a))
|
||||
* **component:** :bug: 修复mac启动依赖问题 ([81d3bc9](https://github.com/HuLaSpark/HuLa/commit/81d3bc9f018ea9ba29baae5867e36cc3d2b35eea))
|
||||
* **component:** :bug: 用户修改当前群聊昵称显示问题 ([e4c43ae](https://github.com/HuLaSpark/HuLa/commit/e4c43aee74d534f2f9d3ee45a97aeb2d3ecfffa6))
|
||||
* **hook:** :bug: 修复pinia初始化报错问题 ([c9cdcc0](https://github.com/HuLaSpark/HuLa/commit/c9cdcc0cc585d260b416c680bc5ccd20dee74526))
|
||||
* macos开发模式样式不生效 ([#299](https://github.com/HuLaSpark/HuLa/issues/299)) ([0a1f4ec](https://github.com/HuLaSpark/HuLa/commit/0a1f4ecd180ad55fdc5be58c1e6798065f37f48e))
|
||||
* **service:** :bug: 修复网络设置后缀为空时,调用接口失败的bug ([cb1fb70](https://github.com/HuLaSpark/HuLa/commit/cb1fb701818f1411da76f0dea3b3e8aef1d049de))
|
||||
* **view:** :bug: 修复文件类型气泡的样式和上传分片功能 ([57ac5c9](https://github.com/HuLaSpark/HuLa/commit/57ac5c98b7be12113367b54406d72f794a1a96e4))
|
||||
* **view:** :bug: 只保持主窗口窗口大小 ([8164e91](https://github.com/HuLaSpark/HuLa/commit/8164e916704dce7f197387f623688a865fe67011))
|
||||
|
||||
|
||||
### ⚡️ Performance Improvements | 性能优化
|
||||
|
||||
* **component:** :zap: 优化webSocket的重连性能和网络检测方法 ([54f32ee](https://github.com/HuLaSpark/HuLa/commit/54f32eec5f4260501c75fa23459ecbcc82e17cb4))
|
||||
* **service:** :zap: 优化webSocket重连机制 ([18ffde1](https://github.com/HuLaSpark/HuLa/commit/18ffde1d49bd661ffc283d68e959b669c4bbb54d))
|
||||
* **store:** :zap: 优化刷新会话列表后,时间和最新消息简介没有更新的问题 ([d2ab29b](https://github.com/HuLaSpark/HuLa/commit/d2ab29bfd585218447641368a55069286e5e2714))
|
||||
|
||||
## [2.6.12](https://github.com/HuLaSpark/HuLa/compare/v2.6.11...v2.6.12) (2025-05-25)
|
||||
|
||||
|
||||
### ✨ Features | 新功能
|
||||
|
||||
* **component:** :sparkles: 增加右键emoji可以另存为 ([0dfdfc1](https://github.com/HuLaSpark/HuLa/commit/0dfdfc1269256baa59316b7936db94468b733b69))
|
||||
* **hook:** :sparkles: 增强文本选择复制 ([791b9cc](https://github.com/HuLaSpark/HuLa/commit/791b9cc69485d9c8245396d72cca834ac9a61aa0)), closes [#279](https://github.com/HuLaSpark/HuLa/issues/279)
|
||||
|
||||
|
||||
### 🐛 Bug Fixes | Bug 修复
|
||||
|
||||
* 修复ws链接断开没有重试问题 ([#276](https://github.com/HuLaSpark/HuLa/issues/276)) ([e068a25](https://github.com/HuLaSpark/HuLa/commit/e068a253e5215aacb606f852087e5e9e67010404))
|
||||
* **agreement:** :bug: 安装界面乱码 ([#277](https://github.com/HuLaSpark/HuLa/issues/277)) ([13c528a](https://github.com/HuLaSpark/HuLa/commit/13c528a35e11ee5fa7325beb1fcef8d28f2550e3)), closes [#275](https://github.com/HuLaSpark/HuLa/issues/275)
|
||||
* **hook:** :bug: 修复除emoji类型和图片类型都可以另存为的bug ([d2b6ab2](https://github.com/HuLaSpark/HuLa/commit/d2b6ab25d6fd7ea5a4e9df1d287fe3d3cc9a1b58))
|
||||
* **hook:** :bug: 修复mac系统右键会选中文本的问题 ([7e762e8](https://github.com/HuLaSpark/HuLa/commit/7e762e8524df0d17f85ca71eedb95d01dea7c8d3))
|
||||
* **hook:** :bug: 暂时移除/唤起ai快捷键识别 ([4a1a05c](https://github.com/HuLaSpark/HuLa/commit/4a1a05cf51b4bab670b2da5faac43bf33f902998))
|
||||
* **input:** :bug: 修复mac下输入框检查拼写和字母大小写问题 ([f8602e5](https://github.com/HuLaSpark/HuLa/commit/f8602e56ebbf4ae90f5f5dc7e7cebee317bf4ab4))
|
||||
* **mac:** :bug: 修复mac下点击关闭按钮无法关闭home窗口问题 ([2a63046](https://github.com/HuLaSpark/HuLa/commit/2a63046bbd2d7c4cd484d456c708ab47bdc8e792))
|
||||
* **view:** :bug: 修复托盘菜单内容不展示问题和托盘图标闪烁后不展示问题 ([c927be4](https://github.com/HuLaSpark/HuLa/commit/c927be4c3fd00cdde9f93c15793ea56ce5b11d14))
|
||||
* **view:** :bug: 修改邮箱输入框长度限制 ([61618db](https://github.com/HuLaSpark/HuLa/commit/61618db93cbe9512eceb66fbc50006a90f7d44f1)), closes [#278](https://github.com/HuLaSpark/HuLa/issues/278)
|
||||
* **worker:** :bug: 修复ws在重连后清空token导致无法对应获取消息问题 ([030fed7](https://github.com/HuLaSpark/HuLa/commit/030fed7d60a6eb03dccb49e6f108b2b5d67161e4))
|
||||
|
||||
|
||||
### ⚡️ Performance Improvements | 性能优化
|
||||
|
||||
* **global:** :zap: 增加ws健康检查兜底刷新最新消息内容、网络断线恢复重连 ([f734dca](https://github.com/HuLaSpark/HuLa/commit/f734dca910b17e3dd8a4d8e5e58cae3e7caaa333))
|
||||
|
||||
## [2.6.11](https://github.com/HuLaSpark/HuLa/compare/v2.6.10...v2.6.11) (2025-05-18)
|
||||
|
||||
|
||||
### ⚠ BREAKING CHANGES
|
||||
|
||||
* **component:** webSocket的计时器调整为worker计时器
|
||||
|
||||
### ✨ Features | 新功能
|
||||
|
||||
* **view:** :sparkles: 新增重置密码功能 ([b45cfd2](https://github.com/HuLaSpark/HuLa/commit/b45cfd22120c9fe46fead1fcb9daf5cc7b25f423))
|
||||
* **view:** :sparkles: 增加修订版本更新检测,修复每次版本变动都更新的bug ([#271](https://github.com/HuLaSpark/HuLa/issues/271)) ([833d09e](https://github.com/HuLaSpark/HuLa/commit/833d09efe4e218d483c37a87cb1bdd39443f46c7))
|
||||
|
||||
|
||||
### 🐛 Bug Fixes | Bug 修复
|
||||
|
||||
* **component:** :bug: 点击头像弹出个人信息面板 ([#273](https://github.com/HuLaSpark/HuLa/issues/273)) ([eaa4288](https://github.com/HuLaSpark/HuLa/commit/eaa42885c33a03d84cc2999c6a77a1eb4d5baf0a))
|
||||
* **component:** :bug: 修复回复消息表情不展示问题 ([f33f41d](https://github.com/HuLaSpark/HuLa/commit/f33f41d41f0f60fb5ab9e0cff6305b0cef548eea))
|
||||
* **component:** :bug: 修复图片截图功能文件大小问题 ([f816314](https://github.com/HuLaSpark/HuLa/commit/f816314115a02e10241f299536db9e54854a510f))
|
||||
* **component:** :bug: 修复因公告宽度导致聊天框布局混乱问题 ([2753e89](https://github.com/HuLaSpark/HuLa/commit/2753e89dd52f7a4a66eca3ffe5e8189bdc266170))
|
||||
* **component:** :bug: 修复mac下更新提示窗口可以调整大小、拖动、标题栏显示问题 ([c761486](https://github.com/HuLaSpark/HuLa/commit/c76148687cd86b2f56d34525bc3d56b859d74a13))
|
||||
* **component:** :bug: 优化windows上群聊的展示时机和样式 ([92dba12](https://github.com/HuLaSpark/HuLa/commit/92dba1218ffc113e9ea492c1ead20732c40bce32))
|
||||
* **ios:** :bug: 修复ios init导致无法启动问题 ([3ef1666](https://github.com/HuLaSpark/HuLa/commit/3ef1666ef7eadae9990fbeed357b5c1ccc085c12))
|
||||
* **notify:** :bug: 修复免打扰时还会触发托盘图标闪烁(windows) ([02ef835](https://github.com/HuLaSpark/HuLa/commit/02ef83585549851836b11dc1e58e7f47e5a06754))
|
||||
* **view:** :bug: 修复系统托盘闪烁和提示菜单内容不显示问题 ([4954b1c](https://github.com/HuLaSpark/HuLa/commit/4954b1cc241ed0275619d7c3b7db2b7ead7e680e))
|
||||
* **view:** :bug: 修复系统托盘信息提示菜单内容展示问题和点击跳转问题 ([2c8b15c](https://github.com/HuLaSpark/HuLa/commit/2c8b15cd3a971de02c50c682b2f3b8902ba52479))
|
||||
* **view:** :bug: 修复win下忘记密码页面背景颜色问题 ([bd825e0](https://github.com/HuLaSpark/HuLa/commit/bd825e0c32534be3cce4788de8b53d9c686c7464))
|
||||
|
||||
|
||||
### ⚡️ Performance Improvements | 性能优化
|
||||
|
||||
* **component:** :zap: 优化群聊成员和公告展示、以及完成搜索会话功能 ([a8bf8e0](https://github.com/HuLaSpark/HuLa/commit/a8bf8e00aba0ea0df35cc165ae0fc71aa333e511))
|
||||
* **component:** :zap: 优化消息回复表情功能 ([2081e99](https://github.com/HuLaSpark/HuLa/commit/2081e99d4ad45b8f13ebf57ae7f6b5cceb6f1dbc))
|
||||
* **component:** :zap: 优化emoji的样式和展示 ([f0aa001](https://github.com/HuLaSpark/HuLa/commit/f0aa0014a9d6a5ff32a537f4900a61ce340db6de))
|
||||
* **service:** :zap: 优化websocket可以在窗口隐藏后继续监听 ([884a53e](https://github.com/HuLaSpark/HuLa/commit/884a53e4484a1a0d0efbcb17f5761ddd80409461))
|
||||
* **view:** :zap: 优化在登录框下未提示更新、右下角窗口可拖动问题 ([777951b](https://github.com/HuLaSpark/HuLa/commit/777951bb8cff2383611a81e9aaaa4fc2c2e7f6a6))
|
||||
|
||||
## [2.6.10](https://github.com/HuLaSpark/HuLa/compare/v2.6.9...v2.6.10) (2025-05-05)
|
||||
|
||||
|
||||
### ✨ Features | 新功能
|
||||
|
||||
* **component:** :sparkles: 增加公告类型消息 ([f0b0656](https://github.com/HuLaSpark/HuLa/commit/f0b0656ddc874a597a49de2e4f8666913730e759))
|
||||
* **view:** :sparkles: 新增发布群公告功能 ([#259](https://github.com/HuLaSpark/HuLa/issues/259)) ([87fc30d](https://github.com/HuLaSpark/HuLa/commit/87fc30d170996022379b45d9b94110edbe1c5c74))
|
||||
|
||||
|
||||
### 🐛 Bug Fixes | Bug 修复
|
||||
|
||||
* **chat:** 隔离聊天窗口内部数据 ([#258](https://github.com/HuLaSpark/HuLa/issues/258)) ([635f729](https://github.com/HuLaSpark/HuLa/commit/635f72996b8e03e1c00bc20fe9ad870ae8d303f4))
|
||||
* **component:** :bug: 修复表情包圆角样式 ([e5e1725](https://github.com/HuLaSpark/HuLa/commit/e5e1725d42b41c2bc518e5f4c91cbdbb5f2a3421))
|
||||
* **component:** :bug: 修复公告排序问题、公告加载更多重复数据问题 ([8d21d22](https://github.com/HuLaSpark/HuLa/commit/8d21d2228a6f743faa1aa4bf635d9fe8d41efd1f))
|
||||
* **component:** :bug: 修复链接卡片无法点击后默认浏览器打开的问题 ([296a944](https://github.com/HuLaSpark/HuLa/commit/296a944c9f0312548e668ae1a6b831d821b502d2))
|
||||
* **component:** :bug: 修复全选意外选中全部内容的问题 ([6616a93](https://github.com/HuLaSpark/HuLa/commit/6616a932c57a7189d1540575332471d03684f49b))
|
||||
* **component:** :bug: 修改群聊中群消息设置逻辑 ([62460fb](https://github.com/HuLaSpark/HuLa/commit/62460fbfe04802764d5a4d60430d587ecbee528d))
|
||||
* **component:** :bug: 修改url文本解析样式 ([0d5455c](https://github.com/HuLaSpark/HuLa/commit/0d5455c9c590406878c572b667dbf8d21ae7a5b1))
|
||||
* **readme:** :bug: 修改readme中的描述 ([91feb14](https://github.com/HuLaSpark/HuLa/commit/91feb14ff4fa77c6bb11aeddd90863cd197fec78))
|
||||
|
||||
|
||||
### ⚡️ Performance Improvements | 性能优化
|
||||
|
||||
* **component:** :zap: 优化消息点赞和不满功能 ([4d17127](https://github.com/HuLaSpark/HuLa/commit/4d171273e9ba4f6e584206720eeae636d72626e6))
|
||||
|
||||
## [2.6.9](https://github.com/HuLaSpark/HuLa/compare/v2.6.8...v2.6.9) (2025-04-20)
|
||||
|
||||
|
||||
### ✨ Features | 新功能
|
||||
|
||||
* 回复可以回复表情包、图片 ([#251](https://github.com/HuLaSpark/HuLa/issues/251)) ([4180906](https://github.com/HuLaSpark/HuLa/commit/418090604a08a189ae94d487f762406a3bc853ab))
|
||||
* **hooks:** 优化消息类型判断逻辑 ([#249](https://github.com/HuLaSpark/HuLa/issues/249)) ([82c3fd5](https://github.com/HuLaSpark/HuLa/commit/82c3fd529c96153a198f1425d02751173761de0b))
|
||||
* **view:** :sparkles: 新增中版本强制更新功能 ([#252](https://github.com/HuLaSpark/HuLa/issues/252)) ([edbd3de](https://github.com/HuLaSpark/HuLa/commit/edbd3defccdfe0d1b6163e82193316f3044217db)), closes [#183](https://github.com/HuLaSpark/HuLa/issues/183) [#183](https://github.com/HuLaSpark/HuLa/issues/183) [#183](https://github.com/HuLaSpark/HuLa/issues/183)
|
||||
* **view:** :sparkles: 新增子窗口创建方式和邀请加群功能 ([b2a15ca](https://github.com/HuLaSpark/HuLa/commit/b2a15ca5e219b32115702d06f937a396ddaf57c5))
|
||||
* **worker:** :sparkles: 代理实现 ([#232](https://github.com/HuLaSpark/HuLa/issues/232)) ([d4bf21d](https://github.com/HuLaSpark/HuLa/commit/d4bf21d464cc1faea22abcb5369daef6360cd1e0)), closes [#197](https://github.com/HuLaSpark/HuLa/issues/197)
|
||||
|
||||
|
||||
### 🐛 Bug Fixes | Bug 修复
|
||||
|
||||
* 修复回复框错位 BUG ([#256](https://github.com/HuLaSpark/HuLa/issues/256)) ([e46ee95](https://github.com/HuLaSpark/HuLa/commit/e46ee95bb872812101fb0938a6ffdf161a28308f)), closes [#253](https://github.com/HuLaSpark/HuLa/issues/253)
|
||||
* **common:** :bug: 修复回复表情包或者emoji的时候位置偏移 ([f9a2b18](https://github.com/HuLaSpark/HuLa/commit/f9a2b184735a718ea1063f0914837d0bef36367c))
|
||||
* **common:** :bug: 修复FloatBlockList组件悬浮层bug ([2b9a7ed](https://github.com/HuLaSpark/HuLa/commit/2b9a7edaef876aeea2a9c4605e136c413675a4f2))
|
||||
* **config:** :bug: 修复renovate配置问题 ([6b02f3f](https://github.com/HuLaSpark/HuLa/commit/6b02f3fc61f73bf65e594e9aa23aa610996be429))
|
||||
* **hook:** :bug: 修复回复时出现空格符和回复替换等问题 ([b8c3c4e](https://github.com/HuLaSpark/HuLa/commit/b8c3c4eec26212a584f3e368c7b4782b2c5e8f07))
|
||||
* **hook:** :bug: 修改mac下子窗口创建逻辑 ([7f8795c](https://github.com/HuLaSpark/HuLa/commit/7f8795c36a158359aaf82e491c927ddf5c80c8ee))
|
||||
* **hooks:** :bug: 修复一些xss的问题 ([bcce4a0](https://github.com/HuLaSpark/HuLa/commit/bcce4a01d4a0955d82dcbb82ec570435fa69a343))
|
||||
* **layout:** :bug: 回退增加系统通知功能 ([c7fbdd7](https://github.com/HuLaSpark/HuLa/commit/c7fbdd7a0290355a186732f2419ceddc20741e01))
|
||||
* **message:** 将消息内容解析为文本而不当做 HTML 处理 [#237](https://github.com/HuLaSpark/HuLa/issues/237) ([#246](https://github.com/HuLaSpark/HuLa/issues/246)) ([3441b8a](https://github.com/HuLaSpark/HuLa/commit/3441b8a28286c9e69f27338a6974ebd26eeb69bf))
|
||||
* **Plugins:** :bug: 修复插件卸载后,重新打开插件列表,状态依旧是安装状态问题 ([#247](https://github.com/HuLaSpark/HuLa/issues/247)) ([3cee949](https://github.com/HuLaSpark/HuLa/commit/3cee9498d79a0f2b00fd5ecbac87f3d260d4b449))
|
||||
* **Plugins:** :bug: 修复插件卸载后,重新打开插件列表,状态依旧是安装状态问题(list布局) ([#248](https://github.com/HuLaSpark/HuLa/issues/248)) ([9e4f31e](https://github.com/HuLaSpark/HuLa/commit/9e4f31ea526230a0ce0e1f8b48302c3dc5792eb8))
|
||||
* **view:** :bug: 修复会话中转义字符的问题 ([b793f71](https://github.com/HuLaSpark/HuLa/commit/b793f71f26507a4e9b6402dd8a3dd3cfac75c5f8))
|
||||
|
||||
|
||||
### ⚡️ Performance Improvements | 性能优化
|
||||
|
||||
* **component:** :zap: 优化链接的展示和解析 ([74bf370](https://github.com/HuLaSpark/HuLa/commit/74bf3702c73b751c0e3165c357064136896d548f))
|
||||
* **component:** :zap: 优化屏蔽后的逻辑 ([2a5b9de](https://github.com/HuLaSpark/HuLa/commit/2a5b9de68b64ceacd535074aaf6284060d869918))
|
||||
* **component:** :zap: 优化群备注和群昵称(beta) ([fab231a](https://github.com/HuLaSpark/HuLa/commit/fab231a9166acac97d50426109e2e37364a2d794))
|
||||
* **rust:** :zap: 修改mac系统托盘的右键菜单 ([6dbfa49](https://github.com/HuLaSpark/HuLa/commit/6dbfa496b4c18581e5915890033c6ebdf65a6976))
|
||||
|
||||
## [2.6.8](https://github.com/HuLaSpark/HuLa/compare/v2.6.7...v2.6.8) (2025-03-26)
|
||||
|
||||
|
||||
### ✨ Features | 新功能
|
||||
|
||||
* **component:** :sparkles: 增加兼容七牛云上传功能 ([eca26a9](https://github.com/HuLaSpark/HuLa/commit/eca26a977d315da23dec8c178b96b7db3b8a804f))
|
||||
* **component:** :sparkles: 增加邮箱登录、PIN输入框 ([4be6db7](https://github.com/HuLaSpark/HuLa/commit/4be6db7d31e77efd93cef9c4108ae0a8cc7ef2e0))
|
||||
|
||||
|
||||
### 🐛 Bug Fixes | Bug 修复
|
||||
|
||||
* **chat:** 修复回复消息导致光标偏移 [#223](https://github.com/HuLaSpark/HuLa/issues/223) ([#224](https://github.com/HuLaSpark/HuLa/issues/224)) ([2cbf727](https://github.com/HuLaSpark/HuLa/commit/2cbf7273fb107de1bf363958758aa0a61e1206b4))
|
||||
* **component:** 🐛 使用setShow手动触发Popover显示 ([#230](https://github.com/HuLaSpark/HuLa/issues/230)) ([28fdc79](https://github.com/HuLaSpark/HuLa/commit/28fdc79e1891ca0f81cafe44d65c806bf2bda4f8)), closes [#210](https://github.com/HuLaSpark/HuLa/issues/210) [#210](https://github.com/HuLaSpark/HuLa/issues/210) [#210](https://github.com/HuLaSpark/HuLa/issues/210)
|
||||
* **hooks:** replace focus call with focusOn function in useMsgInput ([#227](https://github.com/HuLaSpark/HuLa/issues/227)) ([9deefc0](https://github.com/HuLaSpark/HuLa/commit/9deefc0fa21df42def3aac8012d622e46a270ef4)), closes [#151](https://github.com/HuLaSpark/HuLa/issues/151)
|
||||
* Implement placeholder by CSS ([#226](https://github.com/HuLaSpark/HuLa/issues/226)) ([9e867c6](https://github.com/HuLaSpark/HuLa/commit/9e867c672c482e3ca38b03033d80cd79df1c457d))
|
||||
|
||||
## [2.6.7](https://github.com/HuLaSpark/HuLa/compare/v2.6.6...v2.6.7) (2025-03-18)
|
||||
|
||||
|
||||
### ✨ Features | 新功能
|
||||
|
||||
* **component:** :sparkles: 增加表情包功能 ([f0e9f27](https://github.com/HuLaSpark/HuLa/commit/f0e9f27c5fbf28759c5f6520ba49af5649714bb1))
|
||||
* **component:** :sparkles: 增加动画表情处理 ([bc65a3b](https://github.com/HuLaSpark/HuLa/commit/bc65a3bd5a97255dbaade6fc4f5e63f29647fdcf))
|
||||
* **component:** :sparkles: 增加会话列表右键菜单功能(免打扰) ([6731c89](https://github.com/HuLaSpark/HuLa/commit/6731c89c32ed32c38d1913876d3e9df3d168f969))
|
||||
* **component:** :sparkles: 增加localStorage缓存消息列表(暂时) ([e714431](https://github.com/HuLaSpark/HuLa/commit/e7144313a4858bd5c918e9d9a4d377b0ce8cadbc))
|
||||
* **vite:** add vite-plugin-vue-devtools for enhanced debugging ([#219](https://github.com/HuLaSpark/HuLa/issues/219)) ([a8b548c](https://github.com/HuLaSpark/HuLa/commit/a8b548cb0bca1eedcd5d16e4589eded8761d2455))
|
||||
|
||||
|
||||
### 🐛 Bug Fixes | Bug 修复
|
||||
|
||||
* **chat-editor:** record cursor position correctly ([#221](https://github.com/HuLaSpark/HuLa/issues/221)) ([6ad6c58](https://github.com/HuLaSpark/HuLa/commit/6ad6c586912eeeb04a6ea49d9bbf0b5962fdfcc6))
|
||||
* **component:** :bug: 完善消息免打扰功能和样式 ([0eed677](https://github.com/HuLaSpark/HuLa/commit/0eed67780521a28cb51a4272498add8f008f784f))
|
||||
* **component:** :bug: 修复缓存存储问题、会话切换后聊天框内容混合问题 ([51b7d62](https://github.com/HuLaSpark/HuLa/commit/51b7d621fad80cee15aedf201068103c4e88a23d))
|
||||
* **component:** :bug: 修复回复的内容宽度问题 ([0dcddfc](https://github.com/HuLaSpark/HuLa/commit/0dcddfc810b731e194c2a37f16d56473bbf0607a))
|
||||
* **component:** :bug: 修复新消息回复无法跳转问题 ([65264b3](https://github.com/HuLaSpark/HuLa/commit/65264b3dacb8820a9938f107408ec31306a0738e))
|
||||
* **component:** :bug: 修复用户上线推送的数据类型错误问题 ([474a388](https://github.com/HuLaSpark/HuLa/commit/474a3886f45476e2640a86f3fb8c991fc96399ee))
|
||||
* **component:** :bug: 修复右键二级菜单图标错误bug ([0b97ccb](https://github.com/HuLaSpark/HuLa/commit/0b97ccb76785e5f8a13466ad93a8b32beb213572))
|
||||
* **component:** :bug: 修复win下聊天框滚动条隐藏坍塌问题和会话快速切换的异步竞态问题 ([a39c054](https://github.com/HuLaSpark/HuLa/commit/a39c054b6264fb2cc0addfb2d1970b880ba53fd4))
|
||||
* **layout:** :bug: 修复F5刷新会使窗口变大的bug ([#214](https://github.com/HuLaSpark/HuLa/issues/214)) ([51baa1a](https://github.com/HuLaSpark/HuLa/commit/51baa1a907a1339d354fbe3f131cdf87a9d9a49a))
|
||||
* **store:** :bug: 修复群聊列表获取不到问题(后续把stores中定义的reactive换为ref) ([40e9786](https://github.com/HuLaSpark/HuLa/commit/40e97862153a084542bb263f2d5bd33f3dc39472))
|
||||
* **util:** :bug: 修复消息上报在未登录的时候触发问题 ([34e6633](https://github.com/HuLaSpark/HuLa/commit/34e663373b1885fab34724b6ef2091a9bb9a9bc0))
|
||||
* **view:** :bug: 修复重新启动应用后的登录逻辑 ([1560cb4](https://github.com/HuLaSpark/HuLa/commit/1560cb4a0bc8729f4b008ba8c96ee6918a8b6dfe))
|
||||
|
||||
|
||||
### ⚡️ Performance Improvements | 性能优化
|
||||
|
||||
* **component:** :zap: 优化好友申请列表 ([52f9047](https://github.com/HuLaSpark/HuLa/commit/52f9047299282c1d5b2f67efbd6f2fc865fc476e))
|
||||
* **component:** :zap: 优化好友申请列表和群详情 ([15d16e5](https://github.com/HuLaSpark/HuLa/commit/15d16e567f2082c0ee87939a9816e1c7c84ae362))
|
||||
* **component:** :zap: 优化好友页面和聊天页面切换需要重新加载问题 ([20f52e4](https://github.com/HuLaSpark/HuLa/commit/20f52e471bd8684036b1ecfa8ecf6064ea75cc18))
|
||||
* **component:** :zap: 优化群聊操作(我的群昵称、群备注、群名称) ([dcf4664](https://github.com/HuLaSpark/HuLa/commit/dcf4664a185b6ab83b324a9e40e191b99c6e09a9))
|
||||
* **component:** :zap: 优化群聊详情显示 ([6960555](https://github.com/HuLaSpark/HuLa/commit/696055585c9d734d069b0d9d797aad7b62cd88ee))
|
||||
* **component:** :zap: 优化头像上传功能(群头像) ([7e865c7](https://github.com/HuLaSpark/HuLa/commit/7e865c7cb0e6f1c6d4fb87c1a95a8aa2471304fa))
|
||||
* **component:** :zap: 优化消息列表 ([1bc38ba](https://github.com/HuLaSpark/HuLa/commit/1bc38ba4c1dea8d0ca830166b9bbbc3e6f41c845))
|
||||
* **component:** :zap: 优化虚拟列表 ([19d699b](https://github.com/HuLaSpark/HuLa/commit/19d699b19f7e324ca01c852400add6a98ed3ef5f))
|
||||
* **component:** :zap: 优化虚拟列表滚动掉帧问题 ([3bea8d9](https://github.com/HuLaSpark/HuLa/commit/3bea8d9f02ae179528b8673eb3f9cc6894a58381))
|
||||
* **component:** :zap: 优化虚拟列表加载更多闪屏的问题和消息气泡动画问题 ([530ce3e](https://github.com/HuLaSpark/HuLa/commit/530ce3e63d74d97a2fbc10ad862a7fe166365bb0))
|
||||
* **component:** :zap: 优化右键二级菜单弹出的问题 ([90d55bb](https://github.com/HuLaSpark/HuLa/commit/90d55bb4baefa287fd458ed8f089786a9fb5d372))
|
||||
* **component:** :zap: 优化右键二级菜单点击事件不触发问题、拆分屏蔽消息和免打扰功能 ([29bec4f](https://github.com/HuLaSpark/HuLa/commit/29bec4f373d2e8ce1dbcc5a88d02844b70a0b9e1))
|
||||
* **view:** :zap: 优化群主管理员标签样式 ([64eefbe](https://github.com/HuLaSpark/HuLa/commit/64eefbe7bdaef03b4598776c64f01ecdbe90626d))
|
||||
* **view:** :zap: 优化申请群聊功能 ([c492c0d](https://github.com/HuLaSpark/HuLa/commit/c492c0d18e9b0288ae45827b71bd29f4632bb636))
|
||||
* **view:** :zap: 优化项目中类型的编写和定义方式 ([a832dc1](https://github.com/HuLaSpark/HuLa/commit/a832dc1220468de33f724c78256047a84ff62811))
|
||||
|
||||
# Changelog
|
||||
|
||||
## <small>2.6.6 (2025-03-01)</small>
|
||||
|
||||
* fix(global): :bug: 修复一些内容的类型问题 ([2c16343](https://github.com/HuLaSpark/HuLa/commit/2c16343))
|
||||
* fix(service): :bug: 修复oss接口配置问题 ([5e2f6e4](https://github.com/HuLaSpark/HuLa/commit/5e2f6e4))
|
||||
* perf(component): :zap: 优化一些功能的操作体验和样式 ([31c1709](https://github.com/HuLaSpark/HuLa/commit/31c1709))
|
||||
* perf(service): :zap: 优化http模块 ([801ec4e](https://github.com/HuLaSpark/HuLa/commit/801ec4e))
|
||||
* feat(component): :sparkles: 增加预加载页面样式 ([90f108a](https://github.com/HuLaSpark/HuLa/commit/90f108a))
|
||||
|
||||
## <small>2.6.5 (2025-02-27)</small>
|
||||
|
||||
* fix(common): :bug: 修复登出账号时没有清空系统托盘图标上的未读数(MacOS) ([383a776](https://github.com/HuLaSpark/HuLa/commit/383a776))
|
||||
* fix(component): :bug: 修复加好友/群聊顶部栏不可操作问题和窗口通信响应式问题 ([b08e7d8](https://github.com/HuLaSpark/HuLa/commit/b08e7d8))
|
||||
* fix(component): :bug: 修复跳转到会话选中回退第一个问题 ([029f3f9](https://github.com/HuLaSpark/HuLa/commit/029f3f9))
|
||||
* fix(config): :bug: 修复检查更新问题(暂时先切换回github) ([d6d488b](https://github.com/HuLaSpark/HuLa/commit/d6d488b))
|
||||
* fix(file): :bug: 修复git未监听文件名大小写修改 ([9a8659b](https://github.com/HuLaSpark/HuLa/commit/9a8659b))
|
||||
* fix(git): :bug: 删除多余的文件,导致打包出错 ([df7fed3](https://github.com/HuLaSpark/HuLa/commit/df7fed3))
|
||||
* fix(global): :bug: 修改全局使用到的一些类型为string ([3333aa0](https://github.com/HuLaSpark/HuLa/commit/3333aa0)), closes [#211](https://github.com/HuLaSpark/HuLa/issues/211)
|
||||
* fix(worker): :bug: 修复ws连接问题和一些页面组件问题 ([eadea02](https://github.com/HuLaSpark/HuLa/commit/eadea02))
|
||||
* perf(component): :zap: 优化侧边栏功能 ([d1f831d](https://github.com/HuLaSpark/HuLa/commit/d1f831d))
|
||||
* perf(component): :zap: 优化加好友/群聊窗体样式和功能 ([6716913](https://github.com/HuLaSpark/HuLa/commit/6716913))
|
||||
* perf(component): :zap: 优化自动登录功能 ([5cb9bfc](https://github.com/HuLaSpark/HuLa/commit/5cb9bfc))
|
||||
* perf(service): :zap: 优化群聊功能 (#208) ([0e07e33](https://github.com/HuLaSpark/HuLa/commit/0e07e33)), closes [#208](https://github.com/HuLaSpark/HuLa/issues/208)
|
||||
* perf(view): :zap: 优化登录逻辑 ([67cad46](https://github.com/HuLaSpark/HuLa/commit/67cad46))
|
||||
* perf(view): :zap: 优化群聊侧边栏用户信息展示 ([4b03f57](https://github.com/HuLaSpark/HuLa/commit/4b03f57))
|
||||
* perf(view): :zap: 优化群聊侧边栏状态展示和聊天框顶部栏状态展示 ([e15cf9b](https://github.com/HuLaSpark/HuLa/commit/e15cf9b))
|
||||
* perf(view): :zap: 优化图片查看器 ([22f84f1](https://github.com/HuLaSpark/HuLa/commit/22f84f1))
|
||||
* feat(component): :sparkles: 新增用户状态切换 ([5098733](https://github.com/HuLaSpark/HuLa/commit/5098733))
|
||||
* feat(service): :sparkles: 增加双token校验 ([776b6ec](https://github.com/HuLaSpark/HuLa/commit/776b6ec)), closes [#IBNT91](https://github.com/HuLaSpark/HuLa/issues/IBNT91)
|
||||
* feat(view): :sparkles: 添加好友或群,基本完成了查找添加好友相关的内容,可以查出来群聊信息暂时还没有写添加 (#209) ([90a8985](https://github.com/HuLaSpark/HuLa/commit/90a8985)), closes [#209](https://github.com/HuLaSpark/HuLa/issues/209)
|
||||
* chore: 发布 v2.6.4 ([ac9d922](https://github.com/HuLaSpark/HuLa/commit/ac9d922))
|
||||
* [Snyk] Upgrade @tauri-apps/plugin-clipboard-manager from 2.2.0 to 2.2.1 (#206) ([54354c6](https://github.com/HuLaSpark/HuLa/commit/54354c6)), closes [#206](https://github.com/HuLaSpark/HuLa/issues/206)
|
||||
* [Snyk] Upgrade @tauri-apps/plugin-http from 2.2.0 to 2.3.0 (#207) ([cbf5f4d](https://github.com/HuLaSpark/HuLa/commit/cbf5f4d)), closes [#207](https://github.com/HuLaSpark/HuLa/issues/207)
|
||||
* docs(readme): :memo: 更新赞助者名单 ([4d9aabe](https://github.com/HuLaSpark/HuLa/commit/4d9aabe))
|
||||
|
||||
|
||||
### BREAKING CHANGE
|
||||
|
||||
* 一次性查出多条。添加好友用的是AddFriendsModal.vu页面进行一些修改,
|
||||
|
||||
closed https://gitee.com/HuLaSpark/HuLa/issues/IBJYSD
|
||||
|
||||
* fix(view): :bug: 修改创建窗体minH的问题
|
||||
|
||||
## <small>2.6.4 (2025-02-21)</small>
|
||||
|
||||
* fix(common): :bug: 修复登出账号时没有清空系统托盘图标上的未读数(MacOS) ([383a776](https://github.com/HuLaSpark/HuLa/commit/383a776))
|
||||
* fix(component): :bug: 修复跳转到会话选中回退第一个问题 ([029f3f9](https://github.com/HuLaSpark/HuLa/commit/029f3f9))
|
||||
* fix(config): :bug: 修复检查更新问题(暂时先切换回github) ([d6d488b](https://github.com/HuLaSpark/HuLa/commit/d6d488b))
|
||||
* fix(file): :bug: 修复git未监听文件名大小写修改 ([9a8659b](https://github.com/HuLaSpark/HuLa/commit/9a8659b))
|
||||
* fix(git): :bug: 删除多余的文件,导致打包出错 ([df7fed3](https://github.com/HuLaSpark/HuLa/commit/df7fed3))
|
||||
* fix(worker): :bug: 修复ws连接问题和一些页面组件问题 ([eadea02](https://github.com/HuLaSpark/HuLa/commit/eadea02))
|
||||
* feat(component): :sparkles: 新增用户状态切换 ([5098733](https://github.com/HuLaSpark/HuLa/commit/5098733))
|
||||
* feat(service): :sparkles: 增加双token校验 ([776b6ec](https://github.com/HuLaSpark/HuLa/commit/776b6ec)), closes [#IBNT91](https://github.com/HuLaSpark/HuLa/issues/IBNT91)
|
||||
* [Snyk] Upgrade @tauri-apps/plugin-clipboard-manager from 2.2.0 to 2.2.1 (#206) ([54354c6](https://github.com/HuLaSpark/HuLa/commit/54354c6)), closes [#206](https://github.com/HuLaSpark/HuLa/issues/206)
|
||||
* [Snyk] Upgrade @tauri-apps/plugin-http from 2.2.0 to 2.3.0 (#207) ([cbf5f4d](https://github.com/HuLaSpark/HuLa/commit/cbf5f4d)), closes [#207](https://github.com/HuLaSpark/HuLa/issues/207)
|
||||
* perf(view): :zap: 优化群聊侧边栏用户信息展示 ([4b03f57](https://github.com/HuLaSpark/HuLa/commit/4b03f57))
|
||||
* perf(view): :zap: 优化群聊侧边栏状态展示和聊天框顶部栏状态展示 ([e15cf9b](https://github.com/HuLaSpark/HuLa/commit/e15cf9b))
|
||||
* perf(view): :zap: 优化图片查看器 ([22f84f1](https://github.com/HuLaSpark/HuLa/commit/22f84f1))
|
||||
* docs(readme): :memo: 更新赞助者名单 ([4d9aabe](https://github.com/HuLaSpark/HuLa/commit/4d9aabe))
|
||||
|
||||
## <small>2.6.3 (2025-02-15)</small>
|
||||
|
||||
* feat(component): :sparkles: 增加更换头像功能 ([63ba2e6](https://github.com/HuLaSpark/HuLa/commit/63ba2e6))
|
||||
* feat(directive): :sparkles: 新增图片查看器 ([6a06f32](https://github.com/HuLaSpark/HuLa/commit/6a06f32))
|
||||
* feat(preview): :sparkles: 增加本地开发配置以及赞助渠道 ([788da74](https://github.com/HuLaSpark/HuLa/commit/788da74))
|
||||
* feat(service): ✨ 可选参数禁用http请求重试 (#202) ([223b9f2](https://github.com/HuLaSpark/HuLa/commit/223b9f2)), closes [#202](https://github.com/HuLaSpark/HuLa/issues/202)
|
||||
* build(deps-dev): bump vitest from 3.0.1 to 3.0.5 (#201) ([2a857e3](https://github.com/HuLaSpark/HuLa/commit/2a857e3)), closes [#201](https://github.com/HuLaSpark/HuLa/issues/201)
|
||||
* build(deps): bump dompurify from 3.2.3 to 3.2.4 (#205) ([835fb88](https://github.com/HuLaSpark/HuLa/commit/835fb88)), closes [#205](https://github.com/HuLaSpark/HuLa/issues/205)
|
||||
* build(mobile): :package: 修改移动端文件的位置和配置 ([12e81fd](https://github.com/HuLaSpark/HuLa/commit/12e81fd))
|
||||
* perf(common): :zap: 优化图片查看器和请求重试报错机制 ([25c39b7](https://github.com/HuLaSpark/HuLa/commit/25c39b7))
|
||||
* perf(component): :zap: 优化图片查看器 ([3afd91e](https://github.com/HuLaSpark/HuLa/commit/3afd91e))
|
||||
* fix(view): :bug: 修复好友申请方不知道对方已同意的bug (#203) ([01fd658](https://github.com/HuLaSpark/HuLa/commit/01fd658)), closes [#203](https://github.com/HuLaSpark/HuLa/issues/203)
|
||||
* Dev retry (#199) ([7abc4b3](https://github.com/HuLaSpark/HuLa/commit/7abc4b3)), closes [#199](https://github.com/HuLaSpark/HuLa/issues/199)
|
||||
* docs: :memo: 更新wx群二维码 ([1ad09e6](https://github.com/HuLaSpark/HuLa/commit/1ad09e6))
|
||||
|
||||
## <small>2.6.2 (2025-01-23)</small>
|
||||
|
||||
* feat(strategy): :sparkles: 增加表情包功能支持 ([6b19f07](https://github.com/HuLaSpark/HuLa/commit/6b19f07))
|
||||
* feat(strategy): :sparkles: 增加发送图片功能(beta) ([f1aef7c](https://github.com/HuLaSpark/HuLa/commit/f1aef7c))
|
||||
* chore(deps): update dependency vite to v6.0.9 [security] (#195) ([5777318](https://github.com/HuLaSpark/HuLa/commit/5777318)), closes [#195](https://github.com/HuLaSpark/HuLa/issues/195)
|
||||
* perf(component): :zap: 优化组件加载、浏览器指纹生成 (#192) ([0252956](https://github.com/HuLaSpark/HuLa/commit/0252956)), closes [#192](https://github.com/HuLaSpark/HuLa/issues/192)
|
||||
* perf(icon): :zap: 修改全平台icon(除了mac) (#193) ([eea52ea](https://github.com/HuLaSpark/HuLa/commit/eea52ea)), closes [#193](https://github.com/HuLaSpark/HuLa/issues/193)
|
||||
* perf(view): :zap: 优化已删除好友的界面展示 ([69d7722](https://github.com/HuLaSpark/HuLa/commit/69d7722))
|
||||
|
||||
## <small>2.6.1 (2025-01-17)</small>
|
||||
|
||||
* fix(Android): :bug: 修复安卓启动配置 (#191) ([5176aee](https://github.com/HuLaSpark/HuLa/commit/5176aee)), closes [#191](https://github.com/HuLaSpark/HuLa/issues/191)
|
||||
* fix(build): :bug: 去除alsa-sys的安装 ([b5f8402](https://github.com/HuLaSpark/HuLa/commit/b5f8402))
|
||||
* fix(build): :bug: 修复ubuntu alsa-sys包版本 (#145) ([0840d7e](https://github.com/HuLaSpark/HuLa/commit/0840d7e)), closes [#145](https://github.com/HuLaSpark/HuLa/issues/145)
|
||||
* fix(build): :bug: 修复ubuntu CI打包问题 (#144) ([c4f46f8](https://github.com/HuLaSpark/HuLa/commit/c4f46f8)), closes [#144](https://github.com/HuLaSpark/HuLa/issues/144)
|
||||
* fix(common): :bug: 修复系统托盘状态切换问题 (#153) ([00e2a89](https://github.com/HuLaSpark/HuLa/commit/00e2a89)), closes [#153](https://github.com/HuLaSpark/HuLa/issues/153)
|
||||
* fix(common): :bug: 修复set_badge_count方法没有处理报错问题 (#140) ([4d4bd9c](https://github.com/HuLaSpark/HuLa/commit/4d4bd9c)), closes [#140](https://github.com/HuLaSpark/HuLa/issues/140)
|
||||
* fix(component): :bug: 修复tray设置窗口大小问题 (#149) ([7aaabb2](https://github.com/HuLaSpark/HuLa/commit/7aaabb2)), closes [#149](https://github.com/HuLaSpark/HuLa/issues/149)
|
||||
* fix(docker): :bug: 修改docker-compose配置 (#162) ([e1b1984](https://github.com/HuLaSpark/HuLa/commit/e1b1984)), closes [#162](https://github.com/HuLaSpark/HuLa/issues/162)
|
||||
* fix(mobile): :bug: 修复ios移动端页面问题 (#185) ([af7d388](https://github.com/HuLaSpark/HuLa/commit/af7d388)), closes [#185](https://github.com/HuLaSpark/HuLa/issues/185)
|
||||
* fix(renovate): :bug: 修复renovate bot配置 (#164) ([0dd59a5](https://github.com/HuLaSpark/HuLa/commit/0dd59a5)), closes [#164](https://github.com/HuLaSpark/HuLa/issues/164)
|
||||
* fix(service): :bug: 优化浏览器指纹 (#175) ([a2b3c32](https://github.com/HuLaSpark/HuLa/commit/a2b3c32)), closes [#175](https://github.com/HuLaSpark/HuLa/issues/175)
|
||||
* fix(service): :bug: 增加浏览器指纹作为唯一值解决netty关联channel的问题 (#171) ([a5b5f89](https://github.com/HuLaSpark/HuLa/commit/a5b5f89)), closes [#171](https://github.com/HuLaSpark/HuLa/issues/171)
|
||||
* fix(view): :bug: 修复系统托盘无法变化成多列表操作 (#150) ([cb08e62](https://github.com/HuLaSpark/HuLa/commit/cb08e62)), closes [#150](https://github.com/HuLaSpark/HuLa/issues/150)
|
||||
* fix(view): :bug: 修复setSize方法导致无法修改窗口大小问题 ([412db5c](https://github.com/HuLaSpark/HuLa/commit/412db5c)), closes [#139](https://github.com/HuLaSpark/HuLa/issues/139)
|
||||
* perf(mobile): :zap: 优化ios整体页面 (#186) ([2feb359](https://github.com/HuLaSpark/HuLa/commit/2feb359)), closes [#186](https://github.com/HuLaSpark/HuLa/issues/186)
|
||||
* perf(view): :zap: 优化聊天框用户信息操作选项 (#173) ([b024757](https://github.com/HuLaSpark/HuLa/commit/b024757)), closes [#173](https://github.com/HuLaSpark/HuLa/issues/173)
|
||||
* perf(view): :zap: 优化win的托盘闪烁和消息提示 (#142) ([4e49700](https://github.com/HuLaSpark/HuLa/commit/4e49700)), closes [#142](https://github.com/HuLaSpark/HuLa/issues/142)
|
||||
* perf(worker): :zap: 使用worker优化计时器不准确问题 (#190) ([000fcc2](https://github.com/HuLaSpark/HuLa/commit/000fcc2)), closes [#190](https://github.com/HuLaSpark/HuLa/issues/190)
|
||||
* feat(android): :sparkles: 新增android兼容 (#170) ([684b95c](https://github.com/HuLaSpark/HuLa/commit/684b95c)), closes [#170](https://github.com/HuLaSpark/HuLa/issues/170)
|
||||
* feat(mobile): :sparkles: 新增移动端兼容 (#169) ([3607c9d](https://github.com/HuLaSpark/HuLa/commit/3607c9d)), closes [#169](https://github.com/HuLaSpark/HuLa/issues/169) [#61](https://github.com/HuLaSpark/HuLa/issues/61)
|
||||
* feat(mobile): :sparkles: 增加ios下拉刷新功能 (#189) ([837d2b3](https://github.com/HuLaSpark/HuLa/commit/837d2b3)), closes [#189](https://github.com/HuLaSpark/HuLa/issues/189)
|
||||
* feat(scripts): :sparkles: 新增环境检测脚本(用于检测用户当前系统环境) (#166) ([3983bf7](https://github.com/HuLaSpark/HuLa/commit/3983bf7)), closes [#166](https://github.com/HuLaSpark/HuLa/issues/166)
|
||||
* feat(service): :sparkles: http错误提示 (#184) ([cd03444](https://github.com/HuLaSpark/HuLa/commit/cd03444)), closes [#184](https://github.com/HuLaSpark/HuLa/issues/184)
|
||||
* feat(service): :sparkles: http请求重试 (#178) ([2d0f3e0](https://github.com/HuLaSpark/HuLa/commit/2d0f3e0)), closes [#178](https://github.com/HuLaSpark/HuLa/issues/178)
|
||||
* feat(system): :sparkles: 新增linxu系统ubuntu兼容 (#148) ([373d87c](https://github.com/HuLaSpark/HuLa/commit/373d87c)), closes [#148](https://github.com/HuLaSpark/HuLa/issues/148)
|
||||
* feat(view): :sparkles: 增加透明高斯模糊开关 (#177) ([cefe53d](https://github.com/HuLaSpark/HuLa/commit/cefe53d)), closes [#177](https://github.com/HuLaSpark/HuLa/issues/177)
|
||||
* !45 fix(view): :bug:修复群聊问题 ([b0432d6](https://github.com/HuLaSpark/HuLa/commit/b0432d6)), closes [#152](https://github.com/HuLaSpark/HuLa/issues/152)
|
||||
* Http请求重试并抛出错误 (#181) ([16c4dea](https://github.com/HuLaSpark/HuLa/commit/16c4dea)), closes [#181](https://github.com/HuLaSpark/HuLa/issues/181)
|
||||
* Test actions (#147) ([9755340](https://github.com/HuLaSpark/HuLa/commit/9755340)), closes [#147](https://github.com/HuLaSpark/HuLa/issues/147)
|
||||
* build: 升级依赖 (#161) ([498f490](https://github.com/HuLaSpark/HuLa/commit/498f490)), closes [#161](https://github.com/HuLaSpark/HuLa/issues/161) [#156](https://github.com/HuLaSpark/HuLa/issues/156) [#155](https://github.com/HuLaSpark/HuLa/issues/155) [#157](https://github.com/HuLaSpark/HuLa/issues/157) [#158](https://github.com/HuLaSpark/HuLa/issues/158) [#159](https://github.com/HuLaSpark/HuLa/issues/159)
|
||||
* chore: 发布 v2.6.0 ([f411af6](https://github.com/HuLaSpark/HuLa/commit/f411af6))
|
||||
* ci: :ferris_wheel: 优化CI配置 (#141) ([6b47049](https://github.com/HuLaSpark/HuLa/commit/6b47049)), closes [#141](https://github.com/HuLaSpark/HuLa/issues/141)
|
||||
|
||||
## 2.6.0 (2025-01-05)
|
||||
|
||||
* feat(system): :sparkles: 新增linxu系统ubuntu兼容 (#148) ([43d1561](https://github.com/HuLaSpark/HuLa/commit/43d1561)), closes [#148](https://github.com/HuLaSpark/HuLa/issues/148)
|
||||
* Test actions (#147) ([d0a0e5f](https://github.com/HuLaSpark/HuLa/commit/d0a0e5f)), closes [#147](https://github.com/HuLaSpark/HuLa/issues/147)
|
||||
* fix(build): :bug: 去除alsa-sys的安装 ([64f0c39](https://github.com/HuLaSpark/HuLa/commit/64f0c39))
|
||||
* fix(build): :bug: 修复ubuntu alsa-sys包版本 (#145) ([d6adb2d](https://github.com/HuLaSpark/HuLa/commit/d6adb2d)), closes [#145](https://github.com/HuLaSpark/HuLa/issues/145)
|
||||
* fix(build): :bug: 修复ubuntu CI打包问题 (#144) ([5d66161](https://github.com/HuLaSpark/HuLa/commit/5d66161)), closes [#144](https://github.com/HuLaSpark/HuLa/issues/144)
|
||||
* fix(common): :bug: 修复set_badge_count方法没有处理报错问题 (#140) ([4d4bd9c](https://github.com/HuLaSpark/HuLa/commit/4d4bd9c)), closes [#140](https://github.com/HuLaSpark/HuLa/issues/140)
|
||||
* fix(view): :bug: 修复setSize方法导致无法修改窗口大小问题 (#143) ([b412c2e](https://github.com/HuLaSpark/HuLa/commit/b412c2e)), closes [#143](https://github.com/HuLaSpark/HuLa/issues/143) [#139](https://github.com/HuLaSpark/HuLa/issues/139)
|
||||
* perf(view): :zap: 优化win的托盘闪烁和消息提示 (#142) ([4e49700](https://github.com/HuLaSpark/HuLa/commit/4e49700)), closes [#142](https://github.com/HuLaSpark/HuLa/issues/142)
|
||||
* ci: :ferris_wheel: 优化CI配置 (#141) ([6b47049](https://github.com/HuLaSpark/HuLa/commit/6b47049)), closes [#141](https://github.com/HuLaSpark/HuLa/issues/141)
|
||||
|
||||
## [2.5.11](https://github.com/HuLaSpark/HuLa/compare/v2.5.10...v2.5.11) (2025-01-03)
|
||||
|
||||
|
||||
### ✨ Features | 新功能
|
||||
|
||||
* **component:** :sparkles: 新增AI选项卡,封装提及框功能 ([#133](https://github.com/HuLaSpark/HuLa/issues/133)) ([9fdb695](https://github.com/HuLaSpark/HuLa/commit/9fdb6953ab2c9d46c75b715aac40d211cb605fa7))
|
||||
* **notification:** :sparkles: 新增notification系统通知 ([#127](https://github.com/HuLaSpark/HuLa/issues/127)) ([77373e3](https://github.com/HuLaSpark/HuLa/commit/77373e3782f8f5679940605656259efbb21db558))
|
||||
* **service:** :sparkles: 新增翻译服务api ([#130](https://github.com/HuLaSpark/HuLa/issues/130)) ([fadbf2b](https://github.com/HuLaSpark/HuLa/commit/fadbf2b24a7f5688d02de47ac36254902018e56e))
|
||||
|
||||
|
||||
### 🐛 Bug Fixes | Bug 修复
|
||||
|
||||
* **common:** :bug: 修复一些流程和已知的问题 ([#134](https://github.com/HuLaSpark/HuLa/issues/134)) ([ca0dc1f](https://github.com/HuLaSpark/HuLa/commit/ca0dc1fc778c3c2b9b4175b11ea02fc3cace1cd5))
|
||||
* **common:** :bug: 修复一些已知问题 ([#137](https://github.com/HuLaSpark/HuLa/issues/137)) ([16cd17a](https://github.com/HuLaSpark/HuLa/commit/16cd17aa54fe32399fdeb6a11470fac6daede754))
|
||||
* **event:** :bug: 修复tauri listen未销毁问题 ([#124](https://github.com/HuLaSpark/HuLa/issues/124)) ([7b762e2](https://github.com/HuLaSpark/HuLa/commit/7b762e26a086ca69b0c71093f9382fc865b259aa))
|
||||
* **pnpm:** :bug: 更新版本依赖 ([#138](https://github.com/HuLaSpark/HuLa/issues/138)) ([15a645e](https://github.com/HuLaSpark/HuLa/commit/15a645ec78214886e2502226bc7fa176ba91d912))
|
||||
* **version:** :bug: 修复升级tauri版本导致的高度问题 ([#125](https://github.com/HuLaSpark/HuLa/issues/125)) ([adf47e7](https://github.com/HuLaSpark/HuLa/commit/adf47e7acc38c7159ddc0aaa4bb38784ff5f1594))
|
||||
|
||||
|
||||
### ⚡️ Performance Improvements | 性能优化
|
||||
|
||||
* **component:** :zap: 可在设置中切换翻译提供商 ([#132](https://github.com/HuLaSpark/HuLa/issues/132)) ([99a8859](https://github.com/HuLaSpark/HuLa/commit/99a8859476bef5593641076a6fdadd2b48153be2))
|
||||
* **component:** :zap: 优化撤回消息重新编辑判定 ([#128](https://github.com/HuLaSpark/HuLa/issues/128)) ([451ded8](https://github.com/HuLaSpark/HuLa/commit/451ded82c58cdfd4d8941533db50df61f448b292))
|
||||
* **component:** :zap: 优化翻译的显示 ([#131](https://github.com/HuLaSpark/HuLa/issues/131)) ([c18ee4b](https://github.com/HuLaSpark/HuLa/commit/c18ee4b46715b072cfa7ff82b790c68c63a5eb62))
|
||||
* **component:** :zap: 优化虚拟列表加载更多功能 ([#129](https://github.com/HuLaSpark/HuLa/issues/129)) ([a1641e9](https://github.com/HuLaSpark/HuLa/commit/a1641e96ccde507a28f56c8083a8e37bd379da6c))
|
||||
|
||||
## [2.5.10](https://github.com/HuLaSpark/HuLa/compare/v2.5.9...v2.5.10) (2024-12-25)
|
||||
|
||||
|
||||
### 🐛 Bug Fixes | Bug 修复
|
||||
|
||||
* **common:** :bug: 修复提示的效果问题 ([#121](https://github.com/HuLaSpark/HuLa/issues/121)) ([0b7c873](https://github.com/HuLaSpark/HuLa/commit/0b7c873556be3d14752293d762f87a4d417843dd)), closes [#34](https://github.com/HuLaSpark/HuLa/issues/34)
|
||||
* **component:** :bug: 修复输入框和虚拟列表的一些问题 ([#117](https://github.com/HuLaSpark/HuLa/issues/117)) ([7f4040f](https://github.com/HuLaSpark/HuLa/commit/7f4040fd4e5597227cbd3a2c0e3beb84f7e288bd))
|
||||
* **component:** :bug: 修复整体流程bug问题 ([#118](https://github.com/HuLaSpark/HuLa/issues/118)) ([11fdfe6](https://github.com/HuLaSpark/HuLa/commit/11fdfe65a0fe46b4792cf579a47bbb9b75f465de))
|
||||
* **rust:** :bug: 修复windows启动报错问题 ([#119](https://github.com/HuLaSpark/HuLa/issues/119)) ([311bd72](https://github.com/HuLaSpark/HuLa/commit/311bd72b6af9627221d4c12bf5d1089380d5b4f5)), closes [#IBD413](https://github.com/HuLaSpark/HuLa/issues/IBD413)
|
||||
* **rust:** :bug: 修复windows下启动问题 ([#122](https://github.com/HuLaSpark/HuLa/issues/122)) ([9f43c9e](https://github.com/HuLaSpark/HuLa/commit/9f43c9e77d647cfdc30aa04ad51ac6b0ce608a49))
|
||||
* **windows:** :bug: 修复windows下打包出错问题 ([#123](https://github.com/HuLaSpark/HuLa/issues/123)) ([e346da3](https://github.com/HuLaSpark/HuLa/commit/e346da33cf26143bc5d98f1bee61933ceebfff58))
|
||||
|
||||
|
||||
### ⚡️ Performance Improvements | 性能优化
|
||||
|
||||
* **component:** :zap: 优化使用for-of ([#120](https://github.com/HuLaSpark/HuLa/issues/120)) ([003171b](https://github.com/HuLaSpark/HuLa/commit/003171bc1eb688e0a37f94735ca1e4d71446cf94))
|
||||
* **component:** :zap: 优化虚拟列表的滚动和性能 ([#112](https://github.com/HuLaSpark/HuLa/issues/112)) ([e8b60ee](https://github.com/HuLaSpark/HuLa/commit/e8b60ee83bb9f7f4048899df31113b83f0f01c62))
|
||||
|
||||
## [2.5.9](https://github.com/HuLaSpark/HuLa/compare/v2.5.8...v2.5.9) (2024-12-18)
|
||||
|
||||
|
||||
### ✨ Features | 新功能
|
||||
|
||||
* **component:** :sparkles: 新增默认头像 ([#104](https://github.com/HuLaSpark/HuLa/issues/104)) ([5a4ff70](https://github.com/HuLaSpark/HuLa/commit/5a4ff7065b2f5c2339f8f6208bf3fe3d73c59400))
|
||||
|
||||
|
||||
### 🐛 Bug Fixes | Bug 修复
|
||||
|
||||
* **CI:** :bug: 修复release配置 ([#110](https://github.com/HuLaSpark/HuLa/issues/110)) ([6969a09](https://github.com/HuLaSpark/HuLa/commit/6969a0999ec0a0114e21e9db8ea8f56a82c73e09))
|
||||
* **component:** :bug: 修复mac下输入框输入拼音时的问题 ([#108](https://github.com/HuLaSpark/HuLa/issues/108)) ([6fd6636](https://github.com/HuLaSpark/HuLa/commit/6fd6636cef63c05cdd2ed04858d533ad98e0c34f))
|
||||
* **component:** :bug: 修复naiveui的虚拟列表问题 ([#109](https://github.com/HuLaSpark/HuLa/issues/109)) ([1ec6020](https://github.com/HuLaSpark/HuLa/commit/1ec602016869119e51348c40436aeda120a0dccd))
|
||||
* **config:** :bug: 修改renovate bot的配置 ([23511f7](https://github.com/HuLaSpark/HuLa/commit/23511f78cd5b22449bbc53cb5c567255250ca863))
|
||||
* **view:** :bug: 修复群里在线人数问题和登录历史记录问题 ([#105](https://github.com/HuLaSpark/HuLa/issues/105)) ([4dae48e](https://github.com/HuLaSpark/HuLa/commit/4dae48e1ad380bc5ca68b664fe89664ac68235fd))
|
||||
* **view:** :bug: 修复异常关闭再重新登录会不显示会话的bug ([096df49](https://github.com/HuLaSpark/HuLa/commit/096df49dcd9408eecadb9344d5d7433468e7bc5c))
|
||||
|
||||
|
||||
### ⚡️ Performance Improvements | 性能优化
|
||||
|
||||
* **hook:** :zap: 优化windows窗口圆角问题 ([024c1a3](https://github.com/HuLaSpark/HuLa/commit/024c1a36d8ab435151d6485921b198070b15076e))
|
||||
* **view:** :zap: 优化一下样式和登录页面的提示 ([#107](https://github.com/HuLaSpark/HuLa/issues/107)) ([8bb4aa7](https://github.com/HuLaSpark/HuLa/commit/8bb4aa77d93fb731d3ff85fe273d20e7b4ba991d)), closes [#106](https://github.com/HuLaSpark/HuLa/issues/106)
|
||||
|
||||
## [2.5.8](https://github.com/HuLaSpark/HuLa/compare/v2.5.7...v2.5.8) (2024-12-12)
|
||||
|
||||
|
||||
### ✨ Features | 新功能
|
||||
|
||||
* **component:** :sparkles: 新增米游社表情包功能 ([1b38500](https://github.com/HuLaSpark/HuLa/commit/1b385005be135d8afc83ec1d5fb80d1ab25bf5f5))
|
||||
|
||||
|
||||
### 🐛 Bug Fixes | Bug 修复
|
||||
|
||||
* **chat-edittor:** 在 Webkit 中 re-focus 后焦点被重置 ([e381a09](https://github.com/HuLaSpark/HuLa/commit/e381a09fb138be627b01df6f096a0ad9383eef99))
|
||||
* **common:** :bug: 修改Cargo.lock ([e3ead1c](https://github.com/HuLaSpark/HuLa/commit/e3ead1c7fdf30b7a2eb857973dfcc66bb01dc44b))
|
||||
* **component:** :bug: 修复canvas模糊问题,以及图片和emoji的一些插入的位置和优化 ([5dee0ae](https://github.com/HuLaSpark/HuLa/commit/5dee0ae4d4d09178a1664d5f2ec01354a69b8001))
|
||||
* **config:** :bug: 修改cargo的镜像源和文件后缀 ([d882e2e](https://github.com/HuLaSpark/HuLa/commit/d882e2e301b8ae27819dd8469452d40a704ea4a6))
|
||||
* **package:** :bug: 修复发版和commit的命令 ([6307326](https://github.com/HuLaSpark/HuLa/commit/6307326b016bfc654b0e6f70bc254d59d0fcde67))
|
||||
|
||||
## [2.5.7](https://github.com/HuLaSpark/HuLa/compare/v2.5.6...v2.5.7) (2024-12-10)
|
||||
|
||||
|
||||
### 🐛 Bug Fixes | Bug 修复
|
||||
|
||||
* **config:** :bug: 修复因为notify窗口没有配置问题导致mac下打不开 ([d940838](https://github.com/HuLaSpark/HuLa/commit/d940838f380c8e626926dae1dceea6a4076ea83f)), closes [#55](https://github.com/HuLaSpark/HuLa/issues/55)
|
||||
|
||||
## [2.5.6](https://github.com/HuLaSpark/HuLa/compare/v2.5.5...v2.5.6) (2024-12-09)
|
||||
|
||||
|
||||
### ✨ Features | 新功能
|
||||
|
||||
* **component:** :sparkles: 新增创建群聊弹窗 ([10fb45f](https://github.com/HuLaSpark/HuLa/commit/10fb45f8d9cc48058ad54c8c24ce50ab434a45a8))
|
||||
* **hook:** :sparkles: 添加消息保存到本地数据库功能 ([8b67a1b](https://github.com/HuLaSpark/HuLa/commit/8b67a1b0b67822d70459b26beaf85b4fb9e2cab2))
|
||||
* **hooks:** :sparkles: 新增 useMitter 钩子以替代直接使用 Mitt 事件总线 ([44db95d](https://github.com/HuLaSpark/HuLa/commit/44db95d3fecdad11155e9583f85d5b51d1407173))
|
||||
* **plugin:** :sparkles: 限制只能一台设备打开一个客户端 ([ab9a515](https://github.com/HuLaSpark/HuLa/commit/ab9a5153fecb6da048540247bbae63080399540b))
|
||||
* **view:** :sparkles: 新增新消息状态栏图标闪烁 ([09264b7](https://github.com/HuLaSpark/HuLa/commit/09264b7918c11044fe2830a8c5607cceb162d106))
|
||||
|
||||
|
||||
### 🐛 Bug Fixes | Bug 修复
|
||||
|
||||
* **component:** :bug: 修复聊天框右键菜单问题和添加好友等一些已知问题 ([69b4cbd](https://github.com/HuLaSpark/HuLa/commit/69b4cbd63f7bb8cd286d4c673babf08bd1fb2008))
|
||||
* **layout:** :bug: 处理退出账号bug|处理登录token有时未保存bug|其他优化 ([470efde](https://github.com/HuLaSpark/HuLa/commit/470efded2edff37a93e0a002a34ca7aec6c90172))
|
||||
* **layout:** :bug: 处理异常关闭程序发送下线通知 ([2cf5e97](https://github.com/HuLaSpark/HuLa/commit/2cf5e97d1e05c1641c7919b2f4e521dd176860cd))
|
||||
* **layout:** :bug: 处理mitt合并冲突 ([f0766e1](https://github.com/HuLaSpark/HuLa/commit/f0766e1907a9411683de94b54072638d30d06478))
|
||||
* **layout:** :bug: 修复登录不同账号会导致其他账号退出登录的问题 ([2b21f83](https://github.com/HuLaSpark/HuLa/commit/2b21f83bab32ed19504b9dad9aa32f33c73cec5b))
|
||||
* **layout:** :bug: 修复自动登录bug|修复登录token未保存bug|其他优化 ([945502f](https://github.com/HuLaSpark/HuLa/commit/945502fa38fd8a7fb7d15bd1a7e8f018dddeac67))
|
||||
* **service:** :bug: 处理pinia报错 ([c9d65dc](https://github.com/HuLaSpark/HuLa/commit/c9d65dc82a4777edf5f636a7b26bd976364d8d64))
|
||||
* **service:** :bug: 修复异常退出登录bug,优化ws ([c671db8](https://github.com/HuLaSpark/HuLa/commit/c671db8d98dbce6fcdf248232a4a2eca020d770f))
|
||||
* **store:** :bug: 修复store中保存的用户信息冲突导致登录的用户信息错乱问题 ([6119e42](https://github.com/HuLaSpark/HuLa/commit/6119e420b0b355cb6dde7f3f4d0d6e07f7202358))
|
||||
* **view:** :bug: 固定右下角消息提示位置 ([5bc78d2](https://github.com/HuLaSpark/HuLa/commit/5bc78d2c8b4aa6e1f69d2f6d9e01db6b23ee7e9d))
|
||||
* **view:** :bug: 修复右下角消息提示位置不对bug ([db19672](https://github.com/HuLaSpark/HuLa/commit/db19672295ac8b1abc0489cf76b41dbf9d6b3ebe))
|
||||
* **view:** :bug: 修复自动登录bug ([8b1da81](https://github.com/HuLaSpark/HuLa/commit/8b1da812e1845190a708ea146cb075ef907dd12d))
|
||||
|
||||
|
||||
### ⚡️ Performance Improvements | 性能优化
|
||||
|
||||
* **component:** :zap: 优化撤回信息后的功能 ([7cbb443](https://github.com/HuLaSpark/HuLa/commit/7cbb443e84f04e6b19f45a0fa779639d75a4939e))
|
||||
* **component:** :zap: 优化消息气泡发送状态提示 ([90b7c91](https://github.com/HuLaSpark/HuLa/commit/90b7c91264e88052d3cc1086b81900cf08d0e213))
|
||||
* **component:** :zap: 优化新增群组功能 ([e33de24](https://github.com/HuLaSpark/HuLa/commit/e33de24dec294bccb68e10821f05b09d09c1f358))
|
||||
* **component:** :zap: 优化一些代码和逻辑 ([4b500a1](https://github.com/HuLaSpark/HuLa/commit/4b500a1c9ef60dda95f513755ea362a865194e55))
|
||||
* **component:** :zap: 优化右键@和发送消息功能 ([91e8703](https://github.com/HuLaSpark/HuLa/commit/91e8703af0c66a61eddec245fe1132d26194a303))
|
||||
* **component:** :zap: 优化注册流程和样式 ([3d59a7d](https://github.com/HuLaSpark/HuLa/commit/3d59a7d6d0e0558f04e96dc536e1e8cfb0955520))
|
||||
* **hook:** :zap: 优化useMitt的写法 ([004a696](https://github.com/HuLaSpark/HuLa/commit/004a6960100f2139ef7e3021db0da6081c60954a))
|
||||
* **view:** :zap: 优化代理功能 ([0cf8dc9](https://github.com/HuLaSpark/HuLa/commit/0cf8dc9bb9fafa66a419497bcf814f8fcc1cb791))
|
||||
* **view:** :zap: 优化useMitt的取消时机 ([f7f6bc0](https://github.com/HuLaSpark/HuLa/commit/f7f6bc0ada6a6531586c74b08995056cb92d30ba))
|
||||
|
||||
## [2.5.5](https://github.com/HuLaSpark/HuLa/compare/v2.5.4...v2.5.5) (2024-11-20)
|
||||
|
||||
|
||||
### 🐛 Bug Fixes | Bug 修复
|
||||
|
||||
* **service:** :bug: 修复更新功能版本出错问题以及修复输入框和聊天框对于特殊字符和兼容性 ([9c1d23d](https://github.com/HuLaSpark/HuLa/commit/9c1d23d2060dbad13d4197517feec6d3a410e742))
|
||||
* **style:** :bug: 修复聊天消息框回复宽度限制问题 ([d0aca70](https://github.com/HuLaSpark/HuLa/commit/d0aca707a7a549aa0696a1074da62e58d7449056))
|
||||
|
||||
## [2.5.4](https://github.com/HuLaSpark/HuLa/compare/v2.5.3...v2.5.4) (2024-11-19)
|
||||
|
||||
### 🐛 Bug Fixes | Bug 修复
|
||||
|
||||
- **component:** :bug: 修复群聊侧边栏搜索时无法右键查看用户信息 ([f5b5bb0](https://github.com/HuLaSpark/HuLa/commit/f5b5bb09c8711227e4ccb9e3bc4e65bdc52415b9))
|
||||
- **component:** :bug: 修复群聊当前登录用户右键菜单功能逻辑错误 ([00c35ff](https://github.com/HuLaSpark/HuLa/commit/00c35ff6feda18623c608b8aa29529c30a48e528))
|
||||
- **hook:** :bug: 修复发送消息频繁的bug ([bbb74ee](https://github.com/HuLaSpark/HuLa/commit/bbb74ee78a425375a44ce6940dbed0b8265b618c))
|
||||
- **service:** :bug: 修复http模块没有设置请求头导致请求报错问题 ([1538964](https://github.com/HuLaSpark/HuLa/commit/153896480e8a86cd50962d3678fae786ea444ebd))
|
||||
- **store:** :bug: 上下线通知 ([2f2a2a2](https://github.com/HuLaSpark/HuLa/commit/2f2a2a2068143e723db3ec31cfce3f2397acf8d4))
|
||||
- **store:** :bug: 修复一些接口的store封装 ([4626527](https://github.com/HuLaSpark/HuLa/commit/46265275e52fd30090a3d07a98f1023e9960b18d))
|
||||
- **view:** :bug: 修复一些功能漏洞问题 ([#38](https://github.com/HuLaSpark/HuLa/issues/38)) ([f626a96](https://github.com/HuLaSpark/HuLa/commit/f626a96c1abfb00e07d53fceec12ea3cdd1faca0))
|
||||
- **view:** :bug: 修复打开独立窗口后主窗口消息窗口无法打开问题 ([#36](https://github.com/HuLaSpark/HuLa/issues/36)) ([06435c8](https://github.com/HuLaSpark/HuLa/commit/06435c8d58250d4b9501431dc82c51643bc6e054))
|
||||
- **view:** :bug: 修复登录和请求的一些缺陷 ([54ee3ff](https://github.com/HuLaSpark/HuLa/commit/54ee3ff1688ec1dd248b5e7120e3613ce8758ac9))
|
||||
|
||||
## [2.5.3](https://github.com/HuLaSpark/HuLa/compare/v2.5.2...v2.5.3) (2024-11-06)
|
||||
|
||||
### 🐛 Bug Fixes | Bug 修复
|
||||
|
||||
- **component:** :bug: 修复输入框换行不兼容webkit的问题 ([345d830](https://github.com/HuLaSpark/HuLa/commit/345d83068711df087dd0ba403446c739151a11dd))
|
||||
- **layout:** :bug: 修复聊天框改变宽度的时候可以选中文本的问题 ([56d79cc](https://github.com/HuLaSpark/HuLa/commit/56d79ccc8ba015a313eabcd938757f35d1d840a4))
|
||||
- **layout:** :bug: 修复选择了图片不显示在输入框中的bug ([c7cdac6](https://github.com/HuLaSpark/HuLa/commit/c7cdac69ce6fa185489dcb480991e3a268fec99d))
|
||||
- **service:** :bug: 修复请求接口bug ([f3723d4](https://github.com/HuLaSpark/HuLa/commit/f3723d4e5a2342314ce6e85931a49f1ddfecab0b))
|
||||
|
||||
### ⚡️ Performance Improvements | 性能优化
|
||||
|
||||
- **component:** :zap: 优化右键菜单功能 ([7b53029](https://github.com/HuLaSpark/HuLa/commit/7b530297ac37122ead00a15864e16a73a5547d04))
|
||||
|
||||
## [2.5.2](https://github.com/HuLaSpark/HuLa/compare/v2.5.1...v2.5.2) (2024-10-31)
|
||||
|
||||
### 🐛 Bug Fixes | Bug 修复
|
||||
|
||||
- **build:** :bug: 升级wry版本修复mac安装报错问题 ([fefa2f9](https://github.com/HuLaSpark/HuLa/commit/fefa2f970305839064764cd1d82a0d8e557f3148))
|
||||
- **component:** :bug: 修复聊天框内右键菜单问题 ([e59630b](https://github.com/HuLaSpark/HuLa/commit/e59630b70ed0d245174c97136d502bb63cac03ec))
|
||||
|
||||
## [2.5.1](https://github.com/HuLaSpark/HuLa/compare/v2.5.0...v2.5.1) (2024-10-29)
|
||||
|
||||
### 🐛 Bug Fixes | Bug 修复
|
||||
|
||||
- **build:** :bug: 修复release配置导致打包的问题 ([4cd9a93](https://github.com/HuLaSpark/HuLa/commit/4cd9a9355d3c5cbd9101b709a839017c92538bfd))
|
||||
- **build:** :bug: 添加不同编译版本,以修复不同架构安装出错问题 ([19fb138](https://github.com/HuLaSpark/HuLa/commit/19fb138d51afd2884c1abd7fc62ae47762c2678b))
|
||||
- **global:** :bug: 修复艾特弹窗在mac下高度问题导致不显示 ([8a18e84](https://github.com/HuLaSpark/HuLa/commit/8a18e84ce781a7a987575ed9f27d2a8eff334bb6))
|
||||
- **layout:** :bug: 修复更新弹窗显示更新的内容 ([bd7f6fb](https://github.com/HuLaSpark/HuLa/commit/bd7f6fbe7f27e69275e54c776d761a1751289bf0))
|
||||
- **view:** :bug: 修复消息输入框部分bug ([24b8a51](https://github.com/HuLaSpark/HuLa/commit/24b8a517d85f5895ae66db64ac7d6d8ae547cad4))
|
||||
|
||||
## [2.5.0](https://github.com/HuLaSpark/HuLa/compare/v2.4.0...v2.5.0) (2024-10-27)
|
||||
|
||||
### ⚠ BREAKING CHANGES
|
||||
|
||||
- **util:** http请求异常bug
|
||||
|
||||
### ✨ Features | 新功能
|
||||
|
||||
- **layout:** :sparkles: 自动更新增加进度条 ([4ee3e2b](https://github.com/HuLaSpark/HuLa/commit/4ee3e2b8a36b34cdc996a8b538bddea61bbf1af2))
|
||||
|
||||
### 🐛 Bug Fixes | Bug 修复
|
||||
|
||||
- **api:** 修改websocket请求地址, 修改请求方式采用fetch处理 ([e55f863](https://github.com/HuLaSpark/HuLa/commit/e55f86385fb8e25e826ae57341e0d818f5fe34b2))
|
||||
- **build:** :bug: 修复因为类型导致打包出错 ([db26e6b](https://github.com/HuLaSpark/HuLa/commit/db26e6bdf65003c1263574464a194236aa341129))
|
||||
- **layout:** :bug: 修复更新进度条显示异常bug ([45e2bfc](https://github.com/HuLaSpark/HuLa/commit/45e2bfce669c76cbb72be641febf59509b3e6204))
|
||||
- **service:** :bug: 修复打包后访问不了正式服务器的bug ([c8d42ab](https://github.com/HuLaSpark/HuLa/commit/c8d42ab31e1e6b41b3a30f1664d1be0c28d4ed36))
|
||||
- **service:** :bug: 修复请求体包裹多层data的问题 ([d97d24f](https://github.com/HuLaSpark/HuLa/commit/d97d24f1c1d554e5477b221c725e45100655c0e0))
|
||||
- **util:** :bug: http请求异常bug ([6e82a09](https://github.com/HuLaSpark/HuLa/commit/6e82a099a2a51ea08548c4d5da496393a94b7b05))
|
||||
- **view:** :bug: 修复点击右侧布局页面时候不跳转回消息页 ([be0edf9](https://github.com/HuLaSpark/HuLa/commit/be0edf974778b58fe5af9ec030d9927999a6d7bb))
|
||||
|
||||
## [2.4.0](https://github.com/HuLaSpark/HuLa/compare/v2.3.0...v2.4.0) (2024-10-24)
|
||||
|
||||
### ✨ Features | 新功能
|
||||
|
||||
- **ide:** :sparkles: 新增.idea文件提供idea的项目图标 ([84b6039](https://github.com/HuLaSpark/HuLa/commit/84b6039a81370d9d71c8394e6dbb4145b1fb7f1e))
|
||||
- **layout:** :sparkles: 菜单优化|插件优化|新增菜单显示模式切换 ([78f09c5](https://github.com/HuLaSpark/HuLa/commit/78f09c5bb9449f5546823f71265c247c137a9e55))
|
||||
- **setting:** :sparkles: 新增开机启动功能 ([91ad538](https://github.com/HuLaSpark/HuLa/commit/91ad538f72909e16f232310a58a5b7610dfd08f0))
|
||||
|
||||
### 🐛 Bug Fixes | Bug 修复
|
||||
|
||||
- **layout:** :bug: 代码修复 ([96ad89c](https://github.com/HuLaSpark/HuLa/commit/96ad89c05d2b9d104b4a80f064892d63381441a2))
|
||||
- **layout:** :bug: 修复侧边栏顶部空白块颜色和无法缩小主页面问题 ([1999f30](https://github.com/HuLaSpark/HuLa/commit/1999f30b0e363d63bf1f1a8c0fda7bdc80c9b8b7))
|
||||
- **layout:** :bug: 修复窗体高度整体变大bug ([396a103](https://github.com/HuLaSpark/HuLa/commit/396a103a24255568f426b1c08e4d7e7beb60264b))
|
||||
- **layout:** :bug: 插件菜单增加图标和点击事件 ([bcbb61a](https://github.com/HuLaSpark/HuLa/commit/bcbb61a652a121e2cf251d6b4dfefa1c7bf00dec))
|
||||
- **view:** :bug: 修复一些页面拖动区域问题 ([1183b7e](https://github.com/HuLaSpark/HuLa/commit/1183b7e3baabcbb9cfabe23327583221ae083ae8)), closes [#25](https://github.com/HuLaSpark/HuLa/issues/25)
|
||||
- **view:** :bug: 修复侧边栏图标和字体宽度不一致问题 ([901218b](https://github.com/HuLaSpark/HuLa/commit/901218b043aa87ef4f5c972eb01aeb37ee4c56a5))
|
||||
|
||||
128
CODE_OF_CONDUCT.md
Normal file
@@ -0,0 +1,128 @@
|
||||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
We as members, contributors, and leaders pledge to make participation in our
|
||||
community a harassment-free experience for everyone, regardless of age, body
|
||||
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||
identity and expression, level of experience, education, socio-economic status,
|
||||
nationality, personal appearance, race, religion, or sexual identity
|
||||
and orientation.
|
||||
|
||||
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||
diverse, inclusive, and healthy community.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to a positive environment for our
|
||||
community include:
|
||||
|
||||
- Demonstrating empathy and kindness toward other people
|
||||
- Being respectful of differing opinions, viewpoints, 和 experiences
|
||||
- Giving and gracefully accepting constructive feedback
|
||||
- Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
and learning from the experience
|
||||
- Focusing on what is best not just for us as individuals, but for the
|
||||
overall community
|
||||
|
||||
Examples of unacceptable behavior include:
|
||||
|
||||
- The use of sexualized language or imagery, 和 sexual attention or
|
||||
advances of any kind
|
||||
- Trolling, insulting or derogatory comments, 和 personal or political attacks
|
||||
- Public or private harassment
|
||||
- Publishing others' private information, such as a physical or email
|
||||
address, without their explicit permission
|
||||
- Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Enforcement Responsibilities
|
||||
|
||||
Community leaders are responsible for clarifying and enforcing our standards of
|
||||
acceptable behavior and will take appropriate and fair corrective action in
|
||||
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||
or harmful.
|
||||
|
||||
Community leaders have the right and responsibility to remove, edit, or reject
|
||||
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
||||
decisions when appropriate.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies within all community spaces, and also applies when
|
||||
an individual is officially representing the community in public spaces.
|
||||
Examples of representing our community include using an official e-mail address,
|
||||
posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported to the community leaders responsible for enforcement at
|
||||
2439646234@qq.com.
|
||||
All complaints will be reviewed and investigated promptly and fairly.
|
||||
|
||||
All community leaders are obligated to respect the privacy and security of the
|
||||
reporter of any incident.
|
||||
|
||||
## Enforcement Guidelines
|
||||
|
||||
Community leaders will follow these Community Impact Guidelines in determining
|
||||
the consequences for any action they deem in violation of this Code of Conduct:
|
||||
|
||||
### 1. Correction
|
||||
|
||||
**Community Impact**: Use of inappropriate language or other behavior deemed
|
||||
unprofessional or unwelcome in the community.
|
||||
|
||||
**Consequence**: A private, written warning from community leaders, providing
|
||||
clarity around the nature of the violation and an explanation of why the
|
||||
behavior was inappropriate. A public apology may be requested.
|
||||
|
||||
### 2. Warning
|
||||
|
||||
**Community Impact**: A violation through a single incident or series
|
||||
of actions.
|
||||
|
||||
**Consequence**: A warning with consequences for continued behavior. No
|
||||
interaction with the people involved, including unsolicited interaction with
|
||||
those enforcing the Code of Conduct, for a specified period of time. This
|
||||
includes avoiding interactions in community spaces as well as external channels
|
||||
like social media. Violating these terms may lead to a temporary or
|
||||
permanent ban.
|
||||
|
||||
### 3. Temporary Ban
|
||||
|
||||
**Community Impact**: A serious violation of community standards, including
|
||||
sustained inappropriate behavior.
|
||||
|
||||
**Consequence**: A temporary ban from any sort of interaction or public
|
||||
communication with the community for a specified period of time. No public or
|
||||
private interaction with the people involved, including unsolicited interaction
|
||||
with those enforcing the Code of Conduct, is allowed during this period.
|
||||
Violating these terms may lead to a permanent ban.
|
||||
|
||||
### 4. Permanent Ban
|
||||
|
||||
**Community Impact**: Demonstrating a pattern of violation of community
|
||||
standards, including sustained inappropriate behavior, harassment of an
|
||||
individual, or aggression toward or disparagement of classes of individuals.
|
||||
|
||||
**Consequence**: A permanent ban from any sort of public interaction within
|
||||
the community.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||
version 2.0, available at
|
||||
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
|
||||
|
||||
Community Impact Guidelines were inspired by [Mozilla's code of conduct
|
||||
enforcement ladder](https://github.com/mozilla/diversity).
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
|
||||
For answers to common questions about this code of conduct, see the FAQ at
|
||||
https://www.contributor-covenant.org/faq. Translations are available at
|
||||
https://www.contributor-covenant.org/translations.
|
||||
75
CONTRIBUTING.md
Normal file
@@ -0,0 +1,75 @@
|
||||
# HuLa - Contributing Guide 🌟
|
||||
|
||||
We're thrilled that you want to contribute to HuLa! 😄
|
||||
|
||||
HuLa is an open-source project, and we welcome your collaboration. Before you jump in, let's make sure you're all set to contribute effectively and have loads of fun along the way!
|
||||
|
||||
## Fork the Repository
|
||||
|
||||
🍴 Fork this repository to your GitHub account by clicking the "Fork" button at the top right. This creates a personal copy of the project you can work on.
|
||||
|
||||
## Clone Your Fork
|
||||
|
||||
📦 Clone your forked repository to your local machine using the `git clone` command:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/HuLaSpark/HuLa.git
|
||||
```
|
||||
|
||||
## Create a New Branch
|
||||
|
||||
🌿 Create a new branch for your contribution. This helps keep your work organized and separate from the main codebase.
|
||||
|
||||
```bash
|
||||
git checkout -b your-branch-name
|
||||
```
|
||||
|
||||
Choose a meaningful branch name related to your work. It makes collaboration easier!
|
||||
|
||||
## Code Like a Wizard
|
||||
|
||||
🧙♀️ Time to work your magic! Write your code, fix bugs, or add new features. Be sure to follow our project's coding style. You can check if your code adheres to our style using:
|
||||
|
||||
```bash
|
||||
pnpm run lint:staged
|
||||
```
|
||||
|
||||
This adds a bit of enchantment to your coding experience! ✨
|
||||
|
||||
## Committing Your Work
|
||||
|
||||
📝 Ready to save your progress? Commit your changes to your branch.
|
||||
|
||||
```bash
|
||||
pnpm run commit
|
||||
```
|
||||
|
||||
This will commit all the files to git, Please keep your commits focused and clear. And remember to be kind to your fellow contributors; keep your commits concise.
|
||||
|
||||
## Sync with Upstream
|
||||
|
||||
⚙️ Periodically, sync your forked repository with the original (upstream) repository to stay up-to-date with the latest changes.
|
||||
|
||||
```bash
|
||||
git remote add upstream https://github.com/HuLaSpark/HuLa.git
|
||||
git fetch upstream
|
||||
git merge upstream/master
|
||||
```
|
||||
|
||||
This ensures you're working on the most current version of HuLa. Stay fresh! 💨
|
||||
|
||||
## Open a Pull Request
|
||||
|
||||
🚀 Time to share your contribution! Head over to the original HuLa repository and open a Pull Request (PR). Our maintainers will review your work.
|
||||
|
||||
## Review and Collaboration
|
||||
|
||||
👓 Your PR will undergo thorough review and testing. The maintainers will provide feedback, and you can collaborate to make your contribution even better. We value teamwork!
|
||||
|
||||
## Celebrate 🎉
|
||||
|
||||
Congratulations! Your contribution is now part of HuLa. 🥳
|
||||
|
||||
Thank you for making HuLa even more magical. We can't wait to see what you create! 🌠
|
||||
|
||||
Happy Coding! 🚀
|
||||
201
LICENSE
Normal file
@@ -0,0 +1,201 @@
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [2025] [HuLaSpark]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
410
README.en.md
Normal file
@@ -0,0 +1,410 @@
|
||||
|
||||
<p align="center">
|
||||
<img width="350px" height="150px" src="src/assets/logo/hula.png"/>
|
||||
</p>
|
||||
|
||||
<p align="center">An instant messaging system built with Tauri, Vite 7, Vue 3, and TypeScript</p>
|
||||
|
||||
<!-- 🌟 Featured -->
|
||||
<div align="center">
|
||||
<a href="https://hellogithub.com/repository/743b101346c54f6cb5c20eed2edbaa40" target="_blank">
|
||||
<img src="https://abroad.hellogithub.com/v1/widgets/recommend.svg?rid=743b101346c54f6cb5c20eed2edbaa40&claim_uid=WsQaY6SlnL7qxG3&theme=neutral" alt="Featured|HelloGitHub" style="width: 250px; height: 54px;" width="250" height="54" />
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<!-- Project Statistics & Certification -->
|
||||
<div align="center">
|
||||
<h3>📊 Project Statistics</h3>
|
||||
<p>
|
||||
<a href="https://gitee.com/HulaSpark/HuLa/stargazers">
|
||||
<img src="https://gitee.com/HulaSpark/HuLa/badge/star.svg?theme=gvp" alt="Gitee Stars">
|
||||
</a>
|
||||
<a href="https://github.com/HulaSpark/HuLa/stargazers">
|
||||
<img src="https://img.shields.io/github/stars/HulaSpark/HuLa?style=social" alt="GitHub Stars">
|
||||
</a>
|
||||
<a href="https://gitcode.com/HuLaSpark/HuLa">
|
||||
<img src="https://gitcode.com/HuLaSpark/HuLa/star/badge.svg" alt="GitCode Stars">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<!-- 🔖 Project Certification -->
|
||||
<h3>🔖 Project Certification</h3>
|
||||
<p>
|
||||
<a href="https://deepwiki.com/HuLaSpark/HuLa">
|
||||
<img src="https://deepwiki.com/badge.svg" alt="DeepWiki">
|
||||
</a>
|
||||
<a href="https://app.fossa.com/projects/git%2Bgithub.com%2FHuLaSpark%2FHuLa?ref=badge_shield">
|
||||
<img src="https://app.fossa.com/api/projects/git%2Bgithub.com%2FHuLaSpark%2FHuLa.svg?type=shield" alt="FOSSA Status">
|
||||
</a>
|
||||
<a href="https://www.bestpractices.dev/en/projects/9692">
|
||||
<img src="https://bestpractices.coreinfrastructure.org/projects/9692/badge" alt="CII Best Practices">
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<!-- 🛠️ Tech Stack -->
|
||||
<div align="center">
|
||||
<h3>🛠️ Tech Stack</h3>
|
||||
|
||||
<p>
|
||||
<img src="https://img.shields.io/badge/Vue3-35495E?logo=vue.js&logoColor=4FC08D">
|
||||
<img src="https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=fff">
|
||||
<img src="https://img.shields.io/badge/Vite7-646CFF?logo=vite&logoColor=fff">
|
||||
<img src="https://img.shields.io/badge/Tauri-24C8DB?logo=tauri&logoColor=FFC131">
|
||||
<img src="https://img.shields.io/badge/Rust-c57c54?logo=rust&logoColor=E34F26">
|
||||
<img src="https://img.shields.io/badge/UnoCss-333333?logo=unocss&logoColor=fff">
|
||||
<img src="https://img.shields.io/badge/Sass-CC6699?logo=sass&logoColor=fff">
|
||||
<img src="https://img.shields.io/badge/pnpm-F69220?logo=pnpm&logoColor=fff">
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<!-- 🔗 Quick Links -->
|
||||
<div align="center">
|
||||
<h3>🔗 Quick Links</h3>
|
||||
|
||||
<p>
|
||||
💻 <strong>Website:</strong><a href="https://hulaspark.com">HuLaSpark</a> |
|
||||
☕️ <strong>Server:</strong><a href="https://github.com/HulaSpark/HuLa-Server">GitHub</a> / <a href="https://gitee.com/HulaSpark/HuLa-Server">Gitee</a> |
|
||||
💬 <strong>WeChat:</strong><code>cy2439646234</code>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<p align="center">
|
||||
<a href="README.md">中文</a> |
|
||||
English |
|
||||
<!-- Keep these links. Translations will automatically update with the README. -->
|
||||
<a href="https://www.readme-i18n.com/HuLaSpark/HuLa?lang=de">Deutsch</a> |
|
||||
<a href="https://www.readme-i18n.com/HuLaSpark/HuLa?lang=es">Español</a> |
|
||||
<a href="https://www.readme-i18n.com/HuLaSpark/HuLa?lang=fr">français</a> |
|
||||
<a href="https://www.readme-i18n.com/HuLaSpark/HuLa?lang=ja">日本語</a> |
|
||||
<a href="https://www.readme-i18n.com/HuLaSpark/HuLa?lang=ko">한국어</a> |
|
||||
<a href="https://www.readme-i18n.com/HuLaSpark/HuLa?lang=pt">Português</a> |
|
||||
<a href="https://www.readme-i18n.com/HuLaSpark/HuLa?lang=ru">Русский</a>
|
||||
</p>
|
||||
|
||||
## 🌐 Supported Platforms
|
||||
|
||||
| Platform | Supported Versions |
|
||||
|----------|-------------------|
|
||||
| Windows | Windows 10, Windows 11 |
|
||||
| macOS | macOS 10.5+ |
|
||||
| Linux | Ubuntu 22.0+ |
|
||||
| iOS/iPadOS | iOS 9.0+, iPadOS 9.0+ |
|
||||
| Android | Android 8.0+ |
|
||||
|
||||
## 📝 Project Introduction
|
||||
|
||||
HuLa is an instant messaging system built with Tauri, Vite 7, Vue 3, and TypeScript. It leverages Tauri's cross-platform capabilities and Vue 3's reactive design, combined with TypeScript's type safety features and Vite 7's fast build process, providing users with an efficient, secure, and user-friendly communication solution.
|
||||
|
||||
## 🛠️ Tech Stack
|
||||
|
||||
- **Tauri**: Provides a lightweight, high-performance desktop application container for this project, enabling us to develop cross-platform desktop applications using frontend technology stack. Tauri's design philosophy is to minimize resource consumption while ensuring security.
|
||||
- **Vite 7**: Vite is a modern frontend build tool that leverages native ES module imports to provide a fast development server, while also offering powerful support for production environment packaging. Vite 7 is its latest version, bringing more optimizations and features.
|
||||
- **Vue 3**: Vue 3 is a progressive JavaScript framework for building user interfaces. Its Composition API, better TypeScript integration, and mobile optimization make developing complex single-page applications simpler and more efficient.
|
||||
- **TypeScript**: TypeScript is a superset of JavaScript that adds a type system on top of JavaScript. This allows us to catch more errors during development and provides better editor support.
|
||||
|
||||
## 🖼️ Project Preview
|
||||
|
||||
<div align="center">
|
||||
<h3>🎨 Interface Showcase</h3>
|
||||
</div>
|
||||
|
||||
<!-- Main Interface -->
|
||||
<table align="center">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<img src="preview/img.png" alt="Main Interface" width="400" style="border-radius: 12px; box-shadow: 0 4px 8px rgba(0,0,0,0.1); margin: 8px;">
|
||||
<br><em>💬 Main Chat Interface</em>
|
||||
</td>
|
||||
<td align="center">
|
||||
<img src="preview/img_1.png" alt="Chat Interface" width="400" style="border-radius: 12px; box-shadow: 0 4px 8px rgba(0,0,0,0.1); margin: 8px;">
|
||||
<br><em>🗨️ Chat Conversation Interface</em>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">
|
||||
<img src="preview/img_2.png" alt="Contact Interface" width="400" style="border-radius: 12px; box-shadow: 0 4px 8px rgba(0,0,0,0.1); margin: 8px;">
|
||||
<br><em>😊 Emoji Selection</em>
|
||||
</td>
|
||||
<td align="center">
|
||||
<img src="preview/img_3.png" alt="Settings Interface" width="400" style="border-radius: 12px; box-shadow: 0 4px 8px rgba(0,0,0,0.1); margin: 8px;">
|
||||
<br><em>⚙️ System Settings</em>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br>
|
||||
|
||||
<!-- Feature Showcase -->
|
||||
<div align="center">
|
||||
<h4>🌟 Feature Highlights</h4>
|
||||
</div>
|
||||
|
||||
<table align="center">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<img src="preview/img_4.png" alt="Message Features" width="280" style="border-radius: 10px; box-shadow: 0 2px 6px rgba(0,0,0,0.1); margin: 6px;">
|
||||
<br><em>📱 Diverse Messaging</em>
|
||||
</td>
|
||||
<td align="center">
|
||||
<img src="preview/img_5.png" alt="Theme Switching" width="280" style="border-radius: 10px; box-shadow: 0 2px 6px rgba(0,0,0,0.1); margin: 6px;">
|
||||
<br><em>🎨 Status Toggle</em>
|
||||
</td>
|
||||
<td align="center">
|
||||
<img src="preview/img_6.png" alt="Emojis" width="280" style="border-radius: 10px; box-shadow: 0 2px 6px rgba(0,0,0,0.1); margin: 6px;">
|
||||
<br><em>📷 Image Viewer</em>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">
|
||||
<img src="preview/img_7.png" alt="Group Management" width="280" style="border-radius: 10px; box-shadow: 0 2px 6px rgba(0,0,0,0.1); margin: 6px;">
|
||||
<br><em>👥 Group Management</em>
|
||||
</td>
|
||||
<td align="center">
|
||||
<img src="preview/img_8.png" alt="Personal Settings" width="280" style="border-radius: 10px; box-shadow: 0 2px 6px rgba(0,0,0,0.1); margin: 6px;">
|
||||
<br><em>🤖 ChatBot Plugin Features</em>
|
||||
</td>
|
||||
<td align="center">
|
||||
<img src="preview/img_9.png" alt="File Transfer" width="280" style="border-radius: 10px; box-shadow: 0 2px 6px rgba(0,0,0,0.1); margin: 6px;">
|
||||
<br><em>🤖 ChatBot Settings Page</em>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## ✨ Features
|
||||
|
||||
<div align="center">
|
||||
<h3>🎯 Development Progress Overview</h3>
|
||||
</div>
|
||||
|
||||
### 🔐 User Authentication System
|
||||
| Feature | Description | Status |
|
||||
|---------|-------------|--------|
|
||||
| 🔑 | Username/Password Login |  |
|
||||
| 📱 | QR Code Scan Login |  |
|
||||
| 💻 | Multi-device Login Management |  |
|
||||
|
||||
### 💬 Message Communication
|
||||
| Feature | Description | Status |
|
||||
|---------|-------------|--------|
|
||||
| 👤 | One-on-one Private Chat |  |
|
||||
| 👥 | Group Chat |  |
|
||||
| ↩️ | Message Recall |  |
|
||||
| 📢 | @Mention & Reply Features |  |
|
||||
| 👁️ | Message Read Status |  |
|
||||
| 😊 | Emoji Features |  |
|
||||
| 🖱️ | Message Right-click Menu |  |
|
||||
| 🔗 | Link Preview Cards |  |
|
||||
| 👍 | Message Like Interaction |  |
|
||||
|
||||
### 🤝 Social Management
|
||||
| Feature | Description | Status |
|
||||
|---------|-------------|--------|
|
||||
| ➕ | Add & Remove Friends |  |
|
||||
| 🔍 | Friend Search |  |
|
||||
| 🏢 | Group Creation & Management |  |
|
||||
| 🟢 | Friend Online Status |  |
|
||||
| 🎖️ | Friend Badge System |  |
|
||||
| 🚫 | Block & Do Not Disturb |  |
|
||||
| 📤 | Message Forwarding |  |
|
||||
| 📋 | Group Announcements |  |
|
||||
| 🏷️ | Nickname & Remark Management |  |
|
||||
|
||||
### 🎨 User Experience
|
||||
| Feature | Description | Status |
|
||||
|---------|-------------|--------|
|
||||
| 🖼️ | Modern UI Design |  |
|
||||
| 🌙 | Dark & Light Theme |  |
|
||||
| 🎭 | Skin Theme Switching |  |
|
||||
|
||||
### 🛠️ System Features
|
||||
| Feature | Description | Status |
|
||||
|---------|-------------|--------|
|
||||
| 🪟 | Multi-window Management |  |
|
||||
| 🔔 | System Tray Notifications |  |
|
||||
| 📷 | Image Viewer |  |
|
||||
| ✂️ | Screenshot Feature |  |
|
||||
| 📁 | File Upload (Qiniu Cloud) |  |
|
||||
| 🔄 | Auto-update System |  |
|
||||
|
||||
### 🌐 Cross-platform Support
|
||||
| Feature | Description | Status |
|
||||
|---------|-------------|--------|
|
||||
| 💻 | Windows/macOS/Linux |  |
|
||||
| 📱 | iOS/Android Adaptation |  |
|
||||
|
||||
### 🤖 AI Integration
|
||||
| Feature | Description | Status |
|
||||
|---------|-------------|--------|
|
||||
| 🧠 | AI Chat Assistant |  |
|
||||
| 🔌 | Multi-platform AI Support |  |
|
||||
|
||||
## 👏 Thanks to all Contributors!
|
||||
|
||||
<a href="https://github.com/HuLaSpark/HuLa/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=HuLaSpark/HuLa" />
|
||||
</a>
|
||||
|
||||
## 📥 Installation & Running
|
||||
|
||||
```bash
|
||||
# Clone the project
|
||||
git clone https://gitee.com/HulaSpark/HuLa.git
|
||||
# or
|
||||
git clone https://github.com/HulaSpark/HuLa.git
|
||||
|
||||
# Enter project directory
|
||||
cd HuLa
|
||||
|
||||
# Install dependencies
|
||||
pnpm install
|
||||
|
||||
# Run development server
|
||||
pnpm run tauri:dev
|
||||
|
||||
# Build for production
|
||||
pnpm run tauri:build
|
||||
```
|
||||
|
||||
## ⚠️ Important Notes (macOS Users)
|
||||
|
||||
Downloading installation packages from the web may show a damaged package prompt, possibly encountering certificate issues due to macOS security mechanisms. Please follow these steps to resolve:
|
||||
|
||||
#### 1. Open "System Settings" - "Security & Privacy", check as shown: Allow apps downloaded from "Anywhere" to run:
|
||||
|
||||
<div align="center">
|
||||
<img src="preview/img_10.png" alt="img_10.png" />
|
||||
</div>
|
||||
|
||||
#### 2. If errors persist, execute the following commands in Terminal:
|
||||
|
||||
```bash
|
||||
## Execute before installation
|
||||
sudo xattr -rd com.apple.quarantine path/to/your/downloaded/package
|
||||
```
|
||||
```bash
|
||||
## If already installed, execute the following
|
||||
sudo xattr -r -d com.apple.quarantine /Applications/ApplicationName.app
|
||||
```
|
||||
|
||||
## 📋 Commit Guidelines
|
||||
|
||||
Execute **pnpm run commit** to invoke _git commit_ interaction, complete information input and selection according to prompts.
|
||||
|
||||
## ⚖️ Disclaimer
|
||||
|
||||
1. This project is provided as an open-source project. Developers do not provide any form of explicit or implicit warranties for the functionality, security, or applicability of the software within the scope permitted by law.
|
||||
2. Users clearly understand and agree that the risk of using this software is entirely borne by the user. The software is provided on an "as is" and "as available" basis. Developers do not provide any form of warranty, whether explicit or implicit, including but not limited to warranties of merchantability, fitness for a particular purpose, and non-infringement.
|
||||
3. Under no circumstances shall developers or their suppliers be liable for any direct, indirect, incidental, special, punitive, or consequential damages, including but not limited to profit loss, business interruption, personal information leakage, or other commercial damages or losses arising from the use of this software.
|
||||
4. All users conducting secondary development on this project must commit to using this software for legal purposes and are responsible for complying with local laws and regulations.
|
||||
5. Developers have the right to modify the software's functions or features at any time, as well as any part of this disclaimer, and these modifications may be reflected in the form of software updates.
|
||||
|
||||
**The final interpretation of this disclaimer belongs to the developers**
|
||||
|
||||
## 🎁 Support the Project
|
||||
|
||||
<h3>💝 Sponsor Support</h3>
|
||||
<p><em>If you find HuLa helpful, welcome to sponsor and support us. Your support is our motivation to keep moving forward!</em></p>
|
||||
|
||||
<div>
|
||||
<img src="preview/zs.jpg" height="240" alt="WeChat Code">
|
||||
<img src="preview/zfb.png" height="240" alt="Alipay Code">
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
---
|
||||
|
||||
## 💬 Join Community
|
||||
|
||||
<div align="center">
|
||||
<h3>🤝 HuLa Community Discussion Group</h3>
|
||||
<p><em>Join developers and users for discussions, get the latest news and technical support</em></p>
|
||||
|
||||
<div>
|
||||
<img src="preview/wx.png" width="220" height="260" alt="WeChat Group QR Code">
|
||||
</div>
|
||||
|
||||
<p><strong>📱 Scan to Join WeChat Discussion Group</strong></p>
|
||||
</div>
|
||||
|
||||
## 🙏 Thanks to Sponsors
|
||||
|
||||
<div align="center">
|
||||
<h3>💎 Contributors Hall of Fame</h3>
|
||||
<p><em>Thanks to the following friends for their generous support of the HuLa project!</em></p>
|
||||
</div>
|
||||
|
||||
### 🏆 Gold Sponsors ($15+)
|
||||
| 💝 Date | 👤 Sponsor | 💰 Amount | 🏷️ Platform |
|
||||
|---------|----------|--------|---------|
|
||||
| 2025-04-25 | **上官俊斌** | `¥200` |  |
|
||||
| 2025-05-27 | **临安居士** | `¥188` |  |
|
||||
| 2025-04-20 | **姜兴(Simon)** | `¥188` |  |
|
||||
| 2025-02-17 | **禾硕** | `¥168` |  |
|
||||
| 2025-08-13 | **zhongjing** | `¥100` |  |
|
||||
| 2025-07-15 | **粉兔** | `¥100` |  |
|
||||
| 2025-02-8 | **Boom....** | `¥100` |  |
|
||||
|
||||
### 🥈 Silver Sponsors ($8-14)
|
||||
| 💝 Date | 👤 Sponsor | 💰 Amount | 🏷️ Platform |
|
||||
|---------|----------|--------|---------|
|
||||
| 2025-06-26 | **m udDy🐖** | `¥88` |  |
|
||||
| 2025-05-09 | **犹豫,就会败北。** | `¥88` |  |
|
||||
| 2025-04-01 | **墨** | `¥88.88` |  |
|
||||
| 2025-02-8 | **邓伟** | `¥88` |  |
|
||||
| 2025-02-7 | **dennis** | `¥80` |  |
|
||||
| 2025-02-6 | **小二** | `¥62` |  |
|
||||
| 2025-05-15 | **孤鸿影** | `¥56` |  |
|
||||
|
||||
### 🥉 Bronze Sponsors ($3-7)
|
||||
| 💝 Date | 👤 Sponsor | 💰 Amount | 🏷️ Platform |
|
||||
|---------|----------|--------|---------|
|
||||
| 2025-08-12 | ***持** | `¥20` |  |
|
||||
| 2025-06-03 | **洪流** | `¥20` |  |
|
||||
| 2025-05-27 | **刘启成** | `¥20` |  |
|
||||
| 2025-05-20 | **匿名赞助者** | `¥20` |  |
|
||||
|
||||
<div align="center">
|
||||
<br>
|
||||
|
||||
> 📝 **Friendly Reminder**
|
||||
> This list is manually updated. If you have sponsored but are not listed, please contact us:
|
||||
> 🐛 [GitHub Issue](https://github.com/HuLaSpark/HuLa/issues) | 📧 Email: `2439646234@qq.com` | 💬 WeChat: `cy2439646234`
|
||||
|
||||
<br>
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
## 📄 Open Source License
|
||||
|
||||
<div align="center">
|
||||
<h3>⚖️ License Information</h3>
|
||||
|
||||
<p>
|
||||
<a href="https://app.fossa.com/projects/git%2Bgithub.com%2FHuLaSpark%2FHuLa?ref=badge_large">
|
||||
<img src="https://app.fossa.com/api/projects/git%2Bgithub.com%2FHuLaSpark%2FHuLa.svg?type=large" alt="FOSSA Status" style="max-width: 100%; border-radius: 8px;">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<p><em>This project follows open source license agreements. For detailed information, please check the license report above</em></p>
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
<div align="center">
|
||||
<h3>🌟 Thank You for Your Attention</h3>
|
||||
<p>
|
||||
<em>If you find HuLa valuable, please give us a ⭐ Star, which is the greatest encouragement for us!</em>
|
||||
</p>
|
||||
<p>
|
||||
<strong>Let's build a better instant messaging experience together 🚀</strong>
|
||||
</p>
|
||||
</div>
|
||||
414
README.md
@@ -1,43 +1,411 @@
|
||||
|
||||
<p align="center">
|
||||
<img width="144px" src="logo.png" />
|
||||
<img width="350px" height="150px" src="src/assets/logo/hula.png"/>
|
||||
</p>
|
||||
|
||||
<h1 align="center">HuLa</h1>
|
||||
<p align="center">An Instant Messaging System Built with Tauri, Vite 5, Vue 3, and TypeScript</p>
|
||||
<p align="center">一款基于Tauri、Vite 7、Vue 3 和 TypeScript 构建的即时通讯系统</p>
|
||||
|
||||
<p align="center"><a href="README.zh-CN.md">中文</a> | English</p>
|
||||
<!-- 🌟 特色推荐 -->
|
||||
<div align="center">
|
||||
<a href="https://hellogithub.com/repository/743b101346c54f6cb5c20eed2edbaa40" target="_blank">
|
||||
<img src="https://abroad.hellogithub.com/v1/widgets/recommend.svg?rid=743b101346c54f6cb5c20eed2edbaa40&claim_uid=WsQaY6SlnL7qxG3&theme=neutral" alt="Featured|HelloGitHub" style="width: 250px; height: 54px;" width="250" height="54" />
|
||||
</a>
|
||||
</div>
|
||||
|
||||
## Project Introduction
|
||||
<br>
|
||||
|
||||
HuLa is an instant messaging system developed with Tauri, Vite 5, Vue 3, and TypeScript. It leverages the cross-platform capabilities of Tauri and the reactive design of Vue 3, combined with TypeScript's type safety features and the fast build system of Vite 5, to provide users with an efficient, secure, and easy-to-use communication solution.
|
||||
<!-- 项目统计与认证 -->
|
||||
<div align="center">
|
||||
<h3>📊 项目统计</h3>
|
||||
<p>
|
||||
<a href="https://gitee.com/HulaSpark/HuLa/stargazers">
|
||||
<img src="https://gitee.com/HulaSpark/HuLa/badge/star.svg?theme=gvp" alt="Gitee Stars">
|
||||
</a>
|
||||
<a href="https://github.com/HulaSpark/HuLa/stargazers">
|
||||
<img src="https://img.shields.io/github/stars/HulaSpark/HuLa?style=social" alt="GitHub Stars">
|
||||
</a>
|
||||
<a href="https://gitcode.com/HuLaSpark/HuLa">
|
||||
<img src="https://gitcode.com/HuLaSpark/HuLa/star/badge.svg" alt="GitCode Stars">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
## Technology Stack
|
||||
<!-- 🔖 项目认证 -->
|
||||
<h3>🔖 项目认证</h3>
|
||||
<p>
|
||||
<a href="https://deepwiki.com/HuLaSpark/HuLa">
|
||||
<img src="https://deepwiki.com/badge.svg" alt="DeepWiki">
|
||||
</a>
|
||||
<a href="https://app.fossa.com/projects/git%2Bgithub.com%2FHuLaSpark%2FHuLa?ref=badge_shield">
|
||||
<img src="https://app.fossa.com/api/projects/git%2Bgithub.com%2FHuLaSpark%2FHuLa.svg?type=shield" alt="FOSSA Status">
|
||||
</a>
|
||||
<a href="https://www.bestpractices.dev/zh-CN/projects/9692">
|
||||
<img src="https://bestpractices.coreinfrastructure.org/projects/9692/badge" alt="CII Best Practices">
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
- **Tauri**: Provides a lightweight, high-performance desktop application container, enabling the development of cross-platform desktop applications with a web technology stack. Tauri's design philosophy aims to minimize resource consumption while ensuring security.
|
||||
- **Vite 5**: A modern front-end build tool that uses native ES module import to offer a fast development server. At the same time, it provides robust support for production builds. Vite 5 is its latest version, bringing more optimizations and features.
|
||||
- **Vue 3**: A progressive JavaScript framework for building user interfaces. Its Composition API, improved TypeScript integration, and optimizations for mobile platforms make developing complex single-page applications simpler and more efficient.
|
||||
- **TypeScript**: A superset of JavaScript that adds a type system to the language. It enables catching more errors during development and provides better support from editors.
|
||||
<br>
|
||||
|
||||
## Project Architecture
|
||||
<!-- 🛠️ 技术栈 -->
|
||||
<div align="center">
|
||||
<h3>🛠️ 技术栈</h3>
|
||||
|
||||
HuLa adopts a modular architecture design, with the front end built using Vue 3 for the user interface, enhanced by TypeScript for better code readability and maintainability. On the backend, we use the Tauri framework for packaging and distributing the application, leveraging its native integration with the operating system to offer users more functionality and higher performance.
|
||||
<p>
|
||||
<img src="https://img.shields.io/badge/Vue3-35495E?logo=vue.js&logoColor=4FC08D">
|
||||
<img src="https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=fff">
|
||||
<img src="https://img.shields.io/badge/Vite7-646CFF?logo=vite&logoColor=fff">
|
||||
<img src="https://img.shields.io/badge/Tauri-24C8DB?logo=tauri&logoColor=FFC131">
|
||||
<img src="https://img.shields.io/badge/Rust-c57c54?logo=rust&logoColor=E34F26">
|
||||
<img src="https://img.shields.io/badge/UnoCss-333333?logo=unocss&logoColor=fff">
|
||||
<img src="https://img.shields.io/badge/Sass-CC6699?logo=sass&logoColor=fff">
|
||||
<img src="https://img.shields.io/badge/pnpm-F69220?logo=pnpm&logoColor=fff">
|
||||
</p>
|
||||
</div>
|
||||
|
||||
## Installation and Running
|
||||
<br>
|
||||
|
||||
<!-- 🔗 快速链接 -->
|
||||
<div align="center">
|
||||
<h3>🔗 快速链接</h3>
|
||||
|
||||
<p>
|
||||
💻 <strong>官网:</strong><a href="https://hulaspark.com">HuLaSpark</a> |
|
||||
☕️ <strong>服务端:</strong><a href="https://github.com/HulaSpark/HuLa-Server">GitHub</a> / <a href="https://gitee.com/HulaSpark/HuLa-Server">Gitee</a> |
|
||||
💬 <strong>微信:</strong><code>cy2439646234</code>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<p align="center">
|
||||
中文 |
|
||||
<a href="README.en.md">English</a> |
|
||||
<!-- Keep these links. Translations will automatically update with the README. -->
|
||||
<a href="https://www.readme-i18n.com/HuLaSpark/HuLa?lang=de">Deutsch</a> |
|
||||
<a href="https://www.readme-i18n.com/HuLaSpark/HuLa?lang=es">Español</a> |
|
||||
<a href="https://www.readme-i18n.com/HuLaSpark/HuLa?lang=fr">français</a> |
|
||||
<a href="https://www.readme-i18n.com/HuLaSpark/HuLa?lang=ja">日本語</a> |
|
||||
<a href="https://www.readme-i18n.com/HuLaSpark/HuLa?lang=ko">한국어</a> |
|
||||
<a href="https://www.readme-i18n.com/HuLaSpark/HuLa?lang=pt">Português</a> |
|
||||
<a href="https://www.readme-i18n.com/HuLaSpark/HuLa?lang=ru">Русский</a>
|
||||
</p>
|
||||
|
||||
## 🌐 支持平台
|
||||
|
||||
| 平台 | 支持版本 |
|
||||
|------|---------|
|
||||
| Windows | Windows 10, Windows 11 |
|
||||
| macOS | macOS 10.5+ |
|
||||
| Linux | Ubuntu 22.0+ |
|
||||
| iOS/iPadOS | iOS 9.0+, iPadOS 9.0+ |
|
||||
| Android | Android 8.0+ |
|
||||
|
||||
## 📝 项目介绍
|
||||
|
||||
HuLa 是一款基于 Tauri、Vite 7、Vue 3 和 TypeScript 构建的即时通讯系统。它利用了 Tauri 的跨平台能力和 Vue 3 的响应式设计,结合了 TypeScript 的类型安全特性和 Vite 7 的快速构建,为用户提供了一个高效、安全和易用的通讯解决方案。
|
||||
|
||||
## 🛠️ 技术栈
|
||||
|
||||
- **Tauri**: 为本项目提供了一款轻量级的、高性能的桌面应用容器,使得我们可以使用前端技术栈来开发跨平台的桌面应用。Tauri 的设计哲学是在保证安全性的前提下,尽可能减少资源占用。
|
||||
- **Vite 7**: Vite 是一个现代化的前端构建工具,它利用原生 ES 模块导入的能力来提供一个快速的开发服务器,与此同时,它也为生产环境打包提供了强大的支持。Vite 7 是其最新的版本,带来了更多的优化和特性。
|
||||
- **Vue 3**: Vue 3 是一个渐进式JavaScript框架,用于构建用户界面。它的组合式API、更好的TypeScript集成和对移动端的优化使得开发复杂的单页应用变得更加简单和高效。
|
||||
- **TypeScript**: TypeScript 是 JavaScript 的一个超集,它在 JavaScript 的基础上增加了类型系统。这让我们能够在开发过程中捕获更多的错误,并且提供更好的编辑器支持。
|
||||
|
||||
## 🖼️ 项目预览
|
||||
|
||||
<div align="center">
|
||||
<h3>🎨 界面展示</h3>
|
||||
</div>
|
||||
|
||||
<!-- 主界面展示 -->
|
||||
<table align="center">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<img src="preview/img.png" alt="主界面" width="400" style="border-radius: 12px; box-shadow: 0 4px 8px rgba(0,0,0,0.1); margin: 8px;">
|
||||
<br><em>💬 主聊天界面</em>
|
||||
</td>
|
||||
<td align="center">
|
||||
<img src="preview/img_1.png" alt="聊天界面" width="400" style="border-radius: 12px; box-shadow: 0 4px 8px rgba(0,0,0,0.1); margin: 8px;">
|
||||
<br><em>🗨️ 聊天对话界面</em>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">
|
||||
<img src="preview/img_2.png" alt="联系人界面" width="400" style="border-radius: 12px; box-shadow: 0 4px 8px rgba(0,0,0,0.1); margin: 8px;">
|
||||
<br><em>😊 表情包选择</em>
|
||||
</td>
|
||||
<td align="center">
|
||||
<img src="preview/img_3.png" alt="设置界面" width="400" style="border-radius: 12px; box-shadow: 0 4px 8px rgba(0,0,0,0.1); margin: 8px;">
|
||||
<br><em>⚙️ 系统设置</em>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br>
|
||||
|
||||
<!-- 功能特性展示 -->
|
||||
<div align="center">
|
||||
<h4>🌟 功能特性</h4>
|
||||
</div>
|
||||
|
||||
<table align="center">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<img src="preview/img_4.png" alt="消息功能" width="280" style="border-radius: 10px; box-shadow: 0 2px 6px rgba(0,0,0,0.1); margin: 6px;">
|
||||
<br><em>📱 消息多样化</em>
|
||||
</td>
|
||||
<td align="center">
|
||||
<img src="preview/img_5.png" alt="主题切换" width="280" style="border-radius: 10px; box-shadow: 0 2px 6px rgba(0,0,0,0.1); margin: 6px;">
|
||||
<br><em>🎨 状态切换</em>
|
||||
</td>
|
||||
<td align="center">
|
||||
<img src="preview/img_6.png" alt="表情包" width="280" style="border-radius: 10px; box-shadow: 0 2px 6px rgba(0,0,0,0.1); margin: 6px;">
|
||||
<br><em> 📷 图片查看</em>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">
|
||||
<img src="preview/img_7.png" alt="群聊管理" width="280" style="border-radius: 10px; box-shadow: 0 2px 6px rgba(0,0,0,0.1); margin: 6px;">
|
||||
<br><em>👥 群聊管理</em>
|
||||
</td>
|
||||
<td align="center">
|
||||
<img src="preview/img_8.png" alt="个人设置" width="280" style="border-radius: 10px; box-shadow: 0 2px 6px rgba(0,0,0,0.1); margin: 6px;">
|
||||
<br><em>🤖 ChatBot 插件功能</em>
|
||||
</td>
|
||||
<td align="center">
|
||||
<img src="preview/img_9.png" alt="文件传输" width="280" style="border-radius: 10px; box-shadow: 0 2px 6px rgba(0,0,0,0.1); margin: 6px;">
|
||||
<br><em>🤖 ChatBot 设置页面</em>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## ✨ 功能特性
|
||||
|
||||
<div align="center">
|
||||
<h3>🎯 开发进度一览</h3>
|
||||
</div>
|
||||
|
||||
|
||||
### 🔐 用户认证系统
|
||||
| 功能 | 描述 | 状态 |
|
||||
|------|------|------|
|
||||
| 🔑 | 账号密码登录 |  |
|
||||
| 📱 | 二维码扫码登录 |  |
|
||||
| 💻 | 多设备登录管理 |  |
|
||||
|
||||
### 💬 消息通信
|
||||
| 功能 | 描述 | 状态 |
|
||||
|------|------|------|
|
||||
| 👤 | 一对一私聊 |  |
|
||||
| 👥 | 群组聊天 |  |
|
||||
| ↩️ | 消息撤回 |  |
|
||||
| 📢 | @提醒、回复功能 |  |
|
||||
| 👁️ | 消息已读状态 |  |
|
||||
| 😊 | 表情包功能 |  |
|
||||
| 🖱️ | 消息右键菜单 |  |
|
||||
| 🔗 | 链接预览卡片 |  |
|
||||
| 👍 | 消息点赞互动 |  |
|
||||
|
||||
### 🤝 社交管理
|
||||
| 功能 | 描述 | 状态 |
|
||||
|------|------|------|
|
||||
| ➕ | 好友添加与删除 |  |
|
||||
| 🔍 | 好友搜索 |  |
|
||||
| 🏢 | 群组创建与管理 |  |
|
||||
| 🟢 | 好友在线状态 |  |
|
||||
| 🎖️ | 好友徽章系统 |  |
|
||||
| 🚫 | 屏蔽拉黑免打扰 |  |
|
||||
| 📤 | 消息转发 |  |
|
||||
| 📋 | 群公告功能 |  |
|
||||
| 🏷️ | 备注昵称管理 |  |
|
||||
|
||||
### 🎨 界面体验
|
||||
| 功能 | 描述 | 状态 |
|
||||
|------|------|------|
|
||||
| 🖼️ | 现代化界面设计 |  |
|
||||
| 🌙 | 深色浅色主题 |  |
|
||||
| 🎭 | 皮肤主题切换 |  |
|
||||
|
||||
### 🛠️ 系统功能
|
||||
| 功能 | 描述 | 状态 |
|
||||
|------|------|------|
|
||||
| 🪟 | 多窗口管理 |  |
|
||||
| 🔔 | 系统托盘通知 |  |
|
||||
| 📷 | 图片查看器 |  |
|
||||
| ✂️ | 截图功能 |  |
|
||||
| 📁 | 文件上传(七牛云) |  |
|
||||
| 🔄 | 自动更新系统 |  |
|
||||
|
||||
### 🌐 跨平台支持
|
||||
| 功能 | 描述 | 状态 |
|
||||
|------|------|------|
|
||||
| 💻 | Windows/macOS/Linux |  |
|
||||
| 📱 | iOS/Android 适配 |  |
|
||||
|
||||
### 🤖 AI 集成
|
||||
| 功能 | 描述 | 状态 |
|
||||
|------|------|------|
|
||||
| 🧠 | AI 聊天助手 |  |
|
||||
| 🔌 | 多平台 AI 支持 |  |
|
||||
|
||||
## 👏 感谢以下贡献者们!
|
||||
|
||||
<a href="https://github.com/HuLaSpark/HuLa/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=HuLaSpark/HuLa" />
|
||||
</a>
|
||||
|
||||
## 📥 安装与运行
|
||||
|
||||
```bash
|
||||
# Clone the project
|
||||
git clone https://gitee.com/nongyehong/HuLa-IM-Tauri.git
|
||||
or
|
||||
git clone https://github.com/nongyehong/HuLa-IM-Tauri.git
|
||||
# 克隆项目
|
||||
git clone https://gitee.com/HuLaSpark/HuLa.git
|
||||
或者
|
||||
git clone https://github.com/HuLaSpark/HuLa.git
|
||||
|
||||
# Enter the project directory
|
||||
# 进入项目目录
|
||||
cd HuLa
|
||||
|
||||
# Install dependencies
|
||||
# 安装依赖
|
||||
pnpm install
|
||||
|
||||
# Run the development server
|
||||
# 运行开发服务器
|
||||
pnpm run tauri:dev
|
||||
|
||||
# Build for production
|
||||
pnpm run tauri:build
|
||||
# 构建生产版本
|
||||
pnpm run tauri:build
|
||||
```
|
||||
|
||||
## ⚠️ 注意事项(macOS用户)
|
||||
|
||||
网页上下载安装包会提示安装包已损坏,可能会遇到证书问题,这是因为 macOS 系统的安全机制导致的。请按照以下步骤解决:
|
||||
|
||||
#### 1. 打开 "系统设置" - "安全性与隐私",如图勾选:允许 "任何来源" 下载的 App 运行:
|
||||
|
||||
<div align="center">
|
||||
<img src="preview/img_10.png" alt="img_10.png" />
|
||||
</div>
|
||||
|
||||
#### 2. 如果还报错,请在终端执行以下命令解决:
|
||||
|
||||
```bash
|
||||
## 安装前执行
|
||||
sudo xattr -rd com.apple.quarantine 你的安装包路径/下载的安装包名称
|
||||
```
|
||||
```bash
|
||||
## 如果已经安装,则执行下面
|
||||
sudo xattr -r -d com.apple.quarantine /Applications/应用名称.app
|
||||
```
|
||||
|
||||
## 📋 提交规范
|
||||
|
||||
执行 **pnpm run commit** 唤起 _git commit_ 交互,根据提示完成信息的输入和选择
|
||||
|
||||
## ⚖️ 免责声明
|
||||
|
||||
1. 本项目是作为一款开源项目提供的,开发者在法律允许的范围内不对软件的功能性、安全性或适用性提供任何形式的明示或暗示的保证
|
||||
2. 用户明确理解并同意,使用本软件的风险完全由用户自己承担,软件以"现状"和"现有"基础提供。开发者不提供任何形式的担保,无论是明示还是暗示的,包括但不限于适销性、特定用途的适用性和非侵权的担保
|
||||
3. 在任何情况下,开发者或其供应商都不对任何直接的、间接的、偶然的、特殊的、惩罚性的或后果性的损害承担责任,包括但不限于使用本软件产生的利润损失、业务中断、个人信息泄露或其他商业损害或损失
|
||||
4. 所有在本项目上进行二次开发的用户,都需承诺将本软件用于合法目的,并自行负责遵守当地的法律和法规
|
||||
5. 开发者有权在任何时间修改软件的功能或特性,以及本免责声明的任何部分,并且这些修改可能会以软件更新的形式体现
|
||||
|
||||
**本免责声明的最终解释权归开发者所有**
|
||||
|
||||
## 🎁 支持项目
|
||||
|
||||
<h3>💝 赞助支持</h3>
|
||||
<p><em>如果您觉得 HuLa 对您有帮助,欢迎赞助支持,您的支持是我们不断前进的动力!</em></p>
|
||||
|
||||
<div>
|
||||
<img src="preview/zs.jpg" height="240" alt="WeChat Code">
|
||||
<img src="preview/zfb.png" height="240" alt="Alipay Code">
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
---
|
||||
|
||||
## 💬 加入社区
|
||||
|
||||
<div align="center">
|
||||
<h3>🤝 HuLa 社区讨论群</h3>
|
||||
<p><em>与开发者和用户一起交流讨论,获取最新资讯和技术支持</em></p>
|
||||
|
||||
<div>
|
||||
<img src="preview/wx.png" width="220" height="260" alt="微信群二维码">
|
||||
</div>
|
||||
|
||||
<p><strong>📱 扫码加入微信讨论群</strong></p>
|
||||
</div>
|
||||
|
||||
## 🙏 感谢赞助者
|
||||
|
||||
<div align="center">
|
||||
<h3>💎 贡献者荣誉榜</h3>
|
||||
<p><em>感谢以下朋友对 HuLa 项目的慷慨支持!</em></p>
|
||||
</div>
|
||||
|
||||
### 🏆 金牌赞助者 (¥100+)
|
||||
| 💝 日期 | 👤 赞助者 | 💰 金额 | 🏷️ 平台 |
|
||||
|---------|----------|--------|---------|
|
||||
| 2025-04-25 | **上官俊斌** | `¥200` |  |
|
||||
| 2025-05-27 | **临安居士** | `¥188` |  |
|
||||
| 2025-04-20 | **姜兴(Simon)** | `¥188` |  |
|
||||
| 2025-02-17 | **禾硕** | `¥168` |  |
|
||||
| 2025-08-13 | **zhongjing** | `¥100` |  |
|
||||
| 2025-07-15 | **粉兔** | `¥100` |  |
|
||||
| 2025-02-8 | **Boom....** | `¥100` |  |
|
||||
|
||||
### 🥈 银牌赞助者 (¥50-99)
|
||||
| 💝 日期 | 👤 赞助者 | 💰 金额 | 🏷️ 平台 |
|
||||
|---------|----------|--------|---------|
|
||||
| 2025-06-26 | **m udDy🐖** | `¥88` |  |
|
||||
| 2025-05-09 | **犹豫,就会败北。** | `¥88` |  |
|
||||
| 2025-04-01 | **墨** | `¥88.88` |  |
|
||||
| 2025-02-8 | **邓伟** | `¥88` |  |
|
||||
| 2025-02-7 | **dennis** | `¥80` |  |
|
||||
| 2025-02-6 | **小二** | `¥62` |  |
|
||||
| 2025-05-15 | **孤鸿影** | `¥56` |  |
|
||||
|
||||
### 🥉 铜牌赞助者 (¥20-49)
|
||||
| 💝 日期 | 👤 赞助者 | 💰 金额 | 🏷️ 平台 |
|
||||
|---------|----------|--------|---------|
|
||||
| 2025-08-12 | ***持** | `¥20` |  |
|
||||
| 2025-06-03 | **洪流** | `¥20` |  |
|
||||
| 2025-05-27 | **刘启成** | `¥20` |  |
|
||||
| 2025-05-20 | **匿名赞助者** | `¥20` |  |
|
||||
|
||||
<div align="center">
|
||||
<br>
|
||||
|
||||
> 📝 **温馨提示**
|
||||
> 该名单为手动更新,如果您已赞助但未在列表中,请联系我们:
|
||||
> 🐛 [GitHub Issue](https://github.com/HuLaSpark/HuLa/issues) | 📧 邮箱: `2439646234@qq.com` | 💬 微信: `cy2439646234`
|
||||
|
||||
<br>
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
## 📄 开源许可
|
||||
|
||||
<div align="center">
|
||||
<h3>⚖️ 许可证信息</h3>
|
||||
|
||||
<p>
|
||||
<a href="https://app.fossa.com/projects/git%2Bgithub.com%2FHuLaSpark%2FHuLa?ref=badge_large">
|
||||
<img src="https://app.fossa.com/api/projects/git%2Bgithub.com%2FHuLaSpark%2FHuLa.svg?type=large" alt="FOSSA Status" style="max-width: 100%; border-radius: 8px;">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<p><em>本项目遵循开源许可协议,详细信息请查看上方许可证报告</em></p>
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
<div align="center">
|
||||
<h3>🌟 感谢您的关注</h3>
|
||||
<p>
|
||||
<em>如果您觉得 HuLa 有价值,请给我们一个 ⭐ Star,这是对我们最大的鼓励!</em>
|
||||
</p>
|
||||
<p>
|
||||
<strong>让我们一起构建更好的即时通讯体验 🚀</strong>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
<p align="center">
|
||||
<img width="144px" src="logo.png" />
|
||||
</p>
|
||||
|
||||
<h1 align="center">HuLa</h1>
|
||||
<p align="center">一个基于Tauri、Vite 5、Vue 3 和 TypeScript 构建的即时通讯系统</p>
|
||||
|
||||
<p align="center"><a href="README.md">English</a> | 中文</p>
|
||||
|
||||
## 项目介绍
|
||||
|
||||
HuLa 是一个基于 Tauri、Vite 5、Vue 3 和 TypeScript 构建的即时通讯系统。它利用了 Tauri 的跨平台能力和 Vue 3 的响应式设计,结合了 TypeScript 的类型安全特性和 Vite 5 的快速构建,为用户提供了一个高效、安全和易用的通讯解决方案。
|
||||
|
||||
## 技术栈
|
||||
|
||||
- **Tauri**: 为本项目提供了一个轻量级的、高性能的桌面应用容器,使得我们可以使用前端技术栈来开发跨平台的桌面应用。Tauri 的设计哲学是在保证安全性的前提下,尽可能减少资源占用。
|
||||
- **Vite 5**: Vite 是一个现代化的前端构建工具,它利用原生 ES 模块导入的能力来提供一个快速的开发服务器,与此同时,它也为生产环境打包提供了强大的支持。Vite 5 是其最新的版本,带来了更多的优化和特性。
|
||||
- **Vue 3**: Vue 3 是一个渐进式JavaScript框架,用于构建用户界面。它的组合式API、更好的TypeScript集成和对移动端的优化使得开发复杂的单页应用变得更加简单和高效。
|
||||
- **TypeScript**: TypeScript 是 JavaScript 的一个超集,它在 JavaScript 的基础上增加了类型系统。这让我们能够在开发过程中捕获更多的错误,并且提供更好的编辑器支持。
|
||||
|
||||
## 项目架构
|
||||
|
||||
HuLa 采用了模块化的架构设计,前端使用 Vue 3 构建用户界面,通过 TypeScript 来增强代码的可读性和维护性。在后端,我们使用 Tauri 框架来打包和发布应用,利用它与操作系统的原生集成为用户提供了更多的功能和更高的性能。
|
||||
|
||||
## 安装与运行
|
||||
|
||||
```bash
|
||||
# 克隆项目
|
||||
git clone https://gitee.com/nongyehong/HuLa-IM-Tauri.git
|
||||
或者
|
||||
git clone https://github.com/nongyehong/HuLa-IM-Tauri.git
|
||||
|
||||
# 进入项目目录
|
||||
cd HuLa
|
||||
|
||||
# 安装依赖
|
||||
pnpm install
|
||||
|
||||
# 运行开发服务器
|
||||
pnpm run tauri:dev
|
||||
|
||||
# 构建生产版本
|
||||
pnpm run tauri:build
|
||||
19
SECURITY.md
Normal file
@@ -0,0 +1,19 @@
|
||||
# Security Policy
|
||||
|
||||
## Supported Versions
|
||||
|
||||
There are now two versions of HuLa, one is an earlier version using simulated data
|
||||
and the other is a later version using server data
|
||||
|
||||
| Version | Supported |
|
||||
| ------- | ------------------------------------ |
|
||||
| 1.4 | :Comparatively complete features: |
|
||||
| 1.5 | :Support more features: |
|
||||
| 1.6 | :Interconnect with backend data: |
|
||||
| 2.x | :Developed on the basis of Tauri-V2: |
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
Now the installation package downloaded in the browser will have a virus error, this is because there
|
||||
is no security code set for the reason, this follow-up is set according to the platform, the Windows
|
||||
platform costs less, so we focus on the solution of the Windows platform
|
||||
115
biome.json
vendored
Normal file
@@ -0,0 +1,115 @@
|
||||
{
|
||||
"$schema": "https://biomejs.dev/schemas/latest/schema.json",
|
||||
"vcs": { "enabled": false, "clientKind": "git", "useIgnoreFile": false },
|
||||
"files": {
|
||||
"ignoreUnknown": false,
|
||||
"includes": [
|
||||
"**/*.{js,jsx,ts,tsx,vue,json}",
|
||||
"!.*",
|
||||
"!public/*",
|
||||
"!src/typings/*.d.ts",
|
||||
"!src-tauri/*",
|
||||
"!node_modules/*",
|
||||
"!tauri-plugin-hula/*",
|
||||
"!dist/*",
|
||||
"!src-tauri/gen/schemas"
|
||||
]
|
||||
},
|
||||
"formatter": {
|
||||
"enabled": true,
|
||||
"formatWithErrors": false,
|
||||
"indentStyle": "space",
|
||||
"indentWidth": 2,
|
||||
"lineEnding": "lf",
|
||||
"lineWidth": 120,
|
||||
"attributePosition": "auto",
|
||||
"bracketSameLine": true,
|
||||
"bracketSpacing": true,
|
||||
"expand": "auto",
|
||||
"useEditorconfig": true
|
||||
},
|
||||
"linter": {
|
||||
"enabled": true,
|
||||
"rules": {
|
||||
"recommended": true,
|
||||
"a11y": {
|
||||
"noStaticElementInteractions": "off",
|
||||
"useKeyWithClickEvents": "off",
|
||||
"noSvgWithoutTitle": "off",
|
||||
"useAltText": "off"
|
||||
},
|
||||
"complexity": {
|
||||
"useOptionalChain": "off",
|
||||
"useLiteralKeys": "off",
|
||||
"useDateNow": "off",
|
||||
"noStaticOnlyClass": "off"
|
||||
},
|
||||
"correctness": {
|
||||
"noUnusedVariables": "warn",
|
||||
"noUnusedImports": "warn"
|
||||
},
|
||||
"style": {
|
||||
"useNodejsImportProtocol": "off",
|
||||
"noNonNullAssertion": "off",
|
||||
"useNamingConvention": "off",
|
||||
"useTemplate": "off"
|
||||
},
|
||||
"suspicious": {
|
||||
"noGlobalIsNan": "off",
|
||||
"noExplicitAny": "off",
|
||||
"noAssignInExpressions": "off",
|
||||
"noImplicitAnyLet": "off",
|
||||
"noConfusingVoidType": "off",
|
||||
"noArrayIndexKey": "off",
|
||||
"useIterableCallbackReturn": "off"
|
||||
}
|
||||
}
|
||||
},
|
||||
"javascript": {
|
||||
"formatter": {
|
||||
"jsxQuoteStyle": "double",
|
||||
"quoteProperties": "asNeeded",
|
||||
"trailingCommas": "none",
|
||||
"semicolons": "asNeeded",
|
||||
"arrowParentheses": "always",
|
||||
"bracketSameLine": true,
|
||||
"quoteStyle": "single",
|
||||
"attributePosition": "auto",
|
||||
"bracketSpacing": true
|
||||
}
|
||||
},
|
||||
"json": {
|
||||
"formatter": {
|
||||
"trailingCommas": "none"
|
||||
}
|
||||
},
|
||||
"assist": {
|
||||
"enabled": true,
|
||||
"actions": { "source": { "organizeImports": "on" } }
|
||||
},
|
||||
"overrides": [
|
||||
{
|
||||
"includes": ["**/*.vue"],
|
||||
"linter": {
|
||||
"rules": {
|
||||
"correctness": {
|
||||
"noUnusedVariables": "off",
|
||||
"noUnusedImports": "off"
|
||||
},
|
||||
"style": {
|
||||
"useNamingConvention": "off",
|
||||
"useTemplate": "off"
|
||||
},
|
||||
"suspicious": {
|
||||
"noExplicitAny": "off",
|
||||
"noAssignInExpressions": "off",
|
||||
"noImplicitAnyLet": "off"
|
||||
}
|
||||
}
|
||||
},
|
||||
"formatter": {
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
2
build/config/getPath.ts
vendored
@@ -1,5 +1,5 @@
|
||||
//使用path需要按照@types/node依赖
|
||||
import path from 'path'
|
||||
import path from 'node:path'
|
||||
|
||||
/**
|
||||
* 获取项目根路径
|
||||
|
||||
42
build/config/version.ts
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
import pkg from '../../package.json'
|
||||
|
||||
/** npm依赖包版本信息 */
|
||||
export interface PkgVersionInfo {
|
||||
name: string
|
||||
version: string
|
||||
}
|
||||
|
||||
interface Package {
|
||||
name: string
|
||||
version: string
|
||||
author: Record<string, string>
|
||||
dependencies: Record<string, string>
|
||||
devDependencies: Record<string, string>
|
||||
[key: string]: any
|
||||
}
|
||||
|
||||
interface PkgJson {
|
||||
name: string
|
||||
version: string
|
||||
author: Record<string, string>
|
||||
dependencies: PkgVersionInfo[]
|
||||
devDependencies: PkgVersionInfo[]
|
||||
}
|
||||
|
||||
const pkgWithType = pkg as Package
|
||||
|
||||
const transformVersionData = (tuple: [string, string]): PkgVersionInfo => {
|
||||
const [name, version] = tuple
|
||||
return {
|
||||
name,
|
||||
version
|
||||
}
|
||||
}
|
||||
|
||||
export const pkgJson: PkgJson = {
|
||||
name: pkgWithType.name,
|
||||
version: pkgWithType.version,
|
||||
author: pkgWithType.author,
|
||||
dependencies: Object.entries(pkgWithType.dependencies).map((item) => transformVersionData(item)),
|
||||
devDependencies: Object.entries(pkgWithType.devDependencies).map((item) => transformVersionData(item))
|
||||
}
|
||||
98
commitlint.config.cjs
vendored
Normal file
@@ -0,0 +1,98 @@
|
||||
/** @type {import('cz-git').UserConfig} */
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
|
||||
/* 获取项目的修改范围 */
|
||||
const scopes = fs
|
||||
.readdirSync(path.resolve(__dirname, 'src'), { withFileTypes: true })
|
||||
.filter((dirent) => dirent.isDirectory())
|
||||
.map((dirent) => dirent.name.replace(/s$/, ''))
|
||||
|
||||
module.exports = {
|
||||
// 继承的规则
|
||||
extends: ['@commitlint/config-conventional'],
|
||||
// 自定义规则
|
||||
rules: {
|
||||
// @see https://commitlint.js.org/#/reference-rules
|
||||
|
||||
// 提交类型枚举,git提交type必须是以下类型
|
||||
'type-enum': [
|
||||
2,
|
||||
'always',
|
||||
[
|
||||
'feat', // 新增功能
|
||||
'fix', // 修复缺陷
|
||||
'docs', // 文档变更
|
||||
'style', // 代码格式(不影响功能,例如空格、分号等格式修正)
|
||||
'refactor', // 代码重构(不包括 bug 修复、功能新增)
|
||||
'perf', // 性能优化
|
||||
'test', // 添加疏漏测试或已有测试改动
|
||||
'build', // 构建流程、外部依赖变更(如升级 npm 包、修改 webpack 配置等)
|
||||
'ci', // 修改 CI 配置、脚本
|
||||
'revert', // 回滚 commit
|
||||
'chore' // 对构建过程或辅助工具和库的更改(不影响源文件、测试用例)
|
||||
]
|
||||
],
|
||||
'subject-case': [0] // subject大小写不做校验
|
||||
},
|
||||
|
||||
prompt: {
|
||||
messages: {
|
||||
type: '选择你要提交的类型 :',
|
||||
scope: '选择一个提交范围(可选):',
|
||||
customScope: '请输入自定义的提交范围 :',
|
||||
subject: '填写简短精炼的变更描述 :\n',
|
||||
body: '填写更加详细的变更描述(可选)。使用 "|" 换行 :\n',
|
||||
breaking: '列举非兼容性重大的变更(可选)。使用 "|" 换行 :\n',
|
||||
footerPrefixesSelect: '选择关联issue前缀(可选):',
|
||||
customFooterPrefix: '输入自定义issue前缀 :',
|
||||
footer: '列举关联issue (可选) 例如: #31, #I3244 :\n',
|
||||
generatingByAI: '正在通过 AI 生成你的提交简短描述...',
|
||||
generatedSelectByAI: '选择一个 AI 生成的简短描述:',
|
||||
confirmCommit: '是否提交或修改commit ?'
|
||||
},
|
||||
// prettier-ignore
|
||||
types: [
|
||||
{ value: "feat", name: "特性: ✨ 新增功能", emoji: ":sparkles:" },
|
||||
{ value: "fix", name: "修复: 🐛 修复缺陷", emoji: ":bug:" },
|
||||
{ value: "docs", name: "文档: 📝 文档变更", emoji: ":memo:" },
|
||||
{ value: "style", name: "格式: 💄 代码格式(不影响功能,例如空格、分号等格式修正)", emoji: ":lipstick:" },
|
||||
{ value: "refactor", name: "重构: ♻️ 代码重构(不包括 bug 修复、功能新增)", emoji: ":recycle:" },
|
||||
{ value: "perf", name: "性能: 🚀 性能优化", emoji: ":zap:" },
|
||||
{ value: "test", name: "测试: 🧪 添加疏漏测试或已有测试改动", emoji: ":white_check_mark:"},
|
||||
{ value: "build", name: "构建: 📦️ 构建流程、外部依赖变更(如升级 npm 包、修改 vite 配置等)", emoji: ":package:"},
|
||||
{ value: "ci", name: "集成: ⚙️ 修改 CI 配置、脚本", emoji: ":ferris_wheel:"},
|
||||
{ value: "revert", name: "回退: ↩️ 回滚 commit",emoji: ":rewind:"},
|
||||
{ value: "chore", name: "其他: 🛠️ 对构建过程或辅助工具和库的更改(不影响源文件、测试用例)", emoji: ":hammer:"},
|
||||
],
|
||||
useEmoji: true,
|
||||
emojiAlign: 'center',
|
||||
useAI: false,
|
||||
aiNumber: 1,
|
||||
themeColorCode: '38;5;168',
|
||||
allowCustomScopes: true,
|
||||
allowEmptyScopes: true,
|
||||
customScopesAlign: 'bottom',
|
||||
scopes: [...scopes],
|
||||
upperCaseSubject: false,
|
||||
markBreakingChangeMode: false,
|
||||
allowBreakingChanges: ['feat', 'fix'],
|
||||
breaklineNumber: 100,
|
||||
breaklineChar: '|',
|
||||
skipQuestions: [],
|
||||
issuePrefixes: [{ value: 'closed', name: 'closed: ISSUES has been processed' }],
|
||||
customIssuePrefixAlign: 'top',
|
||||
emptyIssuePrefixAlias: 'skip',
|
||||
customIssuePrefixAlias: 'custom',
|
||||
allowCustomIssuePrefix: true,
|
||||
allowEmptyIssuePrefix: true,
|
||||
confirmColorize: true,
|
||||
maxHeaderLength: Infinity,
|
||||
maxSubjectLength: Infinity,
|
||||
minSubjectLength: 0,
|
||||
scopeOverrides: undefined,
|
||||
defaultBody: '',
|
||||
defaultIssues: '',
|
||||
defaultSubject: ''
|
||||
}
|
||||
}
|
||||
79
config/cz-config.cjs
vendored
@@ -1,79 +0,0 @@
|
||||
module.exports = {
|
||||
types: [
|
||||
{
|
||||
value: ':sparkles: feat',
|
||||
name: '✨ feat: 新功能'
|
||||
},
|
||||
{
|
||||
value: ':sunflower: update',
|
||||
name: '🌻 update: 更新'
|
||||
},
|
||||
{
|
||||
value: ':bug: fix',
|
||||
name: '🐛 fix: 修复bug'
|
||||
},
|
||||
{
|
||||
value: ':package: build',
|
||||
name: '📦️build: 打包'
|
||||
},
|
||||
{
|
||||
value: ':zap: perf',
|
||||
name: '⚡️ perf: 性能优化'
|
||||
},
|
||||
{
|
||||
value: ':tada: release',
|
||||
name: '🎉 release: 发布正式版'
|
||||
},
|
||||
{
|
||||
value: ':medal: version',
|
||||
name: '🎖️version: 发布新版本'
|
||||
},
|
||||
{
|
||||
value: ':lipstick: style',
|
||||
name: '💄 style: 代码的样式美化'
|
||||
},
|
||||
{
|
||||
value: ':recycle: refactor',
|
||||
name: '♻️ refactor: 重构'
|
||||
},
|
||||
{
|
||||
value: ':pencil2: docs',
|
||||
name: '✏️ docs: 文档变更'
|
||||
},
|
||||
{
|
||||
value: ':white_check_mark: test',
|
||||
name: '✅ test: 测试'
|
||||
},
|
||||
{
|
||||
value: ':rewind: revert',
|
||||
name: '⏪️ revert: 回退'
|
||||
},
|
||||
{
|
||||
value: ':rocket: chore',
|
||||
name: '🚀 chore: 构建/工程依赖/工具'
|
||||
},
|
||||
{
|
||||
value: ':construction_worker: ci',
|
||||
name: '👷 ci: CI相关的变化'
|
||||
}
|
||||
],
|
||||
// 每一步的提示信息
|
||||
messages: {
|
||||
type: '请选择提交类型',
|
||||
scope: '请选择文件修改范围',
|
||||
subject: '请输入commit标题(必填)',
|
||||
body: '请输入commit描述, 可通过&换行(选填)',
|
||||
// breaking: '列出任何BREAKING CHANGES(破坏性修改)(可选)',
|
||||
// footer: '请输入要关闭的issue(可选)',
|
||||
confirmCommit: '确定提交此 commit 吗?'
|
||||
},
|
||||
// 配置scope可选项,mono项目可按子项目维度划分,非mono项目可按功能or业务模块划分
|
||||
scopes: ['custom', 'system', 'style', 'setting'],
|
||||
// commit描述的换行符
|
||||
breaklineChar: '&',
|
||||
skipQuestions: ['breaking', 'footer'],
|
||||
// 标题首字母大写
|
||||
upperCaseSubject: true,
|
||||
// 标题必填
|
||||
requiredSubject: true
|
||||
}
|
||||
60
docker-compose.yaml
vendored
Normal file
@@ -0,0 +1,60 @@
|
||||
version: '3.7'
|
||||
services:
|
||||
tauri:
|
||||
image: ubuntu:22.04
|
||||
volumes:
|
||||
- .:/app
|
||||
# 只挂载构建产物目录
|
||||
- ./src-tauri/target/release:/app/src-tauri/target/release
|
||||
environment:
|
||||
- RUST_BACKTRACE=1
|
||||
- CARGO_HOME=/root/.cargo
|
||||
- RUSTUP_HOME=/root/.rustup
|
||||
- DEBIAN_FRONTEND=noninteractive
|
||||
command:
|
||||
- 'bash'
|
||||
- '-c'
|
||||
- |
|
||||
cd /app
|
||||
apt-get update
|
||||
apt-get install -y curl git build-essential libwebkit2gtk-4.1-dev librsvg2-dev patchelf libudev-dev \
|
||||
libasound2-dev pkg-config libgtk-3-dev libayatana-appindicator3-dev
|
||||
|
||||
# 安装 Node.js 22
|
||||
curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
|
||||
apt-get install -y nodejs
|
||||
npm install -g npm@latest
|
||||
|
||||
# 安装指定版本的 pnpm
|
||||
npm install -g pnpm@9
|
||||
pnpm --version
|
||||
|
||||
# 安装 Rust
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
||||
source "$CARGO_HOME/env"
|
||||
|
||||
# 配置镜像源
|
||||
pnpm config set registry https://repo.huaweicloud.com/repository/npm/
|
||||
rustup default stable
|
||||
mkdir -p ~/.cargo
|
||||
echo '[source.crates-io]
|
||||
replace-with = "rsproxy-sparse"
|
||||
[source.rsproxy]
|
||||
registry = "https://rsproxy.cn/crates.io-index"
|
||||
[source.rsproxy-sparse]
|
||||
registry = "sparse+https://rsproxy.cn/index/"
|
||||
[registries.rsproxy]
|
||||
index = "https://rsproxy.cn/crates.io-index"' > ~/.cargo/config.toml
|
||||
|
||||
# 构建项目
|
||||
cd /app
|
||||
echo "📦 Installing dependencies..."
|
||||
rm -rf node_modules pnpm-lock.yaml
|
||||
pnpm install
|
||||
|
||||
echo "🔨 Building Vite project..."
|
||||
pnpm build || exit 1
|
||||
|
||||
echo "✨ Starting Tauri build..."
|
||||
pnpm tauri build || exit 1
|
||||
echo "✅ Tauri build completed. Check src-tauri/target/release for the output."
|
||||
241
docs/qiniu-upload.md
Normal file
@@ -0,0 +1,241 @@
|
||||
# 七牛云上传功能使用指南
|
||||
|
||||
HuLa 现已支持使用七牛云存储服务来上传和存储文件,这为用户提供了更灵活的文件存储选择。本文档将介绍如何在 HuLa 中使用七牛云上传功能。
|
||||
|
||||
## 功能特点
|
||||
|
||||
- 支持在默认上传方式和七牛云之间切换
|
||||
- 使用统一的上传接口,便于集成
|
||||
- 支持大文件上传
|
||||
- 自动生成唯一文件名,避免文件名冲突
|
||||
- 支持进度显示(在浏览器环境中)
|
||||
- 支持多区域上传(华东、华北、华南、北美、东南亚)
|
||||
- 支持分片上传大文件
|
||||
|
||||
## 配置说明
|
||||
|
||||
### 七牛云区域设置
|
||||
|
||||
七牛云提供了多个存储区域,HuLa 支持根据配置自动选择合适的上传域名:
|
||||
|
||||
| 区域代码 | 区域名称 | 上传域名 |
|
||||
|---------|---------|---------|
|
||||
| z0 | 华东 | https://upload.qiniup.com |
|
||||
| z1 | 华北 | https://upload-z1.qiniup.com |
|
||||
| z2 | 华南 | https://upload-z2.qiniup.com |
|
||||
| na0 | 北美 | https://upload-na0.qiniup.com |
|
||||
| as0 | 东南亚 | https://upload-as0.qiniup.com |
|
||||
|
||||
默认情况下,如果未指定区域,系统将使用华南区域(z2)。
|
||||
|
||||
### 后端配置
|
||||
|
||||
后端需要提供以下配置信息:
|
||||
|
||||
```json
|
||||
{
|
||||
"token": "七牛云上传凭证",
|
||||
"domain": "七牛云存储域名",
|
||||
"storagePrefix": "存储前缀",
|
||||
"region": "存储区域代码(可选,默认为z2)"
|
||||
}
|
||||
```
|
||||
|
||||
## 使用方法
|
||||
|
||||
### 在代码中使用
|
||||
|
||||
```typescript
|
||||
import { useUpload, UploadProviderEnum } from '@/hooks/useUpload'
|
||||
import { UploadSceneEnum } from '@/enums'
|
||||
|
||||
// 创建上传hook实例
|
||||
const uploadHook = useUpload()
|
||||
|
||||
// 使用七牛云上传
|
||||
async function uploadToQiniu(filePath: string) {
|
||||
try {
|
||||
// 获取上传和下载URL
|
||||
const result = await uploadHook.getUploadAndDownloadUrl(filePath, {
|
||||
provider: UploadProviderEnum.QINIU,
|
||||
scene: UploadSceneEnum.CHAT
|
||||
})
|
||||
|
||||
// 执行上传
|
||||
await uploadHook.doUpload(filePath, result.uploadUrl, result)
|
||||
|
||||
console.log('上传成功,下载地址:', result.downloadUrl)
|
||||
return result.downloadUrl
|
||||
} catch (error) {
|
||||
console.error('上传失败:', error)
|
||||
throw error
|
||||
}
|
||||
}
|
||||
|
||||
// 使用默认上传方式
|
||||
async function uploadWithDefault(filePath: string) {
|
||||
try {
|
||||
// 获取上传和下载URL
|
||||
const result = await uploadHook.getUploadAndDownloadUrl(filePath, {
|
||||
provider: UploadProviderEnum.DEFAULT,
|
||||
scene: UploadSceneEnum.CHAT
|
||||
})
|
||||
|
||||
// 执行上传
|
||||
await uploadHook.doUpload(filePath, result.uploadUrl, { downloadUrl: result.downloadUrl })
|
||||
|
||||
console.log('上传成功,下载地址:', result.downloadUrl)
|
||||
return result.downloadUrl
|
||||
} catch (error) {
|
||||
console.error('上传失败:', error)
|
||||
throw error
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 使用分片上传
|
||||
|
||||
对于大文件上传,HuLa 现在支持使用七牛云的分片上传功能,可以提高上传成功率和性能:
|
||||
|
||||
```typescript
|
||||
import { useUpload, UploadProviderEnum } from '@/hooks/useUpload'
|
||||
import { UploadSceneEnum } from '@/enums'
|
||||
|
||||
// 创建上传hook实例
|
||||
const uploadHook = useUpload()
|
||||
|
||||
// 使用七牛云分片上传
|
||||
async function uploadLargeFileToQiniu(filePath: string) {
|
||||
try {
|
||||
// 获取上传和下载URL
|
||||
const result = await uploadHook.getUploadAndDownloadUrl(filePath, {
|
||||
provider: UploadProviderEnum.QINIU,
|
||||
scene: UploadSceneEnum.CHAT
|
||||
})
|
||||
|
||||
// 执行分片上传,指定使用分片上传和分片大小(可选,默认4MB)
|
||||
await uploadHook.doUpload(filePath, result.uploadUrl, {
|
||||
...result,
|
||||
useChunks: true,
|
||||
chunkSize: 4 * 1024 * 1024 // 4MB,可根据需要调整
|
||||
})
|
||||
|
||||
console.log('分片上传成功,下载地址:', result.downloadUrl)
|
||||
return result.downloadUrl
|
||||
} catch (error) {
|
||||
console.error('分片上传失败:', error)
|
||||
throw error
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
分片上传参数说明:
|
||||
|
||||
| 参数名 | 类型 | 说明 |
|
||||
|-------|------|------|
|
||||
| useChunks | boolean | 是否使用分片上传,设置为true启用分片上传 |
|
||||
| chunkSize | number | 分片大小,单位为字节,默认为4MB (4 * 1024 * 1024) |
|
||||
|
||||
当文件大小超过设定的分片大小时,系统会自动将文件分成多个块进行上传,并在上传完成后自动合并。
|
||||
|
||||
### 在消息策略中使用
|
||||
|
||||
HuLa 的消息策略已集成七牛云上传功能,可以通过传递 `provider` 选项来指定使用哪种上传方式:
|
||||
|
||||
```typescript
|
||||
import { messageStrategyMap } from '@/strategy/MessageStrategy'
|
||||
import { MsgEnum } from '@/enums'
|
||||
import { UploadProviderEnum } from '@/hooks/useUpload'
|
||||
|
||||
// 获取图片消息策略
|
||||
const imageStrategy = messageStrategyMap[MsgEnum.IMAGE]
|
||||
|
||||
// 使用七牛云上传
|
||||
async function uploadImageWithQiniu(path: string) {
|
||||
const result = await imageStrategy.uploadFile(path, {
|
||||
provider: UploadProviderEnum.QINIU
|
||||
})
|
||||
|
||||
// 执行上传
|
||||
await imageStrategy.doUpload(path, result.uploadUrl, result)
|
||||
|
||||
return result.downloadUrl
|
||||
}
|
||||
|
||||
// 使用七牛云分片上传大图片
|
||||
async function uploadLargeImageWithQiniu(path: string) {
|
||||
const result = await imageStrategy.uploadFile(path, {
|
||||
provider: UploadProviderEnum.QINIU
|
||||
})
|
||||
|
||||
// 执行分片上传
|
||||
await imageStrategy.doUpload(path, result.uploadUrl, {
|
||||
...result,
|
||||
useChunks: true,
|
||||
chunkSize: 2 * 1024 * 1024 // 2MB分片
|
||||
})
|
||||
|
||||
return result.downloadUrl
|
||||
}
|
||||
```
|
||||
|
||||
## 分片上传原理与优势
|
||||
|
||||
七牛云分片上传功能基于七牛云的分块上传API实现,主要流程如下:
|
||||
|
||||
1. 将大文件分割成固定大小的数据块
|
||||
2. 使用 `/mkblk/<blocksize>` 接口上传第一个数据块
|
||||
3. 使用 `/bput/<ctx>/<offset>` 接口上传后续数据块
|
||||
4. 所有分片上传完成后,使用 `/mkfile/<filesize>/key/<encodedKey>` 接口将所有数据块合并成完整文件
|
||||
|
||||
分片上传的主要优势:
|
||||
|
||||
- **支持断点续传**:上传中断后可以从已上传的部分继续
|
||||
- **提高上传成功率**:大文件分成小块上传,减少单次传输失败的风险
|
||||
- **优化网络利用率**:可以更好地利用网络带宽
|
||||
- **提供上传进度反馈**:可以精确显示每个分片的上传进度
|
||||
|
||||
建议在以下情况使用分片上传:
|
||||
- 上传大于10MB的文件
|
||||
- 网络环境不稳定
|
||||
- 需要显示精确上传进度的场景
|
||||
|
||||
## 配置七牛云
|
||||
|
||||
要使用七牛云上传功能,需要在后端配置七牛云的相关参数:
|
||||
|
||||
1. 在七牛云控制台创建存储空间(Bucket)
|
||||
2. 获取 AccessKey 和 SecretKey
|
||||
3. 配置后端服务,实现获取上传 Token 的接口
|
||||
|
||||
后端需要提供以下接口:
|
||||
|
||||
```
|
||||
GET /api/qiniu/token
|
||||
```
|
||||
|
||||
返回格式:
|
||||
|
||||
```json
|
||||
{
|
||||
"token": "七牛云上传Token",
|
||||
"domain": "七牛云存储域名",
|
||||
"storagePrefix": "存储前缀"
|
||||
}
|
||||
```
|
||||
|
||||
## 测试方法
|
||||
|
||||
1. 在七牛云控制台创建存储空间(Bucket)
|
||||
2. 获取 AccessKey 和 SecretKey
|
||||
3. 配置后端服务,实现获取上传 Token 的接口
|
||||
4. 使用 HuLa 提供的上传接口进行测试
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. 七牛云上传需要有效的 Token,Token 有时效性,过期后需要重新获取
|
||||
2. 上传大文件时,请确保网络稳定
|
||||
3. 在生产环境中,建议配置 HTTPS 域名,确保数据传输安全
|
||||
4. 七牛云存储有容量和流量限制,请根据实际需求选择合适的套餐
|
||||
5. 分片上传时,建议根据网络环境和文件大小调整分片大小,一般推荐1MB-4MB
|
||||
6. 对于特别大的文件(如视频),强烈建议使用分片上传功能
|
||||
124
index.html
vendored
@@ -2,16 +2,130 @@
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Tauri + Vue + TS</title>
|
||||
<title>HuLa</title>
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover" />
|
||||
|
||||
<!--引入iconpark图标库-->
|
||||
<script defer src="https://lf1-cdn-tos.bytegoofy.com/obj/iconpark/svg_30895_65.b5d5f1a1bd93fac2f65940a74ac82f80.js"></script>
|
||||
<!-- 🎯 预加载图片资源(仅移动端) -->
|
||||
<script>
|
||||
if (/Mobi|Android|iPhone/i.test(navigator.userAgent)) {
|
||||
const preloadImages = ['/Mobile/1.png', '/Mobile/2.png', '/Mobile/3.png', '/Mobile/4.png']
|
||||
preloadImages.forEach(src => {
|
||||
const link = document.createElement('link')
|
||||
link.rel = 'preload'
|
||||
link.as = 'image'
|
||||
link.href = src
|
||||
document.head.appendChild(link)
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- iconpark图标库 -->
|
||||
<script async src="/icon.js"></script>
|
||||
|
||||
<!-- 🧩 加载页样式 -->
|
||||
<style id="loading-css">
|
||||
#loading-page {
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
z-index: 9999;
|
||||
background-image: url('/Mobile/2.png');
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding-top: env(safe-area-inset-top);
|
||||
padding-bottom: env(safe-area-inset-bottom);
|
||||
transition: opacity 0.4s ease-out;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.bottom-bar {
|
||||
position: absolute;
|
||||
bottom: 40px;
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.rounded-14px {
|
||||
border-radius: 14px;
|
||||
}
|
||||
|
||||
.size-50px {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
}
|
||||
|
||||
.w-300px {
|
||||
width: 300px;
|
||||
}
|
||||
|
||||
.h-200px {
|
||||
height: 200px;
|
||||
}
|
||||
|
||||
.w-78px {
|
||||
width: 78px;
|
||||
}
|
||||
|
||||
.h-40px {
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
.mb-140px {
|
||||
margin-bottom: 140px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- 🚀 加载页 DOM -->
|
||||
<div id="loading-page">
|
||||
<img src="/Mobile/4.png" alt="hula" class="w-300px h-200px mb-140px" />
|
||||
<div class="bottom-bar">
|
||||
<img src="/Mobile/3.png" alt="hula" class="size-50px rounded-14px" />
|
||||
<img src="/Mobile/1.png" alt="hula" class="w-78px h-40px" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Vue 应用挂载点 -->
|
||||
<div id="app"></div>
|
||||
|
||||
<!-- 🎯 加载页逻辑控制(淡出 + 清理) -->
|
||||
<script>
|
||||
function isMobileDevice() {
|
||||
return /Mobi|Android|iPhone/i.test(navigator.userAgent)
|
||||
}
|
||||
|
||||
if (!isMobileDevice()) {
|
||||
document.getElementById('loading-page')?.remove()
|
||||
document.getElementById('loading-css')?.remove()
|
||||
}
|
||||
|
||||
window.addEventListener('DOMContentLoaded', () => {
|
||||
const interval = setInterval(() => {
|
||||
const isMounted = document.getElementById('app')?.children.length > 0
|
||||
if (isMounted) {
|
||||
const loader = document.getElementById('loading-page')
|
||||
if (loader) {
|
||||
loader.style.opacity = '0'
|
||||
setTimeout(() => {
|
||||
loader.remove()
|
||||
document.getElementById('loading-css')?.remove()
|
||||
}, 450) // 等待 transition 完成后再移除
|
||||
}
|
||||
clearInterval(interval)
|
||||
}
|
||||
}, 100)
|
||||
})
|
||||
</script>
|
||||
|
||||
<!-- 🚀 Vue 应用入口 -->
|
||||
<script type="module" src="/src/main.ts"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
219
package.json
vendored
@@ -1,93 +1,170 @@
|
||||
{
|
||||
"name": "hula-im-tauri",
|
||||
"private": true,
|
||||
"version": "v1.3.0-beta",
|
||||
"packageManager": "pnpm@8.15.4",
|
||||
"engines": {
|
||||
"node": ">=18.12.0",
|
||||
"pnpm": ">=8.10.0"
|
||||
},
|
||||
"$schema": "https://json.schemastore.org/jsconfig",
|
||||
"name": "hula",
|
||||
"type": "module",
|
||||
"author": {
|
||||
"name": "nongyehong",
|
||||
"email": "2439646234@qq.com",
|
||||
"url": "https://xxxx/xxx"
|
||||
"version": "2.6.13",
|
||||
"license": "Apache-2.0",
|
||||
"engines": {
|
||||
"node": "^20.19.0 || >=22.12.0",
|
||||
"pnpm": ">=10.x"
|
||||
},
|
||||
"lint-staged": {
|
||||
"*.{js,jsx,vue,ts,tsx}": [
|
||||
"oxlint src",
|
||||
"prettier --config .prettierrc --write",
|
||||
"eslint src"
|
||||
]
|
||||
"repository": {
|
||||
"url": "https://github.com/HuLaSpark/HuLa.git"
|
||||
},
|
||||
"author": {
|
||||
"name": "HuLaSpark团队",
|
||||
"email": "2439646234@qq.com",
|
||||
"url": "https://github.com/HuLaSpark"
|
||||
},
|
||||
"scripts": {
|
||||
"========= 启动vue(tauri项目会连带执行不需要单独执行) =========": "",
|
||||
"dev": "vite",
|
||||
"========= 打包vue(tauri项目会连带执行不需要单独执行) =========": "",
|
||||
"build": "vue-tsc --noEmit && vite build",
|
||||
"preview": "vite preview",
|
||||
"========= 启动HuLa桌面应用程序 =========": "",
|
||||
"tauri:dev": "tauri dev",
|
||||
"tauri:build": "tauri build",
|
||||
"tauri:icon": "tauri icon logo.png",
|
||||
"preinstall": "npx only-allow pnpm",
|
||||
"commit": "git add . && lint-staged && git-cz && conventional-changelog -p cz-config.cjs -i CHANGELOG.md -s -r 0",
|
||||
"changelog": "conventional-changelog -p cz-config.cjs -i CHANGELOG.md -s -r 0",
|
||||
"lint:staged": "lint-staged"
|
||||
"td": "tauri dev",
|
||||
"========= 打包桌面应用程序 =========": "",
|
||||
"tauri:build": "node scripts/interactive-build-inquirer.js",
|
||||
"========= 启动HuLa ios 程序 =========": "",
|
||||
"tauri:ios:dev": "tauri ios dev",
|
||||
"========= 启动HuLa android 程序 =========": "",
|
||||
"tauri:android:dev": "tauri android dev",
|
||||
"========= 启动安卓程序 =========": "",
|
||||
"adev": "tauri android dev",
|
||||
"========= 初始化 ios =========": "",
|
||||
"tauri:ios:init": "tauri ios init",
|
||||
"========= 初始化 android =========": "",
|
||||
"tauri:android:init": "tauri android init",
|
||||
"========= 生成icon =========": "",
|
||||
"tauri:icon": "tauri icon public/light.png",
|
||||
"========= 安装依赖前执行 =========": "",
|
||||
"preinstall": "npx only-allow pnpm && node scripts/check-all.js",
|
||||
"========= 使用commit来进行代码提交 =========": "",
|
||||
"commit": "git add . && git-cz",
|
||||
"========= 只检查代码问题和格式(不修复) =========": "",
|
||||
"check": "biome check",
|
||||
"========= 修复代码问题和格式并且检查 =========": "",
|
||||
"check:write": "biome check --write --unsafe",
|
||||
"========= 格式化Vue文件模板 =========": "",
|
||||
"format:vue": "npx prettier --write \"src/**/*.vue\"",
|
||||
"========= 完整格式化(JS+Vue) =========": "",
|
||||
"format:all": "pnpm check:write && pnpm format:vue",
|
||||
"========= Git提交前的代码检查(简化命令) =========": "",
|
||||
"lint:s": "lint-staged && vue-tsc --noEmit",
|
||||
"========= Git提交前的代码检查 =========": "",
|
||||
"lint:staged": "lint-staged && vue-tsc --noEmit",
|
||||
"========= 安装husky =========": "",
|
||||
"prepare": "husky",
|
||||
"========= 发版 =========": "",
|
||||
"release": "release-it",
|
||||
"========= commit后再次添加修改到上一次的commit =========": "",
|
||||
"addition-commit": "git add . && git commit --amend --no-edit",
|
||||
"========= 单元测试 =========": "",
|
||||
"test:run": "vitest run",
|
||||
"========= 使用 vitest UI =========": "",
|
||||
"test:ui": "vitest --ui --coverage.enabled=true",
|
||||
"========= 测试覆盖率 =========": "",
|
||||
"coverage": "vitest run --coverage",
|
||||
"========= 单独提交 =========": "",
|
||||
"gitcz": "git-cz"
|
||||
},
|
||||
"dependencies": {
|
||||
"@tauri-apps/api": "^1.5.3",
|
||||
"axios": "^1.6.7",
|
||||
"dayjs": "^1.11.10",
|
||||
"@actions/github": "^6.0.1",
|
||||
"@breezystack/lamejs": "^1.2.7",
|
||||
"@fingerprintjs/fingerprintjs": "^4.6.2",
|
||||
"@tanstack/vue-virtual": "^3.13.12",
|
||||
"@tauri-apps/api": "2.7.0",
|
||||
"@tauri-apps/plugin-autostart": "2.5.0",
|
||||
"@tauri-apps/plugin-barcode-scanner": "^2.4.0",
|
||||
"@tauri-apps/plugin-clipboard-manager": "2.3.0",
|
||||
"@tauri-apps/plugin-dialog": "^2.3.2",
|
||||
"@tauri-apps/plugin-fs": "^2.4.1",
|
||||
"@tauri-apps/plugin-global-shortcut": "^2.3.0",
|
||||
"@tauri-apps/plugin-http": "2.5.1",
|
||||
"@tauri-apps/plugin-log": "^2.6.0",
|
||||
"@tauri-apps/plugin-notification": "^2.3.0",
|
||||
"@tauri-apps/plugin-opener": "^2.4.0",
|
||||
"@tauri-apps/plugin-os": "2.3.0",
|
||||
"@tauri-apps/plugin-process": "2.3.0",
|
||||
"@tauri-apps/plugin-shell": "^2.3.0",
|
||||
"@tauri-apps/plugin-sql": "^2.3.0",
|
||||
"@tauri-apps/plugin-updater": "2.9.0",
|
||||
"@vue-office/docx": "^1.6.3",
|
||||
"@vue-office/excel": "^1.7.14",
|
||||
"@vue-office/pdf": "^2.0.10",
|
||||
"@vue-office/pptx": "^1.0.1",
|
||||
"colorthief": "^2.6.0",
|
||||
"crypto-js": "^4.2.0",
|
||||
"dayjs": "^1.11.11",
|
||||
"digest-wasm": "^0.1.4",
|
||||
"dompurify": "^3.2.6",
|
||||
"file-type": "^21.0.0",
|
||||
"grapheme-splitter": "^1.0.4",
|
||||
"hula-emojis": "^1.2.26",
|
||||
"lodash-es": "^4.17.21",
|
||||
"mitt": "^3.0.1",
|
||||
"naive-ui": "^2.38.1",
|
||||
"pinia": "^2.1.7",
|
||||
"pinia-plugin-persistedstate": "^3.2.1",
|
||||
"vue": "^3.4.21",
|
||||
"vue-draggable-plus": "^0.3.5",
|
||||
"vue-router": "^4.3.0"
|
||||
"naive-ui": "^2.42.0",
|
||||
"pinia": "^3.0.3",
|
||||
"pinia-plugin-persistedstate": "^4.5.0",
|
||||
"pinia-shared-state": "^1.0.1",
|
||||
"seemly": "^0.3.10",
|
||||
"tauri-plugin-mic-recorder-api": "^2.0.0",
|
||||
"tauri-plugin-safe-area-insets": "^0.1.0",
|
||||
"vue": "^3.5.18",
|
||||
"vue-cropper": "1.1.4",
|
||||
"vue-demi": "0.14.6",
|
||||
"vue-router": "^4.5.1",
|
||||
"vue-virtual-scroller": "2.0.0-beta.8"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/eslint-parser": "^7.23.3",
|
||||
"@biomejs/biome": "^2.2.0",
|
||||
"@commitlint/cli": "^19.8.1",
|
||||
"@commitlint/config-conventional": "^19.8.1",
|
||||
"@iconify/vue": "^5.0.0",
|
||||
"@inquirer/prompts": "^7.8.3",
|
||||
"@release-it/bumper": "^6.0.1",
|
||||
"@release-it/conventional-changelog": "8.0.2",
|
||||
"@rollup/plugin-terser": "^0.4.4",
|
||||
"@tauri-apps/cli": "^1.5.11",
|
||||
"@tauri-apps/cli": "2.7.1",
|
||||
"@types/crypto-js": "^4.2.2",
|
||||
"@types/lodash-es": "^4.17.12",
|
||||
"@types/node": "^20.10.4",
|
||||
"@typescript-eslint/eslint-plugin": "7.1.0",
|
||||
"@typescript-eslint/parser": "^7.1.0",
|
||||
"@unocss/preset-uno": "^0.58.5",
|
||||
"@unocss/reset": "^0.58.5",
|
||||
"@unocss/transformer-directives": "^0.58.5",
|
||||
"@unocss/vite": "^0.58.5",
|
||||
"@vitejs/plugin-vue": "^5.0.4",
|
||||
"@vitejs/plugin-vue-jsx": "^3.1.0",
|
||||
"@vueuse/core": "^10.8.0",
|
||||
"commitizen": "^4.3.0",
|
||||
"conventional-changelog": "^5.1.0",
|
||||
"conventional-changelog-cli": "^4.1.0",
|
||||
"cz-conventional-changelog": "^3.3.0",
|
||||
"cz-customizable": "^7.0.0",
|
||||
"eslint": "^8.56.0",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-plugin-import": "^2.29.1",
|
||||
"eslint-plugin-prettier": "^5.0.1",
|
||||
"eslint-plugin-vue": "^9.19.2",
|
||||
"lint-staged": "^15.2.0",
|
||||
"only-allow": "^1.2.1",
|
||||
"oxlint": "^0.2.4",
|
||||
"prettier": "^3.2.5",
|
||||
"sass": "^1.71.1",
|
||||
"sass-loader": "^14.1.1",
|
||||
"typescript": "^5.4.2",
|
||||
"unplugin-auto-import": "^0.17.2",
|
||||
"unplugin-vue-components": "^0.26.0",
|
||||
"vite": "5.1.4",
|
||||
"vue-tsc": "^2.0.6"
|
||||
"@types/node": "^24.3.0",
|
||||
"@unocss/preset-wind3": "^66.4.2",
|
||||
"@unocss/reset": "^66.4.2",
|
||||
"@unocss/transformer-directives": "^66.4.2",
|
||||
"@unocss/transformer-variant-group": "^66.4.2",
|
||||
"@unocss/vite": "^66.4.2",
|
||||
"@vitejs/plugin-vue": "^6.0.1",
|
||||
"@vitejs/plugin-vue-jsx": "^5.0.1",
|
||||
"@vitest/coverage-v8": "^3.2.4",
|
||||
"@vitest/ui": "^3.2.4",
|
||||
"@vue/test-utils": "^2.4.6",
|
||||
"@vueuse/core": "^13.7.0",
|
||||
"chalk": "^5.6.0",
|
||||
"commitizen": "^4.3.1",
|
||||
"cz-git": "^1.12.0",
|
||||
"happy-dom": "^15.11.7",
|
||||
"husky": "^9.1.7",
|
||||
"lint-staged": "^15.2.7",
|
||||
"postcss-pxtorem": "^6.1.0",
|
||||
"prettier": "^3.6.2",
|
||||
"release-it": "^17.11.0",
|
||||
"sass": "1.90.0",
|
||||
"typescript": "^5.9.2",
|
||||
"unplugin-auto-import": "^20.0.0",
|
||||
"unplugin-vue-components": "^29.0.0",
|
||||
"vite": "7.1.2",
|
||||
"vite-plugin-vue-setup-extend": "^0.4.0",
|
||||
"vitest": "^3.2.4",
|
||||
"vue-tsc": "^3.0.5"
|
||||
},
|
||||
"config": {
|
||||
"commitizen": {
|
||||
"path": "./node_modules/cz-customizable"
|
||||
},
|
||||
"cz-customizable": {
|
||||
"config": "config/cz-config.cjs"
|
||||
"path": "node_modules/cz-git"
|
||||
}
|
||||
},
|
||||
"pnpm": {
|
||||
"ignoredBuiltDependencies": ["esbuild", "vue-demi", "@parcel/watcher", "sharp"]
|
||||
}
|
||||
}
|
||||
|
||||
12080
pnpm-lock.yaml
generated
vendored
8
pnpm-workspace.yaml
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
packages:
|
||||
- "."
|
||||
|
||||
onlyBuiltDependencies:
|
||||
- '@vue-office/docx'
|
||||
- '@vue-office/excel'
|
||||
- '@vue-office/pdf'
|
||||
- '@vue-office/pptx'
|
||||
BIN
preview/img.png
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
preview/img_1.png
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
BIN
preview/img_10.png
Normal file
|
After Width: | Height: | Size: 181 KiB |
BIN
preview/img_2.png
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
BIN
preview/img_3.png
Normal file
|
After Width: | Height: | Size: 840 KiB |
BIN
preview/img_4.png
Normal file
|
After Width: | Height: | Size: 490 KiB |
BIN
preview/img_5.png
Normal file
|
After Width: | Height: | Size: 633 KiB |
BIN
preview/img_6.png
Normal file
|
After Width: | Height: | Size: 492 KiB |
BIN
preview/img_7.png
Normal file
|
After Width: | Height: | Size: 358 KiB |
BIN
preview/img_8.png
Normal file
|
After Width: | Height: | Size: 477 KiB |
BIN
preview/img_9.png
Normal file
|
After Width: | Height: | Size: 289 KiB |
BIN
preview/wx.png
Normal file
|
After Width: | Height: | Size: 213 KiB |
BIN
preview/zfb.png
Normal file
|
After Width: | Height: | Size: 170 KiB |
BIN
preview/zs.jpg
Normal file
|
After Width: | Height: | Size: 90 KiB |
BIN
public/AI/QW.png
Normal file
|
After Width: | Height: | Size: 134 KiB |
BIN
public/AI/deepseek.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
1
public/AI/openai.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg fill="currentColor" fill-rule="evenodd" height="14" viewBox="0 0 24 24" width="14" xmlns="http://www.w3.org/2000/svg" color="rgb(171, 104, 255)" style="flex: 0 0 auto; line-height: 1;"><title>OpenAI</title><path d="M21.55 10.004a5.416 5.416 0 00-.478-4.501c-1.217-2.09-3.662-3.166-6.05-2.66A5.59 5.59 0 0010.831 1C8.39.995 6.224 2.546 5.473 4.838A5.553 5.553 0 001.76 7.496a5.487 5.487 0 00.691 6.5 5.416 5.416 0 00.477 4.502c1.217 2.09 3.662 3.165 6.05 2.66A5.586 5.586 0 0013.168 23c2.443.006 4.61-1.546 5.361-3.84a5.553 5.553 0 003.715-2.66 5.488 5.488 0 00-.693-6.497v.001zm-8.381 11.558a4.199 4.199 0 01-2.675-.954c.034-.018.093-.05.132-.074l4.44-2.53a.71.71 0 00.364-.623v-6.176l1.877 1.069c.02.01.033.029.036.05v5.115c-.003 2.274-1.87 4.118-4.174 4.123zM4.192 17.78a4.059 4.059 0 01-.498-2.763c.032.02.09.055.131.078l4.44 2.53c.225.13.504.13.73 0l5.42-3.088v2.138a.068.068 0 01-.027.057L9.9 19.288c-1.999 1.136-4.552.46-5.707-1.51h-.001zM3.023 8.216A4.15 4.15 0 015.198 6.41l-.002.151v5.06a.711.711 0 00.364.624l5.42 3.087-1.876 1.07a.067.067 0 01-.063.005l-4.489-2.559c-1.995-1.14-2.679-3.658-1.53-5.63h.001zm15.417 3.54l-5.42-3.088L14.896 7.6a.067.067 0 01.063-.006l4.489 2.557c1.998 1.14 2.683 3.662 1.529 5.633a4.163 4.163 0 01-2.174 1.807V12.38a.71.71 0 00-.363-.623zm1.867-2.773a6.04 6.04 0 00-.132-.078l-4.44-2.53a.731.731 0 00-.729 0l-5.42 3.088V7.325a.068.068 0 01.027-.057L14.1 4.713c2-1.137 4.555-.46 5.707 1.513.487.833.664 1.809.499 2.757h.001zm-11.741 3.81l-1.877-1.068a.065.065 0 01-.036-.051V6.559c.001-2.277 1.873-4.122 4.181-4.12.976 0 1.92.338 2.671.954-.034.018-.092.05-.131.073l-4.44 2.53a.71.71 0 00-.365.623l-.003 6.173v.002zm1.02-2.168L12 9.25l2.414 1.375v2.75L12 14.75l-2.415-1.375v-2.75z"></path></svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
BIN
public/Mobile/1.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
public/Mobile/2.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
public/Mobile/3.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
public/Mobile/4.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
public/avatar/001.webp
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
public/avatar/002.webp
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
public/avatar/003.webp
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
public/avatar/004.webp
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
public/avatar/005.webp
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
public/avatar/006.webp
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
public/avatar/007.webp
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
public/avatar/008.webp
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
public/avatar/009.webp
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
public/avatar/010.webp
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
public/avatar/011.webp
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
public/avatar/012.webp
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
public/avatar/013.webp
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
public/avatar/014.webp
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
public/avatar/015.webp
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
public/avatar/016.webp
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
public/avatar/017.webp
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
public/avatar/018.webp
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
public/avatar/019.webp
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
public/avatar/020.webp
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
public/avatar/021.webp
Normal file
|
After Width: | Height: | Size: 11 KiB |