Compare commits
348 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
322ec55546 | ||
|
|
34169bb1ff | ||
|
|
0f4aef0e32 | ||
|
|
cf5bfca265 | ||
|
|
affac3abc6 | ||
|
|
9826c5604d | ||
|
|
ea7a8ffc22 | ||
|
|
4cb8caaa1d | ||
|
|
53cb7f6675 | ||
|
|
123ab7f6a7 | ||
|
|
caf054aea2 | ||
|
|
125596498e | ||
|
|
38f2eb4cb2 | ||
|
|
7d437d5c3a | ||
|
|
3d794099a5 | ||
|
|
b7ceebcb67 | ||
|
|
25e0d05142 | ||
|
|
250a494903 | ||
|
|
b47ef16001 | ||
|
|
71f597baa7 | ||
|
|
abf117ac92 | ||
|
|
f3a3f222bd | ||
|
|
f9a2a1c85c | ||
|
|
7d469e7bad | ||
|
|
137a52ccd4 | ||
|
|
9a1769595d | ||
|
|
9b930493d7 | ||
|
|
bfe5dc77a0 | ||
|
|
3ac2c5d791 | ||
|
|
f1226e5638 | ||
|
|
ee91085b07 | ||
|
|
e287baf046 | ||
|
|
8788f76e5c | ||
|
|
6eff6c902c | ||
|
|
d9623e992d | ||
|
|
958e6f1568 | ||
|
|
f3931c6b08 | ||
|
|
3dd087e361 | ||
|
|
ac838f99a9 | ||
|
|
c9bd02b750 | ||
|
|
cfbfb2b3ad | ||
|
|
bccd1a43c4 | ||
|
|
70ed750652 | ||
|
|
c76418d26f | ||
|
|
c062b3d786 | ||
|
|
a9d551df5e | ||
|
|
dc617ed151 | ||
|
|
9f31120cd5 | ||
|
|
e9c922ff39 | ||
|
|
2ab098962d | ||
|
|
863972cf86 | ||
|
|
fd170106b4 | ||
|
|
af83820b85 | ||
|
|
a6be658164 | ||
|
|
0c59886657 | ||
|
|
a78aa001fa | ||
|
|
1e94621ce6 | ||
|
|
e477ecafcc | ||
|
|
da20cbb127 | ||
|
|
fb5cd59d6b | ||
|
|
d3d090e277 | ||
|
|
3a5e19b02c | ||
|
|
83e8374c33 | ||
|
|
82ef5f0c52 | ||
|
|
7aae480722 | ||
|
|
750d96ec13 | ||
|
|
35cba0ab27 | ||
|
|
b23f8ad633 | ||
|
|
85d9aff094 | ||
|
|
a8827b5c9e | ||
|
|
d76713dcd6 | ||
|
|
e3b771bed1 | ||
|
|
136cda5215 | ||
|
|
579531c30a | ||
|
|
dcb59667c1 | ||
|
|
4b411107f7 | ||
|
|
c0810574ce | ||
|
|
3c9d705f80 | ||
|
|
6f9e0e87ce | ||
|
|
c4945351ca | ||
|
|
a1b736ae0c | ||
|
|
2adfe59bd5 | ||
|
|
113b294346 | ||
|
|
19133df94b | ||
|
|
731e3c93c8 | ||
|
|
a160f0941f | ||
|
|
65d1478b00 | ||
|
|
b851b87515 | ||
|
|
96b2b1b5b0 | ||
|
|
3d0c5209cb | ||
|
|
57bbb80a01 | ||
|
|
3593eb329b | ||
|
|
f8dca60331 | ||
|
|
864082fd40 | ||
|
|
b963ddf401 | ||
|
|
83d3ec42e3 | ||
|
|
8ba4fb3b8d | ||
|
|
383c728481 | ||
|
|
ea01a21189 | ||
|
|
b812c7b4a1 | ||
|
|
96b2067577 | ||
|
|
1d4207ae51 | ||
|
|
9960124d32 | ||
|
|
aed7e8526f | ||
|
|
b67c916ac6 | ||
|
|
77b12bc969 | ||
|
|
11ae4a2644 | ||
|
|
21b8409d31 | ||
|
|
cf3d9bbc17 | ||
|
|
bbb8dbc3b3 | ||
|
|
b02fe81df6 | ||
|
|
52fd7fca0c | ||
|
|
64d66c9f74 | ||
|
|
8092ea29ef | ||
|
|
1cdc551318 | ||
|
|
758756fcf2 | ||
|
|
1b143bc3a1 | ||
|
|
5a64b4348e | ||
|
|
850d77b08b | ||
|
|
bb553c5c03 | ||
|
|
350afbf65a | ||
|
|
e3b4fd5b49 | ||
|
|
0e1d6ad49d | ||
|
|
f1dcd0c36d | ||
|
|
450be7290b | ||
|
|
136b92b8a7 | ||
|
|
008a849e74 | ||
|
|
7e52f64984 | ||
|
|
2f60cb896a | ||
|
|
b5bb300046 | ||
|
|
a501132448 | ||
|
|
9e37b6bdad | ||
|
|
735e5e763a | ||
|
|
9f9c0fdfb7 | ||
|
|
ad22820d66 | ||
|
|
b55f625d2e | ||
|
|
a4c52c5eea | ||
|
|
2ababbd1b3 | ||
|
|
2367050a66 | ||
|
|
22bf728a3d | ||
|
|
dab455600d | ||
|
|
a101a70d14 | ||
|
|
c3be1c5ab7 | ||
|
|
c91ba2ce81 | ||
|
|
df65f53a4b | ||
|
|
d91cb05f66 | ||
|
|
d48d3d3ede | ||
|
|
18ef4cf1d4 | ||
|
|
e05b17ae5e | ||
|
|
16aa0a0dd1 | ||
|
|
925f163e15 | ||
|
|
7ad952fbde | ||
|
|
c71222aa7f | ||
|
|
9f0615609d | ||
|
|
141ae8f3f6 | ||
|
|
2e90ba36a9 | ||
|
|
ff08010eca | ||
|
|
904a07a2c6 | ||
|
|
2f3e2e0819 | ||
|
|
80678a75bb | ||
|
|
fb3e8e5325 | ||
|
|
d4d9816c94 | ||
|
|
433978e1db | ||
|
|
9c6016edc9 | ||
|
|
8b5745044e | ||
|
|
d16ab20a50 | ||
|
|
aff6e2ca18 | ||
|
|
d8506ee283 | ||
|
|
910bb432f2 | ||
|
|
95a645c06c | ||
|
|
6ad93549b1 | ||
|
|
a643c09667 | ||
|
|
9fd5bb6beb | ||
|
|
e0fd501ba5 | ||
|
|
c4dd509e32 | ||
|
|
ef9bbaf265 | ||
|
|
5d52440a43 | ||
|
|
19475ac193 | ||
|
|
16b1b991a4 | ||
|
|
446e2308d9 | ||
|
|
9cb3fabdf1 | ||
|
|
11015f3e36 | ||
|
|
9f3c3f779d | ||
|
|
8fe81d11ab | ||
|
|
a0eaca084a | ||
|
|
f136f532dd | ||
|
|
89241c7093 | ||
|
|
7c93dbb3f4 | ||
|
|
4744f4d997 | ||
|
|
aa2abe2dc5 | ||
|
|
b3caf34074 | ||
|
|
8b559e00b0 | ||
|
|
43dae97359 | ||
|
|
c338fe7f03 | ||
|
|
da0c44c8b1 | ||
|
|
de9281ce4c | ||
|
|
5b27a6144e | ||
|
|
44d45da24e | ||
|
|
bab68f4c86 | ||
|
|
1e09fbe9e6 | ||
|
|
0148dabd91 | ||
|
|
1174138daa | ||
|
|
4c19e3cd6a | ||
|
|
17e51fa3e7 | ||
|
|
e35433af31 | ||
|
|
efd20249a9 | ||
|
|
c2ac10bdf2 | ||
|
|
dc94c036d1 | ||
|
|
038a1082d0 | ||
|
|
d735f37200 | ||
|
|
1842e286ba | ||
|
|
713dfce550 | ||
|
|
ba3af42b0f | ||
|
|
9ea645def6 | ||
|
|
6664039bf4 | ||
|
|
ff18dfd8d4 | ||
|
|
9db434a83b | ||
|
|
174fa96951 | ||
|
|
0ba17f7733 | ||
|
|
676010e3ac | ||
|
|
b3a75aa5e8 | ||
|
|
b38b6e6ec3 | ||
|
|
73fbb1076e | ||
|
|
73c09cc2f5 | ||
|
|
eddf40cd00 | ||
|
|
891456f43b | ||
|
|
f0c9e2b0bc | ||
|
|
a0d7155ee8 | ||
|
|
edb35ec0d4 | ||
|
|
d12ed6ab6a | ||
|
|
8061aba1ae | ||
|
|
3fe23df542 | ||
|
|
47a205aa08 | ||
|
|
fb31aba7f9 | ||
|
|
fe9ed5e05b | ||
|
|
bb189db3b5 | ||
|
|
eff6291acd | ||
|
|
64db574155 | ||
|
|
c6b2021524 | ||
|
|
d9e7009000 | ||
|
|
e552b6028b | ||
|
|
e108cfbac5 | ||
|
|
9b1e5820de | ||
|
|
d12a76bf5c | ||
|
|
ff64d8c690 | ||
|
|
3442b96858 | ||
|
|
071a9b8b1b | ||
|
|
8e9370ba62 | ||
|
|
4e4d05c133 | ||
|
|
12918684fc | ||
|
|
5ea6269bca | ||
|
|
30fc6400e3 | ||
|
|
da8ca707bb | ||
|
|
9855d7b6c0 | ||
|
|
29ac3e2a67 | ||
|
|
6e89796a15 | ||
|
|
8f3a7ab97e | ||
|
|
7c57d40e05 | ||
|
|
d7431b1102 | ||
|
|
d1cdfab885 | ||
|
|
40fc48a21b | ||
|
|
b54a42bc13 | ||
|
|
68ccba486f | ||
|
|
ddc1b2da96 | ||
|
|
22acd28138 | ||
|
|
aa376c7499 | ||
|
|
3ef4714132 | ||
|
|
57bf442155 | ||
|
|
1a4ff43e4e | ||
|
|
ff8e209674 | ||
|
|
3c88b5b4ab | ||
|
|
f2003f895a | ||
|
|
a3dae1a0df | ||
|
|
6b8220739c | ||
|
|
cc81ee7f14 | ||
|
|
53a19d987e | ||
|
|
49e404f14f | ||
|
|
c55ec4f3d8 | ||
|
|
f01ae57a59 | ||
|
|
29eedb4687 | ||
|
|
223f325f6d | ||
|
|
5f8935af8b | ||
|
|
ea5fdd06e9 | ||
|
|
00c9dffeb3 | ||
|
|
3cc431b210 | ||
|
|
dd6c421800 | ||
|
|
b232433583 | ||
|
|
e1628be11b | ||
|
|
3a5a216ba3 | ||
|
|
ff8287ef9d | ||
|
|
128f32c95a | ||
|
|
a9ef0d84c6 | ||
|
|
ef309a0e1b | ||
|
|
ec58cb30b3 | ||
|
|
26cc2585b2 | ||
|
|
8c866cef20 | ||
|
|
f97b145b06 | ||
|
|
f1fc497ae8 | ||
|
|
6b87d04fdc | ||
|
|
4759791edd | ||
|
|
c03926a028 | ||
|
|
6277228f53 | ||
|
|
ac807a8a01 | ||
|
|
5a2a9b780b | ||
|
|
dd30c3a0a3 | ||
|
|
12fab1d6c2 | ||
|
|
49e963f052 | ||
|
|
f2050bdfe3 | ||
|
|
043e463696 | ||
|
|
3806605096 | ||
|
|
313e05c8f5 | ||
|
|
91f556d078 | ||
|
|
b792ea6fb7 | ||
|
|
7c320760cf | ||
|
|
4980ab01be | ||
|
|
6a2c0ee7fa | ||
|
|
45609e25e3 | ||
|
|
449f4329a7 | ||
|
|
c349041217 | ||
|
|
d6aed6c707 | ||
|
|
d37e8e2d9f | ||
|
|
50ac18b5f1 | ||
|
|
7caca2e1a3 | ||
|
|
ba79ccaf2b | ||
|
|
61143670e9 | ||
|
|
e84cf67ccc | ||
|
|
c7f2e6a56a | ||
|
|
1ddcc279dd | ||
|
|
91e1fa03d9 | ||
|
|
f8e676015c | ||
|
|
601d82cf89 | ||
|
|
5b72ff9ca6 | ||
|
|
fa740f8473 | ||
|
|
61b7cde2d5 | ||
|
|
60d32c99d2 | ||
|
|
c7bd62de2e | ||
|
|
403edc16fb | ||
|
|
81a152583a | ||
|
|
4afeea0dba | ||
|
|
26523e58ed | ||
|
|
cd9a3d295e | ||
|
|
4c60df5523 | ||
|
|
13c08ddf57 | ||
|
|
7bbf86dcb3 | ||
|
|
877df30124 | ||
|
|
7e188dc147 | ||
|
|
1754aecbfd | ||
|
|
f9d99db9bf |
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"files": [
|
||||
"README.md"
|
||||
"CONTRIBUTORS.md"
|
||||
],
|
||||
"imageSize": 100,
|
||||
"commit": false,
|
||||
@@ -26,6 +26,33 @@
|
||||
"translation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "Qstick",
|
||||
"name": "Qstick",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/376117?v=4",
|
||||
"profile": "https://github.com/Qstick",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "AliMickey",
|
||||
"name": "Micky",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/60691199?v=4",
|
||||
"profile": "https://github.com/AliMickey",
|
||||
"contributions": [
|
||||
"doc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "xrths",
|
||||
"name": "xrths",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/40337934?v=4",
|
||||
"profile": "http://www.xrths.fr",
|
||||
"contributions": [
|
||||
"doc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "Phaugt",
|
||||
"name": "Patrik Hauguth",
|
||||
@@ -71,15 +98,6 @@
|
||||
"translation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "AliMickey",
|
||||
"name": "Micky",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/60691199?v=4",
|
||||
"profile": "https://github.com/AliMickey",
|
||||
"contributions": [
|
||||
"doc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "ersen0",
|
||||
"name": "Oğuz Ersen",
|
||||
@@ -152,15 +170,6 @@
|
||||
"translation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "Qstick",
|
||||
"name": "Qstick",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/376117?v=4",
|
||||
"profile": "https://github.com/Qstick",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "mfrelink",
|
||||
"name": "Mark Frelink",
|
||||
@@ -197,15 +206,6 @@
|
||||
"translation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "xrths",
|
||||
"name": "xrths",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/40337934?v=4",
|
||||
"profile": "http://www.xrths.fr",
|
||||
"contributions": [
|
||||
"doc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "Lisapple",
|
||||
"name": "Maxime Leroy",
|
||||
@@ -223,12 +223,184 @@
|
||||
"contributions": [
|
||||
"translation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "gmcinalli",
|
||||
"name": "Gian Marco Cinalli",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/9024983?v=4",
|
||||
"profile": "https://github.com/gmcinalli",
|
||||
"contributions": [
|
||||
"translation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "issaccv",
|
||||
"name": "八月的蠢",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/17275050?v=4",
|
||||
"profile": "https://www.issacc.top/",
|
||||
"contributions": [
|
||||
"translation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "neoestremi",
|
||||
"name": "neoestremi",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/1340877?v=4",
|
||||
"profile": "https://github.com/neoestremi",
|
||||
"contributions": [
|
||||
"translation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "marcosvdiasofc",
|
||||
"name": "marcosvdiasofc",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/96720080?v=4",
|
||||
"profile": "https://github.com/marcosvdiasofc",
|
||||
"contributions": [
|
||||
"translation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "fscorrupt",
|
||||
"name": "FSCorrupt",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/45659314?v=4",
|
||||
"profile": "https://liberapay.com/FSCorrupt/donate",
|
||||
"contributions": [
|
||||
"translation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "iHunterX",
|
||||
"name": "iHunterX",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/16854718?v=4",
|
||||
"profile": "https://github.com/iHunterX",
|
||||
"contributions": [
|
||||
"translation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "Brokeos",
|
||||
"name": "Brokeos",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/8388746?v=4",
|
||||
"profile": "https://github.com/Brokeos",
|
||||
"contributions": [
|
||||
"translation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "punchy98",
|
||||
"name": "Michael Maldonado",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/12002902?v=4",
|
||||
"profile": "https://github.com/punchy98",
|
||||
"contributions": [
|
||||
"translation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "natiz",
|
||||
"name": "natiz",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/3515888?v=4",
|
||||
"profile": "https://github.com/natiz",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "KevoM",
|
||||
"name": "KevoM",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/8274366?v=4",
|
||||
"profile": "https://github.com/KevoM",
|
||||
"contributions": [
|
||||
"translation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "rogeriomendes",
|
||||
"name": "rogeriomendes",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/1494503?v=4",
|
||||
"profile": "https://github.com/rogeriomendes",
|
||||
"contributions": [
|
||||
"translation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "Irishsmurf",
|
||||
"name": "David K",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/587220?v=4",
|
||||
"profile": "http://www.paddez.com/",
|
||||
"contributions": [
|
||||
"design"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "Slam4uk",
|
||||
"name": "Slam4uk",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/78175288?v=4",
|
||||
"profile": "https://github.com/Slam4uk",
|
||||
"contributions": [
|
||||
"translation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "timrettop",
|
||||
"name": "Tim Potter",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/434913?v=4",
|
||||
"profile": "https://github.com/timrettop",
|
||||
"contributions": [
|
||||
"translation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "carlesmu",
|
||||
"name": "Carles Muñoz Gorriz",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/1310090?v=4",
|
||||
"profile": "https://github.com/carlesmu",
|
||||
"contributions": [
|
||||
"translation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "osjurso",
|
||||
"name": "Olav Markus Sjursø",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/17827103?v=4",
|
||||
"profile": "https://github.com/osjurso",
|
||||
"contributions": [
|
||||
"translation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "fyu0h",
|
||||
"name": "fyu0h",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/33602841?v=4",
|
||||
"profile": "https://github.com/fyu0h",
|
||||
"contributions": [
|
||||
"translation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "johnflorin",
|
||||
"name": "Florin",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/45756085?v=4",
|
||||
"profile": "https://github.com/johnflorin",
|
||||
"contributions": [
|
||||
"translation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "tuzumbear",
|
||||
"name": "tuzumbear",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/61370405?v=4",
|
||||
"profile": "https://github.com/tuzumbear",
|
||||
"contributions": [
|
||||
"translation"
|
||||
]
|
||||
}
|
||||
],
|
||||
"contributorsPerLine": 7,
|
||||
"contributorsPerLine": 8,
|
||||
"projectName": "LunaSea",
|
||||
"projectOwner": "JagandeepBrar",
|
||||
"repoType": "github",
|
||||
"repoHost": "https://github.com",
|
||||
"skipCi": true
|
||||
"skipCi": true,
|
||||
"commitConvention": "none"
|
||||
}
|
||||
|
||||
@@ -11,7 +11,8 @@
|
||||
"docs",
|
||||
"feat",
|
||||
"fix",
|
||||
"refactor"
|
||||
"refactor",
|
||||
"release"
|
||||
]
|
||||
]
|
||||
}
|
||||
|
||||
4
.czrc
@@ -9,6 +9,10 @@
|
||||
"description": "Documentation only changes",
|
||||
"title": "Documentation"
|
||||
},
|
||||
"release": {
|
||||
"description": "A commit intended for publishing a new release",
|
||||
"title": "Release"
|
||||
},
|
||||
"feat": {
|
||||
"description": "A code change that implements a new feature",
|
||||
"title": "Feature"
|
||||
|
||||
13
.dockerignore
Normal file
@@ -0,0 +1,13 @@
|
||||
.git/
|
||||
.dart_tool/
|
||||
android/
|
||||
build/
|
||||
docs/
|
||||
ios/
|
||||
linux/
|
||||
localization/
|
||||
macos/
|
||||
node_modules/
|
||||
shaders/
|
||||
snap/
|
||||
windows/
|
||||
5
.firebaserc
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"projects": {
|
||||
"default": "comettools-lunasea"
|
||||
}
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
root: ./docs
|
||||
|
||||
structure:
|
||||
readme: README.md
|
||||
summary: SUMMARY.md
|
||||
9
.github/ISSUE_TEMPLATE/config.yml
vendored
@@ -1,14 +1,11 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Support via Discord
|
||||
- name: Feature Requests & Support via Discord
|
||||
url: https://www.lunasea.app/discord
|
||||
about: Chat with the developer and users on support and setup related topics.
|
||||
about: Request new features and get support from the community
|
||||
- name: Support via GitHub Discussions
|
||||
url: https://github.com/JagandeepBrar/LunaSea/discussions
|
||||
about: Ask questions and discuss with other community members
|
||||
- name: Support via Reddit
|
||||
url: https://www.lunasea.app/reddit
|
||||
about: Ask the developer and other redditors for support and setup related topics.
|
||||
- name: Feedback & Feature Requests Board
|
||||
url: https://feedback.lunasea.app
|
||||
about: Request new features and modules to be implemented into LunaSea.
|
||||
about: Ask the developer and other redditors for support and setup related topics
|
||||
|
||||
171
.github/actions/prepare_for_build/action.yml
vendored
Normal file
@@ -0,0 +1,171 @@
|
||||
name: 'Prepare for Build'
|
||||
description: 'Setup all required dependencies and secrets for building the given platform'
|
||||
|
||||
inputs:
|
||||
platform:
|
||||
description: 'Platform to be Built'
|
||||
required: true
|
||||
|
||||
# Config
|
||||
firebase-token:
|
||||
description: 'Firebase Token'
|
||||
required: false
|
||||
default: ''
|
||||
skip-core:
|
||||
description: 'Skip Installing Core Files'
|
||||
required: false
|
||||
default: 'false'
|
||||
|
||||
# Secret Keys
|
||||
android-key-jks:
|
||||
description: 'Android Signing Key'
|
||||
required: false
|
||||
default: ''
|
||||
android-key-properties:
|
||||
description: 'Android Signing Key Properties'
|
||||
required: false
|
||||
default: ''
|
||||
appstore-connect-key:
|
||||
description: 'App Store Connect API Key'
|
||||
required: false
|
||||
default: ''
|
||||
code-signing-certificate:
|
||||
description: 'Code Signing Certificate'
|
||||
required: false
|
||||
default: ''
|
||||
firebase-service-worker:
|
||||
description: 'Firebase Service Worker'
|
||||
required: false
|
||||
default: ''
|
||||
google-play-key:
|
||||
description: 'Google Play Store API Key'
|
||||
required: false
|
||||
default: ''
|
||||
match-ssh-private-key:
|
||||
description: 'Fastlane Match SSH Key'
|
||||
required: false
|
||||
default: ''
|
||||
|
||||
runs:
|
||||
using: composite
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Prepare Core
|
||||
if: ${{ inputs.skip-core == 'false' }}
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: core-files
|
||||
|
||||
- name: Prepare Folders
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir -p output
|
||||
mkdir -p keys
|
||||
|
||||
- name: Install Flutter
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
flutter-version: '3.3.7'
|
||||
channel: stable
|
||||
cache: true
|
||||
cache-key: ${{ github.sha }}
|
||||
|
||||
- name: Install Java
|
||||
if: ${{ inputs.platform == 'android' }}
|
||||
uses: actions/setup-java@v2
|
||||
with:
|
||||
distribution: zulu
|
||||
java-version: 11
|
||||
|
||||
- name: Install Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 16
|
||||
|
||||
- name: Install Ruby
|
||||
if: ${{ inputs.platform == 'android' || inputs.platform == 'ios' || inputs.platform == 'macos' }}
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
bundler-cache: true
|
||||
|
||||
- name: Install XCode
|
||||
if: ${{ inputs.platform == 'ios' || inputs.platform == 'macos' }}
|
||||
uses: maxim-lobanov/setup-xcode@v1
|
||||
with:
|
||||
xcode-version: latest-stable
|
||||
|
||||
- name: Setup Docker
|
||||
if: ${{ inputs.platform == 'web' }}
|
||||
uses: docker/setup-buildx-action@v1
|
||||
|
||||
- name: Setup Match SSH Keys
|
||||
if: ${{ inputs.platform == 'ios' || inputs.platform == 'macos' }}
|
||||
uses: webfactory/ssh-agent@v0.5.4
|
||||
with:
|
||||
ssh-private-key: ${{ inputs.match-ssh-private-key }}
|
||||
|
||||
- name: Setup Secret Keys
|
||||
shell: bash
|
||||
run: |
|
||||
echo ${{ inputs.appstore-connect-key }} | base64 --decode > keys/appstore.p8
|
||||
echo ${{ inputs.code-signing-certificate }} | base64 --decode > keys/codesigning.pfx
|
||||
echo ${{ inputs.google-play-key }} | base64 --decode > keys/googleplay.json
|
||||
echo ${{ inputs.android-key-jks }} | base64 --decode > android/key.jks
|
||||
echo ${{ inputs.android-key-properties }} | base64 --decode > android/key.properties
|
||||
|
||||
- name: Setup Firebase Configuration
|
||||
if: ${{ inputs.firebase-token != '' }}
|
||||
shell: bash
|
||||
run: |
|
||||
npm install -g firebase-tools
|
||||
gem install --user-install xcodeproj
|
||||
dart pub global activate flutterfire_cli
|
||||
|
||||
flutterfire configure \
|
||||
--project=comettools-lunasea \
|
||||
--token=${{ inputs.firebase-token }} \
|
||||
--platforms=android,ios,macos,web \
|
||||
--android-package-name=app.lunasea.lunasea \
|
||||
--ios-bundle-id=app.lunasea.lunasea \
|
||||
--macos-bundle-id=app.lunasea.lunasea \
|
||||
--out=lib/firebase/options.dart \
|
||||
--yes
|
||||
|
||||
- name: Setup Firebase Service Worker
|
||||
if: ${{ inputs.firebase-service-worker != '' }}
|
||||
shell: bash
|
||||
run: echo ${{ inputs.firebase-service-worker }} | base64 --decode > web/firebase-messaging-sw.js
|
||||
|
||||
- name: Setup Android Platform
|
||||
if: ${{ inputs.platform == 'android' }}
|
||||
shell: bash
|
||||
run: |
|
||||
(cd android && bundle install)
|
||||
|
||||
- name: Setup iOS Platform
|
||||
if: ${{ inputs.platform == 'ios' }}
|
||||
shell: bash
|
||||
run: |
|
||||
(cd ios && bundle install)
|
||||
|
||||
- name: Setup Linux Platform
|
||||
if: ${{ inputs.platform == 'linux' }}
|
||||
shell: bash
|
||||
run: |
|
||||
flutter config --enable-linux-desktop
|
||||
|
||||
- name: Setup macOS Platform
|
||||
if: ${{ inputs.platform == 'macos' }}
|
||||
shell: bash
|
||||
run: |
|
||||
flutter config --enable-macos-desktop
|
||||
(cd macos && bundle install)
|
||||
|
||||
- name: Setup All Platforms
|
||||
shell: bash
|
||||
run: |
|
||||
flutter pub get
|
||||
87
.github/actions/prepare_for_deployment/action.yml
vendored
Normal file
@@ -0,0 +1,87 @@
|
||||
name: 'Prepare for Deployment'
|
||||
description: 'Setup all required dependencies and secrets for the given release channel'
|
||||
|
||||
inputs:
|
||||
channel:
|
||||
description: 'Release Channel'
|
||||
required: true
|
||||
|
||||
# Secret Keys
|
||||
appstore-connect-key:
|
||||
description: 'App Store Connect API Key'
|
||||
required: false
|
||||
default: ''
|
||||
ghcr-actor:
|
||||
description: 'GitHub Container Registry Actor'
|
||||
required: false
|
||||
default: ''
|
||||
ghcr-token:
|
||||
description: 'GitHub Container Registry Token'
|
||||
required: false
|
||||
default: ''
|
||||
google-play-key:
|
||||
description: 'Google Play Store API Key'
|
||||
required: false
|
||||
default: ''
|
||||
|
||||
runs:
|
||||
using: composite
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Prepare Folders
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir -p output
|
||||
mkdir -p keys
|
||||
|
||||
- name: Install Ruby
|
||||
if: ${{ inputs.channel == 'play-store' || inputs.channel == 'app-store' }}
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
bundler-cache: true
|
||||
|
||||
- name: Install XCode
|
||||
if: ${{ inputs.channel == 'app-store' }}
|
||||
uses: maxim-lobanov/setup-xcode@v1
|
||||
with:
|
||||
xcode-version: latest-stable
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
if: ${{ inputs.channel == 'docker' }}
|
||||
uses: docker/setup-buildx-action@v1
|
||||
|
||||
- name: Setup GitHub Package Registry
|
||||
if: ${{ inputs.channel == 'docker' }}
|
||||
uses: docker/login-action@v1
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ inputs.ghcr-actor }}
|
||||
password: ${{ inputs.ghcr-token }}
|
||||
|
||||
- name: Setup Secret Keys
|
||||
shell: bash
|
||||
run: |
|
||||
echo ${{ inputs.appstore-connect-key }} | base64 --decode > keys/appstore.p8
|
||||
echo ${{ inputs.google-play-key }} | base64 --decode > keys/googleplay.json
|
||||
|
||||
- name: Setup Android Platform
|
||||
if: ${{ inputs.channel == 'play-store' }}
|
||||
shell: bash
|
||||
run: |
|
||||
cd android && bundle install
|
||||
|
||||
- name: Setup iOS Platform
|
||||
if: ${{ inputs.channel == 'app-store' }}
|
||||
shell: bash
|
||||
run: |
|
||||
cd ios && bundle install
|
||||
|
||||
- name: Setup macOS Platform
|
||||
if: ${{ inputs.channel == 'app-store' }}
|
||||
shell: bash
|
||||
run: |
|
||||
cd macos && bundle install
|
||||
36
.github/scripts/notify-embed.js
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
const getRelease = () => {
|
||||
const title = process.env.BUILD_TITLE;
|
||||
let url = "https://builds.lunasea.app";
|
||||
if (title) url += `/#${title}/`;
|
||||
return `[Download](${url})`;
|
||||
};
|
||||
|
||||
const getWeb = () => {
|
||||
const flavor = process.env.BUILD_FLAVOR;
|
||||
let url = "";
|
||||
if (flavor !== "stable") url += `${process.env.BUILD_FLAVOR}.`;
|
||||
url += "web.lunasea.app";
|
||||
return `[View Deployment](https://${url})`;
|
||||
};
|
||||
|
||||
module.exports = () => {
|
||||
return JSON.stringify([
|
||||
{
|
||||
title: process.env.BUILD_TITLE ?? "Unknown Build",
|
||||
color: 5164195,
|
||||
timestamp: new Date().toISOString(),
|
||||
fields: [
|
||||
{
|
||||
name: "Release",
|
||||
value: getRelease(),
|
||||
inline: true,
|
||||
},
|
||||
{
|
||||
name: "Web",
|
||||
value: getWeb(),
|
||||
inline: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
]);
|
||||
};
|
||||
192
.github/workflows/build.yml
vendored
Normal file
@@ -0,0 +1,192 @@
|
||||
name: Build
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
flavor:
|
||||
description: Build Flavor
|
||||
required: true
|
||||
default: edge
|
||||
type: choice
|
||||
options:
|
||||
- edge
|
||||
- beta
|
||||
- candidate
|
||||
- stable
|
||||
|
||||
jobs:
|
||||
prepare:
|
||||
name: Prepare
|
||||
uses: JagandeepBrar/LunaSea/.github/workflows/prepare.yml@master
|
||||
with:
|
||||
flavor: ${{ inputs.flavor }}
|
||||
secrets:
|
||||
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
|
||||
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
|
||||
|
||||
build-android:
|
||||
name: Build Android
|
||||
needs: [ prepare ]
|
||||
uses: JagandeepBrar/LunaSea/.github/workflows/build_android.yml@master
|
||||
with:
|
||||
build-number: ${{ needs.prepare.outputs.build-number }}
|
||||
secrets:
|
||||
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
|
||||
KEY_JKS: ${{ secrets.KEY_JKS }}
|
||||
KEY_PROPERTIES: ${{ secrets.KEY_PROPERTIES }}
|
||||
|
||||
build-ios:
|
||||
name: Build iOS
|
||||
needs: [ prepare ]
|
||||
uses: JagandeepBrar/LunaSea/.github/workflows/build_ios.yml@master
|
||||
with:
|
||||
build-number: ${{ needs.prepare.outputs.build-number }}
|
||||
secrets:
|
||||
APPLE_ID: ${{ secrets.APPLE_ID }}
|
||||
APPLE_ITC_TEAM_ID: ${{ secrets.APPLE_ITC_TEAM_ID }}
|
||||
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
|
||||
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
|
||||
IOS_CODESIGNING_IDENTITY: ${{ secrets.IOS_CODESIGNING_IDENTITY }}
|
||||
MATCH_KEYCHAIN_NAME: ${{ secrets.MATCH_KEYCHAIN_NAME }}
|
||||
MATCH_KEYCHAIN_PASSWORD: ${{ secrets.MATCH_KEYCHAIN_PASSWORD }}
|
||||
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
|
||||
MATCH_SSH_PRIVATE_KEY: ${{ secrets.MATCH_SSH_PRIVATE_KEY }}
|
||||
|
||||
build-linux:
|
||||
name: Build Linux
|
||||
needs: [ prepare ]
|
||||
uses: JagandeepBrar/LunaSea/.github/workflows/build_linux.yml@master
|
||||
|
||||
build-macos:
|
||||
name: Build macOS
|
||||
needs: [ prepare ]
|
||||
uses: JagandeepBrar/LunaSea/.github/workflows/build_macos.yml@master
|
||||
with:
|
||||
build-number: ${{ needs.prepare.outputs.build-number }}
|
||||
build-version: ${{ needs.prepare.outputs.build-version }}
|
||||
secrets:
|
||||
APPLE_ID: ${{ secrets.APPLE_ID }}
|
||||
APPLE_ITC_TEAM_ID: ${{ secrets.APPLE_ITC_TEAM_ID }}
|
||||
APPLE_STORE_CONNECT_ISSUER_ID: ${{ secrets.APPLE_STORE_CONNECT_ISSUER_ID }}
|
||||
APPLE_STORE_CONNECT_KEY: ${{ secrets.APPLE_STORE_CONNECT_KEY }}
|
||||
APPLE_STORE_CONNECT_KEY_ID: ${{ secrets.APPLE_STORE_CONNECT_KEY_ID }}
|
||||
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
|
||||
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
|
||||
MACOS_INSTALLER_CERT_APP_STORE: ${{ secrets.MACOS_INSTALLER_CERT_APP_STORE }}
|
||||
MACOS_INSTALLER_CERT_DIRECT: ${{ secrets.MACOS_INSTALLER_CERT_DIRECT }}
|
||||
MATCH_KEYCHAIN_NAME: ${{ secrets.MATCH_KEYCHAIN_NAME }}
|
||||
MATCH_KEYCHAIN_PASSWORD: ${{ secrets.MATCH_KEYCHAIN_PASSWORD }}
|
||||
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
|
||||
MATCH_SSH_PRIVATE_KEY: ${{ secrets.MATCH_SSH_PRIVATE_KEY }}
|
||||
|
||||
build-web:
|
||||
name: Build Web
|
||||
needs: [ prepare ]
|
||||
uses: JagandeepBrar/LunaSea/.github/workflows/build_web.yml@master
|
||||
with:
|
||||
build-flavor: ${{ needs.prepare.outputs.build-flavor }}
|
||||
build-title: ${{ needs.prepare.outputs.build-title }}
|
||||
secrets:
|
||||
FIREBASE_SERVICE_WORKER: ${{ secrets.FIREBASE_SERVICE_WORKER }}
|
||||
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
|
||||
|
||||
build-windows:
|
||||
name: Build Windows
|
||||
needs: [ prepare ]
|
||||
uses: JagandeepBrar/LunaSea/.github/workflows/build_windows.yml@master
|
||||
secrets:
|
||||
CODE_SIGNING_CERTIFICATE: ${{ secrets.CODE_SIGNING_CERTIFICATE }}
|
||||
CODE_SIGNING_PASSWORD: ${{ secrets.CODE_SIGNING_PASSWORD }}
|
||||
CODE_SIGNING_PUBLISHER: ${{ secrets.CODE_SIGNING_PUBLISHER }}
|
||||
CODE_SIGNING_PUBLISHER_NAME: ${{ secrets.CODE_SIGNING_PUBLISHER_NAME }}
|
||||
|
||||
publish-android:
|
||||
name: Publish Android
|
||||
needs: [ prepare, build-android ]
|
||||
uses: JagandeepBrar/LunaSea/.github/workflows/publish_android.yml@master
|
||||
with:
|
||||
build-flavor: ${{ needs.prepare.outputs.build-flavor }}
|
||||
build-motd: ${{ needs.prepare.outputs.build-motd }}
|
||||
build-title: ${{ needs.prepare.outputs.build-title }}
|
||||
secrets:
|
||||
GOOGLE_PLAY_API: ${{ secrets.GOOGLE_PLAY_API }}
|
||||
|
||||
publish-ios:
|
||||
name: Publish iOS
|
||||
needs: [ prepare, build-ios ]
|
||||
uses: JagandeepBrar/LunaSea/.github/workflows/publish_ios.yml@master
|
||||
with:
|
||||
build-flavor: ${{ needs.prepare.outputs.build-flavor }}
|
||||
build-motd: ${{ needs.prepare.outputs.build-motd }}
|
||||
secrets:
|
||||
APPLE_ID: ${{ secrets.APPLE_ID }}
|
||||
APPLE_ITC_TEAM_ID: ${{ secrets.APPLE_ITC_TEAM_ID }}
|
||||
APPLE_STORE_CONNECT_ISSUER_ID: ${{ secrets.APPLE_STORE_CONNECT_ISSUER_ID }}
|
||||
APPLE_STORE_CONNECT_KEY: ${{ secrets.APPLE_STORE_CONNECT_KEY }}
|
||||
APPLE_STORE_CONNECT_KEY_ID: ${{ secrets.APPLE_STORE_CONNECT_KEY_ID }}
|
||||
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
|
||||
|
||||
publish-linux:
|
||||
name: Publish Linux
|
||||
needs: [ prepare, build-linux ]
|
||||
uses: JagandeepBrar/LunaSea/.github/workflows/publish_linux.yml@master
|
||||
with:
|
||||
build-flavor: ${{ needs.prepare.outputs.build-flavor }}
|
||||
secrets:
|
||||
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_STORE_CREDENTIALS }}
|
||||
|
||||
publish-macos:
|
||||
name: Publish macOS
|
||||
needs: [ prepare, build-macos ]
|
||||
uses: JagandeepBrar/LunaSea/.github/workflows/publish_macos.yml@master
|
||||
with:
|
||||
build-flavor: ${{ needs.prepare.outputs.build-flavor }}
|
||||
build-motd: ${{ needs.prepare.outputs.build-motd }}
|
||||
secrets:
|
||||
APPLE_ID: ${{ secrets.APPLE_ID }}
|
||||
APPLE_ITC_TEAM_ID: ${{ secrets.APPLE_ITC_TEAM_ID }}
|
||||
APPLE_STORE_CONNECT_ISSUER_ID: ${{ secrets.APPLE_STORE_CONNECT_ISSUER_ID }}
|
||||
APPLE_STORE_CONNECT_KEY: ${{ secrets.APPLE_STORE_CONNECT_KEY }}
|
||||
APPLE_STORE_CONNECT_KEY_ID: ${{ secrets.APPLE_STORE_CONNECT_KEY_ID }}
|
||||
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
|
||||
|
||||
publish-web:
|
||||
name: Publish Web
|
||||
needs: [ prepare, build-web ]
|
||||
uses: JagandeepBrar/LunaSea/.github/workflows/publish_web.yml@master
|
||||
with:
|
||||
build-flavor: ${{ needs.prepare.outputs.build-flavor }}
|
||||
build-title: ${{ needs.prepare.outputs.build-title }}
|
||||
secrets:
|
||||
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
|
||||
|
||||
publish-s3:
|
||||
name: Publish S3
|
||||
needs: [ prepare, build-android, build-ios, build-linux, build-macos, build-web, build-windows ]
|
||||
uses: JagandeepBrar/LunaSea/.github/workflows/publish_s3.yml@master
|
||||
with:
|
||||
build-flavor: ${{ needs.prepare.outputs.build-flavor }}
|
||||
build-number: ${{ needs.prepare.outputs.build-number }}
|
||||
build-title: ${{ needs.prepare.outputs.build-title }}
|
||||
secrets:
|
||||
S3_ACCESS_KEY: ${{ secrets.S3_ACCESS_KEY }}
|
||||
S3_BUCKET: ${{ secrets.S3_BUCKET }}
|
||||
S3_ENDPOINT: ${{ secrets.S3_ENDPOINT }}
|
||||
S3_KEY_ID: ${{ secrets.S3_KEY_ID }}
|
||||
S3_REGION: ${{ secrets.S3_REGION }}
|
||||
|
||||
notify:
|
||||
name: Notify
|
||||
needs: [ prepare, publish-s3 ]
|
||||
uses: JagandeepBrar/LunaSea/.github/workflows/notify.yml@master
|
||||
with:
|
||||
build-flavor: ${{ needs.prepare.outputs.build-flavor }}
|
||||
build-title: ${{ needs.prepare.outputs.build-title }}
|
||||
secrets:
|
||||
DISCORD_WEBHOOK_EDGE: ${{ secrets.DISCORD_WEBHOOK_EDGE }}
|
||||
DISCORD_WEBHOOK_BETA: ${{ secrets.DISCORD_WEBHOOK_BETA }}
|
||||
DISCORD_WEBHOOK_CANDIDATE: ${{ secrets.DISCORD_WEBHOOK_CANDIDATE }}
|
||||
DISCORD_WEBHOOK_STABLE: ${{ secrets.DISCORD_WEBHOOK_STABLE }}
|
||||
61
.github/workflows/build_android.yml
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
name: 'Build Android'
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
build-number:
|
||||
required: true
|
||||
type: string
|
||||
|
||||
secrets:
|
||||
FIREBASE_TOKEN:
|
||||
required: true
|
||||
KEY_JKS:
|
||||
required: true
|
||||
KEY_PROPERTIES:
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
build-playstore-package:
|
||||
name: Play Store
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Setup Environment
|
||||
uses: JagandeepBrar/LunaSea/.github/actions/prepare_for_build@master
|
||||
with:
|
||||
firebase-token: ${{ secrets.FIREBASE_TOKEN }}
|
||||
platform: android
|
||||
android-key-jks: ${{ secrets.KEY_JKS }}
|
||||
android-key-properties: ${{ secrets.KEY_PROPERTIES }}
|
||||
|
||||
- name: Build LunaSea
|
||||
working-directory: ${{ github.workspace }}/android
|
||||
run: bundle exec fastlane build_aab build_number:${{ inputs.build-number }}
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: android-playstore-package
|
||||
path: ${{ github.workspace }}/output
|
||||
|
||||
build-app-package:
|
||||
name: App Package
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Setup Environment
|
||||
uses: JagandeepBrar/LunaSea/.github/actions/prepare_for_build@master
|
||||
with:
|
||||
firebase-token: ${{ secrets.FIREBASE_TOKEN }}
|
||||
platform: android
|
||||
android-key-jks: ${{ secrets.KEY_JKS }}
|
||||
android-key-properties: ${{ secrets.KEY_PROPERTIES }}
|
||||
|
||||
- name: Build LunaSea
|
||||
working-directory: ${{ github.workspace }}/android
|
||||
run: bundle exec fastlane build_apk build_number:${{ inputs.build-number }}
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: android-app-package
|
||||
path: ${{ github.workspace }}/output
|
||||
58
.github/workflows/build_ios.yml
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
name: 'Build iOS'
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
build-number:
|
||||
required: true
|
||||
type: string
|
||||
|
||||
secrets:
|
||||
APPLE_ID:
|
||||
required: true
|
||||
APPLE_ITC_TEAM_ID:
|
||||
required: true
|
||||
APPLE_TEAM_ID:
|
||||
required: true
|
||||
FIREBASE_TOKEN:
|
||||
required: true
|
||||
IOS_CODESIGNING_IDENTITY:
|
||||
required: true
|
||||
MATCH_KEYCHAIN_NAME:
|
||||
required: true
|
||||
MATCH_KEYCHAIN_PASSWORD:
|
||||
required: true
|
||||
MATCH_PASSWORD:
|
||||
required: true
|
||||
MATCH_SSH_PRIVATE_KEY:
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
build-app-store:
|
||||
name: App Store
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- name: Setup Environment
|
||||
uses: JagandeepBrar/LunaSea/.github/actions/prepare_for_build@master
|
||||
with:
|
||||
firebase-token: ${{ secrets.FIREBASE_TOKEN }}
|
||||
platform: ios
|
||||
match-ssh-private-key: ${{ secrets.MATCH_SSH_PRIVATE_KEY }}
|
||||
|
||||
- name: Build LunaSea
|
||||
working-directory: ${{ github.workspace }}/ios
|
||||
env:
|
||||
APPLE_ID: ${{ secrets.APPLE_ID }}
|
||||
APPLE_ITC_TEAM_ID: ${{ secrets.APPLE_ITC_TEAM_ID }}
|
||||
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
|
||||
IOS_CODESIGNING_IDENTITY: ${{ secrets.IOS_CODESIGNING_IDENTITY }}
|
||||
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
|
||||
MATCH_KEYCHAIN_NAME: ${{ secrets.MATCH_KEYCHAIN_NAME }}
|
||||
MATCH_KEYCHAIN_PASSWORD: ${{ secrets.MATCH_KEYCHAIN_PASSWORD }}
|
||||
run: bundle exec fastlane build_appstore build_number:${{ inputs.build-number }}
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: ios-appstore-package
|
||||
path: ${{ github.workspace }}/output
|
||||
27
.github/workflows/build_linux.yml
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
name: 'Build Linux'
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
|
||||
jobs:
|
||||
build-snapcraft:
|
||||
name: Snapcraft
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Setup Environment
|
||||
uses: JagandeepBrar/LunaSea/.github/actions/prepare_for_build@master
|
||||
with:
|
||||
platform: linux
|
||||
|
||||
- name: Build LunaSea
|
||||
uses: snapcore/action-build@v1
|
||||
id: build
|
||||
|
||||
- name: Prepare Artifact
|
||||
run: mv ${{ steps.build.outputs.snap }} ${{ github.workspace }}/output/lunasea-linux-amd64.snap
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: linux-snapcraft
|
||||
path: ${{ github.workspace }}/output
|
||||
144
.github/workflows/build_macos.yml
vendored
Normal file
@@ -0,0 +1,144 @@
|
||||
name: 'Build macOS'
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
build-number:
|
||||
required: true
|
||||
type: string
|
||||
build-version:
|
||||
required: true
|
||||
type: string
|
||||
|
||||
secrets:
|
||||
APPLE_ID:
|
||||
required: true
|
||||
APPLE_ITC_TEAM_ID:
|
||||
required: true
|
||||
APPLE_STORE_CONNECT_ISSUER_ID:
|
||||
required: true
|
||||
APPLE_STORE_CONNECT_KEY:
|
||||
required: true
|
||||
APPLE_STORE_CONNECT_KEY_ID:
|
||||
required: true
|
||||
APPLE_TEAM_ID:
|
||||
required: true
|
||||
FIREBASE_TOKEN:
|
||||
required: true
|
||||
MACOS_INSTALLER_CERT_APP_STORE:
|
||||
required: true
|
||||
MACOS_INSTALLER_CERT_DIRECT:
|
||||
required: true
|
||||
MATCH_KEYCHAIN_NAME:
|
||||
required: true
|
||||
MATCH_KEYCHAIN_PASSWORD:
|
||||
required: true
|
||||
MATCH_PASSWORD:
|
||||
required: true
|
||||
MATCH_SSH_PRIVATE_KEY:
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
build-app-store:
|
||||
name: App Store
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- name: Setup Environment
|
||||
uses: JagandeepBrar/LunaSea/.github/actions/prepare_for_build@master
|
||||
with:
|
||||
firebase-token: ${{ secrets.FIREBASE_TOKEN }}
|
||||
platform: macos
|
||||
appstore-connect-key: ${{ secrets.APPLE_STORE_CONNECT_KEY }}
|
||||
match-ssh-private-key: ${{ secrets.MATCH_SSH_PRIVATE_KEY }}
|
||||
|
||||
- name: Build LunaSea
|
||||
working-directory: ${{ github.workspace }}/macos
|
||||
env:
|
||||
APPLE_ID: ${{ secrets.APPLE_ID }}
|
||||
APPLE_ITC_TEAM_ID: ${{ secrets.APPLE_ITC_TEAM_ID }}
|
||||
APPLE_STORE_CONNECT_ISSUER_ID: ${{ secrets.APPLE_STORE_CONNECT_ISSUER_ID }}
|
||||
APPLE_STORE_CONNECT_KEY_FILEPATH: ${{ github.workspace }}/keys/appstore.p8
|
||||
APPLE_STORE_CONNECT_KEY_ID: ${{ secrets.APPLE_STORE_CONNECT_KEY_ID }}
|
||||
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
|
||||
MACOS_INSTALLER_CERT_APP_STORE: ${{ secrets.MACOS_INSTALLER_CERT_APP_STORE }}
|
||||
MATCH_KEYCHAIN_NAME: ${{ secrets.MATCH_KEYCHAIN_NAME }}
|
||||
MATCH_KEYCHAIN_PASSWORD: ${{ secrets.MATCH_KEYCHAIN_PASSWORD }}
|
||||
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
|
||||
run: bundle exec fastlane build_app_store build_number:${{ inputs.build-number }}
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: macos-appstore-package
|
||||
path: ${{ github.workspace }}/output
|
||||
|
||||
build-app-package:
|
||||
name: App Package
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- name: Setup Environment
|
||||
uses: JagandeepBrar/LunaSea/.github/actions/prepare_for_build@master
|
||||
with:
|
||||
firebase-token: ${{ secrets.FIREBASE_TOKEN }}
|
||||
platform: macos
|
||||
appstore-connect-key: ${{ secrets.APPLE_STORE_CONNECT_KEY }}
|
||||
match-ssh-private-key: ${{ secrets.MATCH_SSH_PRIVATE_KEY }}
|
||||
|
||||
- name: Build LunaSea
|
||||
working-directory: ${{ github.workspace }}/macos
|
||||
env:
|
||||
APPLE_ID: ${{ secrets.APPLE_ID }}
|
||||
APPLE_ITC_TEAM_ID: ${{ secrets.APPLE_ITC_TEAM_ID }}
|
||||
APPLE_STORE_CONNECT_ISSUER_ID: ${{ secrets.APPLE_STORE_CONNECT_ISSUER_ID }}
|
||||
APPLE_STORE_CONNECT_KEY_FILEPATH: ${{ github.workspace }}/keys/appstore.p8
|
||||
APPLE_STORE_CONNECT_KEY_ID: ${{ secrets.APPLE_STORE_CONNECT_KEY_ID }}
|
||||
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
|
||||
MACOS_INSTALLER_CERT_DIRECT: ${{ secrets.MACOS_INSTALLER_CERT_DIRECT }}
|
||||
MATCH_KEYCHAIN_NAME: ${{ secrets.MATCH_KEYCHAIN_NAME }}
|
||||
MATCH_KEYCHAIN_PASSWORD: ${{ secrets.MATCH_KEYCHAIN_PASSWORD }}
|
||||
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
|
||||
run: bundle exec fastlane build_app_package build_number:${{ inputs.build-number }}
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: macos-app-package
|
||||
path: ${{ github.workspace }}/output
|
||||
|
||||
build-disk-image:
|
||||
name: Disk Image
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- name: Setup Environment
|
||||
uses: JagandeepBrar/LunaSea/.github/actions/prepare_for_build@master
|
||||
with:
|
||||
firebase-token: ${{ secrets.FIREBASE_TOKEN }}
|
||||
platform: macos
|
||||
appstore-connect-key: ${{ secrets.APPLE_STORE_CONNECT_KEY }}
|
||||
match-ssh-private-key: ${{ secrets.MATCH_SSH_PRIVATE_KEY }}
|
||||
|
||||
- name: Setup Disk Image Creator
|
||||
run: |
|
||||
npm install -g create-dmg
|
||||
brew install graphicsmagick imagemagick
|
||||
|
||||
- name: Build LunaSea
|
||||
working-directory: ${{ github.workspace }}/macos
|
||||
env:
|
||||
APPLE_ID: ${{ secrets.APPLE_ID }}
|
||||
APPLE_ITC_TEAM_ID: ${{ secrets.APPLE_ITC_TEAM_ID }}
|
||||
APPLE_STORE_CONNECT_ISSUER_ID: ${{ secrets.APPLE_STORE_CONNECT_ISSUER_ID }}
|
||||
APPLE_STORE_CONNECT_KEY_FILEPATH: ${{ github.workspace }}/keys/appstore.p8
|
||||
APPLE_STORE_CONNECT_KEY_ID: ${{ secrets.APPLE_STORE_CONNECT_KEY_ID }}
|
||||
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
|
||||
MACOS_INSTALLER_CERT_DIRECT: ${{ secrets.MACOS_INSTALLER_CERT_DIRECT }}
|
||||
MATCH_KEYCHAIN_NAME: ${{ secrets.MATCH_KEYCHAIN_NAME }}
|
||||
MATCH_KEYCHAIN_PASSWORD: ${{ secrets.MATCH_KEYCHAIN_PASSWORD }}
|
||||
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
|
||||
run: bundle exec fastlane build_disk_image build_number:${{ inputs.build-number }} build_version:${{ inputs.build-version }}
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: macos-disk-image
|
||||
path: ${{ github.workspace }}/output
|
||||
100
.github/workflows/build_web.yml
vendored
Normal file
@@ -0,0 +1,100 @@
|
||||
name: 'Build Web'
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
build-flavor:
|
||||
required: true
|
||||
type: string
|
||||
build-title:
|
||||
required: true
|
||||
type: string
|
||||
|
||||
secrets:
|
||||
FIREBASE_TOKEN:
|
||||
required: true
|
||||
FIREBASE_SERVICE_WORKER:
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
build-hosted:
|
||||
name: Hosted
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Setup Environment
|
||||
uses: JagandeepBrar/LunaSea/.github/actions/prepare_for_build@master
|
||||
with:
|
||||
firebase-token: ${{ secrets.FIREBASE_TOKEN }}
|
||||
firebase-service-worker: ${{ secrets.FIREBASE_SERVICE_WORKER }}
|
||||
platform: web
|
||||
|
||||
- name: Build LunaSea
|
||||
run: npm run build:web
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: web-hosted
|
||||
path: ${{ github.workspace }}/build/web
|
||||
|
||||
build-archive:
|
||||
name: Archive
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Setup Environment
|
||||
uses: JagandeepBrar/LunaSea/.github/actions/prepare_for_build@master
|
||||
with:
|
||||
platform: web
|
||||
|
||||
- name: Build LunaSea
|
||||
run: npm run build:web
|
||||
|
||||
- name: Create Archive
|
||||
uses: thedoctor0/zip-release@0.6.2
|
||||
with:
|
||||
type: zip
|
||||
directory: ${{ github.workspace }}/build/web
|
||||
filename: ../../output/lunasea-web-canvaskit.zip
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: web-archive
|
||||
path: ${{ github.workspace }}/output
|
||||
|
||||
build-docker:
|
||||
name: Docker
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Setup Environment
|
||||
uses: JagandeepBrar/LunaSea/.github/actions/prepare_for_build@master
|
||||
with:
|
||||
platform: web
|
||||
|
||||
- name: Determine Tags
|
||||
id: tags
|
||||
uses: actions/github-script@v6
|
||||
env:
|
||||
BUILD_FLAVOR: ${{ inputs.build-flavor }}
|
||||
BUILD_TITLE: ${{ inputs.build-title }}
|
||||
with:
|
||||
result-encoding: string
|
||||
script: |
|
||||
const tags = [];
|
||||
tags.push(process.env.BUILD_FLAVOR);
|
||||
tags.push(process.env.BUILD_TITLE);
|
||||
if (process.env.BUILD_FLAVOR === 'stable') tags.push('latest');
|
||||
return tags.map((tag) => `ghcr.io/jagandeepbrar/lunasea:${tag}`).join(',');
|
||||
|
||||
- name: Build LunaSea
|
||||
uses: docker/build-push-action@v2
|
||||
with:
|
||||
context: .
|
||||
outputs: type=docker,dest=${{ github.workspace}}/output/lunasea-web-docker.tar
|
||||
tags: ${{ steps.tags.outputs.result }}
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: web-docker
|
||||
path: ${{ github.workspace }}/output
|
||||
60
.github/workflows/build_windows.yml
vendored
Normal file
@@ -0,0 +1,60 @@
|
||||
name: 'Build Windows'
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
secrets:
|
||||
CODE_SIGNING_CERTIFICATE:
|
||||
required: true
|
||||
CODE_SIGNING_PASSWORD:
|
||||
required: true
|
||||
CODE_SIGNING_PUBLISHER:
|
||||
required: true
|
||||
CODE_SIGNING_PUBLISHER_NAME:
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
build-app-package:
|
||||
name: App Package
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- name: Setup Environment
|
||||
uses: JagandeepBrar/LunaSea/.github/actions/prepare_for_build@master
|
||||
with:
|
||||
platform: windows
|
||||
|
||||
- name: Build LunaSea
|
||||
run: npm run build:windows
|
||||
|
||||
- name: Prepare Artifact
|
||||
run: Compress-Archive -path ${{ github.workspace }}\build\windows\runner\Release\* ${{github.workspace}}\output\lunasea-windows-amd64.zip
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: windows-app-package
|
||||
path: ${{ github.workspace }}/output
|
||||
|
||||
build-msix-installer:
|
||||
name: MSIX Installer
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- name: Setup Environment
|
||||
uses: JagandeepBrar/LunaSea/.github/actions/prepare_for_build@master
|
||||
with:
|
||||
platform: windows
|
||||
code-signing-certificate: ${{ secrets.CODE_SIGNING_CERTIFICATE }}
|
||||
|
||||
- name: Build LunaSea
|
||||
run: |
|
||||
flutter pub run msix:create `
|
||||
--certificate-password=${{ secrets.CODE_SIGNING_PASSWORD }} `
|
||||
--certificate-path=${{ github.workspace }}/keys/codesigning.pfx `
|
||||
--output-path=${{ github.workspace }}/output `
|
||||
--publisher=${{ secrets.CODE_SIGNING_PUBLISHER }} `
|
||||
--publisher-display-name=${{ secrets.CODE_SIGNING_PUBLISHER_NAME }}
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: windows-msix-installer
|
||||
path: ${{ github.workspace }}/output
|
||||
20
.github/workflows/clear_flutter_cache.yml
vendored
@@ -1,20 +0,0 @@
|
||||
name: Clear Flutter Cache
|
||||
|
||||
on:
|
||||
workflow_dispatch
|
||||
|
||||
jobs:
|
||||
clear:
|
||||
name: Clear Cache
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Install Flutter
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
channel: stable
|
||||
cache: true
|
||||
cache-key: ${{ github.sha }}
|
||||
|
||||
- name: Flutter Doctor
|
||||
working-directory: ${{ github.workspace }}
|
||||
run: flutter doctor -v
|
||||
67
.github/workflows/generate_files.yml
vendored
@@ -1,67 +0,0 @@
|
||||
name: Generate Files
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
secrets:
|
||||
FIREBASE_OPTIONS:
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
runner:
|
||||
name: Build Runner
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Download Flavor Configuration
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: flavor-${{ github.sha }}
|
||||
path: ${{ github.workspace }}
|
||||
|
||||
- name: Install Secrets
|
||||
working-directory: ${{ github.workspace }}
|
||||
run: |
|
||||
echo ${{ secrets.FIREBASE_OPTIONS }} | base64 --decode > lib/firebase_options.dart
|
||||
|
||||
- name: Install Flutter
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
channel: stable
|
||||
cache: true
|
||||
cache-key: ${{ github.sha }}
|
||||
|
||||
- name: Generate
|
||||
working-directory: ${{ github.workspace }}
|
||||
run: |
|
||||
flutter pub get
|
||||
flutter packages pub run build_runner build
|
||||
|
||||
- name: Upload Source Files
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: lib-${{ github.sha }}
|
||||
path: ${{ github.workspace }}/lib/**/*.g.dart
|
||||
|
||||
localization:
|
||||
name: Localization
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Setup Dart
|
||||
uses: dart-lang/setup-dart@v1
|
||||
|
||||
- name: Generate
|
||||
working-directory: ${{ github.workspace }}
|
||||
run: |
|
||||
dart pub global activate derry
|
||||
derry generate localization
|
||||
|
||||
- name: Upload Localization Files
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: localization-${{ github.sha }}
|
||||
path: ${{ github.workspace }}/assets/localization
|
||||
@@ -1,4 +1,4 @@
|
||||
name: '[GitHub] Issues'
|
||||
name: 'GitHub Issue Labels'
|
||||
|
||||
on:
|
||||
issues:
|
||||
@@ -16,11 +16,8 @@ jobs:
|
||||
issue-comment: >
|
||||
Hi @{issue-author}! We use the issue tracker exclusively
|
||||
for bug reports and issues. However, this issue appears
|
||||
to be a feature request. Please use the following channels:
|
||||
|
||||
- [Feedback & Feature Requests Board](https://feedback.lunasea.app)
|
||||
|
||||
- [Discord](https://www.lunasea.app/discord)
|
||||
to be a feature request. Please use the [Discord](https://www.lunasea.app/discord)
|
||||
to request new features.
|
||||
close-issue: true
|
||||
lock-issue: true
|
||||
issue-lock-reason: 'off-topic'
|
||||
69
.github/workflows/notify.yml
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
name: Notify
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
build-flavor:
|
||||
required: true
|
||||
type: string
|
||||
build-title:
|
||||
required: true
|
||||
type: string
|
||||
|
||||
secrets:
|
||||
DISCORD_WEBHOOK_EDGE:
|
||||
required: true
|
||||
DISCORD_WEBHOOK_BETA:
|
||||
required: true
|
||||
DISCORD_WEBHOOK_CANDIDATE:
|
||||
required: true
|
||||
DISCORD_WEBHOOK_STABLE:
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
discord:
|
||||
name: Discord
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Determine Webhook Channel
|
||||
id: webhook
|
||||
uses: actions/github-script@v6
|
||||
env:
|
||||
DISCORD_WEBHOOK_EDGE: ${{ secrets.DISCORD_WEBHOOK_EDGE }}
|
||||
DISCORD_WEBHOOK_BETA: ${{ secrets.DISCORD_WEBHOOK_BETA }}
|
||||
DISCORD_WEBHOOK_CANDIDATE: ${{ secrets.DISCORD_WEBHOOK_CANDIDATE }}
|
||||
DISCORD_WEBHOOK_STABLE: ${{ secrets.DISCORD_WEBHOOK_STABLE }}
|
||||
BUILD_FLAVOR: ${{ inputs.build-flavor }}
|
||||
with:
|
||||
result-encoding: string
|
||||
script: |
|
||||
switch (process.env.BUILD_FLAVOR) {
|
||||
case 'beta': return process.env.DISCORD_WEBHOOK_BETA;
|
||||
case 'candidate': return process.env.DISCORD_WEBHOOK_CANDIDATE;
|
||||
case 'stable': return process.env.DISCORD_WEBHOOK_STABLE;
|
||||
case 'edge':
|
||||
default: return process.env.DISCORD_WEBHOOK_EDGE;
|
||||
}
|
||||
|
||||
- name: Create Discord Embed
|
||||
id: embed
|
||||
uses: actions/github-script@v6
|
||||
env:
|
||||
BUILD_FLAVOR: ${{ inputs.build-flavor }}
|
||||
BUILD_TITLE: ${{ inputs.build-title }}
|
||||
with:
|
||||
result-encoding: string
|
||||
script: return require('.github/scripts/notify-embed.js')();
|
||||
|
||||
- name: Send Discord Message
|
||||
uses: Ilshidur/action-discord@0.3.2
|
||||
env:
|
||||
DISCORD_WEBHOOK: ${{ steps.webhook.outputs.result }}
|
||||
DISCORD_USERNAME: LunaSea Support
|
||||
DISCORD_AVATAR: https://raw.githubusercontent.com/JagandeepBrar/LunaSea/master/assets/icon/icon.png
|
||||
DISCORD_EMBEDS: ${{ steps.embed.outputs.result }}
|
||||
172
.github/workflows/prepare.yml
vendored
@@ -3,74 +3,154 @@ name: Prepare
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
ref:
|
||||
flavor:
|
||||
type: string
|
||||
required: true
|
||||
|
||||
outputs:
|
||||
flavor:
|
||||
description: "Build Flavor Environment (internal, alpha, beta, production)"
|
||||
value: ${{ jobs.flavor.outputs.output1 }}
|
||||
track:
|
||||
description: "Track Name (Develop, Alpha, Beta, Production)"
|
||||
value: ${{ jobs.flavor.outputs.output2 }}
|
||||
build-flavor:
|
||||
description: "Build Flavor"
|
||||
value: ${{ jobs.build-details.outputs.build-flavor }}
|
||||
build-motd:
|
||||
description: "Build MOTD"
|
||||
value: ${{ jobs.build-details.outputs.build-motd }}
|
||||
build-number:
|
||||
description: "Build Number"
|
||||
value: ${{ jobs.build-details.outputs.build-number }}
|
||||
build-title:
|
||||
description: "Build Title"
|
||||
value: ${{ jobs.build-details.outputs.build-title }}
|
||||
build-version:
|
||||
description: "Build Version"
|
||||
value: ${{ jobs.build-details.outputs.build-version }}
|
||||
|
||||
secrets:
|
||||
FIREBASE_TOKEN:
|
||||
required: true
|
||||
SENTRY_DSN:
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
flavor:
|
||||
name: Flavor
|
||||
build-details:
|
||||
name: Build Details
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
output1: ${{ steps.output.outputs.flavor }}
|
||||
output2: ${{ steps.output.outputs.track }}
|
||||
build-motd: ${{ steps.build-motd.outputs.result }}
|
||||
build-flavor: ${{ steps.build-flavor.outputs.result }}
|
||||
build-number: ${{ steps.build-number.outputs.result }}
|
||||
build-title: ${{ steps.build-title.outputs.output }}
|
||||
build-version: ${{ steps.build-version.outputs.current-version }}
|
||||
steps:
|
||||
- name: Determine Flavor
|
||||
id: determine_flavor
|
||||
uses: actions/github-script@v5
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Count Commits
|
||||
id: commit-count
|
||||
run: |
|
||||
COUNT=`git rev-list HEAD --count`
|
||||
echo "::set-output name=commit-count::$COUNT"
|
||||
|
||||
- name: Build Flavor
|
||||
id: build-flavor
|
||||
uses: actions/github-script@v6
|
||||
env:
|
||||
FLAVOR: ${{ inputs.ref }}
|
||||
FLAVOR: ${{ inputs.flavor }}
|
||||
with:
|
||||
result-encoding: string
|
||||
script: |
|
||||
const ref = process.env.FLAVOR || 'internal';
|
||||
switch (ref) {
|
||||
case "alpha": return "alpha";
|
||||
case "beta": return "beta";
|
||||
case "production": return "production";
|
||||
default: return "internal";
|
||||
const flavor = process.env.FLAVOR;
|
||||
if (flavor) switch (flavor) {
|
||||
case 'edge':
|
||||
case 'beta':
|
||||
case 'candidate':
|
||||
case 'stable':
|
||||
return flavor;
|
||||
}
|
||||
return 'edge';
|
||||
|
||||
- name: Determine Track
|
||||
id: determine_track
|
||||
uses: actions/github-script@v5
|
||||
- name: Build MOTD
|
||||
id: build-motd
|
||||
uses: actions/github-script@v6
|
||||
env:
|
||||
FLAVOR: ${{ inputs.ref }}
|
||||
FLAVOR: ${{ steps.build-flavor.outputs.result }}
|
||||
with:
|
||||
result-encoding: string
|
||||
script: return `Thank you for testing ${process.env.FLAVOR} release builds! All changes can be found within the application.`;
|
||||
|
||||
- name: Build Number
|
||||
id: build-number
|
||||
uses: actions/github-script@v6
|
||||
env:
|
||||
COUNT: ${{ steps.commit-count.outputs.commit-count }}
|
||||
with:
|
||||
result-encoding: string
|
||||
script: |
|
||||
const ref = process.env.FLAVOR || 'internal';
|
||||
switch (ref) {
|
||||
case "alpha": return "Alpha";
|
||||
case "beta": return "Beta";
|
||||
case "production": return "Production";
|
||||
default: return "Develop";
|
||||
}
|
||||
const count = process.env.COUNT || "0";
|
||||
const base = 1000000000;
|
||||
return base + Number(count);
|
||||
|
||||
- name: Set Flavor Output
|
||||
id: output
|
||||
- name: Build Version
|
||||
id: build-version
|
||||
uses: martinbeentjes/npm-get-version-action@v1.1.0
|
||||
|
||||
- name: Build Title
|
||||
id: build-title
|
||||
run: |
|
||||
echo "::set-output name=flavor::${{ steps.determine_flavor.outputs.result }}"
|
||||
echo "::set-output name=track::${{ steps.determine_track.outputs.result }}"
|
||||
HASH=`git rev-parse --short ${{ github.sha }}`
|
||||
TITLE="v${{ steps.build-version.outputs.current-version }}-${{ steps.build-flavor.outputs.result }}-${{ steps.build-number.outputs.result }}-$HASH"
|
||||
echo "::set-output name=output::$TITLE"
|
||||
|
||||
- name: Create Flavor Configuration
|
||||
working-directory: ${{ github.workspace }}
|
||||
- name: Log Build Details
|
||||
env:
|
||||
FLAVOR: ${{ steps.build-flavor.outputs.result }}
|
||||
MOTD: ${{ steps.build-motd.outputs.result }}
|
||||
NUMBER: ${{ steps.build-number.outputs.result }}
|
||||
TITLE: ${{ steps.build-title.outputs.output }}
|
||||
VERSION: ${{ steps.build-version.outputs.current-version }}
|
||||
run: |
|
||||
echo FLAVOR=${{ steps.determine_flavor.outputs.result }}
|
||||
echo TRACK=${{ steps.determine_track.outputs.result }}
|
||||
echo COMMIT=${{ github.sha }}
|
||||
echo $'FLAVOR=${{ steps.determine_flavor.outputs.result }}\nCOMMIT=${{ github.sha }}' > .flavor
|
||||
echo "Build MOTD: $MOTD"
|
||||
echo "Build Flavor: $FLAVOR"
|
||||
echo "Build Number: $NUMBER"
|
||||
echo "Build Title: $TITLE"
|
||||
echo "Build Version: $VERSION"
|
||||
|
||||
- name: Upload Flavor Configuration
|
||||
uses: actions/upload-artifact@v2
|
||||
generate-files:
|
||||
name: Generate Files
|
||||
needs: build-details
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Setup Environment
|
||||
uses: JagandeepBrar/LunaSea/.github/actions/prepare_for_build@master
|
||||
with:
|
||||
name: flavor-${{ github.sha }}
|
||||
path: ${{ github.workspace }}/.flavor
|
||||
firebase-token: ${{ secrets.FIREBASE_TOKEN }}
|
||||
platform: test
|
||||
skip-core: true
|
||||
|
||||
- name: Generate Environment Configuration
|
||||
run: |
|
||||
export FLAVOR=${{ needs.build-details.outputs.build-flavor }}
|
||||
export COMMIT=${{ github.sha }}
|
||||
export BUILD=${{ needs.build-details.outputs.build-number }}
|
||||
export SENTRY_DSN=${{ secrets.SENTRY_DSN }}
|
||||
flutter packages pub run environment_config:generate
|
||||
|
||||
- name: Generate Localization
|
||||
run: dart ${{github.workspace }}/scripts/generate_localization.dart
|
||||
|
||||
- name: Generate Changelog
|
||||
run: dart ${{github.workspace }}/scripts/generate_changelog.dart ${{ needs.build-details.outputs.build-flavor }}
|
||||
|
||||
- name: Generate Build Runner Files
|
||||
run: flutter packages pub run build_runner build
|
||||
|
||||
- name: Upload Core Files
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: core-files
|
||||
path: |
|
||||
${{ github.workspace }}/assets/changelog.json
|
||||
${{ github.workspace }}/assets/localization
|
||||
${{ github.workspace }}/lib/**/*.g.dart
|
||||
${{ github.workspace }}/lib/system/environment.dart
|
||||
|
||||
66
.github/workflows/publish_android.yml
vendored
Normal file
@@ -0,0 +1,66 @@
|
||||
name: Publish Android
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
build-flavor:
|
||||
required: true
|
||||
type: string
|
||||
build-motd:
|
||||
required: true
|
||||
type: string
|
||||
build-title:
|
||||
required: true
|
||||
type: string
|
||||
|
||||
secrets:
|
||||
GOOGLE_PLAY_API:
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
play-store:
|
||||
name: Play Store
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Setup Environment
|
||||
uses: JagandeepBrar/LunaSea/.github/actions/prepare_for_deployment@master
|
||||
with:
|
||||
channel: play-store
|
||||
google-play-key: ${{ secrets.GOOGLE_PLAY_API }}
|
||||
|
||||
- name: Download Play Store Package
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: android-playstore-package
|
||||
path: ${{ github.workspace }}/output
|
||||
|
||||
- name: Determine Release Channel
|
||||
id: channel
|
||||
uses: actions/github-script@v6
|
||||
env:
|
||||
FLAVOR: ${{ inputs.build-flavor }}
|
||||
with:
|
||||
result-encoding: string
|
||||
script: |
|
||||
const ref = process.env.FLAVOR || 'edge';
|
||||
switch (ref) {
|
||||
case 'beta': return 'alpha';
|
||||
case 'candidate': return 'beta';
|
||||
case 'stable': return 'production';
|
||||
case 'edge':
|
||||
default: return 'internal';
|
||||
}
|
||||
|
||||
- name: Generate Changelog
|
||||
env:
|
||||
MOTD: ${{ inputs.build-motd }}
|
||||
OUTPUT_PATH: ${{ github.workspace }}/android/fastlane/metadata/android/en-CA/changelogs
|
||||
run: |
|
||||
mkdir -p $OUTPUT_PATH
|
||||
echo $MOTD > $OUTPUT_PATH/default.txt
|
||||
|
||||
- name: Deploy to Google Play Store
|
||||
working-directory: ${{ github.workspace }}/android
|
||||
env:
|
||||
SUPPLY_JSON_KEY: ${{ github.workspace }}/keys/googleplay.json
|
||||
run: bundle exec fastlane deploy_playstore track:${{ steps.channel.outputs.result }} aab:${{ github.workspace }}/output/lunasea-android.aab version_name:${{ inputs.build-title }}
|
||||
61
.github/workflows/publish_ios.yml
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
name: Publish iOS
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
build-flavor:
|
||||
required: true
|
||||
type: string
|
||||
build-motd:
|
||||
required: true
|
||||
type: string
|
||||
|
||||
secrets:
|
||||
APPLE_ID:
|
||||
required: true
|
||||
APPLE_ITC_TEAM_ID:
|
||||
required: true
|
||||
APPLE_STORE_CONNECT_ISSUER_ID:
|
||||
required: true
|
||||
APPLE_STORE_CONNECT_KEY:
|
||||
required: true
|
||||
APPLE_STORE_CONNECT_KEY_ID:
|
||||
required: true
|
||||
APPLE_TEAM_ID:
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
app-store:
|
||||
name: App Store (iOS)
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- name: Setup Environment
|
||||
uses: JagandeepBrar/LunaSea/.github/actions/prepare_for_deployment@master
|
||||
with:
|
||||
channel: app-store
|
||||
appstore-connect-key: ${{ secrets.APPLE_STORE_CONNECT_KEY }}
|
||||
|
||||
- name: Download App Store Package
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: ios-appstore-package
|
||||
path: ${{ github.workspace }}/output
|
||||
|
||||
- name: Generate Changelog
|
||||
env:
|
||||
MOTD: ${{ inputs.build-motd }}
|
||||
OUTPUT_PATH: ${{ github.workspace }}/ios/fastlane
|
||||
run: |
|
||||
mkdir -p $OUTPUT_PATH
|
||||
echo $MOTD > $OUTPUT_PATH/changelog.txt
|
||||
|
||||
- name: Deploy to App Store Connect
|
||||
working-directory: ${{ github.workspace }}/ios
|
||||
env:
|
||||
APPLE_ID: ${{ secrets.APPLE_ID }}
|
||||
APPLE_ITC_TEAM_ID: ${{ secrets.APPLE_ITC_TEAM_ID }}
|
||||
APPLE_STORE_CONNECT_ISSUER_ID: ${{ secrets.APPLE_STORE_CONNECT_ISSUER_ID }}
|
||||
APPLE_STORE_CONNECT_KEY_FILEPATH: ${{ github.workspace }}/keys/appstore.p8
|
||||
APPLE_STORE_CONNECT_KEY_ID: ${{ secrets.APPLE_STORE_CONNECT_KEY_ID }}
|
||||
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
|
||||
run: bundle exec fastlane deploy_appstore groups:${{ inputs.build-flavor }} ipa:${{ github.workspace }}/output/lunasea-ios.ipa
|
||||
36
.github/workflows/publish_linux.yml
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
name: Publish Linux
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
build-flavor:
|
||||
required: true
|
||||
type: string
|
||||
|
||||
secrets:
|
||||
SNAPCRAFT_STORE_CREDENTIALS:
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
snapcraft:
|
||||
name: Snapcraft
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Setup Environment
|
||||
uses: JagandeepBrar/LunaSea/.github/actions/prepare_for_deployment@master
|
||||
with:
|
||||
channel: snapcraft
|
||||
|
||||
- name: Download Snap
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: linux-snapcraft
|
||||
path: ${{ github.workspace }}/output
|
||||
|
||||
- name: Deploy to Snapcraft
|
||||
uses: snapcore/action-publish@master
|
||||
env:
|
||||
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_STORE_CREDENTIALS }}
|
||||
with:
|
||||
release: ${{ inputs.build-flavor }}
|
||||
snap: ${{ github.workspace }}/output/lunasea-linux-amd64.snap
|
||||
61
.github/workflows/publish_macos.yml
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
name: Publish macOS
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
build-flavor:
|
||||
required: true
|
||||
type: string
|
||||
build-motd:
|
||||
required: true
|
||||
type: string
|
||||
|
||||
secrets:
|
||||
APPLE_ID:
|
||||
required: true
|
||||
APPLE_ITC_TEAM_ID:
|
||||
required: true
|
||||
APPLE_STORE_CONNECT_ISSUER_ID:
|
||||
required: true
|
||||
APPLE_STORE_CONNECT_KEY:
|
||||
required: true
|
||||
APPLE_STORE_CONNECT_KEY_ID:
|
||||
required: true
|
||||
APPLE_TEAM_ID:
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
app-store:
|
||||
name: App Store (macOS)
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- name: Setup Environment
|
||||
uses: JagandeepBrar/LunaSea/.github/actions/prepare_for_deployment@master
|
||||
with:
|
||||
channel: app-store
|
||||
appstore-connect-key: ${{ secrets.APPLE_STORE_CONNECT_KEY }}
|
||||
|
||||
- name: Download App Store Package
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: macos-appstore-package
|
||||
path: ${{ github.workspace }}/output
|
||||
|
||||
- name: Generate Changelog
|
||||
env:
|
||||
MOTD: ${{ inputs.build-motd }}
|
||||
OUTPUT_PATH: ${{ github.workspace }}/macos/fastlane
|
||||
run: |
|
||||
mkdir -p $OUTPUT_PATH
|
||||
echo $MOTD > $OUTPUT_PATH/changelog.txt
|
||||
|
||||
- name: Deploy to App Store Connect
|
||||
working-directory: ${{ github.workspace }}/macos
|
||||
env:
|
||||
APPLE_ID: ${{ secrets.APPLE_ID }}
|
||||
APPLE_ITC_TEAM_ID: ${{ secrets.APPLE_ITC_TEAM_ID }}
|
||||
APPLE_STORE_CONNECT_ISSUER_ID: ${{ secrets.APPLE_STORE_CONNECT_ISSUER_ID }}
|
||||
APPLE_STORE_CONNECT_KEY_FILEPATH: ${{ github.workspace }}/keys/appstore.p8
|
||||
APPLE_STORE_CONNECT_KEY_ID: ${{ secrets.APPLE_STORE_CONNECT_KEY_ID }}
|
||||
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
|
||||
run: bundle exec fastlane deploy_appstore groups:${{ inputs.build-flavor }} pkg:${{ github.workspace }}/output/lunasea-macos-amd64.pkg
|
||||
121
.github/workflows/publish_s3.yml
vendored
Normal file
@@ -0,0 +1,121 @@
|
||||
name: Publish S3
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
build-flavor:
|
||||
required: true
|
||||
type: string
|
||||
build-number:
|
||||
required: true
|
||||
type: string
|
||||
build-title:
|
||||
required: true
|
||||
type: string
|
||||
|
||||
secrets:
|
||||
S3_ACCESS_KEY:
|
||||
required: true
|
||||
S3_BUCKET:
|
||||
required: true
|
||||
S3_ENDPOINT:
|
||||
required: true
|
||||
S3_KEY_ID:
|
||||
required: true
|
||||
S3_REGION:
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
s3:
|
||||
name: S3
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Setup Environment
|
||||
uses: JagandeepBrar/LunaSea/.github/actions/prepare_for_deployment@master
|
||||
with:
|
||||
channel: s3
|
||||
|
||||
- name: Download Android App Package
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: android-app-package
|
||||
path: ${{ github.workspace }}/output
|
||||
|
||||
- name: Download iOS App Package
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: ios-appstore-package
|
||||
path: ${{ github.workspace }}/output
|
||||
|
||||
- name: Download Linux Snap
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: linux-snapcraft
|
||||
path: ${{ github.workspace }}/output
|
||||
|
||||
- name: Download macOS App Package
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: macos-app-package
|
||||
path: ${{ github.workspace }}/output
|
||||
|
||||
- name: Download macOS Disk Image
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: macos-disk-image
|
||||
path: ${{ github.workspace }}/output
|
||||
|
||||
- name: Download Web Archive
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: web-archive
|
||||
path: ${{ github.workspace }}/output
|
||||
|
||||
- name: Download Windows App Package
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: windows-app-package
|
||||
path: ${{ github.workspace }}/output
|
||||
|
||||
- name: Download Windows MSIX Installer
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: windows-msix-installer
|
||||
path: ${{ github.workspace }}/output
|
||||
|
||||
- name: Create Version File
|
||||
working-directory: ${{ github.workspace }}/output
|
||||
run: |
|
||||
echo ${{ inputs.build-number }} > VERSION.txt
|
||||
echo ${{ inputs.build-number }} > VERSION_ANDROID.txt
|
||||
echo ${{ inputs.build-number }} > VERSION_IOS.txt
|
||||
echo ${{ inputs.build-number }} > VERSION_LINUX.txt
|
||||
echo ${{ inputs.build-number }} > VERSION_MACOS.txt
|
||||
echo ${{ inputs.build-number }} > VERSION_WEB.txt
|
||||
echo ${{ inputs.build-number }} > VERSION_WINDOWS.txt
|
||||
|
||||
- name: Upload to S3 Bucket (Build Title)
|
||||
uses: jakejarvis/s3-sync-action@v0.5.1
|
||||
with:
|
||||
args: --acl public-read --follow-symlinks
|
||||
env:
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.S3_KEY_ID }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.S3_ACCESS_KEY }}
|
||||
AWS_S3_BUCKET: ${{ secrets.S3_BUCKET }}
|
||||
AWS_S3_ENDPOINT: ${{ secrets.S3_ENDPOINT }}
|
||||
AWS_REGION: ${{ secrets.S3_REGION }}
|
||||
SOURCE_DIR: ${{ github.workspace }}/output
|
||||
DEST_DIR: ${{ inputs.build-title }}
|
||||
|
||||
- name: Upload to S3 Bucket (Latest)
|
||||
uses: jakejarvis/s3-sync-action@v0.5.1
|
||||
with:
|
||||
args: --acl public-read --follow-symlinks
|
||||
env:
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.S3_KEY_ID }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.S3_ACCESS_KEY }}
|
||||
AWS_S3_BUCKET: ${{ secrets.S3_BUCKET }}
|
||||
AWS_S3_ENDPOINT: ${{ secrets.S3_ENDPOINT }}
|
||||
AWS_REGION: ${{ secrets.S3_REGION }}
|
||||
SOURCE_DIR: ${{ github.workspace }}/output
|
||||
DEST_DIR: latest/${{ inputs.build-flavor }}
|
||||
81
.github/workflows/publish_web.yml
vendored
Normal file
@@ -0,0 +1,81 @@
|
||||
name: Publish Web
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
build-flavor:
|
||||
required: true
|
||||
type: string
|
||||
build-title:
|
||||
required: true
|
||||
type: string
|
||||
|
||||
secrets:
|
||||
NETLIFY_AUTH_TOKEN:
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
docker:
|
||||
name: Docker
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Setup Environment
|
||||
uses: JagandeepBrar/LunaSea/.github/actions/prepare_for_deployment@master
|
||||
with:
|
||||
channel: docker
|
||||
ghcr-actor: ${{ github.actor }}
|
||||
ghcr-token: ${{ github.token }}
|
||||
|
||||
- name: Download Docker Image
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: web-docker
|
||||
path: ${{ github.workspace }}/output
|
||||
|
||||
- name: Load Docker Image
|
||||
run: docker load --input ${{ github.workspace}}/output/lunasea-web-docker.tar
|
||||
|
||||
- name: Deploy to GitHub Container Registry
|
||||
run: docker image push --all-tags ghcr.io/jagandeepbrar/lunasea
|
||||
|
||||
netlify:
|
||||
name: Netlify
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Setup Environment
|
||||
uses: JagandeepBrar/LunaSea/.github/actions/prepare_for_deployment@master
|
||||
with:
|
||||
channel: netlify
|
||||
|
||||
- name: Download Web Package
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: web-hosted
|
||||
path: ${{ github.workspace }}/output
|
||||
|
||||
- name: Determine Release Channel
|
||||
id: channel
|
||||
uses: actions/github-script@v6
|
||||
env:
|
||||
FLAVOR: ${{ inputs.build-flavor }}
|
||||
with:
|
||||
result-encoding: string
|
||||
script: |
|
||||
const ref = process.env.FLAVOR || 'edge';
|
||||
switch (ref) {
|
||||
case 'beta': return '11ef2676-fc31-41b5-897b-fd21273d87ed';
|
||||
case 'candidate': return '4636e6a1-17ef-45a2-a2b6-3d1c166fd1df';
|
||||
case 'stable': return '6634f0b1-323c-4a2f-bd0b-8f1f388673a9';
|
||||
case 'edge':
|
||||
default: return '325e197e-55f4-449a-b2bb-6831fe47bf2a';
|
||||
}
|
||||
|
||||
- name: Deploy to Netlify
|
||||
uses: nwtgck/actions-netlify@v1.2
|
||||
env:
|
||||
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
|
||||
NETLIFY_SITE_ID: ${{ steps.channel.outputs.result }}
|
||||
with:
|
||||
publish-dir: ${{ github.workspace}}/output
|
||||
production-deploy: true
|
||||
deploy-message: ${{ inputs.build-title }}
|
||||
107
.github/workflows/release.yml
vendored
@@ -1,107 +0,0 @@
|
||||
name: Release
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
flavor:
|
||||
description: Build Flavour
|
||||
required: true
|
||||
default: alpha
|
||||
type: choice
|
||||
options:
|
||||
- alpha
|
||||
- beta
|
||||
- production
|
||||
|
||||
jobs:
|
||||
cancel:
|
||||
name: Cancel Previous Runs
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Cancel Workflow Action
|
||||
uses: styfle/cancel-workflow-action@0.9.1
|
||||
with:
|
||||
access_token: ${{ github.token }}
|
||||
|
||||
prepare:
|
||||
name: Prepare
|
||||
needs: [ cancel ]
|
||||
uses: JagandeepBrar/LunaSea/.github/workflows/prepare.yml@master
|
||||
with:
|
||||
ref: ${{ github.event.inputs.flavor }}
|
||||
|
||||
generate_files:
|
||||
name: Generate
|
||||
needs: [ prepare ]
|
||||
uses: JagandeepBrar/LunaSea/.github/workflows/generate_files.yml@master
|
||||
secrets:
|
||||
FIREBASE_OPTIONS: ${{ secrets.FIREBASE_OPTIONS }}
|
||||
|
||||
validate:
|
||||
name: Validate
|
||||
needs: [ generate_files ]
|
||||
uses: JagandeepBrar/LunaSea/.github/workflows/validate.yml@master
|
||||
secrets:
|
||||
FIREBASE_OPTIONS: ${{ secrets.FIREBASE_OPTIONS }}
|
||||
|
||||
android:
|
||||
name: Android
|
||||
needs: [ prepare, validate ]
|
||||
uses: JagandeepBrar/LunaSea/.github/workflows/release_android.yml@master
|
||||
with:
|
||||
flavor: ${{ needs.prepare.outputs.flavor }}
|
||||
track: ${{ needs.prepare.outputs.track }}
|
||||
secrets:
|
||||
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
|
||||
FIREBASE_OPTIONS: ${{ secrets.FIREBASE_OPTIONS }}
|
||||
GOOGLE_PLAY_API: ${{ secrets.GOOGLE_PLAY_API }}
|
||||
KEY_JKS: ${{ secrets.KEY_JKS }}
|
||||
KEY_PROPERTIES: ${{ secrets.KEY_PROPERTIES }}
|
||||
|
||||
ios:
|
||||
name: iOS
|
||||
needs: [ prepare, validate ]
|
||||
uses: JagandeepBrar/LunaSea/.github/workflows/release_ios.yml@master
|
||||
with:
|
||||
flavor: ${{ needs.prepare.outputs.flavor }}
|
||||
track: ${{ needs.prepare.outputs.track }}
|
||||
secrets:
|
||||
APPLE_ID: ${{ secrets.APPLE_ID }}
|
||||
APPLE_ITC_TEAM_ID: ${{ secrets.APPLE_ITC_TEAM_ID }}
|
||||
APPLE_STORE_CONNECT_ISSUER_ID: ${{ secrets.APPLE_STORE_CONNECT_ISSUER_ID }}
|
||||
APPLE_STORE_CONNECT_KEY: ${{ secrets.APPLE_STORE_CONNECT_KEY }}
|
||||
APPLE_STORE_CONNECT_KEY_FILEPATH: ${{ secrets.APPLE_STORE_CONNECT_KEY_FILEPATH }}
|
||||
APPLE_STORE_CONNECT_KEY_ID: ${{ secrets.APPLE_STORE_CONNECT_KEY_ID }}
|
||||
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
|
||||
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
|
||||
FIREBASE_OPTIONS: ${{ secrets.FIREBASE_OPTIONS }}
|
||||
GOOGLE_SERVICE_INFO_PLIST: ${{ secrets.GOOGLE_SERVICE_INFO_PLIST }}
|
||||
MATCH_KEYCHAIN_NAME: ${{ secrets.MATCH_KEYCHAIN_NAME }}
|
||||
MATCH_KEYCHAIN_PASSWORD: ${{ secrets.MATCH_KEYCHAIN_PASSWORD }}
|
||||
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
|
||||
MATCH_SSH_PRIVATE_KEY: ${{ secrets.MATCH_SSH_PRIVATE_KEY }}
|
||||
|
||||
macos:
|
||||
name: macOS
|
||||
needs: [ prepare, validate ]
|
||||
uses: JagandeepBrar/LunaSea/.github/workflows/release_macos.yml@master
|
||||
with:
|
||||
flavor: ${{ needs.prepare.outputs.flavor }}
|
||||
track: ${{ needs.prepare.outputs.track }}
|
||||
secrets:
|
||||
APPLE_ID: ${{ secrets.APPLE_ID }}
|
||||
APPLE_ITC_TEAM_ID: ${{ secrets.APPLE_ITC_TEAM_ID }}
|
||||
APPLE_STORE_CONNECT_ISSUER_ID: ${{ secrets.APPLE_STORE_CONNECT_ISSUER_ID }}
|
||||
APPLE_STORE_CONNECT_KEY: ${{ secrets.APPLE_STORE_CONNECT_KEY }}
|
||||
APPLE_STORE_CONNECT_KEY_FILEPATH: ${{ secrets.APPLE_STORE_CONNECT_KEY_FILEPATH }}
|
||||
APPLE_STORE_CONNECT_KEY_ID: ${{ secrets.APPLE_STORE_CONNECT_KEY_ID }}
|
||||
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
|
||||
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
|
||||
FIREBASE_OPTIONS: ${{ secrets.FIREBASE_OPTIONS }}
|
||||
MATCH_KEYCHAIN_NAME: ${{ secrets.MATCH_KEYCHAIN_NAME }}
|
||||
MATCH_KEYCHAIN_PASSWORD: ${{ secrets.MATCH_KEYCHAIN_PASSWORD }}
|
||||
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
|
||||
MATCH_SSH_PRIVATE_KEY: ${{ secrets.MATCH_SSH_PRIVATE_KEY }}
|
||||
146
.github/workflows/release_android.yml
vendored
@@ -1,146 +0,0 @@
|
||||
name: '[Release] Android'
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
flavor:
|
||||
required: true
|
||||
type: string
|
||||
track:
|
||||
required: true
|
||||
type: string
|
||||
|
||||
secrets:
|
||||
DISCORD_WEBHOOK:
|
||||
required: true
|
||||
FIREBASE_OPTIONS:
|
||||
required: true
|
||||
GOOGLE_PLAY_API:
|
||||
required: true
|
||||
KEY_JKS:
|
||||
required: true
|
||||
KEY_PROPERTIES:
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download Source Files
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: lib-${{ github.sha }}
|
||||
path: ${{ github.workspace }}/lib
|
||||
|
||||
- name: Download Localization Files
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: localization-${{ github.sha }}
|
||||
path: ${{ github.workspace }}/assets/localization
|
||||
|
||||
- name: Install Secrets
|
||||
working-directory: ${{ github.workspace }}
|
||||
run: |
|
||||
echo ${{ secrets.FIREBASE_OPTIONS }} | base64 --decode > lib/firebase_options.dart
|
||||
echo ${{ secrets.KEY_JKS }} | base64 --decode > android/key.jks
|
||||
echo ${{ secrets.KEY_PROPERTIES }} | base64 --decode > android/key.properties
|
||||
|
||||
- name: Install Ruby
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
bundler-cache: true
|
||||
|
||||
- name: Install Java
|
||||
uses: actions/setup-java@v2
|
||||
with:
|
||||
distribution: zulu
|
||||
java-version: 11
|
||||
|
||||
- name: Install Flutter
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
channel: stable
|
||||
cache: true
|
||||
cache-key: ${{ github.sha }}
|
||||
|
||||
- name: Setup Flutter
|
||||
working-directory: ${{ github.workspace }}
|
||||
run: |
|
||||
flutter pub get
|
||||
|
||||
- name: Run Fastlane
|
||||
working-directory: ${{ github.workspace }}/android
|
||||
env:
|
||||
SUPPLY_JSON_KEY: ${{ github.workspace }}/.fastlane-android-auth.json
|
||||
run: |
|
||||
bundle install
|
||||
bundle exec fastlane build
|
||||
|
||||
- name: Upload App Bundle Artifact
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: android-${{ inputs.flavor }}-${{ github.sha }}
|
||||
path: ${{ github.workspace }}/build/app/outputs/bundle/release/app-release.aab
|
||||
|
||||
- name: Send Discord Message
|
||||
uses: sarisia/actions-status-discord@v1
|
||||
if: always()
|
||||
env:
|
||||
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
|
||||
with:
|
||||
title: '`[${{ inputs.track }}]` Android Build'
|
||||
description: android-${{ inputs.flavor }}-${{ github.sha }}
|
||||
|
||||
deploy:
|
||||
name: Deploy
|
||||
runs-on: ubuntu-latest
|
||||
needs: [ build ]
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Download App Package Artifact
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: android-${{ inputs.flavor }}-${{ github.sha }}
|
||||
path: ${{ github.workspace }}
|
||||
|
||||
- name: Install Secret Keys
|
||||
working-directory: ${{ github.workspace }}
|
||||
run: |
|
||||
echo ${{ secrets.GOOGLE_PLAY_API }} | base64 --decode > .fastlane-android-auth.json
|
||||
|
||||
- name: Install Ruby
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
bundler-cache: true
|
||||
|
||||
- name: Deploy to Google Play Store
|
||||
working-directory: ${{ github.workspace }}/android
|
||||
env:
|
||||
SUPPLY_JSON_KEY: ${{ github.workspace }}/.fastlane-android-auth.json
|
||||
run: |
|
||||
bundle install
|
||||
bundle exec fastlane deploy track:${{ inputs.flavor }} aab:${{ github.workspace }}/app-release.aab version_name:${{ github.sha }}
|
||||
|
||||
- name: Tag Deployment
|
||||
uses: richardsimko/update-tag@v1
|
||||
with:
|
||||
tag_name: 'android-${{ inputs.flavor }}'
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ github.token }}
|
||||
|
||||
- name: Send Discord Message
|
||||
uses: sarisia/actions-status-discord@v1
|
||||
if: always()
|
||||
env:
|
||||
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
|
||||
with:
|
||||
title: '`[${{ inputs.track }}]` Android Deployment'
|
||||
description: android-${{ inputs.flavor }}-${{ github.sha }}
|
||||
182
.github/workflows/release_ios.yml
vendored
@@ -1,182 +0,0 @@
|
||||
name: '[Release] iOS'
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
flavor:
|
||||
required: true
|
||||
type: string
|
||||
track:
|
||||
required: true
|
||||
type: string
|
||||
|
||||
secrets:
|
||||
APPLE_ID:
|
||||
required: true
|
||||
APPLE_ITC_TEAM_ID:
|
||||
required: true
|
||||
APPLE_STORE_CONNECT_ISSUER_ID:
|
||||
required: true
|
||||
APPLE_STORE_CONNECT_KEY:
|
||||
required: true
|
||||
APPLE_STORE_CONNECT_KEY_FILEPATH:
|
||||
required: true
|
||||
APPLE_STORE_CONNECT_KEY_ID:
|
||||
required: true
|
||||
APPLE_TEAM_ID:
|
||||
required: true
|
||||
DISCORD_WEBHOOK:
|
||||
required: true
|
||||
FIREBASE_OPTIONS:
|
||||
required: true
|
||||
GOOGLE_SERVICE_INFO_PLIST:
|
||||
required: true
|
||||
MATCH_KEYCHAIN_NAME:
|
||||
required: true
|
||||
MATCH_KEYCHAIN_PASSWORD:
|
||||
required: true
|
||||
MATCH_PASSWORD:
|
||||
required: true
|
||||
MATCH_SSH_PRIVATE_KEY:
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download Source Files
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: lib-${{ github.sha }}
|
||||
path: ${{ github.workspace }}/lib
|
||||
|
||||
- name: Download Localization Files
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: localization-${{ github.sha }}
|
||||
path: ${{ github.workspace }}/assets/localization
|
||||
|
||||
- name: Select Xcode Version
|
||||
uses: maxim-lobanov/setup-xcode@v1
|
||||
with:
|
||||
xcode-version: latest-stable
|
||||
|
||||
- name: Install Secrets
|
||||
working-directory: ${{ github.workspace }}
|
||||
run: |
|
||||
echo ${{ secrets.GOOGLE_SERVICE_INFO_PLIST }} | base64 --decode > ios/GoogleService-Info.plist
|
||||
echo ${{ secrets.FIREBASE_OPTIONS }} | base64 --decode > lib/firebase_options.dart
|
||||
|
||||
- name: Setup SSH Agent
|
||||
uses: webfactory/ssh-agent@v0.5.4
|
||||
with:
|
||||
ssh-private-key: ${{ secrets.MATCH_SSH_PRIVATE_KEY }}
|
||||
|
||||
- name: Install Ruby
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
bundler-cache: true
|
||||
|
||||
- name: Install Flutter
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
channel: stable
|
||||
cache: true
|
||||
cache-key: ${{ github.sha }}
|
||||
|
||||
- name: Setup Flutter
|
||||
working-directory: ${{ github.workspace }}
|
||||
run: |
|
||||
flutter pub get
|
||||
|
||||
- name: Install Pods
|
||||
working-directory: ${{ github.workspace }}/ios
|
||||
run: |
|
||||
pod install --repo-update
|
||||
|
||||
- name: Run Fastlane
|
||||
working-directory: ${{ github.workspace }}/ios
|
||||
env:
|
||||
APPLE_ID: ${{ secrets.APPLE_ID }}
|
||||
APPLE_ITC_TEAM_ID: ${{ secrets.APPLE_ITC_TEAM_ID }}
|
||||
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
|
||||
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
|
||||
MATCH_KEYCHAIN_NAME: ${{ secrets.MATCH_KEYCHAIN_NAME }}
|
||||
MATCH_KEYCHAIN_PASSWORD: ${{ secrets.MATCH_KEYCHAIN_PASSWORD }}
|
||||
run: |
|
||||
bundle install
|
||||
bundle exec fastlane build
|
||||
|
||||
- name: Upload App Package Artifact
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: ios-${{ inputs.flavor }}-${{ github.sha }}
|
||||
path: ${{ github.workspace }}/ios/Runner.ipa
|
||||
|
||||
- name: Send Discord Message
|
||||
uses: sarisia/actions-status-discord@v1
|
||||
if: always()
|
||||
env:
|
||||
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
|
||||
with:
|
||||
title: '`[${{ inputs.track }}]` iOS Build'
|
||||
description: ios-${{ inputs.flavor }}-${{ github.sha }}
|
||||
|
||||
deploy:
|
||||
name: Deploy
|
||||
runs-on: macos-latest
|
||||
needs: [ build ]
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Download App Package Artifact
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: ios-${{ inputs.flavor }}-${{ github.sha }}
|
||||
path: ${{ github.workspace }}
|
||||
|
||||
- name: Install Secret Keys
|
||||
working-directory: ${{ github.workspace }}
|
||||
run: |
|
||||
echo ${{ secrets.APPLE_STORE_CONNECT_KEY }} | base64 --decode > ios/${{ secrets.APPLE_STORE_CONNECT_KEY_FILEPATH }}
|
||||
|
||||
- name: Install Ruby
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
bundler-cache: true
|
||||
|
||||
- name: Deploy to App Store Connect
|
||||
working-directory: ${{ github.workspace }}/ios
|
||||
env:
|
||||
APPLE_ID: ${{ secrets.APPLE_ID }}
|
||||
APPLE_ITC_TEAM_ID: ${{ secrets.APPLE_ITC_TEAM_ID }}
|
||||
APPLE_STORE_CONNECT_ISSUER_ID: ${{ secrets.APPLE_STORE_CONNECT_ISSUER_ID }}
|
||||
APPLE_STORE_CONNECT_KEY_FILEPATH: ${{ secrets.APPLE_STORE_CONNECT_KEY_FILEPATH }}
|
||||
APPLE_STORE_CONNECT_KEY_ID: ${{ secrets.APPLE_STORE_CONNECT_KEY_ID }}
|
||||
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
|
||||
run: |
|
||||
bundle install
|
||||
bundle exec fastlane deploy groups:${{ inputs.flavor }} ipa:${{ github.workspace }}/Runner.ipa
|
||||
|
||||
- name: Tag Deployment
|
||||
uses: richardsimko/update-tag@v1
|
||||
with:
|
||||
tag_name: 'ios-${{ inputs.flavor }}'
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ github.token }}
|
||||
|
||||
- name: Send Discord Message
|
||||
uses: sarisia/actions-status-discord@v1
|
||||
if: always()
|
||||
env:
|
||||
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
|
||||
with:
|
||||
title: '`[${{ inputs.track }}]` iOS Deployment'
|
||||
description: ios-${{ inputs.flavor }}-${{ github.sha }}
|
||||
180
.github/workflows/release_macos.yml
vendored
@@ -1,180 +0,0 @@
|
||||
name: '[Release] macOS'
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
flavor:
|
||||
required: true
|
||||
type: string
|
||||
track:
|
||||
required: true
|
||||
type: string
|
||||
|
||||
secrets:
|
||||
APPLE_ID:
|
||||
required: true
|
||||
APPLE_ITC_TEAM_ID:
|
||||
required: true
|
||||
APPLE_STORE_CONNECT_ISSUER_ID:
|
||||
required: true
|
||||
APPLE_STORE_CONNECT_KEY:
|
||||
required: true
|
||||
APPLE_STORE_CONNECT_KEY_FILEPATH:
|
||||
required: true
|
||||
APPLE_STORE_CONNECT_KEY_ID:
|
||||
required: true
|
||||
APPLE_TEAM_ID:
|
||||
required: true
|
||||
DISCORD_WEBHOOK:
|
||||
required: true
|
||||
FIREBASE_OPTIONS:
|
||||
required: true
|
||||
MATCH_KEYCHAIN_NAME:
|
||||
required: true
|
||||
MATCH_KEYCHAIN_PASSWORD:
|
||||
required: true
|
||||
MATCH_PASSWORD:
|
||||
required: true
|
||||
MATCH_SSH_PRIVATE_KEY:
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download Source Files
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: lib-${{ github.sha }}
|
||||
path: ${{ github.workspace }}/lib
|
||||
|
||||
- name: Download Localization Files
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: localization-${{ github.sha }}
|
||||
path: ${{ github.workspace }}/assets/localization
|
||||
|
||||
- name: Select Xcode Version
|
||||
uses: maxim-lobanov/setup-xcode@v1
|
||||
with:
|
||||
xcode-version: latest-stable
|
||||
|
||||
- name: Install Secrets
|
||||
working-directory: ${{ github.workspace }}
|
||||
run: |
|
||||
echo ${{ secrets.FIREBASE_OPTIONS }} | base64 --decode > lib/firebase_options.dart
|
||||
|
||||
- name: Setup SSH Agent
|
||||
uses: webfactory/ssh-agent@v0.5.4
|
||||
with:
|
||||
ssh-private-key: ${{ secrets.MATCH_SSH_PRIVATE_KEY }}
|
||||
|
||||
- name: Install Ruby
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
bundler-cache: true
|
||||
|
||||
- name: Install Flutter
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
channel: stable
|
||||
cache: true
|
||||
cache-key: ${{ github.sha }}
|
||||
|
||||
- name: Setup Flutter
|
||||
working-directory: ${{ github.workspace }}
|
||||
run: |
|
||||
flutter config --enable-macos-desktop
|
||||
flutter pub get
|
||||
|
||||
- name: Install Pods
|
||||
working-directory: ${{ github.workspace }}/macos
|
||||
run: |
|
||||
pod install --repo-update
|
||||
|
||||
- name: Run Fastlane
|
||||
working-directory: ${{ github.workspace }}/macos
|
||||
env:
|
||||
APPLE_ID: ${{ secrets.APPLE_ID }}
|
||||
APPLE_ITC_TEAM_ID: ${{ secrets.APPLE_ITC_TEAM_ID }}
|
||||
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
|
||||
MATCH_KEYCHAIN_NAME: ${{ secrets.MATCH_KEYCHAIN_NAME }}
|
||||
MATCH_KEYCHAIN_PASSWORD: ${{ secrets.MATCH_KEYCHAIN_PASSWORD }}
|
||||
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
|
||||
run: |
|
||||
bundle install
|
||||
bundle exec fastlane build
|
||||
|
||||
- name: Upload App Package Artifact
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: macos-${{ inputs.flavor }}-${{ github.sha }}
|
||||
path: ${{ github.workspace }}/macos/LunaSea.pkg
|
||||
|
||||
- name: Send Discord Message
|
||||
uses: sarisia/actions-status-discord@v1
|
||||
if: always()
|
||||
env:
|
||||
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
|
||||
with:
|
||||
title: '`[${{ inputs.track }}]` macOS Build'
|
||||
description: macos-${{ inputs.flavor }}-${{ github.sha }}
|
||||
|
||||
deploy:
|
||||
name: Deploy
|
||||
runs-on: macos-latest
|
||||
needs: [ build ]
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Download App Package Artifact
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: macos-${{ inputs.flavor }}-${{ github.sha }}
|
||||
path: ${{ github.workspace }}
|
||||
|
||||
- name: Install Secret Keys
|
||||
working-directory: ${{ github.workspace }}
|
||||
run: |
|
||||
echo ${{ secrets.APPLE_STORE_CONNECT_KEY }} | base64 --decode > macos/${{ secrets.APPLE_STORE_CONNECT_KEY_FILEPATH }}
|
||||
|
||||
- name: Install Ruby
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
bundler-cache: true
|
||||
|
||||
- name: Deploy to App Store Connect
|
||||
working-directory: ${{ github.workspace }}/macos
|
||||
env:
|
||||
APPLE_ID: ${{ secrets.APPLE_ID }}
|
||||
APPLE_ITC_TEAM_ID: ${{ secrets.APPLE_ITC_TEAM_ID }}
|
||||
APPLE_STORE_CONNECT_ISSUER_ID: ${{ secrets.APPLE_STORE_CONNECT_ISSUER_ID }}
|
||||
APPLE_STORE_CONNECT_KEY_FILEPATH: ${{ secrets.APPLE_STORE_CONNECT_KEY_FILEPATH }}
|
||||
APPLE_STORE_CONNECT_KEY_ID: ${{ secrets.APPLE_STORE_CONNECT_KEY_ID }}
|
||||
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
|
||||
run: |
|
||||
bundle install
|
||||
bundle exec fastlane deploy groups:${{ inputs.flavor }} pkg:${{ github.workspace }}/LunaSea.pkg
|
||||
|
||||
- name: Tag Deployment
|
||||
uses: richardsimko/update-tag@v1
|
||||
with:
|
||||
tag_name: 'macos-${{ inputs.flavor }}'
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ github.token }}
|
||||
|
||||
- name: Send Discord Message
|
||||
uses: sarisia/actions-status-discord@v1
|
||||
if: always()
|
||||
env:
|
||||
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
|
||||
with:
|
||||
title: '`[${{ inputs.track }}]` macOS Deployment'
|
||||
description: macos-${{ inputs.flavor }}-${{ github.sha }}
|
||||
35
.github/workflows/validate.yml
vendored
@@ -3,7 +3,7 @@ name: Validate
|
||||
on:
|
||||
workflow_call:
|
||||
secrets:
|
||||
FIREBASE_OPTIONS:
|
||||
FIREBASE_TOKEN:
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
@@ -11,34 +11,17 @@ jobs:
|
||||
name: Analyze
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Download Source Files
|
||||
uses: actions/download-artifact@v2
|
||||
- name: Setup Environment
|
||||
uses: JagandeepBrar/LunaSea/.github/actions/prepare_for_build@master
|
||||
with:
|
||||
name: lib-${{ github.sha }}
|
||||
path: ${{ github.workspace }}/lib
|
||||
|
||||
- name: Install Secrets
|
||||
working-directory: ${{ github.workspace }}
|
||||
run: |
|
||||
echo ${{ secrets.FIREBASE_OPTIONS }} | base64 --decode > lib/firebase_options.dart
|
||||
|
||||
- name: Install Flutter
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
channel: stable
|
||||
cache: true
|
||||
cache-key: ${{ github.sha }}
|
||||
firebase-token: ${{ secrets.FIREBASE_TOKEN }}
|
||||
platform: test
|
||||
|
||||
- name: Setup Flutter
|
||||
working-directory: ${{ github.workspace }}
|
||||
run: |
|
||||
flutter pub get
|
||||
|
||||
- name: Analyze
|
||||
- name: Analyze Release
|
||||
uses: invertase/github-action-dart-analyzer@v1
|
||||
with:
|
||||
fatal-infos: false
|
||||
fatal-warnings: true
|
||||
|
||||
- name: Test Release
|
||||
run: flutter test
|
||||
|
||||
30
.gitignore
vendored
@@ -42,15 +42,14 @@ ios/Flutter/.last_build_id
|
||||
output/
|
||||
*.packages
|
||||
coverage/
|
||||
lib/system/environment.dart
|
||||
|
||||
# XCode Build Artifacts
|
||||
ios/build/
|
||||
ios/Runner.app.dSYM.zip
|
||||
ios/Runner.ipa
|
||||
|
||||
macos/LunaSea.app
|
||||
macos/LunaSea.app.dSYM.zip
|
||||
macos/LunaSea.pkg
|
||||
macos/LunaSea.app.zip
|
||||
|
||||
# Fastlane
|
||||
/android/fastlane/report.xml
|
||||
@@ -59,18 +58,29 @@ macos/LunaSea.pkg
|
||||
/android/fastlane/Preview.html
|
||||
/ios/fastlane/Preview.html
|
||||
/macos/fastlane/Preview.html
|
||||
/android/fastlane/metadata/android/en-CA/images
|
||||
/ios/fastlane/screenshots
|
||||
/ios/fastlane/metadata/review_information
|
||||
/macos/fastlane/screenshots
|
||||
/macos/fastlane/metadata/review_information
|
||||
|
||||
# Keys & Service Accounts
|
||||
keys/
|
||||
android/key.jks
|
||||
android/key.properties
|
||||
ios/GoogleService-Info.plist
|
||||
lib/firebase_options.dart
|
||||
|
||||
# Firebase
|
||||
android/firebase_app_id_file.json
|
||||
android/app/google-services.json
|
||||
ios/firebase_app_id_file.json
|
||||
ios/Runner/GoogleService-Info.plist
|
||||
macos/firebase_app_id_file.json
|
||||
macos/Runner/GoogleService-Info.plist
|
||||
|
||||
# Node Dependency directories
|
||||
node_modules/
|
||||
jspm_packages/
|
||||
|
||||
# Artifacts
|
||||
output/
|
||||
*.apk
|
||||
*.aab
|
||||
*.ipa
|
||||
*.dmg
|
||||
*.pkg
|
||||
*.snap
|
||||
|
||||
24
.metadata
@@ -1,10 +1,30 @@
|
||||
# This file tracks properties of this Flutter project.
|
||||
# Used by Flutter tool to assess capabilities and perform upgrades etc.
|
||||
#
|
||||
# This file should be version controlled and should not be manually edited.
|
||||
# This file should be version controlled.
|
||||
|
||||
version:
|
||||
revision: 27321ebbad34b0a3fafe99fac037102196d655ff
|
||||
revision: ffccd96b62ee8cec7740dab303538c5fc26ac543
|
||||
channel: stable
|
||||
|
||||
project_type: app
|
||||
|
||||
# Tracks metadata for the flutter migrate command
|
||||
migration:
|
||||
platforms:
|
||||
- platform: root
|
||||
create_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543
|
||||
base_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543
|
||||
- platform: windows
|
||||
create_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543
|
||||
base_revision: ffccd96b62ee8cec7740dab303538c5fc26ac543
|
||||
|
||||
# User provided section
|
||||
|
||||
# List of Local paths (relative to this file) that should be
|
||||
# ignored by the migrate tool.
|
||||
#
|
||||
# Files that are not part of the templates will be ignored by default.
|
||||
unmanaged_files:
|
||||
- 'lib/main.dart'
|
||||
- 'ios/Runner.xcodeproj/project.pbxproj'
|
||||
|
||||
@@ -1 +1 @@
|
||||
2.7.5
|
||||
2.7.6
|
||||
@@ -24,5 +24,5 @@
|
||||
"section": "Tweaks"
|
||||
}
|
||||
],
|
||||
"releaseCommitMessageFormat": "chore(release): v{{currentTag}} [skip ci]"
|
||||
"releaseCommitMessageFormat": "release: v{{currentTag}}\n\n[skip ci]"
|
||||
}
|
||||
25
.vscode/cspell.json
vendored
@@ -20,30 +20,55 @@
|
||||
"appbundle",
|
||||
"autofocused",
|
||||
"blackbox",
|
||||
"CanvasKit",
|
||||
"cocoapods",
|
||||
"codecov",
|
||||
"colours",
|
||||
"deinitialize",
|
||||
"deintegrate",
|
||||
"Discogs",
|
||||
"emdash",
|
||||
"encrypter",
|
||||
"fanart",
|
||||
"fastlane",
|
||||
"Firestore",
|
||||
"Fluro",
|
||||
"Gitbook",
|
||||
"hardlink",
|
||||
"Hellonext",
|
||||
"IMDb",
|
||||
"keychain",
|
||||
"leechers",
|
||||
"Letterboxd",
|
||||
"Lidarr",
|
||||
"LunaBox",
|
||||
"LunaConfig",
|
||||
"lunasea",
|
||||
"LunaTable",
|
||||
"microtask",
|
||||
"msix",
|
||||
"Newznab",
|
||||
"NZBGet",
|
||||
"Overseerr",
|
||||
"Plex",
|
||||
"podfile",
|
||||
"prefill",
|
||||
"Radarr",
|
||||
"Riverpod",
|
||||
"roboto",
|
||||
"SABnzbd",
|
||||
"scrollview",
|
||||
"sksl",
|
||||
"snapcraft",
|
||||
"Sonarr",
|
||||
"stickied",
|
||||
"subheaders",
|
||||
"subroutes",
|
||||
"Tautulli",
|
||||
"TestFlight",
|
||||
"Trakt",
|
||||
"typescale",
|
||||
"unencrypted",
|
||||
"unignore",
|
||||
"Weblate",
|
||||
"worktree"
|
||||
|
||||
34
.vscode/launch.json
vendored
@@ -1,13 +1,23 @@
|
||||
{
|
||||
// Use IntelliSense to learn about possible attributes.
|
||||
// Hover to view descriptions of existing attributes.
|
||||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Debug",
|
||||
"request": "launch",
|
||||
"type": "dart"
|
||||
}
|
||||
]
|
||||
}
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Debug",
|
||||
"request": "launch",
|
||||
"type": "dart",
|
||||
"flutterMode": "debug"
|
||||
},
|
||||
{
|
||||
"name": "Profile",
|
||||
"request": "launch",
|
||||
"type": "dart",
|
||||
"flutterMode": "profile"
|
||||
},
|
||||
{
|
||||
"name": "Release",
|
||||
"request": "launch",
|
||||
"type": "dart",
|
||||
"flutterMode": "release"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
2
.vscode/settings.json
vendored
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"yaml.schemas": {
|
||||
"https://json.schemastore.org/github-workflow.json": "file:///Users/jagandeepbrar/Git/LunaSea/.github/workflows/deploy.yml"
|
||||
"https://json.schemastore.org/github-issue-config.json": "file:///Users/jagandeepbrar/Git/LunaSea/.github/ISSUE_TEMPLATE/config.yml"
|
||||
}
|
||||
}
|
||||
|
||||
935
CHANGELOG.md
@@ -2,7 +2,201 @@
|
||||
|
||||
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
||||
|
||||
## [10.0.0](https://github.com/JagandeepBrar/LunaSea/compare/v6.0.1...v10.0.0) (2022-03-12)
|
||||
### [10.2.1](https://github.com/JagandeepBrar/LunaSea/compare/v10.2.0...v10.2.1) (2022-11-06)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **-arr:** button to open indexer information page ([bccd1a4](https://github.com/JagandeepBrar/LunaSea/commit/bccd1a43c42b349901137f8fc605f393b51d541a))
|
||||
* **calendar:** remove option to show previous days in schedule view, now always shows them ([3ac2c5d](https://github.com/JagandeepBrar/LunaSea/commit/3ac2c5d791f94208a4004d161bb046c24b698345))
|
||||
* **calendar:** scroll to selected date when switching from calendar to schedule view ([f1226e5](https://github.com/JagandeepBrar/LunaSea/commit/f1226e563899cfc0950865a9734448d4e00601b9))
|
||||
* launch recovery mode on bootstrap failure ([c062b3d](https://github.com/JagandeepBrar/LunaSea/commit/c062b3d786e55bc3ba7fe767dd946d73efbef64f))
|
||||
* **lidarr:** add MusicBrainz to links ([c76418d](https://github.com/JagandeepBrar/LunaSea/commit/c76418d26f1a5f52f5cb1e46951f1cf6726508c2))
|
||||
* **modules:** ability to set the boot module ([3dd087e](https://github.com/JagandeepBrar/LunaSea/commit/3dd087e361619889057a0b037b1eef35157a0988))
|
||||
* **radarr:** support moving files when editing the storage path ([c9bd02b](https://github.com/JagandeepBrar/LunaSea/commit/c9bd02b75086579f60ad8987c42ab217c12f6d43))
|
||||
* **web:** support local filesystem read/save actions ([7d437d5](https://github.com/JagandeepBrar/LunaSea/commit/7d437d5c3a34a8681c372570fc366e869f0b2090))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **android:** apply Google Play Services plugin during gradle build ([71f597b](https://github.com/JagandeepBrar/LunaSea/commit/71f597baa7c23102b711c3ca3c1ea5b2f8e1f5e9))
|
||||
* **android:** revert applying Google Play Services plugin during gradle build ([250a494](https://github.com/JagandeepBrar/LunaSea/commit/250a49490333f4de726226dc4aa15a681f32a70c))
|
||||
* **android:** support Android 13 filesystem access ([25e0d05](https://github.com/JagandeepBrar/LunaSea/commit/25e0d051422b399de8c90e0fc71e57349e3355b7))
|
||||
* **android:** utilize Kotlin v1.7.20 & Gradle v7.1.2 ([b7ceebc](https://github.com/JagandeepBrar/LunaSea/commit/b7ceebcb679dbca935b6a1810c0c67a14002e358))
|
||||
* **backup:** edge-case where backup/restore would fail ([f3931c6](https://github.com/JagandeepBrar/LunaSea/commit/f3931c6b08025a70920039e5cbbc9cf7120c0b36))
|
||||
* **calendar:** label unreleased movies as unreleased instead of missing ([70ed750](https://github.com/JagandeepBrar/LunaSea/commit/70ed750652ff419e6fed659a0785adc5064654e7))
|
||||
* **calendar:** start to current date when past days are enabled ([6eff6c9](https://github.com/JagandeepBrar/LunaSea/commit/6eff6c902cd7bcd523d83be09034098234679a79))
|
||||
* **firebase:** inject service file for older OS versions ([38f2eb4](https://github.com/JagandeepBrar/LunaSea/commit/38f2eb4cb2a8e400ce2ecb0b6f2854469c9626fc))
|
||||
* **firebase:** upgrade to Firebase v10 ([#717](https://github.com/JagandeepBrar/LunaSea/issues/717)) ([f3a3f22](https://github.com/JagandeepBrar/LunaSea/commit/f3a3f222bd56beb4e961817b18d71f01fb7c5e81))
|
||||
* **uiux:** add circular radius to linear progression bars ([d9623e9](https://github.com/JagandeepBrar/LunaSea/commit/d9623e992d2ac2039eaa4f069c739d968c921cc6))
|
||||
|
||||
|
||||
### Tweaks
|
||||
|
||||
* **settings:** consolidate appearance, network, and localization pages ([ac838f9](https://github.com/JagandeepBrar/LunaSea/commit/ac838f99a9c839ce4e36e5eae80f1100e2787dc5))
|
||||
* **uiux:** remove forced-upper case on headers ([958e6f1](https://github.com/JagandeepBrar/LunaSea/commit/958e6f156862c1092399649baa361cd955299c88))
|
||||
|
||||
## [10.2.0](https://github.com/JagandeepBrar/LunaSea/compare/v10.1.1...v10.2.0) (2022-09-22)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **-arr:** view download client queue via overlay sheet ([0c59886](https://github.com/JagandeepBrar/LunaSea/commit/0c59886657db0ed05a9d741c82689cb1272c6ad2))
|
||||
* **android:** add support for monochromatic adaptive icon ([#701](https://github.com/JagandeepBrar/LunaSea/issues/701)) ([96b2b1b](https://github.com/JagandeepBrar/LunaSea/commit/96b2b1b5b010507dd7ece3421bf02eac6ba32486))
|
||||
* **locale:** support Croatian ([a160f09](https://github.com/JagandeepBrar/LunaSea/commit/a160f0941f2e0c86d2e2fab5e01a577ceba2a8f3))
|
||||
* **logging:** integrate Sentry logging support for all platforms ([57bbb80](https://github.com/JagandeepBrar/LunaSea/commit/57bbb80a0188d3bed9ca70846a89df6a3c2c0953))
|
||||
* **logo:** add Vectorized app logos ([113b294](https://github.com/JagandeepBrar/LunaSea/commit/113b2943469464598ce07b931818c7e29c6cc63a))
|
||||
* **router:** re-implementation of routing via go_router ([1d4207a](https://github.com/JagandeepBrar/LunaSea/commit/1d4207ae5106c2a0648b77a3b3ef6508665561e8))
|
||||
* **sabnzbd:** rewrite SABnzbd API interface ([a1b736a](https://github.com/JagandeepBrar/LunaSea/commit/a1b736ae0c9bf754d913e86c69d15c27f256c413))
|
||||
* **search:** view download client queue via overlay sheet ([a6be658](https://github.com/JagandeepBrar/LunaSea/commit/a6be658164fed7dd2411a167dec6b4c53eab70f0))
|
||||
* **settings:** re-add option to disable Sentry logging ([3d0c520](https://github.com/JagandeepBrar/LunaSea/commit/3d0c5209cb3e796629817dee986634154e7ffe9e))
|
||||
* **web:** enable service worker processing of notifications ([4b41110](https://github.com/JagandeepBrar/LunaSea/commit/4b411107f74f048e6f3d571845590a5d29720ac3))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **android:** support Android 13 notification prompt ([83e8374](https://github.com/JagandeepBrar/LunaSea/commit/83e8374c33977c82096fcf8d5a4d94da5c291f8f))
|
||||
* **cache:** add type-safety to LRU cache ([7aae480](https://github.com/JagandeepBrar/LunaSea/commit/7aae4807221184dbe1d02454f73998a0458dd7f6))
|
||||
* **database:** prevent deadlock in database deletion actions ([9960124](https://github.com/JagandeepBrar/LunaSea/commit/9960124d3219e2ab72e14443a1a79a1bac6b2cd3))
|
||||
* **graphs:** support fl_chart@0.55.1 ([b812c7b](https://github.com/JagandeepBrar/LunaSea/commit/b812c7b4a12b4766e04b5d4023b45320e6b7927c))
|
||||
* **images:** validate image availability before fading-in ([6f9e0e8](https://github.com/JagandeepBrar/LunaSea/commit/6f9e0e87ce3d02dfff7dec439a2e975585c5b986))
|
||||
* **notifications:** correctly inject service worker for notification handling ([82ef5f0](https://github.com/JagandeepBrar/LunaSea/commit/82ef5f0c529a9e30475f86f496fa63c18785e87c))
|
||||
* **notifications:** enable in-app notifications config was inversed ([3593eb3](https://github.com/JagandeepBrar/LunaSea/commit/3593eb329b38fb4a5b776cf1b165ad6f463e371b))
|
||||
* **resources:** remove feedback board resource ([d3d090e](https://github.com/JagandeepBrar/LunaSea/commit/d3d090e277f7dda7d4ef3d7808e7341cf79178fe))
|
||||
* **scrolling:** remove custom scrolling behaviour ([864082f](https://github.com/JagandeepBrar/LunaSea/commit/864082fd4045ef7dea0e0ab6a17d41ca86015fcb))
|
||||
* **settings:** show notification settings area on web ([136cda5](https://github.com/JagandeepBrar/LunaSea/commit/136cda5215ae1d44dcd898e8e8e0b1e1912b3a41))
|
||||
* **sheets:** set default overlay theme for sheets, remove bottom radius clipping ([3a5e19b](https://github.com/JagandeepBrar/LunaSea/commit/3a5e19b02c048df21bd169a0a06f1e9ae741debb))
|
||||
* **sonarr:** support Sonarr v4 API changes ([e477eca](https://github.com/JagandeepBrar/LunaSea/commit/e477ecafcce268d7de112f33711fc02a089a4206))
|
||||
* **web:** correctly register notification service worker ([579531c](https://github.com/JagandeepBrar/LunaSea/commit/579531c30a17e2c8d53d011dbecf710f42598ec8))
|
||||
|
||||
|
||||
### Tweaks
|
||||
|
||||
* **remove logos:** removes unused logo pngs ([2adfe59](https://github.com/JagandeepBrar/LunaSea/commit/2adfe59bd5cd289beb7f7c703fe26397310dbc90))
|
||||
|
||||
### [10.1.1](https://github.com/JagandeepBrar/LunaSea/compare/v10.1.0...v10.1.1) (2022-08-21)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **changelog:** do not show changelog on first boot of new installs ([52fd7fc](https://github.com/JagandeepBrar/LunaSea/commit/52fd7fca0c5076b4b98458d449a4b1f581726a52))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **config:** log restoration error after resetting the database to default ([b02fe81](https://github.com/JagandeepBrar/LunaSea/commit/b02fe81df697066be6172a7d423768490639593e))
|
||||
* **indexer:** remove LunaIndexerIcon from model definition ([cf3d9bb](https://github.com/JagandeepBrar/LunaSea/commit/cf3d9bbc17cd67f0c5e8be22b9450563046a2127))
|
||||
|
||||
## [10.1.0](https://github.com/JagandeepBrar/LunaSea/compare/v10.0.3...v10.1.0) (2022-08-21)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **calendar:** show current month in header ([925f163](https://github.com/JagandeepBrar/LunaSea/commit/925f163e1534aeb45e5b22e8254eaf391eabd79f))
|
||||
* **changelog:** prepare and show changelog on pre-release builds ([df65f53](https://github.com/JagandeepBrar/LunaSea/commit/df65f53a4b00d11abc998f681274d22d94254f14))
|
||||
* **locale:** support Vietnamese (vi) ([8b57450](https://github.com/JagandeepBrar/LunaSea/commit/8b5745044e3af64a6c9bc593a9877400ac8a2dc2))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **android:** correctly handle back-button to open drawer on applicable routes ([c91ba2c](https://github.com/JagandeepBrar/LunaSea/commit/c91ba2ce8134fdc796d0431ba1c9134908fddd91))
|
||||
* **changelog:** group changelog item rows by key feature change ([2ababbd](https://github.com/JagandeepBrar/LunaSea/commit/2ababbd1b32abd153fa73fcdfe292c7791edbf52))
|
||||
* **ci:** utilize latest standard for Snapcraft login ([aff6e2c](https://github.com/JagandeepBrar/LunaSea/commit/aff6e2ca184e9539f28dd326c06478ca2dbfee4c))
|
||||
* **database:** correctly store manually ordered module list ([8fe81d1](https://github.com/JagandeepBrar/LunaSea/commit/8fe81d11ab5c5aa484f0c2b471932d5364e6209c))
|
||||
* **database:** detect and recover from database corruption ([758756f](https://github.com/JagandeepBrar/LunaSea/commit/758756fcf2456996c7ee02be2bd523cca91c45d3))
|
||||
* **database:** fallback to defaults on null values in profile ([fb3e8e5](https://github.com/JagandeepBrar/LunaSea/commit/fb3e8e53255c457d0922505ad6c2d91f5c0fcf03))
|
||||
* **database:** safely type indexer fields and headers ([f1dcd0c](https://github.com/JagandeepBrar/LunaSea/commit/f1dcd0c36d558882bfbc7f4465ed56fac0743c55))
|
||||
* **database:** utilize stricter typing for module headers map ([d4d9816](https://github.com/JagandeepBrar/LunaSea/commit/d4d9816c945b1930ecfda0382d809a7c67839a26))
|
||||
* **database:** validate enabled profile exists on restore ([d8506ee](https://github.com/JagandeepBrar/LunaSea/commit/d8506ee2834ca6a83394c11f6d4d329f03a3647f))
|
||||
* display 0-length timestamps as "0 Minutes" instead of "Under a Minute" ([e05b17a](https://github.com/JagandeepBrar/LunaSea/commit/e05b17ae5ed35cec85ade5b910b82869cb7ad3f2))
|
||||
* **lidarr:** (history) sort list by date descending ([ad22820](https://github.com/JagandeepBrar/LunaSea/commit/ad22820d6662371d3d2bc7fbf596f86619002d20))
|
||||
* **lists:** reorderable lists could not be reordered on some platforms ([95a645c](https://github.com/JagandeepBrar/LunaSea/commit/95a645c06cf2a76231c4b8dbea87ec593961c205))
|
||||
* **locale:** create stub primary language localization assets ([18ef4cf](https://github.com/JagandeepBrar/LunaSea/commit/18ef4cf1d4032a3f9db54b5da56158ffaf9b50c8))
|
||||
* **overseerr:** issues/requests list view translation keys ([136b92b](https://github.com/JagandeepBrar/LunaSea/commit/136b92b8a7bdd5cd0ec2322444443d054df6daed))
|
||||
* **radarr:** (queue) allow loading queue list when associated movie is not found ([22bf728](https://github.com/JagandeepBrar/LunaSea/commit/22bf728a3dab6b7d76c7674cb4d97dc73e849201))
|
||||
* **sonarr:** fanart image requests not including headers ([b5bb300](https://github.com/JagandeepBrar/LunaSea/commit/b5bb300046431d8c1c26fd8ac4a26c42444f4f53))
|
||||
* **sonarr:** invalid linking to theTVDB content ([80678a7](https://github.com/JagandeepBrar/LunaSea/commit/80678a75bb871a4835d1c73934e043564d80b6b0))
|
||||
|
||||
|
||||
### Tweaks
|
||||
|
||||
* **changelog:** do not show documentation changes in in-app changelog ([2367050](https://github.com/JagandeepBrar/LunaSea/commit/2367050a66f2929d1ead17cc9191f47ddcb07f3a))
|
||||
* **core:** destructure core folder and reintegrate extensions ([5d52440](https://github.com/JagandeepBrar/LunaSea/commit/5d52440a43e4b605a8ac95bcb02b909f489ef7e2))
|
||||
* **database:** rewrite interface to key-value database ([a0eaca0](https://github.com/JagandeepBrar/LunaSea/commit/a0eaca084a399a2e249b142cb720cc50739a3f51))
|
||||
* **environment:** load environment using environment_config ([c4dd509](https://github.com/JagandeepBrar/LunaSea/commit/c4dd509e3210847c0ddba4c7982f38099228a2d6))
|
||||
* refactored in-app purchase interface ([9cb3fab](https://github.com/JagandeepBrar/LunaSea/commit/9cb3fabdf1f5fa10d65770a181ced937413642a2))
|
||||
* utilize statics and class functions for LunaModule enum ([9f3c3f7](https://github.com/JagandeepBrar/LunaSea/commit/9f3c3f779dda1b2da007abe5c2079dcfa834eb99))
|
||||
|
||||
### [10.0.3](https://github.com/JagandeepBrar/LunaSea/compare/v10.0.2...v10.0.3) (2022-05-26)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **-arr:** updated UI for viewing content links ([8b559e0](https://github.com/JagandeepBrar/LunaSea/commit/8b559e00b01305af6d1f8139a75aa25391127626))
|
||||
* **ci:** build web docker images ([73fbb10](https://github.com/JagandeepBrar/LunaSea/commit/73fbb1076ec8e951d99ad2df28a28454ca8189a1))
|
||||
* **notifications:** option to disable in-app notifications ([da0c44c](https://github.com/JagandeepBrar/LunaSea/commit/da0c44c8b1bc846acc4a1d0a4b7f1ee7c4c2e44d))
|
||||
* **settings:** ability to check for updates ([b3caf34](https://github.com/JagandeepBrar/LunaSea/commit/b3caf34074ecc72257b26d091a332e8f54a47587))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* correctly calculate age of releases in -arrs ([e35433a](https://github.com/JagandeepBrar/LunaSea/commit/e35433af314b13ff3c951eef4c99f42e460f2b28))
|
||||
* **ui:** enable interactivity on all scrollbars on all platforms ([174fa96](https://github.com/JagandeepBrar/LunaSea/commit/174fa969517b00e611534defc12ca3768348623a))
|
||||
|
||||
### [10.0.2](https://github.com/JagandeepBrar/LunaSea/compare/v10.0.1...v10.0.2) (2022-04-12)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **account:** ability to update account email and password ([5ea6269](https://github.com/JagandeepBrar/LunaSea/commit/5ea6269bca9cc21f9a3ec34ff9840ea22384b717))
|
||||
* **firebase:** allow building LunaSea without setting up Firebase [skip ci] ([d7431b1](https://github.com/JagandeepBrar/LunaSea/commit/d7431b110217ff868e662be4a34af656ca1d6515))
|
||||
* **firebase:** conditionally load Firebase depending on the platform ([91f556d](https://github.com/JagandeepBrar/LunaSea/commit/91f556d07833c9be6a4d176d663e7889361b8ec2))
|
||||
* **linux:** initial linux support ([12fab1d](https://github.com/JagandeepBrar/LunaSea/commit/12fab1d6c22104cbf18ff695b1c636cc48236126))
|
||||
* **resources:** add link to build bucket [skip ci] ([64db574](https://github.com/JagandeepBrar/LunaSea/commit/64db574155182942dabbaffba5dbf43e0cca950c))
|
||||
* **resources:** add link to information about build channels ([fb31aba](https://github.com/JagandeepBrar/LunaSea/commit/fb31aba7f9b2678736f2d9abacdbf244edd1048a))
|
||||
* **ui:** ability to set background color on LunaBlock tiles [skip ci] ([e108cfb](https://github.com/JagandeepBrar/LunaSea/commit/e108cfbac5f5bb2a1cd7404af0a331fadba85612))
|
||||
* **windows:** initial windows support ([313e05c](https://github.com/JagandeepBrar/LunaSea/commit/313e05c8f519ca0c17efbec3d0587418e712cb81))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **charts:** rollback to fl_charts@0.46.0 ([cc81ee7](https://github.com/JagandeepBrar/LunaSea/commit/cc81ee7f14adc49b84556224dfef54c735c54758))
|
||||
* **database:** write to LunaSea parent folder on Linux and Windows ([6e89796](https://github.com/JagandeepBrar/LunaSea/commit/6e89796a15622f82759a6f8f02a82b1494ea1f8d))
|
||||
* **desktop:** prevent flickering by waiting for window settings to apply ([5a2a9b7](https://github.com/JagandeepBrar/LunaSea/commit/5a2a9b780b94d27aa2005823e1a18e225970967f))
|
||||
* **desktop:** set initial and minimum window sizes ([dd30c3a](https://github.com/JagandeepBrar/LunaSea/commit/dd30c3a0a32201a6503c81685dfdbc928a4aee90))
|
||||
|
||||
|
||||
### Tweaks
|
||||
|
||||
* **flavor:** rename build flavors [skip ci] ([26cc258](https://github.com/JagandeepBrar/LunaSea/commit/26cc2585b28f17342caf034ef9ef76dad06eb474))
|
||||
* **settings:** do not show version code [skip ci] ([ac807a8](https://github.com/JagandeepBrar/LunaSea/commit/ac807a8a01993939b86baad2dcb11e7d2a73e509))
|
||||
* **ui:** remove usages of tab indentations [skip ci] ([d9e7009](https://github.com/JagandeepBrar/LunaSea/commit/d9e70090007b402d2596e09195da5324ac1aafd0))
|
||||
|
||||
### [10.0.1](https://github.com/JagandeepBrar/LunaSea/compare/v10.0.0...v10.0.1) (2022-03-25)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **config:** support retrying entering encryption password on failure ([cd9a3d2](https://github.com/JagandeepBrar/LunaSea/commit/cd9a3d295e87b7d8987e508e6c77b02c1c5290f8))
|
||||
* **filesystem:** rewrite filesystem interface for better compatibility ([4c60df5](https://github.com/JagandeepBrar/LunaSea/commit/4c60df5523b98da3a7f135bb26fa20b36ed653e9))
|
||||
* **ios:** enable landscape support on iOS devices ([f8e6760](https://github.com/JagandeepBrar/LunaSea/commit/f8e676015c26f1e33f8680043663ea4f25dbc872))
|
||||
* **web:** initial web support ([91e1fa0](https://github.com/JagandeepBrar/LunaSea/commit/91e1fa03d9fae7cf82d158f00587075b29c610ea))
|
||||
* **window_manager:** rewrite window manager to be platform-safe ([d6aed6c](https://github.com/JagandeepBrar/LunaSea/commit/d6aed6c707ad75c0a02c3a4fa496ee6d8adeb55e))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **android:** prevent multiple splash screens from appearing on Android 12 ([26523e5](https://github.com/JagandeepBrar/LunaSea/commit/26523e58ed12c8789c5c2c0df8d9f6e75e719f11))
|
||||
* **web:** set notification vapid key ([1ddcc27](https://github.com/JagandeepBrar/LunaSea/commit/1ddcc279dd6adf629a2f99939a567481e3675bd2))
|
||||
|
||||
|
||||
### Tweaks
|
||||
|
||||
* **images:** guard and fallback image cache implementation ([601d82c](https://github.com/JagandeepBrar/LunaSea/commit/601d82cf89a22890d4197d10e1b74dbe110b0755))
|
||||
* **platform:** guard usages of dart:io and dart:html for future compatibility ([c7bd62d](https://github.com/JagandeepBrar/LunaSea/commit/c7bd62de2ee5669b41e6ccbc5e706ecb237cbcac))
|
||||
* **wake_on_lan:** refactor wake on LAN support, support loading API with dart:html ([403edc1](https://github.com/JagandeepBrar/LunaSea/commit/403edc16fb8188bba9bb6dd5b60a128dc8c2b0d4))
|
||||
|
||||
## [10.0.0](https://github.com/JagandeepBrar/LunaSea/tree/v10.0.0) (2022-03-12)
|
||||
|
||||
|
||||
### Features
|
||||
@@ -34,741 +228,6 @@ All notable changes to this project will be documented in this file. See [standa
|
||||
* **modules:** remove canonical module import file [skip ci] ([0cbd61e](https://github.com/JagandeepBrar/LunaSea/commit/0cbd61eac5c8e8675b3dd5702977c99e06ca81d5))
|
||||
* **overseerr:** utilize JsonEnum generators in enum types [skip ci] ([76d530e](https://github.com/JagandeepBrar/LunaSea/commit/76d530ed0810724d9b61bb73b689d6afb23d4ebd))
|
||||
|
||||
## [6.0.1](https://github.com/JagandeepBrar/LunaSea/compare/v6.0.0...v6.0.1) (2022-01-25)
|
||||
---
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **dev:** adopt standard-version for changelog generation ([#602](https://github.com/JagandeepBrar/LunaSea/issues/602)) ([c189fb3](https://github.com/JagandeepBrar/LunaSea/commit/c189fb3632aaa84ce51b3f86cd3308e9b67fce74))
|
||||
* **development:** integrate Husky, Commitizen, and Conventional Changelog ([fd8e061](https://github.com/JagandeepBrar/LunaSea/commit/fd8e061a81ee93a2bb3476a293f116dd69e472be))
|
||||
* **env:** Load environment at build-time ([#578](https://github.com/JagandeepBrar/LunaSea/issues/578)) ([1d0f2ab](https://github.com/JagandeepBrar/LunaSea/commit/1d0f2ab3873380d178b17fce8c1854d88d179384))
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **cache:** support stash_memory 4.0.0 typings ([63572f1](https://github.com/JagandeepBrar/LunaSea/commit/63572f18b052a30487fea697f3283d3ffbdc73ce))
|
||||
* **changelog:** Do not show the changelog unless it is a production release ([5f9d590](https://github.com/JagandeepBrar/LunaSea/commit/5f9d59087ea2ed120afc4a398ba9a4754d5d8f2b))
|
||||
* **ci:** (Android) Do not send metadata on alpha build, new lane for metadata ([#562](https://github.com/JagandeepBrar/LunaSea/issues/562)) ([5093b10](https://github.com/JagandeepBrar/LunaSea/commit/5093b10d0cd3bffc1cdbed2481b1791dd1088d65))
|
||||
* **ci:** (Android) Set version name to build number ([836a5a5](https://github.com/JagandeepBrar/LunaSea/commit/836a5a5b32842bd1510f85f339d15fc79942ba42))
|
||||
* **ci:** (Android) Use commit hash for version naming ([8ada02b](https://github.com/JagandeepBrar/LunaSea/commit/8ada02bf83f2e15207c35100dd93b5eff47d7a9d))
|
||||
* **ci:** (macOS) Remove app.lunasea.lunasea.ImageNotification identifier ([95695b5](https://github.com/JagandeepBrar/LunaSea/commit/95695b53d1dd91e7be5d06c84e05fd15e7053141))
|
||||
* **ci:** (macOS) Set additional signing certificates ([3f1f727](https://github.com/JagandeepBrar/LunaSea/commit/3f1f727c8cb2865f929ad9b4557f66f1ee9a6357))
|
||||
* **ci:** (macOS) Set FLAVOR and VERSION as inputs to workflow call ([3717ba0](https://github.com/JagandeepBrar/LunaSea/commit/3717ba097490fa588cb2ced3644433647bd8a44c))
|
||||
* **ci:** Correctly cache iOS pods ([03c9a32](https://github.com/JagandeepBrar/LunaSea/commit/03c9a3254a378bfc8ac9d34c7eaafca4266bdd6c))
|
||||
* **ci:** Correctly pass secrets to worker workflows ([9fd52b2](https://github.com/JagandeepBrar/LunaSea/commit/9fd52b236f5e86061e0d1506356463561e864002))
|
||||
* **ci:** Correctly pull and set Git commit hash ([ad190b1](https://github.com/JagandeepBrar/LunaSea/commit/ad190b153ed86a2da06f8f39353d74dda06517f4))
|
||||
* **ci:** Do not pass values via environment to prevent leakage ([388cefa](https://github.com/JagandeepBrar/LunaSea/commit/388cefab0420f87dcc097db970d6b7cd76ef16f8))
|
||||
* **ci:** Fix CI instabilities ([#561](https://github.com/JagandeepBrar/LunaSea/issues/561)) ([7969f56](https://github.com/JagandeepBrar/LunaSea/commit/7969f56bf9469d217daa0c109daf07fb263906c4))
|
||||
* **ci:** Improve artifact naming legibility ([ea5e6d1](https://github.com/JagandeepBrar/LunaSea/commit/ea5e6d16aca0a1fa414e315874c8e4fd89356d5b))
|
||||
* **ci:** Lock cancel-workflow-action to v0.9.1 ([5993446](https://github.com/JagandeepBrar/LunaSea/commit/5993446c4ebf670e671cf5ef371ea0dcff93a124))
|
||||
* **ci:** Move Discord update workflow into jobs to prevent depth errors ([8ac4e38](https://github.com/JagandeepBrar/LunaSea/commit/8ac4e388a4aefcd92f2518510c76dc579fe7741d))
|
||||
* **ci:** Pass DISCORD_WEBHOOK secret to action ([0300f27](https://github.com/JagandeepBrar/LunaSea/commit/0300f277c94e877a34947fcb4f72bea7cae4c304))
|
||||
* **ci:** Pass FLAVOR and VERSION parameters as inputs instead of secrets ([851bace](https://github.com/JagandeepBrar/LunaSea/commit/851baceb9ee4cb56a167d6eb807dab4604e45f70))
|
||||
* **ci:** Remove asset caching from workflows ([9c36c43](https://github.com/JagandeepBrar/LunaSea/commit/9c36c43ba36bbc8d0035cf8a4a33474c92105b7c))
|
||||
* **ci:** Remove Blackbox ([#571](https://github.com/JagandeepBrar/LunaSea/issues/571)) ([b326730](https://github.com/JagandeepBrar/LunaSea/commit/b32673091a3c306f1791fee4dc261b842a8ea8bc))
|
||||
* **ci:** Remove option to build "develop" flavor ([d42d729](https://github.com/JagandeepBrar/LunaSea/commit/d42d729aa7095ea3bb39e7f4926cc463d6060fc7))
|
||||
* **ci:** Set as default keychain when using CI ([3834169](https://github.com/JagandeepBrar/LunaSea/commit/38341691a5c1554460bf20fba63a84fa60e7b205))
|
||||
* **ci:** Set correct Discord action ([75e26d8](https://github.com/JagandeepBrar/LunaSea/commit/75e26d8e493aba2c9c5451caa2ff6161a78e64cc))
|
||||
* **ci:** Set uses key before needs/if ([be5f6d1](https://github.com/JagandeepBrar/LunaSea/commit/be5f6d18db09e4dd8db1aad2fce078af8e4080a2))
|
||||
* **ci:** Shorten job titles ([cccfc82](https://github.com/JagandeepBrar/LunaSea/commit/cccfc82bb5f9eb70fee4d45605c1278b8ba1c519))
|
||||
* **ci:** Typo in beta workflow title ([4be37c7](https://github.com/JagandeepBrar/LunaSea/commit/4be37c71eb920e6c1056d0bf51c8f9236320b054))
|
||||
* **ci:** Use ANSI C quoting for flavor set ([7906cd7](https://github.com/JagandeepBrar/LunaSea/commit/7906cd716ce5de24db1047a4a40f90360005b561))
|
||||
* **config:** Prevent database from being unloaded from memory on clear ([cff45fc](https://github.com/JagandeepBrar/LunaSea/commit/cff45fcf461dee39168832bc9d2f71cf7a19e6c7))
|
||||
* **dart:** Delete all .g.dart generated files ([d3c8110](https://github.com/JagandeepBrar/LunaSea/commit/d3c8110c2f8df220d55dc3c7149d6a22edfd0844))
|
||||
* **dashboard:** (Calendar) Correctly type check in marker builder ([#559](https://github.com/JagandeepBrar/LunaSea/issues/559)) ([a31a70c](https://github.com/JagandeepBrar/LunaSea/commit/a31a70c58a1aec029d1e285063e2ae44bab9021e))
|
||||
* **fastlane:** Lane to prepare keychain for development ([a4c26f8](https://github.com/JagandeepBrar/LunaSea/commit/a4c26f80387177e9396aa7e846c4028e04b4271c))
|
||||
* **flavor:** Change "develop" to "internal" ([b9032cb](https://github.com/JagandeepBrar/LunaSea/commit/b9032cb486325d3f7b0f02781f37e3b4d8cb25f8))
|
||||
* **flavor:** Set default flavor to "internal" ([5fd49be](https://github.com/JagandeepBrar/LunaSea/commit/5fd49be1ff13abf24aef3898458e019a5eb795b0))
|
||||
* **macos:** Re-enable quit-on-hide ([72cbfb7](https://github.com/JagandeepBrar/LunaSea/commit/72cbfb759af034538c232a1d607ba720574cbcac))
|
||||
* **navbar:** Revert Navigation Bar to Original ([#558](https://github.com/JagandeepBrar/LunaSea/issues/558)) ([8ecc7e4](https://github.com/JagandeepBrar/LunaSea/commit/8ecc7e469bebc865026747a3744825600525c344))
|
||||
* **shaders:** Rebuild SkSL shaders ([87b0a0e](https://github.com/JagandeepBrar/LunaSea/commit/87b0a0ef8ff2eef0dbd09d1726003795f973ab6f))
|
||||
* **tautulli:** (History) Correctly pass session or reference id ([#598](https://github.com/JagandeepBrar/LunaSea/issues/598)) ([e243bf5](https://github.com/JagandeepBrar/LunaSea/commit/e243bf564f5247bea37b7c56082ff2f6694b11e2))
|
||||
* **window:** Correctly set window minimum and default window size ([#549](https://github.com/JagandeepBrar/LunaSea/issues/549)) ([8abffca](https://github.com/JagandeepBrar/LunaSea/commit/8abffca0a0cf7f43cf8089efab20065fb1c1992a))
|
||||
* **workflows:** Improve quality of alpha build workflows ([3778189](https://github.com/JagandeepBrar/LunaSea/commit/3778189eadf4318c59ea6938164d1eec85933fcc))
|
||||
|
||||
## 6.0.0
|
||||
|
||||
### Features
|
||||
|
||||
* **Dashboard:** (Calendar) Display content poster and additional information
|
||||
* **Dashboard:** (Calendar) Add option to show past days in schedule view
|
||||
* **Dashboard:** (Calendar) Use different marker colours depending on how much content is missing
|
||||
* **Lidarr:** (Add Artist) Long-press result tile to view Discogs page
|
||||
* **Lidarr:** (Add Artist) Show artist poster in result list
|
||||
* **Lidarr:** (Add Artist) Allow user to select monitoring options
|
||||
* **Lidarr:** (Add Artist) Removed toggle to use album folders
|
||||
* **Lidarr:** (Catalogue) Show artist poster in catalogue list
|
||||
* **Lidarr:** (Missing) Display album covers
|
||||
* **Notifications:** (Priority) Support time-sensitive notifications
|
||||
* **Settings:** (Account) Ability to delete your LunaSea account and all cloud data
|
||||
* **Settings:** (Configuration) Show dismissible blocks with information and links
|
||||
* **Settings:** (Network) Ability to enable TLS certificate validation
|
||||
* **Settings:** (Radarr) Ability to set default catalogue view
|
||||
* **Settings:** (Sonarr) Removed toggle to enable v3 features
|
||||
* **Settings:** (Sonarr) Ability to set default catalogue view
|
||||
* **Settings:** (Sonarr) Ability to set default filtering method
|
||||
* **Settings:** (Sonarr) Ability to set queue fetch size
|
||||
* **Settings:** (System) Ability to clear image cache
|
||||
* **Radarr:** (Catalogue) Grid view support
|
||||
* **Radarr:** (Catalogue) Expand search bar on focus
|
||||
* **Sonarr:** (Catalogue) Grid view support
|
||||
* **Sonarr:** (Catalogue) Expand search bar on focus
|
||||
* **Sonarr:** (Catalogue) Many additional sorting and filtering options
|
||||
* **Sonarr:** (Episodes) Entirely revamped details view
|
||||
* **Sonarr:** (Episodes) View media info for downloaded episodes
|
||||
* **Sonarr:** (Episodes) View history for a single episode
|
||||
* **Sonarr:** (Episodes) View active queued releases for a single episode
|
||||
* **Sonarr:** (Season Details) View history for a single season
|
||||
* **Sonarr:** (Series Details) View history for a single series
|
||||
* **Sonarr:** (History) Now an infinite scrolling list
|
||||
* **Sonarr:** (History) Tiles are now expandable tiles with much more detail
|
||||
* **Sonarr:** (Home) "History" tab has been replaced with a "More" tab
|
||||
* **Sonarr:** (Season List) Display season posters
|
||||
* **Sonarr:** (Queue) Option to set queue page size
|
||||
* **Sonarr:** (Releases) Ability to set default filtering method
|
||||
* **Sonarr:** (Releases) Now shows preferred word score
|
||||
* **System:** (Analytics) Completely removed Firebase Analytics
|
||||
* **System:** (Analytics) Completely removed Firebase Crashlytics
|
||||
* **System:** (Images) Cache fetched images to disk
|
||||
* **UI/UX:** (Icons) Added/updated brand icons for Lidarr, Sonarr, and Overseerr
|
||||
* **UI/UX:** (Tile Blocks) Allow overflowing title or body lines to be horizontally scrolled
|
||||
|
||||
### Tweaks
|
||||
|
||||
* **Dashboard:** (Modules) Always use module's brand colour for module list
|
||||
* **UI/UX:** (Drawer) Use module's brand colour for highlighted colour
|
||||
* **UI/UX:** (Drawer) Heavily reduced the size of the header area
|
||||
* **UI/UX:** (Drawer) Use the primary colour as the background colour
|
||||
* **UI/UX:** (Fonts) Normalized font sizes across the UI
|
||||
* **UI/UX:** (Icons) Ensure all icons are of the "rounded" family
|
||||
* **UI/UX:** (Icons) Replace custom icons (except branding icons) with Flutter defaults
|
||||
* **UI/UX:** (Images) Set the default image opacity to 20% (custom set values are unaffected)
|
||||
* **UI/UX:** (Tile Blocks) Heavily improved build and memory performance of tiles
|
||||
* **UI/UX:** (Tile Blocks) Improved consistency in trailing icon/text size
|
||||
* **UI/UX:** (Tile Blocks) Improved consistency of tile height, content spacing, and padding
|
||||
* **UI/UX:** (Tile Blocks) Natively draw placeholder posters for movies, series, albums, etc.
|
||||
* **UI/UX:** (Tile Blocks) Fade-in background image loads
|
||||
* **UI/UX:** (Tooltips) Added styling to match LunaSea theme
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Dashboard:** (Calendar) Only show type switcher icon when on the calendar page
|
||||
* **Lidarr:** (Artists) Safe-guard fetching of artist quality profiles
|
||||
* **Radarr:** (Add Movie) Removed ability to set PreDB or TBA minimum availability
|
||||
* **Radarr:** (Edit Movie) Removed ability to set PreDB or TBA minimum availability
|
||||
* **Radarr:** (Files) Failed to load when files have no media information
|
||||
* **Radarr:** (Releases) Negative custom word scores would be incorrectly displayed
|
||||
* **Settings:** (Calendar) Starting type would have incorrect icons
|
||||
* **Settings:** (Notifications) Overseerr would not be displayed
|
||||
* **Sonarr:** (API) Now only utilizes v3 API routes
|
||||
* **Sonarr:** (Catalogue) Missing filter would fail to load when using Sonarr v4
|
||||
* **Sonarr:** (Edit Series) Vastly speed up response time on submitting updates
|
||||
* **Sonarr:** (Missing) Air date would show in days for very old content
|
||||
* **Sonarr:** (Queue) Check monitored download status on pull to refresh
|
||||
* **Sonarr:** (Season List) Correctly calculate the available episode count
|
||||
* **System:** Update packages
|
||||
* **System:** Upgrade to Firebase SDK v8.9.0
|
||||
* **System:** TLS v1.3 is now fully supported
|
||||
* **Tautulli:** (Activity) Activity counter badge would not completely fade away
|
||||
* **Tautulli:** (Check for Updates) Checking for updates could fail in some cases
|
||||
* **UI/UX:** (Bottom Sheet) Tightly size all bottom sheets to the content
|
||||
* **UI/UX:** (List View) Make padding around the end of infinite list loaders and icons more consistent
|
||||
* **UI/UX:** (Popup Menu) Positioning could get unaligned or broken if opened in specific views
|
||||
* **UI/UX:** (Router) Slide transitions between pages could not occur on some devices
|
||||
* **UI/UX:** (Snackbar) Snackbar would not be shown in some cases
|
||||
* **UI/UX:** (Theme) Removed deprecated theme values
|
||||
|
||||
## 5.1.0
|
||||
|
||||
### Features
|
||||
|
||||
* **Dashboard:** (Modules) Show Wake on LAN tile
|
||||
* **Drawer:** Ability to customize the order of modules
|
||||
* **External Modules:** Ability to add and view external modules
|
||||
* **Performance:** Build LunaSea with pre-compiled SkSL shaders
|
||||
|
||||
### Tweaks
|
||||
|
||||
* **Dashboard:** (Calendar) Add divider between calendar and calendar entries
|
||||
* **Dashboard:** (Modules) Synchronize module ordering with drawer ordering
|
||||
* **Drawer:** Default to sorting modules alphabetically
|
||||
* **Settings:** (Configuration) Alphabetically sort the modules
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Flutter:** Update packages
|
||||
* **Flutter:** Upgrade to Firebase SDK v7.11.0
|
||||
* **Locale:** Ensure that the date formatter uses the currently set locale
|
||||
* **Radarr:** (Manual Import) Could not select movie when using Radarr v3.1.0+
|
||||
* **Search:** Indexers would not load in some cases when the headers map was null/empty
|
||||
* **Settings:** (Connection Test) Connection tests could fail unexpectedly
|
||||
* **Settings:** (Dialogs) Ensure all bulleted lists in dialogs are left aligned
|
||||
* **Sonarr:** (Edit) Grey screen could be shown when a user has no tags
|
||||
* **Sonarr:** (Edit) Grey screen could be shown when a user has no language profiles
|
||||
* **Tautulli:** (Graphs) Line chart tooltips had incorrect data
|
||||
* **UI/UX:** Popup menus were not aligned correctly
|
||||
* **UI/UX:** (Buttons) Border would incorrectly be applied to buttons with a background colour set
|
||||
* **UI/UX:** (ListView) Vertical padding did not match horizontal padding
|
||||
|
||||
## 5.0.1
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **iOS:** LunaSea would hard crash on startup on iOS 12 or lower devices
|
||||
|
||||
## 5.0.0
|
||||
|
||||
### Features
|
||||
|
||||
* **-arr:** (Content Details) Added a button to the AppBar to jump directly into the edit page
|
||||
* **-arr:** (Releases) Match torrent seeder colours to the web GUI
|
||||
* **Android:** Attach module headers to requests when viewing the web GUI
|
||||
* **Android:** Set status and navigation bar colours to match LunaSea
|
||||
* **Dashboard:** "Home" has been renamed to "Dashboard"
|
||||
* **Logger:** Utilize a new, custom built on-device logging system
|
||||
* **Logger:** Compact/delete old log entries once the log count passes 100
|
||||
* **Logger:** Exported logs are now in JSON format
|
||||
* **Logger:** Switch to Firebase Crashlytics from Sentry for crash and log monitoring
|
||||
* **Logger:** Added Firebase Analytics for breadcrumb tracking in crashes
|
||||
* **Notifications:** Support for webhook-based rich push notifications
|
||||
* **NZBGet:** (Queue) Add category to the queue tile
|
||||
* **Quick Actions:** Default "Settings" quick action added to end of the list (if there is room)
|
||||
* **Radarr:** Completely rewritten from the ground-up
|
||||
* **Radarr:** (Catalogue) If no movie is found in the search query, given an option to search to add the movie
|
||||
* **Radarr:** (Discover) Ability to discover movies from your import lists & Radarr recommendations
|
||||
* **Radarr:** (Filtering/Sorting) Many additional filtering and sorting options
|
||||
* **Radarr:** (History) Now an infinite scrolling list
|
||||
* **Radarr:** (Manual Import) Ability to manually import content from the filesystem
|
||||
* **Radarr:** (Movie) Cast information, movie-specific history, more detailed file information, & more detailed overview page
|
||||
* **Radarr:** (Queue) View, update, and manage items in the queue
|
||||
* **Radarr:** (System Status) Page to view status, health, and disk spaces
|
||||
* **Radarr:** (Tags) Manage, set, and delete tags
|
||||
* **SABnzbd:** (Queue) Add category to the queue tile
|
||||
* **Search:** (Results) Show clickable comment and download links in the expanded table
|
||||
* **Search:** (Results) Now supports infinite scrolling for loading additional pages of results
|
||||
* **Settings:** (Notifications) Added page to setup webhook-based push notifications
|
||||
* **Settings:** (Radarr) Ability to toggle on or off Radarr suggestions in the discover page
|
||||
* **Settings:** (Radarr) Ability to set sorting direction, category, and filtering method
|
||||
* **Settings:** (Resources) Added link to Weblate localization page
|
||||
* **Settings:** (Resources) Added link to hosted services status page
|
||||
* **Settings:** (Search) Ability to toggle off showing comment and download links
|
||||
* **Settings:** (System) Ability to disable Firebase Analytics and Firebase Crashlytics
|
||||
* **Sonarr:** (Catalogue) If no series is found in the search query, given an option to search to add the series
|
||||
* **Sonarr:** (Queue) Refreshing the queue will now also refresh the monitored downloads from the clients
|
||||
* **Tautulli:** (Activity) Show custom season titles from Plex's new TV agent
|
||||
* **Tautulli:** (Activity) Show session type and bandwidth type breakdown on activity page
|
||||
* **Tautulli:** (Activity) Show subtitle stream decision
|
||||
* **UI/UX:** (Experience) Ability to tap the AppBar to scroll to top
|
||||
* **UI/UX:** (Experience) If the list is in a tabbed PageView, tapping the active tab will scroll the list to the top
|
||||
* **UI/UX:** (Experience) If the keyboard is open, scrolling the list, swiping between pages, or opening the drawer will dismiss the keyboard
|
||||
* **UI/UX:** (Experience) Added haptic feedback to all buttons, toggles, and dropdowns
|
||||
|
||||
### Tweaks
|
||||
|
||||
* **-arr:** (Releases) Improve the layout of the rejection reasons dialog
|
||||
* **Dashboard:** (Calendar) Set bounds to calendar
|
||||
* **Dashboard:** (Calendar) Removed month header from calendar
|
||||
* **Dashboard:** (Calendar) Disable calendar days outside of the past and future date range
|
||||
* **Dashboard:** (Calendar) Made the styling for calendar slightly more consistent
|
||||
* **Logger:** Removed viewing the stack trace within the application (still viewable within the exported logs)
|
||||
* **NZBGet:** (Queue) Submenu for queued NZBs are now accessible via a single tap on the tile
|
||||
* **NZBGet:** (Queue) Reordering queue items now occurs by dragging via the handle
|
||||
* **Radarr:** Now only supports v3.0.0 and higher of Radarr
|
||||
* **Radarr:** Many visual changes, too many to list
|
||||
* **Radarr:** The tab "History" has been replaced with "More"
|
||||
* **Radarr:** (Edit) Monitor toggle has been moved to the edit prompt
|
||||
* **SABnzbd:** (Queue) Submenu for queued NZBs are now accessible via a single tap on the tile
|
||||
* **SABnzbd:** (Queue) Reordering queue items now occurs by dragging via the handle
|
||||
* **Search:** (Results) Now returns 50 results per infinite scrolling page
|
||||
* **Search:** (Results) Removed support for sorting and filtering results
|
||||
* **Settings:** (Account) Removed the ability to pull user ID or device ID from help dialog
|
||||
* **Settings:** (Configuration) Sort configuration options within modules for cleaner isolation and easier expansion for future configuration options
|
||||
* **Settings:** (Profiles) Renaming a profile now checks for an existing profile with the same name within the prompt
|
||||
* **Settings:** (Profiles) Adding a profile now checks for an existing profile with the same name within the prompt
|
||||
* **Settings:** (Profiles) The delete profile prompt now hides the currently enabled profile, and shows a snackbar if only one profile exists
|
||||
* **Settings:** (Wake on LAN) Allow clearing the broadcast and MAC addresses to empty values
|
||||
* **Tautulli:** (Activity) Cleanup player information to more closely resemble web GUI
|
||||
* **Tautulli:** (Activity) Show the full season title
|
||||
* **UI/UX:** (Accessibility) Added more descriptive tooltips to all popup menu buttons
|
||||
* **UI/UX:** (Bottom Sheet) Bottom modal sheets lists will now shrink wrap to match content height
|
||||
* **UI/UX:** (Brands) Updated the logo to The Movie Database's new logo
|
||||
* **UI/UX:** (Design) Active tab in navigation bar now has a border with the AMOLED theme
|
||||
* **UI/UX:** (Design) Adjusted the style of splash/highlight inking
|
||||
* **UI/UX:** (Design) Reduced the weight of bold text across the application
|
||||
* **UI/UX:** (Design) Added padding to bottom of lists for devices that require a safe area
|
||||
* **UI/UX:** (Design) Minor tweaks to the colour palette
|
||||
* **UI/UX:** (Design) Unify the design and size of all action buttons
|
||||
* **UI/UX:** (Design) Sticky primary action buttons to the bottom navigation bar area
|
||||
* **UI/UX:** (Design) Removed all deprecated UI elements and usages
|
||||
* **UI/UX:** (Design) Many additional, minor tweaks to the design
|
||||
* **UI/UX:** (Drawer) Removed the option to use categories/folders in the drawer
|
||||
* **UI/UX:** (Navigation) Jump instead of animate to page when tapping a navbar item
|
||||
* **UI/UX:** (Profiles) Highlight active profile in profile switcher popup menus
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Android:** Remove legacy external storage permission
|
||||
* **Dashboard:** (Calendar) Stored current date would not update on date change
|
||||
* **Flutter:** Fully upgrade to Flutter v2
|
||||
* **Flutter:** Update packages
|
||||
* **iOS:** Share sheet would not appear on iPadOS devices
|
||||
* **Networking:** Headers would not get attached in some networking configurations
|
||||
* **NZBGet:** (Queue) Would not refresh in some cases when switching profiles
|
||||
* **Quick Actions:** Improve package internal native channel
|
||||
* **SABnzbd:** (Queue) Would not refresh in some cases when switching profiles
|
||||
* **Settings:** (Configuration) Newly set headers would sometimes not be passed to the connection test
|
||||
* **Sonarr:** (Add) Series type would not be set correctly when adding a new series
|
||||
* **Sonarr:** (Edit) Series path prompt would show an incorrect title
|
||||
* **Sonarr:** (Queue) Ensure the trailing icon on queue entries is centered vertically
|
||||
* **Sonarr:** (Releases) Default sorting direction was using catalogue default value
|
||||
* **Strings:** Safe-guard many substring operations
|
||||
* **Tautulli:** (Activity) Play/paused/buffering icon was not properly left aligned to the text
|
||||
* **Tautulli:** (Graphs) Description of some graphs were not correct (Thanks @ZuluWhiskey!)
|
||||
* **Tautulli:** (IPs) Fix location showing as null for local addresses
|
||||
* **Tautulli:** (Users) User images would not be fetched on newer versions of Tautulli
|
||||
* **UI/UX:** (Bottom Sheet) Reduce swipe down to dismiss threshold to 10% of height
|
||||
* **UI/UX:** (Design) Margin/size of sort/filter buttons were off by a few pixels
|
||||
* **UI/UX:** (Design) InkWell splash now clips correctly to the rounded borders of popup menu buttons
|
||||
* **UI/UX:** (Design) Vertical padding around title when the profile dropdown is visible was incorrect
|
||||
* **UI/UX:** (Design) Some elements were using the system colours instead of the LunaSea colours
|
||||
* **UI/UX:** (Images) Normalize size of all branded logos to have the same widths for consistency
|
||||
* **UI/UX:** (Images) Prevent attempting to load background images that are passed an empty URL
|
||||
* **UI/UX:** (Snackbar) Remove all uses of the deprecated snackbar
|
||||
* **UI/UX:** (Snackbar) All error snackbar will now have a button to view the error
|
||||
* **URLs:** Safe-guard launching specific invalid URLs
|
||||
|
||||
## 4.2.1
|
||||
|
||||
### Features
|
||||
|
||||
* **Accounts:** Ability to send a password reset email
|
||||
* **Accounts:** Associate the LunaSea website domain for better autofill support
|
||||
|
||||
### Tweaks
|
||||
|
||||
* **Sonarr/Upcoming:** Change "Not Downloaded" to "Missing"
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Alerts/Changelog:** Changelog would be shown again when restoring a backup from a previous version
|
||||
* **Sonarr/Add:** Fixed error log showing series ID as null
|
||||
|
||||
## 4.2.0
|
||||
|
||||
### Features
|
||||
|
||||
* **Accounts:** Added LunaSea accounts
|
||||
* **Accounts:** Ability to backup, restore, and delete cloud configurations
|
||||
* **Accounts:** Register device token to database for future notification support
|
||||
* **Backups:** All backups now contain all customization and configuration options in LunaSea (New backups are required to utilize this)
|
||||
* **Changelog:** Show changelog on launch if a new version is installed
|
||||
* **Changelog:** Use a new bottom sheet UI for the changelog
|
||||
* **Settings/Modules:** Add an information/help button with module descriptions and links
|
||||
* **Sonarr/Releases:** Added loading state to download buttons to prevent triggering multiple downloads of the same release
|
||||
|
||||
### Tweaks
|
||||
|
||||
* **Radarr:** Always show the amount of days content will be available instead of limiting it to only content in the next 30 days
|
||||
* **Settings:** Moved "Backup & Restore" and "Logs" to "System" section
|
||||
* **Settings:** Merged "Customization" and "Modules" sections into "Configuration"
|
||||
* **Settings/Sonarr:** Removed the need to enable Sonarr to test the connection
|
||||
* **Settings/Tautulli:** Removed the need to enable Tautulli to test the connection
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Flutter:** Updated packages
|
||||
* **In App Purchases:** Ensure all in app purchases are marked as consumed
|
||||
* **Logging:** Updated Sentry to v4 framework to improve capturing fatal/crashing bugs
|
||||
* **Settings/Logs:** Hide exception and stack trace buttons when an error is not available
|
||||
* **Settings/Resources:** Updated URL endpoints
|
||||
* **Sonarr/History:** Fixed cases where history fetched the oldest entries, not the newest
|
||||
* **Sonarr/Upcoming:** If an episode has not aired, show it as "Unaired" instead of "Not Downloaded"
|
||||
* **State:** Correctly clear state when clearing LunaSea's configuration
|
||||
* **Tautulli/Activity:** Fixed consistency of hardware transcoding indicator compared to the web UI
|
||||
* **UI/Divider:** Fixed consistency of divider width across regular and AMOLED dark theme
|
||||
|
||||
## 4.1.1
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Sonarr/v2:** Fix inability to interactively search for releases
|
||||
* **Routing:** Fix black screen when popping back from nested calendar routes
|
||||
|
||||
## 4.1.0
|
||||
|
||||
### Features
|
||||
|
||||
* **Backup & Restore:** Backup files now use the .LunaSea extension (older .json backups are still supported)
|
||||
* **Filesystem:** Any saves to the filesystem now uses the system share sheet
|
||||
* **Images:** Ability to set (or entirely disable) the opacity of the background image for cards
|
||||
* **Networking:** Strict TLS/SSL validation is now disabled globally
|
||||
* **Routing:** Hold the AppBar back button to pop back to the home page of the module
|
||||
* **Settings/Sonarr:** Toggle to enable Sonarr v3 features
|
||||
* **Sonarr:** A ground-up re-implementation of Sonarr
|
||||
* **Sonarr:** State is now held across module switches
|
||||
* **Sonarr/Add:** (v3 only) Tapping an already-added series will take you to the series page
|
||||
* **Sonarr/Add:** Automatically navigate to a newly added series
|
||||
* **Sonarr/Add:** Ability to set tags and (v3 only) language profile when adding a new series
|
||||
* **Sonarr/Catalogue:** Ability to view all, only monitored, or only unmonitored series
|
||||
* **Sonarr/Catalogue:** Ability to set the default sorting type and direction (in the settings)
|
||||
* **Sonarr/Edit:** Ability to update tags and (v3 only) language profile
|
||||
* **Sonarr/Episodes:** If the episode is in the queue, show details of the download status
|
||||
* **Sonarr/Overview:** View tags and (v3 only) language profile applied to the series
|
||||
* **Sonarr/Queue:** Ability to view and manage your queue
|
||||
* **Sonarr/Releases:** (v3 only) Ability to interactively search for season packs
|
||||
* **Sonarr/Releases:** Ability to view all, only approved, or only rejected releases
|
||||
* **Sonarr/Releases:** Ability to set the default sorting type and direction (in the settings)
|
||||
* **Sonarr/Tags:** Ability to add, view, and delete tags
|
||||
* **Tautulli/Activity:** Show the ETA for when the session will be completed
|
||||
* **Tautulli/Activity:** Show if hardware transcoding is being used on the stream
|
||||
|
||||
### Tweaks
|
||||
|
||||
* **Radarr:** Use Radarr v3 icon across the UI
|
||||
* **Settings/Dialogs:** Small tweaks and additional notes for entering hosts and passwords
|
||||
* **Settings/Host Dialog:** Add validator on host to ensure user adds http:// or https://
|
||||
* **Settings/Resources:** Hide link to documentation until I actually finish it
|
||||
* **Sonarr:** Many changes to Sonarr's design
|
||||
* **Sonarr/Series:** Toggling monitored state of series has now been moved to the edit prompt and edit screen
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Backup & Restore:** Fix grey screen when restoring a backup without a "default"-named profile (new backups are not required)
|
||||
* **Build:** (Android) Update gradle
|
||||
* **Build:** (iOS) Reintegrate cocoapods podfile
|
||||
* **Filesystem:** (Android) Using the share sheet now fixes the issue of inaccessible logs, backups, and downloads on Android 10+ devices
|
||||
* **Flutter:** Update packages
|
||||
* **Images:** Images will now load for invalid/self-signed certificates
|
||||
* **Networking:** Ensure that insecure (HTTP/80) connections are allowed at the platform-level
|
||||
* **Tautulli/Activity:** Fix grey screen for music activity
|
||||
* **TextField:** Fix TextField actions (cut, copy, paste, etc.) not showing
|
||||
* **Timestamps:** Fix 12:xx AM being shown as 00:xx AM when using 12-hour time
|
||||
* **UI/Checkbox:** Fix overly vibrant checkbox selected background
|
||||
- Tons of additional minor bugs were fixed
|
||||
|
||||
## 4.0.0
|
||||
|
||||
### Features
|
||||
|
||||
* **Module:** Tautulli support
|
||||
* **Calendar:** Ability to set how many days in the past and future to fetch calendar entries for
|
||||
* **Drawer:** Categorical folders are now optional
|
||||
* **Drawer:** If using folders, ability to set the initial expanded state
|
||||
* **Locale:** Ability to use 24 hour timestamps
|
||||
* **Quick Actions:** Ability to set up to four home screen quick actions
|
||||
* **Search:** Ability to set custom headers for individual indexers
|
||||
* **Settings:** Complete overhaul of the settings
|
||||
* **Settings/Resources:** (iOS) Added link to join TestFlight
|
||||
|
||||
### Tweaks
|
||||
|
||||
* **Home/Calendar:** Separate calendar view type into its own preference
|
||||
* **Home/Calendar:** Show no modules enabled message when there are no automation modules enabled, not just no modules overall
|
||||
* **Home/Calendar:** Default past and future days is now 14 days for each
|
||||
* **Images:** Images are no longer cached to the device storage to heavily improve performance & reduce crashing on older/lower-end devices
|
||||
* **Images:** Fetch images at specific resolutions instead of full resolution to reduce network performance and decrease memory pressure
|
||||
* **Search:** Improved detection of adult categories
|
||||
* **Settings:** Settings now replaces the active module/route and shows the drawer on the base route
|
||||
* **Settings/System:** Removed clear image cache tile
|
||||
* **UI:** Added new loading animation design
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Flutter:** Updated packages & Flutter
|
||||
* **General:** Many small bug fixes
|
||||
* **LunaSea:** Many behind the scenes changes to reduce memory pressure
|
||||
* **LunaSea:** Heavy improvements and fixes to the navigation routing
|
||||
* **Settings/Logs:** Logs could be shown in reverse order
|
||||
* **Text:** Fixed "squished" text on iOS 14 and higher devices
|
||||
|
||||
## 3.3.0
|
||||
|
||||
### Features
|
||||
|
||||
* **Home/Calendar:** New "schedule" view
|
||||
* **Home/Modules:** Option to use module "brand colour" or the LunaSea list colours
|
||||
* **Search:** Option to hide adult categories
|
||||
* **-arr/Catalogue:** Ability to sort by date added
|
||||
* **-arr/Search:** Show the indexer/tracker on the collapsed tile
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Sonarr:** Fixed multiple errors related to parsing fetched episode data
|
||||
* **Everything:** Multiple smaller crash/error fixes
|
||||
|
||||
## 3.2.0
|
||||
|
||||
### Features
|
||||
|
||||
* **Drawer:** Add the LunaSea logo to the header
|
||||
* **Logging:** Integrated Sentry, an open-source exception/crash log aggregation tool
|
||||
* **Settings/System:** Added toggle (under system -> advanced) to disable Sentry logging
|
||||
|
||||
### Tweaks
|
||||
|
||||
* **System:** Implemented new image caching backend
|
||||
* **APIs:** Improved exception logging
|
||||
* **Logging:** Improved on-device logger to have more useful stack traces
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **-arr/Details:** Fixed crash related to state management
|
||||
* **radarr/Add:** Fixed crash when a searched movie does not have a minimum availability value available
|
||||
|
||||
## 3.1.0
|
||||
|
||||
### Features
|
||||
|
||||
* **Settings/Resources:** Added Discord invite link for official server
|
||||
* **-arr:** Ability to search and enter interactive search from all upcoming and missing pages
|
||||
* **-arr/Add:** Ability to jump directly into newly added content from toast notification
|
||||
* **Radarr/Delete:** Ability to add to exclusion list when deleting content
|
||||
* **Clients:** Hide and show queue pause/start FAB on scroll
|
||||
* **Clients/History:** History tiles are now expandable in-line
|
||||
* **SABnzbd/Statistics:** Show both temporary and final storage space
|
||||
* **Calendar:** Ability to search/enter interactive search directly from calendar tiles
|
||||
|
||||
### Tweaks
|
||||
|
||||
* **Development:** Updated Flutter packages
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **API/Host:** Correctly handle cases where host ends with a forward slash
|
||||
|
||||
## 3.0.0
|
||||
|
||||
### Features
|
||||
|
||||
* **Search:** Releases are now shown as an expandable tile
|
||||
* **Search/Category Results:** Ability to sort and filter results
|
||||
* **Search/Search Results:** Ability to sort search results
|
||||
* **-rr/Catalogue:** Many additional sorting options
|
||||
* **-rr/Releases:** Releases are now shown as an expandable tile
|
||||
* **-rr/Releases:** Ability to sort, hide, and filter releases
|
||||
* **Sonarr/Add:** Ability to set initial episode monitoring state
|
||||
* **Sonarr/Episodes:** Episodes are now shown as an expandable tile
|
||||
* **Radarr/Releases:** Shows custom format tags
|
||||
* **Clients:** FAB icon animates between queue state
|
||||
* **Images:** Ability to clear network image cache
|
||||
* **UI/AMOLED Theme:** Optional setting to add subtle border
|
||||
|
||||
### Tweaks
|
||||
|
||||
* **Changelog:** Removed integrated changelog, redirects to documentation changelog
|
||||
* **-rr:** Use the term "Interactive" instead of "Manual" for search
|
||||
* **-rr/Links:** Normalize size of images
|
||||
* **Sonarr/Upcoming:** Now shows dates in-line as a styled header
|
||||
* **Sonarr/Season View:** Now shows season number in-line as a styled header
|
||||
* **UI/Font:** Adjusted font size across entire application
|
||||
* **UI/Dropdowns:** Change dropdowns to popup menus
|
||||
* **UI:** Rounder radius around tiles, popups, etc.
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Home/Calendar:** Row height is now statically set to prevent huge calendar on larger displays
|
||||
* **Sonarr/Seasons:** Fixed crash related to seasons with no statistics data for percentage of season completion
|
||||
* **Sonarr/Episodes:** Episode numbers greater than 100 could cause a line-break
|
||||
* **Sonarr/Episodes:** Fixed/safe-guarded layout crash on incomplete episode data received
|
||||
* **Sonarr/Queue:** Safe-guarded Sonarr queue results when results are null
|
||||
* **Snackbar:** Snackbar wouldn't adopt AMOLED styling when enabled
|
||||
* **State:** Fixed crashes caused by setting the state of an unmounted widget
|
||||
|
||||
## 2.3.0
|
||||
|
||||
### Features
|
||||
|
||||
* **Module:** Wake on LAN support
|
||||
* **Settings/Modules:** Ability to set custom headers to be attached to module requests
|
||||
* **Settings/Changelog:** Changelog is now displayed as a route, not a dialog
|
||||
* **UX:** Hitting the back button on apex/primary routes will now open the drawer instead of closing the application
|
||||
* **UX:** Enable landscape mode for iPhones
|
||||
|
||||
### Tweaks
|
||||
|
||||
* **-rr/Details:** Removed sliver AppBar and fanart as it caused unwanted scrolling interference (A revamped overview page in the future will bring back the fanart images)
|
||||
* **-rr/Details:** Switched from AppBar tabs to bottom navigation bar
|
||||
* **-rr/Release:** Do not show warning message when triggering a release download from details page on rejected release
|
||||
* **Dialogs:** Re-implemented all dialogs
|
||||
* **Dialogs:** Keyboard type is now set for all inputs
|
||||
* **Dialogs:** All inputs are now validated (to some extent) and can be submitted via the Keyboard
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **SnackBar:** SnackBar could cause UI locking when doing swipe-back gestures
|
||||
|
||||
## 2.2.0
|
||||
|
||||
### Features
|
||||
|
||||
* **Donations:** Added donation IAPs
|
||||
* **Profiles:** Added rapid-profile switcher
|
||||
* **Settings:** Added license attributions
|
||||
* **Settings:** Added feedback link
|
||||
* **-rr/Add:** Search bar will now be autofocused
|
||||
* **SABnzbd:** Added statistics for individual servers
|
||||
* **NZBGet:** Option to use basic authentication instead of URL-encoded authentication
|
||||
|
||||
### Tweaks
|
||||
|
||||
* **UI:** Removed custom letter spacing
|
||||
* **Settings:** Added subheaders
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Database:** Cleanly exit on clean application exit to prevent corruption
|
||||
|
||||
## 2.1.0
|
||||
|
||||
### Features
|
||||
|
||||
* **Branding:** New icon & splash screen
|
||||
* **Links:** Ability to set which browser you open links in (iOS only)
|
||||
* **Home/Calendar:** Ability to set starting day of week
|
||||
* **Home/Calendar:** Ability to set starting calendar size
|
||||
* **Home/Calendar:** Ability to enable and disable specific modules that show up in the calendar
|
||||
* **Appearance/Theme:** Option to enable AMOLED black theme
|
||||
* **Platform:** LunaSea is now build-able & available for Android
|
||||
|
||||
### Tweaks
|
||||
|
||||
* **Settings:** Redesign of settings page
|
||||
* **General:** Use the term "Modules" instead of "Services"
|
||||
* **-rr/Details:** Background image header/app bar is now collapsed by default
|
||||
* **-rr/Details:** Left align title to match the rest of LunaSea
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Sonarr:** Toast for toggling season monitor state would show monitor status of the series, not the season
|
||||
* **Settings/Backup:** Backing up your configuration would always fail
|
||||
* **Search:** Would show an empty screen if you deleted all indexers while search is open
|
||||
|
||||
## 2.0.1
|
||||
|
||||
### Features
|
||||
|
||||
* **SABnzbd:** Ability to upload .rar & .gz archives
|
||||
* **-rr/Add:** All configurable values are now stored in cold database, persisting between sessions
|
||||
* **-rr/Add:** Root folders now also show available space for the folder
|
||||
* **Search:** When sending an NZB to a client, there is now an action in the toast to jump directly to the respective client
|
||||
* **Automation/Search:** When downloading a release manually, there is now an action in the toast to pop back to the main screen of the automation service
|
||||
* **Settings:** Ability to disable SSL/TLS validation for all services
|
||||
* **HTTP:** With the above, support for self-signed SSL certificates
|
||||
|
||||
### Tweaks
|
||||
|
||||
* **Descriptions:** Adjusted alignment and consistency when no summary is available
|
||||
* **Search:** Removed redundant “Sending” toast since it very quickly gets covered by the follow-up toast
|
||||
* **Automation:** Edit content prompt now shows full title of the content
|
||||
* **Clients:** Opening the edit menu now shows the full title of the job
|
||||
* **UI:** Tweaked design of content headers
|
||||
* **Settings:** Added headers to automation and client pages to separate regular and advanced configuration options
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **HTTP:** Safer handling of redirects
|
||||
* **Routes:** Make route changes asynchronous to help minimize stutters
|
||||
* **Radarr/Add:** Fixed wrong title for minimum availability card
|
||||
* **Restore Configuration:** Error message had typos
|
||||
* **UI:** Fixed uneven font sizing in some prompts
|
||||
* **NZBGet/SABnzbd:** Failure on uploading an NZB would show no error message
|
||||
|
||||
## 2.0.0
|
||||
|
||||
### Features
|
||||
|
||||
* **iOS:** Built for iOS 13.4
|
||||
* **Indexers/Search:** Full support for browsing and searching Newznab-based indexers!
|
||||
* **Indexers/Search:** Support for NZBHydra2
|
||||
* **Indexers/Search:** Download NZB files directly to your device
|
||||
* **Indexers/Search:** Send NZB files directly from the indexer to your client of choice
|
||||
* **-rr/Catalogue:** Catalogue search bar is now stickied
|
||||
* **-rr/History:** Ability to enter content
|
||||
* **-rr/Add:** More information (year, seasons, etc.) shown in result tiles
|
||||
* **NZBGet:** Ability to search through fetched history
|
||||
* **SABnzbd:** Ability to search through fetched history
|
||||
* **Settings/Configuration:** Ability to clear configuration
|
||||
* **Drawer:** Ability to switch profiles in navigation Drawer
|
||||
* **Snackbar:** New snackbar style, design, and formatting
|
||||
* **Everything:** All services now dynamically reload on profile changes
|
||||
|
||||
### Tweaks
|
||||
|
||||
* **Everything:** Re-implemented... everything
|
||||
* **Everything:** Moved away from FABs (where possible) to buttons
|
||||
* **Navigation:** Ability to swipe left and right between bottom navigation tabs (except Settings)
|
||||
* **Navigation Bar:** Slightly redesigned
|
||||
* **Home/Summary:** Redesigned summary page
|
||||
* **Home/Summary:** Removed fetching of series count, movie count, and artist count
|
||||
* **Home/Calendar:** Now only shows 1 dot for each day instead of 3
|
||||
* **Home/Calendar:** Highlights today as well as selected day
|
||||
* **Home/Calendar:** Now shows the day of the week on the calendar
|
||||
* **Home/Calendar:** Now defaults to showing 1 week (swipe down to show two weeks or one month)
|
||||
* **Settings:** No longer a need to save configuration settings, everything is saved automatically
|
||||
* **Search Bar:** "X" to clear search bars
|
||||
* **-rr/Catalogue:** Sorting now scrolls back to top
|
||||
* **-rr/Catalogue:** Moved hide unmonitored button to stickied search bar
|
||||
* **-rr/Add:** Selected profile, folders, etc. are stored in state until application is closed or profile is switched
|
||||
* **-rr/Images:** Images now show placeholder, transition to real content on load
|
||||
* **Sonarr/Episodes:** Multi-select episodes with single tap anywhere on tile, now highlighted for easier distinction
|
||||
* **SABnzbd:** Limit queue to first 100 results
|
||||
* **SABnzbd:** Lowered refresh rate to 2 seconds from 1 second
|
||||
* **NZBGet:** Limit queue to first 100 results
|
||||
* **NZBGet:** Lowered refresh rate to 2 seconds from 1 second
|
||||
* **UI:** Reduced elevation of UI in general
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Sonarr/Search:** Searching for an entire season now executes a season search instead of individual episode searches
|
||||
* **Logs:** Fixed bug where logs could not load in some cases and always show "Logs Not Found"
|
||||
* **Radarr/Search:** Now correctly retains search state to prevent needless researching & API hits
|
||||
* **Configuration:** Deleting or renaming "default" profile could cause a new "default" profile to be created on next launch
|
||||
|
||||
## 1.1.0
|
||||
|
||||
### Features
|
||||
|
||||
* **Home:** Calendar view for upcoming -rr content
|
||||
* **Sonarr:** Ability to toggle single episode monitored status
|
||||
* **Sonarr:** Ability to delete file
|
||||
* **Radarr:** Split missing tab into missing and upcoming
|
||||
* **-rr:** Long-press tile on non-catalogue pages to view catalogue entry
|
||||
* **-rr:** Ability to delete files when deleting catalogue entries
|
||||
* **Documentation:** Added a link to WIP documentation
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Prompts:** All prompts now use the correct colour ordering
|
||||
* **NZBGet:** Adjusted authentication method to interfere less with custom auth setups
|
||||
|
||||
### Tweaks
|
||||
|
||||
* **Drawer:** Dropdown groups are open by default until more services are added
|
||||
* **Settings:** Minor tile shuffling and rewording
|
||||
* **Navigation:** New style for the navigation bars
|
||||
* **Navigation:** Added custom icons to navigation bars
|
||||
* **Releases:** Easier to differentiate the release's protocol
|
||||
|
||||
## 1.0.0
|
||||
|
||||
### Features
|
||||
|
||||
* **-rr:** When adding new content, checks if content is already in your library
|
||||
* **-rr:** Ability to sort catalogue by size of alphabetical
|
||||
* **Settings:** Ability to rename a profile
|
||||
* **SAB/NZBGet:** Ability to pause the queue for some amount of time
|
||||
* **NZBGet:** Ability to filter out successful history entries
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Radarr:** Fetching quality profiles could fail
|
||||
* **SAB/NZBGet:** Percentage calculation could fail causing a grey screen
|
||||
* **SAB/NZBGet:** Connection error now cancels timer until manual refresh (cleaner logs)
|
||||
|
||||
### Tweaks
|
||||
|
||||
* **Build:** Adjusted how build number is presented
|
||||
* **Sonarr:** Now shows size on disk on catalogue page
|
||||
* **Lidarr:** Now shows size on disk on catalogue page
|
||||
* **Settings:** Successful connection test now also triggers save
|
||||
* **Settings:** Save button is now more obvious/clear
|
||||
* **Settings:** Adjusted and added more tips when adding hosts
|
||||
Previous version changelogs are no longer available.
|
||||
@@ -1,4 +1,4 @@
|
||||
Welcome to the LunaSea community.
|
||||
|
||||
Settle differences by offering and accepting constructive critique, within desired privacy.
|
||||
Finding yourselves unable, e-mail Avatar Jagandeep Brar (the project maintainer) at hello@lunasea.app.
|
||||
Finding yourselves unable, e-mail the project maintainer at hello@lunasea.app.
|
||||
|
||||
79
CONTRIBUTORS.md
Normal file
@@ -0,0 +1,79 @@
|
||||
# Contributors
|
||||
|
||||
<!-- prettier-ignore-start -->
|
||||
<!-- markdownlint-disable -->
|
||||
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
|
||||
[](#contributors-)
|
||||
<!-- ALL-CONTRIBUTORS-BADGE:END -->
|
||||
<!-- markdownlint-restore -->
|
||||
<!-- prettier-ignore-end -->
|
||||
|
||||
Thank you to everyone who has helped contribute to LunaSea, from development to localization efforts!
|
||||
|
||||
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
|
||||
<!-- prettier-ignore-start -->
|
||||
<!-- markdownlint-disable -->
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center"><a href="https://www.jagandeepbrar.io"><img src="https://avatars.githubusercontent.com/u/3048295?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jagandeep Brar</b></sub></a><br /><a href="https://github.com/JagandeepBrar/LunaSea/commits?author=JagandeepBrar" title="Code">💻</a> <a href="#design-JagandeepBrar" title="Design">🎨</a> <a href="#ideas-JagandeepBrar" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center"><a href="https://github.com/lightglitch"><img src="https://avatars.githubusercontent.com/u/196953?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Mário Franco</b></sub></a><br /><a href="https://github.com/JagandeepBrar/LunaSea/commits?author=lightglitch" title="Code">💻</a> <a href="#translation-lightglitch" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/Qstick"><img src="https://avatars.githubusercontent.com/u/376117?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Qstick</b></sub></a><br /><a href="https://github.com/JagandeepBrar/LunaSea/commits?author=Qstick" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://github.com/AliMickey"><img src="https://avatars.githubusercontent.com/u/60691199?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Micky</b></sub></a><br /><a href="https://github.com/JagandeepBrar/LunaSea/commits?author=AliMickey" title="Documentation">📖</a></td>
|
||||
<td align="center"><a href="http://www.xrths.fr"><img src="https://avatars.githubusercontent.com/u/40337934?v=4?s=100" width="100px;" alt=""/><br /><sub><b>xrths</b></sub></a><br /><a href="https://github.com/JagandeepBrar/LunaSea/commits?author=xrths" title="Documentation">📖</a></td>
|
||||
<td align="center"><a href="https://pythonexplainedto.me/"><img src="https://avatars.githubusercontent.com/u/41962737?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Patrik Hauguth</b></sub></a><br /><a href="#translation-Phaugt" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://liberapay.com/kingu/"><img src="https://avatars.githubusercontent.com/u/13802408?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Allan Nordhøy</b></sub></a><br /><a href="#translation-comradekingu" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/cpt-kuesel"><img src="https://avatars.githubusercontent.com/u/79487102?v=4?s=100" width="100px;" alt=""/><br /><sub><b>cpt-kuesel</b></sub></a><br /><a href="#translation-cpt-kuesel" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/KovalevArtem"><img src="https://avatars.githubusercontent.com/u/36500228?v=4?s=100" width="100px;" alt=""/><br /><sub><b>KovalevArtem</b></sub></a><br /><a href="#translation-KovalevArtem" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/iFelix18"><img src="https://avatars.githubusercontent.com/u/19800006?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Davide</b></sub></a><br /><a href="#translation-iFelix18" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://ersen.srht.site/"><img src="https://avatars.githubusercontent.com/u/88676873?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Oğuz Ersen</b></sub></a><br /><a href="#translation-ersen0" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/bittin"><img src="https://avatars.githubusercontent.com/u/43197?v=4?s=100" width="100px;" alt=""/><br /><sub><b>bittin</b></sub></a><br /><a href="#translation-bittin" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/almontegil"><img src="https://avatars.githubusercontent.com/u/68232356?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Gil</b></sub></a><br /><a href="#translation-almontegil" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/TheSander562"><img src="https://avatars.githubusercontent.com/u/14059770?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Sander Lambrechts</b></sub></a><br /><a href="#translation-TheSander562" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/Guilhermerrrr"><img src="https://avatars.githubusercontent.com/u/92966143?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Guilhermerrrr</b></sub></a><br /><a href="#translation-Guilhermerrrr" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/Ben-Wallner"><img src="https://avatars.githubusercontent.com/u/24373331?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ben Biber</b></sub></a><br /><a href="#translation-Ben-Wallner" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/Sytom"><img src="https://avatars.githubusercontent.com/u/30535521?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Sytom</b></sub></a><br /><a href="#translation-Sytom" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://xxzj990.top"><img src="https://avatars.githubusercontent.com/u/5134154?v=4?s=100" width="100px;" alt=""/><br /><sub><b>xxzj990</b></sub></a><br /><a href="#translation-xxzj990" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://www.openflixr.com"><img src="https://avatars.githubusercontent.com/u/3245077?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Mark Frelink</b></sub></a><br /><a href="#translation-mfrelink" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/diemade"><img src="https://avatars.githubusercontent.com/u/174809?v=4?s=100" width="100px;" alt=""/><br /><sub><b>diemade</b></sub></a><br /><a href="#translation-diemade" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://feikojoosten.com"><img src="https://avatars.githubusercontent.com/u/10920052?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Feiko Joosten</b></sub></a><br /><a href="#translation-FeikoJoosten" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/TheMaxul"><img src="https://avatars.githubusercontent.com/u/2436527?v=4?s=100" width="100px;" alt=""/><br /><sub><b>TheMaxul</b></sub></a><br /><a href="#translation-TheMaxul" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://lisacintosh.itch.io"><img src="https://avatars.githubusercontent.com/u/6952213?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Maxime Leroy</b></sub></a><br /><a href="#translation-Lisapple" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/vc5"><img src="https://avatars.githubusercontent.com/u/13097192?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Vincent</b></sub></a><br /><a href="#translation-vc5" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/gmcinalli"><img src="https://avatars.githubusercontent.com/u/9024983?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Gian Marco Cinalli</b></sub></a><br /><a href="#translation-gmcinalli" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://www.issacc.top/"><img src="https://avatars.githubusercontent.com/u/17275050?v=4?s=100" width="100px;" alt=""/><br /><sub><b>八月的蠢</b></sub></a><br /><a href="#translation-issaccv" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/neoestremi"><img src="https://avatars.githubusercontent.com/u/1340877?v=4?s=100" width="100px;" alt=""/><br /><sub><b>neoestremi</b></sub></a><br /><a href="#translation-neoestremi" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/marcosvdiasofc"><img src="https://avatars.githubusercontent.com/u/96720080?v=4?s=100" width="100px;" alt=""/><br /><sub><b>marcosvdiasofc</b></sub></a><br /><a href="#translation-marcosvdiasofc" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://liberapay.com/FSCorrupt/donate"><img src="https://avatars.githubusercontent.com/u/45659314?v=4?s=100" width="100px;" alt=""/><br /><sub><b>FSCorrupt</b></sub></a><br /><a href="#translation-fscorrupt" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/iHunterX"><img src="https://avatars.githubusercontent.com/u/16854718?v=4?s=100" width="100px;" alt=""/><br /><sub><b>iHunterX</b></sub></a><br /><a href="#translation-iHunterX" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/Brokeos"><img src="https://avatars.githubusercontent.com/u/8388746?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Brokeos</b></sub></a><br /><a href="#translation-Brokeos" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/punchy98"><img src="https://avatars.githubusercontent.com/u/12002902?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Michael Maldonado</b></sub></a><br /><a href="#translation-punchy98" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/natiz"><img src="https://avatars.githubusercontent.com/u/3515888?v=4?s=100" width="100px;" alt=""/><br /><sub><b>natiz</b></sub></a><br /><a href="https://github.com/JagandeepBrar/LunaSea/commits?author=natiz" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://github.com/KevoM"><img src="https://avatars.githubusercontent.com/u/8274366?v=4?s=100" width="100px;" alt=""/><br /><sub><b>KevoM</b></sub></a><br /><a href="#translation-KevoM" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/rogeriomendes"><img src="https://avatars.githubusercontent.com/u/1494503?v=4?s=100" width="100px;" alt=""/><br /><sub><b>rogeriomendes</b></sub></a><br /><a href="#translation-rogeriomendes" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="http://www.paddez.com/"><img src="https://avatars.githubusercontent.com/u/587220?v=4?s=100" width="100px;" alt=""/><br /><sub><b>David K</b></sub></a><br /><a href="#design-Irishsmurf" title="Design">🎨</a></td>
|
||||
<td align="center"><a href="https://github.com/Slam4uk"><img src="https://avatars.githubusercontent.com/u/78175288?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Slam4uk</b></sub></a><br /><a href="#translation-Slam4uk" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/timrettop"><img src="https://avatars.githubusercontent.com/u/434913?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Tim Potter</b></sub></a><br /><a href="#translation-timrettop" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/carlesmu"><img src="https://avatars.githubusercontent.com/u/1310090?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Carles Muñoz Gorriz</b></sub></a><br /><a href="#translation-carlesmu" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/osjurso"><img src="https://avatars.githubusercontent.com/u/17827103?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Olav Markus Sjursø</b></sub></a><br /><a href="#translation-osjurso" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/fyu0h"><img src="https://avatars.githubusercontent.com/u/33602841?v=4?s=100" width="100px;" alt=""/><br /><sub><b>fyu0h</b></sub></a><br /><a href="#translation-fyu0h" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/johnflorin"><img src="https://avatars.githubusercontent.com/u/45756085?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Florin</b></sub></a><br /><a href="#translation-johnflorin" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/tuzumbear"><img src="https://avatars.githubusercontent.com/u/61370405?v=4?s=100" width="100px;" alt=""/><br /><sub><b>tuzumbear</b></sub></a><br /><a href="#translation-tuzumbear" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<!-- markdownlint-restore -->
|
||||
<!-- prettier-ignore-end -->
|
||||
|
||||
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
||||
21
Dockerfile
Normal file
@@ -0,0 +1,21 @@
|
||||
# Build
|
||||
FROM debian:latest as build
|
||||
|
||||
ENV PATH="/usr/local/flutter/bin:/usr/local/flutter/bin/cache/dart-sdk/bin:$PATH"
|
||||
RUN apt-get update
|
||||
RUN apt-get install -y curl git wget unzip
|
||||
RUN apt-get clean
|
||||
|
||||
RUN git clone https://github.com/flutter/flutter.git /usr/local/flutter
|
||||
RUN flutter channel stable
|
||||
RUN flutter upgrade
|
||||
|
||||
RUN mkdir /lunasea/
|
||||
COPY . /lunasea/
|
||||
WORKDIR /lunasea/
|
||||
RUN flutter build web
|
||||
|
||||
# Runtime
|
||||
FROM nginx:alpine
|
||||
LABEL org.opencontainers.image.source="https://github.com/JagandeepBrar/LunaSea"
|
||||
COPY --from=build /lunasea/build/web /usr/share/nginx/html
|
||||
674
LICENSE
@@ -1,674 +0,0 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<https://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
||||
675
LICENSE.md
Normal file
@@ -0,0 +1,675 @@
|
||||
### GNU GENERAL PUBLIC LICENSE
|
||||
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc.
|
||||
<https://fsf.org/>
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies of this
|
||||
license document, but changing it is not allowed.
|
||||
|
||||
### Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom
|
||||
to share and change all versions of a program--to make sure it remains
|
||||
free software for all its users. We, the Free Software Foundation, use
|
||||
the GNU General Public License for most of our software; it applies
|
||||
also to any other work released this way by its authors. You can apply
|
||||
it to your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you
|
||||
have certain responsibilities if you distribute copies of the
|
||||
software, or if you modify it: responsibilities to respect the freedom
|
||||
of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the
|
||||
manufacturer can do so. This is fundamentally incompatible with the
|
||||
aim of protecting users' freedom to change the software. The
|
||||
systematic pattern of such abuse occurs in the area of products for
|
||||
individuals to use, which is precisely where it is most unacceptable.
|
||||
Therefore, we have designed this version of the GPL to prohibit the
|
||||
practice for those products. If such problems arise substantially in
|
||||
other domains, we stand ready to extend this provision to those
|
||||
domains in future versions of the GPL, as needed to protect the
|
||||
freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish
|
||||
to avoid the special danger that patents applied to a free program
|
||||
could make it effectively proprietary. To prevent this, the GPL
|
||||
assures that patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
### TERMS AND CONDITIONS
|
||||
|
||||
#### 0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds
|
||||
of works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of
|
||||
an exact copy. The resulting work is called a "modified version" of
|
||||
the earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user
|
||||
through a computer network, with no transfer of a copy, is not
|
||||
conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices" to
|
||||
the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
#### 1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work for
|
||||
making modifications to it. "Object code" means any non-source form of
|
||||
a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users can
|
||||
regenerate automatically from other parts of the Corresponding Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that same
|
||||
work.
|
||||
|
||||
#### 2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not convey,
|
||||
without conditions so long as your license otherwise remains in force.
|
||||
You may convey covered works to others for the sole purpose of having
|
||||
them make modifications exclusively for you, or provide you with
|
||||
facilities for running those works, provided that you comply with the
|
||||
terms of this License in conveying all material for which you do not
|
||||
control copyright. Those thus making or running the covered works for
|
||||
you must do so exclusively on your behalf, under your direction and
|
||||
control, on terms that prohibit them from making any copies of your
|
||||
copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under the
|
||||
conditions stated below. Sublicensing is not allowed; section 10 makes
|
||||
it unnecessary.
|
||||
|
||||
#### 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such
|
||||
circumvention is effected by exercising rights under this License with
|
||||
respect to the covered work, and you disclaim any intention to limit
|
||||
operation or modification of the work as a means of enforcing, against
|
||||
the work's users, your or third parties' legal rights to forbid
|
||||
circumvention of technological measures.
|
||||
|
||||
#### 4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
#### 5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these
|
||||
conditions:
|
||||
|
||||
- a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
- b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under
|
||||
section 7. This requirement modifies the requirement in section 4
|
||||
to "keep intact all notices".
|
||||
- c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
- d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
#### 6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms of
|
||||
sections 4 and 5, provided that you also convey the machine-readable
|
||||
Corresponding Source under the terms of this License, in one of these
|
||||
ways:
|
||||
|
||||
- a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
- b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the Corresponding
|
||||
Source from a network server at no charge.
|
||||
- c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
- d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
- e) Convey the object code using peer-to-peer transmission,
|
||||
provided you inform other peers where the object code and
|
||||
Corresponding Source of the work are being offered to the general
|
||||
public at no charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal,
|
||||
family, or household purposes, or (2) anything designed or sold for
|
||||
incorporation into a dwelling. In determining whether a product is a
|
||||
consumer product, doubtful cases shall be resolved in favor of
|
||||
coverage. For a particular product received by a particular user,
|
||||
"normally used" refers to a typical or common use of that class of
|
||||
product, regardless of the status of the particular user or of the way
|
||||
in which the particular user actually uses, or expects or is expected
|
||||
to use, the product. A product is a consumer product regardless of
|
||||
whether the product has substantial commercial, industrial or
|
||||
non-consumer uses, unless such uses represent the only significant
|
||||
mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to
|
||||
install and execute modified versions of a covered work in that User
|
||||
Product from a modified version of its Corresponding Source. The
|
||||
information must suffice to ensure that the continued functioning of
|
||||
the modified object code is in no case prevented or interfered with
|
||||
solely because modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or
|
||||
updates for a work that has been modified or installed by the
|
||||
recipient, or for the User Product in which it has been modified or
|
||||
installed. Access to a network may be denied when the modification
|
||||
itself materially and adversely affects the operation of the network
|
||||
or violates the rules and protocols for communication across the
|
||||
network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
#### 7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders
|
||||
of that material) supplement the terms of this License with terms:
|
||||
|
||||
- a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
- b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
- c) Prohibiting misrepresentation of the origin of that material,
|
||||
or requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
- d) Limiting the use for publicity purposes of names of licensors
|
||||
or authors of the material; or
|
||||
- e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
- f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions
|
||||
of it) with contractual assumptions of liability to the recipient,
|
||||
for any liability that these contractual assumptions directly
|
||||
impose on those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions; the
|
||||
above requirements apply either way.
|
||||
|
||||
#### 8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your license
|
||||
from a particular copyright holder is reinstated (a) provisionally,
|
||||
unless and until the copyright holder explicitly and finally
|
||||
terminates your license, and (b) permanently, if the copyright holder
|
||||
fails to notify you of the violation by some reasonable means prior to
|
||||
60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
#### 9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or run
|
||||
a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
#### 10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
#### 11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims owned
|
||||
or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within the
|
||||
scope of its coverage, prohibits the exercise of, or is conditioned on
|
||||
the non-exercise of one or more of the rights that are specifically
|
||||
granted under this License. You may not convey a covered work if you
|
||||
are a party to an arrangement with a third party that is in the
|
||||
business of distributing software, under which you make payment to the
|
||||
third party based on the extent of your activity of conveying the
|
||||
work, and under which the third party grants, to any of the parties
|
||||
who would receive the covered work from you, a discriminatory patent
|
||||
license (a) in connection with copies of the covered work conveyed by
|
||||
you (or copies made from those copies), or (b) primarily for and in
|
||||
connection with specific products or compilations that contain the
|
||||
covered work, unless you entered into that arrangement, or that patent
|
||||
license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
#### 12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under
|
||||
this License and any other pertinent obligations, then as a
|
||||
consequence you may not convey it at all. For example, if you agree to
|
||||
terms that obligate you to collect a royalty for further conveying
|
||||
from those to whom you convey the Program, the only way you could
|
||||
satisfy both those terms and this License would be to refrain entirely
|
||||
from conveying the Program.
|
||||
|
||||
#### 13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
#### 14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions
|
||||
of the GNU General Public License from time to time. Such new versions
|
||||
will be similar in spirit to the present version, but may differ in
|
||||
detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies that a certain numbered version of the GNU General Public
|
||||
License "or any later version" applies to it, you have the option of
|
||||
following the terms and conditions either of that numbered version or
|
||||
of any later version published by the Free Software Foundation. If the
|
||||
Program does not specify a version number of the GNU General Public
|
||||
License, you may choose any version ever published by the Free
|
||||
Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future versions
|
||||
of the GNU General Public License can be used, that proxy's public
|
||||
statement of acceptance of a version permanently authorizes you to
|
||||
choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
#### 15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
|
||||
WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
|
||||
PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
|
||||
DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
|
||||
CORRECTION.
|
||||
|
||||
#### 16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR
|
||||
CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
|
||||
ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT
|
||||
NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR
|
||||
LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM
|
||||
TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER
|
||||
PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
#### 17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
### How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these
|
||||
terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest to
|
||||
attach them to the start of each source file to most effectively state
|
||||
the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper
|
||||
mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands \`show w' and \`show c' should show the
|
||||
appropriate parts of the General Public License. Of course, your
|
||||
program's commands might be different; for a GUI interface, you would
|
||||
use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. For more information on this, and how to apply and follow
|
||||
the GNU GPL, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your
|
||||
program into proprietary programs. If your program is a subroutine
|
||||
library, you may consider it more useful to permit linking proprietary
|
||||
applications with the library. If this is what you want to do, use the
|
||||
GNU Lesser General Public License instead of this License. But first,
|
||||
please read <https://www.gnu.org/licenses/why-not-lgpl.html>.
|
||||
90
README.md
@@ -1,9 +1,5 @@
|
||||
# <img width="40px" src="./assets/images/branding_logo.png" alt="LunaSea"></img> LunaSea
|
||||
|
||||
[](https://www.lunasea.app/appstore)
|
||||
[](https://www.lunasea.app/playstore)
|
||||
[](https://github.com/JagandeepBrar/LunaSea/blob/production/LICENSE)
|
||||
|
||||
LunaSea is a fully featured, open source self-hosted controller focused on giving you a seamless experience between all of your self-hosted media software remotely on your devices. LunaSea currently supports:
|
||||
|
||||
- [Lidarr](https://github.com/lidarr/lidarr)
|
||||
@@ -16,35 +12,37 @@ LunaSea is a fully featured, open source self-hosted controller focused on givin
|
||||
- [Tautulli](https://github.com/Tautulli/Tautulli)
|
||||
- [Wake on LAN](https://en.wikipedia.org/wiki/Wake-on-LAN)
|
||||
|
||||
LunaSea even comes with support for multiple instances of applications using profiles, backing up and restoring your configuration to your filesystem, an AMOLED black theme, and more!
|
||||
LunaSea even comes with support for webhook-based push notifications, multiple instances of applications using profiles, backup and restore functionality for your configuration, an AMOLED black theme, and more!
|
||||
|
||||
> Please note that LunaSea is purely a remote control application, it does not offer any functionality without software installed on a server/computer.
|
||||
|
||||
## Releases
|
||||
|
||||
All releases for every build channel can be downloaded from the [build bucket](https://builds.lunasea.app), and all stable releases for all platforms are also available on [GitHub](https://github.com/JagandeepBrar/LunaSea/releases).
|
||||
|
||||
- [Android](https://docs.lunasea.app/releases/android)
|
||||
- [iOS](https://docs.lunasea.app/releases/ios)
|
||||
- [Linux](https://docs.lunasea.app/releases/linux)
|
||||
- [macOS](https://docs.lunasea.app/releases/macos)
|
||||
- [Web](https://docs.lunasea.app/releases/web)
|
||||
- [Windows](https://docs.lunasea.app/releases/windows)
|
||||
|
||||
Interested in using prerelease build channels of LunaSea? Learn the differences between all the build channels and how to join one [here](https://www.lunasea.app/build-channels)!
|
||||
|
||||
## Getting Started
|
||||
|
||||
- [Releases](https://github.com/JagandeepBrar/LunaSea/releases)
|
||||
- [(Android) Play Store](https://www.lunasea.app/playstore)
|
||||
- [(iOS) App Store](https://www.lunasea.app/appstore)
|
||||
- [(macOS) GitHub](https://github.com/JagandeepBrar/LunaSea/releases)
|
||||
- [(macOS) Homebrew](https://formulae.brew.sh/cask/lunasea)
|
||||
- [Build Guide](https://github.com/JagandeepBrar/LunaSea/wiki/Build-Guide)
|
||||
- [(Android) Keystore Setup](https://github.com/JagandeepBrar/LunaSea/wiki/Configure-Keystore)
|
||||
- [(iOS) Development Certificate Setup](https://github.com/JagandeepBrar/LunaSea/wiki/Setup-of-Development-Certificate)
|
||||
- [Documentation](https://www.lunasea.app/docs)
|
||||
- [Feedback & Feature Requests Board](https://www.lunasea.app/feedback)
|
||||
- [Frequently Asked Questions](https://docs.lunasea.app/getting-started/frequently-asked-questions)
|
||||
|
||||
## Support
|
||||
|
||||
[](https://www.lunasea.app/discord)
|
||||
[](https://www.lunasea.app/reddit)
|
||||
[](https://www.lunasea.app/feedback)
|
||||
|
||||
**Please only post bugs and issues to GitHub**. Use the [feedback & feature requests board](https://www.lunasea.app/feedback) for requests and general feedback.
|
||||
**Please only create an issue on GitHub for bugs and software issues**. Post in the [discussions board](https://github.com/JagandeepBrar/LunaSea/discussions) or the [Discord forum](https://www.lunasea.app/discord) for requests and general feedback.
|
||||
|
||||
- [Discord](https://www.lunasea.app/discord)
|
||||
- [Email](mailto:hello@lunasea.app)
|
||||
- [GitHub (Issues & Bug Reports Only)](https://github.com/JagandeepBrar/LunaSea/issues)
|
||||
- [Reddit](https://www.lunasea.app/reddit)
|
||||
- [Website](https://www.lunasea.app)
|
||||
|
||||
@@ -54,61 +52,5 @@ LunaSea even comes with support for multiple instances of applications using pro
|
||||
|
||||
Thank you to all tools and services for offering free subscriptions for open-source projects!
|
||||
|
||||
- [Gitbook](https://www.gitbook.com): Gitbook is used to host LunaSea's documentation
|
||||
- [Hellonext](https://www.hellonext.co): Hellonext is used to host LunaSea's feedback board and roadmap
|
||||
- [docs.page](https://docs.page/): docs.page is used to host LunaSea's documentation
|
||||
- [Weblate](https://weblate.org): Weblate is used to gather community localization for LunaSea
|
||||
|
||||
## Contributors
|
||||
|
||||
<!-- prettier-ignore-start -->
|
||||
<!-- markdownlint-disable -->
|
||||
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
|
||||
[](#contributors-)
|
||||
<!-- ALL-CONTRIBUTORS-BADGE:END -->
|
||||
<!-- markdownlint-restore -->
|
||||
<!-- prettier-ignore-end -->
|
||||
|
||||
Thank you to everyone who has helped contribute to LunaSea, from development to localization efforts!
|
||||
|
||||
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
|
||||
<!-- prettier-ignore-start -->
|
||||
<!-- markdownlint-disable -->
|
||||
<table>
|
||||
<tr>
|
||||
<td align="center"><a href="https://www.jagandeepbrar.io"><img src="https://avatars.githubusercontent.com/u/3048295?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jagandeep Brar</b></sub></a><br /><a href="https://github.com/JagandeepBrar/LunaSea/commits?author=JagandeepBrar" title="Code">💻</a> <a href="#design-JagandeepBrar" title="Design">🎨</a> <a href="#ideas-JagandeepBrar" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center"><a href="https://github.com/lightglitch"><img src="https://avatars.githubusercontent.com/u/196953?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Mário Franco</b></sub></a><br /><a href="https://github.com/JagandeepBrar/LunaSea/commits?author=lightglitch" title="Code">💻</a> <a href="#translation-lightglitch" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://pythonexplainedto.me/"><img src="https://avatars.githubusercontent.com/u/41962737?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Patrik Hauguth</b></sub></a><br /><a href="#translation-Phaugt" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://liberapay.com/kingu/"><img src="https://avatars.githubusercontent.com/u/13802408?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Allan Nordhøy</b></sub></a><br /><a href="#translation-comradekingu" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/cpt-kuesel"><img src="https://avatars.githubusercontent.com/u/79487102?v=4?s=100" width="100px;" alt=""/><br /><sub><b>cpt-kuesel</b></sub></a><br /><a href="#translation-cpt-kuesel" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/KovalevArtem"><img src="https://avatars.githubusercontent.com/u/36500228?v=4?s=100" width="100px;" alt=""/><br /><sub><b>KovalevArtem</b></sub></a><br /><a href="#translation-KovalevArtem" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/iFelix18"><img src="https://avatars.githubusercontent.com/u/19800006?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Davide</b></sub></a><br /><a href="#translation-iFelix18" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/AliMickey"><img src="https://avatars.githubusercontent.com/u/60691199?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Micky</b></sub></a><br /><a href="https://github.com/JagandeepBrar/LunaSea/commits?author=AliMickey" title="Documentation">📖</a></td>
|
||||
<td align="center"><a href="https://ersen.srht.site/"><img src="https://avatars.githubusercontent.com/u/88676873?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Oğuz Ersen</b></sub></a><br /><a href="#translation-ersen0" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/bittin"><img src="https://avatars.githubusercontent.com/u/43197?v=4?s=100" width="100px;" alt=""/><br /><sub><b>bittin</b></sub></a><br /><a href="#translation-bittin" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/almontegil"><img src="https://avatars.githubusercontent.com/u/68232356?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Gil</b></sub></a><br /><a href="#translation-almontegil" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/TheSander562"><img src="https://avatars.githubusercontent.com/u/14059770?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Sander Lambrechts</b></sub></a><br /><a href="#translation-TheSander562" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/Guilhermerrrr"><img src="https://avatars.githubusercontent.com/u/92966143?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Guilhermerrrr</b></sub></a><br /><a href="#translation-Guilhermerrrr" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/Ben-Wallner"><img src="https://avatars.githubusercontent.com/u/24373331?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ben Biber</b></sub></a><br /><a href="#translation-Ben-Wallner" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/Sytom"><img src="https://avatars.githubusercontent.com/u/30535521?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Sytom</b></sub></a><br /><a href="#translation-Sytom" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://xxzj990.top"><img src="https://avatars.githubusercontent.com/u/5134154?v=4?s=100" width="100px;" alt=""/><br /><sub><b>xxzj990</b></sub></a><br /><a href="#translation-xxzj990" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/Qstick"><img src="https://avatars.githubusercontent.com/u/376117?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Qstick</b></sub></a><br /><a href="https://github.com/JagandeepBrar/LunaSea/commits?author=Qstick" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://www.openflixr.com"><img src="https://avatars.githubusercontent.com/u/3245077?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Mark Frelink</b></sub></a><br /><a href="#translation-mfrelink" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/diemade"><img src="https://avatars.githubusercontent.com/u/174809?v=4?s=100" width="100px;" alt=""/><br /><sub><b>diemade</b></sub></a><br /><a href="#translation-diemade" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://feikojoosten.com"><img src="https://avatars.githubusercontent.com/u/10920052?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Feiko Joosten</b></sub></a><br /><a href="#translation-FeikoJoosten" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/TheMaxul"><img src="https://avatars.githubusercontent.com/u/2436527?v=4?s=100" width="100px;" alt=""/><br /><sub><b>TheMaxul</b></sub></a><br /><a href="#translation-TheMaxul" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="http://www.xrths.fr"><img src="https://avatars.githubusercontent.com/u/40337934?v=4?s=100" width="100px;" alt=""/><br /><sub><b>xrths</b></sub></a><br /><a href="https://github.com/JagandeepBrar/LunaSea/commits?author=xrths" title="Documentation">📖</a></td>
|
||||
<td align="center"><a href="https://lisacintosh.itch.io"><img src="https://avatars.githubusercontent.com/u/6952213?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Maxime Leroy</b></sub></a><br /><a href="#translation-Lisapple" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/vc5"><img src="https://avatars.githubusercontent.com/u/13097192?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Vincent</b></sub></a><br /><a href="#translation-vc5" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<!-- markdownlint-restore -->
|
||||
<!-- prettier-ignore-end -->
|
||||
|
||||
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
||||
|
||||
@@ -2,19 +2,23 @@ include: package:flutter_lints/flutter.yaml
|
||||
analyzer:
|
||||
exclude:
|
||||
- 'test/**'
|
||||
- 'test.g.dart'
|
||||
- 'lib/**/*.g.dart'
|
||||
|
||||
linter:
|
||||
rules:
|
||||
avoid_function_literals_in_foreach_calls: false
|
||||
avoid_positional_boolean_parameters: false
|
||||
avoid_types_on_closure_parameters: false
|
||||
constant_identifier_names: false
|
||||
lines_longer_than_80_chars: false
|
||||
omit_local_variable_types: false
|
||||
one_member_abstracts: false
|
||||
public_member_api_docs: false
|
||||
always_use_package_imports: true
|
||||
library_private_types_in_public_api: false
|
||||
# Will be disabled and required once other linting rules have been fixed
|
||||
prefer_relative_imports: false
|
||||
depend_on_referenced_packages: false
|
||||
use_build_context_synchronously: false
|
||||
sort_child_properties_last: false
|
||||
no_leading_underscores_for_local_identifiers: false
|
||||
curly_braces_in_flow_control_structures: false
|
||||
unnecessary_this: false
|
||||
avoid_catches_without_on_clauses: false
|
||||
|
||||
@@ -3,25 +3,25 @@ GEM
|
||||
specs:
|
||||
CFPropertyList (3.0.5)
|
||||
rexml
|
||||
addressable (2.8.0)
|
||||
public_suffix (>= 2.0.2, < 5.0)
|
||||
addressable (2.8.1)
|
||||
public_suffix (>= 2.0.2, < 6.0)
|
||||
artifactory (3.0.15)
|
||||
atomos (0.1.3)
|
||||
aws-eventstream (1.2.0)
|
||||
aws-partitions (1.566.0)
|
||||
aws-sdk-core (3.129.1)
|
||||
aws-partitions (1.655.0)
|
||||
aws-sdk-core (3.166.0)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
aws-partitions (~> 1, >= 1.525.0)
|
||||
aws-partitions (~> 1, >= 1.651.0)
|
||||
aws-sigv4 (~> 1.5)
|
||||
jmespath (~> 1, >= 1.6.1)
|
||||
aws-sdk-kms (1.59.0)
|
||||
aws-sdk-core (~> 3, >= 3.165.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
jmespath (~> 1.0)
|
||||
aws-sdk-kms (1.55.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-s3 (1.113.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sdk-s3 (1.117.1)
|
||||
aws-sdk-core (~> 3, >= 3.165.0)
|
||||
aws-sdk-kms (~> 1)
|
||||
aws-sigv4 (~> 1.4)
|
||||
aws-sigv4 (1.4.0)
|
||||
aws-sigv4 (1.5.2)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
babosa (1.0.4)
|
||||
claide (1.1.0)
|
||||
@@ -34,10 +34,10 @@ GEM
|
||||
rake (>= 12.0.0, < 14.0.0)
|
||||
domain_name (0.5.20190701)
|
||||
unf (>= 0.0.5, < 1.0.0)
|
||||
dotenv (2.7.6)
|
||||
dotenv (2.8.1)
|
||||
emoji_regex (3.2.3)
|
||||
excon (0.91.0)
|
||||
faraday (1.10.0)
|
||||
excon (0.93.1)
|
||||
faraday (1.10.2)
|
||||
faraday-em_http (~> 1.0)
|
||||
faraday-em_synchrony (~> 1.0)
|
||||
faraday-excon (~> 1.1)
|
||||
@@ -56,8 +56,8 @@ GEM
|
||||
faraday-em_synchrony (1.0.0)
|
||||
faraday-excon (1.1.0)
|
||||
faraday-httpclient (1.0.1)
|
||||
faraday-multipart (1.0.3)
|
||||
multipart-post (>= 1.2, < 3)
|
||||
faraday-multipart (1.0.4)
|
||||
multipart-post (~> 2)
|
||||
faraday-net_http (1.0.1)
|
||||
faraday-net_http_persistent (1.2.0)
|
||||
faraday-patron (1.0.0)
|
||||
@@ -66,7 +66,7 @@ GEM
|
||||
faraday_middleware (1.2.0)
|
||||
faraday (~> 1.0)
|
||||
fastimage (2.2.6)
|
||||
fastlane (2.204.3)
|
||||
fastlane (2.210.1)
|
||||
CFPropertyList (>= 2.3, < 4.0.0)
|
||||
addressable (>= 2.8, < 3.0.0)
|
||||
artifactory (~> 3.0)
|
||||
@@ -106,9 +106,9 @@ GEM
|
||||
xcpretty (~> 0.3.0)
|
||||
xcpretty-travis-formatter (>= 0.0.3)
|
||||
gh_inspector (1.1.3)
|
||||
google-apis-androidpublisher_v3 (0.16.0)
|
||||
google-apis-core (>= 0.4, < 2.a)
|
||||
google-apis-core (0.4.2)
|
||||
google-apis-androidpublisher_v3 (0.30.0)
|
||||
google-apis-core (>= 0.9.1, < 2.a)
|
||||
google-apis-core (0.9.1)
|
||||
addressable (~> 2.5, >= 2.5.1)
|
||||
googleauth (>= 0.16.2, < 2.a)
|
||||
httpclient (>= 2.8.1, < 3.a)
|
||||
@@ -117,27 +117,27 @@ GEM
|
||||
retriable (>= 2.0, < 4.a)
|
||||
rexml
|
||||
webrick
|
||||
google-apis-iamcredentials_v1 (0.10.0)
|
||||
google-apis-core (>= 0.4, < 2.a)
|
||||
google-apis-playcustomapp_v1 (0.7.0)
|
||||
google-apis-core (>= 0.4, < 2.a)
|
||||
google-apis-storage_v1 (0.11.0)
|
||||
google-apis-core (>= 0.4, < 2.a)
|
||||
google-apis-iamcredentials_v1 (0.16.0)
|
||||
google-apis-core (>= 0.9.1, < 2.a)
|
||||
google-apis-playcustomapp_v1 (0.12.0)
|
||||
google-apis-core (>= 0.9.1, < 2.a)
|
||||
google-apis-storage_v1 (0.19.0)
|
||||
google-apis-core (>= 0.9.0, < 2.a)
|
||||
google-cloud-core (1.6.0)
|
||||
google-cloud-env (~> 1.0)
|
||||
google-cloud-errors (~> 1.0)
|
||||
google-cloud-env (1.5.0)
|
||||
faraday (>= 0.17.3, < 2.0)
|
||||
google-cloud-errors (1.2.0)
|
||||
google-cloud-storage (1.36.1)
|
||||
google-cloud-env (1.6.0)
|
||||
faraday (>= 0.17.3, < 3.0)
|
||||
google-cloud-errors (1.3.0)
|
||||
google-cloud-storage (1.44.0)
|
||||
addressable (~> 2.8)
|
||||
digest-crc (~> 0.4)
|
||||
google-apis-iamcredentials_v1 (~> 0.1)
|
||||
google-apis-storage_v1 (~> 0.1)
|
||||
google-apis-storage_v1 (~> 0.19.0)
|
||||
google-cloud-core (~> 1.6)
|
||||
googleauth (>= 0.16.2, < 2.a)
|
||||
mini_mime (~> 1.0)
|
||||
googleauth (1.1.2)
|
||||
googleauth (1.3.0)
|
||||
faraday (>= 0.17.3, < 3.a)
|
||||
jwt (>= 1.4, < 3.0)
|
||||
memoist (~> 0.16)
|
||||
@@ -145,12 +145,12 @@ GEM
|
||||
os (>= 0.9, < 2.0)
|
||||
signet (>= 0.16, < 2.a)
|
||||
highline (2.0.3)
|
||||
http-cookie (1.0.4)
|
||||
http-cookie (1.0.5)
|
||||
domain_name (~> 0.5)
|
||||
httpclient (2.8.3)
|
||||
jmespath (1.6.1)
|
||||
json (2.6.1)
|
||||
jwt (2.3.0)
|
||||
json (2.6.2)
|
||||
jwt (2.5.0)
|
||||
memoist (0.16.2)
|
||||
mini_magick (4.11.0)
|
||||
mini_mime (1.1.2)
|
||||
@@ -161,9 +161,9 @@ GEM
|
||||
optparse (0.1.1)
|
||||
os (1.1.4)
|
||||
plist (3.6.0)
|
||||
public_suffix (4.0.6)
|
||||
public_suffix (5.0.0)
|
||||
rake (13.0.6)
|
||||
representable (3.1.1)
|
||||
representable (3.2.0)
|
||||
declarative (< 0.1.0)
|
||||
trailblazer-option (>= 0.1.1, < 0.2.0)
|
||||
uber (< 0.2.0)
|
||||
@@ -173,9 +173,9 @@ GEM
|
||||
ruby2_keywords (0.0.5)
|
||||
rubyzip (2.3.2)
|
||||
security (0.1.3)
|
||||
signet (0.16.1)
|
||||
signet (0.17.0)
|
||||
addressable (~> 2.8)
|
||||
faraday (>= 0.17.5, < 3.0)
|
||||
faraday (>= 0.17.5, < 3.a)
|
||||
jwt (>= 1.5, < 3.0)
|
||||
multi_json (~> 1.10)
|
||||
simctl (1.6.8)
|
||||
@@ -192,11 +192,11 @@ GEM
|
||||
uber (0.1.0)
|
||||
unf (0.1.4)
|
||||
unf_ext
|
||||
unf_ext (0.0.8)
|
||||
unf_ext (0.0.8.2)
|
||||
unicode-display_width (1.8.0)
|
||||
webrick (1.7.0)
|
||||
word_wrap (1.0.0)
|
||||
xcodeproj (1.21.0)
|
||||
xcodeproj (1.22.0)
|
||||
CFPropertyList (>= 2.3.3, < 4.0)
|
||||
atomos (~> 0.1.3)
|
||||
claide (>= 1.0.2, < 2.0)
|
||||
@@ -209,10 +209,10 @@ GEM
|
||||
xcpretty (~> 0.2, >= 0.0.7)
|
||||
|
||||
PLATFORMS
|
||||
x86_64-darwin-21
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
fastlane
|
||||
|
||||
BUNDLED WITH
|
||||
2.2.32
|
||||
2.3.25
|
||||
|
||||
@@ -32,7 +32,7 @@ if (keystorePropertiesFile.exists()) {
|
||||
}
|
||||
|
||||
android {
|
||||
compileSdkVersion 31
|
||||
compileSdkVersion 33
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
@@ -50,7 +50,7 @@ android {
|
||||
defaultConfig {
|
||||
applicationId "app.lunasea.lunasea"
|
||||
minSdkVersion 24
|
||||
targetSdkVersion 31
|
||||
targetSdkVersion 33
|
||||
versionCode flutterVersionCode.toInteger()
|
||||
versionName flutterVersionName
|
||||
}
|
||||
@@ -65,6 +65,10 @@ android {
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
debug {
|
||||
applicationIdSuffix ".debug"
|
||||
versionNameSuffix "-dev"
|
||||
}
|
||||
release {
|
||||
signingConfig signingConfigs.release
|
||||
}
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="app.lunasea.lunasea">
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="com.android.vending.BILLING" />
|
||||
</manifest>
|
||||
|
||||
@@ -24,10 +24,6 @@
|
||||
android:name="io.flutter.embedding.android.NormalTheme"
|
||||
android:resource="@style/NormalTheme"
|
||||
/>
|
||||
<meta-data
|
||||
android:name="io.flutter.embedding.android.SplashScreenDrawable"
|
||||
android:resource="@drawable/launch_background"
|
||||
/>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
@@ -40,7 +36,8 @@
|
||||
android:value="2" />
|
||||
</application>
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="com.android.vending.BILLING" />
|
||||
</manifest>
|
||||
|
||||
|
Before Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 6.6 KiB |
|
Before Width: | Height: | Size: 9.3 KiB |
12
android/app/src/main/res/drawable/ic_launcher_foreground.xml
Normal file
@@ -0,0 +1,12 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:viewportWidth="432"
|
||||
android:viewportHeight="432"
|
||||
android:width="108dp"
|
||||
android:height="108dp">
|
||||
<path
|
||||
android:pathData="M262.3 163.2c2.6 -0.2 3.5 0.2 3.2 1.1 -0.3 0.6 -3.1 2.3 -6.2 3.7 -3.1 1.4 -7.9 4.5 -10.5 6.9 -2.7 2.4 -6.1 6.4 -7.5 9 -1.5 2.5 -3.5 7.2 -4.5 10.4 -1 3.1 -1.8 8 -1.8 10.7 0 2.8 0.8 7.6 1.8 10.8 1 3.1 2.9 7.7 4.4 10.2 1.4 2.5 4.8 6.5 7.4 9 2.7 2.4 7.8 5.8 11.4 7.4 5.8 2.7 7.5 3 16 3 7.5 0 10.6 -0.5 14.7 -2.2 2.9 -1.2 7.6 -3.9 10.4 -5.9 2.8 -2.1 6.8 -6.5 9.1 -9.8 2.2 -3.3 4.3 -7.2 4.6 -8.8 0.4 -1.5 1.3 -2.9 1.9 -3.2 1 -0.4 1.2 1 0.7 5.8 -0.4 3.4 -1.5 8.9 -2.6 12.2 -1.1 3.3 -3.5 8.3 -5.3 11 -1.8 2.8 -5.7 7.3 -8.6 10.1 -3 2.8 -7.4 6.2 -9.9 7.6 -2.5 1.4 -7.6 3.5 -11.5 4.7 -4.6 1.4 -9.6 2.1 -14.5 2.1 -4.1 0 -10 -0.7 -13 -1.5 -3 -0.8 -8 -2.7 -11 -4.2 -3 -1.5 -7.8 -4.7 -10.5 -7.1 -2.8 -2.3 -6.9 -7.1 -9.2 -10.5 -2.4 -3.4 -5.3 -9.1 -6.4 -12.7 -1.7 -5 -2.2 -9.1 -2.3 -17.7 -0.1 -6.2 0.2 -11.3 0.6 -11.3 0.5 0 0.8 -0.6 0.8 -1.2 0 -0.7 1.9 -5.1 4.2 -9.8 3 -6 6 -10.2 10.3 -14.4 3.8 -3.7 8.7 -7.1 13.5 -9.4 4.1 -2 7.9 -4 8.4 -4.4 0.5 -0.3 2.5 -0.8 4.5 -1.1 2 -0.2 5.3 -0.4 7.3 -0.5z"
|
||||
android:fillColor="#4ECCA2" />
|
||||
<path
|
||||
android:pathData="M247 165.1c3.2 -0.1 2.8 0.3 -4.5 3.8 -5.3 2.6 -10 5.8 -14 9.7 -4.3 4.2 -7.3 8.4 -10.3 14.4 -2.3 4.7 -4.2 8.9 -4.2 9.5 0 0.6 -2.3 2.1 -5.2 3.5 -2.9 1.4 -7.9 4.2 -11.3 6.4 -3.3 2.1 -14.6 12.3 -25 22.5 -10.4 10.3 -20.8 20.1 -23 21.8 -2.2 1.7 -6.7 4.4 -10 6.1 -3.3 1.6 -8.8 3.8 -12.2 4.8 -3.5 1.1 -6.5 1.6 -6.8 1.2 -0.3 -0.5 1.4 -2.2 3.8 -3.9 2.3 -1.8 5.9 -5 8 -7.3 2.1 -2.3 6.2 -7 9.1 -10.6 2.9 -3.6 8.8 -11 13.2 -16.5 4.3 -5.5 9.4 -11.8 11.3 -14 1.9 -2.2 8.2 -8.7 14 -14.5 5.9 -5.8 14.2 -13 18.6 -16.1 4.4 -3.1 10.9 -7.2 14.5 -9.2 3.6 -2 8.5 -4.4 11 -5.3 2.5 -0.9 7.9 -2.7 12 -4 4.1 -1.2 9.1 -2.3 11 -2.3z"
|
||||
android:fillColor="#2EA07B" />
|
||||
</vector>
|
||||
13
android/app/src/main/res/drawable/ic_launcher_monochrome.xml
Normal file
@@ -0,0 +1,13 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:viewportWidth="432"
|
||||
android:viewportHeight="432"
|
||||
android:width="108dp"
|
||||
android:height="108dp">
|
||||
<path
|
||||
android:fillAlpha="0.6"
|
||||
android:pathData="M262.3 163.2c2.6 -0.2 3.5 0.2 3.2 1.1 -0.3 0.6 -3.1 2.3 -6.2 3.7 -3.1 1.4 -7.9 4.5 -10.5 6.9 -2.7 2.4 -6.1 6.4 -7.5 9 -1.5 2.5 -3.5 7.2 -4.5 10.4 -1 3.1 -1.8 8 -1.8 10.7 0 2.8 0.8 7.6 1.8 10.8 1 3.1 2.9 7.7 4.4 10.2 1.4 2.5 4.8 6.5 7.4 9 2.7 2.4 7.8 5.8 11.4 7.4 5.8 2.7 7.5 3 16 3 7.5 0 10.6 -0.5 14.7 -2.2 2.9 -1.2 7.6 -3.9 10.4 -5.9 2.8 -2.1 6.8 -6.5 9.1 -9.8 2.2 -3.3 4.3 -7.2 4.6 -8.8 0.4 -1.5 1.3 -2.9 1.9 -3.2 1 -0.4 1.2 1 0.7 5.8 -0.4 3.4 -1.5 8.9 -2.6 12.2 -1.1 3.3 -3.5 8.3 -5.3 11 -1.8 2.8 -5.7 7.3 -8.6 10.1 -3 2.8 -7.4 6.2 -9.9 7.6 -2.5 1.4 -7.6 3.5 -11.5 4.7 -4.6 1.4 -9.6 2.1 -14.5 2.1 -4.1 0 -10 -0.7 -13 -1.5 -3 -0.8 -8 -2.7 -11 -4.2 -3 -1.5 -7.8 -4.7 -10.5 -7.1 -2.8 -2.3 -6.9 -7.1 -9.2 -10.5 -2.4 -3.4 -5.3 -9.1 -6.4 -12.7 -1.7 -5 -2.2 -9.1 -2.3 -17.7 -0.1 -6.2 0.2 -11.3 0.6 -11.3 0.5 0 0.8 -0.6 0.8 -1.2 0 -0.7 1.9 -5.1 4.2 -9.8 3 -6 6 -10.2 10.3 -14.4 3.8 -3.7 8.7 -7.1 13.5 -9.4 4.1 -2 7.9 -4 8.4 -4.4 0.5 -0.3 2.5 -0.8 4.5 -1.1 2 -0.2 5.3 -0.4 7.3 -0.5z"
|
||||
android:fillColor="#4ECCA2" />
|
||||
<path
|
||||
android:pathData="M247 165.1c3.2 -0.1 2.8 0.3 -4.5 3.8 -5.3 2.6 -10 5.8 -14 9.7 -4.3 4.2 -7.3 8.4 -10.3 14.4 -2.3 4.7 -4.2 8.9 -4.2 9.5 0 0.6 -2.3 2.1 -5.2 3.5 -2.9 1.4 -7.9 4.2 -11.3 6.4 -3.3 2.1 -14.6 12.3 -25 22.5 -10.4 10.3 -20.8 20.1 -23 21.8 -2.2 1.7 -6.7 4.4 -10 6.1 -3.3 1.6 -8.8 3.8 -12.2 4.8 -3.5 1.1 -6.5 1.6 -6.8 1.2 -0.3 -0.5 1.4 -2.2 3.8 -3.9 2.3 -1.8 5.9 -5 8 -7.3 2.1 -2.3 6.2 -7 9.1 -10.6 2.9 -3.6 8.8 -11 13.2 -16.5 4.3 -5.5 9.4 -11.8 11.3 -14 1.9 -2.2 8.2 -8.7 14 -14.5 5.9 -5.8 14.2 -13 18.6 -16.1 4.4 -3.1 10.9 -7.2 14.5 -9.2 3.6 -2 8.5 -4.4 11 -5.3 2.5 -0.9 7.9 -2.7 12 -4 4.1 -1.2 9.1 -2.3 11 -2.3z"
|
||||
android:fillColor="#2EA07B" />
|
||||
</vector>
|
||||
@@ -2,4 +2,5 @@
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@color/ic_launcher_background"/>
|
||||
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
|
||||
<monochrome android:drawable="@drawable/ic_launcher_monochrome"/>
|
||||
</adaptive-icon>
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
<resources>
|
||||
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
|
||||
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
|
||||
<item name="android:forceDarkAllowed">false</item>
|
||||
<item name="android:windowFullscreen">false</item>
|
||||
<item name="android:windowSplashScreenBackground">#32323E</item>
|
||||
</style>
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
<!-- Show a splash screen on the activity. Automatically removed when
|
||||
Flutter draws its first frame -->
|
||||
<item name="android:windowBackground">@drawable/launch_background</item>
|
||||
<item name="android:forceDarkAllowed">false</item>
|
||||
<item name="android:windowFullscreen">false</item>
|
||||
</style>
|
||||
<!-- Theme applied to the Android Window as soon as the process has started.
|
||||
|
||||
@@ -4,7 +4,8 @@
|
||||
to allow setting breakpoints, to provide hot reload, etc.
|
||||
-->
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="com.android.vending.BILLING" />
|
||||
</manifest>
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
buildscript {
|
||||
ext.kotlin_version = '1.5.32'
|
||||
ext.kotlin_version = '1.7.20'
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:4.1.0'
|
||||
classpath 'com.android.tools.build:gradle:7.1.2'
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,30 +1,45 @@
|
||||
default_platform(:android)
|
||||
build_number = 1000000000 + number_of_commits()
|
||||
|
||||
platform :android do
|
||||
desc "Build App Bundle"
|
||||
lane :build do
|
||||
sh("flutter", "build", "appbundle", "--release", "--bundle-sksl-path=shaders/android_sksl.json", "--build-number=#{build_number}")
|
||||
lane :build_aab do |options|
|
||||
sh(
|
||||
"flutter",
|
||||
"build",
|
||||
"appbundle",
|
||||
"--release",
|
||||
"--bundle-sksl-path=shaders/android_sksl.json",
|
||||
"--build-number=#{options[:build_number]}",
|
||||
)
|
||||
|
||||
sh("mkdir", "-p", "../../output")
|
||||
sh("mv", "../../build/app/outputs/bundle/release/app-release.aab", "../../output/lunasea-android.aab")
|
||||
end
|
||||
|
||||
desc "Build APK"
|
||||
lane :build_apk do |options|
|
||||
sh(
|
||||
"flutter",
|
||||
"build",
|
||||
"apk",
|
||||
"--release",
|
||||
"--bundle-sksl-path=shaders/android_sksl.json",
|
||||
"--build-number=#{options[:build_number]}",
|
||||
)
|
||||
|
||||
sh("mkdir", "-p", "../../output")
|
||||
sh("mv", "../../build/app/outputs/flutter-apk/app-release.apk", "../../output/lunasea-android.apk")
|
||||
end
|
||||
|
||||
desc "Deploy to Google Play Store"
|
||||
lane :deploy do |options|
|
||||
lane :deploy_playstore do |options|
|
||||
upload_to_play_store(
|
||||
aab: options[:aab] || "../build/app/outputs/bundle/release/app-release.aab",
|
||||
aab: options[:aab],
|
||||
skip_upload_metadata: true,
|
||||
skip_upload_images: true,
|
||||
skip_upload_screenshots: true,
|
||||
track: options[:track] || "internal",
|
||||
version_name: options[:version_name] || "#{build_number}",
|
||||
)
|
||||
end
|
||||
|
||||
desc "Deploy metadata changes to Google Play"
|
||||
lane :metadata do
|
||||
upload_to_play_store(
|
||||
skip_upload_apk: true,
|
||||
skip_upload_aab: true,
|
||||
skip_upload_changelogs: true,
|
||||
track: options[:track],
|
||||
version_name: options[:version_name],
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -15,30 +15,30 @@ For _fastlane_ installation instructions, see [Installing _fastlane_](https://do
|
||||
|
||||
## Android
|
||||
|
||||
### android build
|
||||
### android build_aab
|
||||
|
||||
```sh
|
||||
[bundle exec] fastlane android build
|
||||
[bundle exec] fastlane android build_aab
|
||||
```
|
||||
|
||||
Build App Bundle
|
||||
|
||||
### android deploy
|
||||
### android build_apk
|
||||
|
||||
```sh
|
||||
[bundle exec] fastlane android deploy
|
||||
[bundle exec] fastlane android build_apk
|
||||
```
|
||||
|
||||
Build APK
|
||||
|
||||
### android deploy_playstore
|
||||
|
||||
```sh
|
||||
[bundle exec] fastlane android deploy_playstore
|
||||
```
|
||||
|
||||
Deploy to Google Play Store
|
||||
|
||||
### android metadata
|
||||
|
||||
```sh
|
||||
[bundle exec] fastlane android metadata
|
||||
```
|
||||
|
||||
Deploy metadata changes to Google Play
|
||||
|
||||
----
|
||||
|
||||
This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run.
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
Welcome to LunaSea v6.0.0!
|
||||
|
||||
This update introduces some major new and reworked features. Sonarr has been fully revamped to take full advantage of the features available in v3, Radarr and Sonarr have a new grid view, and the UI has had many big and small changes to make it faster, more consistent, and more performant! The full changelog is available within the application!
|
||||
@@ -1,3 +0,0 @@
|
||||
Thank you for testing upcoming releases of LunaSea! Please consider joining the Discord to give feedback to the developer.
|
||||
|
||||
Changes can be found on GitHub or by going to settings/system and tapping on the version tile!
|
||||
@@ -1,14 +0,0 @@
|
||||
LunaSea is a fully featured, open source self-hosted controller! Focused on giving you a seamless experience between all of your self-hosted media software, LunaSea supports:
|
||||
|
||||
- Lidarr
|
||||
- Radarr
|
||||
- Sonarr
|
||||
- SABnzbd
|
||||
- NZBGet
|
||||
- Newznab Indexer Searching
|
||||
- Wake on LAN
|
||||
- Tautulli
|
||||
|
||||
LunaSea even comes with support for multiple instances of applications using profiles, backing up and restoring your configuration to your filesystem, an AMOLED black theme, and more!
|
||||
|
||||
> Please note that LunaSea is purely a remote control application, it does not offer any functionality without software installed on a server/computer.
|
||||
@@ -1 +0,0 @@
|
||||
Self-Hosted Controller
|
||||
@@ -1 +0,0 @@
|
||||
LunaSea
|
||||
@@ -1,6 +1,5 @@
|
||||
#Fri Jun 23 08:50:38 CEST 2017
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip
|
||||
|
||||
@@ -1,59 +1 @@
|
||||
{
|
||||
"motd": "Welcome to LunaSea v10.0.0!\n\nThis update does not have a lot of user-facing changes but introduces substantial reworkings of core integrations and processes that will help make new releases of LunaSea more stable and easier to deploy in the future.",
|
||||
"new": [
|
||||
{
|
||||
"module": "Networking",
|
||||
"changes": [
|
||||
"(HTTP) Set user-agent to \"LunaSea/{version} {build}\""
|
||||
]
|
||||
},
|
||||
{
|
||||
"module": "Radarr",
|
||||
"changes": [
|
||||
"(Files) Show additional media metadata"
|
||||
]
|
||||
},
|
||||
{
|
||||
"module": "Settings",
|
||||
"changes": [
|
||||
"(Resources) Add test build information"
|
||||
]
|
||||
},
|
||||
{
|
||||
"module": "Sonarr",
|
||||
"changes": [
|
||||
"(Series) Support for searching entire series for monitored episodes"
|
||||
]
|
||||
},
|
||||
{
|
||||
"module": "UI/UX",
|
||||
"changes": [
|
||||
"(Block) Support skeleton-state loading"
|
||||
]
|
||||
}
|
||||
],
|
||||
"tweaks": [],
|
||||
"fixes": [
|
||||
{
|
||||
"module": "Database",
|
||||
"changes": [
|
||||
"Database entries could be unloaded from memory in some cases"
|
||||
]
|
||||
},
|
||||
{
|
||||
"module": "Radarr",
|
||||
"changes": [
|
||||
"(Availability) Prevent using preDB availability for movies",
|
||||
"(System Status) Hide irrelevant lines on about page for some installations"
|
||||
]
|
||||
},
|
||||
{
|
||||
"module": "UI/UX",
|
||||
"changes": [
|
||||
"(ListView) Correctly handle pull-to-refresh drag action on all platforms",
|
||||
"(Input Bar) Saving inputs would not actually update the underlying value in some cases"
|
||||
]
|
||||
}
|
||||
],
|
||||
"platform": []
|
||||
}
|
||||
{}
|
||||
@@ -1,35 +0,0 @@
|
||||
{
|
||||
"motd": "",
|
||||
"new": [
|
||||
{
|
||||
"module": "",
|
||||
"changes": [
|
||||
""
|
||||
]
|
||||
}
|
||||
],
|
||||
"tweaks": [
|
||||
{
|
||||
"module": "",
|
||||
"changes": [
|
||||
""
|
||||
]
|
||||
}
|
||||
],
|
||||
"fixes": [
|
||||
{
|
||||
"module": "",
|
||||
"changes": [
|
||||
""
|
||||
]
|
||||
}
|
||||
],
|
||||
"platform": [
|
||||
{
|
||||
"module": "",
|
||||
"changes": [
|
||||
""
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
111
assets/changelog_stable.json
Normal file
@@ -0,0 +1,111 @@
|
||||
{
|
||||
"motd": "Welcome to LunaSea v10.2.1!\n\nThis release adds some nice quality of life changes including the ability to set your boot module, automatic scrolling to the selected date in the calendar, and support for filesystem actions on web!\n\nThis build also includes some additional Android 13 fixes and other miscellaneous fixes and tweaks!",
|
||||
"feat": {
|
||||
"dashboard": [
|
||||
{
|
||||
"commit": "3ac2c5d791f94208a4004d161bb046c24b698345",
|
||||
"message": "(calendar) always show previous days in schedule view"
|
||||
},
|
||||
{
|
||||
"commit": "f1226e563899cfc0950865a9734448d4e00601b9",
|
||||
"message": "(calendar) scroll to selected date when loading the schedule view"
|
||||
}
|
||||
],
|
||||
"modules": [
|
||||
{
|
||||
"commit": "3dd087e361619889057a0b037b1eef35157a0988",
|
||||
"message": "ability to set the boot module"
|
||||
}
|
||||
],
|
||||
"-arr": [
|
||||
{
|
||||
"commit": "bccd1a43c42b349901137f8fc605f393b51d541a",
|
||||
"message": "(releases) button to open indexer information page"
|
||||
}
|
||||
],
|
||||
"lidarr": [
|
||||
{
|
||||
"commit": "c76418d26f1a5f52f5cb1e46951f1cf6726508c2",
|
||||
"message": "(links) add MusicBrainz"
|
||||
}
|
||||
],
|
||||
"radarr": [
|
||||
{
|
||||
"commit": "c9bd02b75086579f60ad8987c42ab217c12f6d43",
|
||||
"message": "(edit) support moving files when editing the storage path"
|
||||
}
|
||||
],
|
||||
"web": [
|
||||
{
|
||||
"commit": "7d437d5c3a34a8681c372570fc366e869f0b2090",
|
||||
"message": "(filesystem) support local filesystem read/save actions"
|
||||
}
|
||||
],
|
||||
"system": [
|
||||
{
|
||||
"commit": "c062b3d786e55bc3ba7fe767dd946d73efbef64f",
|
||||
"message": "launch recovery mode on bootstrap failure"
|
||||
},
|
||||
{
|
||||
"commit": "125596498ec9839e584912185ddc5b625602a701",
|
||||
"message": "(locale) translations update from Weblate"
|
||||
}
|
||||
]
|
||||
},
|
||||
"fix": {
|
||||
"firebase": [
|
||||
{
|
||||
"commit": "38f2eb4cb2a8e400ce2ecb0b6f2854469c9626fc",
|
||||
"message": "inject service file for older OS versions"
|
||||
},
|
||||
{
|
||||
"commit": "f3a3f222bd56beb4e961817b18d71f01fb7c5e81",
|
||||
"message": "upgrade to Firebase v10"
|
||||
}
|
||||
],
|
||||
"flutter": [
|
||||
{
|
||||
"commit": "3d794099a5418385dc1010f204c3f46fdbdd5503",
|
||||
"message": "upgrade packages"
|
||||
},
|
||||
{
|
||||
"commit": "cf5bfca265d03b0fd966dfb069393a4bbb24c672",
|
||||
"message": "upgrade to Flutter 3.3.7/857bd6b74c"
|
||||
}
|
||||
],
|
||||
"android": [
|
||||
{
|
||||
"commit": "25e0d051422b399de8c90e0fc71e57349e3355b7",
|
||||
"message": "support Android 13 filesystem access"
|
||||
},
|
||||
{
|
||||
"commit": "b7ceebcb679dbca935b6a1810c0c67a14002e358",
|
||||
"message": "utilize Kotlin v1.7.20 & Gradle v7.1.2"
|
||||
}
|
||||
],
|
||||
"calendar": [
|
||||
{
|
||||
"commit": "70ed750652ff419e6fed659a0785adc5064654e7",
|
||||
"message": "label unreleased movies as unreleased instead of missing"
|
||||
}
|
||||
]
|
||||
},
|
||||
"refactor": {
|
||||
"uiux": [
|
||||
{
|
||||
"commit": "958e6f156862c1092399649baa361cd955299c88",
|
||||
"message": "remove forced-upper case on headers"
|
||||
},
|
||||
{
|
||||
"commit": "d9623e992d2ac2039eaa4f069c739d968c921cc6",
|
||||
"message": "add circular radius to linear progression bars"
|
||||
}
|
||||
],
|
||||
"settings": [
|
||||
{
|
||||
"commit": "ac838f99a9c839ce4e36e5eae80f1100e2787dc5",
|
||||
"message": "consolidate appearance, network, and localization pages"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
BIN
assets/icon/icon_web.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
assets/icon/icon_windows.png
Normal file
|
After Width: | Height: | Size: 58 KiB |
@@ -1 +0,0 @@
|
||||
<svg id="svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400" viewBox="0, 0, 400,400"><g id="svgg"><path id="path0" d="M147.790 46.289 C 145.500 48.975,139.524 56.002,134.509 61.905 C 126.447 71.395,125.164 72.590,123.438 72.218 C 102.906 67.798,93.640 71.879,74.014 93.988 C 68.631 100.052,68.661 98.599,73.661 111.019 L 76.368 117.742 74.861 122.348 C 74.032 124.881,71.920 130.889,70.167 135.700 L 66.981 144.446 68.703 150.934 C 73.085 167.443,80.078 194.514,82.892 205.859 C 84.597 212.734,87.016 222.051,88.266 226.563 C 89.517 231.074,93.201 245.100,96.452 257.731 C 103.572 285.392,106.428 292.156,114.686 300.918 C 120.860 307.469,125.274 310.699,170.265 341.600 C 195.457 358.903,198.409 360.259,204.944 357.528 C 208.784 355.924,232.275 340.163,265.625 316.814 C 278.399 307.871,284.564 302.462,290.369 295.106 C 294.190 290.265,299.073 276.620,303.856 257.422 C 305.569 250.547,310.878 229.805,315.654 211.328 C 320.430 192.852,326.239 170.300,328.562 161.213 L 332.786 144.692 328.242 131.267 L 323.698 117.842 327.083 109.304 C 331.431 98.339,332.161 100.399,319.165 86.930 C 304.228 71.448,296.900 68.617,280.078 71.830 L 275.391 72.726 271.262 68.199 C 268.991 65.709,262.841 58.662,257.595 52.539 L 248.056 41.406 200.005 41.406 L 151.953 41.406 147.790 46.289 M211.328 92.630 C 213.477 93.329,216.289 94.360,217.578 94.922 C 222.184 96.931,230.683 99.219,233.537 99.219 C 236.680 99.219,258.040 95.750,262.500 94.516 C 264.004 94.099,265.630 93.757,266.113 93.754 C 267.569 93.747,287.542 119.994,294.776 131.419 C 304.141 146.212,303.921 150.047,293.061 161.242 C 289.681 164.727,281.267 173.788,274.365 181.377 C 259.477 197.747,259.432 197.851,263.161 206.971 C 269.719 223.010,265.502 236.410,251.811 243.037 C 247.433 245.157,237.796 242.482,228.906 236.678 C 227.832 235.976,224.897 234.090,222.383 232.485 C 216.667 228.837,204.875 217.033,204.180 214.265 C 203.578 211.865,207.412 207.918,215.398 202.716 C 241.972 185.407,241.125 186.711,234.265 173.658 C 225.045 156.117,223.897 152.787,225.804 149.128 C 228.227 144.479,229.226 143.996,263.477 130.913 C 274.777 126.597,274.158 125.665,259.044 124.241 C 242.730 122.705,233.795 123.783,219.971 128.955 C 212.050 131.918,212.028 132.103,216.616 156.641 C 222.530 188.273,222.856 186.411,210.969 188.942 C 201.158 191.031,198.758 191.036,189.244 188.988 C 177.061 186.366,177.510 188.405,182.806 159.763 C 188.102 131.115,188.159 131.760,180.078 128.925 C 164.747 123.545,157.700 122.711,140.666 124.257 C 125.689 125.616,125.108 126.553,136.535 130.918 C 181.606 148.133,180.388 146.555,167.256 170.703 C 159.080 185.739,159.215 186.234,174.112 195.885 C 197.516 211.049,198.015 211.626,193.295 218.056 C 182.837 232.303,156.260 246.945,148.062 242.976 C 135.771 237.026,130.908 223.686,135.930 209.695 C 140.830 196.043,142.358 198.797,112.189 166.918 C 93.665 147.345,93.892 145.224,117.922 113.386 C 120.311 110.220,123.496 105.983,125.000 103.970 C 126.504 101.956,129.038 98.787,130.630 96.928 L 133.526 93.548 136.880 94.392 C 142.906 95.909,163.299 99.219,166.618 99.219 C 168.414 99.219,174.402 97.663,180.047 95.730 C 196.296 90.165,202.005 89.599,211.328 92.630 M210.578 242.879 C 222.118 247.494,241.406 257.908,241.406 259.524 C 241.406 260.369,237.510 263.997,231.445 268.799 C 214.629 282.114,212.447 283.872,208.480 287.301 C 200.310 294.364,199.687 294.385,192.161 287.867 C 189.383 285.460,181.872 279.383,175.470 274.363 C 158.854 261.330,158.019 260.540,159.067 258.831 C 160.234 256.927,185.864 243.825,193.493 241.232 C 200.400 238.885,200.650 238.909,210.578 242.879 " stroke="none" fill="#000000" fill-rule="evenodd"></path></g></svg>
|
||||
|
Before Width: | Height: | Size: 3.6 KiB |
@@ -1,5 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="512px" height="512px" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
|
||||
<!-- Generated by Pixelmator Pro 1.6 -->
|
||||
<path id="Path" d="M160.154 224.87 L97.567 128.696 C136.561 80.2 195.051 53.494 254.853 53.248 289.505 53.002 324.895 61.85 357.089 80.445 392.642 101.089 419.676 130.744 436.879 164.823 L268.698 155.976 C221.102 153.19 175.8 179.978 160.154 224.87 Z M187.105 256.41 C187.105 294.257 217.743 324.895 255.59 324.895 293.437 324.895 324.075 294.257 324.075 256.41 324.075 218.563 293.437 187.924 255.59 187.924 217.743 187.924 187.105 218.481 187.105 256.41 Z M445.071 183.337 L330.629 189.235 C361.677 225.526 362.168 277.873 336.036 318.013 L244.203 459.244 C282.296 461.292 321.536 452.936 357.089 432.292 445.071 381.501 480.706 275.005 445.071 183.337 Z M161.956 295.404 L85.524 145.08 C64.635 177.029 52.429 215.368 52.429 256.41 52.429 357.99 126.812 442.122 224.051 457.032 L276.234 354.796 C229.048 363.643 183.501 337.756 161.956 295.404 Z" fill="#000000" fill-opacity="1" stroke="none"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.1 KiB |
@@ -6,76 +6,6 @@
|
||||
"units_per_em": 1000,
|
||||
"ascent": 850,
|
||||
"glyphs": [
|
||||
{
|
||||
"uid": "152a09f25af73b3debbb11f07e6a7888",
|
||||
"css": "bravebrowser",
|
||||
"code": 59392,
|
||||
"src": "custom_icons",
|
||||
"selected": true,
|
||||
"svg": {
|
||||
"path": "M369.5 115.7C363.8 122.4 348.8 140 336.3 154.8 316.1 178.5 312.9 181.5 308.6 180.5 257.3 169.5 234.1 179.7 185 235 171.6 250.1 171.7 246.5 184.2 277.5L190.9 294.4 187.2 305.9C185.1 312.2 179.8 327.2 175.4 339.3L167.5 361.1 171.8 377.3C182.7 418.6 200.2 486.3 207.2 514.6 211.5 531.8 217.5 555.1 220.7 566.4 223.8 577.7 233 612.8 241.1 644.3 258.9 713.5 266.1 730.4 286.7 752.3 302.1 768.7 313.2 776.7 425.7 854 488.6 897.3 496 900.6 512.4 893.8 522 889.8 580.7 850.4 664.1 792 696 769.7 711.4 756.2 725.9 737.8 735.5 725.7 747.7 691.5 759.6 643.6 763.9 626.4 777.2 574.5 789.1 528.3 801.1 482.1 815.6 425.8 821.4 403L832 361.7 820.6 328.2 809.2 294.6 817.7 273.3C828.6 245.8 830.4 251 797.9 217.3 760.6 178.6 742.3 171.5 700.2 179.6L688.5 181.8 678.2 170.5C672.5 164.3 657.1 146.7 644 131.3L620.1 103.5 500 103.5 379.9 103.5 369.5 115.7M528.3 231.6C533.7 233.3 540.7 235.9 543.9 237.3 555.5 242.3 576.7 248 583.8 248 591.7 248 645.1 239.4 656.3 236.3 660 235.2 664.1 234.4 665.3 234.4 668.9 234.4 718.9 300 736.9 328.5 760.4 365.5 759.8 375.1 732.7 403.1 724.2 411.8 703.2 434.5 685.9 453.4 648.7 494.4 648.6 494.6 657.9 517.4 674.3 557.5 663.8 591 629.5 607.6 618.6 612.9 594.5 606.2 572.3 591.7 569.6 589.9 562.2 585.2 556 581.2 541.7 572.1 512.2 542.6 510.5 535.7 508.9 529.7 518.5 519.8 538.5 506.8 604.9 463.5 602.8 466.8 585.7 434.1 562.6 390.3 559.7 382 564.5 372.8 570.6 361.2 573.1 360 658.7 327.3 686.9 316.5 685.4 314.2 647.6 310.6 606.8 306.8 584.5 309.5 549.9 322.4 530.1 329.8 530.1 330.3 541.5 391.6 556.3 470.7 557.1 466 527.4 472.4 502.9 477.6 496.9 477.6 473.1 472.5 442.7 465.9 443.8 471 457 399.4 470.3 327.8 470.4 329.4 450.2 322.3 411.9 308.9 394.3 306.8 351.7 310.6 314.2 314 312.8 316.4 341.3 327.3 454 370.3 451 366.4 418.1 426.8 397.7 464.3 398 465.6 435.3 489.7 493.8 527.6 495 529.1 483.2 545.1 457.1 580.8 390.6 617.4 370.2 607.4 339.4 592.6 327.3 559.2 339.8 524.2 352.1 490.1 355.9 497 280.5 417.3 234.2 368.4 234.7 363.1 294.8 283.5 300.8 275.6 308.7 265 312.5 259.9 316.3 254.9 322.6 247 326.6 242.3L333.8 233.9 342.2 236C357.3 239.8 408.2 248 416.5 248 421 248 436 244.2 450.1 239.3 490.7 225.4 505 224 528.3 231.6M526.4 607.2C555.3 618.7 603.5 644.8 603.5 648.8 603.5 650.9 593.8 660 578.6 672 536.6 705.3 531.1 709.7 521.2 718.3 500.8 735.9 499.2 736 480.4 719.7 473.5 713.6 454.7 698.5 438.7 685.9 397.1 653.3 395 651.4 397.7 647.1 400.6 642.3 464.7 609.6 483.7 603.1 501 597.2 501.6 597.3 526.4 607.2",
|
||||
"width": 1000
|
||||
},
|
||||
"search": [
|
||||
"bravebrowser"
|
||||
]
|
||||
},
|
||||
{
|
||||
"uid": "a580c4a9f01ce284cf7204112b68fe98",
|
||||
"css": "chrome",
|
||||
"code": 59393,
|
||||
"src": "custom_icons",
|
||||
"selected": true,
|
||||
"svg": {
|
||||
"path": "M312.8 439.2L190.6 251.4C266.7 156.6 381 104.5 497.8 104 565.4 103.5 634.6 120.8 697.4 157.1 766.9 197.4 819.7 255.4 853.3 321.9L524.8 304.6C431.8 299.2 343.4 351.5 312.8 439.2ZM365.4 500.8C365.4 574.7 425.3 634.6 499.2 634.6 573.1 634.6 633 574.7 633 500.8 633 426.9 573.1 367 499.2 367 425.3 367 365.4 426.7 365.4 500.8ZM869.3 358.1L645.8 369.6C706.4 440.5 707.4 542.7 656.3 621.1L477 897C551.4 901 628 884.6 697.4 844.3 869.3 745.1 938.9 537.1 869.3 358.1ZM316.3 577L167 283.4C126.2 345.8 102.4 420.6 102.4 500.8 102.4 699.2 247.7 863.5 437.6 892.6L539.5 693C447.4 710.2 358.4 659.7 316.3 577Z",
|
||||
"width": 1000
|
||||
},
|
||||
"search": [
|
||||
"chrome"
|
||||
]
|
||||
},
|
||||
{
|
||||
"uid": "11489d80deca336cee81719472014774",
|
||||
"css": "discord",
|
||||
"code": 59394,
|
||||
"src": "custom_icons",
|
||||
"selected": true,
|
||||
"svg": {
|
||||
"path": "M207 92C182.9 96.7 159.4 115.8 147.9 140.1L141.6 153.3 141.6 453.1 141.6 752.9 146.1 762.7C157 786.2 176.4 803.6 199.7 810.8 214.5 815.5 689.5 816.6 689.4 812 689.4 810.7 685 794.7 679.8 776.4 674.5 758.2 670.3 743.1 670.5 743 670.7 742.8 690.2 760.7 713.9 782.7 737.5 804.8 779.7 843.1 807.6 867.9L858.4 912.9 858.9 544.8C859.3 293.2 858.8 172.5 857.4 163.2 851.9 127.3 824.3 98.3 789.3 91.8 776.1 89.3 219.7 89.5 207 92M437.5 285C437.5 286 430.3 289.2 421.4 292.1 391.8 301.8 356.9 319.9 335.1 336.9 327.2 343 334.2 341.7 349.1 334.2 419.4 298.9 515.3 290.9 594.7 313.8 612.7 319 650.1 334.1 657.1 339.1 662.9 343.1 665.2 342.4 661.1 337.9 650.7 326.4 604.5 301.8 576.7 292.8 565 289.1 563 287.9 564.9 285.5 573 275.8 644.5 299 673.9 320.9 700.8 341 740 480.8 740.2 557.4 740.3 579.5 684 615.8 638.7 623 617.1 626.4 617.2 626.4 605 611.6 590.5 594 590.4 594.8 607.9 587.1 628.8 578 640.1 570.3 653.3 556.5 665.8 543.4 666.3 540.2 654.9 547.5 570.2 600.9 447.6 602.7 358.6 551.7 339.7 540.9 338.4 541.6 351.7 555.6 364.3 569 379.8 579.5 397.7 586.9 405.1 590 411.5 592.8 411.9 593.1 412.3 593.3 406.6 600.8 399.3 609.5L386 625.5 373.8 624.2C333.2 620.1 291.4 599.2 270.5 572.7L263.2 563.5 264.4 539.9C267.9 466.1 301.9 347.7 326.3 324 347 304 437.5 272.2 437.5 285M411.1 436.5C394.7 442.3 382.8 460.7 382.8 480.2 382.8 527.6 441.6 544.6 461.9 503.1 480.7 464.6 449.1 423.1 411.1 436.5M561 436.2C535.4 445.5 524.3 478.3 538.2 503.8 555.3 535.3 597.3 533.8 612.5 501.1 629.6 464.5 596.8 423.2 561 436.2",
|
||||
"width": 1000
|
||||
},
|
||||
"search": [
|
||||
"discord"
|
||||
]
|
||||
},
|
||||
{
|
||||
"uid": "9d60d0474416f6947d85caecbe9b47a7",
|
||||
"css": "firefox",
|
||||
"code": 59395,
|
||||
"src": "custom_icons",
|
||||
"selected": true,
|
||||
"svg": {
|
||||
"path": "M895.2 477.6C895 475.1 894.8 472.6 894.8 470.1L894.8 469.9 894.3 462.4 894.3 462.2C892.2 440 888.3 417.9 882.6 396.4 882.6 396.2 882.6 396.2 882.4 396L880.6 389.6C880.4 389.2 880.4 388.8 880.3 388.6 879.7 386.7 879.1 384.6 878.5 382.7 878.3 382.3 878.3 381.7 878.1 381.3 877.6 379.4 877 377.5 876.4 375.8 876.2 375.2 876 374.8 875.8 374.2 875.3 372.2 874.7 370.5 873.9 368.6L873.3 366.9C872.8 365.1 872 363.2 871.4 361.5 871.3 360.9 871.1 360.4 870.8 359.9 870.1 358.2 869.5 356.2 868.7 354.5 868.5 354.1 868.4 353.6 868.2 353.2 867.4 351.2 866.6 349.5 865.9 347.6 865.9 347.4 865.7 347.2 865.7 347 863.2 340.9 860.5 334.7 857.7 328.8L857.1 327.6C856.3 326 855.7 324.8 855 323.4 854.6 322.6 854.2 321.7 853.8 320.9 853.2 319.6 852.5 318.4 851.9 317.1 851.3 316.1 850.9 315.2 850.3 314.2 849.7 313.2 849 311.9 848.4 310.5 847.8 309.6 847.2 308.4 846.7 307.5 846.1 306.5 845.3 305.2 844.7 304 844.2 302.9 843.5 301.8 842.8 300.8 842.2 299.7 841.5 298.7 840.9 297.6 840.3 296.5 839.6 295.5 839 294.4 838.4 293.3 837.6 292.3 837.1 291.3 836.5 290.4 835.7 289 834.9 287.9 834.4 286.9 833.7 285.9 833 285L830.7 281.6C830.1 280.6 829.5 279.6 828.8 278.7 828 277.6 827.1 276.2 826.3 275.1 825.7 274.3 825.2 273.3 824.6 272.6L821.7 268.5C821.1 267.8 820.7 267.2 820.1 266.4 818.5 264.3 817.2 262.4 815.7 260.5 804.2 245.4 791.6 231.2 778.1 217.9 768.9 208.3 759.1 199.4 748.8 191.1 742.4 185.6 735.7 180.4 728.8 175.4 716.5 166.2 703.3 158.1 689.5 151.2 685.6 149.1 681.8 147.2 678 145.2 649.7 131.4 619.9 120.9 589.3 114 586.2 113.4 583.1 112.6 580.2 112L580 112C578.4 111.8 577.2 111.5 575.6 111.3 555.6 107.5 535.2 105.4 514.8 104.9L497.8 104.9C473.4 105.2 449 107.8 425.1 112.9 371.3 124.2 323.9 146.8 292.4 175.3 290.7 176.9 289.3 178 288.6 178.7L287.8 179.5 288 179.5 287.8 179.7 288 179.5C288.1 179.5 288.1 179.5 288.1 179.4 288.2 179.4 288.2 179.3 288.2 179.3L288 179.5C288.1 179.4 288.2 179.3 288.4 179.3 311.8 165.3 344.3 153.7 367.5 148L376.9 145.7C377.5 145.5 378.2 145.5 378.8 145.3 381.5 144.7 384.2 144.2 387.1 143.6 387.5 143.6 388 143.4 388.4 143.4 491.1 124.7 600.5 155.4 676.8 228.2 693.2 243.8 707.7 261.4 719.8 280.6 768.4 359.3 763.8 458.4 726 516.7 670.8 601.5 547.8 630.8 471.6 556.5 446 531.7 431.3 497.7 430.7 462.1 430.4 445 433.8 428.1 440.6 412.5 443.3 406.3 461.6 371.4 469.8 373.1 448.9 368.7 409.7 377.4 382.3 418.2 357.7 454.9 359.1 511.4 374.3 551.5 364.6 531.7 358.1 510.5 354.9 488.7 335.3 356.6 424.2 243.9 505.8 215.9 461.8 177.5 351.4 180.2 269.5 240.5 221.6 275.7 187.5 325.5 169.4 385 172.1 351.6 184.8 301.7 210.7 250.8 183.3 265 148.3 310 131 351.4 106.1 411.3 97.4 482.9 105.3 551.1 105.9 556.3 106.5 561.3 107 566.5 138.9 753.8 302.2 896.7 498.7 896.7 718 896.7 896 718.7 896 499.2 895.8 492 895.6 484.7 895.2 477.6Z",
|
||||
"width": 1000
|
||||
},
|
||||
"search": [
|
||||
"firefox"
|
||||
]
|
||||
},
|
||||
{
|
||||
"uid": "fb49dea155868528a235fd6229a36a05",
|
||||
"css": "github",
|
||||
"code": 59396,
|
||||
"src": "custom_icons",
|
||||
"selected": true,
|
||||
"svg": {
|
||||
"path": "M367.8 727C367.8 730.2 364.2 732.8 359.5 732.8 354.2 733.3 350.6 730.7 350.6 727 350.6 723.8 354.2 721.3 358.9 721.3 363.7 720.8 367.8 723.4 367.8 727ZM318.1 719.8C317 723 320.2 726.7 325 727.7 329.1 729.3 333.9 727.7 334.9 724.5 335.8 721.3 332.8 717.6 328 716.2 323.8 715 319.2 716.6 318.1 719.8ZM388.8 717.1C384.2 718.2 381 721.3 381.4 725 381.9 728.2 386.1 730.2 390.9 729.1 395.5 728 398.7 725 398.2 721.8 397.8 718.7 393.4 716.6 388.8 717.1ZM494.1 104C272.2 104 102.4 272.5 102.4 494.4 102.4 671.8 214.1 823.7 373.6 877.1 394.1 880.8 401.3 868.2 401.3 857.8 401.3 847.8 400.8 793.1 400.8 759.5 400.8 759.5 288.8 783.5 265.3 711.8 265.3 711.8 247 665.3 220.8 653.3 220.8 653.3 184.2 628.2 223.4 628.6 223.4 628.6 263.2 631.8 285.1 669.9 320.2 731.7 378.9 713.9 401.8 703.4 405.4 677.8 415.8 660 427.4 649.4 337.9 639.5 247.7 626.6 247.7 472.6 247.7 428.6 259.8 406.6 285.4 378.4 281.3 368 267.7 325.1 289.6 269.8 323 259.4 400 313 400 313 432 304 466.4 299.4 500.5 299.4 534.6 299.4 569 304 601 313 601 313 677.9 259.2 711.4 269.8 733.3 325.3 719.7 368 715.5 378.4 741.1 406.7 756.8 428.8 756.8 472.6 756.8 627 662.6 639.4 573.1 649.4 587.8 662.1 600.3 686.1 600.3 723.7 600.3 777.6 599.8 844.3 599.8 857.4 599.8 867.8 607.2 880.5 627.5 876.8 787.5 823.7 896 671.8 896 494.4 896 272.5 716 104 494.1 104ZM257.9 655.8C255.8 657.4 256.3 661.1 259 664.2 261.6 666.7 265.3 667.8 267.4 665.8 269.4 664.2 269 660.5 266.2 657.4 263.7 654.9 260 653.8 257.9 655.8ZM240.6 642.9C239.5 645 241.1 647.5 244.3 649.1 246.9 650.7 250.1 650.2 251.2 648 252.3 645.9 250.7 643.4 247.5 641.8 244.3 640.8 241.8 641.3 240.6 642.9ZM292.5 699.8C289.9 701.9 290.9 706.7 294.6 709.8 298.2 713.4 302.9 713.9 305 711.4 307 709.3 306.1 704.5 302.9 701.4 299.4 697.8 294.6 697.3 292.5 699.8ZM274.2 676.3C271.7 677.9 271.7 682.1 274.2 685.8 276.8 689.4 281.1 691 283.2 689.4 285.8 687.4 285.8 683.2 283.2 679.5 281 675.8 276.8 674.2 274.2 676.3Z",
|
||||
"width": 1000
|
||||
},
|
||||
"search": [
|
||||
"github"
|
||||
]
|
||||
},
|
||||
{
|
||||
"uid": "d0a71af658f7cd9faa1be23ed5ccd1a4",
|
||||
"css": "lidarr",
|
||||
@@ -90,20 +20,6 @@
|
||||
"lidarr"
|
||||
]
|
||||
},
|
||||
{
|
||||
"uid": "0136d6085b849453c3bfffb949a822de",
|
||||
"css": "microsoftedge",
|
||||
"code": 59398,
|
||||
"src": "custom_icons",
|
||||
"selected": true,
|
||||
"svg": {
|
||||
"path": "M860.7 306.4C795 177.9 653.2 104 499.1 104 308.9 104 149.6 237.9 111.2 417.1 152.8 342.7 249.1 290.4 350.3 290.4 477.1 290.4 544 368.7 545.9 370.7 581.1 408.8 598.7 451.3 598.7 503.7 598.7 520.3 590.2 545 574.5 565.4 572 568.6 564.3 573.1 564.3 583 564.3 591.1 569.6 598.9 578.9 605.4 623.5 636.4 707.5 632.3 707.7 632.3 740.7 632.2 773.1 623.3 801.5 606.4 859.8 572.4 895.7 510 895.8 442.5 896.6 373 871 326.8 860.7 306.4ZM430 852.3C400.4 833.8 374.9 809.3 355.4 780.3 302.7 704.4 300.6 627.3 323.2 562.7 339.3 511.9 371.3 467.7 414.4 436.4 508.8 364.1 566.1 427.4 572.9 434.8 570.7 429.2 568.1 423.8 565.1 418.6 550.3 393.1 526.7 360.3 474.6 333 420.6 304.7 361.6 303.2 350.4 303.2 288.4 303.2 225.7 324 178.3 360.3 146.7 384.5 110 425.2 103.4 480 101.6 499.7 99 580.5 140.2 669.2 211.4 821.2 370.4 911.9 537.4 895.8 476.4 885.2 432.1 853.2 430 852.3ZM831.2 694.9C827.3 692.5 822.5 692.4 818.5 694.6 807.9 700.1 797 705 785.9 709.2 750.3 722.5 712.6 729.3 674.6 729.2 527.9 729.2 400.1 628.3 400.1 498.8 400.3 483.9 403.9 469.3 410.6 456 385 478.5 364 505.7 348.6 536 324.7 583 295.8 677 369.9 778.7 380.3 792.9 406.7 826.7 459.5 854.9 497.2 875.2 537.9 886.3 574.2 886.3 630.4 886.3 758.9 832.8 835 712.1 836.8 709.3 837.4 706 836.7 702.7 835.9 699.5 834 696.7 831.2 694.9Z",
|
||||
"width": 1000
|
||||
},
|
||||
"search": [
|
||||
"microsoftedge"
|
||||
]
|
||||
},
|
||||
{
|
||||
"uid": "60c49c1b99786a9bf44df741f3c043ca",
|
||||
"css": "nzbget",
|
||||
@@ -132,20 +48,6 @@
|
||||
"overseerr"
|
||||
]
|
||||
},
|
||||
{
|
||||
"uid": "3bc32a4e9230b653e7ab022e69cbb3a8",
|
||||
"css": "plex",
|
||||
"code": 59401,
|
||||
"src": "custom_icons",
|
||||
"selected": true,
|
||||
"svg": {
|
||||
"path": "M248 91.8C248 92.8 252 99.5 256.8 106.5 261.7 113.6 265.6 119.8 265.6 120.4 265.6 120.9 267.8 124.2 270.5 127.8 273.2 131.3 275.4 135 275.4 136.1 275.4 137.2 277.1 139.7 279.3 141.6 281.4 143.5 283.2 146 283.2 147.1 283.2 148.2 285.4 151.9 288.1 155.4 290.8 159 293 162.3 293 162.9 293 163.5 296.9 169.8 301.8 176.9 306.6 183.9 310.5 190 310.5 190.4 310.5 190.8 314.3 196.7 318.8 203.5 329 218.7 330 220.2 335.3 229.8 337.6 234.1 340.9 238.7 342.6 240.1 344.3 241.5 345.7 243.4 345.7 244.4 345.7 245.3 350.7 253.8 356.8 263.2 368.7 281.7 381.5 301.6 391.9 317.9 395.5 323.5 401.4 332.7 405 338.4 408.6 344 415.7 355.2 420.9 363.3 434.5 384.4 446.9 403.7 454.8 416 458.5 421.9 465.3 432.5 469.8 439.5 474.2 446.4 481.8 458.2 486.5 465.7 491.2 473.1 498.3 484.1 502.2 490.1 508.4 499.6 509 501.4 506.6 504.1 505.1 505.8 503.9 507.7 503.9 508.4 503.9 509.1 499.9 515.5 495.1 522.6 490.3 529.6 486.3 535.8 486.3 536.2 486.3 536.7 482.4 542.8 477.5 549.9 472.7 557 468.8 563.2 468.8 563.7 468.8 564.2 467.1 567 465.1 569.9 463.1 572.8 458.4 580 454.7 585.9 448.2 596.2 441.6 606.5 420.9 638.7 415.7 646.7 408.6 657.9 405 663.6 401.4 669.2 395.5 678.4 391.9 684.1 381.5 700.4 368.7 720.3 356.8 738.8 350.7 748.1 345.7 756.6 345.7 757.6 345.7 758.5 344.3 760.4 342.6 761.8 340.9 763.2 337.6 767.9 335.3 772.1 330 781.7 329 783.3 318.8 798.5 314.3 805.3 310.5 811.1 310.5 811.5 310.5 811.9 306.6 818 301.8 825.1 296.9 832.2 293 838.4 293 839 293 839.6 291 842.9 288.6 846.3 286.1 849.7 283.3 854 282.2 855.7 281.1 857.4 277 863.8 273 869.9 268.9 876 265.6 881.8 265.6 882.8 265.6 883.9 264.9 884.8 264 884.8 263.1 884.8 260 889.1 257.1 894.5 254.2 899.8 250.9 904.7 249.9 905.3 239.6 911.7 246.1 912.1 368.1 912.1L488.2 912.1 496 900.3C500.4 893.7 503.9 888 503.9 887.4 503.9 886.9 506.1 883.6 508.8 880.1 511.5 876.5 513.7 872.8 513.7 871.7 513.7 870.6 515.4 868.2 517.6 866.2 519.7 864.3 521.5 861.8 521.5 860.7 521.5 859.6 523.7 855.9 526.4 852.4 529.1 848.8 531.3 845.5 531.3 844.9 531.3 844.3 535.2 838 540 831 544.9 823.9 548.8 817.8 548.8 817.4 548.8 817 552.6 811.1 557.1 804.3 567.3 789.1 568.3 787.6 573.6 778 575.9 773.7 579.2 769.1 580.9 767.7 582.6 766.3 584 764.4 584 763.4 584 762.5 589.9 752.7 597.2 741.7 604.4 730.7 610.7 720.8 611.1 719.8 611.6 718.7 615.8 712.3 620.4 705.5 625.1 698.7 628.9 692.7 628.9 692.2 628.9 691.7 630.5 688.9 632.6 686 634.6 683 639.3 675.8 643 669.9 646.7 664 653.7 653 658.6 645.5 663.4 638 672.1 624.3 677.9 615.1 692.5 592.1 691.6 593.6 699.7 581.3 703.7 575.2 707 569.4 707 568.3 707 567.3 707.8 566.4 708.7 566.4 709.6 566.4 712.7 562.2 715.6 557.1 718.5 552 725.1 541.3 730.4 533.2 735.7 525.1 742.6 514.5 745.8 509.5L751.6 500.4 746.5 492.9C743.8 488.7 739.9 483 738 480.1 736 477.2 734.4 474 734.4 473 734.4 472 733 470 731.3 468.6 729.6 467.2 726.3 462.6 724 458.4 719.2 449.6 718.6 448.8 707.9 432.6 703.7 426.2 699.8 420 699.2 418.9 698.7 417.9 692.3 408 685.1 397 677.8 386 671.9 376.2 671.9 375.3 671.9 374.3 670.5 372.4 668.8 371 667.1 369.6 663.8 365 661.5 360.7 659.1 356.5 656.3 351.6 655.2 349.8 646.4 335.9 641.6 328.8 639.3 326.6 637.9 325.1 636.7 323.1 636.7 322.1 636.7 321.2 632.8 314.6 628 307.6 623.2 300.6 616.9 290.7 613.9 285.6 611 280.5 608 275.9 607.2 275.4 606.5 274.9 602.6 268.7 598.5 261.7 594.5 254.7 590.6 248.6 589.9 248 589.2 247.5 586.5 243.3 584 238.8 581.4 234.2 578.7 230.5 577.9 230.5 577.1 230.5 575.9 228.7 575.2 226.4 574.5 224.2 568.8 214.8 562.7 205.4 556.5 196.1 547.8 182.8 543.3 175.8 538.8 168.8 534.3 162 533.2 160.7 532.1 159.4 531.3 157.5 531.3 156.5 531.3 155.4 530.1 153.4 528.7 152 527.3 150.6 524.1 145.7 521.5 141.1 519 136.5 516.1 132.8 515.3 132.8 514.4 132.8 513.7 131.9 513.7 130.8 513.7 129.7 508 120 501 109.3L488.4 89.8 368.2 89.8C290.2 89.8 248 90.5 248 91.8",
|
||||
"width": 1000
|
||||
},
|
||||
"search": [
|
||||
"plex"
|
||||
]
|
||||
},
|
||||
{
|
||||
"uid": "a0b9740c0532b1a5d4fc8f948f008f3c",
|
||||
"css": "radarr",
|
||||
@@ -160,20 +62,6 @@
|
||||
"radarr"
|
||||
]
|
||||
},
|
||||
{
|
||||
"uid": "b1b4a6678e8a4f2bfdbb2494b4575748",
|
||||
"css": "reddit",
|
||||
"code": 59403,
|
||||
"src": "custom_icons",
|
||||
"selected": true,
|
||||
"svg": {
|
||||
"path": "M794.1 416.8C770.1 416.8 749 426.7 733.4 442.2 676.3 402.7 599.4 377.3 514.1 374.6L558.4 174.9 699.5 206.6C699.5 241.1 727.7 269.3 762.2 269.3 797.4 269.3 825.8 240.3 825.8 205.8 825.8 171.2 797.6 142.2 762.2 142.2 737.6 142.2 716.3 157.1 705.8 177.4L549.9 142.9C542.1 140.8 534.4 146.4 532.3 154.2L483.7 374.4C399 377.9 322.9 403.4 265.6 442.9 250.1 426.7 228.2 416.8 204.2 416.8 115.2 416.8 86.1 536.2 167.5 577 164.6 589.6 163.4 603 163.4 616.5 163.4 750.6 314.4 859.2 499.8 859.2 686.1 859.2 837.1 750.6 837.1 616.5 837.1 603 835.7 589 832.2 576.3 912 535.4 882.6 416.8 794.1 416.8ZM296.6 585.4C296.6 550.2 324.8 521.9 360.2 521.9 394.7 521.9 422.9 550.1 422.9 585.4 422.9 620 394.7 648.2 360.2 648.2 325 648.3 296.6 620 296.6 585.4ZM639.5 735C581.3 793.3 417 793.3 358.7 735 352.3 729.4 352.3 719.5 358.7 713.1 364.3 707.5 374.2 707.5 379.8 713.1 424.3 758.7 571.8 759.5 618.2 713.1 623.8 707.5 633.8 707.5 639.4 713.1 645.9 719.5 645.9 729.4 639.5 735ZM638.2 648.3C603.7 648.3 575.5 620.2 575.5 585.6 575.5 550.4 603.7 522.1 638.2 522.1 673.4 522.1 701.8 550.2 701.8 585.6 701.6 620 673.4 648.3 638.2 648.3Z",
|
||||
"width": 1000
|
||||
},
|
||||
"search": [
|
||||
"reddit"
|
||||
]
|
||||
},
|
||||
{
|
||||
"uid": "924496ec01da26de7d1a63b1e5dbed48",
|
||||
"css": "sabnzbd",
|
||||
@@ -188,20 +76,6 @@
|
||||
"sabnzbd"
|
||||
]
|
||||
},
|
||||
{
|
||||
"uid": "4cb87a4cc0d306de4283c5593a5c2a48",
|
||||
"css": "safari",
|
||||
"code": 59405,
|
||||
"src": "custom_icons",
|
||||
"selected": true,
|
||||
"svg": {
|
||||
"path": "M529.1 530.7L469.3 470.9 355.2 644.8ZM499.2 104C280 104 102.4 281.6 102.4 500.8 102.4 720 280 897.6 499.2 897.6 718.4 897.6 896 720 896 500.8 896 281.6 718.4 104 499.2 104ZM748.6 383.7L772.2 373.9C775.3 372.6 778.9 372.6 782 373.9 785.1 375.2 787.6 377.7 788.9 380.8L788.9 380.8C790.2 383.9 790.2 387.5 788.9 390.6 787.6 393.7 785.1 396.2 782 397.5L758.4 407.3C751.9 410 744.4 406.9 741.7 400.4L741.7 400.4C739 393.9 742 386.4 748.6 383.7ZM592.7 241.6L602.5 218C605.2 211.4 612.7 208.4 619.2 211.1L619.2 211.1C625.7 213.8 628.8 221.3 626.1 227.8L616.3 251.4C613.6 258 606.1 261.1 599.6 258.4L599.6 258.4C596.5 257.1 594 254.6 592.7 251.4 591.4 248.3 591.4 244.7 592.7 241.6ZM499.2 187.2L499.2 187.2C502.6 187.2 505.8 188.5 508.3 190.9 510.7 193.3 512 196.6 512 200L512 225.6C512 229 510.7 232.3 508.3 234.7 505.8 237.1 502.6 238.4 499.2 238.4L499.2 238.4C495.8 238.4 492.5 237.1 490.1 234.7 487.7 232.3 486.4 229 486.4 225.6L486.4 200C486.4 196.6 487.7 193.3 490.1 190.9 492.5 188.5 495.8 187.2 499.2 187.2ZM379.2 211.1C382.3 209.8 385.9 209.8 389 211.1 392.1 212.4 394.6 214.9 395.9 218L405.7 241.6C407.6 245.8 407 250.8 404.2 254.5 401.4 258.1 396.8 260 392.2 259.4 387.6 258.8 383.8 255.7 382.1 251.4L372.3 227.7C369.6 221.2 372.7 213.8 379.2 211.1ZM277.5 279.1L277.5 279.1C282.5 274.1 290.6 274.1 295.6 279.1L313.6 297.2C318.6 302.1 318.6 310.2 313.6 315.2L313.6 315.2C308.6 320.2 300.5 320.2 295.5 315.2L277.4 297.1C272.5 292.1 272.5 284 277.5 279.1ZM185.6 500.8L185.6 500.8C185.6 497.4 186.9 494.2 189.3 491.8 191.8 489.3 195 488 198.4 488L224 488C227.4 488 230.7 489.3 233.1 491.8 235.5 494.2 236.8 497.4 236.8 500.8L236.8 500.8C236.8 504.2 235.5 507.5 233.1 509.9 230.7 512.3 227.4 513.6 224 513.6L198.4 513.6C195 513.6 191.8 512.3 189.3 509.9 186.9 507.5 185.6 504.2 185.6 500.8ZM249.8 617.9L226.2 627.7C223.1 629 219.5 629 216.4 627.7 213.3 626.4 210.8 623.9 209.5 620.8L209.5 620.8C208.2 617.7 208.2 614.1 209.5 611 210.8 607.9 213.3 605.4 216.4 604.1L240 594.3C246.5 591.6 254 594.7 256.7 601.2L256.7 601.2C259.4 607.7 256.3 615.2 249.8 617.9ZM256.8 400.3L256.8 400.3C255.5 403.5 253 406 249.8 407.3 246.7 408.6 243.1 408.6 240 407.3L216.4 397.5C209.8 394.8 206.8 387.3 209.5 380.8L209.5 380.8C212.2 374.3 219.7 371.2 226.2 373.9L249.8 383.7C256.4 386.4 259.5 393.9 256.8 400.4ZM405.7 760L395.9 783.6C393.2 790.2 385.7 793.3 379.2 790.6 372.7 787.9 369.6 780.4 372.3 773.9L382.1 750.2C383.8 745.9 387.6 742.8 392.2 742.2 396.8 741.6 401.4 743.5 404.2 747.1 407 750.8 407.6 755.8 405.7 760ZM512 801.6C512 805 510.7 808.3 508.3 810.7 505.8 813.1 502.6 814.4 499.2 814.4L499.2 814.4C495.8 814.4 492.5 813.1 490.1 810.7 487.7 808.3 486.4 805 486.4 801.6L486.4 776C486.4 772.6 487.7 769.3 490.1 766.9 492.5 764.5 495.8 763.2 499.2 763.2L499.2 763.2C502.6 763.2 505.8 764.5 508.3 766.9 510.7 769.3 512 772.6 512 776ZM619.2 790.5L619.2 790.5C616.1 791.8 612.5 791.8 609.4 790.5 606.3 789.2 603.8 786.7 602.5 783.6L592.7 760C590 753.5 593.1 746 599.6 743.3L599.6 743.3C606.1 740.6 613.6 743.7 616.3 750.2L626.1 773.9C628.8 780.4 625.7 787.8 619.2 790.5ZM720.9 722.5L720.9 722.5C715.9 727.5 707.8 727.5 702.8 722.5L684.8 704.4C679.8 699.5 679.8 691.4 684.8 686.4L684.8 686.4C689.8 681.4 697.9 681.4 702.9 686.4L721 704.5C725.9 709.5 725.9 717.6 720.9 722.5ZM547.6 549.2L266.1 733.9 450.8 452.4 732.3 267.7ZM788.9 620.8L788.9 620.8C786.2 627.3 778.7 630.4 772.2 627.7L748.6 617.9C742 615.2 738.9 607.7 741.6 601.2L741.6 601.2C742.9 598.1 745.4 595.6 748.6 594.3 751.7 593 755.3 593 758.4 594.3L782 604.1C788.6 606.8 791.6 614.3 788.9 620.8ZM800 513.6L774.4 513.6C771 513.6 767.8 512.3 765.3 509.9 762.9 507.5 761.6 504.2 761.6 500.8L761.6 500.8C761.6 497.4 762.9 494.2 765.3 491.8 767.8 489.3 771 488 774.4 488L800 488C803.4 488 806.7 489.3 809.1 491.8 811.5 494.2 812.8 497.4 812.8 500.8L812.8 500.8C812.8 504.2 811.5 507.5 809.1 509.9 806.7 512.3 803.4 513.6 800 513.6Z",
|
||||
"width": 1000
|
||||
},
|
||||
"search": [
|
||||
"safari"
|
||||
]
|
||||
},
|
||||
{
|
||||
"uid": "4c11fbfce7a5be6cab699e6d75f004fc",
|
||||
"css": "sonarr",
|
||||
@@ -229,6 +103,48 @@
|
||||
"search": [
|
||||
"tautulli"
|
||||
]
|
||||
},
|
||||
{
|
||||
"uid": "75bc30ae1fc65d58ac75d46b27bebc04",
|
||||
"css": "thetvdb",
|
||||
"code": 59424,
|
||||
"src": "custom_icons",
|
||||
"selected": true,
|
||||
"svg": {
|
||||
"path": "M66.7 163.6C66.7 112.9 112.4 78.2 166.4 86.1L166.4 86.1 870.8 178.1C902.4 182.8 927.6 216.9 927.6 254L927.6 254 927.6 350.2C868.3 389.9 829.4 456.5 829.4 531.9 829.4 608 867.3 674 927.6 713.6L927.6 713.6 927.6 755.9C927.6 793.1 902.4 827.2 870.8 831.8L870.8 831.8 245.7 917.2C191.7 925.1 146 890.4 146 839.7L146 839.7ZM370.4 252L277.5 252 277.5 373.7 218.6 373.7 218.6 444 277.5 444 277.5 579.2C274.8 664.1 308.1 702.2 384.8 702.9L456.4 702.9 456.4 632.6 419.6 632.6C378 630.5 369 618.4 370.4 563.6L370.4 444 484.6 444 590.4 702.9 690.2 702.9 835.8 373.7 737.4 373.7 643.1 600.1 557.1 373.7 370.4 373.7 370.4 252Z",
|
||||
"width": 1000
|
||||
},
|
||||
"search": [
|
||||
"thetvdb"
|
||||
]
|
||||
},
|
||||
{
|
||||
"uid": "728b9e04c563b13e9d7c8dbcda170278",
|
||||
"css": "tvmaze",
|
||||
"code": 59425,
|
||||
"src": "custom_icons",
|
||||
"selected": true,
|
||||
"svg": {
|
||||
"path": "M189.2 78.3C177.5 80.8 170 86.9 164.8 98.5 159.4 110.3 161.2 122.8 169.8 132.8 173.2 136.6 194.8 150 241.5 177.1 278.3 198.3 320.9 222.9 336.2 232 351.4 240.9 367.1 249.8 371.1 252 375.1 254.2 378 256.3 377.7 256.9 377.4 257.5 368.9 258.5 358.9 259.1 330.8 260.8 281.2 266.8 249.2 272.5 204 280.3 160.3 297.1 139.5 314.3 131.8 320.6 121.1 334.8 115.7 345.4 112.3 352.5 101.2 385.5 97.8 399.2 96.6 404.3 94.2 416.8 92.5 426.9 83.5 480 80.9 523.2 82 606.9 82.9 680.6 84.3 700.8 91.5 743.8 99.8 793.1 111.5 828.5 125.7 847.2 137.1 862.2 150 871.4 174.5 882 219.4 901.4 279.2 912.3 376.5 918.8 414.6 921.4 587.4 921.4 625.4 918.8 677.7 915.2 747.4 905.8 776 898.5 812.3 889.1 845.4 874.8 859.7 862.2 876.5 847.5 884.2 834 894.5 801.5 905.4 766.8 909.4 744.8 914.9 685.7 917.1 663.7 917.5 642.5 917.5 586.9 917.5 517.2 916.6 498.3 911.4 455.4 903.8 394.3 888.2 344.9 869.2 322.8 847.4 297.4 787.7 276 711.4 266.2 684.6 262.8 638.2 258.5 627.4 258.5 619.1 258.5 618 256.9 624.3 253.8 626.6 252.6 630.2 250.5 632.3 249.1 634.5 247.7 645.2 241.4 656.2 235.1 667.2 228.8 683.1 219.5 691.5 214.6 709.7 204.2 744.5 184 786.2 160 802.6 150.5 818.5 140.6 821.1 138 828.3 131.2 831.4 122.2 830.3 110.6 828.8 92.8 815.4 80.8 797.7 80.9 786.8 81.1 789.2 80 740 108.5 719.2 120.6 680.5 143.1 653.8 158.5 602.3 188.2 592.9 193.7 542.5 223.1 524.8 233.2 507.7 243.1 504.5 244.8L498.5 247.7 473.5 233.2C459.7 225.4 433.2 210 414.6 199.2 292.8 128.5 228.9 91.7 215.4 84.3 204.5 78.3 197.5 76.8 189.2 78.3ZM543.1 343.1C612.2 345.5 661.1 349.2 707.7 355.5 738.9 359.7 746.6 361.4 761.2 367.1 791.7 379.1 805.1 394 814.6 427.1 824.5 460.8 827.2 486.3 829.2 558.5 831.5 645.8 826.9 705.8 814.6 748.2 809.2 766.9 804.6 775.2 793.1 787.5 782.9 798.3 768.9 807.1 756.2 810.6 734.5 816.8 686.8 824.5 650 827.7 616.3 830.6 536.8 833.8 497.4 833.8 433.4 833.8 359.5 829.2 299.5 821.5 256.5 816 248 814 229.4 805.1 205.5 793.7 194.8 780.5 185.5 751.2 176.5 722.2 173.5 698.2 170.6 630 166 520.6 176 432.5 196.6 400.6 207.8 383.4 226.8 370 248.5 364.2 263.8 360 310 352.5 335.4 350 360.9 347.5 448 342.9 488.5 341.8 494.5 341.7 518.9 342.3 543.1 343.1ZM283.2 466.9C248.6 474.5 223.7 498.8 214.6 533.8 205.1 570.6 226.3 614 261.8 630.8 284.2 641.2 304.9 642.5 327.5 634.8 361.5 623.2 383.8 593.4 385.7 556.9 388 513.2 358.9 476.2 315.5 466.9 302.3 464.2 296.3 464.2 283.2 466.9ZM683.8 467.4C642.9 478.2 615.4 512.5 615.4 553.1 615.4 607.7 668.6 650.2 721.5 637.5 732.6 634.9 751.5 625.4 759.8 618.2 771.4 608.2 783.1 588.2 786.9 572 793.7 543.2 784.8 512.2 763.7 491.2 752.3 480 744.8 475.4 728.9 470.2 712.9 464.8 697.7 463.8 683.8 467.4ZM396.9 672.6C396.9 675.4 414.9 692.3 425.4 699.2 457.1 720.2 493.5 731.7 533.2 733.4 564 734.6 582.3 730.9 598.9 719.8 605.1 715.7 609.2 710.2 607.4 708.3 607.1 708 603.2 709.1 598.8 710.8 586.6 715.4 568.5 716.8 540.8 715.4 487.4 712.5 446 700.5 409.1 677.2 398 670.3 396.9 669.8 396.9 672.6Z",
|
||||
"width": 1000
|
||||
},
|
||||
"search": [
|
||||
"tvmaze"
|
||||
]
|
||||
},
|
||||
{
|
||||
"uid": "5d832b893437e33c4a22b7029c2b781b",
|
||||
"css": "musicbrainz",
|
||||
"code": 59401,
|
||||
"src": "custom_icons",
|
||||
"selected": true,
|
||||
"svg": {
|
||||
"path": "M475.1 106.5C469 110.1 462.8 113.7 461.1 114.5 459.5 115.2 456.5 117 454.3 118.4 449.9 121.3 436.7 129.1 426.7 134.6 423.1 136.7 408.2 145.3 393.7 153.9 379.2 162.5 366.3 170 365.1 170.5 363.9 171.1 360.9 172.9 358.5 174.5 356.1 176.1 353.1 177.9 351.9 178.5 350 179.4 330.3 191 319.9 197.2 315.9 199.6 301.8 207.7 295.5 211.2 282.4 218.4 276.4 222.1 275.9 223.2 275.6 223.8 274.8 224.3 274 224.3 273.2 224.3 263.9 229.5 253.2 235.8 242.6 242.1 232.9 247.7 231.7 248.3 230.5 248.8 227.5 250.6 225.1 252.2 222.7 253.8 219.7 255.6 218.5 256.2 214.9 258 196.6 268.8 192.3 271.6 190.2 273 187.4 274.6 186.2 275.2 185 275.8 178.7 279.4 172.3 283.1 165.8 286.9 156.9 292 152.5 294.5L144.4 298.9 144.4 500 144.4 701.1 152.5 705.5C156.9 708 165.8 713.1 172.3 716.9 178.7 720.6 185 724.2 186.2 724.8 187.4 725.4 190.2 727 192.3 728.4 196.6 731.2 214.9 742 218.5 743.8 219.7 744.4 222.7 746.2 225.1 747.8 227.5 749.4 230.5 751.2 231.7 751.7 232.9 752.3 242.6 757.9 253.2 764.2 263.9 770.5 273.2 775.7 274 775.7 274.8 775.7 275.6 776.2 275.9 776.8 276.4 777.9 282.4 781.6 295.5 788.8 301.8 792.3 315.9 800.4 319.9 802.8 330.3 809 350 820.6 351.9 821.5 353.1 822.1 356.1 823.9 358.5 825.5 360.9 827.1 363.9 828.9 365.1 829.5 366.3 830 379.2 837.5 393.7 846.1 408.2 854.7 423.1 863.3 426.7 865.4 436.7 870.9 449.9 878.7 454.3 881.6 456.5 883 459.5 884.8 461.1 885.5 462.8 886.3 469 889.9 475.1 893.5L486.1 900 486.4 700C486.6 590 486.6 410 486.4 300L486.1 100 475.1 106.5M513.2 500L513.2 900.4 520.2 896.4C524 894.2 529.6 890.9 532.6 889 535.6 887.2 538.5 885.6 538.9 885.6 539.4 885.6 543.2 883.4 547.4 880.7 557.1 874.4 570.3 866.6 571 866.6 571.3 866.6 585.4 858.5 602.2 848.5 619 838.6 633.7 830 634.9 829.5 636.1 828.9 639.1 827.1 641.5 825.5 643.9 823.9 646.9 822.1 648.1 821.5 650 820.6 669.7 809 680.1 802.8 684.1 800.4 698.2 792.3 704.5 788.8 717.6 781.6 723.6 777.9 724.1 776.8 724.4 776.2 725.2 775.7 726 775.7 726.8 775.7 736.1 770.5 746.8 764.2 757.4 757.9 767.1 752.3 768.3 751.7 769.5 751.2 772.5 749.4 774.9 747.8 777.3 746.2 780.3 744.4 781.5 743.8 785.1 742 803.4 731.2 807.7 728.4 809.8 727 812.6 725.4 813.8 724.8 815 724.2 821.3 720.6 827.7 716.9 834.2 713.1 843.1 708 847.5 705.5L855.6 701.1 855.6 500 855.6 298.9 847.5 294.5C843.1 292 834.2 286.9 827.7 283.1 821.3 279.4 815 275.8 813.8 275.2 812.6 274.6 809.8 273 807.7 271.6 803.4 268.8 785.1 258 781.5 256.2 780.3 255.6 777.3 253.8 774.9 252.2 772.5 250.6 769.5 248.8 768.3 248.3 767.1 247.7 757.4 242.1 746.8 235.8 736.1 229.5 726.8 224.3 726 224.3 725.2 224.3 724.4 223.8 724.1 223.2 723.6 222.1 717.6 218.4 704.5 211.2 698.2 207.7 684.1 199.6 680.1 197.2 669.7 191 650 179.4 648.1 178.5 646.9 177.9 643.9 176.1 641.5 174.5 639.1 172.9 636.1 171.1 634.9 170.5 633.7 170 619 161.4 602.2 151.5 585.4 141.5 571.3 133.4 571 133.4 570.3 133.4 557.1 125.6 547.4 119.3 543.2 116.6 539.4 114.4 538.9 114.4 538.5 114.4 535.6 112.8 532.6 111 529.6 109.1 524 105.8 520.2 103.6L513.2 99.6 513.2 500",
|
||||
"width": 1000
|
||||
},
|
||||
"search": [
|
||||
"musicbrainz"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
<svg id="svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400" viewBox="0, 0, 400,400"><g id="svgg"><path id="path0" d="M82.813 36.795 C 73.142 38.684,63.748 46.325,59.142 56.048 L 56.641 61.328 56.641 181.250 L 56.641 301.172 58.453 305.078 C 62.818 314.483,70.550 321.435,79.871 324.336 C 85.805 326.183,275.798 326.638,275.762 324.805 C 275.752 324.268,274.014 317.860,271.901 310.566 C 269.789 303.272,268.127 297.250,268.210 297.183 C 268.292 297.115,276.094 304.273,285.547 313.088 C 295.000 321.903,311.875 337.227,323.047 347.141 L 343.359 365.167 343.570 217.935 C 343.715 117.280,343.520 68.989,342.955 65.284 C 340.763 50.916,329.719 39.337,315.714 36.723 C 310.433 35.737,87.875 35.807,82.813 36.795 M175.000 113.998 C 175.000 114.393,172.100 115.670,168.555 116.836 C 156.717 120.731,142.778 127.966,134.041 134.752 C 130.866 137.219,133.692 136.687,139.634 133.699 C 167.769 119.553,206.127 116.364,237.891 125.529 C 245.074 127.602,260.033 133.653,262.847 135.624 C 265.145 137.234,266.082 136.956,264.448 135.150 C 260.293 130.559,241.817 120.702,230.689 117.139 C 225.984 115.633,225.204 115.149,225.977 114.217 C 229.216 110.315,257.785 119.594,269.544 128.368 C 280.335 136.419,296.020 192.324,296.087 222.974 C 296.106 231.807,273.612 246.325,255.469 249.187 C 246.826 250.551,246.871 250.566,241.984 244.626 C 236.206 237.602,236.168 237.917,243.164 234.849 C 251.500 231.194,256.048 228.126,261.314 222.605 C 266.311 217.365,266.537 216.099,261.959 218.989 C 228.093 240.367,179.032 241.072,143.439 220.691 C 135.866 216.355,135.370 216.636,140.681 222.251 C 145.732 227.592,151.918 231.808,159.062 234.778 C 162.027 236.010,164.584 237.112,164.744 237.225 C 164.905 237.339,162.642 240.301,159.717 243.809 L 154.397 250.186 149.531 249.687 C 133.289 248.023,116.567 239.683,108.194 229.069 L 105.292 225.391 105.747 215.976 C 107.173 186.447,120.756 139.080,130.511 129.613 C 138.784 121.585,175.000 108.874,175.000 113.998 M164.453 174.612 C 157.882 176.938,153.139 184.261,153.129 192.097 C 153.105 211.028,176.642 217.845,184.758 201.258 C 192.294 185.854,179.633 169.239,164.453 174.612 M224.405 174.480 C 214.148 178.200,209.720 191.302,215.271 201.506 C 222.138 214.127,238.923 213.529,245.015 200.446 C 251.828 185.815,238.712 169.292,224.405 174.480 " stroke="none" fill="#000000" fill-rule="evenodd"></path></g></svg>
|
||||
|
Before Width: | Height: | Size: 2.3 KiB |
@@ -1,5 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="512px" height="512px" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
|
||||
<!-- Generated by Pixelmator Pro 1.6 -->
|
||||
<path id="Path" d="M458.359 244.515 C458.26 243.237 458.162 241.959 458.162 240.681 L458.162 240.583 457.867 236.749 457.867 236.651 C456.829 225.264 454.823 213.987 451.871 202.941 451.871 202.842 451.871 202.842 451.772 202.744 L450.888 199.467 C450.789 199.27 450.789 199.074 450.691 198.975 450.396 197.992 450.101 196.911 449.806 195.928 449.708 195.731 449.708 195.437 449.61 195.24 449.315 194.257 449.02 193.274 448.725 192.389 448.627 192.094 448.528 191.898 448.43 191.57 448.135 190.587 447.84 189.702 447.447 188.719 L447.152 187.834 C446.857 186.95 446.464 185.967 446.169 185.082 446.088 184.803 445.99 184.529 445.874 184.263 445.481 183.378 445.186 182.395 444.793 181.51 444.694 181.314 444.596 181.019 444.498 180.822 444.104 179.839 443.679 178.954 443.318 177.971 443.318 177.873 443.22 177.775 443.22 177.676 441.942 174.531 440.566 171.385 439.124 168.337 L438.829 167.748 C438.436 166.928 438.141 166.273 437.748 165.585 437.551 165.192 437.354 164.7 437.158 164.307 436.863 163.619 436.47 163.029 436.175 162.341 435.88 161.849 435.683 161.358 435.356 160.866 435.028 160.375 434.667 159.687 434.372 158.999 434.078 158.507 433.783 157.917 433.488 157.426 433.193 156.934 432.8 156.246 432.505 155.656 432.213 155.089 431.884 154.542 431.522 154.018 431.227 153.428 430.833 152.936 430.539 152.379 430.244 151.822 429.851 151.298 429.556 150.741 429.261 150.184 428.867 149.66 428.573 149.168 428.278 148.677 427.884 147.988 427.491 147.399 427.198 146.885 426.87 146.392 426.508 145.924 L425.328 144.179 C425.035 143.666 424.707 143.173 424.346 142.705 423.952 142.115 423.461 141.427 423.068 140.837 422.773 140.444 422.478 139.952 422.183 139.559 L420.708 137.495 C420.413 137.101 420.217 136.806 419.889 136.413 419.07 135.332 418.414 134.349 417.628 133.366 411.737 125.642 405.3 118.349 398.369 111.542 393.682 106.656 388.677 102.085 383.385 97.862 380.109 95.011 376.701 92.357 373.162 89.801 366.825 85.082 360.081 80.937 353.01 77.414 351.043 76.333 349.077 75.35 347.111 74.367 332.646 67.286 317.408 61.909 301.703 58.344 300.13 58.049 298.557 57.655 297.083 57.36 L296.984 57.36 C296.165 57.262 295.51 57.065 294.723 56.967 284.452 55.037 274.042 53.941 263.594 53.69 L254.886 53.69 C242.363 53.839 229.884 55.21 217.629 57.786 190.112 63.586 165.831 75.186 149.709 89.735 148.824 90.554 148.136 91.111 147.743 91.505 L147.349 91.898 147.456 91.898 147.358 91.996 147.456 91.898 C147.482 91.898 147.507 91.888 147.525 91.869 147.544 91.851 147.554 91.826 147.554 91.8 L147.456 91.898 C147.509 91.844 147.578 91.81 147.653 91.8 159.646 84.623 176.259 78.692 188.154 75.776 L192.971 74.596 C193.266 74.498 193.659 74.498 193.954 74.4 195.33 74.105 196.706 73.81 198.181 73.515 198.377 73.515 198.672 73.417 198.869 73.417 251.445 63.849 307.478 79.577 346.521 116.826 354.943 124.827 362.339 133.841 368.542 143.663 393.413 183.968 391.053 234.684 371.687 264.569 343.474 307.986 280.469 322.953 241.435 284.918 228.335 272.212 220.806 254.832 220.496 236.585 220.351 227.851 222.095 219.188 225.608 211.19 226.984 208.044 236.323 190.161 240.55 191.046 229.835 188.785 209.789 193.208 195.731 214.139 183.148 232.915 183.837 261.816 191.635 282.362 186.68 272.226 183.33 261.381 181.707 250.216 171.68 182.591 217.186 124.879 258.965 110.535 236.454 90.874 179.937 92.258 137.961 123.118 113.484 141.14 95.994 166.666 86.753 197.141 88.129 180.036 94.618 154.477 107.889 128.426 93.831 135.7 75.94 158.736 67.092 179.937 54.313 210.6 49.889 247.267 53.92 282.165 54.215 284.819 54.509 287.375 54.804 290.03 71.123 385.966 154.747 459.096 255.328 459.096 367.632 459.096 458.752 367.976 458.752 255.59 458.654 251.888 458.555 248.152 458.359 244.515 Z" fill="#000000" fill-opacity="1" stroke="none"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 3.9 KiB |
@@ -1,5 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="512px" height="512px" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
|
||||
<!-- Generated by Pixelmator Pro 1.5.4 -->
|
||||
<path id="Path" d="M188.334 372.245 C188.334 373.883 186.45 375.194 184.074 375.194 181.371 375.439 179.487 374.129 179.487 372.245 179.487 370.606 181.371 369.295 183.746 369.295 186.204 369.05 188.334 370.36 188.334 372.245 Z M162.857 368.558 C162.283 370.196 163.922 372.081 166.379 372.572 168.509 373.391 170.967 372.572 171.458 370.934 171.95 369.295 170.393 367.411 167.936 366.674 165.806 366.1 163.43 366.92 162.857 368.558 Z M199.065 367.165 C196.69 367.739 195.051 369.295 195.297 371.18 195.543 372.818 197.673 373.883 200.13 373.309 202.506 372.736 204.145 371.18 203.899 369.541 203.653 367.985 201.441 366.92 199.065 367.165 Z M252.969 53.248 C139.346 53.248 52.429 139.51 52.429 253.133 52.429 343.982 109.609 421.724 191.283 449.085 201.769 450.97 205.455 444.498 205.455 439.173 205.455 434.094 205.209 406.078 205.209 388.874 205.209 388.874 147.865 401.162 135.823 364.462 135.823 364.462 126.484 340.623 113.05 334.479 113.05 334.479 94.29 321.618 114.36 321.864 114.36 321.864 134.758 323.502 145.981 342.999 163.922 374.62 193.986 365.527 205.701 360.12 207.585 347.013 212.91 337.92 218.808 332.513 173.015 327.434 126.812 320.799 126.812 241.992 126.812 219.464 133.038 208.159 146.145 193.741 144.015 188.416 137.052 166.461 148.275 138.117 165.396 132.792 204.8 160.236 204.8 160.236 221.184 155.648 238.797 153.272 256.246 153.272 273.695 153.272 291.307 155.648 307.691 160.236 307.691 160.236 347.095 132.71 364.216 138.117 375.439 166.543 368.476 188.416 366.346 193.741 379.453 208.241 387.481 219.546 387.481 241.992 387.481 321.044 339.231 327.352 293.437 332.513 300.974 338.985 307.364 351.273 307.364 370.524 307.364 398.131 307.118 432.292 307.118 439.009 307.118 444.334 310.886 450.806 321.29 448.922 403.21 421.724 458.752 343.982 458.752 253.133 458.752 139.51 366.592 53.248 252.969 53.248 Z M132.055 335.79 C130.99 336.609 131.236 338.493 132.628 340.05 133.939 341.361 135.823 341.934 136.888 340.869 137.953 340.05 137.707 338.166 136.315 336.609 135.004 335.299 133.12 334.725 132.055 335.79 Z M123.208 329.155 C122.634 330.22 123.453 331.53 125.092 332.349 126.402 333.169 128.041 332.923 128.614 331.776 129.188 330.711 128.369 329.4 126.73 328.581 125.092 328.09 123.781 328.335 123.208 329.155 Z M149.75 358.318 C148.439 359.383 148.93 361.841 150.815 363.397 152.699 365.281 155.074 365.527 156.139 364.216 157.204 363.151 156.713 360.694 155.074 359.137 153.272 357.253 150.815 357.007 149.75 358.318 Z M140.411 346.276 C139.1 347.095 139.1 349.225 140.411 351.109 141.721 352.993 143.933 353.813 144.998 352.993 146.309 351.928 146.309 349.798 144.998 347.914 143.851 346.03 141.721 345.211 140.411 346.276 Z" fill="#000000" fill-opacity="1" stroke="none"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 2.9 KiB |
@@ -1,5 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="512px" height="512px" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
|
||||
<!-- Generated by Pixelmator Pro 1.6 -->
|
||||
<path id="Path" d="M440.664 156.86 C407.036 91.079 334.447 53.248 255.516 53.248 158.146 53.248 76.603 121.799 56.91 213.533 78.209 175.448 127.541 148.701 179.347 148.701 244.285 148.701 278.544 188.785 279.495 189.809 297.517 209.306 306.528 231.088 306.528 257.884 306.528 266.404 302.178 279.036 294.15 289.481 292.864 291.119 288.915 293.446 288.915 298.492 288.915 302.637 291.611 306.618 296.403 309.961 319.226 325.829 362.242 323.731 362.357 323.731 379.258 323.685 395.838 319.108 410.37 310.477 440.212 293.049 458.589 261.116 458.662 226.558 459.071 190.98 445.964 167.33 440.664 156.86 Z M220.176 436.363 C204.983 426.907 191.962 414.344 181.969 399.499 154.984 360.653 153.919 321.184 165.503 288.088 173.74 262.099 190.098 239.438 212.173 223.437 260.505 186.409 289.866 218.808 293.323 222.618 292.184 219.758 290.845 216.982 289.317 214.311 281.747 201.261 269.656 184.484 242.983 170.476 215.359 155.984 185.155 155.247 179.38 155.247 147.669 155.247 115.564 165.896 91.292 184.484 75.104 196.854 56.336 217.678 52.92 245.76 52.035 255.844 50.667 297.206 71.762 342.647 108.219 420.431 189.66 466.878 275.169 458.654 243.941 453.231 221.225 436.83 220.176 436.363 Z M425.566 355.811 C423.601 354.566 421.112 354.494 419.078 355.623 413.663 358.454 408.08 360.949 402.358 363.094 384.137 369.91 364.837 373.384 345.383 373.35 270.287 373.35 204.874 321.692 204.874 255.386 204.964 247.77 206.791 240.275 210.215 233.472 197.143 245.001 186.369 258.899 178.463 274.432 166.24 298.492 151.429 346.628 189.383 398.672 194.716 405.971 208.224 423.248 235.258 437.723 254.566 448.086 275.399 453.788 293.994 453.788 322.781 453.788 388.555 426.394 427.524 364.601 428.435 363.178 428.741 361.449 428.373 359.799 428.006 358.149 426.995 356.714 425.566 355.811 Z" fill="#000000" fill-opacity="1" stroke="none"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 2.0 KiB |
1
assets/images/brands/musicbrainz.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg id="svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400" viewBox="0, 0, 400,400"><g id="svgg"><path id="path0" d="M190.029 42.611 C 187.610 44.044,185.103 45.471,184.457 45.784 C 183.812 46.096,182.582 46.810,181.723 47.369 C 179.975 48.509,174.674 51.621,170.674 53.855 C 169.223 54.666,163.284 58.136,157.478 61.566 C 151.672 64.996,146.525 67.990,146.041 68.219 C 145.557 68.447,144.370 69.156,143.402 69.794 C 142.434 70.432,141.240 71.155,140.748 71.401 C 140.019 71.765,132.107 76.395,127.957 78.886 C 126.362 79.843,120.705 83.073,118.182 84.468 C 112.956 87.356,110.547 88.836,110.362 89.274 C 110.254 89.528,109.910 89.736,109.597 89.736 C 109.284 89.736,105.545 91.796,101.288 94.313 C 97.031 96.830,93.152 99.077,92.669 99.305 C 92.185 99.533,90.997 100.242,90.029 100.879 C 89.062 101.517,87.874 102.240,87.390 102.486 C 85.978 103.203,78.623 107.531,76.923 108.645 C 76.067 109.206,74.971 109.853,74.487 110.083 C 74.003 110.313,71.496 111.741,68.915 113.257 C 66.334 114.772,62.771 116.811,60.997 117.788 L 57.771 119.564 57.771 200.000 L 57.771 280.436 60.997 282.212 C 62.771 283.189,66.334 285.228,68.915 286.743 C 71.496 288.259,74.003 289.687,74.487 289.917 C 74.971 290.147,76.067 290.794,76.923 291.355 C 78.623 292.469,85.978 296.797,87.390 297.514 C 87.874 297.760,89.062 298.483,90.029 299.121 C 90.997 299.758,92.185 300.467,92.669 300.695 C 93.152 300.923,97.031 303.170,101.288 305.687 C 105.545 308.204,109.284 310.264,109.597 310.264 C 109.910 310.264,110.254 310.472,110.362 310.726 C 110.547 311.164,112.956 312.644,118.182 315.532 C 120.705 316.927,126.362 320.157,127.957 321.114 C 132.107 323.605,140.019 328.235,140.748 328.599 C 141.240 328.845,142.434 329.568,143.402 330.206 C 144.370 330.844,145.557 331.553,146.041 331.781 C 146.525 332.010,151.672 335.004,157.478 338.434 C 163.284 341.864,169.223 345.334,170.674 346.145 C 174.674 348.379,179.975 351.491,181.723 352.631 C 182.582 353.190,183.812 353.904,184.457 354.216 C 185.103 354.529,187.610 355.956,190.029 357.389 L 194.428 359.994 194.577 279.997 C 194.659 235.999,194.659 164.001,194.577 120.003 L 194.428 40.006 190.029 42.611 M205.279 200.000 L 205.279 360.167 208.065 358.562 C 209.597 357.679,211.835 356.348,213.038 355.604 C 214.241 354.861,215.384 354.252,215.578 354.252 C 215.772 354.252,217.295 353.370,218.962 352.291 C 222.855 349.773,228.101 346.628,228.408 346.628 C 228.539 346.628,234.144 343.381,240.863 339.413 C 247.582 335.445,253.475 332.011,253.959 331.782 C 254.443 331.553,255.630 330.844,256.598 330.206 C 257.566 329.568,258.760 328.845,259.252 328.599 C 259.981 328.235,267.893 323.605,272.043 321.114 C 273.638 320.157,279.295 316.927,281.818 315.532 C 287.044 312.644,289.453 311.164,289.638 310.726 C 289.746 310.472,290.090 310.264,290.403 310.264 C 290.716 310.264,294.455 308.204,298.712 305.687 C 302.969 303.170,306.848 300.923,307.331 300.695 C 307.815 300.467,309.003 299.758,309.971 299.121 C 310.938 298.483,312.126 297.760,312.610 297.514 C 314.022 296.797,321.377 292.469,323.077 291.355 C 323.933 290.794,325.029 290.147,325.513 289.917 C 325.997 289.687,328.504 288.259,331.085 286.743 C 333.666 285.228,337.229 283.189,339.003 282.212 L 342.229 280.436 342.229 200.000 L 342.229 119.564 339.003 117.788 C 337.229 116.811,333.666 114.772,331.085 113.257 C 328.504 111.741,325.997 110.313,325.513 110.083 C 325.029 109.853,323.933 109.206,323.077 108.645 C 321.377 107.531,314.022 103.203,312.610 102.486 C 312.126 102.240,310.938 101.517,309.971 100.879 C 309.003 100.242,307.815 99.533,307.331 99.305 C 306.848 99.077,302.969 96.830,298.712 94.313 C 294.455 91.796,290.716 89.736,290.403 89.736 C 290.090 89.736,289.746 89.528,289.638 89.274 C 289.453 88.836,287.044 87.356,281.818 84.468 C 279.295 83.073,273.638 79.843,272.043 78.886 C 267.893 76.395,259.981 71.765,259.252 71.401 C 258.760 71.155,257.566 70.432,256.598 69.794 C 255.630 69.156,254.443 68.447,253.959 68.218 C 253.475 67.989,247.582 64.555,240.863 60.587 C 234.144 56.619,228.539 53.372,228.408 53.372 C 228.101 53.372,222.855 50.227,218.962 47.709 C 217.295 46.630,215.772 45.748,215.578 45.748 C 215.384 45.748,214.241 45.139,213.038 44.396 C 211.835 43.652,209.597 42.321,208.065 41.438 L 205.279 39.833 205.279 200.000 " stroke="none" fill="#000000" fill-rule="evenodd"></path></g></svg>
|
||||
|
After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 5.5 KiB |
@@ -1,5 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="512px" height="512px" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
|
||||
<!-- Generated by Pixelmator Pro 1.5.4 -->
|
||||
<path id="Path" d="M406.569 213.402 C394.281 213.402 383.467 218.481 375.521 226.427 346.276 206.193 306.872 193.167 263.209 191.775 L285.901 89.539 358.154 105.759 C358.154 123.453 372.572 137.871 390.267 137.871 408.289 137.871 422.789 123.044 422.789 105.349 422.789 87.654 408.371 72.827 390.267 72.827 377.651 72.827 366.756 80.445 361.349 90.849 L281.559 73.155 C277.545 72.09 273.613 74.957 272.548 78.971 L247.644 191.693 C204.308 193.495 165.314 206.52 135.987 226.755 128.041 218.481 116.818 213.402 104.53 213.402 58.982 213.402 44.073 274.514 85.77 295.404 84.296 301.875 83.64 308.756 83.64 315.638 83.64 384.287 160.973 439.91 255.918 439.91 351.273 439.91 428.605 384.287 428.605 315.638 428.605 308.756 427.868 301.548 426.066 295.076 466.944 274.104 451.871 213.402 406.569 213.402 Z M151.88 299.745 C151.88 281.723 166.297 267.223 184.402 267.223 202.097 267.223 216.514 281.641 216.514 299.745 216.514 317.44 202.097 331.858 184.402 331.858 166.379 331.94 151.88 317.44 151.88 299.745 Z M327.434 376.34 C297.615 406.159 213.483 406.159 183.665 376.34 180.388 373.473 180.388 368.394 183.665 365.117 186.532 362.25 191.611 362.25 194.478 365.117 217.252 388.465 292.782 388.874 316.539 365.117 319.406 362.25 324.485 362.25 327.352 365.117 330.711 368.394 330.711 373.473 327.434 376.34 Z M326.779 331.94 C309.084 331.94 294.666 317.522 294.666 299.827 294.666 281.805 309.084 267.305 326.779 267.305 344.801 267.305 359.301 281.723 359.301 299.827 359.219 317.44 344.801 331.94 326.779 331.94 Z" fill="#000000" fill-opacity="1" stroke="none"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 5.5 KiB |
5
assets/images/brands/thetvdb.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generated by Pixelmator Pro 2.4.3 -->
|
||||
<svg width="600" height="600" viewBox="0 0 600 600" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<path id="Combined-Shape-copy" fill="#6cd591" stroke="none" d="M 40 98.184265 C 40 67.761475 67.442932 46.912048 99.840714 51.678772 L 99.840714 51.678772 L 522.457458 106.876831 C 541.452515 109.671478 556.589844 130.135742 556.589844 152.422211 L 556.589844 152.422211 L 556.583374 210.106506 C 520.97406 233.96756 497.63327 273.904633 497.63327 319.14444 C 497.63327 364.818512 520.406433 404.40741 556.589844 428.186096 L 556.589844 428.186096 L 556.589844 453.55188 C 556.589844 475.837952 541.452515 496.302795 522.457458 499.097229 L 522.457458 499.097229 L 147.445068 550.320374 C 115.047112 555.089844 87.604179 534.237976 87.604179 503.814819 L 87.604179 503.814819 Z M 222.240875 151.201843 L 166.502167 151.201843 L 166.502167 224.207397 L 131.140991 224.207397 L 131.140991 266.389832 L 166.502167 266.389832 L 166.502167 347.5065 C 164.867477 398.476501 184.888977 421.299561 230.894348 421.727905 L 273.827423 421.728699 L 273.827423 379.546326 L 251.78212 379.546326 C 226.819031 378.329651 221.415802 371.028687 222.243652 338.174988 L 222.243652 266.386108 L 290.762085 266.386108 L 354.231049 421.725922 L 414.131226 421.725922 L 501.490082 224.20462 L 442.414978 224.20462 L 385.841919 360.079651 L 334.254456 224.207397 L 222.240875 224.207397 L 222.240875 151.201843 Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
41
assets/images/brands/tvmaze.svg
Normal file
@@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||
width="650.000000pt" height="650.000000pt" viewBox="0 0 650.000000 650.000000"
|
||||
preserveAspectRatio="xMidYMid meet">
|
||||
|
||||
<g transform="translate(0.000000,650.000000) scale(0.100000,-0.100000)"
|
||||
fill="#000000" stroke="none">
|
||||
<path d="M1230 5991 c-76 -16 -125 -56 -159 -131 -35 -77 -23 -158 33 -223 22
|
||||
-25 162 -112 466 -288 239 -138 516 -298 615 -357 99 -58 201 -116 227 -130
|
||||
26 -14 45 -28 43 -32 -2 -4 -57 -10 -122 -14 -183 -11 -505 -50 -713 -87 -294
|
||||
-51 -578 -160 -713 -272 -50 -41 -120 -133 -155 -202 -22 -46 -94 -261 -116
|
||||
-350 -8 -33 -24 -114 -35 -180 -58 -345 -75 -626 -68 -1170 6 -479 15 -610 62
|
||||
-890 54 -320 130 -550 222 -672 74 -97 158 -157 317 -226 292 -126 681 -197
|
||||
1313 -239 248 -17 1371 -17 1618 0 340 23 793 84 979 132 236 61 451 154 544
|
||||
236 109 95 159 183 226 394 71 226 97 369 133 753 14 143 17 281 17 642 0 453
|
||||
-6 576 -40 855 -49 397 -151 718 -274 862 -142 165 -530 304 -1026 368 -174
|
||||
22 -476 50 -546 50 -54 0 -61 10 -20 30 15 8 38 22 52 31 14 9 84 50 155 91
|
||||
72 41 175 101 230 133 118 68 344 199 615 355 107 62 210 126 227 143 47 44
|
||||
67 103 60 178 -10 116 -97 194 -212 193 -71 -1 -55 6 -375 -179 -135 -79 -387
|
||||
-225 -560 -325 -335 -193 -396 -229 -724 -420 -115 -66 -226 -130 -247 -141
|
||||
l-39 -19 -162 94 c-90 51 -262 151 -383 221 -792 460 -1207 699 -1295 747 -71
|
||||
39 -116 49 -170 39z m2300 -1721 c449 -16 767 -40 1070 -81 203 -27 253 -38
|
||||
348 -75 198 -78 285 -175 347 -390 64 -219 82 -385 95 -854 15 -568 -15 -958
|
||||
-95 -1233 -35 -122 -65 -176 -140 -256 -66 -70 -157 -127 -240 -150 -141 -40
|
||||
-451 -90 -690 -111 -219 -19 -736 -40 -992 -40 -416 0 -896 30 -1286 80 -280
|
||||
36 -335 49 -456 107 -155 74 -225 160 -285 350 -59 189 -78 345 -97 788 -30
|
||||
711 35 1284 169 1491 73 112 196 199 337 237 100 27 400 76 565 92 166 16 732
|
||||
46 995 53 39 1 198 -3 355 -8z"/>
|
||||
<path d="M1841 3465 c-225 -49 -387 -207 -446 -435 -62 -239 76 -521 307 -630
|
||||
145 -68 280 -76 427 -26 221 75 366 269 378 506 15 284 -174 525 -456 585 -86
|
||||
18 -125 18 -210 0z"/>
|
||||
<path d="M4445 3462 c-266 -70 -445 -293 -445 -557 0 -355 346 -631 690 -549
|
||||
72 17 195 79 249 126 75 65 151 195 176 300 44 187 -14 389 -151 525 -74 73
|
||||
-123 103 -226 137 -104 35 -203 41 -293 18z"/>
|
||||
<path d="M2580 2128 c0 -18 117 -128 185 -173 206 -136 443 -211 701 -222 200
|
||||
-8 319 16 427 88 40 27 67 63 55 75 -2 2 -27 -5 -56 -16 -79 -30 -197 -39
|
||||
-377 -30 -347 19 -616 97 -856 248 -72 45 -79 48 -79 30z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 90 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 12 KiB |