diff --git a/.prettierrc.js b/.prettierrc.js index 2b54074..06860c8 100644 --- a/.prettierrc.js +++ b/.prettierrc.js @@ -1,7 +1,5 @@ module.exports = { arrowParens: 'avoid', - bracketSameLine: true, - bracketSpacing: false, singleQuote: true, trailingComma: 'all', }; diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f4f93d5..e133658 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -129,6 +129,24 @@ Finally push up your changes to your fork and open a Pull Request (PR) back into - After everything looks great, your PR will be merged into the `main` branch of `BinaryClock`! +## Credential Management in CI/CD + +### `secrets.MATCH_GIT_BASIC_AUTHORIZATION` + +This secret allows [Fastlane to clone the private +repository](https://docs.fastlane.tools/actions/match/#git-storage-on-github) +storing the iOS signing certificates and provisioning profiles. + +Configuring the secret takes two steps: + +1. Create a fine-grained personal access token with **read-only** permissions to + **Content** (which will auto-imply read permissions on **Metadata**) to the + private repository containing your signing certs and provisioning profiles. I + recommend a 1 year token expiration. +2. Base64 encode your username and token into an authorization header, and set + the resulting value as the GitHub Actions secret. + - e.g. `echo -n your_github_username:your_personal_access_token | base64` + ## Other Notes ### Common Error Messages / Solutions diff --git a/Gemfile b/Gemfile index 4921735..433534b 100644 --- a/Gemfile +++ b/Gemfile @@ -9,6 +9,12 @@ gem 'activesupport', '>= 6.1.7.5', '!= 7.1.0' gem 'xcodeproj', '< 1.26.0' gem 'concurrent-ruby', '< 1.3.4' +# Ruby 3.4.0 has removed some libraries from the standard library. +gem 'bigdecimal' +gem 'logger' +gem 'benchmark' +gem 'mutex_m' + gem 'fastlane' plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile') diff --git a/android/app/src/main/java/dev/jhale/binaryclock/MainApplication.kt b/android/app/src/main/java/dev/jhale/binaryclock/MainApplication.kt index 0399f15..ba8576e 100644 --- a/android/app/src/main/java/dev/jhale/binaryclock/MainApplication.kt +++ b/android/app/src/main/java/dev/jhale/binaryclock/MainApplication.kt @@ -4,13 +4,12 @@ import android.app.Application import com.facebook.react.PackageList import com.facebook.react.ReactApplication import com.facebook.react.ReactHost +import com.facebook.react.ReactNativeApplicationEntryPoint.loadReactNative import com.facebook.react.ReactNativeHost import com.facebook.react.ReactPackage import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost import com.facebook.react.defaults.DefaultReactNativeHost -import com.facebook.react.soloader.OpenSourceMergedSoMapping -import com.facebook.soloader.SoLoader class MainApplication : Application(), ReactApplication { @@ -35,10 +34,6 @@ class MainApplication : Application(), ReactApplication { override fun onCreate() { super.onCreate() - SoLoader.init(this, OpenSourceMergedSoMapping) - if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { - // If you opted-in for the New Architecture, we load the native entry point for this app. - load() - } + loadReactNative(this) } } diff --git a/android/build.gradle b/android/build.gradle index 9766946..b4f3ad9 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -5,7 +5,7 @@ buildscript { compileSdkVersion = 35 targetSdkVersion = 35 ndkVersion = "27.1.12297006" - kotlinVersion = "2.0.21" + kotlinVersion = "2.1.20" } repositories { google() diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar index a4b76b9530d66f5e68d973ea569d8e19de379189..1b33c55baabb587c669f562ae36f953de2481846 100644 GIT binary patch delta 34943 zcmdmgh3U&xrVZJA^}0Q$xegf!xPEW^+5YDM%iT2bEgct9o+jH~+sJas#HZ=szO|** z=Pj=X_vx?W&DSwKck|WWn~hffsvnQ+42*W$b7b0$SCcOoZ`{W{^$^pk;4>8-A*-)$ z?n(Po`1$6Jn_u?t-L+tsPyZ2#X}8T6OS8pAU;kdgd+_Hw4z4TW0p9E!T+=f7-c&O% zFic^Xd{I
M>!`Wv^dMd>$*_gk)fTb6lrQ;6V_7b};G?OA>^Q)+g~^px!!N%BXw
ze^9CTz*wVEC?+zuvGINSKfC?+>=_a`*m>f%-H!ZpMBHiJ#icc8o=*C{<4n%FUX7Ax
zO0$=G>~U{aQs~qcRNCpZlW!?+%^nf8g#PDRo0R%XOp^_zc%OV|+GD5x^KJaJV*-L<
zN>TzY%eOdxxuuz8{(||flHJSs-zRGv<*m >
zy^sEoADy~nlePbDx0UAp;kWCRA8#?=RbT(TUPHEEp32#;5?5Up_nnI9-yHP*WbmR*
z?^Gm@UVXiBmgws0E^W&-GJ@I{PbD&h?fa*)H?ya&_ww3{8;a-T^|$$5xc&Ldxxii7
zQ~LTZ|6Y_Be&W5%((m?8-wj*u)_qt0Vz}&a&8_!B`|VGDVex2xYBSg3-1py4Pwf$y
zEY@>bqJZ^P{f`qf(>MH!m^aVDuWrG~fOF6PemZDlJ9qi|wpitKxdZ>MuldWi(SEST&KJ^KG3@?9+1vw~KsyqJOR4tVA{P35>yE6qF>XR6E
zyRS%^Qzs_7^uL`bla#_?t|i~JD}Nm=TqU&S$a|&y&(5s368jtKKSczX|Bik9CF#n0
z%ZQ(^1AqC>tDC>vzH{$##gcjdissa~I_8?i{aqxluiqZKPHkz_N9Wk}_kO?f+`l@i
zFiu-#ZJ18r;V#!OO~q{E&qWdnb*el}%ISUw{h~BC>vsnyZT=L>kRd8jnf7t_$@eV5
zZ)B3UR?m6I@O*Jh;LOvX@6-#wIsN&NXLfLU=i1sm8t1zg`<}Ah;&9>f$4NHvThgDL
zDX#Mt+5cumSc}P~&$pUZu6^tOd+x;v7DcJ4J})|-zq348nzZnt#n&GX8_p(%r}DhM
zxZ(Dr#I2vz9twXuz4RRa#mYl(KRi3}Im)1Ug`{Hboa^qjdlIMU+o%4&qfuvfCbz!2
z=8oa9xfZWYLc1?CdFVa(ad*OeC%b!g$L?-^b8d53%mO7RV-eByrFQo$PuV8RwDKe!
ze6JPxu=Zl!iHJ(uMJqLA>r8q+nO0uwvz{mQJi;W({@m$Bi)G}WHVW6Q$et6-z<+iA
z105a1WA1!?pLietY0D5-%Ab?Z;u(HdW51V32BBiGe8Y?OU_?z8#(Wmgpw{bw~F-@bN=ki_%ni<#=T|69<%U)`y{KH$jj
zhnnx6860}EJoL}zDgE_zKGClqZFn<%{-S$_UO8Rg{chpf$A7w4h{o$*Yi^Ez`m=nR
z@?Xnae?@d%moy*K{;|7Zo}HQ6M~;=Z{}z4c(0A#2)mD4nW=n00ZQW0k+U0usmJjVN
zG(BN#EB&MGpKxcp>)OwrqE7V+iY~c(Rb71l?l4imWvX>{?RoF17uQ`j+5fNbIlIT&
z@-;7|6vfN0&R=%-aZqSUJ&VBA%FMv&pADmgO0RtH@$~*2ln@eSrndIT$pvz!yjO3G
z7VNdCxuj}q_cCbB`omp4Q$uZgw)a+l3Oc>K<=&d7Z~Lqowyu?$yp3b(*@St!{p&?b
zc^>~*;&IF&!}GK2XN^aB|st
zsj1)Q%sNzPYtbiWIZy56zDK)SdCp|}1&Ug=?d%HQHBIbt5tmo(Irh2gPt%v~C_Ynp
ztIF>2pLG?xR^REq>)v^1^_|sgpGTG7sLCtJuirLr_T9Pf9Bq`}$zCho{#)wx&F6Ak
z=H-{kPmca*^K9ScruyZ-^*&CCeyaC+XYjj?^Y(sf_`1h$pQp{m<6j={XS W4W`K-L`^vQYVYcJ@Vx;uQQo#{Bq!=
z;_tv-OO@!R>l^Qs-#Zju{*d?Axy@duzOCw*BNp~ 4D6ufpEcqK?e)!OXGs^qUTvpqD`sE(^
zC1%?tCA+3v@i?+eCcx(w-`Yd5Dka88%9o|vb!5)(k^5qFWYM;X1r3SogYVa$o?Rtm
zmH2{F_Ik}>pZgEuQm2I%bMZYau;zQj;e35rD(7*DS*H)BOGM~@3HvzlLao-A+h%U<;Ds4ZJ6
zc<#7-VCupP7dNe9-%`QGeecPRGf5`)m1{Qqn#i`g+1@mvE^C*4z?W$g1pU_EJ@lsc
zy7*oj^NHbxoXgcd?U^pA<8SlA*E{bJQ_pl?Ke_t{FG<|5p0`P>#NY8LBPiySER1Uw
zF)}dJGJ#|6mqvK~Q4c8tJC8@gf=q0|aVJX3cg4>5d*aPDeYbz@{}|&<8z*Hv0#$YI
zx2e``Nt<-jI{lqx@%x*
(nK(8cR;~J=vyy>h`4X
zzn!M7XS=;myx{kf(2EZ@itml9S7mnZGRUdlk*HFmXv$-lV)nCPy6rpbr(3@*+n~gI
znCEcZ0}CgkGbZ<(E_j$_^C+A39(X7yTJ$pa!2f8@rB;`wCp};*{K4-QFuCr?fmb2t
zU9Xof_LuZ~az8jAu~~7devX8MyIXr3C$qAItgF;ywi20uxN8lKhEHV^PuyC6W0qk5
zqk^U0^~C~a&Q|+(Mct6tcgN|ILC=24%e-=>rZVcQ
6x)6Yvi%e2yZ6nr!N
z)9+6K#+x+X9XYh!CD;DoRF<>1=P68Lol-ibpv~ix_It;AUCk?zZOQopuQ$r?wEcKA
z*89uVy%!4RC05mQn(sEc;TN<=5&i**se~
z*(+G3-dp+Y9
JjmJg*GcXG%~@KPR4snrTr$6RlGVHqRZ7bD
zUUcZ21}c$=I!QDZbET|B1X?Z+4bDi)_DnU|w&%i+N6aa{7x;uAeI7EaKVk
z#y3A%Dt_vK>&B36h2fS~^Y*%h2e14ausLFhzwx^~gLmg1KfcbY@OkGIf%iO@k9U8W
zZTy9mbB=!8f~hqt?^|1ye(nw~(GlD47N2%<{gNBTm%m({kU#6+4v%>63hBMvf4&+<
zMSi@#I@o-_r2o{pU!>~)`QNQMp1`8Mw@f)~$^Knu?9Bxhay{A_9+j~*=lUeA+hJLg
zb7$;IsWyK*@on5K_1h}46W$ugPJdfy#rRq%bIR1W7Ll8DFZ@n9y