From 4e2686f07da870ae6b63fe15ff01487004bc7603 Mon Sep 17 00:00:00 2001 From: Vasilis Giannakopoulos Date: Mon, 7 Sep 2026 11:38:13 +0000 Subject: [PATCH 01/12] Add XeniaCloud unsigned CI build workflow --- .github/workflows/xenia-ci.yml | 38 ++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 .github/workflows/xenia-ci.yml diff --git a/.github/workflows/xenia-ci.yml b/.github/workflows/xenia-ci.yml new file mode 100644 index 000000000000..d38c4e5d74ba --- /dev/null +++ b/.github/workflows/xenia-ci.yml @@ -0,0 +1,38 @@ +# SPDX-FileCopyrightText: 2026 XeniaCloud +# SPDX-License-Identifier: GPL-3.0-or-later + +name: "XeniaCloud CI" + +on: + workflow_dispatch: + push: + branches: [ xenia-rebrand ] + +permissions: read-all + +concurrency: + group: xenia-ci-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: set up JDK 21 + uses: actions/setup-java@v4 + with: + distribution: "temurin" + java-version: 21 + - name: Build Generic debug (unsigned) + run: | + echo "org.gradle.jvmargs=-Xmx6g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -XX:+UseParallelGC -XX:MaxMetaspaceSize=1g" >> gradle.properties + echo "org.gradle.caching=true" >> gradle.properties + echo "org.gradle.parallel=true" >> gradle.properties + ./gradlew assembleGenericDebug + - name: Upload unsigned APK + uses: actions/upload-artifact@v4 + with: + name: app-generic-debug + path: app/build/outputs/apk/generic/debug/*.apk + retention-days: 90 From 40518693b74eb0ecc2ac99ed481fbf82695f4ead Mon Sep 17 00:00:00 2001 From: Vasilis Giannakopoulos Date: Tue, 8 Sep 2026 13:32:11 +0000 Subject: [PATCH 02/12] XNT-54: rebrand app name, launcher icon, and splash color to Xenia Files Adapts the canonical Xenia navy gradient (#001233/#002266/#003399) used by the Desktop/Notes rebrands (XNT-44/45/46/34) in place of Nextcloud's blue (#0082C9/#1CAFFF/#007cc2), applied to: - adaptive icon foreground: the "files" glyph is the literal trademarked Nextcloud cloud logo (SPDX LicenseRef-NextcloudTrademarks) - replaced with the Xenia cloud glyph (from nextcloud-desktop's "Xenia Desktop-icon.svg", inkscape:label="files"), not just recolored - adaptive icon background gradient - legacy pre-API26 launcher PNGs (mdpi-xxxhdpi) + ic_launcher-web(-round).png, regenerated from the same shared-geometry SVG as the VectorDrawable so the raster and vector assets can't diverge - splash screen logo (nextcloud_splash_logo.xml) - same glyph, rescaled - splash screen background + primary/primary_dark/color_accent colors (setup.xml) - single-color picks from the 3-stop gradient, same convention as XNT-34's defaultBrand - app_name (setup.xml) - this app has no app_name_long; app_name IS the launcher-visible string (AndroidManifest already references it via @string/app_name, no hardcoded label to change) Deliberately NOT changed: - applicationId / no resValue app_name pattern exists in build.gradle.kts to touch - changing applicationId would break account_type/authority provider identifiers elsewhere in setup.xml and has no precedent in the sibling notes-android/notes-ios rebrands - qa/versionDev flavor icon overrides (separate source sets, not part of the CI-verified assembleGenericDebug build path) - deeper "Nextcloud" strings (ecosystem app names, server product name, placeholders, interop URL schemes) - out of scope for this surface-level rebrand per the ticket REUSE.toml: carved the touched main-flavor PNG paths out of the blanket Nextcloud-trademark annotation into a new XeniaCloud-attributed block (qa/versionDev stay covered by the original block, untouched). `reuse lint` passes clean. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01JCBWnbTpV5Cksc3s7ZLX1M --- REUSE.toml | 8 ++++++- app/src/main/ic_launcher-web-round.png | Bin 45224 -> 24159 bytes app/src/main/ic_launcher-web.png | Bin 23227 -> 26889 bytes .../res/drawable/ic_launcher_background.xml | 8 +++++-- .../res/drawable/ic_launcher_foreground.xml | 16 +++++++------ .../res/drawable/nextcloud_splash_logo.xml | 21 +++++++++--------- app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 4925 -> 2174 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 3109 -> 1303 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 6843 -> 3015 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 10316 -> 4631 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 14780 -> 6908 bytes app/src/main/res/values/setup.xml | 9 ++++---- 12 files changed, 38 insertions(+), 24 deletions(-) diff --git a/REUSE.toml b/REUSE.toml index 1fda7dfdbb65..2e07b9f220b2 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -36,7 +36,7 @@ SPDX-FileCopyrightText = "2026 Nextcloud GmbH and Nextcloud contributors" SPDX-License-Identifier = "AGPL-3.0-or-later" [[annotations]] -path = ["app/src/**/res/mipmap-**dpi/ic_launcher.png", "app/src/**/ic_launcher-web.png", "src/**/fastlane/metadata/en-US/images/*.png", "src/generic/fastlane/metadata/android/en-US/images/icon.png", "src/versionDev/fastlane/metadata/android/en-US/images/icon.png", "app/src/main/ic_launcher-web-round.png"] +path = ["app/src/qa/res/mipmap-**dpi/ic_launcher.png", "app/src/versionDev/res/mipmap-**dpi/ic_launcher.png", "app/src/qa/ic_launcher-web.png", "app/src/versionDev/ic_launcher-web.png", "src/**/fastlane/metadata/en-US/images/*.png", "src/generic/fastlane/metadata/android/en-US/images/icon.png", "src/versionDev/fastlane/metadata/android/en-US/images/icon.png"] precedence = "aggregate" SPDX-FileCopyrightText = "2017-2025 Nextcloud GmbH " SPDX-License-Identifier = "LicenseRef-NextcloudTrademarks" @@ -46,3 +46,9 @@ path = [".idea/**", "app/schemas/com.nextcloud.client.database.NextcloudDatabase precedence = "aggregate" SPDX-FileCopyrightText = "2016-2025 Nextcloud GmbH and Nextcloud contributors" SPDX-License-Identifier = "AGPL-3.0-or-later" + +[[annotations]] +path = ["app/src/main/res/mipmap-mdpi/ic_launcher.png", "app/src/main/res/mipmap-hdpi/ic_launcher.png", "app/src/main/res/mipmap-xhdpi/ic_launcher.png", "app/src/main/res/mipmap-xxhdpi/ic_launcher.png", "app/src/main/res/mipmap-xxxhdpi/ic_launcher.png", "app/src/main/ic_launcher-web.png", "app/src/main/ic_launcher-web-round.png"] +precedence = "aggregate" +SPDX-FileCopyrightText = "2026 XeniaCloud" +SPDX-License-Identifier = "AGPL-3.0-or-later" diff --git a/app/src/main/ic_launcher-web-round.png b/app/src/main/ic_launcher-web-round.png index dc58ff797add5b714237ed286c2c727dab41c7d9..233e0a6e1e679702f682f723781b947acab74500 100644 GIT binary patch literal 24159 zcmZs?cRbbq8$bL$$3e#|CtFAyGBPu=PEqz~knKpx-j&Q#%FYVmAS0u)3fUZ44V#c; z&+NUqUq_$M=lA{H_x+b1o%25L>vfIi^}NO_SXWzxnu3J_f*@)&RplEH1PA|wLnp|< zpLLI(T?jHmt0`Z;<&m^t`l!nE>W|-B)vundpF9DBbDz9IncRU4KyzM%bCDsU!r}al zaIVz!*C8P|E-dM-5I%nXMp{z)(+4xv&lo&;-wZ89RCx^xWw#`W7u|1HusiU*GbCeY zwcxf`Rn#}1;AQp#f`Skax`XkCar(xds`z=~B7}Sq5mxPv|lqle%XP)y|-8V|v zSd=}}&JQ_L?cac5m~$V59I$xDpmE0Sk#56`D^w)7rvzbIDE?0C%ehs$BHYh%388p6 zBm(!n4slZ3r6id&F}~s}-{9(gdKSVdk1&!zECy?D4xb70J$~NN{q9Fc<(7op7KFn> zIR1=;<(D`*A8#Yl4eSYA2%Ll?ho)EV1J9`C!wc%6#=;tu0Z`5fkq+2zYmMDx!hDiW zsBwD~LkpD3#59Pzkh_xbnCMIa8IN^G-WUJu34(`4HcJd6x-fgCl!a3Pf!_gvKR9lXg9>`ipVl%PO8&dK|u(n z9Grdb%K5dWDGd!iyH~K*PgbzWZtNUGJ-n0g#6?76#rOYXpm4w~-A>YD3-aXbEilMv)ouHz^a8en) z^yL+K9|q2)gC`0KF}Xv+S#0LFYgaTf8A?<1^VrzKAi@bMNrEEyZ)YWrtGkgA*TL7{ z$0^Cj!wBLc1jtWSb3Zv~<*cw4@&Cb7X}$8Vo84HJ;Z%YI`7E~S!-B=D3A%_j{zg;Q z#f%ROVbBN@lP*rSnCDPmdB0<_W2~1bE~7e-%Naq%oho+&fLbDPdEg9fJeZ!^&NrmH>)bJ%hipo5ca?B1x!Da-MMruBAWK z8o-~{n3t^=Y8;^kWKe~Xk#)T2X&4UqVx=T%=W_hAmszCeAa{ra&P4drY*a&Nj^tgq z%m*w+REF6bqb+Zmb{||2@Hn!8Xg`6|iYI;^djRoiu3ID!*HaioJaDnX3DNfxz(DT{ z<6f}8gT<05?7zFSD!OYv=5NT8K{SVuW3?|$7>4HwZMChn)_&f}Elw&CR@b^tpgy9I z?fR70Qg09fO?lq%9FcJ=#y8CTRYzkUISM*Wt}w%oUF|#wR%{|im6|;R`iSiv>!r*g zJ(tS9jVsAW*k>i!^C_=?Nc>_B>hcL*?(euh%T*kCy|XZ-HM%ET2`y*seNp zb^){gryipcli4~1f?NUD@kQ&9T2%r@bpL<#aHq!~d4ghaKhj`9B(&96dB3(QE76GK zSy{x#f4s8}p-SrLeInP>;5)~v&0+J&3x0KKBlYL6{Aba!jY45gqmcl&jEg%`SO>WM z_GfnOv40-dGYmDRMPmeazANLu-y`06ECxB(8|@0<%7U z#`8o~3;KUsHU{o!#>@n~8wO zKqTTBL|}C|yguTkg1%F&n~@gotkfr<`~UGs5!j6`@Jvx z=dAINFhNW0isPyirU)33(n~t{AMZRCB#1#1!|1GZNpyB(pW4qMs1>mtqV%)=b4Y#e zzk-@+8i~Lh2(8wQZ~R-O_De25MHY@2-zItI2>&fj>;rN*g&EQE^H3P z6!Fks93x_I_d6meL8s~ z*(dD07lDP3TW8cEo^=u-;O}?zub9(|!(uD?KTQlnni!fqIADDLf*&~6)eZi;aDKNm ziIvp#+xsCGVKDF$YLb6L`Z|F1MsUL0_kcOeXuea&Ov;^?~ z<3#QL`lRomKf;BwJEdHss}^uq>rYBqT(p!+|KI^Jx6~oFaeqR;Yadeg-y*@n$#N8S z!}l%DUMu+g&zHFE&P&2LWt98trOI<=i$TxSLzq|zp&jkH@lD`b@A!I zOFxni2@r|G_h<|PjpOSIyh$Xh|0aQ1aoD>HXqg=;&N_s2$hnnbeH8W!{g!j||0HJM zFLbAuU^CC!BymWNvGM$?DsPmb3>DstI&fku7&E*$?TDSv(JYR_V(7qDw< z?D6?=aq1vc3YkNs|I1$S>s)425Z}^!}+4qS4RUaW_gFXO`Koh!1G0Vb#h%Yfbgz56W zyo0Wj{z}pUCr_M8#Hq$X>M_CoK1zgjXTpuDFHR@Q!t0g~ zZ7J>fuV3#HwwR@FOS%hP;GlwP4`cap{p40OJbZLOwJ;`d|x$2av-1P)0BDe7Vv{PMP2y)~MUgp86E>V#decS$r2L0Y6b=lE3!DxUqF9O>X?@-)@q#Jent|abN(gACPq)+L7xR6>IMU3M~zI!ZK^~`a#vf6bLp%?gDMK(*BHnf zq@&h<`U%8ajh1U!{$k`zqZ^S9moy^f|6erern^BpLwN>+dLUMoeeDf=kjB^Xrn$=- zXB4e?bEHSb=udb<=e0E#VJeS}in{vG%I(VvSu@n^JsJW+wGuDPA9BAqBcIe1&aABw z!J@A8ibb=!`XbB4J8#jCMn5;M_sXsX1_#73U`hkel>svV+gl;+A}cDA}njBnpjTii!=C~C`4Nk`{}{%h&* zUQ^4fMs};K5)Zyn6z?{;6t7ZPTJPLbx!$_H;PBJKX$bCV)i$@@Q&iCDA5n|hlD`zl z?!8Z1u~#=e6WcfZA>?PGzf_0lF$nOd@upIol*93St);&hj}vsX`HK`p+SE5%Z!;f1 zTD*|;zMFwnJH1shUKyWTss2k-0g>V{MZdfCyJ&X!XzTRvhkfJj&DA>H=~qMXqWH5- zfmITqnxnAW>7}%XBUm7=cpRIfE#s4D^B#aMOG~2?IR&pi{kDHF@Obx9@j;wj*R{D^ zO?mlIKl!5NCS$i*r&7ghQU~J}yY;PGof$gSn%5O38vpSo0m9p27?Jn(3>*rxCTd|Q zH~@Q^I!E(}Hq=6iyqo=3fr{5c8Ej#<=B#sg4rA@<88%>B`w~uh(rB z&GEWi33~chL8?zfp0tO8-0`?*m%Hq}_He=N-XG8rIyF1{nz4gi0?mMz+a+v-jfAU5 z|Hm3(xsCbv>)#dk125F9ava1y;Xa|k$Ja>-BAoJ#o*GFc9+YdX2$80!$I<|Gi7w}X zD%>x-?!HW3nwmk=ABWB>4!bJ1GXAMDC3Wd=yBx|l{v$@n0NeiJu+Ok-29c^EV& zoCL#Nk8oeMfD3Aqhh)59XhPW6jM}az)IWSv{b&G3wy|N99mwNf_Dw=O4IjErMjXe)i4q!GwpyzVei< zwj;^qYqQY;M{2{nokv~s(`IvuA%>ZMc^88xOcR48!LmMmf#mB4yp8{_i|lFRw+|jw#yr%%SRReF9X>bChn; zgN1)A0}!cBpcjD|JBcOKc#dffJS;lT;6tLU>^5wSnKpk&nS9{SI{QOvh{uI?hwqr5 zi_VGSp|fPEu?nrr9M#$M_Q|V5xbnKaA_xKtNVV$ z!1DlF);lP+NPjPO-xP(%Q$N=G{1oGK!WUp1%Ezom0maz?ot%|~g#ot-Z#_=uR((tQ ztU6g7z8jdtOZTpZKEzS~*|=o7`%8A_rul(G(=g{uU>UjG-)iTq5kEEI+uo0A-sDtt zsy{6X>vBmK5FYQvWecU5IbOfW@RW;6`*xlsBRj8#-dJkahWNUT%l}l4i92p}sfB(; ztUCu$5ysvhT`jw&WxprH2?>SV|+Iii>#GUATWdi#9uOU5LloX*GCt+~Tczoun9 zBsQo%$HqPuQgPuqKWJ`((@t9B_RSu4yYi}$$F z(Px$q;D_8uQ(^7mI^$?f@pe9b*b}SKrvk9=Va(cnrmk#0lj2_Ib|?ukYU4AX%+Kg# zvwcvK6#bUKUV6;GLMmBCYT+Fh_k_J7a3;SVc>c@>HYxyP)k#*po$PlyuVVEh z!vTrOcH`1gdVTG(fam?iefQ{ILmtUvkbB@PcN+%RgIJd3)+81cnm{^@CnntyLiMNA zTJsGqKWJ?IV zcpDzQQ)2W&Tfz1IrM)+_W0?w3$0n){uXyHI%WG*4S;eXYhlSfb&V_sALkP2Ohe@&m zM9(ijDu%$>Q6>Rc<2aLCPK2*-Tl1_P?~?xn$0>a#sSwASb%Oz~<}k&I2Kn!yuKMS7 zHP%XGI{9h+bSh#u&y>O6liS+I;-0!NUA)SJI~PvGJH2TRt;#lozVtJk$WR8Mtc)5D z9#ij0#cnkZl4Q`mstziV(}Q_zLQFC#=%2!UWpsd6;-XD9L5i)ND}F8A6vm?7cQk)f z^)M=82#wh5Uc zolmQb**rS9P_%xcVz#TjgUqhLzLS^pOt#N-#QG#VCUlk*bFjF1^UguIY#YQ9QS6R`cI-O?qR{|Huy4 zizZlhi7uK|B2`DShwuQ&W}=j4177vmhmGrp9isZsS_0{I##@5ZG<8a(1d*l+(!Q+W^uZiWXwB#59k{1w(1pFW(c8Vlpdx(7tGKk0V)uOGt zo$BJ<@U~Jg=KcKcpFV!8BWGsfNlJ@4$cwT49d+w?N}5(*2a%{o60_@9kncdrTUPw- zavL7Xkbr55z88lnyodenw|HMNn{-prJ`HJIzdC-cvqVukEP(b*l9qDtQ1WpAu394o znQ>M-wWu4KxbwBI?FQvF34}Tf`a(S-_tQ7&im|GUw*^wm!`1Momh~mP9X$8_;+2Wn zdUA!zZ}_SiD5L`SW}KOEvu|g*5gwYCntt0!!I1ks7bfCyXZ`nPLe|2wK3E1A&p?SE zj>sj`b=ahn$F%su{}y3oc18ZIB$1Z@5za%Nh*6C$v(-8d;7AL2joSdM_-h49XqWsQ z&P}0K%AvfI8(2N*uhrA~rgA68r(vLk>kp`qomg2cc*Y7zz17 z(}&Nl8ME^*w@R$ZZ=D%$3Qu)YD1G$(RK3f)i)ptkNKD<0n5&}oaLZ2c;>i$?+ZaU- zH15Wdu`T1_SlLLfzxDc;GzJFLfVL{!KV{mkK__B{H07S3rcoS7D` zdE)+{PZ&D&Zp&NKvRX!ten+2yy#rR`bxMdtdTHGUHAKf`cSUs68W4OiYuUOH$P>bf z>sj^V^-hGQx*jq}@uLXd!*Y0BW&lsG-xVy5s!dVAFq=1lY zU+8s#h}$cB*0?)l*v~DyxSGft#7W(Gs|RQ-&aWwZGwb@f!WCL)e?u?rj2GGYF|NHo za>b&%T&+RvF=h0AL=00-fsx-J#|JEy-O-$!wmZgjg`nkP^-!RsktqYY%v9vEC7Otf7R`PbHM|7U>TGI)vEd8} zPNq%Tk{7ugtf9NDg!QX5ouj3b-!(3mC;C(ZH~%mlD-1+VqRp1wZ2G-_zd<4Dr3 zbBZ^QbF(O+?Xz z+{iISn(i!DO#;lz{<1~{yJH#*YIIp{X*D{$hRb+^aC1O8!=(+E%olIWW7^(-!N~IqVIAJ>j+MloOTBb|C6T}e;a z@Y?a^fVtc&-Mz*?(#;{hh;xcb>kn?W{%eenKZ^RvN0yBtG^1r*$!zHfMst+r^refi z#dk1pG}+J^h(IlA?8lW?I~9Vw&!xrJc8rhuWjwHEbCQ@laH^dL!!8D{8Dg-iEeBmE z;f1Xyt%AES=uv#hba9M09SC5CL$fEWd3;ObPzx2|S+#vuFT-hArbj%E#_`yA#g?y_ z=eor-A_`|nph1h?lsFx z5_TgFA=iZM=~?iZ19W#$*51047uv2jlg%%k-~f0ie%!Q}EMOTq(!zZ*aY17+Y}XSZ zDHr>)Hf5IDd26E0I3A|dY!YZY(Wh_!?NALy<1)6O2J3(A<&VdC?nR`G_gl<85CqE( zwf%Shd@Ej`u^=H=MxRD$(-f?-&M>L3*Q^UhIsoUg5jXu5xnTpBcnVNDhQZdS03U!I0AG zD8lI?a+CNOPaMc)EjyUtlq-YO2c|SJF7IbAum@dG;*ZXez@%1@f&u2pEmRi$g zBm15ID6@!qpAUTqjc^z{MX!>-Rd(F(O006`Fts+UL5k?EzK=l`P6$ZCjO`_4UXwvB z27Y-+3GbPaiI;qx;(*LZ9vRJ&VH@S=z8;WEz#KH-ushZnWVs>kt}iMhzJn_FEEU8_ z>r*XX+}RV`g^U#zl2soniwHcK?jYWQ0@+zYKI8;po zjTY{Zq1M#?)Ax5h&EF!%@SHbDk%|Aw9Srkc4a=F<8*1Z1#V{N#YkoCdBmQ5us9jAH zzXVfl2^LL+Xhr|;wDFZUTRQ=}JoErM;s2n|AnnK;{;wzS%nukv+C%z-=c*Y$0B3-Q zcOgU??QP&$`B5L5D4-`FHYXTSxzVWTlG+V4J_{G=g z*L4oE4y=LXj@8p1hyPquy43E&I@qW3zTi?yuZaU`qMVCdUh%$xkwv*^@z}Pg z#KV>oL^HC;c%L`&Tz9TNgmF?Gx-Fbv->h7lc~Lsm#p+b8B3!e|(E4~*=(wY_zE;p# zuT!H+D}Tr(zct26@**sSI;(b?tTwO-G;4zlg)ii>kwkW@r6W202~@kECO@e)Tf@KT zuu-G1J=MRwI{W%G00PEJ{&E)6GWNSTaJO2|ruBz@>X4a=-%~gQzw>28fkmt=B98f` zgZ{Ahp8Rh6L3>B?mV(x!L2Tm5hMMvfy5pfi2AhS3#KpUuX2!RI#RJ#!*3QYuV9 zBn4{ZY&cpg0vRuDVR-3o?N(=Qb!pc5_ZOVfXdw&>!v!PFzTsWYgMF#e?t+3N#l%|d z_3wr@UytWe87Y7VpS!DT&DY~}%CT+oV`JwVilDSqWX=!U;_mg0nRx$)>AxTKpRn73 zMotk8N2~&8KbsGIy4wz&N>k*guvy8^ z8YPgWChQA66&bBZOz4s}bhevXu2Q%!zM{!W9xi3Z1XhB z_Og(}^-^-zcu}-4afBn}Q^Ew*I}Fkc(ZBYP9`Rb6Gd&WS?^9~o;BqM&cP#(P;@37P@4_pz)kKK{ zzW@SjJ>YojFNE1tOU-=9@?;)g4LyXQ$bf@~zatk956%}KFx(U~xbX5-!(HYKeNYwc zbCqTw8g1dLgQ(j8G*Xz*+6HlsHDjUfV^Nhibs`qJfEnmSE%vP|R<7mnX?j{CEs z#e-t!ZWsi#>$-f^NY@YR`-C95Sxf)uJ^9Zdw2d3KO^VwP;CIDBDR}0q%7U7?{3O(} z3rmH2Y(AH=o)Uf4v9Q(BhHWf+OKpx4%zSWUcriVn0)xBZJvNFdTK*(rnTvR{7D&ae zTr0gKy*n_i@DwPJz7CLx*(nXh%i@oW6#ePPsr1*tnwo$Gk`r^@EE;K@p(+ZS++~-! z!)Lme@zUl<{?o@9aB z_5IoDKKJ8(*IsFBA`F63nX9Yi-4AE?x@KPw^7!+JJVvU=UAN1enY4#fVd3gdH11!7 z?BQ|^CcJYzPeARUC3QF^VdS@eLZO1lHxA?Rj!{}Tnj9&O?iziqx&f7+zLoJJFhotnirRW*;P z)RM0^g@eQcJxWsudKVz<_lLy2;qWo5|0G&i#^{upv0@w(j{YI5b<|^dI!#QfG)p$+ z66G>sL2!D#XJ&Qjj83@&=HDp45@42*zk=<(}UR!;L z?#pFO42AhWmeANXm)U^^yr#8;+#x7OjED-1!wT`e#+J|7vQj7RWzrkovFf!ogfH8` z*|=-f6CowvWb57*hnb@0d52C#upq;ViH(4m|IjUQ z$=wgtOatr`Q8UC|F>lO~d8(f5WebSdxIw!jKNNOq1NiKdIK;r4gQmiku5+`2=89eE zXCP48p$k3=`fP|-ZXIz;Jr3>+*&YB}jOu|z6)Ub3#`wT|?`%)maAX26`e020LD&Gx z`&!vTQi(lBFIy%Wvokja!l=OmZJIcLWy7;55uc)x*%6=N`<=oNgp={~v~?df-0M!Q z89F@I75(b{&+>V?Y9}E|lE^NLEF@N&U<(@Re!Awu2P1YWH}c}P9ssd$V+Kwy=x6&$ zvP;>bVyoQS+a4Ep4I|=zT70g-J%ve6qr;Ks(W&0UDlG%Z%0n20t($$_pE*u?8SsAX zk733F34KZe^G5CGG9M)#W;CiPn&_hwcHR=bM~hKIMV1SvVr#FK2ctQ`;tsypv^GP9CPT;9{&uJ&@Ulr!4_#rO%`aze zw%Ka8gcl>s@jG~kTDHZBJ@xc!4})(tka&`FzoUfJts#y%@PKoK($;UTG>Q()o8X@b z`c-{aTWE}NzBp=x6Q*K+Tz)p6slY#101A_(0>i=AyZvEQ0SyiF>KaQWKWjlt2X6z9 zM>)Sik7Vq%q<*lxW(A&9)jlpVK)CTbFLgm$$cj0t8r2Y8FepA^;dwG2s z5Bel_=1hR-zAp2*vt+_&-QuedJl}IlZmfG6XsrCv#MQ^&)PxQPI3VbT$h|J<0nc$Y zGR;77k5=LdMXTc|pbX@fK}Nz!rKz`&7m7|tc<0Y>i>YMk40wbfOp{VxK043F<9RL* zxAnmii4$ER6@@YH!41a0$o$s%>9i$e)8BCxjB_ApyD?Cq@RZQSyB*OS61-p$+O?o{ z0S`Hp6J0f)CjsaC&9~C&9;mJ$oL?BrhtmskK6y__I?-0QjaJO?ds46gS8*-K4bE^E z4tmwv;-5_VK&J?T*yoGZ0v14>WTj#hQqVe#hs4W~d+?_XQLfT1=8z?oa`9exw>9YR zf>I2EJPMmP=ej@uZ2EVi)gK2ZXnbG6LmJ$QYG}@t(@s>C_N7r*!Ra7xCUILnhfj44 zi>NWHX_r?sK6V=uTXhB@1;t3F5zxjPu)uE!4S=I9-^tGF(^Po!vmBFm*DS(?0}#Ev zk_gL#65g)W@g~p;hM(tekJg7zL<{_O=ioZnm!$IQ5ohY2V_Wnjy@XsjyhQ7FcG$zCQd?P|c80jGi zBSymyeP*Xla99kJz1V}vLqDWuOIz`}neiqb@=wHp3Cra%RhgtR;Z$#`x%`rlI`dy3 z=1xSsy{T`#bG}#kys)U7%_Q*bawK0AAFyG=&B;B}N3FpOK0w50^+qq7A61=H?Vp!h zC8A7`6pSSS%0lF}A&S@fQtlMK1u|kFFv0BlgKB=j)<|rhh_#Ps;e__!Vb3(LcOmXB zQeuP7uHAA`D*p5ByCG4NCqjc!O=z}@nr2)t?>z&X?XFZ96(wN3BAM}_XDyEN?F~o6E@o5So<@~EV#G;TP@&jXX0_Ow@rGV0?awd@KWCh9hfE~%4&@~ z^dgmiPG^1#jeD$?`V2`N&VaGL#VPPwj6sZq65#dg@Q`QOhLDhA|gRLkt$2{c-P% zEE&;4Wg-t-mJj`|Ci0P@tuEwE02S5sB1Cvbg1}JYdOhf#LC|N*mM>{SifZ`eX4CYo zyx0R^M+mV<`DMQ)Gal!77+J^cXGjS|u}1 z(%6@8Q2e8T#*1PwO{75~GJbDJE>z)I8H-gr8i%JG(oe_5Gna$_JH!h(o8xp*%irvr z42gODBzr;CW*dQ)3w6&M#P|CKJVd!jDKa^*Zu|`Y7zs3Cq+JJuKgnw5co9;L{fS|G zr7tEts)b8I6>_5@ep*`R4 z&DRV1X3J#?3~Yg_p4E%HnduNwKvqb{lNk>&YhoP5&!cg|;k+rno$2yKACg;fZ+mmq zjp##D1B1kzFgJ*ZUqzKAXg$^>po+{3t$`s=GDIjI+)y|_&|se$`=0mFTgzZryqnVJ zVUohxT<*Rv2$9y$BzT-kibvZqZ7`6N+`C7Y5T9&wzUot8&GmDuJ7|n$KEVeD8f)^j za`!rct8ucWB&=Pk-t`- zyC`GR!$d%c(|e#&rxAigAlgFJ&)+wHbKAUm52z(FqLRZ~a+Gg+-oz$2Ma_-?F+GSG zPD6pw8n)@E&ybPJ9spc1UhsNF9Stp z0!2n|K{-+|o;y||u%oKAvz~j&TY|g5BqNPletv~V=832xByS+E>sw1C85Mz2>QgNx z=W*xjK1#&t5WYKHJM7R2umBQ1-0s^m@{Nvpvs>u8$XBPIekK_%u45na+r_P zq3(r%Ime3bbm9{VEj~`LgN03%OX1fN`7*huAR{t!l64z61-Cj8lOC7*`aPxKc|2P5-uIoo8HhB9eXJZb&j3pM|`4JBRzeX*?gGl@7# z;e(f?Acqh**zpH+2TO{wW_tMmO*h7^U&E(MHqO;S2Hbq!S|Z8#odo=r*SOG8rpjyY zAud3XA;q%gRpXqLn4IJEZB+2$h5!^7+>S@`l?f9bv+YCG{N5&s=m{J$SvE2!OZlvKN$ z9(J6o=3#{wVNW+nmG8kn?)f?mc~^{N_kpodPi z21PA|;=Gb;9I1pMPN&9 z$ttf8{^$r1vqgwy8`v!C6K?Th44xvA&w&!5%XN$}!$ipPlG1szM5L-iiuc$@^I^@> z{kfV3H=wEuE@MA$cj2AzHJefqT%yN#-g)7{8)jVo3tS^yK6`i#Jj(9!eIcS_vhNVz^4jS`B4iW%)4#WVntN(}tN^}vT4XfDkWR#bs~a)+ zpxtskkFwxH2hg@iGf~@LZVEd*o-=PiV_fghrF%(gXJrEyPG1#^HCNv36LA@;9;{h(N2`+i9}Y7 zDfVzlw(=Rndt5#VL7C2VnNr>NYIk^d9@jJ`#-FhP?HQis;~FCtxoi^h>MmRiFDxTE z-PmV6T;HArGONK1c%fk3@RDbk!h_y|xP4tGaEV0(=3-`?0<&HuDLgIwjlPH*JD?nn z+@3b2?fmfisOCAy1yE;qd#(B&+kp>gE{+oF_!FR3)>GoWN5RrSOj*i6r0TR)BJPsu zYAEZBz_ghK7>r?JSEhcs*+kU0WylEg>}OuTh{j-vX1E-@1)UZwV7>l40XJx+V5!>A z7+I&d;CCVOwTa71;_LJp_DLyiUT4(m9BpBm_LS2_V5iVlXVHYtP@J4IPXd%-#r~d) z0i9}QuBnpb&Ti^;P%F4g4yCFalv#`VOl*hFH2q@#!s~SrCSwxCI>XhYez^vwI!LaI zh8Dm;b}B53lHo$?LHIVy!C})cun7RAQWz9li=J^Ei1J@pD2^Cub;W<(7Nlp~D^>jYoIur=id3wf;wawm zz26NSZou_c8Zt;s^t%Y`Vadqkr}w3$bh;t0irKJ(VMH6AQ=!VxsCmG)P`W1xcDW$V zGfS<;nC4^`8PoOewf73;&t#t z=^?7Zx0Xba5?s=_sb!IMPE8;OX1&QrcuaR5u!FHL4iyu3!M*~`{>a1iMjgL+w2n!g z80e;$+*ujBWV$vjJ6r6QpGMB^6YlDFM0uMeCIL!cCYIQhFitTE*r(t1h{C3*U+yD! z&CP{d6J`9h#W8OQvfC^h7Z#{^3^v-%1c9$KwUpzyi1m(GaV-5>BPn3eFHaHe#CppVW=_3a%I z1y!-W-jjLj1FTC-pTOkSDc7bscpUs1@U9ya?KWl%K1o6E*44m6AMMZ^d;=3 zs0MuT8#cP;uZbMw*`Itcxu=WN=yoUVyK`W^jg*puXV&}sms8hOmWWt^?RFJ-;YuS|BV z9=9;6l6JVK_Y~>OrosyD6cI|zq)D)yFG^`EA<&W)u|?N`%gT@Htf4rc~zeo@=( zPR(@`Q)hL6dAo4~DO9mMpVT+Qar8LmaCK{McGq|@vpL1{YkG+=YNTw53tYs&85j81 zJ3>M6nm8dKa|)jD2n#nV2TM~n84q~7i>dXqH+oZ4Z}u5H?=`jK5|a0Pb}tFyWDRBP zn+?u3Pv2wrja&4ZFx;)(yWg$2=ow?Bc%%-O9eEaXPYn|aF0+BYItAMAW~_TLGZebW zEriUGJodFeQ)Xdj#G}#q65;4PxfK0`LP4RTbv_nZD{k;t75qhPtgq_=PkObrO^ zQOfVSD{pWq-^jBZIy50tz|kCcRwW!(IKzPEOt$L@J8uOryHQB5#+^x}&jx1s<(KrQ z$v(judbVb;xy+&z-SnZ4;=>Kp^2}pc_BkU>Tu`7sB~bkr`wQS^YDh*X7naR90g7-@ zWorgqTr%@6X@>i7@5ZziM2za8^1UM#EL!vMW7P2?p^31cmhRE()0>P+pxx_C5aqUE z^V++aOIjY?Ob)O&S9KqA}?uWmpG?vDI>|KaModfQ=el|IB0WKVYW!S~v7lQiaA zR%?*Bj+%Imq&n{BT`uZz51g^nk*EP%R$%5WI6UI)#aJle2Si4KIbAc~jmD}nZZ1>p zcB~qz3w_n9k^;+txWMdUm-(t;;wlJ;UE=;RX_(~-nzM}uCZz!>%Y298T%+R<>3ac? z<Phc7=(UN+nzOpnoX%XjvpV*EsD$z-jlNr%)MwiGecdjK*IA&2`NU}1C zJ42fbPXuhp?)8MZOr5tOi}m2go;T~F3Q_Hl&Nr5LJ0h)}hfp=7J8@Epwe>a+&P$E( zT>o*|d*~#yK1}cpj~+Z%l3c7sj>qBMH~R}|bSL@3^Sj|qqC@nNZPYiAs-qgaK7THq zG3EitVef{Gj?4I|7_~-$Yv1U>5EorqP2S{Y$Bkr3(iVn)tw~9AGwPE5l#lQ@^of=T zPu7RC?JKCUHVcX}O_4g8Kg!eRA=J}BngmR3ie=pTa*I7X=d7xy$EWLvFv}_d&SbnD z{EZ+|q$$$F2p6?p!5yj6X#pR+06Td~Xsf2er|*Lhx$ZOkJ8nU8k>)5*>5==>K5WLz z)ei6YzffNam)$Pc5|9h8)NcL+uA|8iBDeZUwcQ@}gMO(q9xdj)^Hz;f(*K)7lgDsU z+zky^)RISFas^5rh zU9Dzb>?YT-kydKd5-;+Z%2YU4uPEIi>jn&%f)5BCtkHOb`!@F==(V2!ZMOK&5-@#^)@4 zjr>=u_nt_H;Z^(Dn6OGoZ?yCrPQ%8T{BB4m&)LhQ-UUnBJoYp(BH=z8t>rR>ugBB& zbs7%Q7_RAjof|v^sPE45hAD}z~$zRm23K46$sXKCI}#9oprrQ^J(h7%2F=!U;j zGkb+t<#V|O-`9hJ#NI)lx}sWBgSZB7(F0vvW_wHA3>VxUveG3jzufFXu2^bgk0;@| z1!rsSycSwUx7@!~Jvj@3t6y?0sZ}yHk}#!;LgrhbRTPVZ#B;j#;B2mxx8ZVm+3Kv# zZD50LP;mhegj*QZA6P1cWY``qUccR;Kr>0CNUk-T=a*$?8FXLG{x)9GQ1sHbwkp!&Vbw z`hB)i^P$~DY&&=EZPW`(r@6O8to%>}*88Q!XzlWemvup-^c_NOlO%4i#Q=6BM!9zP*=(+b~Wp zBgbE!%ZC1a386gZ4K+BUF-8AIY>&xjPq2&+(Yi?3JZ*C6P{)v)cP-ugV*z&KaW2K3 z&u+ovt&WsgKw0%&Xkr@xhv(Fkq-D}$GGiSrVrv~Zm9jda8tHKM1WU6SKa9us^_v%# zy~j5i*rr zM?OA_rHU~BlK66i7*YcFxY z?_{9)+7iN#6ql1pq05ax&b?(Xue*OiXg_uCt>m#a;f=@KxHPvMfB#51jUO@%*ZJmYo62NVK4f(P=vc$~CZ0V0@y7z-TLAdpFBypMA8N2P zYYV_=d|z|Fu>7Qs8(q5j#RsN&;wI2GOR0ltkG3xGr}yf(X%N-m@~HDkl|L4())W~8t~sdXzf}K!>bUlBC=>7hzGGab#59A@#L$?~ZCpn!HDxMfQZA)d z8JFBb25q{Up$x(z3KOYVQCp%5wX2c4l0p%-2Bo&_HgwssN#FAhwfp?``TaXQ&&+$? zb3W&DZXZ_4C!BL|jju|4IiRh;6q!Aw+L}HUN?AM$F#8n`m?=NpvrVi`GE4h3E{{dG zTZ!<%QYV%eQc@P=!|lTlOZt*Sz4_g64p5g}QP4Z;H(Z0rBiXAd3-ERfIKcB`vP0%! ztp}gcKCjr5pLT^rt<)s~ZRpye7{uxTD`z9SEl%Qi+DxBcc8^$`R9*3Ae~AB3PZ>#K zrj|6+v(-qBo|_2Tg<2!uNde=NfzUJ1BxUnL*+B44ITMC6DhV~Mt4_N~!5zi;PBq79 z5dki1wI&RQJXvE4GOyzw5F7yuA)(oIa6I(<7$Gohee3U*ZNKEM&580-(?*`xG~e*^ zQiFX7s)C`H1KH67G2Dt-mj8}cv8dQQBEHRwB)jianpOqG=!_Fz2q|e5SgvrcO_tau`Fr5xSjQEWIlDNP;#IUU0>?9AeHvzU*3}#? znN_uEx0NA{~v4bY6cuGu*Y7cdGa3 z@F7&q6paJdGhB$c25bap=ak}ngMQsz+wH~?HG0D0N5N~svCD*?qT*ABu)}Hjoq6hc z616qe(ky)cZ>NVUUwqo;@}c>Id6WrJ$Rjs?q6ZHf{$S@JwrT9fcUG@5MRg834tZh^ z^2f`WqR(VUm|TD!$RH|ed{G4{ax+~VMQP+%iukHEMZ&y=DJbJp;ml3kW$B_y#46nlS+pB1U zn9*w@n*$_t%tAIDb>^4YB*N97jDaR-pneV=HrC;WK8_$v!H@_kO>xIpX2^{A8`u?; z2Sxi#O`b%8t7u#KE$S=%l)#_GJe&WB9oJ|E7e_67DkzYV#mZaM*td?;d&>~EdBDbm ziPgpKZ5HRXYTmh)Wlm+JqE<*h<5uqSQ$q(&5;t*`Y~-}@O^BUk7RHVu7A;IoV|2mM z?`5@2k3AEwLZb>5!hMaXlAlb0A(eUmXf}86Wnf5RmtUD?;cD+|XQ_{>6(?OXMK)QA zSiQ!$fQ_3i=CuDOboQU-9Q~Gv7GA>J@*Fj)t&*uCP^n>?pTHX)h#?WSl87=OggZvD z7sfKtgPKFs=Y9utM(AR`zT?<}g>+Mgp^4=kbhE{nA`R zE`Ey`U@WS#B~3hbW$an)SxAOCnMzeN+^X(!E=nE2gCo zU3+-``bl=k31pkW&SfmP#5eI^sXl(O{*Ui2a9k7@HLUO3x;TK+y*ST3f>N?X83?&_ zcDyaf0^~Jc#1R#L!~5RNb|)0(@pISDe74Wz8jX3a8t7%A%}wL~knymGZ^&@p~aavvnIpy&X&APnxhd2y9_8&X)7-cx(8aF~v$B~PEPQ6>hx>81KmMtt^ zJ_x_&da?U6;1yrNNp9-kA)7G(a4iKEo-DEWx259%VrL}Qw&EG}K3$g6iVaqpEvFrh zqf}S8qpn{?d-IJQ;{rEs7)lJI{PoTU*HH}x>E9E&C8uRq@_yNxVTa^5KOu`h{x;nF zQ8DoenF=)EYH8M9#TZY&_G9PXT;-cR-$Uv9vvO1u#((9!&|B?|TPSHalkp*^oXL#< zxv>^=zOUh!c-$Fj=)PBsSz7z;+)ww6;@fW)=suYOCLmBoL(R4nuBu&W;76CDhX`?> zC9IX6_HtBr!KMakKuvPx#b~3A9z2@;pw0a-Qy(DHN;~1HE}+y3EFd1c&6fv+izWm_ z*p4g0KvN@@2Q4FkcdA)P@WdU3|NWqc2;by%Jk^wZzSRaOySRGo8H=Y(Xx)a*!yuT!_x{fza{kxPKZ6^ z4$UpNf{CPF+tQDB^3ETD)p8)$!V+HPj1{(I%&F^OM-j7iF*u<&Z)`zX97;{@!E1wJ zO2;?@)hfYlK5pso^yYeFOGhm_`&I8%JYjt%f{-j?XPuA5tTVb#Q!3p zWpX?q@7YP;Mnf3b{BYBZalK8jA9P+i*_AU`&!dN1uG5H5fQ3LmNjz25x3_vgQDSwP z$6hhj3Me1BVF=M)rh}YSlSjuRh3+@@cQcn_^OWOUT+Wb#9YsWt64xE42T{IbqKZR| z5UqzchsR2?Ta!S^hR(&s3{m3<&4cod23ihZ%(H~NS8k4~!ewfz81KFa9{mwQ^tgvt zNsM=RT-ON$)P0%nrOvjR<#~8=`u(FYXXwr0L;L5fDTJvabYRrs<2^f^JjSN}%UuUl zlP=fd{dsP;f|hN1_}s<4WjE?yJ8&WXR*eC-^YU2!qs`BV(gw|&mCKu%cxM;Ie$8j} z#r~AA%j{_6rE4ENG_-c9>6?RjuOLpxMb$Qc_MKP=ZeSHP3Sa=qHo!cJr)#ft zyLo?^%cUZo7nvlihn*=BoP}SkbD6x@v8=pf&NFr}Y^`CVkvsUJsQjF%4vTHtV#sE{ z_xJyVp2VAi?{E>N^dMZK|HYEVkJ77@&6z+!_s0xdpDZuX?X&p^_QZVpWDqWWB1uK5 zaGr-b%E{vcr&t8*@t9v?`yt<~DGh+b4xg^9(Hgs>ARQFWUcklOnZkfBtU~T`LsMz6 zv)5fkaJzS=$t*K=ZiGcB7wlSqHoqH+<^bf_n(3EY&z8nXyYE;+;2HkslNhVq!=w z*fN0jTM_)w7*jw-SfclMVDm$`+(2Cw-n7{H68aN_PW7U&EA$H1wizCZxhVkzzSgB5 zGZX|BEqAB9XA#o#*6pO>WgQ%|RV&*H#SKz3KY*RI9@cdloeZPQm4AO8eE)6Dh{|ME zHe8KNh5e!pP#t?Tf|yNq4nm9FB}vd!6cS!7pI4;;VH0y8NHejniZFC&eb_(EzoA`m zzkAIk^PhXGR0Z!O*5l>Q2Mvz@mo)Ekm^9+g-J%6)OiiCojbCD*CQxs`H_SjMo323H z7_Q$Ry)V6+Ugv}`+ZD|@NXBi~5Q%a^xA26~*QPJlDf&M)%6P2Wa@#UOVLM8vhE7`u z@Z6biutuy6jjL1qi5}z zj#eR|+y>%V9;tKu!L9Rg%ueMhXIA&`;^G*Xu1u$CZMZFsBG9QDDciBO4CwcWNA6}^ zrYJDG=EUX7z01hX_Gf2#wFhN`4%{YC%J?>`)BI?$pkelbP%`CMt43Bi$As!yHa0=DI}VpYqj^H;wD|0avI@7%YNxneBrb(v9@=SDev7B3oW`+-ra z9A^+(PS2|vFc93PYts`pV>hW($d;gGqJ+J6-JYJkkzq|{q*#WeQK&ST$IXFadh?B~ zJ$0ST?xcT;VefZ3!X{qIbA64fanh6tN?trT0m~w~WHDvk>w%ueE5ORHCN_?acpHAf zE3H6GKt(R71FLfVvEeH;_c93%wnosgPCMtQNwhB@u*T+~2UR-6SC+Cm>MExgBm@b@ zAh|eI6I^3@5wE`&pX99}^>JYDrOt>#M!GRa(5MQh~!!Q&8Q)3|NQv zJOy3AvJ|LDSAJgjTvs3#8qO(W;oy~PgR31Y6f{9;R%PuLwdJ#acaDg0pFP;T=a0lXTPvMj`9T3#(Yf60@R6v4? zN1UF1%^*_^)98=vZ@YL44w7`Ff`(*RU`KhxH9@!>n2wb_0j()35%vuN^~FEXbkU>g z?bgW^!a$$!nJ_yUbQgzYT9f(p`c~3`V7?3a!Jg$2*cC%zo?`w0hWxp0-<)LVtT&lG z_M@H*u{v{CMP`nseY*a_X@AVNTm-8&9)49ZL;bzL*OA0du(s0XA{nmh;`8R$J26M$|>OyW7m^%BF;3-}f8 ze*{_J80e1wCil-?w8M|Y!tWK`8|C-_YoD{%g}cFsjlZ-FZyTjK79S~5xJ1fZ%NnSw zOf{4Y=;Xr@`+Vqt(#1X$NH?hlw8>UPKl+iR7ayIkCf{l}AFwKr;ew6hzM{jhcKXCZ z#e+Q_4OL;UC!I06e*;d0zjFP<*&Kuvi%G=3)@Ith$i5StUQVNq38cGs3k1xDrO@JJuMGOztBDtK!8N%~Z6INQ+Wu#RgL7M*g?^p`gXnA6Z8 zDcntqE!5XmVKGxuSv2)_`eK&jvJ807S&8#+lm-AWEZv1mmkHFkEaZ2FIWEH%BY32U zXxK_f>;DOuF9r~_*Ik+|wTim(VqF04KTlp#`FK1-CJ5#7k>O@b z_{B%7cQ~`Kp0*qh;oYTn)UFv+Ruu?vJ?GBPPKO`|6^nn7Y%OzuI@nSbBMliLcrI?F znzqZEWl85RgU$@P@>byG+9--K$ZZtblHiHJ8D?&D-B2{+U%54TnG)@AA&tRD_P#R5 z#pxF$T@@c7=ef7h3)vJHHu%B=qwB;hT>rT?6_o=qx)1R*$t!2X4gRPp;s?gYzqFEQ zfc)`F%T#P0WP-slrfbtW(8C^7wnY_YN`K^azWXx9UHm~=!R9bVB-|?tE&4IDS61W6 z8!L9x4$GC7cck=Le_nV58yH!k1w)MRvrq8;(z|)^Eyn`Q#Y(EyRMn0YP*hafzM2C1 zJy=oq^8K-Tbv&XpkEoX)z=Fe+4%}M~q<;+QNX|$UrL<)E`U!`>S)N=37x^Frf0l_B z49b~o6Bm0n12GHl@7sTUPcC-N%Wmbcl58SHO6F+$j$?s~scIlY9lEHydJ8o|Ua@06 zI}NgwLRv|kqkW2H8HAx_oO=TOo4=5sqR(B)k9m_*<yW&LE>g2I{^2~Ax^m@WqTYUMvtJ6 zBywSkbY5u!LNAPf-%fdY?B(UUC^dw{_f|z1YeWVQ;4%t&@%} zQJlwr`Q=C;31OhOLlG(=NoiFEA?ID7Z4|;%k=|87%={+QUd*!3-K}!3TCbgmBx-z7 Z|8XNPDB)vk11vcqj%zlsFRkXr{SULJ)m8ui literal 45224 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­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 Pz;(vJLcdTKANv0QA~!BG diff --git a/app/src/main/ic_launcher-web.png b/app/src/main/ic_launcher-web.png index 5ece49f5452afd4d23e2ace97e4123ef95155e0f..da546b0df28f365bfb1480b99ae4a5fa871bf0eb 100644 GIT binary patch literal 26889 zcmaI81yoes_db4S7+^+;8CpSNlu(cmrDISKk+cXwQURp}38^8Jk`N3UOjMK*Bm`k- zkTgJ=p$%dP>G+=uzOVXzzQ4a~xn#+Wb9Ov??`Q9G!}N62>38hj0YMPG#tGHa5QGFj zA|W&l_-Eep^9lsnwrQxUob^ne^tDMBICtBj@!WEr#s0^|`M_^tSOHB@$1-kLm$}QM zLt~%b*EDC`jY!I-{sMhKLfG8_;Rn0tBWm_KQ$NinaNIUYv>G0n9gML$ct}b|l(SCU zL@LUnXhkCG1cK;B4Brz@MEeRC$)pq=uB&Z$A`7l*&ULwZIVv(v)73uMkH$q{03%X6 zh=~t_cHbZClqvqtbqBe=K)MQVESfS90jqaCT}pjACD=GP1@A}h-TUYDN?8@38C?X- zk@}J7ddXcQF7PWFgYwiLp12ih#UaY6E+xu1kbYfJ3$?V`aCles)&*b<$y+=4$ORtB z_{I13;bjy_l_XRB*+%@&m2O|fgf(6^fZpK{$T$@)1D~HpQ^Jsd@!!|YT4ip~iF@O) zOP2|ue*3nz+GwguS9NKa<7Q*61f79yZLS{=B!wfoaMY$m4Telae2V;gA=`4eIeyg% z^;rX@8vimv$`4f;rWIVutjqA{u3>537{1bv$$5iLAJRshExIGf&H3LeB(BnzUU}{& z_wjpbVDnMbl5@Sw*<{ZmKYOk!=PsF>gRfmihG791NIG^OCm5EcMiA}eR5<>6Ojc?s zfjuR{f-A$9+8j^%oblY#>$l|K1%Is5pJO1p;|MsU(uu4v_VEAR(@5QzCq`TnXRgd_ zUol!zt5%zf*?RNuSMe6yG(()gAtcgh;2op7!tOKPXAI%8yA8}{d$F)6(d5-#=4WwO zi`P?e=z4{jYUf`j^^ZD@38K*u!A&1LY1=5;QapYBUNEqDC5@IlwQw9Yl1TS)%Zf)!#3U@kE60OI-f!#lc4X$>0cbj=Jn#EAE;UFE zy~G>N%-A0NKjysbJj1TBlmg*W+SAy0kvra3>&)!^QoXbKuQzVVZCCa29!yN&CFXx5 z5j_7r?pDLSzl3VAk^8{|`Pf`OjCewqY6XuB7BrPIS-@KYd;jH$_FRbcNgX1Ky&9@I zo`^9#g6EyCj;s3b3kQq3r%{F#Qe@!_ZQvju{%>J*V#LQj5ee%B6~|c-WiCRh0znE} zp7n=MC!269RRSyeB#Jz(K;QO$>rFfivK@E;6t7)i<<-}6h*1nQ9%YT-l~1BL3i$vJ+cM_YKHI<|ye^|ZfcW|Z&5K4bBhIYc_B=ECw;gNx+5ePByucxFKEP$L zUS}@-=l3f1Qz?*I1X0!Rj`>G5BJeqNY7OqRzYGqnt@fptAi*8iM$As0D&BUzuAOcc zMcZI<2;d!k$jmhAD+}Td<{(+MixZbFKeO~V{4bATjQ3fHACX6N9Cll{Ym00#Md<|- z8DnjRZu|!ifHh=UCl9wGlliE=bU9XcEn!G;K16RJ2I z3I#}?yZ1MG%tq7mLA&d_)Cg2%SKp4~d8vLr5BVQq(d`G<1cefb%$J;03H@P$A&vKS zIV98u=TxqazIM6z&u(MZi-04?$g2?^Vr0CxFf_EOdibAT%M|;_FfYQ0ea!g?5bnP0 z3i-MoRnlX0=%9LP82hdNzF4MM!RM1Zl1^OZ=V_F=Xzl;QecsNrmr|MI&6zkW#+AY# zZyf9qaJ1Y)k6R`#%M^LU>4slcv0IgpC4Kks-|?=@3$ynrY>=$S24KKqN6;_5zs!u- z@Y~maR`#DrzYWXpl?&X#^Kw*F38b)(Ak6N2w{rG>uxPjgcIl4&NG5GkR|Ju`;|;Aw ze{VFS&2Z?Cy4u^(zxGW3DL$ud6h-c)-2EhgTw7mqJ|XdBndbOUt6v$wmWY>! zIc&f-r9#o@uK>ARLZ2_0|NTCeYBr~T1py}=PA^3M3nmUtLsO`))g9!N3-M@MK_pU{ z9{oYL;O_?=uDe-9mzbL?ut$BMMHI#pZK8x@M59!L@0X%_nSb*(dvM#%>LU~@D{VRY zPSbEG5DO&xgvU$zTyjcP|ehn6xRuCHN zdFImJd7!Z9K>EVP?0@`-l;mmn;4u&vNKIfgIf%VKx_7TZcV{m^FJ=V7cM2qUKcB|d zZUvSB->^U7@Vzomk_WQsC~99KF^?U=!bc9O*O^`Vz4+~*AZ5Lg0>y<9cbCp3#-lkn zlMDleruR)Z{WmJs`#H-aXjl;lfoH#^0b*Ifb}ZY@nt=W*od-RT^Wo4K#xN2DBG)uk zA}Q&B=9Z)U3yxk(yHO;R#;J|Y_UAE%AO49(yp*T!WB+nr18Jpb=$T7xr=bIh|}BB4Yc!CG^s2<(K%Y2_un|KF9VOA8@}YXP z@?k68{UfV-@6YuE2B3Y+h$Egh>;gyuH3FUTML{pOzr8)tic@+K1m)OteEKkIbmC|U znq;!{e`fE4MTzheJ=LH&)XU>2RZ6igp5&*)0+Qg{w|{MTXVvHcrcLwo9cA}x2lnab zqfd;eW1gy@>Pw!_Zb$KK2J>o`8?Cerceiq9$t(*&(!IE#!spu|ND4=uRv*&7`&TWX zljZ0W8cEF2KkP@>;lyc=#bMiQm=VL+Gcy%`yT01ku?ed53$VF(??s~e&l>#=SSL9- zeFX^zq!Q52wqT}B2Zi$6jeW=yX0m|1@DEN}6tUd0T1|oWcfwK`8Q+r1zFoHj&(kTR z`bqzJ=jAAerni%*6BXBgOU8Cs9Yib6lT-A`?0@13*V9!UqN)9<4UYWjC_`2}Zw?Q? zp{^>SRys%MPsIcj$xWa-uU@4{9l?n&^TBzJ8;)GXS10j_GyXmh_Jbl3o@IFNRp;`U zc|SdVq=V8ED5tR>b!$~4+?2k1LX=ueB#gY3@QhkaFW3WG+zonV%y&ICEUH&x@%zggYkI<}j3R|N_AX!Cft z(!<^VLXe+M^mO$As11z=4@!kQHKsuP@#+g?FvG9e<+h8w?-epb?no_B zWcX~|ML%;!P24}ZO|i7I>7R0QHUTBdqfp|1+)QwQ(~#{C<17$2K_kSUNCN34x_u5K z5|xtB93d<(oXqwA+<=zJ3556uBb8^v08|(Sws0A7x9lTlr>SbbOH)na5s7TH}eoArH1sU~}y$ z(1&}E(B`Sc_D~`ktSr7Gx_ao&ZwWUf-}HxWb{pV9m<$Y1%Y6S;J2fuq3H&R+yvf>acU zET=$qq!kw>_X~Dn*3Ol3{3()vA`n&{+WQ0^l?H0}690he1zGYU%^0Wy01ff0aH+b{ zi-|Fe*G3Utdz1fvqI<8*&~XAvE*A`w|EQWi)=CkW^^y~!wEwjh@NE22uON>1wag!N119=a4_sTa z;MzXgIGq7%wK|e*i;2iak1vW6}fW;z(n$e#pJso!RrFK4(Q#k3AjyA5sIJeD?Vpa^ityAxV=n zqr!t7^4!EE#}b|m$`|=T5C3AStsmYh_cAOhQG^<7m}oAb0upqE*~I~mh_o)tG1;5b z)nIihX2%JU2^sFb;D+(qr%l89-bFPWA(c@w%9LfjK>m5eHO4{l2)34>pvC^(3q1~) ziM$_7ovs-NPYN%yEEF0~-!Qx2A-VS5-zhLNYhBo6uE*H?=l3JW(p+lgqvVQZ5EIy^2o@2L8$#|x{8mtd;CmvfIU~nI>aOI$@ zeEHp~D~M4nD9zM&ugS)oaz&y4n*36u_97wch8`QcbecXOMc0bnBOz^_Ymcee+Ew$= z&SY&Auern;+JmY!MRI49yqk^82Ia!w*Nh4D&Myf;^D0l*r&>KoPn6$smo2>eK~5a# zA5v*N5M1!0DJCLGm(SoFMAx%Vbm&a(0X2fU@@_^uHU!EiU%}CzijiioGl|={!d17E zJ=M3@RNUXRyKW_S;%U!RkeKhPKRJ$l(`T)LkkYU}*aB=j|0>MaULF2UO~N|i)7gGF zyjO5Mph_@TKAAI*H-ALm5iq{_$ft!A>5?9_+!kGU*uFK1|sGhyMm1{71jU&oC^!;Uz(PB_vog2XO$=u*wH zBXs-i>^z$j)GKpCrnJZtA&PJ9sn_ai%84HS-^&NbdZu}luVkJyGU)|YT(oS&s!3bS8r?;sN7N@Tuj9!Ss=|<+EsBVRZZC;|jI@HQ?N^rO4g4`q%j89Jfjkdt z?b;pv5y_ElHk&7TE2q3XJQ@&1b2agt! zdzlA6GcV8=aGIG-ZqV`sN&8d0DGwsDi03kKKVr2aMBnGvS`Q0_+nGST8X6;q)#WTs zX{+)}cxi;fQud_MG$qPXwRnH{M1Etlhk9bX`?5b zg!EacP39x*$gEDAH;0|DS`sd5_qVnM%-qB56AB9OL`&lIBBXHynG~6j7%v5M)VuQ&JRZs@F{Mpm=LW`XCz|d@qiaR56<#B|q9LS2VyRj=UX`G!tfze> z0z#Gj`~>;oa=x@g49-m}?kVWIdJI`;B(&Pg|AiDWFwg2ak~``c^XkAZpyrh(*63`N zEwLP2i4;I`tPzehYok!Jj~4P3aN-=dNOrAqyZh&7hp(64*1fViH!ywkjF~TP?fcuL zqyQr}FN-l0fyY=BV}Vpp;+;N-?E+qfgZ~!PMMVq>^T_Qi==JeE zx@m2)P~&uAr_I{HW}y20SI$AfY!|qH-Ck-!h1vm8ys1@GNJmwEB!#Pa@O+?kJ2U3u z>Rxe}Ei!|7S==#$yPRijLOA`LFzHH{GH2Pcw(jxHc^3+}Y@K)mM zyUt4u#pbJ~7KGlJrdNGVYH*?Qi(SCzL^*G z#Jf2*#~9MXOs}JZaDu`3g}3{C9>+#Vn}@3XRh-@(Wq~;=Zy9x5TYt2Xqz!4jf9|Mf zotI!&l;5tdTF#eL%4J{qoht|F{oTS!zU~m7?b?d4nE_7XU8jNr&7ebumgNq)r+~K8 z-f3&2wEO@~(<_@tj*WhYy2o8E_TW_lOOm_|o6jhf81a*CS1bLHPd-<&uJBf-(>;?b%)GKObU8ENh9yW2ZYbsz{ai?#dSSt^qUve z{i}(Bcl5U6ZFrr*R_j3z3(9%hFHUf?XoZ^iv*QA%-&&39AW5-MVBSuk{rK_Y8mW0*L5Fen9QT_#87D*xmHe%fXA_`phV)8Y0FmA#z|Q{ zPC8#(MQFW$$f{TUXpt-3b!Re|X}ineRo6ighW6umhaLw_nU=uSVx53LF2{U>YpG(~ zl-hf;G`KC=NN1tIfSW2?ZZgI?rXItO{gvv`L?R*04y2tjvzryDlj3!$+{1P!joNNbA894BOTFVj^X8LQo$I}gFWSRRiLvpc6I9sCANP09@4+SA zMVoU=^W)9Mp{2Fe7Gf1+Z$Mj%hymxWT>;VWMp8!e()%TP$ zYbVe3x#z(fO)J*Mjs@H%OE=?cl`+QW4tVA_fmTcBo3s__MRJ$nh#nSEDxTR`pv7G7k=F){y=7pPQqWT@y;$9sX-R_@8x|Z+0AfwES-fN!6 zg3waRWJXM`%h-M6bDrl*O&Mrvs+~MGo<_%+rR=}P{Q7IS$n36daG)}qb9$tOlF6Zd z5Ee#k2y$8PT*B-m2hQmT8f+W*02;Z*? z$<#G>sVOKct#yo71}?jz9h#b;RM*~A=O(^Sn@YiB80v~ks}qt}pG43XGMhKlaj6kh z(?0b5DuVE9h6?M?OGp^qo}jkugs#WFl(jfJcTCf@qZQ_Gqh>Toe!Gd+w(?*SC8UEw zQ>>6%o>N$lH-FV7Ie5&;OZ0)VWZvt8U2eE!@0ABfY_6u1?$fykliIIl8Hm73s@Zeb zc`f7MT3|~h7CxS%-_$E(n>z&OFInrqnQM`uE9kt~mnezcS=xr-mj@LD-^z0@jQCS@ zsQ5P)BHg`CC*xoB)2B5x5_5+!t*L9rCyZ}=LVHj08|%vQl;QXM7SZ>D=0@vBtGZ-X znr4Kd7ig?F!e&1*-bY^$DKO*YSA)rE>0TI0GvY8_x%JLGdXKbgGX0wupEqq~(OcfK zdug{HP3Vb_mCF_5=eS;S;I^1(72X5(c7VFVc2874mc68N=|iY`t!1 zhHvwP+))(E8D(?raCGQb$+xROL+WWM7nWB0tQ&4pdYKt{DM<-~lg(oCI|ANcJBr!r zf@THh@=-$tuE={Ioj6~vYqdqfWRQy;AJWu&Ay?e0Rw$sSiOxyadp6E|;6fpRms&^Y znV(OQWAwdDUush5$a`BF zX?5~p$wxiHo1@QTCP(TKE8xPLpSJKXM-o0kaiPWDBM^R&0D%;4h4T!+wZSw&q${XybI6M)QP{0aHUur> z`i(ERthwoJ7w{Q!LY>z7-ZOt_G8M3*H?fGC&x`>p4iRtCFmH1kR0;Hc-GhDZok);B zYXTUu?wf3~XJNFOX;g%JYspw27HDM6KPs_YLoan4e1$K1?q@bAIW1vlnzU|y0PeZttbWiH8oXseYBYvmD%fZRK>Y# zKp0(hcUk6U7bYg$;UE&PB`1J~42Zh~ zH|2J|W9FqcWrQzSTYZCHQ>e$N`MG(DIFmsTyRGzx=A0Em&~Iqw5m@}sW>a0XK2c}3ycJ@ za=DnHw|^ogiI?eFg7!v+@4ga8Rq=F=zuq;OQbwM zu}4Z6hpmn7b2kLwTuyAepJ1dQKbt-&sC-fWLGTs@YVfv`W~%H>1hlU#bdnaAWCAl` zx7TGRNPEx#eQMq)dh~L2ToCt|CDvo8gJ#GR)Nh?l0>6&~PWF(ON*h-`)2T((`tee%#tJSpQSrc=ky`~lL3Hv$q! z+Z#%R!(M~8gQl&WHQN9~52#F4jL(h1Z6a0WpPYzmYzTy4O6BqcV~}TBsuEOeV>8g5 z4s|s-3#D&BIny-M6W}ek!Fx_X%XKXlDDseC<{TLuFDV*hua74UEGm^qO}=xqzSpwQ zcP*FacZxW(^c0?)F=vYSBWUDa8nA0M-dSM!nh(I*tycFQKgoKJ-%tqJN-tBGU0FcW zUKH}e{UPjE%EiM{N%(~e(vq51@(v|4OXVmXq3u=!zqC}HCXqfRlof##Ad9F$ajmMj zoZ$lcf!xFd{({NEZnX6+ojbY#)cp%xj8#v3xcbVG*u6-FrOIW#93I1G5RX7DeV=M7 zy3?gc8>3)tT`J|>LDy;B!2Fae_uM78893(}NfM~@ilL9T5YBiOZNJ}>(Y<;(pcP2( z9^=_HG=kf|*Sa|wVeC}QXTMk-X^~mOS!vCAFfcML2P@U(%qMcbNb04c)4_OUr-Lxc zflA7Ht-z<|09*@F$W@KxiV&WVk||$~siIYjqMuQ;8W4aczv>G#>m?{*F4Uc*D8~&?A-2g#+1Fk6Mfm zjh(5z!2+d5X`wvRk!$8m2zkenU0kkT9VwsJJ&1zS?@}g5Y^?RI{NIh5F3pH-(kT~x zkEZkq`!O;qms!V*B>*M=0yUn^0QG$d#q;#Z7komnMp%FY_C= zS&V`DJO1<_+)5ygW%*T5`xdOwtmI>wIDlVBb*_BL(xqZ`Qf|nkn&}ve~ShzYbM#Irlz-@ ziAShS7UDR`+B{1PYb%9?#QAeiL_x7^nzb82bht%wXF?#>pCz+_f_Gr<;i8Ky3i^nlD_FP_oQ(op z3U2+`@=0>_-o=}RDT`X2es(=Ebxm5auZ+%+)b5*7Ir$7+a{ffg3=sGv>-E4cxuX;5 z4CX=}Gjo)NL5ydKJj0z1h20#YKA+|W>oX=!0&udfb!g-^!)$JZH4g6KDd*xgEBhGK zA?@{K@Kenw4nnE>boPfqNK+y@UfxEkbop)usnN{ya8t6x$*&+;7J0J%^Pcx0zthGJ zpT&&wMPAqBQkXMoUj(LgLfr>$@CEW5Gfd3w^lx<-{4@nT`(MT!I&A^hf$3*r2QpC%#U&@XEU{j zsT)|3M&UytGF4g$(sVt_i3B*pJwg+48kgfP-306iD$4~yQ1pJvbP7IWx^TJZN5A@Ry-I;b5kT`)x@dR3KUgu4o1J`g!*{IB z@2rmC>;n}2z;t~*x^!&9hV(^g<3Q3{bJLxk3U4RsFQ!*TVJd@O$jkpx>Rr$?NQpz$ z-u!Cwo|%ZzqzIYTGzKuGqKZ~i73~Ck#@>nDwBh!Ea+M_|^O7fXFA0-B8XS*dr^kx%atnD~Q1?_7=u~b<)wK z+?`{sHyV{z{U;cg;}a6vyX{QfI7+8p?%jdq+xZoQeaXg;FSe*3jM@*k?t$Q z$rWgyK`OD3poOkfl8v=>hdRteFqVJ2C^HtbN8v<5oB;>uhJIN;S4YC=;6a~81D}q% zjYrl}oaCpwoGWj8GkXH~Sh0Wfh-zubJB?A^sU(+nzte2x&$#jGrkeIrW^-{I)*NnV z5r%dWp9m`LGF=^F2D}lF1fnTTnp1SWb5~A(r5E?(mkpY$-;;yvx|N`_aJTf!X^_iQ zuH^RVCy~_q-Dw`^0_Ejt7{C4o8eS#$@EZr70hFtN-E^1>46K#1w>1Qi40G|sfoLyR zo2oBLE}~6^@794p||wO zGL5`_-mV8c@QbbkI;jrC081%`yml`c(SbFl>C7k^gx;qIaQ|=|g(ny7T?qV?8g^;| zz<{-1l7t+wwS3hpXQ9`K*Y$PNZB0jeZg9DUmBMLN!ozIT$#;((V(H&_VO6KxkWyOhe2I(mC?q4N1!TR{U3I#DXXtQMNk2uQ6PQu36#N<)?}m>- z=9_)@Z~4c{dd;|ei=^KVaqXc2(%?&(_6%cSO_E5WJIfiKNt|L#ZC?}@_JaH0_MuQ+If*fm3 zp%;^%K;%)3vg=|Rza?Qzgl4R>HcG%-7aQq@av4>E!+OPeeO z_Oa70Bc+r_Bz|CCy>6e*owDppmy{nyH@AbD=eRu(aK*}0=(d2lH;2Y~)IdQDZgQF% zZ@$UC_DP8wgbCLn{1mFwVm59c@`^6Mr}Tq@l0yq^R30}|3aZwwiNeAvT8Mo@%O}OR zQ^pIED3UjJl|paGQv--1gs*!jv})%M6mZ%;iJuenS432Jsj|pNbek%Qx@WX|&}h3o zYJ_2L1fA01)RPp)qm$oq(>78(KbHk>0C#E{>Ymf>WiOU1RG$~h3Lci36ozWU#KO?F zo?^sy#@25x_516l7+uGk1m+#UTiCvAEPpGhI-h3~<=dtpK|37FY1|2l&`xtaFR?Wi zj2n*Jv0~(%zYJeH0OHd@nb~wfZSHz^ONN@ePWB+#er&mAts*B-A|^K6T(38E0J8@E zcus)2Uzi6gD?vMSn#;H}1>(#-GEKd2rpl#g3&|mJXVqdLpwF=@hk#UubB7uFFxD*` z2YH&@AKsCcaCM;uL;6)Cf*PpLsY5>ppJhzxe60dczSYVG8oUc#*Ia%E7qxr!M}M_) zrC;+ER|=nggO0C`zIBUaq1%6>tslPjOO%Xr$qI9U9DDt_XwLLiaa`MLv$s4Y_T?Oa zB;|v{ZNjeXJuc+9UO{gPGDRfI-6v>JbBJU=PnrqJ}jmn*RpA=tQ zv<4>f*b#dKPJ$q@aCXtpquWv90VDiaw}r>Aq>>BxVshHO#$Y)Px+7J?pr;ta6tvKA z;Q-Cd=}55k1Sm1|C0M!EdNA)Ud9a%6Dai~0SuJ-CX?I*p zRuK(83|sjSg^!wa=jIhP0+dD-N^F)kN+U{xwQAaFN*T8X0V~~GgxY);sFE2b24;8G z?h#y9jbng?*-|@n7PSvt$sfSd+CfSv2fS$qovw0j4EN$8_`_Q z|2Cep0jyIi>fm{C_KVxd05pWXq&BJi&hTvc9s%<$ak-X9uq8s`l9G*$V75SdBU?-G zWB{`yyTQ5+QRq=Pkd=%T=vt%{qjX@2&KEduB=1jq{HkTnPn9Pr6HI>Jp+XMqv@IP2 zv4&OITffSz1GaZ&+dP}*c=u}k@u4CvA9{I2fsYsz@npV-4Rl5im$H*(W$ec0x7S#3 zjv9jeW|?G+tQ*>+7=OVqq~xtiYD#!?4FZpo%$2gcm+5Hn2l(n%`fdHq zp=*}aYP0^AH@^Y)9m%?6O4P$SPp>mFufVI;bXx4+{5nE=oB5I-EYy$`$heH1SaW*C zA;^I)V5Tp4e})zWa;;J8MJ-kcD$R5qg_DH#;VbUQTM7tGCPZZOt^sY1LRy~dboyE6 zwZGQE9`LGfm9)1#s6ftU>`L7icrH&16+HV$Xh+d{ly_J%ERb&#U>@U{vPI^cv&n5h z^-_~~k)_R#Lm?&Q4fnK0mzzX34bE(Tp=7Oe}}FJa$~Kq2lLA>BBckY@bL4lTSXKy z^X?X=ydwtV$twc`s1zt`gUZWvKC9S~-Q82RPFG)uAvIvy?U_tj)ZL{3vz&kVjD z*i6~>3!5+NgB_REQ95^a=`@*`SOF$il`w)agprB6E+omRWapGOX@LruaGVpkwjl9Q za;9q^?Csi9sL=2A0~Xkq=W)cU&Dm~c+{zJHD^|*zY2~slo!^u1W{yULj(R|k!yqR~ z(5-vPV{l>J`zRcutk>Y4_|G4lNmyP$2FD6BnEm7@XyBoCk*ACRo5Yt~M%$%-p?e|c z##QxoQ6ej_!H}Vo%*N~4(B}vugOX$@(QIucno|ELnt3}AylM1b2$}J}oEk5|!Kgzq z*fW)eu!f2IC=uknY(vcEdfpH8IQfzXE$lDI?(&c1-f7`ph%yTln;u zcSJ`e6Zhq8xHSN-?s{EkP^p`}F_-@+LFW!q&{|ZqSBLmPl@Jkj8kSc7s{yACvO$hD z{Sz1+CAn8C&XtGM-Fx*+cCX9BCMV0Wp~`902`0pCLGw3&mh$h}vsig<;ZQnwIAQf; zVb*1t#$vfI>!C_g?5Cky%o^9lc!hCoS<{N9tP#{y1KQ>>g}S(x8AC1g0fN_rGScnTzZ zYp@T+!uo2UWXcOGy528_aezU0s9Uhit)^4?`UY~(w85T$r@x}JTfVJf3?^)wS7W3bv zt=I||G7Gt4CJ41YRsO4%4AoC$V9u;MOe_&?yKG8uR+clD4<~}+_Z?4pFgXY;-pJE? z=|kNh^JY86@@fI|lhUw+h|EC)NJ0%Z&;<0-=lgzWkKSv_6|}H$auz;_t+8->e$55F z-mpXE;OfRXNdoBH%$pMQ@#)3Wb@#K0jQ(SXex-KCWtOa^o1g9nJ#Mh8f8q@5XA%|v zqcK3}%Pv@$PE)JCX=^mSzSBV{Kllye@EcH|v=5lkP0pP21Ie9YRDL9}O;6rp*G1V9PqHl;Y3Ei6=P>$2V3PG z=pn3b&Z#?(D>Akx=YrZK>u@eTB~l2*thXOeAcF*5m1Na;ugVTI<&hb%fV@kFr$Wdn zJadz354`~7@=IqNpO^%`yK`~kvyl2$eeIO0rOYO7tY#{^cnnUhA1l= zJ%Ak124K+#+AtB&elv`DQauaei>d$K(p4)nLD05=E0pE%bIxNw#1dcsFssG$RsnSg zH|Y?K%GjY3U!H^#XB*}Qeo_|=>K0;`VC!>s-&hsBF|c`Qg>B@t8nFykUmml0^&-*| zj%sI7pG(<^U%i*Z?>et!isfe`!99W9V*Yc|o{NIz(=wcfD9`agSSRb}XyM7i%j}3d zBhzHb)2OwzFaAX7^6?1J69Rt<6=yrIdQN3-Q0c!i{Y2bhLaU~8?_-fd(LJ+kywb>z zqDT}7A}k1}P15~Ab%P7)WC?IrW?`PGKW=S#+Ji6VGxcr8*dNtg;lkQmN8Q4q!wMZE z^3-Br_zmnY$66bqx%u-#fl3TelHe*uP5EZ4+3e2HGXqys;2I_JV80IWEQpD!ek@`d zsKZh`@-B537ONU;OrS=Cm-{F%;6!${X1&9i&U9?@H0RJb;*B=c<|niPIFQ-EJ;CW%kv76mP)Mu9;@cSU}!pr=m!5Y9Qg6Il> zbm;km%couju&1o56wR-e@0$l0(jjR4<~qH?_-GoD$MmPSvdjxK#hkjFaDR^hz1dF# z2oOUST(&{m6DncZxt#l=9vcB0qmtKXDIE{8@t<%2z_U^42XLo zBg&K2XRzm|GSwY{-%wOECafP7Mx0(>IuCQ+)`<>aevwl7Wkb+sgR?yT>YW3~$Nu~= zd!2$qw(dwM{oSOQy}%vk=;!J)>i8D1+t zek@w>H0lJ)9zW4d9paEG5v$y${V{^ro@r3EYupq)p1g@M%)41>0fKr-pWir@bA4Vv zM!EDm&Bcf^K$z;xM1=081Rn$Atg1HR496@5Ijbw8t7jkacl6wH>D`@}=GGJdn89+U zv6ckw5jY2J_H(UjrreTLf=#7tW-so$UcMJ1;8-gahlx;`PZ7xL3Qqgn)+fcLqS6y3 zqKuDy%Jy45AVXQ212~?xQ3x8HO^3V2%QjqPD0g-~)!KkgU9tEsh&X95&Se75VRf@t zc}xg_c1AszEg8T0w0yZQGNgv)sVgM-=MO-WKp4SbonjSC*q+)hHr zNEnT^o~w!Ur`A)Pcys%`GL{V&aZ^$uT>Xd@m$c0s&a=NEq%x%6Z>xa;8()HI$wqWx z<@4+%l*wX_zL}lOOJQ&+js|E#uJmAF0Pg9Ac)sOkG?1JH&5R7Z8?FW z1Jj`^u2I1r?*n$97hOqtYirZi*w`GZXHi39uxh(GcYM9Z^CmY4zuuDEq`5W&-S4!lC`e5z6z3 zY@&48_zyUIoI~7Qm3KMFB8JRKu2fZrL?1&0xx>L2y;SJE8i7{1RJ%@x0qp3zvLb8$ z(tDc<{RnA+74Rswj~y@flYb1X9w{AEGz%Hn9CfGkZ@x;S5n@I_T`=au{P!~yGoVTY zk@0I3sT2iSFd`tLID_?Emu(Gxbw3^}E;*ck#BRsZcaQ9VLQ~KECYyENoEDSN1S`oz zP){BwV{|LPk;-o`x$)*mHa_H2vLp)vveHFG$=W-4cI}J~s$%SpBmvgo_#4<p^<&XQ95Q+EROvokTW9G;b!v${Js`05 zDa0 z(kpc61i)7l90ZAbwAjmhi>EUG78XK!pxaMv-4d@tsc34VgUC@OJi*z1Nr*Y;|SHBlq9#4w_O4}=qEm4~^9vQPRsU$Ts=T6)B8 z?kVg;x?lfj33`Uzs>;nx7kfZcX>Iae2^d0uOYgTh-b40xD%$1eH)%#5^Y1kd(kbG# z1Y3?kldg{OBNdR)4>V5rn=qmspB}{1|J0(^@*gcdv0FB(5rroh&4{QlvA0?j9-R_&W8RMk zLvH&?QI+uVq1pwtnpwcST|F6&#_B0N8Fiuf8Lvz@yx2Z3 zNj;M5iNm^EPW3Xz+VQ^dWU#oyDR24U?pcLX%^U`)V2hK_gO8p*J%ft5TW5N9J_gQ;&aUV7>rrCt)3sQoGc)B=v3 zxUGY&oyGCmfm}UtZAbbc8cc)@2A}TS)r#uttko1#LmAF+1qrY%oSDH-3EG3X-#9nr zb2?x~4L&UQfgkx|6*?>GUb#~g%tXNG>BI-2jTdW1=l^aqg0 zUfqwg@inv~rP#^wtV1x~oHJQJPI!|k^b(w|osfRLrMfv(T-4(sqd;{1){R@EQ*n3d zQd9}3wC!(*upr!&zyVHp?p*pNf#$gR`)-b+_al!&r$1V)d zao{jiU5or-tvMYc5dHkN=z~Jlid$qH`_G*fQRWH(;?MNk%c^_Xi>q|to|1Rc6?R0b z*8@Dtayj4zI0_UXFipaf%9+!FodsirQlZ!3f-iOr7XiV($p8!mLU!N&=nwGlr-m1o zDhf5<1(@2$Xe9~nWuyzB@a~*d2oV=fePehB{ncXTrQ%&%>T}<82n=Bj!+~v&L%b$f z5Mfzqj}@X0AeZ2{4-T&Zn>u|Tx#Rxhp)kjesv#rq_xgHqZPknOXF+S%IVuT0VK%9{ z^`QR-d^XMG?AyJs(Vi6+Khdec50p4 zvehBwoRF>Q5Aewb+lnu|5O(BmHHfOA_6enaoGm(6emguPUxA_DNi&VVPq(G&v?^hU z>-1h^-t$7GIxzs362F#gHu6WIe2J4q);6jK904n$zzLP0)wDnt8X%xSX)neAg`X#;${y9 zE-}oD=S^>oodxMLT3*7VmbVx_0E`8fJ`ts65!I++?t2+hlech(wN=A*$ou+%epMpp z51>65-U^wvPir$FzyZ4b)pv7G8Y*aF`D!H3f4DN3cNj;uhqo#Mwi^H02_E#cV+SXd ze;??&k0yaLwftEo6T$2zr)TzMo8VVPo_k73>E_G=3(~|QyzGC?S3^p`ucUAUEK-pj z0j$L??0Kfp$pJ(z5Dv>h{ZlybgN@Z(DtjxFsw+^%-8*%rpi>A-3;xUqINeR4PqPvv z5vcImC{?lZpJ6`;HN5i!h&&nqz{6tCf@%SF#4r7U;<8%y@o`k!vH~Z<;vh3leA^3D zp%=RzdCq1%v|JvP0nnp~Cy>^GD}a-i42yC33f4a>B*o4K6GW7A#J}Nr!BN1<@#S6V z?l|6Gpmb|U<239K&ph?tGRGW?o#i+Pc%^%H>cHm}2x$Pf&w@{#gaq=Ukmj|;TPKcB z{#Hf%%Zxu&!Pe)?IM)e2xiAWh!I2*+RQxT75>A|gnbm)FaYpsSLwLColaKO>S#U8q zo+lfJg_QJWs0Ux$!s^giJTsclg2PrZ8sT|Cb$!-;)KajN48-~QuIA3PEvU!nr?$WX z%K;kET1nuoS{K_N4W{0q#kegusb9S;ggUwk2C;*CFga|RFxFG;#OWzC;M3J>@^WQe zXWY0uQtN(6UBhdF711;-us<4n1P84o49*yNAn6YC!T_f+O??7(NpDl2|K^%Jekm_* z_TQ&H$76Qm^lIpRh>nlZFAw9e|BWw(=eZd-`O@J{lGh97yWlf(l%}1meAq@t5v{lA z^ayHrKJSbW5@f}~LXc4nb33SX_OZ5hpTXRC{CEh%EBqI*8J*_NU_;=_n4C*dopVF7 z6Q@Z#b`bPuRFC|)3>0~(#+B&+DI`qdxb!y*ZunCmKLmj}ghP+9=t|j}yNYtd!UY>^ zjt@n=S4OU?h@|4f*{-p&Hb!6O0T?_=WNnqOwX{%X6&v!al)A(%4Qs;<9B06zd}5sO z=54o{XDn$KKp`1=KL7j@DEALb>56}oF*udGMo9){vmkh*51e4<1y*=4`pl|0>r=As z4qZQL-six;P8J0oP(iWiz6Oy#@9|Jqr$WW!z0W=G@giqCHy-D3{`jSZE>&fQ+>Igzk$^sE&L^TnP4l0@ z=?FGg2qwx<@CpmROJ{&=jZ+PkKX3GLeMCV7fO8Aq13YOjv>TnwE?+?a5;zu51U{e% z*Y4pNAjxYTjzwdgl{Ma5f$`|KY5PVcfJ61_Zab971N5`v5G>L>koY#dGO_Z{WZ{u# zEUZZW1F3hXK)8xm5JhYM2kD3`$TRkBT?zf+(Dwre?rjY*K8@l$iJH&x>_~k*B#Y7Z z(bcU5}OD3?r^u^}umkoRtj$`fKLy!Fxi+Yv-vou{^D4 zTM_%0LVGGmjHixiEdal>t#yL!35>yx2$f^}dEP+|wJY`_{(zJ?G^`#kF_eTmXi)>)Y=gLNJJ2eIcynUbGpNp@InlZj_ZH*ef zuL~ZRuma=6nD?J3oUs0Aj#6x&ysB#HGoBT}-1h=1P9Mjd#;Uoz~)O9V>i7Zzt8N#v)HxgZo(Zb*$lP3zTmx!&sVShZ}aZ1 z1K-hn#@2%{x)7GU!{o$KaXDp#0=QCa8Ps+VSj@}lnj0=lN$Ya*7atEeTRBHB>w5Jj zPn*Yw08C*a(y*z87&FOs=KVHaCcfe(zO!#U9%lMy$PXLW`DCG@0`~vhj(dZ{>60gO z4`u~-RG?Rj7m5434FY(D z{vsDyt%fBItaxPtq^)h=;mmZ=A+FvzRJ9g{uMauyv(DznVF4_!RXCZGD4okYWi9*V z3eYZlU4oIj-sEqt0its$o5OAxj6y&IZ0v*JDWU_hldcLP5OCOL400=!qS!L+JaSST z+rbF&6h$Lj`-c>?CJqU#q9Wi9SGfN3fjNJ|;jG5ygIa_Q)9Wig1{>xR0HPvZzF#!d zfnS_r*E-g0x^Xr$2Jd&SDFQ0NwAjWRM<5DeIs)mApcj--BNja!j$*z%tQ)|(_u{y} zcOfYP%4k;#GYZRSEk_I|8ZNGJjlW2?A;CbZSfRKa$ppwbDGq_wapKZI?bS#5>}qYi z8acY~Zy!WY>on1m$YtC7@u0G&p5D}K%P8P368ZxY7nRs`VE4u>e))on6ByVZc68w4pAIFvhp zSe>*}%?Ct8vd76@$0++1?ER!EUPpQ!l1r~cUy44L_XkU)aY)}sPEPY8w8d8?P*^Yi zB??{tiHSq$HG?B}Gh3|^?#UQ$l?}Zij5umy@SfBnxq!B>;w3=KF^>O=m3-b=j#{ww zt~1L))cf}lYODwzFL6z`%tMi5`mbeJRTEx*wLObK4G9ls!L|@f$-mFz= zx7|dYD1&N>i#nQ*ES#by)*Y6m1(_{yY$xdj4yY96asRA1Hc$Uh08R6-Si;%d&Gquv zu#l7l?jOJv6NWcp*EJQI#)%$BLF&j++N%=-{zU+BC+;)_6t#GFnx@!C_DGbRO{4V&!+AY@=7{BT#n1zGn0WiTvK3tf zb1G3+E)7Uv8Qly!RNaOQwr^NQN4yI&hdU2|h(~LH`d@z>$6r!NniA^(p2kp~q6!>m z%L|L##^=M}s1W+2+e{#VBH{;P;9xvTi2AIr`8{o!gP6cHT8)!2c?zK(z%X*CQp##b z`kubGC{^aa87In2{!TAilXzm1Rtgs?$LOl7msu);-&Z#((`I0>+`YN>Q0HyFyHob9 zkHKaqhh&dCnP8<&df^3eITDtU$sy&uT2l&56tie$@#lE~r3sl*I9HiH?#K59wvE$G z;AWo0M;rVxIaM%3s|vApi^3kvsF|TdtXkFdvzR3yErk1Gd+RLs19gOzsJ+^p#nzyt z2&((#4z$1}O~%=;dxPPqmxG$slbH<0>91QHtWOpaM)7h$xZI{G)6D@{WVj94b*26VB2V2L= zRHXuyOv{01dpT(~2mZp(A!dqBqYp-SP#t}vAI!qtH1$NG0#9?YWd*s5o|%I{+RM~a zrPv-Jsl#{%q75-UygYm}iUjcw)J#$>S5TZ8WE^XR!lZ*#FRCsEaD;)nMX!&-3Zwb;c4DcQ`PlGh8 zzNQj7HOcB^D1QoJa#h3#Lv=xI|06cdQFJ|GQ)bj=#~x+vY8$laBb^5@oAf$9zuN)w=|Tupy|}9WkeUbLAp!mTGzx8>xn8awxj2Uq%QU;F_$mxG zO|P4B?WuZH;(RVdUN6}qbz@+(i9LVmc31HVXY&+oBd zneR>a6Xp3V9KD9Oj3w(h=^2-0d0X>(`NQ3DFmvAw=1jI~LhO@6D(&&* zVKd5w5vbC0r>PkQ8v99N9DqG|)KZMuai^k-uF)BzO7zJM`Bf?BbXXluC|2F|m7`-DL68QG{wXsRZYX+Ecw?EB?QS=G62Z%oarqZir@X4pZMagp?+c|8nY4m zgMHAKy*%f79w|zkq={)44x}{Iz8hfL9uUorL|3dQJ7$rm$n)U44JZiRB^t{gsTT&C z9Ev>SmQ0#o4bA}Ofew>7(^;rv1ZjYN)Fx}$M^+E@13nhsMP;+Xx z1ZouYJSiMqyg2IgvT;}R-bBe&D=AJP_S^yXpDKpIWp7`rw;f-T8Dh6rrAua2VmPu1 z%$~J~>!VRtz)uE%f|{y&W^o+D>b+&dmYMg+odi9jQjF^v+8Ex21tp2F*$#rqlU5kr z8?3yza56H;0|MKE#)&ELK^IB?G?z|Gs19y6eG<@L^&Ow99EDu|)_+8^CD?(!3Gr}-W6~~vg-_G9y zMQi_XX75!%a`)zN0s@+lC$%e1D_%>ood}itmPLLRX`F41{5%DW?Jlzqs-ma03^AtHsq9?sT@nT?F$N5N zNizEA!aJ-fm7L^+ZOH(s7P#?jxFL~uQBP`V7Rt|>I6$j4`FO|^-_tK1Kf`zcY|zNYDP)Q2 z<2wLOEkn7|75KMPLI3}NvJwsNs6aynkqq-=p)z_KT zal6~&7{^0sbrW}Gn8J##eGL}-)kzq8$c{bXyP{L?OD;e##FT0imuIV0Y-QCM!+Dvc zf!c&OE5VNer_;5Bh@4K_fA^>&`ZBFtJ~%Q>@9OQLTF3;5B9nb}P6qi~ncL7*j!>JD zDUb>kCaaZNN~a#zxm6&6^Sk3qSHRbOFPUq6)VeI$jg`s-Nh$}6T5wivxiV~aj(MDlPy>NPDvYxSTMKkrU8kAm0t z@h^49)g5}!!(I#d8{g2OFn$u*#K9YT>wAv+muY7alJsK2r3qVQRQ+)jAI*{)B5YT= z=Bg$O@_tL5 za-LY*fejo=XpjX{O8WjOuh=DAh>pN8g^snkH%~4j9@fFID<+6iNo59D+)@P3 z^MgQB^nV4L8vHJk3gutIo4)IIWVV`DKExE_Jzvs#GFTmtVlks^wsG4enGEM$Zr-1@ z1}=jX&sg2o!d7KMoAoH6bfDeyh2s{Y(Zz8gg%}H+x0pLlT#^`$P-YG!(gr1b%_|@f zU@r_P)w#-6IN3->l5y-d7m6*z*ZL=^Us6vWmcD1qQ6_Sdj2T{llQKkiC;WWIsfup( z$1!y-z%ZxND1M3#_EUN}Y1BKgZlT?2l8>P$PH1xw%9 literal 23227 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 U<>$^6hJVjK^Fn-CoawFq1NDX~g8%>k diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml index 9d33a9f53b6a..d5e5587ce0b9 100644 --- a/app/src/main/res/drawable/ic_launcher_background.xml +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -3,6 +3,7 @@ ~ ~ SPDX-FileCopyrightText: 2020-2024 Nextcloud GmbH ~ SPDX-FileCopyrightText: 2020-2024 Tobias Kaminsky + ~ SPDX-FileCopyrightText: 2026 XeniaCloud ~ SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only --> + diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml index 0235efa7e6fb..2c457933111d 100644 --- a/app/src/main/res/drawable/ic_launcher_foreground.xml +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -1,20 +1,22 @@ + android:viewportWidth="480" + android:viewportHeight="480"> + android:scaleX="1.041667" + android:scaleY="1.041667" + android:translateX="-35.70501" + android:translateY="13.034049"> + android:pathData="m 188,296 c -36,0 -64,-28 -64,-62 0,-34 26,-61 60,-62 6,-40 38,-68 76,-68 38,0 70,28 76,68 34,1 60,28 60,62 0,34 -28,62 -64,62 z" /> diff --git a/app/src/main/res/drawable/nextcloud_splash_logo.xml b/app/src/main/res/drawable/nextcloud_splash_logo.xml index d34ef1204da9..3b0b02e910f0 100644 --- a/app/src/main/res/drawable/nextcloud_splash_logo.xml +++ b/app/src/main/res/drawable/nextcloud_splash_logo.xml @@ -1,8 +1,7 @@ - - + + + diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png index 2e264cebd31d9849c97d65acab2a3b307a30255a..32a4a1a348f18c7d6721d136664a8c02da9be261 100644 GIT binary patch delta 2162 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 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png index e34b6164db139a888ac516fbc5e33a68434f64f1..b36a63eab7ce4b4fa6d3aebf48878511b2386095 100644 GIT binary patch delta 1284 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 Eg3JTD+5i9m literal 6843 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 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index 702614fa7221c57dee42eac254ce758599a23563..92353da317b8839de953c6cf21292afdb2fc9058 100644 GIT binary patch literal 4631 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 ertfpt9sducP3PvwP)f?78>K@K7(g27 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 literal 14780 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 @@ -11,7 +12,7 @@ false - Nextcloud + Xenia Files nextcloud org.nextcloud com.nextcloud.android.providers.UsersAndGroupsSearchProvider @@ -66,9 +67,9 @@ - #0082c9 - #006AA3 - #007cc2 + #002266 + #001233 + #003399 #ffffff #7fC0E3 From 32a1e335801afda820b575b552a94317732c135f Mon Sep 17 00:00:00 2001 From: xeniacloud Date: Thu, 10 Sep 2026 19:37:51 +0200 Subject: [PATCH 03/12] XNT-54: change applicationId to eu.xeniacloud.files and de-collide provider/account identifiers Set applicationId to eu.xeniacloud.files (generic/gplay/huawei), plus eu.xeniacloud.files.beta / .qa for the versionDev and qa flavors, so Xenia Files installs alongside the upstream Nextcloud Files app. applicationId alone is not sufficient for coexistence. The account type and the five content-provider authorities are independent string resources in setup.xml, not derived from applicationId. Left unchanged, they would still collide with the upstream app: duplicate provider authorities fail installation outright, and a duplicate accountType breaks the account authenticator between differently-signed apps. Renamed them following the same pattern upstream already uses to keep its own qa/versionDev flavors installable side by side. The manifest, authenticator.xml and syncadapter_files.xml reference all of these via @string, so they follow automatically; no hardcoded authority literals remain in code. Deliberately unchanged: - Java package com.nextcloud.client (1861 package/import decls) and org.nextcloud.providers.cursors -- source packages, unrelated to applicationId; the module namespace is com.owncloud.android. - db_file/db_name/data_folder -- scoped to the app sandbox, cannot collide across packages. - Store URLs in setup.xml, README/docs -- point at upstream listings; Xenia has no distribution channel yet. - Deck/ecosystem package queries -- outbound refs to third-party apps. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01GCJHcfUt8oBjcbG8cdKNSz --- app/build.gradle.kts | 12 ++++++------ app/src/main/res/values/setup.xml | 14 +++++++------- app/src/qa/res/values/setup.xml | 14 +++++++------- app/src/versionDev/res/values/setup.xml | 14 +++++++------- fastlane/Appfile | 2 +- fastlane/Screengrabfile | 2 +- 6 files changed, 29 insertions(+), 29 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 6235237224a3..33986f652062 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -112,7 +112,7 @@ android { "TEST_SERVER_PASSWORD" to ncTestServerPassword.toString(), "disableAnalytics" to "true" ) - applicationId = "com.nextcloud.client" + applicationId = "eu.xeniacloud.files" minSdk = 28 targetSdk = 36 compileSdk = 37 @@ -155,29 +155,29 @@ android { productFlavors { // used for f-droid register("generic") { - applicationId = "com.nextcloud.client" + applicationId = "eu.xeniacloud.files" dimension = "default" } register("gplay") { - applicationId = "com.nextcloud.client" + applicationId = "eu.xeniacloud.files" dimension = "default" } register("huawei") { - applicationId = "com.nextcloud.client" + applicationId = "eu.xeniacloud.files" dimension = "default" } register("versionDev") { - applicationId = "com.nextcloud.android.beta" + applicationId = "eu.xeniacloud.files.beta" dimension = "default" versionCode = 20220322 versionName = "20220322" } register("qa") { - applicationId = "com.nextcloud.android.qa" + applicationId = "eu.xeniacloud.files.qa" dimension = "default" versionCode = 1 versionName = "1" diff --git a/app/src/main/res/values/setup.xml b/app/src/main/res/values/setup.xml index 560c27bec2fc..b03ae122d042 100644 --- a/app/src/main/res/values/setup.xml +++ b/app/src/main/res/values/setup.xml @@ -13,13 +13,13 @@ Xenia Files - nextcloud - org.nextcloud - com.nextcloud.android.providers.UsersAndGroupsSearchProvider - com.nextcloud.android.providers.UsersAndGroupsSearchProvider.action.SHARE_WITH - org.nextcloud.documents - org.nextcloud.files - org.nextcloud.imageCache.provider + xeniacloud + eu.xeniacloud.files.provider + eu.xeniacloud.files.providers.UsersAndGroupsSearchProvider + eu.xeniacloud.files.providers.UsersAndGroupsSearchProvider.action.SHARE_WITH + eu.xeniacloud.files.documents + eu.xeniacloud.files.fileprovider + eu.xeniacloud.files.imageCache.provider nextcloud.db nextcloud nextcloud diff --git a/app/src/qa/res/values/setup.xml b/app/src/qa/res/values/setup.xml index 6dd47627bcb4..b6fbd52c5a6e 100644 --- a/app/src/qa/res/values/setup.xml +++ b/app/src/qa/res/values/setup.xml @@ -12,13 +12,13 @@ Nextcloud QA - nextcloud.qa - org.nextcloud.qa.provider - org.nextcloud.qa.android.providers.UsersAndGroupsSearchProvider - org.nextcloud.qa.android.providers.UsersAndGroupsSearchProvider.action.SHARE_WITH - org.nextcloud.qa.documents - org.nextcloud.qa.files - org.nextcloud.qa.android.providers.imageCache + xeniacloud.qa + eu.xeniacloud.files.qa.provider + eu.xeniacloud.files.qa.providers.UsersAndGroupsSearchProvider + eu.xeniacloud.files.qa.providers.UsersAndGroupsSearchProvider.action.SHARE_WITH + eu.xeniacloud.files.qa.documents + eu.xeniacloud.files.qa.fileprovider + eu.xeniacloud.files.qa.imageCache.provider Nextcloud QA true diff --git a/app/src/versionDev/res/values/setup.xml b/app/src/versionDev/res/values/setup.xml index 4ae866e6728a..0072e42298ad 100644 --- a/app/src/versionDev/res/values/setup.xml +++ b/app/src/versionDev/res/values/setup.xml @@ -12,13 +12,13 @@ Nextcloud Dev - nextcloud.beta - org.nextcloud.beta.provider - org.nextcloud.beta.android.providers.UsersAndGroupsSearchProvider - org.nextcloud.beta.android.providers.UsersAndGroupsSearchProvider.action.SHARE_WITH - org.nextcloud.beta.documents - org.nextcloud.beta.files - org.nextcloud.beta.android.providers.imageCache + xeniacloud.beta + eu.xeniacloud.files.beta.provider + eu.xeniacloud.files.beta.providers.UsersAndGroupsSearchProvider + eu.xeniacloud.files.beta.providers.UsersAndGroupsSearchProvider.action.SHARE_WITH + eu.xeniacloud.files.beta.documents + eu.xeniacloud.files.beta.fileprovider + eu.xeniacloud.files.beta.imageCache.provider Nextcloud Dev true diff --git a/fastlane/Appfile b/fastlane/Appfile index 64725e1fdeab..dd7ff6b807e8 100644 --- a/fastlane/Appfile +++ b/fastlane/Appfile @@ -1,2 +1,2 @@ json_key_file "~/.gradle/Google\ Play\ Android\ Developer-Fastlane.json" -package_name "com.nextcloud.client" +package_name "eu.xeniacloud.files" diff --git a/fastlane/Screengrabfile b/fastlane/Screengrabfile index 33be0a67f946..cc4d52b36a14 100644 --- a/fastlane/Screengrabfile +++ b/fastlane/Screengrabfile @@ -1,7 +1,7 @@ # SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors # SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only -app_package_name 'com.nextcloud.client' +app_package_name 'eu.xeniacloud.files' use_tests_in_packages ['com.owncloud.android.screenshots'] test_instrumentation_runner 'androidx.test.runner.AndroidJUnitRunner' From 2daa451e96a461e6c05fe1ac649b86bb3d69cce6 Mon Sep 17 00:00:00 2001 From: v-giannakopoulos <101175436+v-giannakopoulos@users.noreply.github.com> Date: Fri, 11 Sep 2026 11:39:21 +0200 Subject: [PATCH 04/12] XNT-54: remove upstream store links and rebrand root folder display name Follow-ups flagged in review of the xenia-rebrand branch. Store/download links: the three strings are referenced from SettingsActivity (Recommend share) and CommunityFragment (RC section), so they cannot be deleted without breaking the build. Blanked instead, and disabled the Recommend preference entirely (recommend_enabled=false) so the share text does not render with empty URLs. Community RC buttons become inert -- DisplayUtils.startLinkIntent no-ops on an empty string. No Play Store listing or signed release exists yet, so pointing these at xeniacloud.eu or an empty GitHub releases page was rejected in favour of no link at all. Root folder display name: main, versionDev and qa flavours all carried the upstream name; all three updated. README: dropped the Play Store / F-Droid / Obtainium download badges pointing at com.nextcloud.client. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01AHW2vejxtCEXHnzJ92tNSX --- README.md | 10 ---------- app/src/main/res/values/setup.xml | 10 +++++----- app/src/qa/res/values/setup.xml | 2 +- app/src/versionDev/res/values/setup.xml | 2 +- 4 files changed, 7 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 1a23a124eb06..642d3bfa2c9e 100644 --- a/README.md +++ b/README.md @@ -6,16 +6,6 @@ [![REUSE status](https://api.reuse.software/badge/github.com/nextcloud/android)](https://api.reuse.software/info/github.com/nextcloud/android) [![Build Status](https://drone.nextcloud.com/api/badges/nextcloud/android/status.svg)](https://drone.nextcloud.com/nextcloud/android) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/fb4cf26336774ee3a5c9adfe829c41aa)](https://app.codacy.com/gh/nextcloud/android/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade) [![Releases](https://img.shields.io/github/release/nextcloud/android.svg)](https://github.com/nextcloud/android/releases/latest) -[](https://play.google.com/store/apps/details?id=com.nextcloud.client) -[](https://f-droid.org/packages/com.nextcloud.client/) -[](https://apps.obtainium.imranr.dev/redirect?r=obtainium://app/%7B%22id%22%3A%22com.nextcloud.client%22%2C%22url%22%3A%22https%3A%2F%2Fgithub.com%2Fnextcloud%2Fandroid%22%2C%22author%22%3A%22nextcloud%22%2C%22name%22%3A%22Nextcloud%22%2C%22preferredApkIndex%22%3A0%2C%22additionalSettings%22%3A%22%7B%5C%22includePrereleases%5C%22%3Afalse%2C%5C%22fallbackToOlderReleases%5C%22%3Atrue%2C%5C%22filterReleaseTitlesByRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22filterReleaseNotesByRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22verifyLatestTag%5C%22%3Afalse%2C%5C%22sortMethodChoice%5C%22%3A%5C%22date%5C%22%2C%5C%22useLatestAssetDateAsReleaseDate%5C%22%3Afalse%2C%5C%22releaseTitleAsVersion%5C%22%3Afalse%2C%5C%22trackOnly%5C%22%3Afalse%2C%5C%22versionExtractionRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22matchGroupToUse%5C%22%3A%5C%22%5C%22%2C%5C%22versionDetection%5C%22%3Atrue%2C%5C%22releaseDateAsVersion%5C%22%3Afalse%2C%5C%22useVersionCodeAsOSVersion%5C%22%3Afalse%2C%5C%22apkFilterRegEx%5C%22%3A%5C%22%5Enextcloud.*%5C%22%2C%5C%22invertAPKFilter%5C%22%3Afalse%2C%5C%22autoApkFilterByArch%5C%22%3Atrue%2C%5C%22appName%5C%22%3A%5C%22%5C%22%2C%5C%22appAuthor%5C%22%3A%5C%22%5C%22%2C%5C%22shizukuPretendToBeGooglePlay%5C%22%3Afalse%2C%5C%22allowInsecure%5C%22%3Afalse%2C%5C%22exemptFromBackgroundUpdates%5C%22%3Afalse%2C%5C%22skipUpdateNotifications%5C%22%3Afalse%2C%5C%22about%5C%22%3A%5C%22Nextcloud%20ist%20eine%20Cloudanwendung%2C%20die%20selbst%20gehostet%20werden%20kann.%5C%22%2C%5C%22refreshBeforeDownload%5C%22%3Atrue%7D%22%2C%22overrideSource%22%3Anull%7D) - Signing certificate fingerprint to [verify](https://developer.android.com/studio/command-line/apksigner#usage-verify) the APK using the official Android documentation. - APK with "gplay" name, found [here](https://github.com/nextcloud/android/releases) or distributed via Google Play Store - APK with "nextcloud", found [here](https://github.com/nextcloud/android/releases) diff --git a/app/src/main/res/values/setup.xml b/app/src/main/res/values/setup.xml index b03ae122d042..e3039bad909d 100644 --- a/app/src/main/res/values/setup.xml +++ b/app/src/main/res/values/setup.xml @@ -23,7 +23,7 @@ nextcloud.db nextcloud nextcloud - Nextcloud + XeniaCloud Mozilla/5.0 (Android) Nextcloud-android/%1$s%2$s Mozilla/5.0 (Android %1$s) Mobile Nextcloud-android/%2$s @@ -90,14 +90,14 @@ true https://nextcloud.com/privacy false - true + false false true https://github.com/nextcloud/android true https://www.gnu.org/licenses/gpl-2.0.html - "https://play.google.com/store/apps/details?id=com.nextcloud.client" + https://nextcloud.com/install @@ -115,8 +115,8 @@ https://f-droid.org/repository/browse/?fdid=com.nextcloud.android.beta https://download.nextcloud.com/android/dev/latest.apk - https://play.google.com/apps/testing/com.nextcloud.client - https://f-droid.org/repository/browse/?fdid=com.nextcloud.client + + https://help.nextcloud.com/c/clients/android https://app.transifex.com/nextcloud/nextcloud/android/ https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md diff --git a/app/src/qa/res/values/setup.xml b/app/src/qa/res/values/setup.xml index b6fbd52c5a6e..658dfc255709 100644 --- a/app/src/qa/res/values/setup.xml +++ b/app/src/qa/res/values/setup.xml @@ -19,7 +19,7 @@ eu.xeniacloud.files.qa.documents eu.xeniacloud.files.qa.fileprovider eu.xeniacloud.files.qa.imageCache.provider - Nextcloud QA + XeniaCloud QA true https://github.com/nextcloud/android/commits/master diff --git a/app/src/versionDev/res/values/setup.xml b/app/src/versionDev/res/values/setup.xml index 0072e42298ad..33ef70a98e91 100644 --- a/app/src/versionDev/res/values/setup.xml +++ b/app/src/versionDev/res/values/setup.xml @@ -19,7 +19,7 @@ eu.xeniacloud.files.beta.documents eu.xeniacloud.files.beta.fileprovider eu.xeniacloud.files.beta.imageCache.provider - Nextcloud Dev + XeniaCloud Dev true https://github.com/nextcloud/android/commits/master From 88bbedbc0e9b51be6dc0c5beef0216615e820af5 Mon Sep 17 00:00:00 2001 From: v-giannakopoulos <101175436+v-giannakopoulos@users.noreply.github.com> Date: Fri, 11 Sep 2026 13:17:45 +0200 Subject: [PATCH 05/12] XNT-87: fix xenia-ci trigger after xenia-rebrand branch deletion The workflow was pinned to the now-deleted xenia-rebrand branch, so no CI build path existed. Trigger on push to master and on pull requests targeting master instead. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01UwrZnx9ZWDGKvVCkoz5J2n --- .github/workflows/xenia-ci.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/xenia-ci.yml b/.github/workflows/xenia-ci.yml index d38c4e5d74ba..eb801cbccfda 100644 --- a/.github/workflows/xenia-ci.yml +++ b/.github/workflows/xenia-ci.yml @@ -6,7 +6,9 @@ name: "XeniaCloud CI" on: workflow_dispatch: push: - branches: [ xenia-rebrand ] + branches: [ master ] + pull_request: + branches: [ master ] permissions: read-all From c7f2a45fa324b05eb42ec23e899a7b6b6e02965d Mon Sep 17 00:00:00 2001 From: xeniacloud Date: Sun, 13 Sep 2026 22:28:56 +0200 Subject: [PATCH 06/12] fix(ecosystem): open the Xenia companion apps, not upstream's MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The drawer's Talk and Notes tiles, and the file-list "open in Notes" button, went through android-common's EcosystemManager, whose EcosystemApp enum hardcodes com.nextcloud.talk2 and it.niedermann.owncloud.notes. All three controls tried to launch upstream's clients, which a XeniaCloud user does not have installed, so none of them did anything useful. EcosystemApp is a plain enum with no string-resource seam, and neither it nor openApp is open to subclass, so there is nothing to override. The sending half of the logic is reimplemented app-side as XeniaEcosystemManager against a XeniaEcosystemApp enum pointed at eu.xeniacloud.notes and eu.xeniacloud.talk. Only the sending half. receiveAccount delegates to the library untouched: that path carries no package names and no branding, it only reads the account name out of an incoming intent. Keeping the delegate is also why FileDisplayActivity's call site needed no change - only the field's type changed, in its superclass. The wire contract is deliberately unchanged. The intent action is still com.nextcloud.intent.OPEN_ECOSYSTEM_APP and the extra key is still KEY_ACCOUNT, matching the intent-filter already in this app's manifest. Both are opaque identifiers the three apps have to agree on rather than branding, and renaming either would force a synchronised three-app release for no user benefit. A missing app no longer redirects to the Play Store, because XeniaCloud has no store listings and that redirect would land the user on a "not found" page. They get a snackbar instead. For the same reason the More tile is hidden rather than pointed at a Play Store search - upstream searched it for publisher "Nextcloud", so left alone it advertised upstream's apps from inside this one. The three snackbar strings are defined app-side rather than reused from the library, whose not-installed string reads "App not installed. Redirecting to store…" and no longer describes what happens. Assisted-by: ClaudeCode:claude-opus-5 Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01Mfu9zFrWdUXig9E2SDMVD6 --- .../client/ecosystem/XeniaEcosystemApp.kt | 22 ++++ .../client/ecosystem/XeniaEcosystemManager.kt | 115 ++++++++++++++++++ .../android/ui/activity/DrawerActivity.java | 20 +-- .../android/ui/adapter/OCFileListAdapter.java | 4 +- app/src/main/res/values/strings.xml | 3 + 5 files changed, 154 insertions(+), 10 deletions(-) create mode 100644 app/src/main/java/com/nextcloud/client/ecosystem/XeniaEcosystemApp.kt create mode 100644 app/src/main/java/com/nextcloud/client/ecosystem/XeniaEcosystemManager.kt diff --git a/app/src/main/java/com/nextcloud/client/ecosystem/XeniaEcosystemApp.kt b/app/src/main/java/com/nextcloud/client/ecosystem/XeniaEcosystemApp.kt new file mode 100644 index 000000000000..c19c7d74d3bc --- /dev/null +++ b/app/src/main/java/com/nextcloud/client/ecosystem/XeniaEcosystemApp.kt @@ -0,0 +1,22 @@ +/* + * Nextcloud - Android Client + * + * SPDX-FileCopyrightText: 2026 XeniaCloud + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +package com.nextcloud.client.ecosystem + +/** + * The XeniaCloud companion apps this client can hand an account to. + * + * Replaces android-common's `EcosystemApp`, whose package names are hardcoded to + * upstream's clients. There is no FILES entry: this *is* the Files client. + * + * These are the production applicationIds. The dev and QA flavours of those apps carry + * `.dev`/`.qa` suffixes and are deliberately not listed: the drawer should find the app a + * user actually installs, not a debug build. Add them here if that ever changes. + */ +enum class XeniaEcosystemApp(val packageNames: List) { + NOTES(listOf("eu.xeniacloud.notes")), + TALK(listOf("eu.xeniacloud.talk")) +} diff --git a/app/src/main/java/com/nextcloud/client/ecosystem/XeniaEcosystemManager.kt b/app/src/main/java/com/nextcloud/client/ecosystem/XeniaEcosystemManager.kt new file mode 100644 index 000000000000..9e6c31cb2bdb --- /dev/null +++ b/app/src/main/java/com/nextcloud/client/ecosystem/XeniaEcosystemManager.kt @@ -0,0 +1,115 @@ +/* + * Nextcloud - Android Client + * + * SPDX-FileCopyrightText: 2026 XeniaCloud + * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +package com.nextcloud.client.ecosystem + +import android.app.Activity +import android.content.ActivityNotFoundException +import android.content.Intent +import android.util.Log +import android.view.View +import com.google.android.material.snackbar.Snackbar +import com.nextcloud.android.common.core.utils.ecosystem.AccountReceiverCallback +import com.nextcloud.android.common.core.utils.ecosystem.EcosystemManager +import com.owncloud.android.R +import java.util.regex.Pattern + +/** + * Opens the XeniaCloud companion apps from the drawer's ecosystem tiles and from the + * file-list "open in" button. + * + * This exists because android-common's [EcosystemManager] hardcodes upstream's package + * names in its `EcosystemApp` enum, which is a plain enum with no string-resource seam + * and no open member to subclass. There is nothing to override, so the sending half of + * the logic is reimplemented here against [XeniaEcosystemApp] instead. + * + * Only the sending half. [receiveAccount] delegates straight to the library, which + * carries no package names or branding on that path - it only reads the account name out + * of an incoming intent. + * + * The wire contract is deliberately unchanged: the intent action is still + * `com.nextcloud.intent.OPEN_ECOSYSTEM_APP` and the extra key is still `KEY_ACCOUNT`. + * Both are opaque identifiers that Files, Talk and Notes have to agree on, not branding, + * and renaming either would force a synchronised three-app release for no user benefit. + */ +class XeniaEcosystemManager(private val activity: Activity) { + companion object { + private const val TAG = "XeniaEcosystemManager" + + // Must match android-common's EcosystemManager, and the intent-filter in this + // app's manifest. See the class doc. + private const val ECOSYSTEM_INTENT_ACTION = "com.nextcloud.intent.OPEN_ECOSYSTEM_APP" + private const val EXTRA_KEY_ACCOUNT = "KEY_ACCOUNT" + } + + private val accountNamePattern = Pattern.compile(EcosystemManager.ACCOUNT_NAME_PATTERN_REGEX) + + // Only ever touched by receiveAccount; built lazily so the send path does not + // pay for a second copy of the account-name Pattern. + private val delegate by lazy { EcosystemManager(activity) } + + /** + * Opens a XeniaCloud companion app, handing it the account to switch to. + * + * Unlike the library version, a missing app does not redirect to the Play Store: + * XeniaCloud has no store listings yet, so that redirect would land the user on a + * "not found" page. The user gets a snackbar and nothing else happens. + * + * @param app the companion app to open + * @param accountName the account to hand over, e.g. "user@cloud.example.com" + */ + fun openApp(app: XeniaEcosystemApp, accountName: String?) { + if (accountName.isNullOrBlank()) { + Log.w(TAG, "no account name given for ${app.name}") + showSnackbar(R.string.xenia_ecosystem_account_missing) + return + } + + if (!accountNamePattern.matcher(accountName).matches()) { + Log.w(TAG, "account name is not in the expected form") + showSnackbar(R.string.xenia_ecosystem_account_invalid) + return + } + + val installedPackage = app.packageNames.firstOrNull { packageName -> + activity.packageManager.getLaunchIntentForPackage(packageName) != null + } + + if (installedPackage == null) { + Log.w(TAG, "none of ${app.packageNames} is installed") + showSnackbar(R.string.xenia_ecosystem_app_not_installed) + return + } + + val launchIntent = Intent(ECOSYSTEM_INTENT_ACTION).apply { + setPackage(installedPackage) + putExtra(EXTRA_KEY_ACCOUNT, accountName) + addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_SINGLE_TOP) + } + + try { + activity.startActivity(launchIntent) + } catch (e: ActivityNotFoundException) { + // The package is installed but does not handle the ecosystem action - an + // older build, or one of the companion apps shipped without the filter. + Log.e(TAG, "$installedPackage does not handle $ECOSYSTEM_INTENT_ACTION", e) + showSnackbar(R.string.xenia_ecosystem_app_not_installed) + } + } + + /** + * Handles an incoming ecosystem intent. Delegates to android-common unchanged. + */ + fun receiveAccount(intent: Intent?, callback: AccountReceiverCallback) { + delegate.receiveAccount(intent, callback) + } + + private fun showSnackbar(messageRes: Int) { + val rootContent = activity.findViewById(android.R.id.content) ?: return + Snackbar.make(rootContent, activity.getString(messageRes), Snackbar.LENGTH_LONG).show() + } +} diff --git a/app/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java b/app/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java index 805b645a9095..f46aa110465e 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java +++ b/app/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java @@ -49,8 +49,8 @@ import com.google.android.material.button.MaterialButton; import com.google.android.material.navigation.NavigationView; import com.google.android.material.progressindicator.LinearProgressIndicator; -import com.nextcloud.android.common.core.utils.ecosystem.EcosystemApp; -import com.nextcloud.android.common.core.utils.ecosystem.EcosystemManager; +import com.nextcloud.client.ecosystem.XeniaEcosystemApp; +import com.nextcloud.client.ecosystem.XeniaEcosystemManager; import com.nextcloud.android.common.ui.theme.utils.ColorRole; import com.nextcloud.client.account.User; import com.nextcloud.client.di.Injectable; @@ -229,7 +229,7 @@ protected int getMenuItemId() { return R.id.nav_all_files; } - private EcosystemManager ecosystemManager; + private XeniaEcosystemManager ecosystemManager; @Inject AppPreferences preferences; @@ -497,11 +497,15 @@ private void showTopBanner(ConstraintLayout banner) { final var optionalUser = getUser(); if (optionalUser.isPresent()) { final var accountName = optionalUser.get().getAccountName(); - notesView.setOnClickListener(v -> ecosystemManager.openApp(EcosystemApp.NOTES, accountName)); - talkView.setOnClickListener(v -> ecosystemManager.openApp(EcosystemApp.TALK, accountName)); + notesView.setOnClickListener(v -> ecosystemManager.openApp(XeniaEcosystemApp.NOTES, accountName)); + talkView.setOnClickListener(v -> ecosystemManager.openApp(XeniaEcosystemApp.TALK, accountName)); } - moreView.setOnClickListener(v -> LinkHelper.INSTANCE.openAppStore("Nextcloud", true, this)); + // TODO(XNT-54): re-enable once XeniaCloud has real store listings. Upstream + // points this at a Play Store search for its own publisher; there is nothing + // to search for yet, so the tile is hidden rather than sending users to an + // empty result - or worse, to upstream's apps. + moreView.setVisibility(View.GONE); assistantView.setOnClickListener(v -> startAssistantScreen()); final var optionalCapabilities = getCapabilities(); if (optionalCapabilities.isPresent()) { @@ -797,7 +801,7 @@ private void launchActivityForSearch(SearchEvent searchEvent, int menuItemId) { startActivity(intent); } - public EcosystemManager getEcosystemManager() { + public XeniaEcosystemManager getEcosystemManager() { return ecosystemManager; } @@ -1170,7 +1174,7 @@ protected void onCreate(Bundle savedInstanceState) { externalLinksProvider = new ExternalLinksProvider(getContentResolver()); arbitraryDataProvider = new ArbitraryDataProviderImpl(this); - ecosystemManager = new EcosystemManager(this); + ecosystemManager = new XeniaEcosystemManager(this); } @Override diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListAdapter.java b/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListAdapter.java index 4aa7ae79761f..ed49379bf4a5 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListAdapter.java +++ b/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListAdapter.java @@ -27,7 +27,7 @@ import com.elyeproj.loaderviewlibrary.LoaderImageView; import com.google.android.material.chip.Chip; -import com.nextcloud.android.common.core.utils.ecosystem.EcosystemApp; +import com.nextcloud.client.ecosystem.XeniaEcosystemApp; import com.nextcloud.android.common.ui.theme.utils.ColorRole; import com.nextcloud.client.account.User; import com.nextcloud.client.database.entity.OfflineOperationEntity; @@ -471,7 +471,7 @@ public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int positi if (activity instanceof DrawerActivity drawerActivity) { final var ecosystemManager = drawerActivity.getEcosystemManager(); if (ecosystemManager != null) { - listHeaderOpenInBinding.openInButton.setOnClickListener(v -> ecosystemManager.openApp(EcosystemApp.NOTES, user.getAccountName())); + listHeaderOpenInBinding.openInButton.setOnClickListener(v -> ecosystemManager.openApp(XeniaEcosystemApp.NOTES, user.getAccountName())); } } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c1589ad6f91d..c2fbba429106 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1474,6 +1474,9 @@ Notes Talk More + Account is missing. Cannot open the app. + Invalid account format. Must be an email. + App is not installed. Details %s mm ƒ/%s From 45ec933046eea0a8841509a32f6b54cef202808b Mon Sep 17 00:00:00 2001 From: xeniacloud Date: Sun, 13 Sep 2026 22:34:50 +0200 Subject: [PATCH 07/12] fix(export): confirm a finished export on screen Export worked but showed the user nothing. exportFiles only queued FilesExportWork, and the sole success signal was a notification on NOTIFICATION_CHANNEL_DOWNLOAD, which is IMPORTANCE_LOW - no heads-up, no sound. Nothing on screen changed, and the file lands in Download/, which the app never navigates to, so a successful export was indistinguishable from a no-op. exportFiles already took a Context and a View it never used. Those are now the hook: it observes the export job and shows a snackbar when it finishes. The counts come from the worker rather than being assumed. FilesExportWork returns them in its Result, JobInfo carries a generic output map through from WorkInfo, and the snackbar picks the same three plurals the summary notification uses, so the two can never disagree - including the partial failure case, where the worker still reports Result.success. The snackbar offers the same "locate folder" action the notification does. The job outlives the screen that started it. The observer is scoped to the host activity, so the fragment's view can be detached by the time it fires and Snackbar.make would fail to find a parent; that case is skipped and the notification remains the only report, as before. This is a deliberate divergence from upstream nextcloud/android, which has the same silent behaviour. Assisted-by: ClaudeCode:claude-opus-5 Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01Mfu9zFrWdUXig9E2SDMVD6 --- .../client/jobs/BackgroundJobManagerImpl.kt | 3 +- .../nextcloud/client/jobs/FilesExportWork.kt | 15 +++- .../java/com/nextcloud/client/jobs/JobInfo.kt | 3 +- .../ui/helpers/FileOperationsHelper.java | 74 ++++++++++++++++++- 4 files changed, 89 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManagerImpl.kt b/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManagerImpl.kt index daba20131e20..3bf185f90b5f 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManagerImpl.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManagerImpl.kt @@ -168,7 +168,8 @@ internal class BackgroundJobManagerImpl( user = metadata.get(TAG_PREFIX_USER) ?: NOT_SET_VALUE, started = timestamp, progress = info.progress.getInt("progress", -1), - workerClass = metadata.get(TAG_PREFIX_CLASS) ?: NOT_SET_VALUE + workerClass = metadata.get(TAG_PREFIX_CLASS) ?: NOT_SET_VALUE, + output = info.outputData.keyValueMap ) } else { null diff --git a/app/src/main/java/com/nextcloud/client/jobs/FilesExportWork.kt b/app/src/main/java/com/nextcloud/client/jobs/FilesExportWork.kt index de69651c67e0..f42c0170ec05 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/FilesExportWork.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/FilesExportWork.kt @@ -18,6 +18,7 @@ import android.content.Intent.FLAG_ACTIVITY_NEW_TASK import androidx.core.app.NotificationCompat import androidx.work.CoroutineWorker import androidx.work.WorkerParameters +import androidx.work.workDataOf import com.nextcloud.client.account.User import com.nextcloud.client.jobs.worker.WorkerFilesPayload import com.owncloud.android.R @@ -46,6 +47,12 @@ class FilesExportWork( companion object { private const val NOTIFICATION_ID = 179 const val FILES_TO_DOWNLOAD = "files_to_download" + + // Read back from JobInfo.output so the caller can confirm the export on screen + // with the same counts the summary notification reports. + const val EXPORTED_COUNT = "exported_count" + const val FAILED_COUNT = "failed_count" + private val TAG = FilesExportWork::class.simpleName } @@ -58,7 +65,7 @@ class FilesExportWork( if (fileIds.isEmpty()) { Log_OC.w(TAG, "file export was started without any file") WorkerFilesPayload.cleanup(path) - return Result.success() + return Result.success(exportCounts(0, 0)) } val storageManager = FileDataStorageManager(user, contentResolver) @@ -67,13 +74,15 @@ class FilesExportWork( val (succeeded, failed) = exportFiles(fileIds, storageManager) notificationManager.cancel(NOTIFICATION_ID) showSummaryNotification(succeeded, failed) + return Result.success(exportCounts(succeeded, failed)) } finally { WorkerFilesPayload.cleanup(path) } - - return Result.success() } + private fun exportCounts(succeeded: Int, failed: Int) = + workDataOf(EXPORTED_COUNT to succeeded, FAILED_COUNT to failed) + @Suppress("DEPRECATION") private suspend fun exportFiles(fileIDs: List, storageManager: FileDataStorageManager): Pair = withContext(Dispatchers.IO) { diff --git a/app/src/main/java/com/nextcloud/client/jobs/JobInfo.kt b/app/src/main/java/com/nextcloud/client/jobs/JobInfo.kt index b23b9331d2b2..810d5f90f7f1 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/JobInfo.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/JobInfo.kt @@ -16,7 +16,8 @@ data class JobInfo( val user: String = "", val workerClass: String = "", val started: Date = Date(0), - val progress: Int = 0 + val progress: Int = 0, + val output: Map = emptyMap() ) data class LogEntry( diff --git a/app/src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java b/app/src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java index 967d244f8bf9..bd9a994452f4 100755 --- a/app/src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java +++ b/app/src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java @@ -15,12 +15,14 @@ import android.accounts.Account; import android.app.Activity; +import android.app.DownloadManager; import android.content.ActivityNotFoundException; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; +import android.content.res.Resources; import android.net.Uri; import android.os.Environment; import android.os.StatFs; @@ -29,9 +31,13 @@ import android.view.View; import android.webkit.MimeTypeMap; +import com.google.android.material.snackbar.Snackbar; + import com.nextcloud.client.account.CurrentAccountProvider; import com.nextcloud.client.account.User; import com.nextcloud.client.jobs.BackgroundJobManager; +import com.nextcloud.client.jobs.FilesExportWork; +import com.nextcloud.client.jobs.JobInfo; import com.nextcloud.client.jobs.download.FileDownloadHelper; import com.nextcloud.client.jobs.upload.FileUploadHelper; import com.nextcloud.client.jobs.upload.FileUploadWorker; @@ -101,6 +107,10 @@ import androidx.core.content.FileProvider; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; +import androidx.lifecycle.LifecycleOwner; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.Observer; +import androidx.work.WorkInfo; import kotlin.Unit; /** @@ -1128,7 +1138,69 @@ public void exportFiles(Collection files, Context context, View view, BackgroundJobManager backgroundJobManager) { - backgroundJobManager.startImmediateFilesExportJob(files); + LiveData job = backgroundJobManager.startImmediateFilesExportJob(files); + + if (view == null || !(context instanceof LifecycleOwner lifecycleOwner)) { + return; + } + + job.observe(lifecycleOwner, new Observer<>() { + @Override + public void onChanged(JobInfo jobInfo) { + if (jobInfo == null || !WorkInfo.State.SUCCEEDED.name().equals(jobInfo.getState())) { + return; + } + job.removeObserver(this); + showExportResult(view, jobInfo); + } + }); + } + + private void showExportResult(View view, JobInfo jobInfo) { + // The job outlives the screen that started it. The observer is scoped to the host + // activity, so by the time it fires the fragment's view may be detached and + // Snackbar.make would fail to find a parent. The notification still reports the + // outcome in that case. + if (!view.isAttachedToWindow()) { + return; + } + + int exported = readCount(jobInfo, FilesExportWork.EXPORTED_COUNT); + int failed = readCount(jobInfo, FilesExportWork.FAILED_COUNT); + + if (exported == 0 && failed == 0) { + return; + } + + // Same wording as the summary notification, so the two never disagree. + Resources resources = view.getResources(); + String message; + if (failed == 0) { + message = resources.getQuantityString(R.plurals.export_successful, exported, exported); + } else if (exported == 0) { + message = resources.getQuantityString(R.plurals.export_failed, failed, failed); + } else { + message = resources.getQuantityString(R.plurals.export_partially_failed, exported, exported); + } + + Snackbar snackbar = Snackbar.make(view, message, Snackbar.LENGTH_LONG); + if (exported > 0) { + snackbar.setAction(R.string.locate_folder, v -> { + Intent intent = new Intent(DownloadManager.ACTION_VIEW_DOWNLOADS); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + try { + view.getContext().startActivity(intent); + } catch (ActivityNotFoundException e) { + Log_OC.w(TAG, "No activity handles ACTION_VIEW_DOWNLOADS"); + } + }); + } + snackbar.show(); + } + + private int readCount(JobInfo jobInfo, String key) { + Object value = jobInfo.getOutput().get(key); + return value instanceof Integer ? (Integer) value : 0; } public long getOpIdWaitingFor() { From 373d6889d0af570e29d892f52c04494b44d73dd0 Mon Sep 17 00:00:00 2001 From: xeniacloud Date: Sun, 13 Sep 2026 22:28:19 +0200 Subject: [PATCH 08/12] fix(branding): close the remaining Xenia Files rebrand gaps Five gaps from XNT-85, four of which turned out to have a different cause than the ticket assumed. Onboarding, account setup and deep-link login all drew @drawable/logo, which was still the Nextcloud mark under LicenseRef-NextcloudTrademarks. Replaced with the Xenia cloud, taken from ic_launcher_foreground.xml so the launcher icon and every in-app logo are the one mark. Its 900x450 frame is kept, so those three screens keep their footprint. This is also the likeliest answer to the "app icon shows the Nextcloud icon somewhere" report: the launcher icon was already correct, and the account-setup screen is the surface a user meets right after it. The User-Agent keeps its Nextcloud-android token. name_for_branded_user_agent is not a replacement hook - MainApp.getUserAgent formats "Nextcloud-android/%1$s%2$s" with version and branded name, so the branded name can only ever be a suffix. The token is load-bearing: nextcloud/server matches it with IRequest::USER_AGENT_CLIENT_ANDROID, which apps/dav Auth.php uses to skip CSRF checks for official clients, and the regex allows a trailing suffix. So the brand is appended rather than substituted. The server URL is fixed via webview_login_url with show_server_url_input off, upstream's own hook for a single-tenant branded client. Login now goes straight to the Login Flow v2 WebView against portal.xeniacloud.eu and the host field is gone, so no manual entry on first launch. The drawer header showed the brand name twice because both halves come from the server, not from the layout: updateHeader loads capability.getServerLogo, and setDrawerHeaderLogo then drew capability.getServerName beside it. Upstream assumes a themed instance supplies an icon-only mark that the name completes, but XeniaCloud's theming logo is a full wordmark. The name is no longer drawn, and its TextView is removed rather than left unreachable. The fallback used when an instance supplies no theming logo was nextcloud_logo.xml, upstream's wordmark; it becomes xenia_logo.xml. The ecosystem tiles are relabelled Xenia Talk and Xenia Notes. XNT-91 pointed them at eu.xeniacloud.talk and eu.xeniacloud.notes, which left them opening the Xenia apps under upstream's names. ecosystem_apps_notes also feeds the file-list header, "This folder is best viewed in ...". Only values/strings.xml is touched; the values-* translations are left to the translation pipeline. Out of scope and untouched: the upstream project links in setup.xml (privacy_url, license_url, help_link, sourcecode_url, translation_link, contributing_link, dev_changelog), which are GPL-fork attribution. Assisted-by: ClaudeCode:claude-opus-5 Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01Mfu9zFrWdUXig9E2SDMVD6 --- .../android/ui/activity/DrawerActivity.java | 16 +++------ app/src/main/res/drawable/logo.xml | 33 +++++++++++++---- app/src/main/res/drawable/nextcloud_logo.xml | 19 ---------- app/src/main/res/drawable/xenia_logo.xml | 36 +++++++++++++++++++ app/src/main/res/layout/drawer_header.xml | 17 +-------- app/src/main/res/values/setup.xml | 17 +++++++-- app/src/main/res/values/strings.xml | 8 ++--- 7 files changed, 87 insertions(+), 59 deletions(-) delete mode 100644 app/src/main/res/drawable/nextcloud_logo.xml create mode 100644 app/src/main/res/drawable/xenia_logo.xml diff --git a/app/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java b/app/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java index f46aa110465e..591168251af6 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java +++ b/app/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java @@ -475,8 +475,7 @@ public void onResourceReady(@NonNull Drawable resource, @Nullable Transition - ~ SPDX-License-Identifier: LicenseRef-NextcloudTrademarks + ~ SPDX-FileCopyrightText: 2026 XeniaCloud + ~ SPDX-License-Identifier: AGPL-3.0-or-later +--> + - + + + + + diff --git a/app/src/main/res/drawable/nextcloud_logo.xml b/app/src/main/res/drawable/nextcloud_logo.xml deleted file mode 100644 index ef6e0eb3ee03..000000000000 --- a/app/src/main/res/drawable/nextcloud_logo.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - diff --git a/app/src/main/res/drawable/xenia_logo.xml b/app/src/main/res/drawable/xenia_logo.xml new file mode 100644 index 000000000000..e119f9948a1e --- /dev/null +++ b/app/src/main/res/drawable/xenia_logo.xml @@ -0,0 +1,36 @@ + + + + + + + + + diff --git a/app/src/main/res/layout/drawer_header.xml b/app/src/main/res/layout/drawer_header.xml index 88f7ade88c4a..f01d39b9a7d5 100644 --- a/app/src/main/res/layout/drawer_header.xml +++ b/app/src/main/res/layout/drawer_header.xml @@ -31,22 +31,7 @@ android:contentDescription="@null" android:maxWidth="96dp" android:scaleType="fitCenter" - android:src="@drawable/nextcloud_logo" /> - - + android:src="@drawable/xenia_logo" /> diff --git a/app/src/main/res/values/setup.xml b/app/src/main/res/values/setup.xml index e3039bad909d..3f6a3a0e1691 100644 --- a/app/src/main/res/values/setup.xml +++ b/app/src/main/res/values/setup.xml @@ -26,10 +26,16 @@ XeniaCloud Mozilla/5.0 (Android) Nextcloud-android/%1$s%2$s Mozilla/5.0 (Android %1$s) Mobile Nextcloud-android/%2$s - + + " (Xenia Files)" - true + false true https://www.nextcloud.com/register @@ -129,7 +135,12 @@ nc - + + https://portal.xeniacloud.eu/index.php/login/v2 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c2fbba429106..fbf700acbac3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -171,7 +171,7 @@ No device credentials have been set up. Show hidden files Show app switcher - Nextcloud app suggestions in navigation heading + Xenia app suggestions in navigation heading Show media scan notifications Notify about newly found media folders Sync calendar and contacts @@ -1468,9 +1468,9 @@ Flip vertically Unable to edit image. edited - Nextcloud Notes - Nextcloud Talk - More Nextcloud Apps + Xenia Notes + Xenia Talk + More Xenia Apps Notes Talk More From eb224c6323b40aa4217ef3556e3412090793a2e8 Mon Sep 17 00:00:00 2001 From: v-giannakopoulos <101175436+v-giannakopoulos@users.noreply.github.com> Date: Tue, 15 Sep 2026 14:06:28 +0200 Subject: [PATCH 09/12] fix(onboarding): drop provider signup and self-hosting calls to action Onboarding offered two calls to action below "Log in" that both sent a Xenia Files user to Nextcloud. "Sign up with provider" started AuthenticatorActivity with EXTRA_USE_PROVIDER_AS_WEBLOGIN, and that branch is evaluated before the webview_login_url branch, so it bypassed the single-tenant login hook entirely and loaded provider_registration_server, www.nextcloud.com/register. "Host your own server" opened url_server_install, nextcloud.com/install. The obvious fix does not work. Both buttons are gated on MDMConfig.showIntro(), which reads show_provider_or_own_installation, but that flag has four other call sites: OnboardingServiceImpl gates launchFirstRunIfNeeded on it, so turning it off would stop FirstRunActivity launching at all and make the onboarding screens dead code. It also decides whether "add account" goes through onboarding (DrawerActivity, UserListAdapter) and how the button area is sized. So the two calls to action get their own flag, show_onboarding_provider_options, defaulting to upstream's behaviour and set to false here. showIntro and the onboarding flow are untouched. Verified on a Pixel 8 emulator: onboarding still launches on first run and still shows all four pages in portrait and landscape, both buttons are gone, the button area lays out correctly with "Log in" alone, and "Log in" still starts the login flow against portal.xeniacloud.eu. Once both buttons are hidden, provider_registration_server and url_server_install are unreachable from any surviving code path. Whether to rebrand or delete those two strings is left as a separate decision. Assisted-by: ClaudeCode:claude-opus-5 Co-Authored-By: Claude Opus 5 (1M context) --- .../client/onboarding/FirstRunActivity.kt | 14 ++++++++++++-- app/src/main/res/values/setup.xml | 6 ++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/nextcloud/client/onboarding/FirstRunActivity.kt b/app/src/main/java/com/nextcloud/client/onboarding/FirstRunActivity.kt index 824e7b2d688c..aeee128da872 100644 --- a/app/src/main/java/com/nextcloud/client/onboarding/FirstRunActivity.kt +++ b/app/src/main/java/com/nextcloud/client/onboarding/FirstRunActivity.kt @@ -83,8 +83,8 @@ class FirstRunActivity : registerActivityResult() setupLoginButton() - setupSignupButton(MDMConfig.showIntro(this)) - setupHostOwnServerTextView(MDMConfig.showIntro(this)) + setupSignupButton(showProviderOptions()) + setupHostOwnServerTextView(showProviderOptions()) deleteAccountAtFirstLaunch() setupFeaturesViewAdapter() handleOnBackPressed() @@ -130,6 +130,16 @@ class FirstRunActivity : } } + /** + * Whether onboarding offers provider signup and self-hosting. + * + * Gated separately from [MDMConfig.showIntro], which also decides whether onboarding + * launches at all, so that a single-tenant build can drop these two calls to action + * while keeping the onboarding screens. + */ + private fun showProviderOptions(): Boolean = + MDMConfig.showIntro(this) && resources.getBoolean(R.bool.show_onboarding_provider_options) + private fun setupSignupButton(isProviderOrOwnInstallationVisible: Boolean) { defaultViewThemeUtils?.material?.colorMaterialButtonOutlinedOnPrimary(binding.signup) binding.signup.visibility = if (isProviderOrOwnInstallationVisible) View.VISIBLE else View.GONE diff --git a/app/src/main/res/values/setup.xml b/app/src/main/res/values/setup.xml index 3f6a3a0e1691..d3eefe60216e 100644 --- a/app/src/main/res/values/setup.xml +++ b/app/src/main/res/values/setup.xml @@ -37,6 +37,12 @@ false true + + false https://www.nextcloud.com/register From 983433cd08b481bad2166ff4e2f28336c777abeb Mon Sep 17 00:00:00 2001 From: v-giannakopoulos <101175436+v-giannakopoulos@users.noreply.github.com> Date: Tue, 15 Sep 2026 14:28:12 +0200 Subject: [PATCH 10/12] fix(drawer): drop the capability parameter left unused by XNT-85 setDrawerHeaderLogo stopped drawing capability.getServerName() next to the logo, which left createSVGLogoTarget taking an OCCapability it never reads. SpotBugs flagged it as UP_UNUSED_PARAMETER and the fork's warning count went 373 to 374; removing the parameter and its now-unused import puts it back to 373. Verified locally by running spotbugsGplayDebug on the commit before XNT-85, on master, and on this branch. The caller still uses the capability for getServerBackground and getServerLogo, so only the parameter goes. Assisted-by: ClaudeCode:claude-opus-5 Co-Authored-By: Claude Opus 5 (1M context) --- .../com/owncloud/android/ui/activity/DrawerActivity.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java b/app/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java index 591168251af6..7f1293476bef 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java +++ b/app/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java @@ -87,7 +87,6 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.lib.resources.files.SearchRemoteOperation; -import com.owncloud.android.lib.resources.status.OCCapability; import com.owncloud.android.lib.resources.users.GetUserInfoRemoteOperation; import com.owncloud.android.operations.GetCapabilitiesOperation; import com.owncloud.android.ui.events.AccountRemovedEvent; @@ -417,7 +416,7 @@ public void updateHeader() { drawerHeader.setBackgroundColor(primaryColor); if (!TextUtils.isEmpty(serverLogoURL) && URLUtil.isValidUrl(serverLogoURL)) { - Target target = createSVGLogoTarget(primaryColor, capability); + Target target = createSVGLogoTarget(primaryColor); GlideHelper.INSTANCE.loadIntoTarget(this, accountManager.getCurrentOwnCloudAccount(), serverLogoURL, @@ -438,7 +437,7 @@ public void updateHeader() { } } - private Target createSVGLogoTarget(int primaryColor, OCCapability capability) { + private Target createSVGLogoTarget(int primaryColor) { return new CustomTarget<>() { @Override public void onResourceReady(@NonNull Drawable resource, @Nullable Transition transition) { From 3ba1e21c7109dbbc6fc6658c3e356716753b5bcb Mon Sep 17 00:00:00 2001 From: v-giannakopoulos <101175436+v-giannakopoulos@users.noreply.github.com> Date: Tue, 15 Sep 2026 15:00:25 +0200 Subject: [PATCH 11/12] build: refresh the android-library pin to 8cbaa7e8 detectWrongSettings requires the pinned androidLibraryVersion to be within the last 10 commits of nextcloud/android-library master. Ours had fallen to position 13, so the check failed on every pull request. Nothing in our diffs caused it; upstream's library repo simply moved. Bumping the pin also needs its artifacts recorded in the dependency verification metadata. Only the two android-library artifacts are added, by hand. Running gradle's --write-verification-metadata generator instead wanted to add 390 components across kotlin, bouncycastle, protobuf and others, which is local resolution noise rather than anything this bump requires - the build verifies with just these two. Verified locally: assembleGenericDebug builds, detectWrongSettings.sh exits 0, and the app installs and runs on a Pixel 8 emulator - onboarding renders and the login flow reaches the portal.xeniacloud.eu grant page with no NoSuchMethodError or NoClassDefFoundError in logcat, which is the risk when the library moves 12 commits including a Kotlin bump. Note this is a treadmill: the pin will fall out of the 10-commit window again as soon as upstream pushes 10 more commits. A fork-appropriate fix for detectWrongSettings is the durable answer. Assisted-by: ClaudeCode:claude-opus-5 Co-Authored-By: Claude Opus 5 (1M context) --- gradle/libs.versions.toml | 2 +- gradle/verification-metadata.xml | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 56b5905afd71..050d2d5b8678 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -5,7 +5,7 @@ androidCommonLibraryVersion = "0.33.2" androidGifDrawableVersion = "1.2.32" androidImageCropperVersion = "4.7.0" -androidLibraryVersion ="d22a01f4b8327b6593d6af75f6be3aa7fbc2c854" +androidLibraryVersion ="8cbaa7e8a834f5c2fa6d1f24bd3b9923aa079f28" androidOpensslVersion = "3.5.6" androidPluginVersion = "9.3.2" androidsvgVersion = "1.4" diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index 5a4972919d98..f124ea0267f4 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -21804,6 +21804,14 @@ + + + + + + + + From 7a9e2528b35ea1a2ee61ac12c40fcf0dd01f8d06 Mon Sep 17 00:00:00 2001 From: xeniacloud Date: Tue, 15 Sep 2026 21:29:31 +0200 Subject: [PATCH 12/12] ci: drop android-library pin-freshness check detectWrongSettings.sh asserted that the pinned androidLibraryVersion appeared in the last 10 commits of nextcloud/android-library master. That window measures upstream's commit cadence, not any property of this repo, so the job turned red on unrelated PRs whenever upstream merged 10 commits. The SNAPSHOT and is_beta assertions are unchanged. Removing the check also drops the job's only external network call. Refs: XNT-111 Assisted-by: ClaudeCode:claude-opus-5 Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01YEsWSCebAEpW3pMUkzmFVA Signed-off-by: xeniacloud --- scripts/analysis/detectWrongSettings.sh | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/scripts/analysis/detectWrongSettings.sh b/scripts/analysis/detectWrongSettings.sh index d9ae88c323f3..31a8b45090fa 100755 --- a/scripts/analysis/detectWrongSettings.sh +++ b/scripts/analysis/detectWrongSettings.sh @@ -7,23 +7,6 @@ snapshotCount=$(./gradlew dependencies | grep SNAPSHOT -c) betaCount=$(grep "true" app/src/main/res/values/setup.xml -c) -# Read androidLibraryVersion from TOML -libraryHash=$(grep 'androidLibraryVersion =' gradle/libs.versions.toml \ - | cut -d '=' -f2 \ - | tr -d ' "' ) - -baseBranch="master" - -# Fetch last 10 commit SHAs from GitHub, without quotes -lastHashes=$(curl -s "https://api.github.com/repos/nextcloud/android-library/commits?sha=$baseBranch" \ - | jq -r '.[].sha' | head -n 10) - -# Check if libraryHash is in lastHashes -if ! echo "$lastHashes" | grep -q "^$libraryHash$"; then - echo "Library commit not within last 10 hashes, please rebase!" - exit 1 -fi - if [[ $snapshotCount -gt 0 ]] ; then echo "Snapshot found in dependencies" exit 1