From f5585d46a88ea487a0af8d7887c2b957467238e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20de=20Chambure?= <129199959+flumz-tv@users.noreply.github.com> Date: Thu, 21 May 2026 10:14:44 +0200 Subject: [PATCH 1/3] feat(ios): add app icon assets and bump to v1.0.2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit All required iOS icon sizes (20×20 → 1024×1024) added for iPhone and iPad. Contents.json updated with explicit filenames for every slot. Build number bumped to 3. --- CHANGELOG.md | 7 + ios/Musonic.xcodeproj/project.pbxproj | 8 +- .../AppIcon.appiconset/Contents.json | 169 ++++++++++++------ .../AppIcon.appiconset/Icon-1024.png | Bin 0 -> 31771 bytes .../AppIcon.appiconset/Icon-120.png | Bin 0 -> 3100 bytes .../AppIcon.appiconset/Icon-152.png | Bin 0 -> 3962 bytes .../AppIcon.appiconset/Icon-167.png | Bin 0 -> 4355 bytes .../AppIcon.appiconset/Icon-180.png | Bin 0 -> 4605 bytes .../AppIcon.appiconset/Icon-20.png | Bin 0 -> 542 bytes .../AppIcon.appiconset/Icon-29.png | Bin 0 -> 736 bytes .../AppIcon.appiconset/Icon-40.png | Bin 0 -> 1068 bytes .../AppIcon.appiconset/Icon-58.png | Bin 0 -> 1466 bytes .../AppIcon.appiconset/Icon-60.png | Bin 0 -> 1542 bytes .../AppIcon.appiconset/Icon-76.png | Bin 0 -> 1961 bytes .../AppIcon.appiconset/Icon-80.png | Bin 0 -> 2056 bytes .../AppIcon.appiconset/Icon-87.png | Bin 0 -> 2243 bytes package.json | 2 +- 17 files changed, 128 insertions(+), 58 deletions(-) create mode 100644 ios/Musonic/Images.xcassets/AppIcon.appiconset/Icon-1024.png create mode 100644 ios/Musonic/Images.xcassets/AppIcon.appiconset/Icon-120.png create mode 100644 ios/Musonic/Images.xcassets/AppIcon.appiconset/Icon-152.png create mode 100644 ios/Musonic/Images.xcassets/AppIcon.appiconset/Icon-167.png create mode 100644 ios/Musonic/Images.xcassets/AppIcon.appiconset/Icon-180.png create mode 100644 ios/Musonic/Images.xcassets/AppIcon.appiconset/Icon-20.png create mode 100644 ios/Musonic/Images.xcassets/AppIcon.appiconset/Icon-29.png create mode 100644 ios/Musonic/Images.xcassets/AppIcon.appiconset/Icon-40.png create mode 100644 ios/Musonic/Images.xcassets/AppIcon.appiconset/Icon-58.png create mode 100644 ios/Musonic/Images.xcassets/AppIcon.appiconset/Icon-60.png create mode 100644 ios/Musonic/Images.xcassets/AppIcon.appiconset/Icon-76.png create mode 100644 ios/Musonic/Images.xcassets/AppIcon.appiconset/Icon-80.png create mode 100644 ios/Musonic/Images.xcassets/AppIcon.appiconset/Icon-87.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 908030f..2e08ba1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 --- +## [1.0.2] - 2026-05-21 + +### Added +- **iOS app icon** — all required sizes now bundled (20×20 → 1024×1024) for iPhone and iPad; `Contents.json` updated with explicit filenames for every slot. + +--- + ## [1.0.1] - 2026-05-20 ### Fixed diff --git a/ios/Musonic.xcodeproj/project.pbxproj b/ios/Musonic.xcodeproj/project.pbxproj index 70f291c..c68ef63 100644 --- a/ios/Musonic.xcodeproj/project.pbxproj +++ b/ios/Musonic.xcodeproj/project.pbxproj @@ -257,7 +257,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 3; ENABLE_BITCODE = NO; INFOPLIST_FILE = Musonic/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 15.1; @@ -265,7 +265,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.1; + MARKETING_VERSION = 1.0.2; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -287,14 +287,14 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 3; INFOPLIST_FILE = Musonic/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 15.1; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.1; + MARKETING_VERSION = 1.0.2; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", diff --git a/ios/Musonic/Images.xcassets/AppIcon.appiconset/Contents.json b/ios/Musonic/Images.xcassets/AppIcon.appiconset/Contents.json index 359c1d6..92a5988 100644 --- a/ios/Musonic/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/ios/Musonic/Images.xcassets/AppIcon.appiconset/Contents.json @@ -1,53 +1,116 @@ -{ - "images" : [ - { - "idiom" : "iphone", - "scale" : "2x", - "size" : "20x20" - }, - { - "idiom" : "iphone", - "scale" : "3x", - "size" : "20x20" - }, - { - "idiom" : "iphone", - "scale" : "2x", - "size" : "29x29" - }, - { - "idiom" : "iphone", - "scale" : "3x", - "size" : "29x29" - }, - { - "idiom" : "iphone", - "scale" : "2x", - "size" : "40x40" - }, - { - "idiom" : "iphone", - "scale" : "3x", - "size" : "40x40" - }, - { - "idiom" : "iphone", - "scale" : "2x", - "size" : "60x60" - }, - { - "idiom" : "iphone", - "scale" : "3x", - "size" : "60x60" - }, - { - "idiom" : "ios-marketing", - "scale" : "1x", - "size" : "1024x1024" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} +{ + "images": [ + { + "filename": "Icon-40.png", + "idiom": "iphone", + "scale": "2x", + "size": "20x20" + }, + { + "filename": "Icon-60.png", + "idiom": "iphone", + "scale": "3x", + "size": "20x20" + }, + { + "filename": "Icon-58.png", + "idiom": "iphone", + "scale": "2x", + "size": "29x29" + }, + { + "filename": "Icon-87.png", + "idiom": "iphone", + "scale": "3x", + "size": "29x29" + }, + { + "filename": "Icon-80.png", + "idiom": "iphone", + "scale": "2x", + "size": "40x40" + }, + { + "filename": "Icon-120.png", + "idiom": "iphone", + "scale": "3x", + "size": "40x40" + }, + { + "filename": "Icon-120.png", + "idiom": "iphone", + "scale": "2x", + "size": "60x60" + }, + { + "filename": "Icon-180.png", + "idiom": "iphone", + "scale": "3x", + "size": "60x60" + }, + { + "filename": "Icon-20.png", + "idiom": "ipad", + "scale": "1x", + "size": "20x20" + }, + { + "filename": "Icon-40.png", + "idiom": "ipad", + "scale": "2x", + "size": "20x20" + }, + { + "filename": "Icon-29.png", + "idiom": "ipad", + "scale": "1x", + "size": "29x29" + }, + { + "filename": "Icon-58.png", + "idiom": "ipad", + "scale": "2x", + "size": "29x29" + }, + { + "filename": "Icon-40.png", + "idiom": "ipad", + "scale": "1x", + "size": "40x40" + }, + { + "filename": "Icon-80.png", + "idiom": "ipad", + "scale": "2x", + "size": "40x40" + }, + { + "filename": "Icon-76.png", + "idiom": "ipad", + "scale": "1x", + "size": "76x76" + }, + { + "filename": "Icon-152.png", + "idiom": "ipad", + "scale": "2x", + "size": "76x76" + }, + { + "filename": "Icon-167.png", + "idiom": "ipad", + "scale": "2x", + "size": "83.5x83.5" + }, + { + "filename": "Icon-1024.png", + "idiom": "ios-marketing", + "scale": "1x", + "size": "1024x1024" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} \ No newline at end of file diff --git a/ios/Musonic/Images.xcassets/AppIcon.appiconset/Icon-1024.png b/ios/Musonic/Images.xcassets/AppIcon.appiconset/Icon-1024.png new file mode 100644 index 0000000000000000000000000000000000000000..42e22f4b0376e84c4fdc2b4539e71c835cad32ac GIT binary patch literal 31771 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 N=xZBmRcK%%{s&Y?X}|yg literal 0 HcmV?d00001 diff --git a/ios/Musonic/Images.xcassets/AppIcon.appiconset/Icon-167.png b/ios/Musonic/Images.xcassets/AppIcon.appiconset/Icon-167.png new file mode 100644 index 0000000000000000000000000000000000000000..38368b65fd3c8191c2aa61e53f3048e1605280dc GIT binary patch literal 4355 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 literal 0 HcmV?d00001 diff --git a/ios/Musonic/Images.xcassets/AppIcon.appiconset/Icon-180.png b/ios/Musonic/Images.xcassets/AppIcon.appiconset/Icon-180.png new file mode 100644 index 0000000000000000000000000000000000000000..031186a72e2d57411d16a695e9329914b934b577 GIT binary patch literal 4605 zcmaJ_XH-*5xD8-}BHhrN-W#O%E-h5)y+ow<4xxjTL_`Eb?>(T12%+~53P=ke(m|Ra z5_<2v-1qyfw`NUQXXc!5&&;>KIeTLCbe@xuFp>ZO05WwoWdnR&_g}sb!k4lmAYpt3 zvekU947mF*q1#JR0062Qb!7#kpxm9sSAO8>Fyj5ayv0emkCSrjNQm@fUMPfK@ZS9Q zdy!<~>T@5}HPjz_b`3}gRqKXi)0Tvb#^>d)HF>Ohug-XyH~Oj?cHJQFm}&3epKkk?(kw(}FzDzvM?uqA63h;ead2Kk~7vA6gGB zU|8hoMJWE&=K$WJMyfXez@KYGukA&v9;ctow1Yj1bK^Wq-K={8;M|OVj{`y!<9nMq z@%P&E)vGJ(1}`jkVz;$-F+{x+ASgReLzP@?`1-LsX_R7rO>oL~wglz<1s?Suta_R1 zHp5Afzlo!Nu6)G3YQ6_+Kc+lq_!G*riB15g#|fPROD4G96$L@DOv1pq)w8RDUhj6T zceL~f8l93_BXF;5mZgjXnh4o73blE9IkxH3Y+l5_1~@5 z=)X@&c?xzca#Fxv1Ze3gpf0+<|K0XLiy)Nm93`3KK2JL?!0>ywSBE<4R zP$+!|aU$iv^8mnWyk8J-OT0VaI|^yHMEZuuP4PWZCNNQ;^rQt0PqwhX;Y12GCVzeE39%;>g~5-bK7OnBH2bx2 zwGA`e=}AVjJiI2K0YbHWMb9|kAEo0n=53uxIO;qde`PN1N!;{!CwGs+EN? z`gJ`;<=JsOfp2@ptz2vnY`Y|MJI`7Qjl_6KoLAXqi>$d(_{W}O$31g#y0mDAFUz0E zkF^@fbot796gw@ZaCh|T%fA|Xf-ss!%?=m7^Y>(GB;WaqEWT*3l;^UUSkY+<5yJK7 zY$Ah++9Atb4|z(ydJOFfz9tIV@)PK|3!t|(E6DLw??Q597~865@s*tQPcTPxRFd__ znZC{x8T0pK3aG45=*qwHf5Gu8dcR)Y{M(DXFxe%c{zzh4kTuO=PJUJJ;~0ldFNGeM z7_G!QXMcj+izL%b0(7_G>#)YDRbSI|uAg77XMk_}D=T{_DjsaGI07>D9lvgbtXXh- zwLmK|aGPM`4I+rtU^!vFXL*mj#iO=u>zc$b7AD)~7LooUsW)qLMtk~x!BN&N(52aB z!_cgy+_mm_@-2wEgF(W6&W0gvUTw; z&2Hj9n-8LOr;Dl$ZaKd*>plorGLM`Wlj&9vtBV(kD=-OkC?)H(Fpk?3Ak~_E`4ae6 zdLw9m3sc`@7Im=hPLGKepF9~0;Uorv7G{@wO}7@#*NJZ=e{vORYDEg62VHt)63Cdg z289ec);d+o3P)(1S;E3DcWB+SaJ}ixmY5u2cCx|Kw#@S1k7tXZIC_zp=@M3Y%v*6& zbiF5nfWae2A3czYY8cU?agGdomCT&UJ!YijH0nG*Y>u32ApqIec{o-;nLPG35#tS6 z&4d_#BGT{pUVA5!+6ijS74rz{d};!=vvlW>f88r25vFst=aqN3{sV7j{`ZJ^+)%Yc zh3S++&A6+xFVJiQ`&UzA<}idKpgv6WRbu0}*KxHA=K+y)w=yMA&Qy7oM@?5j_q_u8 z1uk3|mtIMu)>b6*J8aDQ6cZVN=p;=>dZmM z?VKi^Kg9Wm*@8>ipSo#?kkrKw{6&u*vsc%OiT~YeU3Dp!9z$MbE2?dJb5}KVgXKCq z$td#P+2@L#?7Yh@?KnPTD6#zljdc1Yg=dnm0H|xNB&6C=mq}+JD6DY1Nf4pC2vJoGCaP1wFgd4t65)N^;>z#E+rXOS*u}<_`f+x;b%XWe` zm0^?pFbE{RQ=YbG+6t!}A$-% z4kL+Zzz3~@fsSwVUf*H9@_6j zKp#ILEH=rWbZ1~PBXvJ+`dRh*3I8`AKCDmx_}>C*I~jKQGE2NinFV(=vy}xj{`T8H z_0%PFJN+#ln-r5PIl&nnKQJri>Tl+BmD1#(%d;C&`_So9SU#gzEWJlo`^mz!2Gg$? z*Ry?A{Py$fw4k!BzETr66yW-O|6Eo>HoHb9`G=2E(VzT+B>djHclx;dGzst!f@7=Zv)@eVP8mny$GXkvoS1A9r!j*#+)}@4 ziPcS!=^_6!C_D!S`ryGGV!>a2kuGx9(=P1_bm)pk*~)wweV)a4v@2ouz!7gErffXG zT5hns*VGq3{HIcau`2uX0}(^CW@)szc<`eUF#5?ep?SmP12NTk=1(M|7iu1*G!jNq z^`386wZwc4Vo=Cw+orApg3LelcKTiMWnt`}{a@(6bY&6Il2~+!S~Lh{$4_Y|v7RWd zHKnr5ds)D#3GSxN^+_r%Sn~7uZHG3Ea|Y@|NaT+EebVzE{e#}7krYR5S#GQD#iZ$* zMI?2jp56FZ=D$mAuJ78rsSp}rpysIc!8m;--IT7xi!82gJ1ba(y zJQ*&1yBce-AlVKs*iZi*7WSG-r+kKwl!A}M);Fwq3$DrJKGUCwr?fR`wzI;%Vx5VTwmVmIlkKKbkjM~8 z2dpa(1_bXVVMAn;$fS{ z>&@!7wDkMGPtrc8!1c;RKcq3Y$QuTkM$+kunb1In5pr&uasKN~E-jiV{)PjE=#djv znJPiOG5;-$5_c_0Qv}kg_Qa3^llanA<6wWa=PkpS6-9fvBg1uo1NL%Vv2U%*UnK*1 zI?s1L@Ph;<+Qj$5i{*#a2=BDtjf?hlzN`i45*bBcBw6=2?fB=DU`<}wvgsZ#nwbtH zEDtf#^`qN#&7i?Krn)rTzKQR!!!4L-cND9hkQR@F$9K6Jn#U~AUX=pT+F!45k1hv9 z2pOlafT~J6O0GyUWgP!lSy??pJ|p|5;}m@OYZZh867seu-EW$I7^7v`2^nPqwCBBb zo{QPJ@fOdv1U8bbD*uG7gV425(`UTd*o`9-NTJKSzE(=jB9+L~V{-MTN-m@Q6K(}l zrdl`5>zdm4bOR9se6@7nw^>qmvUg=9v)QH~qi% z^usJ%@n|PyQi+^=k5Mon$W_h>A0}yek={_cF4Ru>djx z^7*`3UeyHN4{ZBY+Uh3B-%GG?p~?|n;?4CKz8sNFT;=Zc(9%W1GYii3e&TN^6sKyw z6^Vo}mgP3p7~Qx<=$??TJiMBxV)-#Tb7Y@PUA5K&08KC#kUn!55fWyIArfe$usuq8 ze?D3p1}qzYh`hK7UkuCU(ZI|^XkxyYW{E{TIzQ|te$n;eF1a>>Y-V+`Aa_Lb?CKzmvDK)n02 zaHX_IB17(Yv+%+;q(wF3-fTnWNz=)oN%F)x`p-fZbdd%|ji|^?KNa=S!=_b?M5Qn5L zd3Jl$4pukxMX3;6rDhm^l6r0^i6o*^xvmg<8%P?YO*jw(Ck*3i)W)B`K`oUe(d%D7 z9Pb7(ju5Hi|E#wTArJKPgow1iLz;GV$|;j6{x1Qbi2Q#P0u=zfKH~5#^#>u~Mw?Dq z&GQo2mw7pHNNGTSL-^+!HHCSs{A7_35m@I5e4=5E%A*D_PqsY4%M{;mGqsY5SJrJM zfmA*W*b8`JW1|GgG8u+RNiE+1Rjot_@W$S~#7$8qm)Iq#ebfa2`eu9qB=SNcPX;e& z1bw!osbh|X`trvcWZ(Se<-6bG+r>WZ^Ks&DGy(mQy3n`nfM~@+^5tac+3|5M@jhF& zSWF@_9LvUfb0=gvKkMFbMKD(CZA*`;jvRMB-rwx(*SceU-)oE4kOe}gSv?YQiRJ2m zj(=ipahnwUt*p-&)-IbSZL*T&xKN{>|n#fC7_xmpAraZla7~;YC(j z7g~b);Di=)emaDzakh%uX@kl?NfEi*84PSb9I>mGBx2)4eKWO5YQJ;3epB40o%~eQ z2cJF5(*eK;9-lqWq)u-2_}3=?u)4E`O^G{pRU!H-+|?dscJqh!kuWdN8mE?(bPx=E zan^v>>(&3O*Eyp5sFLGMuosukq9Mw=Of~t=Pr)QCfz9Uc0q#m~cMB4k)dBfh#Rd;+ z9*875$ug6I=t?I3MmVA{!%k9fP_`(RdsSl0F|I3)?*j>uAne6cKmn29%K?X!q7*`J(yq#T3PGO7AseBkQ#l|)WOMG( zdhQVrReh0rhoD0kV@{|ok^sl?*K{Cn#;&W}qo;i{g=&zZb5XxLijD$p{W04= SRQUTGfVzr~a)qMx>;D0oZOK^x literal 0 HcmV?d00001 diff --git a/ios/Musonic/Images.xcassets/AppIcon.appiconset/Icon-20.png b/ios/Musonic/Images.xcassets/AppIcon.appiconset/Icon-20.png new file mode 100644 index 0000000000000000000000000000000000000000..861ea94fdb7ebb175f2b8b49ecb79920c1e174ea GIT binary patch literal 542 zcmV+(0^$9MP)yw}$FfgLnk5!9kk5X8aJ4$dy( zA~+}x;@~75EFH8%2N%WJ!J!~1?&9DOJH*dI#0YJ2HEP;Rn#=2;h}XNz5aWM+p8xOt zKkt_SN^5;pL@pU)4$_;-B671fln zW{609=G25rpj2;h`?b%L&kb%J@mSjmx$&w>H3+#_7)|tb0Se*ok&1qk+2@r=y_2}} zT}HN*5T>~RE5(_f5JNkGrvxU4Y;um3c;8~c!l=XbDb2C5EYB*Nk(!sacywwHhjlhJ zc?2lH|UEyXn7t4sZGdLqt9*W6WH?fX0|5D+q$3>$wcV{~6rftsbjHUa% zJb3T>exKj_{pP(9l%!~yHYkKR26O-lYo{FWP6%-&9*^Gw5P+iV`Xiuk4MDcDENdi@ zNc0O$)6NPZF0ME54;_{RfxvYjTtnyuH(#Y%a}As^I8*IGto7kzMltAGAE4eEFT|<7w`ES*Tc#XNw$pKFiVZIqv?o zW+!juEvH^EVIgmF>eW0?XHy*SY+xo`VCap(Y`Ro|g6n7L5h|CDS}>O*j!rEyI<>gM zYg+D9Pvw=%CpGbK3RsG~K-}x8)z89=v|pJ!I9M1{H~Dvr3QdFF{TFx`lia zgWELrMpU{Qe75)66ZBx)21a%@6I4o>7cI-SRrQi!tZy@24Zfwh-_PT!pkcqvwP*|V z(sIrPhkot|`zwF|Q%UCs1RQ!AQlttXz}UB>ZGg9lY{e_}BU7aR^?X&R<6q{?c8wEV zAxz-G)FKxqrEC zNmbPlu)7ApF~cwhWPo%!{lxG0e+Jrx5KVwweebH22R;Co48s@z3cmpVPQrfm Sb@`3}0000qC;7v^UA=ZAtoh$-_D4{=UE8@BDt}oCxYL4C4vl1tG)(KnxIc1{;`h9Or9bBArfO zstpK$L?WT(^Z8T2GaVAtiW2aeX_^xNDuB=Dn`C{615ki{p-{-QEbE*w4C8Sj#24LG zD;1ZFX?*(d5CK(SJMiAGX^ve^ zvtYY_YCPJ*sR!c>X_a`)SS5CT{wKG~?M-`1?~B{|38>H@Zy}4yW+gPb8yj_dQ?fvp7vm~ z1G>+z@Zs(_NAHgi399J+)z_aVfl8Yz#AcUNdu3HFUdt^oHJztPZ8R`rm3a3`hU|h3 z$X}DZrMUX_qZd+4P2b|7xW@a*SVJMy^YOJTZ(K-`U9j1z`+0I>ue2>s5foMb3)MF9 z{j9~FGdDOhoo|?zDV90%!%bc}H@6tMLfKxCEssS~5mt8o&#hS~bNIU%4vp#@+!*E` ztHe83(%iUJYFKMmofDEt_9RfP=6GqJb%4{?bDX}OYr591I^`gDK6pxTt*zBZP?nlg zvJvzo(5JXZPzHay9<>Bd0&9!BL{Jr#H9}J7sv=mDX@E-zC>4{kzIiN?%C9ZCk2F<~ zjA?A@^|8YU0P+!(7Pvd6aUju4tVdx(wIRzy@W|FaUf&VH2&%HCRwgjy6P(<&f&C+) zWn=C3;Nd&_m>3^)9g{7UwtMicv8by!Xdl6swi`{yY9~uOS_)JI92(VK$I6aFuGCtf zXwr1Zcg3;G>19zqpDOU|w>PD3Kp^oZ**DzFiDZoa zK*g7W?Qr61hBsY|yKzr{fIV@IfGRkjDsXnrk`^Z=5J2}Uj12@S+i)>mASbzh)&ftj zx=ym5AMHRzVCV9+a%=_oyW1*SFsA@h-B!_pA4N18z1z0!Ux2lHE3O@nsrh_96$*vs zfdk!EQ;!g0(lpKEDu88KXEjaB0eh+bZ{1CV5RLc9t*0u0l+ mHsk=az)!#jrfGgv8~6{yjxbx=2olf$0000rRf zBE}oB=mS3Ki^h=nDv6gDAyHo-UJwlmNP<+*1TTOg3K0;~a1m&+^s?Qy3!QfMa(w8v z-Il%0?rgVIe^2eq*>C^OcIk37C0P^8M?0TgAt?Kfn_MY$K(7Tmfe0TF5wXrvjAbTE#fvR+!xLa|og2TETdc zXLUeT2-Z$7WRBBDQ;)&-t$p+bW%3V>!IiJlQ0rt#c>z6v5FcOgbF^JgTbFRTT;^58 zAzu~jTj^m*dBO0tmYYFdInmCM>#2)eTwcKT2P^StBjXT~k_|t%(Rl4Fw54d@IQ3ZB2c8_=*>CZGvjcR#`hwPE58b?=8XGN7Z>iX~z zE9H#B^2I0_<@qXKF0bN~3%wlg=x0ueotNj9QkbNZ07M2Gp`}JsO%GKF8tO`Ds4KDZ z>l0#W>WWOdJj+;X)XHEMleLr4uD|`PI@H4Z=X?ai=CZYm3;CJr;2U`00XsMf7MYg0dTJ<2CjzgU8l1@6n9%nm8_+1 z^eF!3?Pqyo3%f7-6Mp{SwLTs?*fMN#2*YGX#KKaeO4N{s$K3M=!fZO;&c>r{^cbV> z4umC}Pj>SBPpxzfgl>szfzRyiqoJ`*BYbo91}8fDX{d8Dx5Q3sUyvOadTHu0;>VJM zPAAMhDxy}4A#t&2)q}isx+~?lR*dMl%+XAVlN_eV+V*0FxZzllKFegEw)kW;@^{F( z0mT+knMug(ji`l2^CCSsVMa81d$Dqk#(O?BL)I3fM60e@Qh0((%7kBx?5aS^83Lc$a#EPj7sx=!`4wV86Qa2-`OUetV_h`&3wKEWs!!;dAda1j* zx{!AlS5TSZ0X`OK8Le~L*mj?rMRAH@p)?kv7iyinx40r-j&l5)_86` zmM3Ork&P|)l$(`e3R8t)ptre88`yWh>zHL)w|=X(RZbgYfDzT_Qpix6N0DZiD^JH#nU_2Pchh)~G53>t_}5+-xVc#Wn&`a?u}P@0A{Qlvfo+IUEj$clvz3Gh-Y43%eJn UyP>xG{r~^~07*qoM6N<$f)GE&)&Kwi literal 0 HcmV?d00001 diff --git a/ios/Musonic/Images.xcassets/AppIcon.appiconset/Icon-60.png b/ios/Musonic/Images.xcassets/AppIcon.appiconset/Icon-60.png new file mode 100644 index 0000000000000000000000000000000000000000..709d9e205a746b8dec0f90b6e9adc91d7f4edc40 GIT binary patch literal 1542 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 Date: Thu, 21 May 2026 10:39:43 +0200 Subject: [PATCH 2/3] fix(ios): app icon don't show - add CFBundleIconName to Info.plist for app icon display --- ios/Musonic/Info.plist | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/ios/Musonic/Info.plist b/ios/Musonic/Info.plist index 818f665..467cd65 100644 --- a/ios/Musonic/Info.plist +++ b/ios/Musonic/Info.plist @@ -24,6 +24,32 @@ ???? CFBundleVersion $(CURRENT_PROJECT_VERSION) + CFBundleIconName + AppIcon + CFBundleIcons + + CFBundlePrimaryIcon + + CFBundleIconName + AppIcon + CFBundleIconFiles + + AppIcon60x60 + + + + CFBundleIcons~ipad + + CFBundlePrimaryIcon + + CFBundleIconName + AppIcon + CFBundleIconFiles + + AppIcon76x76 + + + LSRequiresIPhoneOS NSAppTransportSecurity From efe049c2907746db97b5d2ae6d5b3e22345da22a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20de=20Chambure?= Date: Thu, 21 May 2026 14:40:24 +0200 Subject: [PATCH 3/3] fix: update owner of the playlist MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Mise à jour du champ owner dans PlaylistDetail --- package-lock.json | 4 ++-- src/screens/PlaylistDetail/index.tsx | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 47ae57c..dd30152 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "Musonic", - "version": "1.0.0", + "version": "1.0.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "Musonic", - "version": "1.0.0", + "version": "1.0.2", "hasInstallScript": true, "dependencies": { "@d11/react-native-fast-image": "^8.13.0", diff --git a/src/screens/PlaylistDetail/index.tsx b/src/screens/PlaylistDetail/index.tsx index 7e58823..524637e 100644 --- a/src/screens/PlaylistDetail/index.tsx +++ b/src/screens/PlaylistDetail/index.tsx @@ -379,6 +379,7 @@ type HeaderProps = { coverArtId?: string; localCoverUri?: string | null; playlistName: string; + owner: string; songCount: number; totalDuration: number; isShuffled: boolean; @@ -405,6 +406,7 @@ function PlaylistHeader({ coverArtId, localCoverUri, playlistName, + owner, songCount, totalDuration, isShuffled: _isShuffled, @@ -472,7 +474,7 @@ function PlaylistHeader({ - {t.playlistDetail.owner} + {owner} {t.playlistDetail.trackCount(songCount)} · {formatDuration(totalDuration)} @@ -701,6 +703,7 @@ export default function PlaylistDetailScreen() { const {playlistId, autoEdit} = route.params; const [playlistName, setPlaylistName] = useState(''); + const [owner, setOwner] = useState(''); const [description, setDescription] = useState(''); const [songs, setSongs] = useState([]); const [coverArtId, setCoverArtId] = useState(); @@ -733,6 +736,10 @@ export default function PlaylistDetailScreen() { const toggleShuffle = usePlayerStore(s => s.toggleShuffle); const togglePlay = usePlayerStore(s => s.togglePlay); const isOfflineMode = useSettingsStore(s => s.isOfflineMode); + const activeServerUsername = useSettingsStore(s => { + const id = s.activeServerId; + return s.servers.find(srv => srv.id === id)?.username ?? ''; + }); const downloads = useDownloadStore(s => s.downloads); const t = useT(); @@ -776,6 +783,7 @@ export default function PlaylistDetailScreen() { const offlineSongs = usePlaylistCacheStore.getState().getOfflineSongs(playlistId); const {isDownloaded} = useDownloadStore.getState(); setPlaylistName(cachedPl?.name ?? ''); + setOwner(cachedPl?.owner ?? activeServerUsername); setCoverArtId(cachedPl?.coverArt); setSongs(offlineSongs.filter(s => isDownloaded(String(s.id)))); setLoading(false); @@ -784,6 +792,7 @@ export default function PlaylistDetailScreen() { getPlaylist(playlistId) .then(({playlist, songs: s}) => { setPlaylistName(playlist.name); + setOwner(playlist.owner ?? activeServerUsername); setDescription(playlist.comment ?? ''); setCoverArtId(playlist.coverArt); setSongs(s); @@ -1098,6 +1107,7 @@ export default function PlaylistDetailScreen() { coverArtId={coverArtId} localCoverUri={localCoverUri} playlistName={playlistName} + owner={owner} songCount={songs.length} totalDuration={totalDuration} isShuffled={isShuffled} @@ -1162,7 +1172,7 @@ export default function PlaylistDetailScreen() { ), // eslint-disable-next-line react-hooks/exhaustive-deps [ - topBarH, coverArtId, localCoverUri, playlistName, songs, totalDuration, + topBarH, coverArtId, localCoverUri, playlistName, owner, songs, totalDuration, isShuffled, shuffleMode, isThisPlaylistActive, isGlobalPlaying, loadingPlaylist, query, handlePlay, handleStartEdit, handleOpenInfo, isOfflineMode, downloads, ],