diff --git a/HabitRPG/Generated/Strings.swift b/HabitRPG/Generated/Strings.swift index 1d8147869..d9261bb92 100644 --- a/HabitRPG/Generated/Strings.swift +++ b/HabitRPG/Generated/Strings.swift @@ -650,6 +650,8 @@ public enum L10n { public static var manualSyncDescription: String { return L10n.tr("Mainstrings", "manual_sync_description") } /// Manual Sync & Force Restart public static var manualSyncTitle: String { return L10n.tr("Mainstrings", "manual_sync_title") } + /// Max Gem Cap + public static var maxGemCap: String { return L10n.tr("Mainstrings", "max_gem_cap") } /// Member of a Group Plan public static var memberGroupPlan: String { return L10n.tr("Mainstrings", "member_group_plan") } /// Menu @@ -1058,7 +1060,7 @@ public enum L10n { public static var subscriberCurrency: String { return L10n.tr("Mainstrings", "subscriber_currency") } /// Subscription public static var subscription: String { return L10n.tr("Mainstrings", "subscription") } - /// Become a subscriber and you’ll get these useful benefits + /// Stay motivated with even more rewards when you subscribe public static var subscriptionBenefitsTitle: String { return L10n.tr("Mainstrings", "subscription_benefits_title") } /// You get these benefits for being a Subscriber public static var subscriptionBenefitsTitleSubscribed: String { return L10n.tr("Mainstrings", "subscription_benefits_title_subscribed") } @@ -1080,11 +1082,11 @@ public enum L10n { public static var subscriptionInfo2Title: String { return L10n.tr("Mainstrings", "subscription_info_2_title") } /// Subscribe now to get an exclusive set now and receive new items every month! public static var subscriptionInfo3Description: String { return L10n.tr("Mainstrings", "subscription_info_3_description") } - /// Subscribe now to get this %@ set now and receive new items every month! - public static func subscriptionInfo3DescriptionNew(_ p1: String) -> String { + /// Stay decked out in the latest exclusive gear. Subscribe now to get %s! + public static func subscriptionInfo3DescriptionNew(_ p1: UnsafePointer) -> String { return L10n.tr("Mainstrings", "subscription_info_3_description_new", p1) } - /// Monthly Mystery Items + /// Limited Monthly Gear Sets public static var subscriptionInfo3Title: String { return L10n.tr("Mainstrings", "subscription_info_3_title") } /// Get a Royal Purple Jackalope plus double the Eggs, Hatching Potions, and Food each day to grow your Pet collection! public static var subscriptionInfo5Description: String { return L10n.tr("Mainstrings", "subscription_info_5_description") } @@ -2739,13 +2741,13 @@ public enum L10n { public static var gemForGoldHeader: String { return L10n.tr("Mainstrings", "subscription.gem_for_gold_header") } /// Subscribers get Mystic Hourglasses to buy items in the Time Travelers Shop and these other exclusive benefits! public static var hourglassesHeader: String { return L10n.tr("Mainstrings", "subscription.hourglasses_header") } - /// Get two chances at new equipment from the Armoire for the price of one + /// Get two chances to score new equipment each time you open the Enchanted Armoire! public static var infoArmoireDescription: String { return L10n.tr("Mainstrings", "subscription.info_armoire_description") } - /// Extra Armoire chances + /// Double Armoire Rewards public static var infoArmoireTitle: String { return L10n.tr("Mainstrings", "subscription.info_armoire_title") } - /// Have the option of hanging on with 1HP when you run out of health once a day + /// Avoid losing your progress with an instant heal when you run out of HP once a day! public static var infoFaintDescription: String { return L10n.tr("Mainstrings", "subscription.info_faint_description") } - /// Second chance at life + /// Get a Second Chance public static var infoFaintTitle: String { return L10n.tr("Mainstrings", "subscription.info_faint_title") } } diff --git a/HabitRPG/Habitica-Info.plist b/HabitRPG/Habitica-Info.plist index 158c72472..bc33c050f 100644 --- a/HabitRPG/Habitica-Info.plist +++ b/HabitRPG/Habitica-Info.plist @@ -39,7 +39,7 @@ CFBundleVersion - 993 + 995 CustomDomain ${CUSTOM_DOMAIN} DisableSSL diff --git a/HabitRPG/Images.xcassets/flag_flap.imageset/Background Copy 96.png b/HabitRPG/Images.xcassets/flag_flap.imageset/Background Copy 96.png new file mode 100644 index 000000000..fbf095f59 Binary files /dev/null and b/HabitRPG/Images.xcassets/flag_flap.imageset/Background Copy 96.png differ diff --git a/HabitRPG/Images.xcassets/flag_flap.imageset/Background Copy 96@2x.png b/HabitRPG/Images.xcassets/flag_flap.imageset/Background Copy 96@2x.png new file mode 100644 index 000000000..4cdb4a573 Binary files /dev/null and b/HabitRPG/Images.xcassets/flag_flap.imageset/Background Copy 96@2x.png differ diff --git a/HabitRPG/Images.xcassets/flag_flap.imageset/Background Copy 96@3x.png b/HabitRPG/Images.xcassets/flag_flap.imageset/Background Copy 96@3x.png new file mode 100644 index 000000000..b9d656371 Binary files /dev/null and b/HabitRPG/Images.xcassets/flag_flap.imageset/Background Copy 96@3x.png differ diff --git a/HabitRPG/Images.xcassets/flag_flap.imageset/Contents.json b/HabitRPG/Images.xcassets/flag_flap.imageset/Contents.json index aebef56e2..5538d17be 100644 --- a/HabitRPG/Images.xcassets/flag_flap.imageset/Contents.json +++ b/HabitRPG/Images.xcassets/flag_flap.imageset/Contents.json @@ -1,26 +1,26 @@ { "images" : [ { + "filename" : "Background Copy 96.png", "idiom" : "universal", - "filename" : "flag_flap.png", "scale" : "1x" }, { + "filename" : "Background Copy 96@2x.png", "idiom" : "universal", - "filename" : "flag_flap@2x.png", "scale" : "2x" }, { + "filename" : "Background Copy 96@3x.png", "idiom" : "universal", - "filename" : "flag_flap@3x.png", "scale" : "3x" } ], "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 }, "properties" : { "template-rendering-intent" : "template" } -} \ No newline at end of file +} diff --git a/HabitRPG/Images.xcassets/flag_flap.imageset/flag_flap.png b/HabitRPG/Images.xcassets/flag_flap.imageset/flag_flap.png deleted file mode 100644 index 905861e1b..000000000 Binary files a/HabitRPG/Images.xcassets/flag_flap.imageset/flag_flap.png and /dev/null differ diff --git a/HabitRPG/Images.xcassets/flag_flap.imageset/flag_flap@2x.png b/HabitRPG/Images.xcassets/flag_flap.imageset/flag_flap@2x.png deleted file mode 100644 index aee94d932..000000000 Binary files a/HabitRPG/Images.xcassets/flag_flap.imageset/flag_flap@2x.png and /dev/null differ diff --git a/HabitRPG/Images.xcassets/flag_flap.imageset/flag_flap@3x.png b/HabitRPG/Images.xcassets/flag_flap.imageset/flag_flap@3x.png deleted file mode 100644 index aad0eab80..000000000 Binary files a/HabitRPG/Images.xcassets/flag_flap.imageset/flag_flap@3x.png and /dev/null differ diff --git a/HabitRPG/Images.xcassets/sub_benefit_drops.imageset/Contents.json b/HabitRPG/Images.xcassets/sub_benefit_drops.imageset/Contents.json index 6f72e85d7..f8948335a 100644 --- a/HabitRPG/Images.xcassets/sub_benefit_drops.imageset/Contents.json +++ b/HabitRPG/Images.xcassets/sub_benefit_drops.imageset/Contents.json @@ -1,23 +1,23 @@ { "images" : [ { + "filename" : "sub_bene_pet.png", "idiom" : "universal", - "filename" : "sub_benefits_drops.png", "scale" : "1x" }, { + "filename" : "sub_bene_pet@2x.png", "idiom" : "universal", - "filename" : "sub_benefits_drops@2x.png", "scale" : "2x" }, { + "filename" : "sub_bene_pet@3x.png", "idiom" : "universal", - "filename" : "sub_benefits_drops@3x.png", "scale" : "3x" } ], "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 } -} \ No newline at end of file +} diff --git a/HabitRPG/Images.xcassets/sub_benefit_drops.imageset/sub_bene_pet.png b/HabitRPG/Images.xcassets/sub_benefit_drops.imageset/sub_bene_pet.png new file mode 100644 index 000000000..544b74a9e Binary files /dev/null and b/HabitRPG/Images.xcassets/sub_benefit_drops.imageset/sub_bene_pet.png differ diff --git a/HabitRPG/Images.xcassets/sub_benefit_drops.imageset/sub_bene_pet@2x.png b/HabitRPG/Images.xcassets/sub_benefit_drops.imageset/sub_bene_pet@2x.png new file mode 100644 index 000000000..83b22025c Binary files /dev/null and b/HabitRPG/Images.xcassets/sub_benefit_drops.imageset/sub_bene_pet@2x.png differ diff --git a/HabitRPG/Images.xcassets/sub_benefit_drops.imageset/sub_bene_pet@3x.png b/HabitRPG/Images.xcassets/sub_benefit_drops.imageset/sub_bene_pet@3x.png new file mode 100644 index 000000000..b588d14fa Binary files /dev/null and b/HabitRPG/Images.xcassets/sub_benefit_drops.imageset/sub_bene_pet@3x.png differ diff --git a/HabitRPG/Images.xcassets/sub_benefit_drops.imageset/sub_benefits_drops.png b/HabitRPG/Images.xcassets/sub_benefit_drops.imageset/sub_benefits_drops.png deleted file mode 100644 index 5529ef3ff..000000000 Binary files a/HabitRPG/Images.xcassets/sub_benefit_drops.imageset/sub_benefits_drops.png and /dev/null differ diff --git a/HabitRPG/Images.xcassets/sub_benefit_drops.imageset/sub_benefits_drops@2x.png b/HabitRPG/Images.xcassets/sub_benefit_drops.imageset/sub_benefits_drops@2x.png deleted file mode 100644 index 32eee72fb..000000000 Binary files a/HabitRPG/Images.xcassets/sub_benefit_drops.imageset/sub_benefits_drops@2x.png and /dev/null differ diff --git a/HabitRPG/Images.xcassets/sub_benefit_drops.imageset/sub_benefits_drops@3x.png b/HabitRPG/Images.xcassets/sub_benefit_drops.imageset/sub_benefits_drops@3x.png deleted file mode 100644 index f8f1b4c9a..000000000 Binary files a/HabitRPG/Images.xcassets/sub_benefit_drops.imageset/sub_benefits_drops@3x.png and /dev/null differ diff --git a/HabitRPG/Strings/Base.lproj/Mainstrings.strings b/HabitRPG/Strings/Base.lproj/Mainstrings.strings index 5ef7c4f44..49ce08d36 100644 --- a/HabitRPG/Strings/Base.lproj/Mainstrings.strings +++ b/HabitRPG/Strings/Base.lproj/Mainstrings.strings @@ -733,6 +733,7 @@ "gift_gems_prompt" = "Want to bestow a shiny haul of Gems to someone else?"; "gem_cap" = "Unlocks %d Gold-purchasable Gems per month"; "two_gems_per_month" = "+2 Gems each month"; +"max_gem_cap" = "Max Gem Cap"; "hourglass_count" = "+%d Mystic Hourglass"; "intro.welcome_prompt" = "What should we call you?"; "intro.welcome_speechbubble" = "Oh, you must be new here. I’m Justin, your guide to Habitica.\n\nFirst, what should we call you? Feel free to change what I picked. When you’re all set, let’s create your avatar!"; @@ -938,16 +939,16 @@ "subscription_info_1_description" = "Get up to 50 Gems in the Market to buy Quests, Customizations, Pets, and more!"; "subscription_info_2_title" = "Monthly Mystic Hourglasses"; "subscription_info_2_description" = "Never miss an item with 1 Mystic Hourglass a month to use in the Time Travelers Shop!"; -"subscription_info_3_title" = "Monthly Mystery Items"; +"subscription_info_3_title" = "Limited Monthly Gear Sets"; "subscription_info_3_description" = "Subscribe now to get an exclusive set now and receive new items every month!"; -"subscription_info_3_description_new" = "Subscribe now to get this %@ set now and receive new items every month!"; +"subscription_info_3_description_new" = "Stay decked out in the latest exclusive gear. Subscribe now to get %s!"; "subscription_info_5_title" = "Special Pet & More Drops"; "subscription_info_5_description" = "Get a Royal Purple Jackalope plus double the Eggs, Hatching Potions, and Food each day to grow your Pet collection!"; -"subscription.info_armoire_title" = "Extra Armoire chances"; -"subscription.info_armoire_description" = "Get two chances at new equipment from the Armoire for the price of one"; -"subscription.info_faint_title" = "Second chance at life"; -"subscription.info_faint_description" = "Have the option of hanging on with 1HP when you run out of health once a day"; -"subscription_benefits_title" = "Become a subscriber and you’ll get these useful benefits"; +"subscription.info_armoire_title" = "Double Armoire Rewards"; +"subscription.info_armoire_description" = "Get two chances to score new equipment each time you open the Enchanted Armoire!"; +"subscription.info_faint_title" = "Get a Second Chance"; +"subscription.info_faint_description" = "Avoid losing your progress with an instant heal when you run out of HP once a day!"; +"subscription_benefits_title" = "Stay motivated with even more rewards when you subscribe"; "subscription_benefits_title_subscribed" = "You get these benefits for being a Subscriber"; "subscription_options_title" = "Choose the Subscription length that works for you"; "subscription_gift_explanation" = "Want to give the benefits of a subscription to someone else?"; diff --git a/HabitRPG/TableviewCells/SubscriptionDetailView.swift b/HabitRPG/TableviewCells/SubscriptionDetailView.swift index 6eb0afa62..a7dbcb827 100644 --- a/HabitRPG/TableviewCells/SubscriptionDetailView.swift +++ b/HabitRPG/TableviewCells/SubscriptionDetailView.swift @@ -109,14 +109,20 @@ class SubscriptionDetailView: UITableViewCell { gemCapPill.text = String(plan.gemCapTotal) var months = DateComponents() months.month = plan.monthsUntilNextHourglass - if plan.isActive && !plan.isGifted && plan.dateTerminated == nil, let nextDate = Calendar.current.date(byAdding: months, to: Date()) { - let formatter = DateFormatter() - if Calendar.current.compare(nextDate, to: Date(), toGranularity: .year) != .orderedSame { - formatter.dateFormat = "MMMM YYYY" + var firstDay = DateComponents() + firstDay.day = 1 + if let startOfMonth = Calendar.current.nextDate(after: Date(), matching: firstDay, matchingPolicy: .nextTime, direction: .backward), let nextDate = Calendar.current.date(byAdding: months, to: startOfMonth), plan.isActive { + if let dateTerminated = plan.dateTerminated, dateTerminated < nextDate { + hourGlassCountPill.text = "--" } else { - formatter.dateFormat = "MMMM" + let formatter = DateFormatter() + if Calendar.current.compare(nextDate, to: Date(), toGranularity: .year) != .orderedSame { + formatter.dateFormat = "d MMMM YYYY" + } else { + formatter.dateFormat = "d MMMM" + } + hourGlassCountPill.text = formatter.string(from: nextDate) } - hourGlassCountPill.text = formatter.string(from: nextDate) } else { hourGlassCountPill.text = "--" } diff --git a/HabitRPG/TableviewCells/SubscriptionOptionView.swift b/HabitRPG/TableviewCells/SubscriptionOptionView.swift index d46b417f3..d44a70f52 100644 --- a/HabitRPG/TableviewCells/SubscriptionOptionView.swift +++ b/HabitRPG/TableviewCells/SubscriptionOptionView.swift @@ -93,7 +93,7 @@ class SubscriptionOptionView: UITableViewCell { showGemsPerMonth(true) case 12: setGemCap(50) - showGemsPerMonth(false) + showGemsPerMonth(true, text: L10n.maxGemCap) default: break } @@ -103,7 +103,7 @@ class SubscriptionOptionView: UITableViewCell { gemCapLabel.text = L10n.gemCap(count) } - private func showGemsPerMonth(_ show: Bool) { + private func showGemsPerMonth(_ show: Bool, text: String = L10n.twoGemsPerMonth) { if show { mysticHourglassLabel.isHidden = false mysticHourglassLabel.text = L10n.twoGemsPerMonth diff --git a/HabitRPG/TableviewCells/SubscriptionOptionView.xib b/HabitRPG/TableviewCells/SubscriptionOptionView.xib index 7c36f4318..5c4452e06 100644 --- a/HabitRPG/TableviewCells/SubscriptionOptionView.xib +++ b/HabitRPG/TableviewCells/SubscriptionOptionView.xib @@ -1,49 +1,44 @@ - + - + - - + + - + - + - + - - - - - - + - + - - + - - + + - @@ -151,14 +145,9 @@ - + - - - - - diff --git a/HabitRPG/UI/Purchases/SubscriptionPage.swift b/HabitRPG/UI/Purchases/SubscriptionPage.swift index b7d3c0b98..2c0a6b924 100644 --- a/HabitRPG/UI/Purchases/SubscriptionPage.swift +++ b/HabitRPG/UI/Purchases/SubscriptionPage.swift @@ -315,7 +315,8 @@ struct SubscriptionPage: View { if viewModel.presentationPoint != .gemForGold { SubscriptionBenefitView(icon: Image(Asset.subBenefitsGems.name), title: Text(L10n.subscriptionInfo1Title), description: Text(L10n.subscriptionInfo1Description)) } - SubscriptionBenefitView(icon: PixelArtView(name: "shop_set_mystery_\(viewModel.mysteryGear?.key?.split(separator: "_").last ?? "")"), title: Text(L10n.subscriptionInfo3Title), description: Text(L10n.subscriptionInfo3Description)) + SubscriptionBenefitView(icon: PixelArtView(name: "shop_set_mystery_\(viewModel.mysteryGear?.key?.split(separator: "_").last ?? "")"), title: Text(L10n.subscriptionInfo3Title), + description: Text(L10n.subscriptionInfo3Description)) if viewModel.presentationPoint != .timetravelers { SubscriptionBenefitView(icon: Image(Asset.subBenefitsHourglasses.name), title: Text(L10n.subscriptionInfo2Title), description: Text(L10n.subscriptionInfo2Description)) diff --git a/HabitRPG/UI/Purchases/SubscriptionViewController.swift b/HabitRPG/UI/Purchases/SubscriptionViewController.swift index 5f50bee5d..768090c61 100644 --- a/HabitRPG/UI/Purchases/SubscriptionViewController.swift +++ b/HabitRPG/UI/Purchases/SubscriptionViewController.swift @@ -236,7 +236,7 @@ class SubscriptionViewController: BaseTableViewController { override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { if isInformationSection(section) { - return 7 + return 6 } else if isOptionSection(section) { guard let products = self.products else { return 0 diff --git a/HabitRPG/Views/FlagView.swift b/HabitRPG/Views/FlagView.swift index f61eaadd9..bc102f2f6 100644 --- a/HabitRPG/Views/FlagView.swift +++ b/HabitRPG/Views/FlagView.swift @@ -20,28 +20,7 @@ class FlagView: UIView { } } - @IBInspectable var flagColor: UIColor = UIColor.gray400 { - didSet { - label.backgroundColor = flagColor - flapView.tintColor = flagColor - - if self.automaticTextColor { - var red: CGFloat = 0 - var green: CGFloat = 0 - var blue: CGFloat = 0 - var alpha: CGFloat = 0 - if flagColor.getRed(&red, green: &green, blue: &blue, alpha: &alpha) { - if red*0.299 + green*0.587 + blue*0.114 > 0.829 { - self.label.textColor = .black - } else { - self.label.textColor = .white - } - } - } - } - } - - @IBInspectable var textColor: UIColor = UIColor.white { + @IBInspectable var textColor: UIColor = UIColor.teal1 { didSet { self.label.textColor = textColor } @@ -59,6 +38,7 @@ class FlagView: UIView { } } + private let gradientView = GradientView() private let label = UILabel() private let flapView = UIImageView(image: Asset.flagFlap.image) @@ -73,17 +53,24 @@ class FlagView: UIView { } func setupView() { + addSubview(gradientView) addSubview(label) addSubview(flapView) label.textAlignment = .center label.font = UIFont.boldSystemFont(ofSize: 12) label.textColor = textColor + + gradientView.horizontalMode = true + gradientView.startColor = UIColor.teal100 + gradientView.endColor = UIColor.blue100 + flapView.tintColor = UIColor.teal100 } override func layoutSubviews() { super.layoutSubviews() - flapView.frame = CGRect(x: 0, y: 0, width: 9, height: 24) - label.frame = CGRect(x: 9, y: 0, width: frame.size.width-9, height: frame.size.height) + flapView.frame = CGRect(x: 0, y: 0, width: 4, height: 24) + gradientView.frame = CGRect(x: 4, y: 0, width: frame.size.width-4, height: frame.size.height) + label.frame = CGRect(x: 4, y: 0, width: frame.size.width-4, height: frame.size.height) } override var intrinsicContentSize: CGSize { @@ -91,7 +78,7 @@ class FlagView: UIView { return CGSize(width: 0, height: 0) } let originalSize = label.intrinsicContentSize - let width = originalSize.width+20 + let width = originalSize.width+15 let height = CGFloat(24) return CGSize(width: width, height: height) } diff --git a/Habitica Intents/Info.plist b/Habitica Intents/Info.plist index 4689af8fb..a047720b9 100644 --- a/Habitica Intents/Info.plist +++ b/Habitica Intents/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString $(MARKETING_VERSION) CFBundleVersion - 993 + 995 NSExtension NSExtensionAttributes diff --git a/Habitica IntentsUI/Info.plist b/Habitica IntentsUI/Info.plist index 316cd91a0..0dfd2f1b9 100644 --- a/Habitica IntentsUI/Info.plist +++ b/Habitica IntentsUI/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString $(MARKETING_VERSION) CFBundleVersion - 993 + 995 NSExtension NSExtensionAttributes diff --git a/Habitica Snapshots/Info.plist b/Habitica Snapshots/Info.plist index d2c9de7c1..cfebbb512 100644 --- a/Habitica Snapshots/Info.plist +++ b/Habitica Snapshots/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.0 CFBundleVersion - 993 + 995 diff --git a/Habitica Widgets/Info.plist b/Habitica Widgets/Info.plist index 49a4cecee..b72b96983 100644 --- a/Habitica Widgets/Info.plist +++ b/Habitica Widgets/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString $(MARKETING_VERSION) CFBundleVersion - 993 + 995 NSExtension NSExtensionPointIdentifier diff --git a/Habitica.xcodeproj/project.pbxproj b/Habitica.xcodeproj/project.pbxproj index f755c1228..09a0bedaf 100644 --- a/Habitica.xcodeproj/project.pbxproj +++ b/Habitica.xcodeproj/project.pbxproj @@ -4001,7 +4001,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 993; + CURRENT_PROJECT_VERSION = 995; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -4032,7 +4032,7 @@ CODE_SIGN_ENTITLEMENTS = Habitica.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 993; + CURRENT_PROJECT_VERSION = 995; DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER = NO; DEVELOPMENT_TEAM = 9Q9SMRMCNN; ENABLE_BITCODE = NO; @@ -4052,7 +4052,7 @@ "@executable_path/Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 13.0; - MARKETING_VERSION = 3.11.2; + MARKETING_VERSION = 3.12; OTHER_LDFLAGS = ( "-ObjC", "-framework", @@ -4182,7 +4182,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 993; + CURRENT_PROJECT_VERSION = 995; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 9Q9SMRMCNN; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -4224,7 +4224,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 993; + CURRENT_PROJECT_VERSION = 995; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 9Q9SMRMCNN; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -4268,7 +4268,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 993; + CURRENT_PROJECT_VERSION = 995; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 9Q9SMRMCNN; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -4307,7 +4307,7 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 993; + CURRENT_PROJECT_VERSION = 995; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 9Q9SMRMCNN; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -4360,7 +4360,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 993; + CURRENT_PROJECT_VERSION = 995; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -4391,7 +4391,7 @@ CODE_SIGN_ENTITLEMENTS = Habitica.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 993; + CURRENT_PROJECT_VERSION = 995; DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER = NO; DEVELOPMENT_TEAM = 9Q9SMRMCNN; ENABLE_BITCODE = NO; @@ -4411,7 +4411,7 @@ "@executable_path/Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 13.0; - MARKETING_VERSION = 3.11.2; + MARKETING_VERSION = 3.12; OTHER_LDFLAGS = ( "-ObjC", "-framework", @@ -4541,7 +4541,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 993; + CURRENT_PROJECT_VERSION = 995; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 9Q9SMRMCNN; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -4583,7 +4583,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 993; + CURRENT_PROJECT_VERSION = 995; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 9Q9SMRMCNN; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -4627,7 +4627,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 993; + CURRENT_PROJECT_VERSION = 995; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 9Q9SMRMCNN; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -4666,7 +4666,7 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 993; + CURRENT_PROJECT_VERSION = 995; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 9Q9SMRMCNN; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -4697,7 +4697,7 @@ CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 993; + CURRENT_PROJECT_VERSION = 995; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 9Q9SMRMCNN; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -4731,7 +4731,7 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 993; + CURRENT_PROJECT_VERSION = 995; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 9Q9SMRMCNN; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -4768,7 +4768,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 993; + CURRENT_PROJECT_VERSION = 995; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 9Q9SMRMCNN; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -4815,7 +4815,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 993; + CURRENT_PROJECT_VERSION = 995; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 9Q9SMRMCNN; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -4856,7 +4856,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 993; + CURRENT_PROJECT_VERSION = 995; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 9Q9SMRMCNN; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -4899,7 +4899,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 993; + CURRENT_PROJECT_VERSION = 995; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 9Q9SMRMCNN; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -4940,7 +4940,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 993; + CURRENT_PROJECT_VERSION = 995; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 9Q9SMRMCNN; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -4985,7 +4985,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 993; + CURRENT_PROJECT_VERSION = 995; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 9Q9SMRMCNN; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -5191,7 +5191,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 993; + CURRENT_PROJECT_VERSION = 995; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -5249,7 +5249,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 993; + CURRENT_PROJECT_VERSION = 995; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -5280,7 +5280,7 @@ CODE_SIGN_ENTITLEMENTS = Habitica.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 993; + CURRENT_PROJECT_VERSION = 995; DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER = NO; DEVELOPMENT_TEAM = 9Q9SMRMCNN; ENABLE_BITCODE = NO; @@ -5300,7 +5300,7 @@ "@executable_path/Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 13.0; - MARKETING_VERSION = 3.11.2; + MARKETING_VERSION = 3.12; OTHER_LDFLAGS = ( "-ObjC", "-framework", @@ -5354,7 +5354,7 @@ CODE_SIGN_ENTITLEMENTS = Habitica.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 993; + CURRENT_PROJECT_VERSION = 995; DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER = NO; DEVELOPMENT_TEAM = 9Q9SMRMCNN; ENABLE_BITCODE = NO; @@ -5373,7 +5373,7 @@ "@executable_path/Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 13.0; - MARKETING_VERSION = 3.11.2; + MARKETING_VERSION = 3.12; OTHER_LDFLAGS = ( "-ObjC", "-framework", diff --git a/Habitica.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Habitica.xcworkspace/xcshareddata/swiftpm/Package.resolved index dfacb4aee..301b262ab 100644 --- a/Habitica.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Habitica.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -6,8 +6,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/google/abseil-cpp-binary.git", "state" : { - "revision" : "748c7837511d0e6a507737353af268484e1745e2", - "version" : "1.2024011601.1" + "revision" : "194a6706acbd25e4ef639bcaddea16e8758a3e27", + "version" : "1.2024011602.0" } }, { @@ -15,8 +15,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/amplitude/Amplitude-iOS", "state" : { - "revision" : "bfdec453a31fd35942a619ef472fcf2f09e2313a", - "version" : "8.19.2" + "revision" : "681c49824a2b011256f3e66ab910f2e514629bd3", + "version" : "8.21.0" } }, { @@ -33,8 +33,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/google/app-check.git", "state" : { - "revision" : "076b241a625e25eac22f8849be256dfb960fcdfe", - "version" : "10.19.1" + "revision" : "3b62f154d00019ae29a71e9738800bb6f18b236d", + "version" : "10.19.2" } }, { @@ -105,8 +105,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/firebase/firebase-ios-sdk", "state" : { - "revision" : "8bcaf973b1d84e119b7c7c119abad72ed460979f", - "version" : "10.27.0" + "revision" : "eca84fd638116dd6adb633b5a3f31cc7befcbb7d", + "version" : "10.29.0" } }, { @@ -114,8 +114,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/google/GoogleAppMeasurement.git", "state" : { - "revision" : "70df02431e216bed98dd461e0c4665889245ba70", - "version" : "10.27.0" + "revision" : "fe727587518729046fc1465625b9afd80b5ab361", + "version" : "10.28.0" } }, { @@ -150,8 +150,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/google/gtm-session-fetcher.git", "state" : { - "revision" : "0382ca27f22fb3494cf657d8dc356dc282cd1193", - "version" : "3.4.1" + "revision" : "a2ab612cb980066ee56d90d60d8462992c07f24b", + "version" : "3.5.0" } }, { @@ -195,8 +195,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/onevcat/Kingfisher.git", "state" : { - "revision" : "5b92f029fab2cce44386d28588098b5be0824ef5", - "version" : "7.11.0" + "revision" : "2ef543ee21d63734e1c004ad6c870255e8716c50", + "version" : "7.12.0" } }, { @@ -294,8 +294,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-protobuf.git", "state" : { - "revision" : "9f0c76544701845ad98716f3f6a774a892152bcb", - "version" : "1.26.0" + "revision" : "564597ad2fe2513a94dd8f3ba27ea2ff4be3cb37", + "version" : "1.28.0" } }, { @@ -303,8 +303,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/SwiftUIX/SwiftUIX", "state" : { - "revision" : "ff1176d8c06c2ac81db3dfd36c63ec8a9c2ccbca", - "version" : "0.2.1" + "revision" : "cdc902f828e8c457f601e744cc7607148dcdb91a", + "version" : "0.2.2" } }, { diff --git a/HabiticaTests/Info.plist b/HabiticaTests/Info.plist index afb323026..87fa6e3f4 100644 --- a/HabiticaTests/Info.plist +++ b/HabiticaTests/Info.plist @@ -19,6 +19,6 @@ CFBundleSignature ???? CFBundleVersion - 993 + 995