From 15af7cef06e6f0d266de2e759e564e20b7fc2c9c Mon Sep 17 00:00:00 2001 From: rainxchzed Date: Sat, 28 Feb 2026 11:53:37 +0500 Subject: [PATCH 1/2] build: update dependencies and migrate preview imports This commit updates several core dependencies including Kotlin to 2.3.10, Compose Multiplatform to 1.10.1, and various AndroidX/third-party libraries (Koin, Ktor, Room, etc.). It also migrates `@Preview` imports from `org.jetbrains.compose.ui.tooling.preview` to `androidx.compose.ui.tooling.preview` across the project and standardizes the use of `libs.androidx.compose.ui.tooling.preview` in build scripts. - **chore(deps)**: Bump Kotlin to `2.3.10`, Compose Multiplatform to `1.10.1`, KSP to `2.3.5`, and AGP to `8.13.1`. - **chore(deps)**: Update Koin (`4.1.1`), Ktor (`3.4.0`), Room (`2.8.4`), and various AndroidX library versions. - **refactor**: Migrate `@Preview` imports to `androidx.compose.ui.tooling.preview` in multiple UI components. - **build**: Replace `compose.components.uiToolingPreview` with `libs.androidx.compose.ui.tooling.preview` in module Gradle files. - **chore**: Remove unused imports and suppress minor warnings in `DeepLinkParser` and `SharedModules`. - **chore**: Clean up and explicitate string resource imports in `RateLimitDialog.kt`. --- .../main/kotlin/KmpLibraryConventionPlugin.kt | 1 - composeApp/build.gradle.kts | 5 +- .../baselineProfiles/0/composeApp-release.dm | Bin 13355 -> 9249 bytes .../baselineProfiles/1/composeApp-release.dm | Bin 13284 -> 9212 bytes .../kotlin/zed/rainxch/githubstore/Main.kt | 4 -- .../app/components/RateLimitDialog.kt | 12 +++- .../app/deeplink/DeepLinkParser.kt | 2 +- .../githubstore/app/di/SharedModules.kt | 3 - .../app/navigation/AppNavigation.kt | 1 - .../app/navigation/BottomNavigation.kt | 2 +- core/presentation/build.gradle.kts | 3 +- .../presentation/components/RepositoryCard.kt | 2 +- feature/apps/presentation/build.gradle.kts | 3 +- .../zed/rainxch/apps/presentation/AppsRoot.kt | 2 +- feature/auth/presentation/build.gradle.kts | 3 +- .../auth/presentation/AuthenticationRoot.kt | 2 +- feature/details/presentation/build.gradle.kts | 3 +- .../details/presentation/DetailsRoot.kt | 2 +- .../components/SmartInstallButton.kt | 2 +- .../dev-profile/presentation/build.gradle.kts | 3 +- .../components/DeveloperRepoItem.kt | 2 +- .../favourites/presentation/build.gradle.kts | 3 +- .../favourites/presentation/FavouritesRoot.kt | 2 +- feature/home/presentation/build.gradle.kts | 3 +- .../zed/rainxch/home/presentation/HomeRoot.kt | 2 +- feature/profile/presentation/build.gradle.kts | 3 +- .../profile/presentation/ProfileRoot.kt | 2 +- .../components/sections/AccountSection.kt | 2 +- feature/search/presentation/build.gradle.kts | 2 +- .../rainxch/search/presentation/SearchRoot.kt | 2 +- feature/starred/presentation/build.gradle.kts | 3 +- .../starred/presentation/StarredReposRoot.kt | 2 +- .../components/StarredRepositoryItem.kt | 2 +- gradle/libs.versions.toml | 61 +++++++----------- 34 files changed, 69 insertions(+), 77 deletions(-) diff --git a/build-logic/convention/src/main/kotlin/KmpLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/KmpLibraryConventionPlugin.kt index 4858f74c6..41ada066a 100644 --- a/build-logic/convention/src/main/kotlin/KmpLibraryConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/KmpLibraryConventionPlugin.kt @@ -29,7 +29,6 @@ class KmpLibraryConventionPlugin : Plugin { dependencies { "commonMainImplementation"(libs.findLibrary("kotlinx-serialization-json").get()) - "commonTestImplementation"(libs.findLibrary("kotlin-test").get()) } } } diff --git a/composeApp/build.gradle.kts b/composeApp/build.gradle.kts index 555e78346..c8bd61df4 100644 --- a/composeApp/build.gradle.kts +++ b/composeApp/build.gradle.kts @@ -9,7 +9,7 @@ plugins { kotlin { sourceSets { androidMain.dependencies { - implementation(compose.preview) + implementation(libs.androidx.compose.ui.tooling.preview) implementation(libs.androidx.activity.compose) implementation(libs.core.splashscreen) @@ -67,7 +67,8 @@ kotlin { implementation(libs.jetbrains.compose.material3) implementation(compose.ui) implementation(compose.components.resources) - implementation(compose.components.uiToolingPreview) + + implementation(libs.androidx.compose.ui.tooling.preview) implementation(libs.jetbrains.compose.viewmodel) implementation(libs.jetbrains.lifecycle.compose) } diff --git a/composeApp/release/baselineProfiles/0/composeApp-release.dm b/composeApp/release/baselineProfiles/0/composeApp-release.dm index fe88920b0b81d3b9b2505b373a172476c2d09d6a..e9322a2d08ca963726814554734734cffc707e8c 100644 GIT binary patch literal 9249 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 literal 13355 zcmaKT1yEein=O(sAvh#RkRbtrGq?|gke~qqBsdHNx1fU!?gV!T?he7-g6rV!t{Gr( z26*}H+pYcY+uhe)UH#p*y0@zD`A&DA{w$CA>9m1EHa9Kcb=Gpcz^jI5-$Pa2Of8yg&DcR6a*TQ~TQ#_dhDQ|EY07Kh~0u zB#|ckLjjw;3+yPzU?s$een&{a@J8iDR8#{!vF%2fe>b|_=5HU%Zm)joQ^srOso7Qc z@&gLQLWFe^TgiAsbIIZK*XijAw$+-biYq=P#IzHSnQTm%Tga-IIU_)PgRNX{A%J%!6}nY&SU7G za=S+h^;gYrb_lJ*z}=d|#7UZ|$gp?aFJ|nvp1!k4k<@zW36CBK`*E6}ES=FvrLR+$ zXzThS?_jG$?U8K`60Vju>%N7k%0Ot-IB7sEW=*CB=sxkqLrm#oW;hb*T8F+8W|;fB z%!4Hi^h(<0_nU+x^xN>U?Po>(F4VzHl|VyEP2)vc?M=^dYF)9Pdnm zi0LOY68U-YA}kI-%aDdRSBX@N}Z7x89pJ;$Q#>vTpBEc3deT!!+kXX@cE*Ua&uVW!5ZS6(5X%XQk1yw+8Kc4W;pWvSmVvbgAWXc*T&O1K?@;FuY-)Pk>^9L;$(B zUgiO`VcG#Azr8S~(F&VoZ@?Cwu`#L z&8?G3qm=TIPu{l5y;5G2s;^RgYeT!PivYCQ$DAl*U_v-4xPqTfF?AM&d~A>$2oe}s zi`0y85BfyNV?vRpd~4ncA-$dyWqQ1luim!EA^)B@6#IVk)R}07E5i>ChV8n3d%HJ* zcT~c*Q>X?Qc?=G*QPz-baKI3+$s{v7-79g=RY_}&y4|BFtAjL*_^&}9UrXF!n9OH=@HfYam@uxXN~InzvS)pu z#uKB1vB`z{`ggF3jfaS)+G>oVhDRbj*^p|j8`{G%K4o;BGOyux9meG?kI7CKj;8ss zxXA+<`1H9V;_u!i;`&dolTT86zVGlR>ipP~C%KfQ#H+|3ias#mO#I?YTw#L=Lktl( zqu>5|W3b7c^}8^kg3)xhuKKB}tfUTc1kHqZ41V(P{mSmjoum3{q0PFt*#uXcNe6F& z%*|<>Z=Fd$&bmt}C@UAq$i?aNEyufiPDA_i)vTJ>Z?=A4wU{ktDDant*Ko)`Oy`kI zy@x)xn695bSCi#tKW$h@(8+Im=ozCf?krMCPzh%#{{!45Jryv`$g}}oa0@UEba#)q zOBB5=>B$>jP>%mh>3}aK!~PI$L|ngX^=0??1J=oAonK0#mCOZATrQ42WbY(i{)YiH z^u+dM7F^^RH*VApLWmqTGTnbQYyX8A!{N_$Fo?rf57?+_VMz8C@6Za>coRp-D0rOS zcCmRWGQ(f^$x>uc+;w&}XtU2sWkhNo`=L?2Qz__n(3tq&F6V`z3}Oc zD&Z_pLQdDBUVvX|IcQ41B;hcb~3u)}i^ zrxgLodztNwYst!ZzMY@N@<2|h@M2s(Em_rS5mP4UfkD0X-l`NuRPSh zDmas6=A?x12=m^D-t#}kyUo-`CV`aK|;Hdd8A z%NwEEYR`2L<{M0VBjsvbB}VCg@G2o$Y>4nr^>GcWQS+x)p&uv-l&M1Kulmo8vuI0^ zj7Apw%E_?00+^&&Xzlf2uColnMsq7+vObisMD}@QDfM88P$}!uuCQ4Swye>E(VpC}nCALcw~~eWUGKD{T7%XF71CxfuaKuNq>kx=$F|I{SOF_6cdp>nE&vns;AZLE%(eNS2_(zDh! zQP6(4+vm1pnoi4TG8kpE*$Wk5_-cvNZlh%@1!rIf#W3fUk85i&Lu_-wnLZ*_6wH^r%5lFPhfN)^bWe1F z>RLbLQ3Wxs+A|Ge>60eNrhHWDisW6`w*iV@KCoWi7dLt4l@-^FOAJrUfQchK`$A1w%n?T z%F5hN`?q48i%%X&c3GL;NRsmCfp(-Bx6-I%)yIg3>M9?nXni#6Tcx{v4}J|d-+3Ra zxDVhneguD_$krO|U6?0!en!j!beKcW{h}_B@{U4Pj6Kp!Zf1x3^;axC0zvIxQIZU0 z&hJ&*1}YP)9|s%rW0vc_1Rek4+0TQe`$r!|nMj)waE*eGhavNEO-Ll{@p#2_JNYzP za#j?X8002)S=G8;K(=so(ZMfUduT&bFHZVh6YroAvc0<+Sd=>E7t|R&ecE=h%zaf z5g`3%*&FTe)LwNAxZ^X?1PWE1PNf0iT(vAo9oF@e@}o{Hu8ZjzGVX}X}Eq73N3HKQ; zeLc6+d*WZnBQmG_kadAv_;xYxuaVz8VZ#)@iPa?Y#2(ZYSh*pp?9a_g(rguctNcmt z8YZ0zx_(dC%)I~X&jVtJtA9!QfFY}qg<^Hu5F`Bh>~-Vk!t84({Nc^*oWFHSFZGh+ z#jvdkv_bV91B=X^k5jobCkH&9T`9ogU~#sR-pr^~mHty{=7Lts!fTTed z1imi*=6g+7l8!8y!eN?Eim=>gFO6Vp!(Ug@vZtO&y^56^xNjW-JM}AIJ`S3FSC&;L zGEG$OuwU&9nLl(>>#6B|Q7yD;7=AU}s-05xqo2`^gQSjBzwV1r%d4u*==dRO&;UP5 z-R8E>UUYs(CtdUMDw5YaZdQRl3@0S=^@|zIdKdLbljfbCfxs_Jvw3Y+42-Ea(*(aa z7kCs{{R_3Lcv1@ZSnlTRgwAZcjrkX)>w)G(#&doE;%5UXh_O{uZ7=QSTsRZT5!MG%MK3fKygR+SHYaYAAq8 zO$7Rp*@o6UusZ-3Jw_NFrX?h}NHO}bHcxU0BLF@soW;_*y0N+R;T)mW-e~= zmsqN~szCpRVe4y+waoXHH1rn-dW@d3Id1&^Uq#)UFhe&%`DsRiu(dNU`-};)5fS#E zA%&M@3$sRP%taCdBIL;x{tk1fK%P;@xMA-v1M(PEUxpKvk4U!>B;)<;5Sf=h-15JA zFulwu-H_9i7dPY6Cn+qI=@KB*BWYFZLvBMB+ga1Y>g(#>a*=Oj6jxu|zXL@)u~E_s zmwwDIh!U)+%2jw!{=@UmoXA1x?_0LpKQQkm|1tMxH+_RVxq@CMkWaQgSVS{Kw+wYf-jQ(s~quyp_f;4;hhQbB_XIfuqH*Pgzf86=pZ<0?e;2>V zFzCkTre3Len3m#h$L(FWsf3Heh0A~_AIw)ft~=HdUNIahYazL;L8H;0N~qqZZ2%M? zq_<>rE$W+}jh;ZO&(w{_n?tFGf{gAq36j1Tfxb}-(kDKg`AR$kT-o<+GSSn$b}^T| zo}ar6lcgywwWF486HlmEs@S-EMAktTcW0$76hc{v+Ony>KD--_DcOAe{O_WF?uE(F z97{PjnHaGOK|mRunq<94`J!wwPmPLo^o@O}=lgw> zQ~0jWQxiP@6fY~e;gQ(83dz26i|tWu@ojv}jLr`ZU`4)lTKVP`l@>yD z-rp_a53^Hl1X1ehC9o=nZEybOnBZ~ZVWDI(GVk#YaG9l4i>e^m{4QiqKXokT*_b=? z;-cV#_9V>ax)0MnlQK3@(35;LwZ2M%&j!!*v4C$1nU)XngtzTpCNt_aoR3F>)Kem8 z)IwKp#u(pNTvV;kIDt$bj0n8=#8ScDD=9yf$}5v->Yrkwe1~ofZW6 zQ$KIV#miGar$oBzi|r=NePf(WWOLXe+Y~RQSp7NH$Y0!!`&r^}I3st$jqQg(@{cS@ ztjuAjD6)j=7@bNfZ}L>`haX*vzl?fgtF^PUgqiw#-}TzC70Lw(;Tx|;Wc~T|Nk+;y zwSnGkQn0x*K7MMDfp=!~bN6dAl|K)|7&1NbqfZ?FD2fT0Qr|8gs7ky$H3*HmRlQ$~ z__Q$pJ&Rf{Y^{{=TSOA?vn;?>#D1wx8SPT+XlQg5_B|}@rSEiE%sVv^$Y-x5@tanN zkXL@H(u3=w>Z+G#iidH2zY>r$2eqA5N9nuYZ+wq-P?5rAI<`xMM|n)=7YH4=bOx@s*zW|W=sswXN4f$)6&2E?bkQkqC1o|=v|ve zOa1F%d!B-|qCe#>H8&ozLVK~lIr84Z39_74-cGNe5)X>ZrXKpkCwiGrkzNfa>g{dp zFG7^GJx2nFs2iyM4b*0*+bdU zA>4R1;tt1Qu(uB^yymJp<%H`a^Pepbs3E^fWvg7*T=|17aVWNbzLQefxKgZ>t!?%r z0_0jJIIz;$V2gVuLnXu;cD72?TQ-;OfWwk`d*! z@W)X@>y~|Hp6ODy#NB3cGCT6b++LRRC+t{q6lUj<^a2f=tAXDJP`9qIsEBj_b+*|# zw;Xbs{FOU6CC10>6(^;Z+6AKbgn515#i(!?yNR{e-3|N=x!R1Jut-kKDARUwA;j{qG)29f8WvR#Cd4(YAGxyYBMgx=|t2i>Qdcf^CqmA zr_9_;mPc72_HM@;;O!;s6Kxl;5)&uQWnhN;$WWR1MfbBb(izw3mGNlu%zf=*Oi*qinQ1!?+<*vz+IjI5&zzOgNkow{Ju z*_9L-PTQLxf{2AM?fI*UrM9o@Mb!9~6Ds%O(W}fzj&2f1AGo0d+?hyji2%&TbV{Bb zrW7qM_|Ir^8K}4YNc-w!plz{W^6Sr_wRZ%$Tj8RIO2{)aR)e@u=V0$48L);_ao0P5 zHind5_fsm@J#XO}r9N~#S9E;6+>g)QYchDJhaNMvW5zEQA4^}#CqiYDZ0ln*7)Hjec?*St?5;4=l3PDO!o6w zhL@<%eY1;7TGaU!0mAOQyM7COe98MV`w&IXsN;L#Ue@y>pg=#CXX-lJm8pk|1NAZW zaNSz1ws^b!{Z1ccDfgv>U(e79R~_yd`q8xC8kWh?H+TJOckf++>*$tBtE+WAy1uG1 zDHZ3`=&)S(Wu^07V-N5~ViSr&i!%|X<|w)crn zLbNnJs5Q)#i~66@btHWxEC>nn0Ts0 z)%E)UwNJTETLO8cPo{UR2fcL;(8VO$o;J{A`RUCd*YXlC+!=(aE7DPoVy;%|Wum_4 zW#?f-&E#hlJ$l_9;5-SZ=|y;>WDr-R4Il}W*j9~|YF~q;x7=npA|?M}y)wUgeD*x~ zpJ^_6jJf2zzS~DzGO?gt!LgLMDc^2U69;PyDrrwq4NthpeGU2z5NVyAjD`^n>S{@f zWDQwy2~SvpQNLbbY4^#Y+P>zb$Gapo9e4x+rwe-&fhQ;B9redr$!Gm@-|47 z^ol7YuEXWCJ&2_Uo}P7^*^$wa(ceF<L?$p6zPtLAUgaPZzK! zzoXPP;KKPXJMU?T+&1)l;L=;NItdp@`)j}UbeE}C9q?%q)=h$e@OCbK!~c z66LiuqQD^8-jTxp^bcB#4+7!b;eD9+l-%`mgly<$|J?7n-~SgBJUsLh*go`f^kV&g z@Z#@h4QyZv3<$Z_*6r=?4I>4j-VMQU&xDlpO=VIUqpu})FT17XM7Qh+yk*E$q^35( zl&FYS#Ym*r*aWft=lTXS@e0sTpQ$sZie)w$!}NHWgGNVlL#)0VBns6B zubvvtXQ+^^c5-wS?v@Bm_i2SUpHY}b&a-4 zG`-m6EQ7vzm*LhrK=~*j_W9iBAssMLVV`~aG>j81Ht!Mz?85;YW zL4Uf)XIguBg0_VKb0$pV^k_5yoH^G=XM*b~?nP!ND(nnTk7AcFSDN|;BSSPg25@uI z7zUjpV&3nd6wb81uJfrHkEo@gIy>jj!GF|F6-|l}Ukr-ljKv=&-2*QCS`i9#^ou@N zMd4z#cdlhEns8p@krG5$KVE72^|TXbtlzE{2u4zt+KsxFsWfW@-4xQePdv>#D#&b# zMOQ2L3WU*|iaY<(skpy)a{v<@l#FuY9VJo^35TR?cU#ddOSkE&`%F-~m zq1+R9eX%Q2EnS6)(YtLE1i%6NMj<2K1K}7a?y9@n>eaWXge3yduAu}H21c3-wRzrb z4_=JT`pLWAXT2^HzgYaSx^;KjYoUp7_R{XNNC{h+-VK}e3wK=g1lP>g*qNcyk=YNZ z@?9m9=8E{<<9Hwc$|oXgVN~tOeo(?~pj>I*y(esccXWF1W=R(hJ~cZ-)~on8{udtL zQ@M%x;Nkdrb=sHY1KAUtTgc4e)93~ltPWR7;|(hs`14%4)VurYTzp>lbTr@^q0(-s zhxmyj`B|p);4Vh4r~shN^Fg}tFNm&i`Qr1slxHb!g>s)n#YCKSMy@VK37o7j5gDJ& z?k6!q5@aK}4^ihe1S^K6!EBjI+cD=Eo$oH7ib&4G@YW3>py~Ly1+K^-6}?WIu^L!qi*}a{<^DT&4Kuhyv@PYt zgdd(TXS(O0G)o4uBliwp>?dc3mjc3Ub88sSww?;%{G}u(^$Y_5!Qn$ubm?a0g8Ga@ z(Y0L6@`y-L=%n3w%gSz|+xb>koTvs(`2H%aNmacr+H)S5)`{aD6$857b4>#oA8_u- z`o)PR69dc%3C5!I`tW@3o6+_ew<2FWV7a&Ax1dStuq*GD?Os3yWW=eRbCI{61*se- zu3ox?!^HG+p$H-GK>obtq$>O(e91HJN6M6pA2y)yUQw%YM6Q;j|2=epmc&q{0d{GY>(O$; zI~aq>*1HXhky3gEJ$&4zusEnrJ8edLXI7U?37o)N0;Fqt&gY`` zDkZL{9=oMb!211z1hamvR6la)4Lek#k(lOSTu~etCs8nowXgKB<##o{$K(C_*7Z=wPQu81nYkHc(#9p=ti@lABUMN`@%%Km{C zA`YCAi~!J(5J(Zp`NetR5z|wsmV42-F^B*RpR`5V@H9zx+vY+y8yH% zW%0R`hMLzyCk$H#DNe6xscQUr7~tzNekiEm)h;V+l8F-#3@HsiJ3y>D4@aay@sx|`!ZhI1noUG zmWS3F+pN{2?KH$1WpW=F@7|(|z$ME?XzO zOZ=Fku5%vDzoS0xNJN2?;6$~fo71;BTFuhgZ407sQ*Vo=o2xd7>)O#nMD#4$eJWER4_4SIow3>h^rO z^5I-#;m1>Vfo^}r1nud^CWBnZ8R{Bv1RqpP1O7SEA?7JDRJV{--z^<=&d;eNx}if~ zGn|9((D6P5kx+QZ^}_Y>XH$2q<`7I&GE1pU)O1!qWxOt7R@iyk!Y`|P^IB#~e>ZDl z^Y0$aEsFC?74B+QhGkfIcz9nG0jeVxS_w?M-|w= zi?$UK^uiKT<#z|AY5H8f{X>@!x{D9s#M{qp?X{9nYI7q(sub>7`;r1H}X2xV*>tOtLntL{zb8e zZ7P?Xi_UTI8Ou}Wjol{;D}(>O;`5Keha^Lj1(eP};98rn^`J=H zH0oxW4))9LW@Jdhjb6&ua9G{AK7=QbEYFsC4?ic9;!)Lxtu1{FVx1t=G9b#bY=aJ(;LUOz09g8Rs%tvAEsO z_3Gs_v~~>Rnj6u?|j5$uQ%*NiZj!3yYZRr(EBb;$tvaMwknG?QFoW@CtBi1Qx= z_UQnXE1mRU1w~ak_eU0x*Z!~jk%IX9L+sr;jlpfeRY0}xhOI3#ZJ+oce&ux)eJ?fkEPt4Z*TJ2=%9CcnA8?Qq4DEH*sKZ^gV_#XeG^C%JT zH!ce08HpHT0yfdA0Dj-QjrDcl7``-&6>9sD z@mwoxbDSBYy)Y+3`wAfq_K;lKzW70$iqFVK^f(oVnHFM~s@yM)QI%J%%E#qls<2~= zBM>iYJSi>dLS?GDN5E(Au2Cl5Jrmk1#D?u z;g#0^m99t)gmbodTbw`uCSAhDx0varDPHk*{v`D_lR1a$*7=&14_tZIvw&Z)i=SxS zAj>_>v;95UI6n#<=;HU`cOcINV(B&Iaidr8Mdt=q3au_97lZHJ->29yKpPX^Rpb9@C>y+g9k^6_YV-TW(q^=VouPC3(NcS zL*J$hvtx<&zl@jp;AH8^&*lIj<9%k^b8e(IeV2P<4WoBm9tQO}T1CZ^G4%4spE!12 z>R19YjB^Exv5$}F_!b_ApXCA1c1tbAGuhG5QvRmT|Esba@2^PvUzOd~=z&jNZ*A?Z z(KtD||H`yK{uOWkBjWxy?X?ZnN5Vg86cw9uSbd7#xo_tT?3Q zc8fOeSOog2Y$Cpw9P9lX-e8!hOwyG z{O$155XXstCE5$AUW`$#F*MOJ7Wc#gm8pcJDMR+5g5mq&thjcKkqg@8eW@o_YjIG^ zp~8}L-w$j2SwIU(4zZ3{_HQBv=f4YU+t^-kDVKjr}i z%Z}sZdN%0z{fNRejjP?t2of>TCb71?d`^2GZvfkOa-+KCR=k>6RBMl2&8bOilXGT& z|MLh@eM~3%T>K+k^+>r=`=1t@|Ck((-9+Q3Qb9y(Q=~4bWtZ^gpr;CCh(vIk| zXDf2jW@ZtjCI5lF-1k9wb?ECuVJ&kG0S}$Y2eW-7lf~f8c zsK1rE&dVbQwXq^6=v8mHspPfnQb84OMG80wR?Ff_Vj76sOVMW_;Zpk@YZ__u&qoF8 z&Hi+>5mb*78W+V|h`)NU#}+<^LQ;2gNX|2H&*SqVF+G{vOYtnf?+k zjdRS6cMLrQk4jVLysKPmrr*UJ6`!w`W5v+{wh?%n=nS^b+xRhJMqshkiibF z^?n?aeQh(Kqr`@U3T9^k<$`Y5tqJgcD3|Kuo_|fTzmT}l-Zx(nfBe=^0Xl6~A3%IB zk;g{NL{!mCD3uim#e*{@ayV=Tm>jg4{1qy0aPd-|7sMLaKp~-$f+aclMdv`bPlBfb z3Tz#P260D7vBlGfXd1gt0Ez)qrPA=OPoL{_h){9zmh`QHf9>>{hK)K~?FBMs0e(W{ z3Cl*m@c3zIrv7-V0}`OWWVc{hyb}yBV^hjGHsruZw^@i+$&B34Yiz*4G=<${9=H$m zB&{k)UrK$0yTCeC6RuM|+7j>l=ZOVg98u);p0TB5lx{jbC~iG;&2^>?{5&>cei~yJ z>hB7(JQ0Oe#T^C_nPwWhUAf-A?n_46u4Zr9uhEVAgy~%2n}q<#X?nf3Tso9UoP~ii6n^{t`9pP9sVF3*+F{I-@F%B_OD6x?Wc*7lLd+^Jl zY|ZUmbMzy3u9%8u#<})uPY<;Soy2-WDoDl!SaicPz23&6h?%a&735 z+MCki1Qv@}_36^SG$;7gMj*$2I~tFyK<;iH`iszR*2;E zyo7(`*$=!yWmbnaJGWhdP&1;X0JI+t7;A_{KbxnkJ1!(|8w~5YY~Ht2fdm8gEIA!v z_1mZQwNv17f->s3t}C5XU{=5t*=^VJ$fJ|f|8qmCuuX%Xp!B27?w??FH*(gYNw_ZmX)9YGN39VB!FeQ8ppLnuPkuj8$$Dc*kw*9>1L1Lz@oACSHTk!7Q!Q#B*VumVZp=m$3HY9O*eZNu#6F|8A)bPihA_K zi%`w~y(mv#;Y16YqHYoU=kOY`=VlA1pME(fCkLfIi3JFG`&3Q76H{~s@{=m@X6o6w zevoK*nF@M4LlW0Q$>+__$)P4H{2O|^GQXXB1|O65b3Kw1VcQ;A@I&EX7}y<7%Ap{r zeA-)U=`O?urGDyu6%5(M0>VDWvinvcK_M7a%-bdO#B1&$*3<7FQ>2b%8htL0po;HhmkCM56HyA z#XnwcSwC7GP*XA)BU{^4t)@CuNxauFKFb#?mwew8Osr~z2$%6Md;O)zec*KtB#JLR z1*ZPkpQk{~k#rOKc>SRRHV2Fg*A-a(0hFflE=0Xi&5_Yn4cbvyPZ50}CVy23fH*Lp ztDP%s;uFd6r`hchCZO4Ne!}OUj=wXAXHK<)P0MxGtPOr`^-fTaa%V zS%HdT+%*L?Q7G(zWJFa2Zr~u7*zPtFUG5MjS3b)P{yXM>^3DO?#hTdtTC2qMa;UM_ z-qhKCvF>2SJJkEBkh$8N!*w~KnQOfO-4TPc``fRO(~cEua|P3md)M}>FF!z>75{nQ~CfMD0EiTr8wkm1qihLEd!L82-ghP2<*oN z9wADqAUh8I_*ipnxD>ff3uB^~Q+~Ar6(wPsFzrBZnX%mmfet_()TU+z1pVY8Y9M2t z1YzV|DfQd~#>kXWY@3!H((iZvfs+pyqaC-j>=AoT2!FJVJerAIj^ir0xLM^*uM6Lfi_6@*GjUE5X{Yp^YDJ+3sxN6M*X_qQ+R?`l`x(CRE0L zpfRWp7x7+gPkHszte5iRkjFP_Kvwm`Z#3rMpf&yLCWHCXsSQ7|5aj^ZqcQxAqTcD) z>!KZL>IEq?RZ=qHXdeUk+4OoM*pvVE`_ppTTh1>hskx;!jHWdg(>p40xjgbEKSj56 z%tiN45)ysVedM)SFuh$Jx_V4nByl%8%XC^%ZkH7MMLYjUDC|ocVH7Zo?SN?!idTN( z#+CI)9qAetIzeU(7k^Y4dDTS*JW=667bn4fjF1<1#Z~cy2k=FC#+~)+0tlB|s?Jm3 zV#ou%xRCRQ2vbs>*J;&kKl{5ad)fn9 zdSvkzUp}3rR0Evax%y0)PI6I~mA7$2RT*I#XLW)@Ll25fwM`@P;RWd_br=Odh@ z`DQti+C4Dl3*4m|XWsGU!pZ$F7zv%oO8%uO%(o2 z@#h>{BE@oqueM zd%+BJUvAwqHjqUV@w3WndE8!v2s1eJ)v{R9jg)z(nlWp?Mgfb0x{X`AcalnVW007q zSPiz5;JSE0$_wkv8CbQi#(Ng#KW&Y1M7ye=f-`>8BjvU`QA++*C(75HZ7LrMo(tbI z`&8xknlW~{Z=(Q3iGKC$Zrf<0t<;e>^_GIod-vXrbm|<%HPK2^4@yL+vzt)<7l$f4 zYiCwOs|Hc%cwv~DMv#%}*hSLKpN}YU%IK3w5vr}^OrM=UCocl$h?(|Wh`j3)R#llp ziY`8wPZd%aBma<^4^8`DznYp-=}H!39ZK$#Xg(vhow6t-gf#;E|NI1XNrkn*`Naee z*X}N->dXR4Ke{wh+AS*Vq4D}leefS(V{MN1iY(aDZUho$21IZ%m_vHm!8M{#$pp{r zsRy@XX)_O*_5`X-%E>18WrkO+Jh8nvSN1J^$!)$+y3dCnUC^=t-;%`Q@mEi9!aeF) z>1TJaiMv4sj@WZEg7-Whr`+*27VlyoZbZ2LK>=XlYfp}Lans$oB#zjxb}yiGsz zr8GtlaG;Wdt}S>m+~{QT#(reHdP<4G;j_?SP(^T;p?s?AWAzWYCN;K{;nXg48cyLS?Yn z>|1@W3b_U_OcS zF~c$jmwqK1IRM3vJ3c`ycOp5>C{bR8%!(a)hPKjLuU? zatp35s2r3Z%Z3H=N21hpu6{7sjcUwUN9eO63@CQh3C$E@jC8$oy)qrW!?+$ zsQVf6r`IR@{D@H*u^9S9!ShBZpr6v`SJm!j#E3CfXcDDFOM6z72wu!#`RmD`#|!xK zd>lj_nOlvd=iyF_{3XT=&CR8D-3De!B|0B=(ah?;`&g4k=937tCEtb-;f8N#`b22| z2CEuF!;Wl&(Le@E43ECVrLKL4&QQ2jXp!5J2f5Tnl-+f9?dVEd5hNLYqSoT5Z_28i zi7bJvD(6ZiK2t>yFgXsEgy7Lr`I||1IT@t`n$3xp1$>73{6Wg8u7W$=KuOFVI+dbf zTdn7EOCIDS>WAx=Ie7Jf@6ZA*dBnCT(d`Q%x*0tokp2|`00owC{=##?=ii!maQvcd zCP_N;mWvsog!?9#8U+m^8C06|Ib}N%CYqX&*1Ih&6;St6|6tav;BeCnmfb215Nq7O zxNq|$mNkSa1{f=tNF>z%iit(4X9ClzeYrMbl~z$;6X`DROALIbb9$l{OqGxXhBbEg zwVk~ZH(oc*7wy~rBtAm-USC*Y<#}2!p@{H@frRq_LUPHEtE$45p2M$e!CR)HX z{a?2tv8!qq4{d<8pR$!_jJwo(CGh%RGFK`KY~oP_j+S5=-ltudliU>cwT=q+OXx{>HWErTC{O($ zgBfrtE<2@)Dfl~zVqlw*E@sH(-+2}-s6v1f)hQ|Gu0&W*%0rWHtc{lDlQ?{aKaz$+ z-@po^DKcYaKeZbHUbGNGX52@K6qZ&7c{qPmhmjJgzNQ z-dl}ac@xcYD0<4_z<{1m!GNem*p#R0;-R=ik;jNZ=y5aDbHjZ*maiXg#~a}!2+610 zi)QK?cU?DSj*86OH;3L%^w`G*53VkhY~iGS)z&ytd0r<7owoRpb0^*sBnnMVrGN=njBHRn+^jIb_O%MOc;u^IWs2BOkU=i?dvYZ#dlqj?l zQ}u0Nf-tdz@>+Pz;Mfr~-t|4$$#!=tEaN^se&A5cvy|g%+{`>tTNb1E3o3ZsTkylK@q)fx~Q`rb%)h7`w zV&Rbw4)Mq~a?jH9b;2E({i~_Mcct-9&u{Q^)EN6uHcyp^cHH5bK;o$zo+;W@IyI%x z22P!y8KL1i4HgYBQ^rGXt$`5Hlk`{_yFyKt%^mK|E)GgnhLML!L76YVh$#eGOC9bv z)J*-GWBpq~ILG22u!eHQHW+>rv7C!J&Jl5H-nOj92$g=%gem;N4?Qqapq;5WVWMCf z`)#$7%e9u1*%%Q7Aumx7)66>I`^H#+OgejJHKGVFy}(mp?DApop##t#5SR{s|9UVq zBS&hzd6KU-)tBMnMn%MZaPUYc*Jmt<2~@!bIBim2$K^#&2{g$klQNyGPPFnw1~)sD z9EPtkM1#(j*b*Ovl{AduhRGF;qx$>y0uAz0D#iVBfg_K-^5-%i>Zt@?XVYu*4u?t* zgHrP{LYq9#^ggc|8yaiNCkH;cc(E5zGE69Kq$N`KbPfuctst`Uke*4cwa|GoQJrcd zC|gYvLolonR04B`HZ19R-LLNVaFiO-S(njipDTX6W2F&!i6%#O=*g(&%R9tOQg?R^ z=@aDddV*wM-Flvy%b=f0x2UR3ruTp`;fFsf{im*}SO&(%5;@MbBz$LyNo1cE<7`T4 zbQz}CH9Ue((x1Hz3J>x}cFhYX=q-MeGR1)@b(3k5B!cN+j8teBev z?;3)6H!RgU>HvZ(yX#*cs3#!5@&!8}>}DxsS*`95Fx?|FaLROvcifKv>r&61M35FV z(*3x8$)ts!=~-$2i+SgQ6-$kc4a<_uLjD%ah&b{#ngwzEP%Ad669E#+``$VE^nA8g zr)Bjhauwfiu6=aNh&uSKA4 zXh>C~#0((qLUEYMQt*c)5V%`NaN`odd->MOMvZd9=*B&VRu*b6^|88d;uR>CCuT*I z(iJj;3;j{vkQAd)TNT5HFzy$BGR3*OsAuH1xs~@gE}=5X7T<>d%X2sd|5A4WCAWu1 zRijiq5X*Gh{KDLzlQlU_^q#v=-(dpJ)#?qj&~V}l@%9loM)lsassTiAfY7OgJ?&+U zuuI$5jWJn{V1uIrI&U7@03WmA zF!>&YxJH8+63=G3lz$FpQ=y-x*z`6oVr zFLGusn{zDip=eWr#=daicj<7OmmYn}FH>iSe!|axiqAx+fPj(ozXx0T++WK(L+)O3 zyw;Z(a{Mu4EPEhV_$+lu`lQY5dxL-$WG&rwYoC_DWRraPr{B}0aQ9GG|u+= zWR~$%8&G*KTJOLGe-~1WG5S3^+!@v(jLmwm!p4_>z|XYUd7TjFEB9xbYddLIoI!5Y zE)HGs(0+<0sma#iOTQA_hgsx!R42ZL5k*Rma$wfG(1wPZZ)^`$m2FeIsgL;s1TW35 z>a?mX+y+ep`4XWW@mF2T!7!*4X)OvXt^bTc|3u?eu+h-l+dpT3%UjUOfV2c2koCla z4}!)HWRpw%>Yo;bcEZ2>0TRBrtQ|#N;QGwquYEAC?DwesF0Kw+6f4z$*BE(p{p8tK z=*n9*tA30|Qu>I*pSCtkQ`RS`^k4uZwJH2C#l?MpHGgzI;t{nyz;&4r8kB*zbB2@e z!0N7x(^Cf;C7dojp@QVlL}G73n+>bk0BQj%q?7FD5vFJ=u8sRq()tv6t|P5&1ow15 zpf23H!32B8aW%Vh;BmnKf3{$w<;9t8EMg*(7uOLK$E$f2zG4&`_?c;Nm_a|Yvrmxy z$`C$mIzw1!+P5mYOQ=h2b~f4wHR4A-=j$CNyHqlOX*w^zQI6+cyH8#$a2b`OWNc2J zd+)7dx^E2`llzCJKydlJFP(uwZkRSm^Hu2l%34#F-_@;G>TAL!wo2FQA zT{T_C>>#WMFhUyiO6^x(@%O3Ayhsf#{SqhOdE41C(v<^e@_{^$Mt90d=5+Yljr_X3 zem!h~hSxhtk;ydA>d1ZxX!@y2L+VD1;;dQB#(c(`u9POv-tvu0>W`rbfCt|Ok*w?B zsQ8}a2cnqj0R+*is4UsSXx?Gu(y$wfg^35d??8T?S3`DbZc)R!VIUM@`Ra+og(U8% z+mca46#2~S3tBScDbLZVEuu2R&+7c|n6oau zcY6FHd6j<_zM(hQ0)Hpc1C+9;$qN+|wTs%`zwJB_u!F47x;$+!7o4{SVUCc9nUT;| zJ7wgy#u*?RunZEkI8MAP7l+?qYJsTT>Lk4?^*@Y>D-28r0al|RdmljI6`_g<>9MN)U6wutfS zi!hzwQFQ`wklYQUW>pqikPfq$cbSlVzkhL=f8V)(@ekDPuw|{&GJ>BK8-|fzNEKdQ zyl-Dv4n8p)LW0T5EbZTtTxHrBp_ZR|DbTJCq>}NBiG57Ul)$nMXTo+@cb(k8m+8w!*^E}d8wcc=U?dWScNMr{kX!rUoXj>C3k~=oixY@1`YIQ|S zyIn=&qCNGf9^Q4&lzl$SGbLOS#x*r*WlxP{ zwQ(KLK$dweBkDCu^`E!ptHM-ff3wP88H#Gl&!n5&H#cu$wn#yD3RS^EJg$CfbbK1) z&oB%B$D(pbHwE~eSkK~nFs{v@{fxZE^o{YYz?sYbk#>#WTC7Q?tJ!VQUp(>pl2D(`)25sWOmQ8;5|V|FNvGO z39o<1_55P$dgqECI;_I*?`NJy<-B%X?N1w$R2K)gdzQ6$9vKKl8J>VLp^Mm?v9q?# zEsTWzkHg!3ivru*X)>3T8cymsZhqL)v$rmtQ?f4%n+%?!4(EHQ(vbIpVrT zg{-mMjdiDf7qhR+x2!63zl<&sUa6Dz@;u41)NURk$U;;epfeY#H{{=r@jHh(I-?OS z?-C4=psV-CqLNCw)HbB4!y8;E1^y;f*$geR?U*eR*`wvUpVQ#wkK8Uf zcB5q*N5FbXaf6Kl@`s0D(J&848N>kITeM?lmFTj>oTF*gOWmfM&Hf?sDmaGkzOT}< zw|OIxcmC{qBll6Ng1n1E2NM_(o?uSjeMI<5vv65BYxvQ_*WAYuES)XU`>_|GhG6HA zvTd-N^!V{Ayk_|}ae3p&RonsnDPfX+Ez3A3Ni&pI=F;muT;6T=o>Js|ZdQT17 zprzZ$EQ*mzGG9!SRitfAyHS&smX{SevC=Q3?9|o}@$|+#-xMtPTTr-fjBfa2v7uOw ziz1`XwA*rEOP{r1nz?Eb5efGYFV87qqVFE?2rtT_QF;AWwxoKLd6orcl~-$do>12J z=;}8KS!~a`G<|6r9{=1A_;1}e8a(+LBB(^n3F=lSX@Ey-tUjM zfsGxDVsq4d#K;(h4B*(Cw@5=?H*=#~Et4|_&mbAjeCNb$IVov*>q=$~WiInPue+bS zEqCu_{55R@=Goym*f}R0R}ReC3oRbQZSg;r#wfrZZr^HXpKN+7$YH|nQi6^YgnYMe zL){ziJ}9_u--5K6JdRj3Z@ES)rHt$r19*4<2 ziplOqg#CcTa{i)ZdGe&ZqjXy6SP@`VsK^lVN#r{1X3#-{J@K>)eupEX-z((GzxgK0 zwWcmhDeYoqQXn!+3On3iY8gj0nGe37T!2dIa8!@i zO!&06IPF5*jFT1L(nyR+R5i(wT|0fsR`=uFF`zN7A+CV*?)AKmRR)rsgJ(!}XaYRUjTF{~Jp?VKvlb+PBr#hY z&i#Jcx$9r$ittS`eiMYQJP3n;pEm*hSa#&b0}9VxY)9nEbs$2g?29RY?B)YpncFZmV{y zf!bRo@@NOqN~PHnHOX3!Z||@1MTo_)l+lao`~OIg%UtfUSbATX$1O(>%=Sh;kg|?) zuG4zpr`I|BF^+7;zf*8(WW(nX25&?f0}=m87f!d`UFui-*C)R$p6JL3Gd#DN+)b zF5mUM;%VqWU443!w^`(a=4v?g)+Z9P*q&9U`iz?h@Hu1e)p=R^1ie_=yvQJ)UKQ?jF5&rGb0 zRz_JmlEQx`5^5ey3Y2%pi&^?bB*FF`vtsNVw75F_PdY%_>b^vGt6rr2x0Kgl>G;-9 zRQ9V{0FO*nj&g&y5k@-lPrnUtl^1JvpEB@&fQ&z6VRu^y63Sq6zL2IqNL+E3~&-n+((=oG6ip@ ze`qoPuqrm^%4cgA$Ry4*(Bz^hkpGJBR8!h!blYjhV2$r(LkycCgHLeM8=^q`6`o03 zOSc~SnPa&Pfd#-NVNmvF#xY78M&)DP1XnymUFc6i24|(?Z&2-J26B zxW#sVL=F;N4zl#)3;lXw>aBcyzD2f@Gnc{g& zyYXX*Zw7y-8A!>OtFIk9BcWH|)w8awe`IW|L)2$3zmbH(@)wB|n;zB2f*q)Y|NR*H?yW=cuOp^Tt?*ci@rM7zgzJ3j(c zXQObGjONiIsP-h}SQ0JPfpEBzOhB6F2W3CWJE{X(=Hg%kwi;nFojtHbc+lm*!~sBD zp6B{s^syAVAENvhH$Z>q8x4E{YP|nyx%p3I`nTog|Cj%4!1?c%|LOH#GLwze~N z_TqGOcCbMI&QUSghZ_xpW*r?(ngb2Z6aCZ&FHP@jvfmXWU$)tZqJhY#5m)+8 zpP2fkXM!z|^BUzpli*BaOE;lLpP0Vks1*<==Y7bX77@U{sVhm z8uirfdPLJ!n|zh;(=WG^&CatTkIwrH!s73od9wQ_wM}q-wM)S|fL|R;W@=U-6zf_&_@0 z8`X^$TI{oR;RMA8T*12;!ePZF*8#uIY0Q?>1jok|UZcS3xS3cN(LLL+EC;#I_E0S9 zi+sf+S?ax{7~VVdT(^rIVS3NF6xSr8Rmz08Opqm#`y$_c>CFLXkKqOXJ?MDE9hS0Cr!tRUeCs@Gn2T#B@N?W8-?JL#4V=6H4J}Jtd0k zs;g@g*?S};8n>mgF#3yu1Bv0Uo#H+1rZl48KJ?lS%-u4;2T*M`w5{P8O1iF z=Y)o`XJ1)wvY3&$I(P#|BU~^TiJG-WSUkk9SWaB_ZU5Ydt2X9Slrr6U0W(Z?zG)nk z-i?5tpt26xs@D6nxY3c|5)SqnSd8@I=0A>O0F-c4#5;L5El1=o86gr>wZxM3uxKN> zyymIwa9yZDmEJ(2QSFh^D)lCRsr6CYSL#w7>yy45)wNS!zo&8T^W9gu!sn+dg5$Q9 z_7bx6_+H|Vwx+S(oJsL{EIDi!kKtkw<859BgnrMPNx*GOKUrwutXsU+qu^T$LNU;m zzkn3YG(lez(fn^^;S&75+rMZX0d%w;J^oZFSQK6=v6DewW_HGQ#{U}$0)En^apA=` zM*V+a!m;eO=YB7%L)CD?#Wm%Q>RaBv3;w0Bj?u8ZE^EZC>f!Z(tg=`Vj2bP1dr#47 z*jqq6K@phs6cjp5KZD(Q+wsf}Rh7o=2f4gM&-tOkdGsFhlb31b% zBWGmKlDU!NBcGw#D%eiz`9y5$f9zm%DiJEG`!PCIjBOZs?TJLo`4Q99Q40}X6-y4CR=53qJPo5TWFz6`GygspYd*FJ*pEjv0n+!Q4ce7!Zs7~G;e5eqh$M=o! zG#Q#Dbzl2!i$hNrl~35l%Vrg3!m&K_jc6N4hDXJqTtUp1c%C8@OXxNZ$0}Zh zh1&ex%x8z50BP}W(v)TJ=x0JL00x4+gjiuCD;$CyK4|KlTb6Vjt=%3T=<?A6AT7UUB7;Ei(lD#IO>e08rhb$m$F13Kb&d_07m`ETqOxNr zDn&%oEcIZ|u-VGO2_JI`iTEpB9y4C3NW6PpUB!d2Es1Zc7=F#ZsVb~9*;6;lLEE*8Rh7F~P@CGPR)^`h| zTScbnARQKQs4d?7yo4th%hR(4y{V*nVl)aASIVSH=6s25udTI=39<%soPX`84_V$b z9seJHzW)}u7_>?B@QrKw7&UZB`}0jOGBtki#%S=@^-2Dos4K43ZpH(Z!J zFSx)@_v|0-#k8Diw916xs(0&x*u{R=3Wpv%-Rsih+%yPIU2L%j!F~PyS-eXQe5t;4 zw4Qd;arL$`6d0Y%en}S_o5Fn2IQkQBh!Z)l4QXT0KE4u5_m=hJ@2dF6enpvWr;SQXgJ_IipKcW*Zt=HA#)8Jyc4! z`aLs&(RLT{)_^IcU9=Z-wE14lk&@mcb_{NX#*o93zaV0;O#=`+8dN)s;OMbpyolKO zDg;Z*>`)c3hS{sO(725qbXZc;XMH?y0N2Hwknh0-g%l~QCvVXx5WH?f+Ci3`t#auW zxjj+9dFDO3WXwg|z>eSSb86%ZC)@cn5BP8?8dqk!q{lsggeP5$1SW-ATJtE$sj2|K z9bj`I5y)Liy$7M$Om)mDh-oQNW)G4aeqj#%Bz!^DH-h6t3Lo8@6o3Y0!Gb{jpcz78 zVCn8%+pGK?dc2P21_ zxzNh~RFzOWV2Hot4DnQ!*f1mbatRivK*wwTwRhq=f_-ZjoG5I6L5?Kbp2$BDC3xdf z^^E5JGYFCWz=AJSI*#K!ljhhnmvCfRR!HNrX8_ue*=o8mnJL)STZt7f3MkUmB+Q z;B-rD<_^`nVoDnUVP-pNHcVp!Jlj2j$KjYQ5n2_tV|b~fr+`P&?F#{<^x&t71L!9UbJ?h8P4#jC`x2<;uuB-Jw*k%(edC%+@Q0P z5D710?*#`4PKnhzn4|iI(LDojF8qVsA^D2J(HrX?jDlXff71{YL^DznFq@e86+?&$ z^Vo8GB8x40&VX#JK#$_4h3IxkPEr81BMP6wfdZTN@rab&%p6Z9uq7L&{4xyuyO#+D#4R&`~j8$+YD zMl+?c3}=_-Vn!{ZJ}Gc-MVrUp))Y8dOsH(3R|RDisGn>y^5oYdLz*>{!?-;nXWCRB%|D_ScA-3V67pOGmi=sKL-%3WgLT%uGWYPIgRCnA5GxGV6;%#H ziC1UaB$`&QIQ`!JAH@CtJ^25|qLoAqP)yGzP{hlCGgmo3?wnJOc;1|wou`29X5w30 zik7^7xFMi`x1OPeoOO1g5>~iCPsb$-@my3R%97#xeR)IFvw+Dv!z{LTkTuz z`+uCqzanb4v8PcIyBZ;SkBzI2zr8(&oX7^VAqAl7Et#$`HRVjD#dExA(zPwFV|h6Wsw0K&K_SP=>g3Q_ z>eQ<~d{mz=_&ilr!d0q(FgWZg4;(;#@Zo^gI4_JY)S8=|vOgfmeF}g&7e;|a`{+}7 z(6|@M@vPBVBp*ZH-{li{TCvbvF-p!AObP7uls-a+DP%Sw3OUU; zn)iY$?0K?G4260M^(~&?6lI7{->@;+(8J<$D>lmoeq{l{A_f-fWBt#R^gx??FV>54 zSI5mA7uT1oZFEiO8`W?wBD^xJMum2#l&ycYMK8lvZ;ua^Fknhn3>pGD&Cc z$aK5qVm_ADXKO~!F>=Bs^5)3$#W6k8yl3WYY8wQ_&tG0BAbwMk0-P<-UNWj{6! zEAk`nmZIC{x)4B!ZpT!WV5f}Yn4i|>WgPrLQy8P$YmfuQl&9x3Hcs-p)9c@SIw`99 zb7rGrCn|5BWm65wQwZqb=Fo)@`MbFG3pGN2tF_P2o~dFg+#r+pfgEGC!Tm&u39Ebc z{ZZ(rU8J!uM_egSychJYK1dIT)G@~5;^*?{lmk*|m0s!5NDe748QBUM1h7Xdp#5PI zmv_4Iim+P+f27XskQl@VwmRR{|nBp7uL`b&L4+N9|!44X? z)E!Fqw5W+_;xrxLlnqfZz?eo>5A7YNOL#?Jh4}QsD^l?)gowCB0JRY{lU%=W!HCWx zNGDUVDf4ezw3{9t(yvi)s+6+AVn$%LxbSPU#UlohX@nQw0^@LggQJA=6hvh*ISwk& zG|(w*@SYByar!3--QHhX`#0e$=Y*q>t5lAWTDp0+FUiLk>6-Q|`ln)yw~Y4{f445Y zvQ@N*v~l7!e^>_?tIGeQz-9sk?3heu0}nO{?ZVOCggIsFF-t3-o}A24Yw{B%PO)p5 z#!~YxqGYS{M;RDIA&edEIo7=Whv6(;%BZ5t^GUUH!rl)&gjcJo&ZS110BpYS`k23JWF_lrAR zI7IV=|`IHPzkz`oy?rKX}tLLXpa^)}8eg@+wZ6R<0-tIz05G}6d^cx~I zOfbHD8>#m4B>Xk@OiLe4(w(66PyI{1Fa55Pp0PnB*+ztE-%T}gPOp^4gE_?*0>!RH z^z8LhDIY0cdqQuc6G38$v)2QoV!DWOAIIvgwj$|}0$#$HN-dT#N}$>qvnxAB%~(9Y zxbl5r%2amakj3{uF8*TLg`wLlfZ#QdD@PBH^#o}e@cX3d5=$FT>-Yjo9K}W+&26+? z$ulDeZpk%8Wh|>TE_&n8+y&aNyQ4&li(z)z4(WH?jLhQWNjBq&vlveRnYdj^$}1|4 z?4$l|P{Zx~F2A2VrGy7xPSCiCToo!kJ}-ll0bribqlHt|8OuE|RL@$;06cu=TPDRd zvjYa~%NZYtkj=gsX_R?Gdq%^01uTA_Cs!=cQ1iafw{@1{<4-!u8{|S$G8wn5aYQr_ zA%w}+lXaNfC>w}z5`V2csc}y+wp_ZifkiM}dQfn#h*`#=)PdFKoov*hw9%(3rGETC z1pDybsYdfItW0q5<^{z0VgA+g77@+aA0MCPLd=1Qu>n@S`hZM2fTgFW|BhMrG+b!` zL08mpNk)}J2z~5Lh0&rn^5s%jUV*aX)9Xy2Lh0y89m55E>mJ4ZyfzjoEB=@-A8KJ&D7LL`rAa^y`E2e0&32g6c{jN?+b?Efw!m(??CR zw2;*B{SUTBx)nQ}zwAP)wS0W!_|=hm8t7f z^=ateH0On-l%i@>3w7Ww)_&!?)~xFvb%2_#*MsY0F-zuj!dD#AZD%ZXF#gf%{grMZ z?+lSY-l=-!HNRSK=f36hWou^EjsHoNAZeE?3HA{792KoP8>0I2sNqaB(|m&r8Bcl* z9GLu^+R=Lo5q;}Sx{)+icA`KlqsZ})^O{#MN$(?3OF9PRUZ2SAQzQ>RBFT&jjZohw zANZ9&zxoxe?ki+R82vojU5_2$s^drw*H0+t1A0Tzp)AlE4QQQoP;nwiZzaS6*@gCV z4pSlICp+QNXLmL`zh?eKL5VgI&0*v|f->SeV~^OjD7G6T+mwv61}1W*MDnXgPlhgM z$Uw?3&qZ(j?zEG04NOrFJNF0UG|861P6@89xHpJUfJD;n^=r)7)x_m+cOUaVM&@Sl z?fnV*@*fl9g4onfJ;5Ko^(GTNB^Z!n{cI25{cjK@2n$S&Z$+7i1qv8#d2ySu6h}_*E3}$DJ%pBv_IIeGKbOhvr+s%M zhjOWfTaU`ZOJP(&bY9mO7Dke-aYkzv>cB&?K-{OLFGl!5cV>8Ul!1ovrah3eOe z2Y7aG?=PY=f;jkWdp6og70R01TzJa!51W+yx-?JMyT&Ic47-`p7q1^9ftnv{ff zk{xq4od$yHtJRvPT}_&Y$n>v5bygm=EsZra_0#_zJ$_rwsy8{)_Cr3_ORC*A2FKfq z`9uYp;w&u?*jaa9&$O->5jrUMFjM*+BOu!0=zqW0ahrb!j&!ali5(x{t(v4$p?O68 zpn(NU6?j%;k_&#Rm?oRA?I3Pui?$zKd*(s-{XFDqv29tRWxI$MBr`D4J!2{`8*-~%hEghD+hOQpIWb|bU}N*4wpixV2|g|DvM z@gv}v#GsIF{H{g*+@wrFl>O0+I#W88U>g8?&ilm=9?FbP+ z6c`5eXudx6gw0B&I|prS{G0_{l`q>SvrVW+IVh7lcs~Sf3B^6_s!w+~!Ni~1L^iLg zT-Fqp3=rMJWt)6{oy?CbtcS@YZOysIi=mxK9fLht~h?XCkWc_ORnM5*8f{63WtSC{K9>F<=tUtS;Idv zcxSp}%A=7Ka5^ggP4FgQ(ET=7$WZ51dR@4ubU1jEA99+8ii{Voj(R9Xk6?#Bo+&;5 zHSGN998*ByN?0(S^y($=m&Sys#(KWfS7r;Jz{7;}#R5r<5lK8Jrnm2(YrINV9LUn4 zv}o0CiW~j}Jl8+PJk9Csc+ir|ly_g7%W@DOMz+i0U>5tu{#UKLiziG)6_kfqW zqlRe!W8%A*?OeV)f7)>*Z#&u_!%Evd2>Jwc8m~6CoF&taGy!ENQu&%M@U`qWGQ12A zg|f-u%ak}+Gq0?^78nKGG+-};{0Pt33~g2CLBnMQA3&gGt;N@#$3*kx7;3^cru)}g z7CP*Qz@F;hv6a2LbyL`lJbByqUrHMZ*^%3d(~2S$XE9Y`ETR`VD+Sv$(0P{ihjU4w z2~gMPy~lJR-uKIEo6;P}b7_RzPL2DDk@sTXP?~PCQr`V(OhR+^m_hSH*mPE+IHOPb z7ox*foX7JF4>2)QJ1t^|FMXM!G*{PPmP9|sOq?7`8!{!IrsIv6iFY0Wmg&(W7cbfe zD_%Ggy#tu9N1GWPu5oRLM8E{iM)u#h{$A@9j~>A9Wou103F*qw!kn8@iF$#AS~SS1 zq*lytoL_BF{SJ=Kbosza9CFAzw)FzfFTgBoxd+ewfb->_R+Gz5`2jnr5_gFU{qq8L zS(gh#Q3p(QoAqPZ@2V#h#q`2k0=?lon%2tr-%78Fqy%L==C#*_kI-;o(kV^%; zxp^3v)qFmUvYtlfFnM`Q+j$?7*AcmXpY9BlEN(Yhb`hdtA}p^N1#yjt``GLHUBad^ zKQQ}P!9`!mOn6(;dinkGtf+kk#8EGEgsQ9WANI&+lG(7d>eL~`FIe?L0D5g21-Iw* z<;!<-OOLG~>H6vkKV`IbB2E1&P4vfF3pzGhhT01+51nU8p$U~4z>QS9@L?__qkfI5 zz2V@Dtb=;0i24}g@!IQd1|09P35BWfxcF0E=C9Wt`{tawF{&XcU+U=e9lXXKCg%9; zS@#T6zPHktZnToAZL4(f z%(U*)eDqhRoKM)}7 zJT3ZDkx$#_tES`=da=y_1Xq%rrW&6I{-(%AeD;rFszrALugM!)amaxsCl^Rr%VAYRlywvHmD@ErnTYHkY2AkQTy008kRfm2q-RPZZ1XXxPPdyt{J8By0KHRhju0*?g$w^8)W%5NqqYr>7aoh8Y zG$-}-?h{|qQx`SB-J58d`XZ0tv z>SX9iE>_(<)1}t5^q`it#8ax&dVf70AI4JcSlI3X&rwzlWo%(%^lr(Dxj%{qkYxm-uOKdKd3#ou#gfNwL?e7M{6BOsc<3U7YdNlCy zWetJItu(4X@=>9oJgDmg>k)r0{BMNl4Zpy#lFGJ6DfiQXw0fZg(q<2DU&nJqcbUe8 z**@kw0^T3gu9|$1_hKByd&f!sJZ`<+@*{M1urXq%Ialnr{ZaZu_lWPaFMxN87JT>K z@`megpWWE9R~e?Vx>k(u!AvW(8hTVi1jOZZ|8#yuMJf|i1Ik=6p2QT(KT5oGuZ!5J zhCj+}6?5r$e)$#my|eqIv+gLQs3pOJ`$aAw$qd7T`GtYd7}=*^dras$AIL`87d7rs z${)NYOI`MV=^Uw@j}}{g{^c^&PTkS}q1X&HUTTolHZXvfYzVTo5y?D*LdQ&aizHV~ z&cgy|C!YBMHp7Q6`baiYHDVF(#m1$v%PQYqHvqq$XpKwmi>c?zv^dK^Mm$M)Sd9Vk z7xuLwS7a;JLgGImt>o?&ecspF;&@#Ux;85CW%GK?C9oVO*U7{2h2sA z7vCIru+F#j-6EJ$`cL**7{5Bgx_)htJWNlY$60(ToKCHSPf5%m= zHQJ)~A#gZ}mUtf}?4~eN<+hm!a^m$D*e%4t>LZmc3rxCj}XI73pEjLh(tMCAL2nNPv=ooDL2FOTH*D_G0j+daX+@`?6hK&8e zFj%Q~m%R`(E|JA2bv351-yC@&v3bT}<|}pu%f8ttQwy^1FI`t=Ojf*0eoNR6Cl}px zmrWoTh`bZc$!U)KA|lfrrjacw$=()KGqpGUw9!RQ1=W&Ub>(RM>`Q;D zj8YG{??UnNH&8(Qfj(xO3%ojI=l=Y{kl)j9<2@yY0{i0 zbHr)Dmxcy$_o=t=aOLjJ&HD$wn{4=Bz!q$oR7y+)Zqy$NRhun~FPeTI*VQ`&QkR$4&61GJ(!QcDbGkD4rT(j=Dl_+_<}n8yV9{_KnDwM$HsB9kGM#E^V1R7;1x zf}>mA&(rqchos+_m~bv?zC^bB4#9jA$Z!)d?{O%}mMQFXgXnKQbCb*?4q>F}q)-al z*aJR+C0ddE268|@JAdIqS6q_tQjNW_{MCT2tW9ko0ZME<~a00Dpc0#Fp8YGzw}hejTqf;D1*qQ#MH9xTPI5~wA8UePZyHC zX(dov<@@D(uDF<;06phDyLmsd%vv4}@XPJVL2a!w6hL$ee?{yn`WYTC}c7hixB zdY8|BLC3s(Zm`+8b{FfLl>R1aVM?EZqa^xD^%IQ*h+5k_Z+3pAC81ODw7hC&yuXN4 zk{x(7>CdE_=rr9Q)*63jKP^*0*<%8j^5h%0iZl7W%n|RSt=yVCsRmaDcV>6b7G?J= ztu3`+Xr9gGs~uGuSP*#sUhZzLNz=ZUxM7pV$?0^up}pyG0laJT0C8%H-ylH=g`J0W zY~G2n@_yfpHa=8o4xFjn3qErK^pM61NeP@Hk}kG-_eIeznFL_@Hr3jfMPDH8hG{!) z72%G+MeCfCZ^s$wHAiO}t%YiM&d!C)S1KJ`zF@{1g;er0L(ea|1y`mt`=>IciUF6G zJj;v=(w@gEvY*~ek`O;?Q(%8zfDI-k3%XSt6TRgHraH_=9~lO#+~sJX8={B|%MGdG zzRK=Luco~wu%x_{*~~Q3A~3k#Iy^g~UT#%Y_PrUc?`u!gOOn=Y5I%i46vo*jXWMV_ zxSm@e%Bzi5zR7BoTz{$F=|j~exUcR2RleT5i}?c=5L)}Z$31PP=sAbqS;S({H8w+H zAGV9tP@C=JnfqGXf)JE4NzDs!X;~83-qnzyqsN1#@XqG8$B1kfrkhgwE5#Wyy=R#S z>!(8)iyVQEvk_}kFVP&sqo{?J{llzJ{zwIx?Lb~d>B!!Zn<$c8$AL*o_?@&RTF8G z^7Z9t)5&cJ>4ojrD&Jzr8K`wtldkk`k&SzA*CTnIDC&0rj6~=x;U_!LPiC3+m~`_1 ziRzP1t4gTfspQh^9m1PAOiS1qhgr1@o`h2AzKaX;2Vo|hP&JH~oCN)09lSP)kwUB9 zrBzp&dzoMp&V&6NE4VF(8bi3oYyQm6)kXF@7nj6bgik}(yys1l;MT92ZZECC0sDeiK-*2=Gl|7$VbXs3$ z#@3Wjv5Z7FFpR`|-1fzXouQ?d#EOG>sKdMK6`($U!tjhmYn4Fm1# z2Q)NStpA;qt*hWb{q^NpHf7E3GWM{tKgC=6;Fk==9K73=JOMLSUmJ7(3S`1=-&~&_5&_dmp<4sgbLjD4OGWJ~O4vgUT#^I|@D1ZgP?pN}Bs{5i_cTzJvm4x6006Pt&*iQCY4?*3h=QX z*xUX@<3c5~NTs6$1rJO`tRY?^IEyUfG=!=FiGRHj-?d+8oQ$o#FXFXj+^;0j+ z%aeafzIk-U6+yTeW*ruiAoB1L$;Dty-}l{>1U8?u^<7H0QL))P9s3u?5~-wZX`4~T z!>k5L&IaDuq+4G5(?e^G`fv*%+1t3=ZmMVZ^MZmt){HWx;%A9Qc$0ux&gI#j@yGBf zS(?I6wUG9AhnQ26EA{ehczWV^D3O=Vk?sf!7I1NY$EKFMz|tzYH}uvZ@|0Yo%b1Z0 z*Dy+`;Ge)D?2f~Zh#*q6QXe0ok?DLTb@k)edQrZeO8*d%hT3M>_|o zDiux^&z&pebQooI(QOM>s=31_$nsc~Xkq7yh>{knC?qUL&;b>NU?EEEJ!Qs8f8i2q zu-JH7r(PTs6Q)|N>HV+~4{ZFU@;s7^St+>j&!x757JK6rJYjYE;+3y=0s56shK-fh z6H<>$@ZB}X&kt+&LNQhBfWlK#PC|5t)nv6i@Qy)i3kIg8_gx+oG&-2Jr6hYTV>0dO z-K(B*o8{A$dLO((Ecp5_W%1A@duDFsuKT0%-edoAZ}w=$sl|J&1gEHAFK?R*G4Hyh zldxBodFH?yFC@coI^1!qV9y!CI291BcSC3ufkQz%^PC8zovwvuf{ujiP zP}9z`+KtTT=8;?KVQN#Q6Y7VG1BJSibN+DQ_j!&3(Lj`Um;2HeeUiP+~VY}`dcID4}zDU zZ#ahKWM56({)+kmGC6BN4R|CQCSmPF644-OvA@G{YsWkFi#*32g-KwD3W3SzkpyF^ zY%X0+z(c_(t5@qGXpt@$kn^=52du3FPZH)9(`Fur&mDDKLLo;s+^*iu`>^K51@UU4 zDw?GJ8@(*L{E!=RWd95B--vqVn=kh0YDp;!EbF^~M@}UFBNuXO(yaRlJu2yA&c9H6 zNDRF?>L2_K{imrYpkus7`;XF^e@FO#mDc=c`}abd|2p#DXZ;rg{D&p}!xsNO(oRJI T3;SQMG5&G4f37-w|GN8MQIyEc diff --git a/composeApp/src/commonMain/kotlin/zed/rainxch/githubstore/Main.kt b/composeApp/src/commonMain/kotlin/zed/rainxch/githubstore/Main.kt index 65a950e7c..628568342 100644 --- a/composeApp/src/commonMain/kotlin/zed/rainxch/githubstore/Main.kt +++ b/composeApp/src/commonMain/kotlin/zed/rainxch/githubstore/Main.kt @@ -1,13 +1,11 @@ package zed.rainxch.githubstore import androidx.compose.foundation.isSystemInDarkTheme -import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.navigation.compose.rememberNavController -import org.jetbrains.compose.ui.tooling.preview.Preview import org.koin.compose.viewmodel.koinViewModel import zed.rainxch.core.presentation.theme.GithubStoreTheme import zed.rainxch.core.presentation.utils.ApplyAndroidSystemBars @@ -18,9 +16,7 @@ import zed.rainxch.githubstore.app.navigation.GithubStoreGraph import zed.rainxch.githubstore.app.components.RateLimitDialog import zed.rainxch.githubstore.app.components.SessionExpiredDialog -@OptIn(ExperimentalMaterial3ExpressiveApi::class) @Composable -@Preview fun App(deepLinkUri: String? = null) { val viewModel: MainViewModel = koinViewModel() val state by viewModel.state.collectAsStateWithLifecycle() diff --git a/composeApp/src/commonMain/kotlin/zed/rainxch/githubstore/app/components/RateLimitDialog.kt b/composeApp/src/commonMain/kotlin/zed/rainxch/githubstore/app/components/RateLimitDialog.kt index 5d0b5f38d..713cb2a9d 100644 --- a/composeApp/src/commonMain/kotlin/zed/rainxch/githubstore/app/components/RateLimitDialog.kt +++ b/composeApp/src/commonMain/kotlin/zed/rainxch/githubstore/app/components/RateLimitDialog.kt @@ -16,12 +16,20 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.jetbrains.compose.resources.stringResource -import org.jetbrains.compose.ui.tooling.preview.Preview import zed.rainxch.core.domain.model.RateLimitInfo import zed.rainxch.core.presentation.theme.GithubStoreTheme -import zed.rainxch.githubstore.core.presentation.res.* +import zed.rainxch.githubstore.core.presentation.res.Res +import zed.rainxch.githubstore.core.presentation.res.rate_limit_close +import zed.rainxch.githubstore.core.presentation.res.rate_limit_exceeded +import zed.rainxch.githubstore.core.presentation.res.rate_limit_ok +import zed.rainxch.githubstore.core.presentation.res.rate_limit_resets_in_minutes +import zed.rainxch.githubstore.core.presentation.res.rate_limit_sign_in +import zed.rainxch.githubstore.core.presentation.res.rate_limit_tip_sign_in +import zed.rainxch.githubstore.core.presentation.res.rate_limit_used_all +import zed.rainxch.githubstore.core.presentation.res.rate_limit_used_all_free @Composable fun RateLimitDialog( diff --git a/composeApp/src/commonMain/kotlin/zed/rainxch/githubstore/app/deeplink/DeepLinkParser.kt b/composeApp/src/commonMain/kotlin/zed/rainxch/githubstore/app/deeplink/DeepLinkParser.kt index 54b83ea69..5620a129a 100644 --- a/composeApp/src/commonMain/kotlin/zed/rainxch/githubstore/app/deeplink/DeepLinkParser.kt +++ b/composeApp/src/commonMain/kotlin/zed/rainxch/githubstore/app/deeplink/DeepLinkParser.kt @@ -89,7 +89,7 @@ object DeepLinkParser { } } result.toString() - } catch (e: Exception) { + } catch (_: Exception) { value } } diff --git a/composeApp/src/commonMain/kotlin/zed/rainxch/githubstore/app/di/SharedModules.kt b/composeApp/src/commonMain/kotlin/zed/rainxch/githubstore/app/di/SharedModules.kt index 010d3afde..4046e2640 100644 --- a/composeApp/src/commonMain/kotlin/zed/rainxch/githubstore/app/di/SharedModules.kt +++ b/composeApp/src/commonMain/kotlin/zed/rainxch/githubstore/app/di/SharedModules.kt @@ -3,9 +3,6 @@ package zed.rainxch.githubstore.app.di import org.koin.core.module.Module import org.koin.core.module.dsl.viewModel import org.koin.dsl.module -import zed.rainxch.core.domain.network.Downloader -import zed.rainxch.core.domain.repository.StarredRepository -import zed.rainxch.core.domain.system.Installer import zed.rainxch.githubstore.MainViewModel val mainModule: Module = module { diff --git a/composeApp/src/commonMain/kotlin/zed/rainxch/githubstore/app/navigation/AppNavigation.kt b/composeApp/src/commonMain/kotlin/zed/rainxch/githubstore/app/navigation/AppNavigation.kt index a809f77df..f813a0f6d 100644 --- a/composeApp/src/commonMain/kotlin/zed/rainxch/githubstore/app/navigation/AppNavigation.kt +++ b/composeApp/src/commonMain/kotlin/zed/rainxch/githubstore/app/navigation/AppNavigation.kt @@ -18,7 +18,6 @@ import androidx.compose.ui.layout.onGloballyPositioned import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle -import androidx.lifecycle.viewmodel.compose.viewModel import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable diff --git a/composeApp/src/commonMain/kotlin/zed/rainxch/githubstore/app/navigation/BottomNavigation.kt b/composeApp/src/commonMain/kotlin/zed/rainxch/githubstore/app/navigation/BottomNavigation.kt index 756d31626..54afcfee0 100644 --- a/composeApp/src/commonMain/kotlin/zed/rainxch/githubstore/app/navigation/BottomNavigation.kt +++ b/composeApp/src/commonMain/kotlin/zed/rainxch/githubstore/app/navigation/BottomNavigation.kt @@ -47,13 +47,13 @@ import androidx.compose.ui.layout.onGloballyPositioned import androidx.compose.ui.layout.positionInParent import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import io.github.fletchmckee.liquid.liquid import io.github.fletchmckee.liquid.rememberLiquidState import kotlinx.coroutines.launch import org.jetbrains.compose.resources.stringResource -import org.jetbrains.compose.ui.tooling.preview.Preview import zed.rainxch.core.domain.getPlatform import zed.rainxch.core.domain.model.Platform import zed.rainxch.core.presentation.locals.LocalBottomNavigationLiquid diff --git a/core/presentation/build.gradle.kts b/core/presentation/build.gradle.kts index b268e911d..21a5c2575 100644 --- a/core/presentation/build.gradle.kts +++ b/core/presentation/build.gradle.kts @@ -17,7 +17,8 @@ kotlin { implementation(libs.kotlinx.datetime) implementation(compose.components.resources) - implementation(compose.components.uiToolingPreview) + + implementation(libs.androidx.compose.ui.tooling.preview) } } diff --git a/core/presentation/src/commonMain/kotlin/zed/rainxch/core/presentation/components/RepositoryCard.kt b/core/presentation/src/commonMain/kotlin/zed/rainxch/core/presentation/components/RepositoryCard.kt index f9c9d637e..8be945004 100644 --- a/core/presentation/src/commonMain/kotlin/zed/rainxch/core/presentation/components/RepositoryCard.kt +++ b/core/presentation/src/commonMain/kotlin/zed/rainxch/core/presentation/components/RepositoryCard.kt @@ -39,9 +39,9 @@ import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.jetbrains.compose.resources.stringResource -import org.jetbrains.compose.ui.tooling.preview.Preview import zed.rainxch.core.domain.model.GithubRepoSummary import zed.rainxch.core.domain.model.GithubUser import zed.rainxch.core.presentation.model.DiscoveryRepository diff --git a/feature/apps/presentation/build.gradle.kts b/feature/apps/presentation/build.gradle.kts index 97c5c5b4f..ddd172821 100644 --- a/feature/apps/presentation/build.gradle.kts +++ b/feature/apps/presentation/build.gradle.kts @@ -12,7 +12,8 @@ kotlin { implementation(projects.core.presentation) implementation(projects.feature.apps.domain) - implementation(compose.components.uiToolingPreview) + + implementation(libs.androidx.compose.ui.tooling.preview) implementation(compose.components.resources) implementation(libs.bundles.landscapist) diff --git a/feature/apps/presentation/src/commonMain/kotlin/zed/rainxch/apps/presentation/AppsRoot.kt b/feature/apps/presentation/src/commonMain/kotlin/zed/rainxch/apps/presentation/AppsRoot.kt index fd287b878..73176b8a4 100644 --- a/feature/apps/presentation/src/commonMain/kotlin/zed/rainxch/apps/presentation/AppsRoot.kt +++ b/feature/apps/presentation/src/commonMain/kotlin/zed/rainxch/apps/presentation/AppsRoot.kt @@ -67,7 +67,7 @@ import io.github.fletchmckee.liquid.liquefiable import zed.rainxch.githubstore.core.presentation.res.* import kotlinx.coroutines.launch import org.jetbrains.compose.resources.stringResource -import org.jetbrains.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.Preview import org.koin.compose.viewmodel.koinViewModel import zed.rainxch.apps.presentation.model.AppItem import zed.rainxch.apps.presentation.model.UpdateAllProgress diff --git a/feature/auth/presentation/build.gradle.kts b/feature/auth/presentation/build.gradle.kts index 382448df2..8ec9d5855 100644 --- a/feature/auth/presentation/build.gradle.kts +++ b/feature/auth/presentation/build.gradle.kts @@ -13,7 +13,8 @@ kotlin { implementation(projects.core.presentation) implementation(projects.feature.auth.domain) - implementation(compose.components.uiToolingPreview) + + implementation(libs.androidx.compose.ui.tooling.preview) implementation(compose.components.resources) } } diff --git a/feature/auth/presentation/src/commonMain/kotlin/zed/rainxch/auth/presentation/AuthenticationRoot.kt b/feature/auth/presentation/src/commonMain/kotlin/zed/rainxch/auth/presentation/AuthenticationRoot.kt index 97b75ff9b..2cf4c0d14 100644 --- a/feature/auth/presentation/src/commonMain/kotlin/zed/rainxch/auth/presentation/AuthenticationRoot.kt +++ b/feature/auth/presentation/src/commonMain/kotlin/zed/rainxch/auth/presentation/AuthenticationRoot.kt @@ -41,7 +41,7 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import zed.rainxch.githubstore.core.presentation.res.* import org.jetbrains.compose.resources.painterResource import org.jetbrains.compose.resources.stringResource -import org.jetbrains.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.Preview import org.koin.compose.viewmodel.koinViewModel import zed.rainxch.auth.presentation.model.AuthLoginState import zed.rainxch.core.domain.model.GithubDeviceStart diff --git a/feature/details/presentation/build.gradle.kts b/feature/details/presentation/build.gradle.kts index 77f072655..e8c6e82bb 100644 --- a/feature/details/presentation/build.gradle.kts +++ b/feature/details/presentation/build.gradle.kts @@ -19,7 +19,8 @@ kotlin { implementation(libs.liquid) implementation(libs.kotlinx.datetime) - implementation(compose.components.uiToolingPreview) + + implementation(libs.androidx.compose.ui.tooling.preview) implementation(libs.bundles.landscapist) } } diff --git a/feature/details/presentation/src/commonMain/kotlin/zed/rainxch/details/presentation/DetailsRoot.kt b/feature/details/presentation/src/commonMain/kotlin/zed/rainxch/details/presentation/DetailsRoot.kt index 14b660977..fb74b0356 100644 --- a/feature/details/presentation/src/commonMain/kotlin/zed/rainxch/details/presentation/DetailsRoot.kt +++ b/feature/details/presentation/src/commonMain/kotlin/zed/rainxch/details/presentation/DetailsRoot.kt @@ -57,7 +57,7 @@ import io.github.fletchmckee.liquid.rememberLiquidState import kotlinx.coroutines.launch import org.jetbrains.compose.resources.getString import org.jetbrains.compose.resources.stringResource -import org.jetbrains.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.Preview import org.koin.compose.viewmodel.koinViewModel import zed.rainxch.core.presentation.theme.GithubStoreTheme import zed.rainxch.core.presentation.utils.ObserveAsEvents diff --git a/feature/details/presentation/src/commonMain/kotlin/zed/rainxch/details/presentation/components/SmartInstallButton.kt b/feature/details/presentation/src/commonMain/kotlin/zed/rainxch/details/presentation/components/SmartInstallButton.kt index 18370d2ff..939ed4c03 100644 --- a/feature/details/presentation/src/commonMain/kotlin/zed/rainxch/details/presentation/components/SmartInstallButton.kt +++ b/feature/details/presentation/src/commonMain/kotlin/zed/rainxch/details/presentation/components/SmartInstallButton.kt @@ -36,7 +36,7 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import io.github.fletchmckee.liquid.liquefiable import org.jetbrains.compose.resources.stringResource -import org.jetbrains.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.Preview import zed.rainxch.core.domain.model.GithubAsset import zed.rainxch.core.domain.model.GithubUser import zed.rainxch.githubstore.core.presentation.res.* diff --git a/feature/dev-profile/presentation/build.gradle.kts b/feature/dev-profile/presentation/build.gradle.kts index b1a79016e..0953d4f72 100644 --- a/feature/dev-profile/presentation/build.gradle.kts +++ b/feature/dev-profile/presentation/build.gradle.kts @@ -12,7 +12,8 @@ kotlin { implementation(projects.core.presentation) implementation(projects.feature.devProfile.domain) - implementation(compose.components.uiToolingPreview) + + implementation(libs.androidx.compose.ui.tooling.preview) implementation(compose.components.resources) implementation(libs.bundles.landscapist) diff --git a/feature/dev-profile/presentation/src/commonMain/kotlin/zed/rainxch/devprofile/presentation/components/DeveloperRepoItem.kt b/feature/dev-profile/presentation/src/commonMain/kotlin/zed/rainxch/devprofile/presentation/components/DeveloperRepoItem.kt index 10cc4a89b..cf645f0b6 100644 --- a/feature/dev-profile/presentation/src/commonMain/kotlin/zed/rainxch/devprofile/presentation/components/DeveloperRepoItem.kt +++ b/feature/dev-profile/presentation/src/commonMain/kotlin/zed/rainxch/devprofile/presentation/components/DeveloperRepoItem.kt @@ -40,7 +40,7 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import zed.rainxch.githubstore.core.presentation.res.* import org.jetbrains.compose.resources.stringResource -import org.jetbrains.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.Preview import zed.rainxch.core.presentation.theme.GithubStoreTheme import zed.rainxch.core.presentation.utils.formatCount import zed.rainxch.devprofile.domain.model.DeveloperRepository diff --git a/feature/favourites/presentation/build.gradle.kts b/feature/favourites/presentation/build.gradle.kts index f60beaa06..a63f7a5dc 100644 --- a/feature/favourites/presentation/build.gradle.kts +++ b/feature/favourites/presentation/build.gradle.kts @@ -15,7 +15,8 @@ kotlin { implementation(libs.bundles.landscapist) implementation(libs.kotlinx.collections.immutable) - implementation(compose.components.uiToolingPreview) + + implementation(libs.androidx.compose.ui.tooling.preview) implementation(compose.components.resources) } } diff --git a/feature/favourites/presentation/src/commonMain/kotlin/zed/rainxch/favourites/presentation/FavouritesRoot.kt b/feature/favourites/presentation/src/commonMain/kotlin/zed/rainxch/favourites/presentation/FavouritesRoot.kt index cfa024b6e..7752e9de8 100644 --- a/feature/favourites/presentation/src/commonMain/kotlin/zed/rainxch/favourites/presentation/FavouritesRoot.kt +++ b/feature/favourites/presentation/src/commonMain/kotlin/zed/rainxch/favourites/presentation/FavouritesRoot.kt @@ -30,7 +30,7 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import zed.rainxch.githubstore.core.presentation.res.* import org.jetbrains.compose.resources.stringResource -import org.jetbrains.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.Preview import org.koin.compose.viewmodel.koinViewModel import zed.rainxch.core.presentation.theme.GithubStoreTheme import zed.rainxch.favourites.presentation.components.FavouriteRepositoryItem diff --git a/feature/home/presentation/build.gradle.kts b/feature/home/presentation/build.gradle.kts index 00bfef251..377f8b18a 100644 --- a/feature/home/presentation/build.gradle.kts +++ b/feature/home/presentation/build.gradle.kts @@ -15,7 +15,8 @@ kotlin { implementation(libs.liquid) implementation(compose.components.resources) - implementation(compose.components.uiToolingPreview) + + implementation(libs.androidx.compose.ui.tooling.preview) } } diff --git a/feature/home/presentation/src/commonMain/kotlin/zed/rainxch/home/presentation/HomeRoot.kt b/feature/home/presentation/src/commonMain/kotlin/zed/rainxch/home/presentation/HomeRoot.kt index 1a74510ab..a666a2461 100644 --- a/feature/home/presentation/src/commonMain/kotlin/zed/rainxch/home/presentation/HomeRoot.kt +++ b/feature/home/presentation/src/commonMain/kotlin/zed/rainxch/home/presentation/HomeRoot.kt @@ -51,7 +51,7 @@ import io.github.fletchmckee.liquid.rememberLiquidState import kotlinx.coroutines.launch import org.jetbrains.compose.resources.painterResource import org.jetbrains.compose.resources.stringResource -import org.jetbrains.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.Preview import org.koin.compose.viewmodel.koinViewModel import zed.rainxch.core.domain.model.GithubRepoSummary import zed.rainxch.core.presentation.components.GithubStoreButton diff --git a/feature/profile/presentation/build.gradle.kts b/feature/profile/presentation/build.gradle.kts index 3c7687e0c..d140030fb 100644 --- a/feature/profile/presentation/build.gradle.kts +++ b/feature/profile/presentation/build.gradle.kts @@ -12,7 +12,8 @@ kotlin { implementation(projects.core.presentation) implementation(projects.feature.profile.domain) - implementation(compose.components.uiToolingPreview) + + implementation(libs.androidx.compose.ui.tooling.preview) implementation(compose.components.resources) implementation(libs.liquid) diff --git a/feature/profile/presentation/src/commonMain/kotlin/zed/rainxch/profile/presentation/ProfileRoot.kt b/feature/profile/presentation/src/commonMain/kotlin/zed/rainxch/profile/presentation/ProfileRoot.kt index eac285eed..81b354bc8 100644 --- a/feature/profile/presentation/src/commonMain/kotlin/zed/rainxch/profile/presentation/ProfileRoot.kt +++ b/feature/profile/presentation/src/commonMain/kotlin/zed/rainxch/profile/presentation/ProfileRoot.kt @@ -33,7 +33,7 @@ import zed.rainxch.githubstore.core.presentation.res.* import kotlinx.coroutines.launch import org.jetbrains.compose.resources.getString import org.jetbrains.compose.resources.stringResource -import org.jetbrains.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.Preview import org.koin.compose.viewmodel.koinViewModel import zed.rainxch.core.presentation.locals.LocalBottomNavigationHeight import zed.rainxch.core.presentation.locals.LocalBottomNavigationLiquid diff --git a/feature/profile/presentation/src/commonMain/kotlin/zed/rainxch/profile/presentation/components/sections/AccountSection.kt b/feature/profile/presentation/src/commonMain/kotlin/zed/rainxch/profile/presentation/components/sections/AccountSection.kt index cc9fd2b49..a30b2dcfc 100644 --- a/feature/profile/presentation/src/commonMain/kotlin/zed/rainxch/profile/presentation/components/sections/AccountSection.kt +++ b/feature/profile/presentation/src/commonMain/kotlin/zed/rainxch/profile/presentation/components/sections/AccountSection.kt @@ -32,7 +32,7 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp -import org.jetbrains.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.Preview import org.jetbrains.compose.resources.stringResource import zed.rainxch.core.presentation.components.GitHubStoreImage import zed.rainxch.core.presentation.components.GithubStoreButton diff --git a/feature/search/presentation/build.gradle.kts b/feature/search/presentation/build.gradle.kts index 4f787259c..984c32d74 100644 --- a/feature/search/presentation/build.gradle.kts +++ b/feature/search/presentation/build.gradle.kts @@ -14,7 +14,7 @@ kotlin { implementation(libs.liquid) - implementation(compose.components.uiToolingPreview) + implementation(libs.androidx.compose.ui.tooling.preview) implementation(compose.components.resources) } } diff --git a/feature/search/presentation/src/commonMain/kotlin/zed/rainxch/search/presentation/SearchRoot.kt b/feature/search/presentation/src/commonMain/kotlin/zed/rainxch/search/presentation/SearchRoot.kt index c99f2376b..824905937 100644 --- a/feature/search/presentation/src/commonMain/kotlin/zed/rainxch/search/presentation/SearchRoot.kt +++ b/feature/search/presentation/src/commonMain/kotlin/zed/rainxch/search/presentation/SearchRoot.kt @@ -60,7 +60,7 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.github.fletchmckee.liquid.liquefiable import kotlinx.coroutines.delay import org.jetbrains.compose.resources.stringResource -import org.jetbrains.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.Preview import org.koin.compose.viewmodel.koinViewModel import zed.rainxch.core.domain.model.GithubRepoSummary import zed.rainxch.core.presentation.components.GithubStoreButton diff --git a/feature/starred/presentation/build.gradle.kts b/feature/starred/presentation/build.gradle.kts index 815d37d95..bfb421d66 100644 --- a/feature/starred/presentation/build.gradle.kts +++ b/feature/starred/presentation/build.gradle.kts @@ -16,7 +16,8 @@ kotlin { implementation(libs.kotlinx.collections.immutable) - implementation(compose.components.uiToolingPreview) + + implementation(libs.androidx.compose.ui.tooling.preview) implementation(compose.components.resources) } } diff --git a/feature/starred/presentation/src/commonMain/kotlin/zed/rainxch/starred/presentation/StarredReposRoot.kt b/feature/starred/presentation/src/commonMain/kotlin/zed/rainxch/starred/presentation/StarredReposRoot.kt index 44a480dd4..88b8d833a 100644 --- a/feature/starred/presentation/src/commonMain/kotlin/zed/rainxch/starred/presentation/StarredReposRoot.kt +++ b/feature/starred/presentation/src/commonMain/kotlin/zed/rainxch/starred/presentation/StarredReposRoot.kt @@ -46,7 +46,7 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import zed.rainxch.githubstore.core.presentation.res.* import kotlinx.collections.immutable.persistentListOf import org.jetbrains.compose.resources.stringResource -import org.jetbrains.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.Preview import org.koin.compose.viewmodel.koinViewModel import zed.rainxch.core.presentation.theme.GithubStoreTheme import zed.rainxch.starred.presentation.components.StarredRepositoryItem diff --git a/feature/starred/presentation/src/commonMain/kotlin/zed/rainxch/starred/presentation/components/StarredRepositoryItem.kt b/feature/starred/presentation/src/commonMain/kotlin/zed/rainxch/starred/presentation/components/StarredRepositoryItem.kt index 14fd4d1d4..914fd2ec3 100644 --- a/feature/starred/presentation/src/commonMain/kotlin/zed/rainxch/starred/presentation/components/StarredRepositoryItem.kt +++ b/feature/starred/presentation/src/commonMain/kotlin/zed/rainxch/starred/presentation/components/StarredRepositoryItem.kt @@ -41,7 +41,7 @@ import com.skydoves.landscapist.ImageOptions import com.skydoves.landscapist.coil3.CoilImage import zed.rainxch.githubstore.core.presentation.res.* import org.jetbrains.compose.resources.stringResource -import org.jetbrains.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.Preview import zed.rainxch.core.presentation.theme.GithubStoreTheme import zed.rainxch.core.presentation.utils.formatCount import zed.rainxch.starred.presentation.model.StarredRepositoryUi diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 44a0c4e01..7800a76d3 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,16 +2,16 @@ agp = "8.13.1" composeBom = "2025.07.00" kermit = "2.0.8" -kotlin = "2.3.0" -ksp = "2.2.0-2.0.2" +kotlin = "2.3.10" +ksp = "2.3.5" google-services = "4.4.3" androidDesugarJdkLibs = "2.1.5" -androidTools = "31.12.0" +androidTools = "32.0.1" # Compose -compose-hot-reload = "1.0.0-beta04" -compose-multiplatform = "1.9.0-beta01" +compose-hot-reload = "1.0.0" +compose-multiplatform = "1.10.1" # Maintain compose multiplatform version aligned with navigation, cache error could happen compose-lifecycle = "2.9.1" navigation-compose = "2.9.1" @@ -20,41 +20,42 @@ material-icons = "1.7.3" compose-gradle-plugin = "1.10.0" # AndroidX -androidx-activity = "1.10.1" -androidx-core = "1.16.0" +androidx-activity = "1.12.4" +androidx-core = "1.17.0" androidx-lifecycle = "2.9.0" androidx-test-ext = "1.2.1" androidx-runner = "1.6.2" androidx-test-core = "1.7.0" appcompatVersion = "1.7.1" -core-splashscreen = "1.0.1" +core-splashscreen = "1.2.0" # Kotlinx kotlinx-coroutines = "1.10.2" -kotlinx-serialization = "1.9.0" +kotlinx-serialization = "1.10.0" kotlinx-datetime = "0.7.1" kotlinx-collections-immutable = "0.4.0" # Third party -koin = "4.1.0" -ktor = "3.2.3" -room = "2.7.2" -sqlite = "2.5.2" -datastore = "1.1.7" +koin = "4.1.1" +ktor = "3.4.0" +room = "2.8.4" +sqlite = "2.6.2" +datastore = "1.2.0" firebase-bom = "34.0.0" adaptive = "1.2.0-alpha04" compose-jetbrains = "1.8.2" compose-jetbrains-material-you = "1.9.0-alpha04" -jetbrains-savedstate = "1.3.1" +jetbrains-savedstate = "1.4.0" coil = "3.3.0" coil-network = "3.3.0" -moko = "0.19.1" +moko = "0.20.1" buildkonfig = "0.17.1" -markdownRenderer = "0.39.1" +markdownRenderer = "0.39.2" liquid = "1.1.1" -landscapist = "2.9.1" +landscapist = "2.9.5" jsystemthemedetector = "3.9.1" -work = "2.10.1" +work = "2.11.1" +resources="1.10.1" projectApplicationId = "zed.rainxch.githubstore" projectVersionName = "1.6.0" @@ -63,17 +64,11 @@ projectTargetSdkVersion = "36" projectCompileSdkVersion = "36" projectVersionCode = "11" -# Desktop Version -desktopPackageName = "GitHub-Store" -desktopPackageVersion = "1.5.1" - [libraries] # Kotlin androidx-compose-bom = { module = "androidx.compose:compose-bom", version.ref = "composeBom" } androidx-lifecycle-runtime-ktx = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "compose-lifecycle" } androidx-material3 = { module = "androidx.compose.material3:material3" } -androidx-ui = { module = "androidx.compose.ui:ui" } -kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" } kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" } # AndroidX Core @@ -85,8 +80,6 @@ jetbrains-compose-viewmodel = { module = "org.jetbrains.androidx.lifecycle:lifec koin-core-viewmodel = { group = "io.insert-koin", name = "koin-core-viewmodel", version.ref = "koin" } core-splashscreen = { group = "androidx.core", name = "core-splashscreen", version.ref = "core-splashscreen" } -androidx-test-core = { module = "androidx.test:core", version.ref = "androidx-test-core" } - # Kotlinx kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinx-coroutines" } kotlinx-coroutines-swing = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-swing", version.ref = "kotlinx-coroutines" } @@ -95,7 +88,6 @@ kotlinx-datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version. kotlinx-collections-immutable = { module = "org.jetbrains.kotlinx:kotlinx-collections-immutable", version.ref = "kotlinx-collections-immutable" } # Compose -jetbrains-compose-backhandler = { module = "org.jetbrains.compose.ui:ui-backhandler", version.ref = "compose-multiplatform" } jetbrains-compose-navigation = { module = "org.jetbrains.androidx.navigation:navigation-compose", version.ref = "navigation-compose" } # Koin @@ -112,7 +104,6 @@ jsystemthemedetector = { module = "com.github.Dansoftowner:jSystemThemeDetector" ktor-client-core = { module = "io.ktor:ktor-client-core", version.ref = "ktor" } ktor-client-okhttp = { module = "io.ktor:ktor-client-okhttp", version.ref = "ktor" } ktor-client-cio = { module = "io.ktor:ktor-client-cio", version.ref = "ktor" } -ktor-client-darwin = { module = "io.ktor:ktor-client-darwin", version.ref = "ktor" } ktor-client-content-negotiation = { module = "io.ktor:ktor-client-content-negotiation", version.ref = "ktor" } ktor-client-logging = { module = "io.ktor:ktor-client-logging", version.ref = "ktor" } ktor-client-auth = { module = "io.ktor:ktor-client-auth", version.ref = "ktor" } @@ -132,10 +123,6 @@ androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "room" } sqlite-bundled = { module = "androidx.sqlite:sqlite-bundled", version.ref = "sqlite" } -# Firebase -firebase-bom = { module = "com.google.firebase:firebase-bom", version.ref = "firebase-bom" } -firebase-messaging = { module = "com.google.firebase:firebase-messaging" } - # Image loading landscapist-image = { module = "com.github.skydoves:landscapist-coil3", version.ref = "landscapist" } landscapist-core = { module = "com.github.skydoves:landscapist-core", version.ref = "landscapist" } @@ -151,14 +138,14 @@ android-tools-common = { group = "com.android.tools", name = "common", version.r compose-gradlePlugin = { group = "org.jetbrains.kotlin", name = "compose-compiler-gradle-plugin", version.ref = "kotlin" } kotlin-gradlePlugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } androidx-room-gradle-plugin = { module = "androidx.room:room-gradle-plugin", version.ref = "room" } -ksp-gradlePlugin = { group = "com.google.devtools.ksp", name = "com.google.devtools.ksp.gradle.plugin", version.ref = "ksp" } buildkonfig-gradlePlugin = { group = "com.codingfeline.buildkonfig", name = "buildkonfig-gradle-plugin", version.ref = "buildkonfig" } buildkonfig-compiler = { group = "com.codingfeline.buildkonfig", name = "buildkonfig-compiler", version.ref = "buildkonfig" } touchlab-kermit = { module = "co.touchlab:kermit", version.ref = "kermit" } -androidx-compose-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" } +androidx-compose-resources = { group = "org.jetbrains.compose.components", name = "components-resources", version.ref="resources" } +androidx-compose-ui-tooling-preview = { group = "org.jetbrains.compose.ui", name = "ui-tooling-preview", version.ref="resources" } androidx-compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" } koin-bom = { group = "io.insert-koin", name = "koin-bom", version.ref = "koin" } @@ -187,8 +174,6 @@ liquid = { module = "io.github.fletchmckee.liquid:liquid", version.ref = "liquid [plugins] -convention-android-application = { id = "zed.rainxch.convention.android.application", version = "unspecified" } -convention-android-application-compose = { id = "zed.rainxch.convention.android.application.compose", version = "unspecified" } convention-cmp-application = { id = "zed.rainxch.convention.cmp.application", version = "unspecified" } convention-kmp-library = { id = "zed.rainxch.convention.kmp.library", version = "unspecified" } convention-cmp-library = { id = "zed.rainxch.convention.cmp.library", version = "unspecified" } @@ -204,7 +189,6 @@ android-kotlin-multiplatform-library = { id = "com.android.kotlin.multiplatform. # Kotlin kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } -kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } # Compose @@ -215,7 +199,6 @@ compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = " # Build tools ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } room = { id = "androidx.room", version.ref = "room" } -google-services = { id = "com.google.gms.google-services", version.ref = "google-services" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } buildkonfig = { id = "com.codingfeline.buildkonfig", version.ref = "buildkonfig" } From 017725746de89f14cc2346ef4a00c084d0a1401a Mon Sep 17 00:00:00 2001 From: rainxchzed Date: Sat, 28 Feb 2026 12:31:44 +0500 Subject: [PATCH 2/2] chore(deps): update dependencies and remove unused libraries This commit updates several core dependencies, including Gradle Build Tool, Compose Multiplatform, and Navigation Compose. It also cleans up the `libs.versions.toml` file by removing unused libraries and versions related to Firebase, Coil, and Material3 Adaptive. - **chore(deps)**: Updated `agp` to `8.13.2`. - **chore(deps)**: Updated `compose-lifecycle` to `2.9.6` and `navigation-compose` to `2.9.2`. - **chore(deps)**: Updated `compose-jetbrains` to `1.10.1` and `compose-jetbrains-material-you` to `1.11.0-alpha03`. - **chore(deps)**: Removed unused dependencies and versions for `google-services`, `firebase-bom`, `coil`, `androidx-core`, `androidx-test`, and `material3-adaptive`. - **chore(deps)**: Removed redundant library definitions for `androidx-appcompat`, `androidx-activity-ktx`, and `androidx-compose-resources`. --- gradle/libs.versions.toml | 34 +++++----------------------------- 1 file changed, 5 insertions(+), 29 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 7800a76d3..17556ae8e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,10 +1,9 @@ [versions] -agp = "8.13.1" +agp = "8.13.2" composeBom = "2025.07.00" kermit = "2.0.8" kotlin = "2.3.10" ksp = "2.3.5" -google-services = "4.4.3" androidDesugarJdkLibs = "2.1.5" androidTools = "32.0.1" @@ -12,21 +11,13 @@ androidTools = "32.0.1" # Compose compose-hot-reload = "1.0.0" compose-multiplatform = "1.10.1" -# Maintain compose multiplatform version aligned with navigation, cache error could happen -compose-lifecycle = "2.9.1" -navigation-compose = "2.9.1" +compose-lifecycle = "2.9.6" +navigation-compose = "2.9.2" jetbrains-core-bundle = "1.0.1" material-icons = "1.7.3" -compose-gradle-plugin = "1.10.0" # AndroidX androidx-activity = "1.12.4" -androidx-core = "1.17.0" -androidx-lifecycle = "2.9.0" -androidx-test-ext = "1.2.1" -androidx-runner = "1.6.2" -androidx-test-core = "1.7.0" -appcompatVersion = "1.7.1" core-splashscreen = "1.2.0" # Kotlinx @@ -41,13 +32,9 @@ ktor = "3.4.0" room = "2.8.4" sqlite = "2.6.2" datastore = "1.2.0" -firebase-bom = "34.0.0" -adaptive = "1.2.0-alpha04" -compose-jetbrains = "1.8.2" -compose-jetbrains-material-you = "1.9.0-alpha04" +compose-jetbrains = "1.10.1" +compose-jetbrains-material-you = "1.11.0-alpha03" jetbrains-savedstate = "1.4.0" -coil = "3.3.0" -coil-network = "3.3.0" moko = "0.20.1" buildkonfig = "0.17.1" markdownRenderer = "0.39.2" @@ -67,15 +54,10 @@ projectVersionCode = "11" [libraries] # Kotlin androidx-compose-bom = { module = "androidx.compose:compose-bom", version.ref = "composeBom" } -androidx-lifecycle-runtime-ktx = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "compose-lifecycle" } -androidx-material3 = { module = "androidx.compose.material3:material3" } kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" } # AndroidX Core -androidx-core-ktx = { module = "androidx.core:core-ktx", version.ref = "androidx-core" } androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity" } -androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompatVersion" } -androidx-activity-ktx = { group = "androidx.activity", name = "activity-ktx", version.ref = "androidx-activity" } jetbrains-compose-viewmodel = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "compose-lifecycle" } koin-core-viewmodel = { group = "io.insert-koin", name = "koin-core-viewmodel", version.ref = "koin" } core-splashscreen = { group = "androidx.core", name = "core-splashscreen", version.ref = "core-splashscreen" } @@ -113,11 +95,6 @@ ktor-serialization-kotlinx-json = { module = "io.ktor:ktor-serialization-kotlinx datastore = { module = "androidx.datastore:datastore", version.ref = "datastore" } datastore-preferences = { module = "androidx.datastore:datastore-preferences", version.ref = "datastore" } -# Material3 Adaptive -material3-adaptive = { module = "org.jetbrains.compose.material3.adaptive:adaptive", version.ref = "adaptive" } -material3-adaptive-layout = { module = "org.jetbrains.compose.material3.adaptive:adaptive-layout", version.ref = "adaptive" } -material3-adaptive-navigation = { module = "org.jetbrains.compose.material3.adaptive:adaptive-navigation", version.ref = "adaptive" } - # Room androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" } androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "room" } @@ -144,7 +121,6 @@ buildkonfig-compiler = { group = "com.codingfeline.buildkonfig", name = "buildko touchlab-kermit = { module = "co.touchlab:kermit", version.ref = "kermit" } -androidx-compose-resources = { group = "org.jetbrains.compose.components", name = "components-resources", version.ref="resources" } androidx-compose-ui-tooling-preview = { group = "org.jetbrains.compose.ui", name = "ui-tooling-preview", version.ref="resources" } androidx-compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" }