From ffbd49c29b8b15ba6909369cca0e757e004ab982 Mon Sep 17 00:00:00 2001 From: Matt Czech Date: Thu, 17 Aug 2023 11:37:23 -0500 Subject: [PATCH 1/5] BIT-58: Configure the project to allow customzing bundle identifiers --- .gitignore | 3 ++ .../Support/Bitwarden.entitlements | 4 +- .../Support/Configs/Debug.xcconfig | 8 ---- .../Support/Configs/Release.xcconfig | 8 ---- Bitwarden/Application/Support/Info.plist | 2 +- .../BitwardenActionExtension.entitlements | 4 +- .../Application/Support/Info.plist | 6 +-- .../Support/BitwardenAutoFill.entitlements | 4 +- .../Application/Support/Info.plist | 2 +- .../BitwardenShareExtension.entitlements | 4 +- .../Application/Support/Info.plist | 2 +- Configs/Bitwarden-Debug.xcconfig | 8 ++++ Configs/Bitwarden-Release.xcconfig | 10 +++++ Configs/BitwardenActionExtension.xcconfig | 5 +++ Configs/BitwardenAutoFillExtension.xcconfig | 5 +++ Configs/BitwardenShareExtension.xcconfig | 5 +++ Configs/BitwardenShared.xcconfig | 4 ++ Configs/Common.xcconfig | 19 +++++++++ project.yml | 41 +++++++++++-------- 19 files changed, 96 insertions(+), 48 deletions(-) delete mode 100644 Bitwarden/Application/Support/Configs/Debug.xcconfig delete mode 100644 Bitwarden/Application/Support/Configs/Release.xcconfig create mode 100644 Configs/Bitwarden-Debug.xcconfig create mode 100644 Configs/Bitwarden-Release.xcconfig create mode 100644 Configs/BitwardenActionExtension.xcconfig create mode 100644 Configs/BitwardenAutoFillExtension.xcconfig create mode 100644 Configs/BitwardenShareExtension.xcconfig create mode 100644 Configs/BitwardenShared.xcconfig create mode 100644 Configs/Common.xcconfig diff --git a/.gitignore b/.gitignore index 28c8166d9..6df5b8272 100644 --- a/.gitignore +++ b/.gitignore @@ -70,3 +70,6 @@ fastlane/README.md # XcodeGen /*.xcodeproj + +# Local xcconfig +Configs/Local.xcconfig diff --git a/Bitwarden/Application/Support/Bitwarden.entitlements b/Bitwarden/Application/Support/Bitwarden.entitlements index fcf986d4b..b5bb98407 100644 --- a/Bitwarden/Application/Support/Bitwarden.entitlements +++ b/Bitwarden/Application/Support/Bitwarden.entitlements @@ -6,11 +6,11 @@ com.apple.security.application-groups - group.com.8bit.bitwarden + group.$(ORGANIZATION_IDENTIFIER).bitwarden keychain-access-groups - $(AppIdentifierPrefix)com.8bit.bitwarden + $(AppIdentifierPrefix)$(ORGANIZATION_IDENTIFIER).bitwarden com.apple.developer.ubiquity-container-identifiers diff --git a/Bitwarden/Application/Support/Configs/Debug.xcconfig b/Bitwarden/Application/Support/Configs/Debug.xcconfig deleted file mode 100644 index a73d78e78..000000000 --- a/Bitwarden/Application/Support/Configs/Debug.xcconfig +++ /dev/null @@ -1,8 +0,0 @@ -ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon-Dev -CODE_SIGN_ENTITLEMENTS = Bitwarden/Application/Support/Entitlements/Bitwarden.entitlements -CODE_SIGN_STYLE = Automatic -DEVELOPMENT_TEAM = EMPTY -FIREBASE_CONFIG_FILENAME = GoogleService-Info.plist -INFOPLIST_FILE = Bitwarden/Application/Support/Info.plist -PRODUCT_BUNDLE_IDENTIFIER = com.8bit.bitwarden -SWIFT_ACTIVE_COMPILATION_CONDITIONS = $(inherited) PREVIEWS diff --git a/Bitwarden/Application/Support/Configs/Release.xcconfig b/Bitwarden/Application/Support/Configs/Release.xcconfig deleted file mode 100644 index f875bb709..000000000 --- a/Bitwarden/Application/Support/Configs/Release.xcconfig +++ /dev/null @@ -1,8 +0,0 @@ -ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon -CODE_SIGN_ENTITLEMENTS = Bitwarden/Application/Support/Entitlements/Bitwarden.entitlements -CODE_SIGN_STYLE = Automatic -DEVELOPMENT_TEAM = EMPTY -FIREBASE_CONFIG_FILENAME = GoogleService-Info.plist -INFOPLIST_FILE = Bitwarden/Application/Support/Info.plist -PRODUCT_BUNDLE_IDENTIFIER = com.8bit.bitwarden -SWIFT_ACTIVE_COMPILATION_CONDITIONS = $(inherited) diff --git a/Bitwarden/Application/Support/Info.plist b/Bitwarden/Application/Support/Info.plist index 54497016a..9332b895f 100644 --- a/Bitwarden/Application/Support/Info.plist +++ b/Bitwarden/Application/Support/Info.plist @@ -11,7 +11,7 @@ CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier - com.8bit.bitwarden + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleShortVersionString 2023.7.1 CFBundleVersion diff --git a/BitwardenActionExtension/Application/Support/BitwardenActionExtension.entitlements b/BitwardenActionExtension/Application/Support/BitwardenActionExtension.entitlements index b20900dcc..225ef336e 100644 --- a/BitwardenActionExtension/Application/Support/BitwardenActionExtension.entitlements +++ b/BitwardenActionExtension/Application/Support/BitwardenActionExtension.entitlements @@ -4,11 +4,11 @@ com.apple.security.application-groups - group.com.8bit.bitwarden + group.$(ORGANIZATION_IDENTIFIER).bitwarden keychain-access-groups - $(AppIdentifierPrefix)com.8bit.bitwarden + $(AppIdentifierPrefix)$(ORGANIZATION_IDENTIFIER).bitwarden diff --git a/BitwardenActionExtension/Application/Support/Info.plist b/BitwardenActionExtension/Application/Support/Info.plist index 451bcf3f2..2c95b4c6a 100644 --- a/BitwardenActionExtension/Application/Support/Info.plist +++ b/BitwardenActionExtension/Application/Support/Info.plist @@ -9,9 +9,9 @@ CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier - com.8bit.bitwarden.find-login-action-extension + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleShortVersionString - 2023.7.1 + $(MARKETING_VERSION) CFBundleLocalizations en @@ -101,6 +101,6 @@ com.apple.ui-services CFBundleVersion - 1 + $(CURRENT_PROJECT_VERSION) diff --git a/BitwardenAutoFillExtension/Application/Support/BitwardenAutoFill.entitlements b/BitwardenAutoFillExtension/Application/Support/BitwardenAutoFill.entitlements index ef9236c02..2fd7e6a9e 100644 --- a/BitwardenAutoFillExtension/Application/Support/BitwardenAutoFill.entitlements +++ b/BitwardenAutoFillExtension/Application/Support/BitwardenAutoFill.entitlements @@ -6,11 +6,11 @@ com.apple.security.application-groups - group.com.8bit.bitwarden + group.$(ORGANIZATION_IDENTIFIER).bitwarden keychain-access-groups - $(AppIdentifierPrefix)com.8bit.bitwarden + $(AppIdentifierPrefix)$(ORGANIZATION_IDENTIFIER).bitwarden diff --git a/BitwardenAutoFillExtension/Application/Support/Info.plist b/BitwardenAutoFillExtension/Application/Support/Info.plist index 78fb69877..dde121b1c 100644 --- a/BitwardenAutoFillExtension/Application/Support/Info.plist +++ b/BitwardenAutoFillExtension/Application/Support/Info.plist @@ -9,7 +9,7 @@ CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier - com.8bit.bitwarden.autofill + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleShortVersionString 2023.7.1 CFBundleVersion diff --git a/BitwardenShareExtension/Application/Support/BitwardenShareExtension.entitlements b/BitwardenShareExtension/Application/Support/BitwardenShareExtension.entitlements index b20900dcc..225ef336e 100644 --- a/BitwardenShareExtension/Application/Support/BitwardenShareExtension.entitlements +++ b/BitwardenShareExtension/Application/Support/BitwardenShareExtension.entitlements @@ -4,11 +4,11 @@ com.apple.security.application-groups - group.com.8bit.bitwarden + group.$(ORGANIZATION_IDENTIFIER).bitwarden keychain-access-groups - $(AppIdentifierPrefix)com.8bit.bitwarden + $(AppIdentifierPrefix)$(ORGANIZATION_IDENTIFIER).bitwarden diff --git a/BitwardenShareExtension/Application/Support/Info.plist b/BitwardenShareExtension/Application/Support/Info.plist index 8080207d8..000f4b07b 100644 --- a/BitwardenShareExtension/Application/Support/Info.plist +++ b/BitwardenShareExtension/Application/Support/Info.plist @@ -7,7 +7,7 @@ CFBundleName Bitwarden Share Extension CFBundleIdentifier - com.8bit.bitwarden.share-extension + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleDevelopmentRegion en CFBundleExecutable diff --git a/Configs/Bitwarden-Debug.xcconfig b/Configs/Bitwarden-Debug.xcconfig new file mode 100644 index 000000000..3171692f8 --- /dev/null +++ b/Configs/Bitwarden-Debug.xcconfig @@ -0,0 +1,8 @@ +#include "./Common.xcconfig" +#include? "./Local.xcconfig" + +ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon-Dev +CODE_SIGN_ENTITLEMENTS = Bitwarden/Application/Support/Bitwarden.entitlements +FIREBASE_CONFIG_FILENAME = GoogleService-Info.plist +PRODUCT_BUNDLE_IDENTIFIER = $(ORGANIZATION_IDENTIFIER).bitwarden +SWIFT_ACTIVE_COMPILATION_CONDITIONS = $(inherited) PREVIEWS diff --git a/Configs/Bitwarden-Release.xcconfig b/Configs/Bitwarden-Release.xcconfig new file mode 100644 index 000000000..6c67014ea --- /dev/null +++ b/Configs/Bitwarden-Release.xcconfig @@ -0,0 +1,10 @@ +// Prevents Xcodegen from overriding the CODE_SIGN_IDENTITY value from an included xcconfig. +CODE_SIGN_IDENTITY = Apple Development + +#include "./Common.xcconfig" +#include? "./Local.xcconfig" + +ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon +CODE_SIGN_ENTITLEMENTS = Bitwarden/Application/Support/Bitwarden.entitlements +FIREBASE_CONFIG_FILENAME = GoogleService-Info.plist +PRODUCT_BUNDLE_IDENTIFIER = $(ORGANIZATION_IDENTIFIER).bitwarden diff --git a/Configs/BitwardenActionExtension.xcconfig b/Configs/BitwardenActionExtension.xcconfig new file mode 100644 index 000000000..e4460996b --- /dev/null +++ b/Configs/BitwardenActionExtension.xcconfig @@ -0,0 +1,5 @@ +#include "./Common.xcconfig" +#include? "./Local.xcconfig" + +PRODUCT_BUNDLE_IDENTIFIER = $(ORGANIZATION_IDENTIFIER).bitwarden.find-login-action-extension +PROVISIONING_PROFILE_SPECIFIER = $(PROVISIONING_PROFILE_SPECIFIER_ACTION_EXTENSION) diff --git a/Configs/BitwardenAutoFillExtension.xcconfig b/Configs/BitwardenAutoFillExtension.xcconfig new file mode 100644 index 000000000..1f2b472b1 --- /dev/null +++ b/Configs/BitwardenAutoFillExtension.xcconfig @@ -0,0 +1,5 @@ +#include "./Common.xcconfig" +#include? "./Local.xcconfig" + +PRODUCT_BUNDLE_IDENTIFIER = $(ORGANIZATION_IDENTIFIER).bitwarden.autofill +PROVISIONING_PROFILE_SPECIFIER = $(PROVISIONING_PROFILE_SPECIFIER_AUTOFILL_EXTENSION) diff --git a/Configs/BitwardenShareExtension.xcconfig b/Configs/BitwardenShareExtension.xcconfig new file mode 100644 index 000000000..0f2942c92 --- /dev/null +++ b/Configs/BitwardenShareExtension.xcconfig @@ -0,0 +1,5 @@ +#include "./Common.xcconfig" +#include? "./Local.xcconfig" + +PRODUCT_BUNDLE_IDENTIFIER = $(ORGANIZATION_IDENTIFIER).bitwarden.share-extension +PROVISIONING_PROFILE_SPECIFIER = $(PROVISIONING_PROFILE_SPECIFIER_SHARE_EXTENSION) diff --git a/Configs/BitwardenShared.xcconfig b/Configs/BitwardenShared.xcconfig new file mode 100644 index 000000000..35abaf25c --- /dev/null +++ b/Configs/BitwardenShared.xcconfig @@ -0,0 +1,4 @@ +#include "./Common.xcconfig" +#include? "./Local.xcconfig" + +PRODUCT_BUNDLE_IDENTIFIER = $(ORGANIZATION_IDENTIFIER).bitwarden.bitwarden-shared diff --git a/Configs/Common.xcconfig b/Configs/Common.xcconfig new file mode 100644 index 000000000..3ca0053c8 --- /dev/null +++ b/Configs/Common.xcconfig @@ -0,0 +1,19 @@ +CODE_SIGN_STYLE = Automatic +DEVELOPMENT_TEAM = LTZ2PFU5D6 +ORGANIZATION_IDENTIFIER = com.8bit + +// The above code signing settings can be overriden by adding a Local.xcconfig +// file in the Configs directory. +// +// As an example, add the file Local.xcconfig with the following contents: +// +// DEVELOPMENT_TEAM = +// ORGANIZATION_IDENTIFIER = +// PROVISIONING_PROFILE_SPECIFIER = +// PROVISIONING_PROFILE_SPECIFIER_ACTION_EXTENSION = +// PROVISIONING_PROFILE_SPECIFIER_AUTOFILL_EXTENSION = +// PROVISIONING_PROFILE_SPECIFIER_SHARE_EXTENSION = +// +// This should allow Xcode to build the application based on these settings without +// code signing errors or having to modify the project itself. +// diff --git a/project.yml b/project.yml index 2f594be12..2e191085c 100644 --- a/project.yml +++ b/project.yml @@ -3,7 +3,6 @@ configs: Debug: debug Release: release options: - bundleIdPrefix: com.8bit createIntermediateGroups: true deploymentTarget: iOS: 15.0 @@ -91,6 +90,11 @@ targets: Bitwarden: type: application platform: iOS + configFiles: + Debug: Configs/Bitwarden-Debug.xcconfig + Release: Configs/Bitwarden-Release.xcconfig + settings: + INFOPLIST_FILE: Bitwarden/Application/Support/Info.plist sources: - path: Bitwarden excludes: @@ -116,11 +120,6 @@ targets: - target: BitwardenShareExtension - package: Firebase product: FirebaseCrashlytics - settings: - base: - PRODUCT_BUNDLE_IDENTIFIER: com.8bit.bitwarden - INFOPLIST_FILE: Bitwarden/Application/Support/Info.plist - CODE_SIGN_ENTITLEMENTS: Bitwarden/Application/Support/Bitwarden.entitlements preBuildScripts: - path: Scripts/update_acknowledgements.sh name: "Settings.bundle: Update Acknowledgements" @@ -161,11 +160,12 @@ targets: BitwardenActionExtension: type: app-extension platform: iOS + configFiles: + Debug: Configs/BitwardenActionExtension.xcconfig + Release: Configs/BitwardenActionExtension.xcconfig settings: - base: - PRODUCT_BUNDLE_IDENTIFIER: com.8bit.bitwarden.find-login-action-extension - INFOPLIST_FILE: BitwardenActionExtension/Application/Support/Info.plist - CODE_SIGN_ENTITLEMENTS: BitwardenActionExtension/Application/Support/BitwardenActionExtension.entitlements + CODE_SIGN_ENTITLEMENTS: BitwardenActionExtension/Application/Support/BitwardenActionExtension.entitlements + INFOPLIST_FILE: BitwardenActionExtension/Application/Support/Info.plist sources: - path: BitwardenActionExtension excludes: @@ -195,11 +195,12 @@ targets: BitwardenAutoFillExtension: type: app-extension platform: iOS + configFiles: + Debug: Configs/BitwardenAutoFillExtension.xcconfig + Release: Configs/BitwardenAutoFillExtension.xcconfig settings: - base: - PRODUCT_BUNDLE_IDENTIFIER: com.8bit.bitwarden.autofill - INFOPLIST_FILE: BitwardenAutoFillExtension/Application/Support/Info.plist - CODE_SIGN_ENTITLEMENTS: BitwardenAutoFillExtension/Application/Support/BitwardenAutoFill.entitlements + CODE_SIGN_ENTITLEMENTS: BitwardenAutoFillExtension/Application/Support/BitwardenAutoFill.entitlements + INFOPLIST_FILE: BitwardenAutoFillExtension/Application/Support/Info.plist sources: - path: BitwardenAutoFillExtension excludes: @@ -229,11 +230,12 @@ targets: BitwardenShareExtension: type: app-extension platform: iOS + configFiles: + Debug: Configs/BitwardenShareExtension.xcconfig + Release: Configs/BitwardenShareExtension.xcconfig settings: - base: - PRODUCT_BUNDLE_IDENTIFIER: com.8bit.bitwarden.share-extension - INFOPLIST_FILE: BitwardenShareExtension/Application/Support/Info.plist - CODE_SIGN_ENTITLEMENTS: BitwardenShareExtension/Application/Support/BitwardenShareExtension.entitlements + CODE_SIGN_ENTITLEMENTS: BitwardenShareExtension/Application/Support/BitwardenShareExtension.entitlements + INFOPLIST_FILE: BitwardenShareExtension/Application/Support/Info.plist sources: - path: BitwardenShareExtension excludes: @@ -263,6 +265,9 @@ targets: BitwardenShared: type: framework platform: iOS + configFiles: + Debug: Configs/BitwardenShared.xcconfig + Release: Configs/BitwardenShared.xcconfig settings: base: APPLICATION_EXTENSION_API_ONLY: true From 2a0dc3fb2f9b9f811f8a9aa3e8822730400fed00 Mon Sep 17 00:00:00 2001 From: Matt Czech Date: Thu, 17 Aug 2023 11:03:31 -0500 Subject: [PATCH 2/5] BIT-58: Add app icons --- .../AppIcon-Dev.appiconset/Contents.json | 1 + .../AppIcon-Dev.appiconset/Icon-1024.png | Bin 0 -> 30793 bytes .../AppIcon.appiconset/Contents.json | 1 + .../AppIcon.appiconset/Icon-1024.png | Bin 0 -> 30793 bytes 4 files changed, 2 insertions(+) create mode 100644 Bitwarden/Application/Support/Assets.xcassets/AppIcon-Dev.appiconset/Icon-1024.png create mode 100644 Bitwarden/Application/Support/Assets.xcassets/AppIcon.appiconset/Icon-1024.png diff --git a/Bitwarden/Application/Support/Assets.xcassets/AppIcon-Dev.appiconset/Contents.json b/Bitwarden/Application/Support/Assets.xcassets/AppIcon-Dev.appiconset/Contents.json index 13613e3ee..82f5bf102 100644 --- a/Bitwarden/Application/Support/Assets.xcassets/AppIcon-Dev.appiconset/Contents.json +++ b/Bitwarden/Application/Support/Assets.xcassets/AppIcon-Dev.appiconset/Contents.json @@ -1,6 +1,7 @@ { "images" : [ { + "filename" : "Icon-1024.png", "idiom" : "universal", "platform" : "ios", "size" : "1024x1024" diff --git a/Bitwarden/Application/Support/Assets.xcassets/AppIcon-Dev.appiconset/Icon-1024.png b/Bitwarden/Application/Support/Assets.xcassets/AppIcon-Dev.appiconset/Icon-1024.png new file mode 100644 index 0000000000000000000000000000000000000000..e96f62fce9b8e10fe1f9fe69e0ebb68b5130c570 GIT binary patch literal 30793 zcmeIai96Ko7eD@V_j{{C!0Sb&HL zzef?|+!5g#@HX4wFaE~}{^I`^{VNtn7;6pR#i8S^iAbE-zn}4LoSk*}ypkS9Hl7F~ zEsy^tAd$C~5rm3t+p=+&FQL8Gyl7fOv{v`k3YkSp-LgAUBx;VH*_{<-@^1IelO_@3 znZ^$nEu~HWhjPi{l=Rd0@1DhbY7ijtI zH&Q-c==t%I`FgFFP5mvMrTl;m4;O6>s4J~4?CNV{2jtfB`+Zb+FR)?HhOG>QfD%b$ z3RU#sv|^Tq*NKa2WB(oh{ymB!lh8j}k{3{^hy^w5hS8rx5Rt2Ywxd`u7)TsLUGwih zry?P<#QrlgOcjR^2vmZZ)!aV^AS0_K{#_xyBq{+#8E9nEmj5oDOraniGUF>2bzq`I zA|kG1bK%d4s0c@SoZ_(#;v^Cx<^0c7$v*~QAnaxT!wM-f8Br)YG=J)!0}vPo|KtNn z0oJo1?vwGnKLvTV=6I$kz=4bVQl_uT_!Mc0wX6dasng& z^phtrasng&uZ?WjIpSrHwxDywGhA~r{ezp{xAN}kXS(v;p8b40x%}p&&c~}l1Wn`N zs`Dn=NNav;Z!_J*Vf67@`gi|<7bdz1bbj;Rf$wMZS3UKshH&yAvupjJ57yIkb?Ar> zkyNHoInW+GHs1dYb_xfdyt$jw`* zNReb(G&#bYhNVR%h!wg{k8Ox`H~FeQhCVu)p|2Sg^<4e}nXHobv#wVV=6i7>awV*a z!fYg#d=nhhIyT$xN0(c4<1W_=qS>4`Q^`eV6I`b{Tfy*250mAbw@`w<>j!g+k5;T0 z()~wo=A5zNz2=9WWCUT|M{WrE=ThSwP)F&uJ^Gi=QcrkzJ;v6hxb-#EKOJi;vy&42 zad?Oxn6UQc(4CD}>*FN1D09UqdV|eJ}GMT0Z=R z&h2F#m3Vx%VTu4F?SF_(z%@23uzJIB)<1P2FptrRt4SD_1u!vlq?s|C1=X)J%sErgBaStC>vZeBKdc+ynYZ#r8XHRPUCkkptuHeW+Op2Uy;;;q zvPS;pwsARHV8$6KmL!Le7ALp0c3gryg;uoo)dR$m2KNv4m3vKdq~?z?H_(<6P5L&_ z&#w=zrpr@`{(-iKX;B*8uFU=h{ru6c-$UAPhF=--x9{pD#0{Py4J-ab_FlJSH^q+I zm5c3sk>V!GSx}UW_H0$D$(c{jTTVciNRyDg5*dEza|Tb~IXO>6F|`Gq- zS^f{?$8sH=OF4fte1>`~Q8P&r5_v6sHtHi+IdHkDrtZv#kg=4@Yw?mU<3{5}qZEr^ z4H#*AM92L@Ox0uc9M$w|vdFWs!7L@$vpj$9itU?&5?g`%)@qwD_AYc?3^(fWhNjKq zf^kiJaMS{^IF6OqT>+NQbP8B#P5a&i#W2&?pG=eT8%xsu3`}kKi z?FS6{m-y4Y%S7ysb7uDIAbp5J5NScK7>LcJkKQ{n*p0>dj`m|y5zsd2tmDUn)M6>x zAq;o*zGj)ksNk;_a$xK6iPyM;HxAJ7< zZQJ9Ef6~D|4f=WV?aV)yMu}k{6npdCTmGa&9Uww}Ufmz;A)r0*ZI6G#+&}4Mu~o zeQ&_1{3aMakidG7s;m$H531~=BB3tU;}&yFuQ!7KvT%Z_Hg>j;GFB!L4giS_=QHHzqPWP$}8IxVJTZU1~tx0Fn*Xfq>r)AGdXZ=IMH zt17wJVIUw3Y7G88J?HeU#6s7Q$4voXfb~l_4(`#@M#sXaF_9?Bh5~>S2iA@2$XJMR z365_T=T0&p?_(cY^=f9)dSS2Bv+Twz>V$o#4%cShTv}^Av|(;dlHCS|yg@)^i$FcI4Ef<_-MXP^7TTwM+-Spj7SeF(XAOV#mbk(Dc{80V(-Y4G&%0^P}ia?oCg-p zzDvw-<#*oo)@$ZRt~*lHv0|72r}Yv=^ES`QV3$15pZo&3ry(*5j*6AXrZ8^hmq)YFmR^BnHHw7MJpkiSdeX@^02}ir6Z- zFV{P*?&8<6voQ%xjw0h#Mgd#$G&DKwmhyv3@fb-!;$(xgB}7y{U}q!`c|U(a<{cl@ z-!gMru_th>aONT3H%i^BqrMMWh>NCFBsd71in)zxCJqt0Ei)&Z5UcRYlAlKtiEh%1 z9r!8Lc~Cxu?-X+w&hm!!tmeQ0CJ8xPwdSYFWk%jNiPA-4qS~4(q+`4oL*y&7f1Ty* zm2Kn*GpI<23OAR3G#@HP_8zkmt^SmPhd4DS!_Vuup00~r#8zl@>1N^7M+-f^xgskY zk_?1LeP=bgPj$>ZtJ|z{xl%GrMduayH8AaUrZqE&tSv`V&8Eo+35c7C*KrUTYfFM1 z67D(9M$@1=!m+RS2>Of|?DHup;~6JORCge;Aoa~OfY(TCY+K4PGxT5aYm^T?R@mg^Dv~T8rXJ>bu>M?Sbx*X9 zG}S%eAnhsCY&_*Yj#QD}H{5FwV(8>7TqcA45?z;Z3rW3t2gG6rXqrEWkiXm4x!P$A zO~g?>O>`4Y`7$*dqxTuG_EsE;sQ0VrHe%`JC)e-_y_vA>x&?!qXp1>2x?@-7 z&TDkDVtN|rF;9YhzlZcCx!IvaM<|c^!f3chY@9Y+5rTQvnOTpaW%Dg|pML)^D|^Xb z$L~M6JwPghnwc`3roAZZMgPOSZ8l?dgv}}JrGQ0l1%6JLOSR44)Y&jOu0oF%hQ@fh z#8*f9j$x9Xf>8)ooiR|Sa`l+IW0>aD|g41;RcofuxF z8p5lXrgm{L)G*c9Jsa4`-onT^c4?!q>;U#8I5p^09_D1lb3EgzI?{_>IXfS%1;NVx zD?5c4wz_X@gky@yxG0-95;cNzSh5N|3IVMM;}z_Jr`4`I^o_!ZA~=329hiSC<^4 zZ)O$Bv;j>?yEw9*DM2g<>W`g#?49};Y;Bcnr+fF^^`3ozb!6wS2PV3k%I=cT%~Q#U z%wya4GYr@(+~1_{oP$fO#Us&<`R(m$$JYCQop0d)S0iyDJ1V^o^t`t+sw&V*bPrH^ zS|!#Ve-xzFps zk_>6vnVI#hwM~ji+l2~9@>-JW+Llues@>(Ed1o-Q|J~#v>|E=k17|^Wm3L-dUU{7w zIf>@i;P@y~VY9H$UFlhMJdggVwkd_*u&)<780^_Fy3hR{F|cWEicxM&>d;c zanK)J{cD7nYzBpJNL+68O35!vIC85!<*P&x*KEpe!1^p7e#62I_iXf+qogWBmD_=u zjvH)iO0Afa3NlGdxVgF&1G<6x7WC3{P2~IMsO*r$e?zqUiKJSCN*l z5}(o@oSL7nl-A*?`h1iX;i#D&4)|f8@h;AIYUt_kGS_GL-Ay)Gyd(%Dp=R~lJ3~jm zwDiz}yIOXe$i!1YiI`@4jdv_Jr4osq37FFP5oWGSQN*8JoH2-Yh~1!<&GpnJ*VV5+iKqcue^I7u$4_mOo*+p2d$rN zLZGJ5P0X2G8ZTTXbu&IBaZT0bH6f8{>GRP((67egw53c5@q!?)UEj~kJfm@-igJDNO+v-n$InC6cQ}hh>-sLZznuii0lTaf*Rwqg| z#Fr`EK{QN@$uOX)z{ca6QU zs0ed;=RHt_{Ujw>KEj4m77!z$y&`g&h?8PaG+kN6wmNoTHzk_ykn8U`pwHjNpvnTW z=sBO9L;fgUBk{X_s+I(RVfoCd>Ajn`)kpgR(3MS#cB?bL1OLyKYN{-nc*d!e>oZ?qnz9eQfZ=m(AKCJc* z2;4cdW%Hnz`V%r)!~|0ATXU@hWAeH_=q0@@ir-4kc7S5R_4S zzpXwNJta!I2|7N1$!6^L-)bl06r@WNPo`cM_Snl!CjK?tI& zg}(*x^6`?Xa5VrCT@A3Nm`V8la4=0M)lL*D19c5So|iH4xSlalFR(1M&wdLpP(Lo zcB*Ul3*BLD9YVMuvwE4v!m5F1Cr~p0mdLX7B~X_BGMJlqbBNX_@*i(9Ot9(>r^wMl z$&21sT%-RLzdTe$vT}K9K3>O1T>!yhjpg%xR_)E~A(owkt;TQX0qW)r(F~bm!U4$! z93@A-`?GKre#N4cEAr0Z)E7x5UYY7_&Q>E-r#(B23+8#XRM4qbcITv@3T1DM3j({( zsa*XWN+M@PF%XX1+F*mYbNK9U;+3c3z}9a}sU4!XpGnS{Vfpse?e5ce&%5rn^nh*d zmeACSr$)N^fGPa)W0$CCu~7lP1F`4~V&5To+kfbyA@=NpOCIsJnpDX{Y5i?~_vbmY zD@8?>%8%Hunlg6rVrzAZie;TD)v=k|Q!Za0uVhpXW#n~Alr7$jhd0da#P=bi)k7W{ zyhVN*1%mLJpl7mn5WDnGnL&SwnuM?S$*gSDyp3zqS8&osO+o~HNB2;~5hzQSv1HeW zzG;uzA+L;YgyvM?E-=_eoJ#4CtS;6mwePr|da63K(agO!GN>~_Lsso_4Fhm(QKexd zpVO|oc%LF$rdJ`$P;jC&Cd`S|>1a5(i9ywb##Yv@*P-1135s7Dz(FsLj;f4Q*qM)` zQm41GIS3jQX*%C7laTb%!7Xu1fXTN1WSGQl zChQ@2op;?MoO~wJp*`qh5H|aSS~OpOAm$Uc_D9A{G#LVqz4xB&M{6asq~g}O1mL!g z8BCfL=yr)GSa}I2HQz8d&A$b-emH8Fq5bRA@)|$Bx`=4DIZ;Rm%$7ZQ^u0m#}76>n=V} z@vgJ<8+O1prF*Pi)#^F0azWv%=mFi9`q8UtZm+&!Htzyss2H^5cl|9lHNpm_UlC>_yoBSwC{&$q zGQYQFU9J>igaTB+v zwUA>VSaQ|@cY#IboTh$?qO+#{yzzl_e!4%QZg)OBEZm zY!P}z`hL@hf4uw8q*cP=Z%?UN0pI^V`eAUgr`x;MKGLkUet*T3Cz~+X4Dda~j^4a8 zHDV8^=)xs+;%%j3EamIt!jH<&dnhS0hEMv;>Ea~^38gu~qAN1A9q6Rk>K}R7 z-R?BLf4jrk{eM&E0CzXdNH#?i(UzwS!}^!$+*pAq(utO8$BN@yZzyGYXPd8!QZUjG zyUmaF>Y2i9hEC11tyGySi3NeFKZ02+_q`N?F~lC91Xoo9(`%zExx3KZQS*1dHWOb1 zP`rM&Ya=mUUV9G5Yx@Ra+k6tNz2z^u{Us$Mc`UlOlJ!paHHowsv^Ev-dNHqP5z_z2-pfACxYWtu zgBhdX?hu{(F>E)t)TIa25FFN--rf9|3cR?!5MFjk>q=19Ry2}FRo43bExNGBhL7*D=%t;kC86p>(~wEMq6MT$4fpCNTI8vlxMh7mH%J~FGh2dx zrNU+yml`4-IMU_r`95sae)%VN`np4hh}i(&Lg4b(3Uw3j-o>cP{Dgq7oazC|My0xw z>!z?DV8R%6D+C`G-B>>)la@eBqd5$~5mb zmWR<5=W{^te?6@3y0F7Hc2gj}kxBD`GLv@!MDR#Uk`b-h*lm#@C`-ehb&1Wf<6^y0 z;aokVdumkL9gzAnz13@&0_oci*bA}o#J|#NK8j!cWk9>(Q{57)-}K1ZUh=hzOE2el-cn zusIVODa$U#mF6ySu)SvW+CFT{vk?Mo`QWpjmRwAsBmnF$Z3clJWq$A13cSzy8AVLI z{c++T=4?6e{?3P>kuJZy5J9~O@YOFwCWIObd<|+n`;@HAU>6s+zgE%GVHixu-+5{z zgZp)-6|PJ+Ri51af^0OzkM*NJxMcSY@;V!#+r}A>Wl%e*2-!FjR~{}onP^KM22ke% zb}!0?GpbQhJEWh6$7~|;1$!AdZZA)fyBp|a*97ntv~GnvDd#UYM)iQ){-il)H`5lN znU1prM;E+Vxg8fDYeUX3(=d9(;lm>>{S98dcX=}+(MDDy$l{JSp zFgBccYmFPf7u3k_Sie^6qe1-_M+R>s7eA+Fch$3UqSLD9FyZ)up`E;o#C%7(KZ2Az zI4?v|?e$Do+pgLAjqY&MSJu5-{OWMoi#;_%4z&6krg7Uqr@|sLw#HGJI;spFS^C(^ zYm#K;m+WLM%-m{ShP!g$lKBduuLt|*so)a$MGeA5!@_KQ8wwnOLgj2n!wtjL<3|uvDPN5_U4XN+zwoQcZx0F- zKRCD)s`C@^lMZ4h_$OJ?S5@VNOjgj=i>(x1bK=ekEf`eQ?{+>x8#={T4&7lopH{+p z91(aP0c%A>R-7DJjbG%v-y|QU;1Q$|i?6O4O$-^ShO}FT&tcwVDX<&rd>3*Ve>l@_2Y&0E84rV-U8+(c;AzUfi>2kb zgAOQ|%m(L2uQA28_x<2tZ}ZdamY!_-IG(l%aIxAg z9-ERBRkt;=2YU5D@hx%7s2$xFK4HCB_2 zLbxU&r31J+j31;S%%@cURpI5-XY_p|y3x&K|O6=@7pfR`+7O|Vze~97r zIKgRW%EjR@kgWmYl&+vha6$dMzou=X5~|N@x|BOQbXQ(tW85sl9^`td%Z;hcSJ-*? z$e`LPf0ad@RR#{6nrbwswMQ(3+pGWRiP@A@`NOg5fSqGeY2pPXlR}PdYXO!peL!{ zl2Y4+8~t*?Sne9?y+~uu+i!W`h|F&Q@J*isanR=SRd5hv%&{VM+uTs!D72Eyb8v*$@mko=>N*2YjxR34e*;&xwpQ!n;%cR_c`90?4$lNoU*VJfoTQq#uUCKc z6m0<3+mVke)+I<*EY21iG-t3~nF{E!>2{s|w4s~TT{gG^9f5B2@X-&={*gb`qeq4s z^bPcPZ={?A_hyq)Ih7Jhjg+O-_GM$=%$Nx~rEr^~ly!oIS<$g%^OX_i?ExJt90Zd} zmx#@`I14`SQHL4N(*Ks4blHx$aLRRhWdYPRcj!~0? zNAk52bzUXo_Km9!HqqAb@;O{YqzLwF1%5Zw&GCJsZef-ij?UH}ZXW*n@chb~)}?Lk zLA#?@^G;lNka!DWjvvj=vq+#u>Ks|`ca0oZwwYQ>d@WUz{R_KLeE*^B+2p5hU&A{G zY7HtK3n;*7&`ow{QgYwj=p7 z>9iafJ$>ZCCX#}dNBbE=9348ZVKl>&TG*=@3A0cpNGmfcQ3w5-XtkNqZ+aM)EEzM3 zT`v~3ht+iryR*{mVowZYFY*KrJ@C8gT#(deL)FVC5#~ao+ZiNw_a?@|)WFlAxTLIK zEZt=1Knj@AJ7G#Q>z_=<@1Bmw?s#IL<<@7OK?q3!O@Hlj4-b<#*RZo21Jc(x2m;Dv zHqW8bjsl{W?b-l##DRDk32Hh07n$OrK?onM-=_Ya*QEcv^9%j5Rl-T?Um%D-_CBGZ z%b?vd?jtEwP8{5XFdKo|szI%l55R{v))A5eF{Ad|C(~EJ_7dj6GXw~8gXFPbPRt^^ zUiv8Kp5sWD<-r-V@>;{OhD7!IuA$|C-^~^Pn0T;GDSF8u$N5>>&I9;nLUew)kgHnB z=d^3u9wdWvC41LQVjF|K7FKhDF&cq@B_k2I^=fMK$TmVi27l@icnS8)z%LE?wr988 z0$7j5fr@fdN*sesp;_M864!*bNMkJy8+L%oT7{1ez1-6$Qy7l<^(UDysP(vu({{cG zj)QEeB#Wqmi(sA?q_(y2-iMEN`8NutSM>MHkpy4*zT0$70$K{OZ2XSi=_pY`jY3p5 zO_aILrhu+;*9HCB=ER@$?N!U9jy$a2Y6Gm>0|tN7a^r6>3=bG&n(+cva46LY^8Ea_ zE1P9wdBau1JLrx)Rj-+oV-N_dh=@y^FF@jV>HB2P2gC4$2U>12EahpqGtJZ~u6MWR z=Uxyf)?FB!%jf1eahIp`lxquV6h}itG+KseD;iCrk zl67pPU@s+TMBl6ThXbpH1!j;88DjFITgD(6JEJzWn5r1jsb#d{D&CaewFB=TqUdOaUD| zq_d3XpB{#z!ExqjPjE{vJ!LumIte(>LDSzQTmuMHBM=yGpzmGcQimKHeuqo!?iM+7 z+>jWdiB5dk_F%HnMi3>XvSSaXf>nnUN7QRLiGD!3Pp0VoSZFrgKSlmxTs|WX(H_1f_~5E^o?ei$zwPyO^j8+ zYL?I%p4q=6k`94*%e(=%`mhv<@VWg(LY}+hL3GirfP|w5GN@?4~{F!DUy-QTEZL}hwMK(LgQ+7kpNc~XN!=JXf zjdc-|@!SjtW@73VbxV?+w^M56xsXq{!hH>L+!`y}xv3TeC%)2WR(CY7m({JP4BXX| z_lQh%n!Iclgi@NJOJ(^z#SefD(IFZND9?Ej@Lw_-!$O~a5N+$}=j z@fjjgZ*2{q!J?IuDbcv4rYYkj-7|L$=>-AX?f)fF3v)H8-atS%12<%zy1X}KP&M#( zW~z&)-vmU7fbEt5BnI;(Mn43JpwRPC7#qwLYbK6lkWue{!HW;jNg?C4samO|! zzR4hVR`d>-2@?59d9%#92-DqeC+@N<$%vbUZmh8pg#2qJe!ur_$TQid6? zLGHk)cDWU7#8Qvm_KJIkM8RWjd2`-}#w!JDm%f}MVR0MCefMnisyMHgj;HZ}hqJ{; z2mQxBSD{WDtRDvldcm7Xz8U>ho9gBly`)C|>e5XKX8D7Y3NA^EkB6;kI4=ZKQ8D}4 zD)e|tA!?7$?A->ot47f}$TW`3S#?1iO(y*c8LWO9v{{pvTD)KK{)f>H-nqi{jqcX2 zEB2y9e>_vUO-<$$XtgAunZ`X$LIM4Fknbto1E?4o4C}#xg2d_su@|bd*v^xmN`v#> zw&~jjI5-%qLIC5CO^sCO)-a?uEn_B|RBzmd9=XOUWd$A>_0a^rl z)nZ_Zo1S`+JUUB~XeHj8$M-o_pUTb9mxL6^A-W^iM;kvyup@*a8Er0bMn!(Kehzyh zH7)_BI5(u%ewlS@zZp~KTfNB#{gjd=yM$_96ay}ko~^CAP+9v=GrZQZQw+kQUF({E zBvxxHzLvh9$1i;#C>TEHexd^{t-sQe$ND5VD!&(hQ`%B`c!}51MXHc?WCxCm<|lcy z@nHHOm00p~v~G3(u&*~fCN-%fU0kO05M7#@X@U|jg3qf^8~hGlb9%=3M0lZ?$$A2( z3b4!#yK?$kGmaJ(T(Rq_6G+UX{lg-x%(IXrlYoJwQsXla`zsK_#HKv3e7`1<%6%Q1 zJFHsQW{=r)7;|5K5*W8;?1kNqVyr>9U*&!RfG9(2#nRU9Gx5C9(r|%YVU238m3V;$ zj65=$WCnQU2R>e()L#7b(UWxl6QS@WYbW2|E2Tf9Yeds;igDsnD#fl7yHwmDfE;fY zBd5Bdh-f;fn|^h=76F{9(TwR&6ORJKK^*aP56_;LzLuY-aRxcny6^cZGlx;x&bsB? z`co=xdph@PTQ+DE*gt_Rb%|-)ur}-|oHx^^FdEI^jFW(_kgkbTqCGZVaUejhIgP;^ z<<&$7U+rknW%WaNpA7kGFkMiM2UQYqBF0z93LJ1e(fsROPg-i};#PY|lW;a*8%`Wl zKDaH6&+i{@Du?XnzP8FF$|RncWB39uWPva*lB0FV zr&{wfU(oTb3O{vggi56^c&Q8s@jQ>lQ#V@Q6xSe);?9zljuq3aa|-qIJG-{h6q#Nu zy3}$gCs`@1qM@=tZ27I{ibWdJ`Vwi8u4ERUcCjaBldbtb+)uKWrvL0vgP`w6dqt0w zCH_pyN$|{0>g=3OB)wHI>O*JE&c7Wk(9xoPQ5kxSE7y#A|7)8dlbc3b9Q4=0_2(|| z_)a_eY+z|#_<43+jS3_!wbQ8Cw}q$IDYANQ_KaHtNvSc^NKV)As}BiYES3_K9+iX( zHfy+<(bl$QZ!pJmy|q%q;kmZ%aGb-Sx-$FjtsxBN47RK$R`!>*U-Hm${p;f|p`E zoc06{Y#WMq8;jyxnem72_REwnfXS(}-N0JTO~&rY^sjP8%#y1eC-1NI{`xqf|2)ep zpaf2hH~{Jp;6P|EJgV%*s$T?DW~VHl!ZzGtvCyh-|25KMV;kFN^5^I8RJRbb{j&4I zQtj1h(>=~j=|mF4lL}r_7yYACdwyL>g8crY;x4TZq}(>lnopM7I;^}V|HjYZE1oG` zm|oNKo%89l99T^wcDsAJ1o|Yh@6NcGlpGK5uL}w0cZb0fzaU-K$8Re(8rbwe1@M9r zYQo+fe7xZ>U_WWSV%BI&ErzKD{#5;m|5_=_^#6#NEA8R;uv9C9@!BtSN*oe_Bs|2` zKUlKNhZEfUqOIY_d;QOPFq-y4=s?eT=b%?l5Bm9Jo@fe7_CjQh=ZclkJwx(X-Rq7$ zA3ooiUfa29mIE-a5FH4`>h}$2m$e!A0yh~{Hv(q-B|5eRc-w6q7c({0&-sZZsuDE} zJXDge8v#*$W8=sr?E>(lPr6mP#*O@MH41(EvRh zBj*qvB0383LNMP(@R9W0`Q`(Wv_*VhgZ`q!vtebulB-dQgQGg2BGri2wv^zo&!^6f z^ab9yx|lc`Acqg)N-#vyqf=_}nBS7N-z{VDm)Q^S#LGjevcyp>w|(ESUMHVeZjb|h zD8pPuR6tyRIV<6u+|4O#(+ZdF)A;=9=OiCH7XqjbNsU(kYw%viW?daME6`uQ3ku*W$3fJ?vxP+7WSy)N)^sl(t1nwr`W<@Jy5Gk>YrngBH*XJ zD?k3%&mx*E3T4cXy0{h6{Bj=wzo<6K^;uW9CS$MrkR>gRg>)UXjYOquqN|W#xmq zbye8?T4f3i?8Ft27gKF;77K_qOH)~2I^j&4JfYKaSyEW4(O9vC^-;Q3D z_!tv6vO>zYLjT}VN8Chv!1~^NdOZ);XS9&x%((t^`r11TAHMuq$3rl^j44c?O1-=p zx?je-M?~IABSCkQosGDXb_28C6n;F7cUOb%Iy&=rcT|tBb;N zsFF0|Gy|ngO^Cs>l|%z#>k)!#4wi6_V6ZE26UUa>aAV!!me2YB1Y^aS4*jBMy_D0S z%a^zqTt0~2iV^yr_h0%9IFyqC^1!}39ohtwkSmwQA(d`FH1VNAsW6S?rlTHP z&hd1|`lx}-8SbxM1Vimr@a=mR{#msUW7nd4WqfD>+5R2&HZRkytSVHd99#YqCmdl$ zfW$Q(5|)<8?Bhh2rd&UhmUfZBY`Xr}ORXpR3sm=U z_VYl+5atz2^y+m_cUA8oB<0L(@tUvhhBNAgbe)BnC!aYYmnp zZhUcHVa{ZYV|3BtEG{wXSpi9-KR&Eba~Rr2M+^G8v^>}0My(4hWt{^7lFm>kCB9EJ zu9TyjVOQAaz-_)+%^l!PP4$G$@zRV#npgSH1m#7Ti-1=C%PF^;>dn7;L#Bs-nk!i# z>ucZb5o(7Tp<dl%n&DxfF*`_%;021$;Cb1`Odj zb?Aap0jI z&Nag+!yOWF>gN4bc>11XYREo=YP98^VCpxGn1B72CR{KNHf(T(&?1v7H3&*lv$WFn zM?bW+e8UG|FyQP1rvMxu8>(FQkGOFC99u=LqW)fl+=ZBNcSda4^8E# zdVF9sojY+DYtrqL7p{W>Ky}{O#!xuY-~tQx>AqtCuM&HQuj+Xi8(%_1E)dS09wBVG zRt`q$*vNZBe{mrNUk$?CCbrM4vv6<9e0ls~;7IwY__VY&_^*`EjZ{MDocSw+C;ofTXQaxtizq+e zS9Iwu%8RX87_M)p1vYDi+p90a3E?nUoErADN?5I(PVwlieD#mE?h6}w6KQ0}aEDfS!yjUjdm-SZt+w_g5FK z8-Q>hf?u)ygRxkBTP-DBw}z&Rg6hg3(R%u5w=gYyj?=x4wVSQ3veOsy~s z3ddUOJ6%V6=oQoWLl>KyL`!AEEMn4cR}1^l_My*Yd_C_GR}Z}R$+OiDd_0R=$Ly^d zVp&efpXEEMnNe4c^>R=3mRHg9ny}%*#yJAFpF2@n8Pqk&J(Z_mYDVwtN!S z1djE_1?7|PsU%;GSgc)O3pT-H?0=pair6#3UZFruNUzAKOn?K9 yBop8;0S^DMV-w&o0S^BV_j{{C!0Sb&HL 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 yBop8;0S^DMV-w&o0S^B Date: Thu, 17 Aug 2023 11:38:52 -0500 Subject: [PATCH 3/5] BIT-58: Fix TestFlight validation errors --- .../Support/Bitwarden.entitlements | 1 - Bitwarden/Application/Support/Info.plist | 2 + .../Application/Support/extension.js | 101 ++++++++++++++++++ .../Application/Support/Info.plist | 2 + 4 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 BitwardenActionExtension/Application/Support/extension.js diff --git a/Bitwarden/Application/Support/Bitwarden.entitlements b/Bitwarden/Application/Support/Bitwarden.entitlements index b5bb98407..c0b80db01 100644 --- a/Bitwarden/Application/Support/Bitwarden.entitlements +++ b/Bitwarden/Application/Support/Bitwarden.entitlements @@ -18,7 +18,6 @@ com.apple.developer.nfc.readersession.formats - NDEF TAG com.apple.developer.associated-domains diff --git a/Bitwarden/Application/Support/Info.plist b/Bitwarden/Application/Support/Info.plist index 9332b895f..1849c1aa8 100644 --- a/Bitwarden/Application/Support/Info.plist +++ b/Bitwarden/Application/Support/Info.plist @@ -18,6 +18,8 @@ 1 CFBundleIconName AppIcon + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleURLTypes diff --git a/BitwardenActionExtension/Application/Support/extension.js b/BitwardenActionExtension/Application/Support/extension.js new file mode 100644 index 000000000..6bbad37f2 --- /dev/null +++ b/BitwardenActionExtension/Application/Support/extension.js @@ -0,0 +1,101 @@ +var BitwardenExtension = function () { }; + +BitwardenExtension.prototype = { + run: function (arguments) { + console.log('Run'); + console.log(arguments); + + var args = { + 'url_string': document.URL, + pageDetails: this.collect(document) + }; + + console.log(args); + arguments.completionFunction(args); + }, + finalize: function (arguments) { + console.log('Finalize'); + console.log(arguments); + + if (arguments.fillScript) { + this.fill(document, JSON.parse(arguments.fillScript)); + } + }, + + /* + 1Password Extension + + Lovingly handcrafted by Dave Teare, Michael Fey, Rad Azzouz, and Roustem Karimov. + Copyright (c) 2014 AgileBits. All rights reserved. + + ================================================================================ + + Copyright (c) 2014 AgileBits Inc. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + */ + + collect: function(document, undefined) { + var isFirefox = false, isChrome = false, isSafari = true; + document.elementsByOPID={};document.addEventListener('input',function(b){!1!==b.a&&'input'===b.target.tagName.toLowerCase()&&(b.target.dataset['com.agilebits.onepassword.userEdited']='yes')},!0); + function q(b,d){function f(a,e){var c=a[e];if('string'==typeof c)return c;c=a.getAttribute(e);return'string'==typeof c?c:null}function h(a,e){if(-1===['text','password'].indexOf(e.type.toLowerCase())||!(m.test(a.value)||m.test(a.htmlID)||m.test(a.htmlName)||m.test(a.placeholder)||m.test(a['label-tag'])||m.test(a['label-data'])||m.test(a['label-aria'])))return!1;if(!a.visible)return!0;if('password'==e.type.toLowerCase())return!1;var c=e.type;v(e,!0);return c!==e.type}function n(a){switch(p(a.type)){case 'checkbox':return a.checked? + '✓':'';case 'hidden':a=a.value;if(!a||'number'!=typeof a.length)return'';254\\?]/mg,''):null;return[c?c:null,a.value]}),{options:a}):null}function r(a){var e;for(a=a.parentElement||a.parentNode;a&&'td'!=p(a.tagName);)a=a.parentElement||a.parentNode;if(!a|| + void 0===a)return null;e=a.parentElement||a.parentNode;if('tr'!=e.tagName.toLowerCase())return null;e=e.previousElementSibling;if(!e||'tr'!=(e.tagName+'').toLowerCase()||e.cells&&a.cellIndex>=e.cells.length)return null;a=e.cells[a.cellIndex];a=a.textContent||a.innerText;return a=x(a)}function s(a){var e,c=[];if(a.labels&&a.labels.length&&0b.clientWidth||10>b.clientHeight)return!1;var s=b.getClientRects();if(0===s.length)return!1;for(var g=0;gh||0>r.right)return!1;if(0>l||l>h||0>d||d>n)return!1;for(f=b.ownerDocument.elementFromPoint(l+(f.right>window.innerWidth?(window.innerWidth-l)/2:f.width/2),d+(f.bottom>window.innerHeight? + (window.innerHeight-d)/2:f.height/2));f&&f!==b&&f!==document;){if(f.tagName&&'string'===typeof f.tagName&&'label'===f.tagName.toLowerCase()&&b.labels&&0Bitwarden Share CFBundleName Bitwarden Share Extension + CFBundleExecutable + $(EXECUTABLE_NAME) CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleDevelopmentRegion From 06363ca3b47da6d9f9244d4638587caa178fbc2c Mon Sep 17 00:00:00 2001 From: Matt Czech Date: Thu, 17 Aug 2023 15:50:59 -0500 Subject: [PATCH 4/5] BIT-58: Update Info.plists to use MARKETING_VERSION and CURRENT_PROJECT_VERSION --- Bitwarden/Application/Support/Info.plist | 4 ++-- .../Application/Support/Info.plist | 4 ++-- .../Application/Support/Info.plist | 4 ++-- Scripts/update_settings_version_number.sh | 2 +- project.yml | 18 +++++++++++------- 5 files changed, 18 insertions(+), 14 deletions(-) diff --git a/Bitwarden/Application/Support/Info.plist b/Bitwarden/Application/Support/Info.plist index 1849c1aa8..af48390c0 100644 --- a/Bitwarden/Application/Support/Info.plist +++ b/Bitwarden/Application/Support/Info.plist @@ -13,9 +13,9 @@ CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleShortVersionString - 2023.7.1 + $(MARKETING_VERSION) CFBundleVersion - 1 + $(CURRENT_PROJECT_VERSION) CFBundleIconName AppIcon CFBundlePackageType diff --git a/BitwardenAutoFillExtension/Application/Support/Info.plist b/BitwardenAutoFillExtension/Application/Support/Info.plist index dde121b1c..957b70b46 100644 --- a/BitwardenAutoFillExtension/Application/Support/Info.plist +++ b/BitwardenAutoFillExtension/Application/Support/Info.plist @@ -11,9 +11,9 @@ CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleShortVersionString - 2023.7.1 + $(MARKETING_VERSION) CFBundleVersion - 1 + $(CURRENT_PROJECT_VERSION) CFBundleLocalizations en diff --git a/BitwardenShareExtension/Application/Support/Info.plist b/BitwardenShareExtension/Application/Support/Info.plist index 09c0b55c5..51d376181 100644 --- a/BitwardenShareExtension/Application/Support/Info.plist +++ b/BitwardenShareExtension/Application/Support/Info.plist @@ -19,9 +19,9 @@ CFBundlePackageType XPC! CFBundleShortVersionString - 2023.7.1 + $(MARKETING_VERSION) CFBundleVersion - 1 + $(CURRENT_PROJECT_VERSION) NSExtension NSExtensionMainStoryboard diff --git a/Scripts/update_settings_version_number.sh b/Scripts/update_settings_version_number.sh index 182447e5a..834cd4780 100755 --- a/Scripts/update_settings_version_number.sh +++ b/Scripts/update_settings_version_number.sh @@ -6,7 +6,7 @@ set -e SETTINGS_BUNDLE_PATH="${CODESIGNING_FOLDER_PATH}/Settings.bundle/Root.plist" BUILD_VERSION=$(sed -n '/MARKETING_VERSION/{s/MARKETING_VERSION = //;s/;//;s/^[[:space:]]*//;p;q;}' "${PROJECT_FILE_PATH}/project.pbxproj") -BUILD_NUMBER=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${INFOPLIST_FILE}") +BUILD_NUMBER=$(sed -n '/CURRENT_PROJECT_VERSION/{s/CURRENT_PROJECT_VERSION = //;s/;//;s/^[[:space:]]*//;p;q;}' "${PROJECT_FILE_PATH}/project.pbxproj") BUILD_STRING="${BUILD_VERSION} (${BUILD_NUMBER})" /usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:0:DefaultValue $BUILD_STRING" "${SETTINGS_BUNDLE_PATH}" diff --git a/project.yml b/project.yml index 2e191085c..f411d389a 100644 --- a/project.yml +++ b/project.yml @@ -94,7 +94,8 @@ targets: Debug: Configs/Bitwarden-Debug.xcconfig Release: Configs/Bitwarden-Release.xcconfig settings: - INFOPLIST_FILE: Bitwarden/Application/Support/Info.plist + base: + INFOPLIST_FILE: Bitwarden/Application/Support/Info.plist sources: - path: Bitwarden excludes: @@ -164,8 +165,9 @@ targets: Debug: Configs/BitwardenActionExtension.xcconfig Release: Configs/BitwardenActionExtension.xcconfig settings: - CODE_SIGN_ENTITLEMENTS: BitwardenActionExtension/Application/Support/BitwardenActionExtension.entitlements - INFOPLIST_FILE: BitwardenActionExtension/Application/Support/Info.plist + base: + CODE_SIGN_ENTITLEMENTS: BitwardenActionExtension/Application/Support/BitwardenActionExtension.entitlements + INFOPLIST_FILE: BitwardenActionExtension/Application/Support/Info.plist sources: - path: BitwardenActionExtension excludes: @@ -199,8 +201,9 @@ targets: Debug: Configs/BitwardenAutoFillExtension.xcconfig Release: Configs/BitwardenAutoFillExtension.xcconfig settings: - CODE_SIGN_ENTITLEMENTS: BitwardenAutoFillExtension/Application/Support/BitwardenAutoFill.entitlements - INFOPLIST_FILE: BitwardenAutoFillExtension/Application/Support/Info.plist + base: + CODE_SIGN_ENTITLEMENTS: BitwardenAutoFillExtension/Application/Support/BitwardenAutoFill.entitlements + INFOPLIST_FILE: BitwardenAutoFillExtension/Application/Support/Info.plist sources: - path: BitwardenAutoFillExtension excludes: @@ -234,8 +237,9 @@ targets: Debug: Configs/BitwardenShareExtension.xcconfig Release: Configs/BitwardenShareExtension.xcconfig settings: - CODE_SIGN_ENTITLEMENTS: BitwardenShareExtension/Application/Support/BitwardenShareExtension.entitlements - INFOPLIST_FILE: BitwardenShareExtension/Application/Support/Info.plist + base: + CODE_SIGN_ENTITLEMENTS: BitwardenShareExtension/Application/Support/BitwardenShareExtension.entitlements + INFOPLIST_FILE: BitwardenShareExtension/Application/Support/Info.plist sources: - path: BitwardenShareExtension excludes: From a9dbf0bb64d4f97719d0b15079f6612e463ff0cb Mon Sep 17 00:00:00 2001 From: Matt Czech Date: Fri, 1 Sep 2023 14:29:38 -0500 Subject: [PATCH 5/5] BIT-58: Add dev app icon --- .../AppIcon-Dev.appiconset/AppIcon-Dev.png | Bin 0 -> 15990 bytes .../AppIcon-Dev.appiconset/Contents.json | 2 +- .../AppIcon-Dev.appiconset/Icon-1024.png | Bin 30793 -> 0 bytes 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 Bitwarden/Application/Support/Assets.xcassets/AppIcon-Dev.appiconset/AppIcon-Dev.png delete mode 100644 Bitwarden/Application/Support/Assets.xcassets/AppIcon-Dev.appiconset/Icon-1024.png diff --git a/Bitwarden/Application/Support/Assets.xcassets/AppIcon-Dev.appiconset/AppIcon-Dev.png b/Bitwarden/Application/Support/Assets.xcassets/AppIcon-Dev.appiconset/AppIcon-Dev.png new file mode 100644 index 0000000000000000000000000000000000000000..0106cdf96020ccf95decfeefb82d1aeabf3863f4 GIT binary patch literal 15990 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 Lw`FW`yzqYj@X*>$ literal 0 HcmV?d00001 diff --git a/Bitwarden/Application/Support/Assets.xcassets/AppIcon-Dev.appiconset/Contents.json b/Bitwarden/Application/Support/Assets.xcassets/AppIcon-Dev.appiconset/Contents.json index 82f5bf102..461553070 100644 --- a/Bitwarden/Application/Support/Assets.xcassets/AppIcon-Dev.appiconset/Contents.json +++ b/Bitwarden/Application/Support/Assets.xcassets/AppIcon-Dev.appiconset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "Icon-1024.png", + "filename" : "AppIcon-Dev.png", "idiom" : "universal", "platform" : "ios", "size" : "1024x1024" diff --git a/Bitwarden/Application/Support/Assets.xcassets/AppIcon-Dev.appiconset/Icon-1024.png b/Bitwarden/Application/Support/Assets.xcassets/AppIcon-Dev.appiconset/Icon-1024.png deleted file mode 100644 index e96f62fce9b8e10fe1f9fe69e0ebb68b5130c570..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30793 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 yBop8;0S^DMV-w&o0S^B