tmhastings 1 год назад
Родитель
Сommit
a4b7912113

+ 10 - 10
FreeAPS.xcodeproj/project.pbxproj

@@ -3927,7 +3927,7 @@
 				CURRENT_PROJECT_VERSION = $APP_BUILD_NUMBER;
 				DEVELOPER_TEAM = "$(DEVELOPER_TEAM)";
 				DEVELOPMENT_ASSET_PATHS = "";
-				DEVELOPMENT_TEAM = "$(DEVELOPER_TEAM)";
+				DEVELOPMENT_TEAM = 54D5ZWZGJG;
 				ENABLE_PREVIEWS = YES;
 				INFOPLIST_FILE = FreeAPS/Resources/Info.plist;
 				IPHONEOS_DEPLOYMENT_TARGET = 17.0;
@@ -3968,7 +3968,7 @@
 				CURRENT_PROJECT_VERSION = $APP_BUILD_NUMBER;
 				DEVELOPER_TEAM = "$(DEVELOPER_TEAM)";
 				DEVELOPMENT_ASSET_PATHS = "";
-				DEVELOPMENT_TEAM = "$(DEVELOPER_TEAM)";
+				DEVELOPMENT_TEAM = 54D5ZWZGJG;
 				ENABLE_PREVIEWS = YES;
 				INFOPLIST_FILE = FreeAPS/Resources/Info.plist;
 				IPHONEOS_DEPLOYMENT_TARGET = 17.0;
@@ -4011,7 +4011,7 @@
 				CODE_SIGN_ENTITLEMENTS = FreeAPSWatch/FreeAPSWatch.entitlements;
 				CODE_SIGN_STYLE = Automatic;
 				CURRENT_PROJECT_VERSION = $APP_BUILD_NUMBER;
-				DEVELOPMENT_TEAM = "$(DEVELOPER_TEAM)";
+				DEVELOPMENT_TEAM = 54D5ZWZGJG;
 				GENERATE_INFOPLIST_FILE = YES;
 				IBSC_MODULE = FreeAPSWatch_WatchKit_Extension;
 				INFOPLIST_FILE = FreeAPSWatch/Info.plist;
@@ -4049,7 +4049,7 @@
 				CODE_SIGN_ENTITLEMENTS = FreeAPSWatch/FreeAPSWatch.entitlements;
 				CODE_SIGN_STYLE = Automatic;
 				CURRENT_PROJECT_VERSION = $APP_BUILD_NUMBER;
-				DEVELOPMENT_TEAM = "$(DEVELOPER_TEAM)";
+				DEVELOPMENT_TEAM = 54D5ZWZGJG;
 				GENERATE_INFOPLIST_FILE = YES;
 				IBSC_MODULE = FreeAPSWatch_WatchKit_Extension;
 				INFOPLIST_FILE = FreeAPSWatch/Info.plist;
@@ -4080,7 +4080,7 @@
 				CODE_SIGN_STYLE = Automatic;
 				CURRENT_PROJECT_VERSION = $APP_BUILD_NUMBER;
 				DEVELOPMENT_ASSET_PATHS = "\"FreeAPSWatch WatchKit Extension/Preview Content\"";
-				DEVELOPMENT_TEAM = "$(DEVELOPER_TEAM)";
+				DEVELOPMENT_TEAM = 54D5ZWZGJG;
 				ENABLE_PREVIEWS = YES;
 				GENERATE_INFOPLIST_FILE = YES;
 				INFOPLIST_FILE = "FreeAPSWatch WatchKit Extension/Info.plist";
@@ -4120,7 +4120,7 @@
 				CODE_SIGN_STYLE = Automatic;
 				CURRENT_PROJECT_VERSION = $APP_BUILD_NUMBER;
 				DEVELOPMENT_ASSET_PATHS = "\"FreeAPSWatch WatchKit Extension/Preview Content\"";
-				DEVELOPMENT_TEAM = "$(DEVELOPER_TEAM)";
+				DEVELOPMENT_TEAM = 54D5ZWZGJG;
 				ENABLE_PREVIEWS = YES;
 				GENERATE_INFOPLIST_FILE = YES;
 				INFOPLIST_FILE = "FreeAPSWatch WatchKit Extension/Info.plist";
@@ -4154,7 +4154,7 @@
 			buildSettings = {
 				BUNDLE_LOADER = "$(TEST_HOST)";
 				CODE_SIGN_STYLE = Automatic;
-				DEVELOPMENT_TEAM = "$(DEVELOPER_TEAM)";
+				DEVELOPMENT_TEAM = 54D5ZWZGJG;
 				INFOPLIST_FILE = FreeAPSTests/Info.plist;
 				IPHONEOS_DEPLOYMENT_TARGET = 17.0;
 				LD_RUNPATH_SEARCH_PATHS = (
@@ -4175,7 +4175,7 @@
 			buildSettings = {
 				BUNDLE_LOADER = "$(TEST_HOST)";
 				CODE_SIGN_STYLE = Automatic;
-				DEVELOPMENT_TEAM = "$(DEVELOPER_TEAM)";
+				DEVELOPMENT_TEAM = 54D5ZWZGJG;
 				INFOPLIST_FILE = FreeAPSTests/Info.plist;
 				IPHONEOS_DEPLOYMENT_TARGET = 17.0;
 				LD_RUNPATH_SEARCH_PATHS = (
@@ -4200,7 +4200,7 @@
 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
 				CODE_SIGN_STYLE = Automatic;
 				CURRENT_PROJECT_VERSION = 1;
-				DEVELOPMENT_TEAM = "$(DEVELOPER_TEAM)";
+				DEVELOPMENT_TEAM = 54D5ZWZGJG;
 				ENABLE_USER_SCRIPT_SANDBOXING = YES;
 				GCC_C_LANGUAGE_STANDARD = gnu17;
 				GENERATE_INFOPLIST_FILE = YES;
@@ -4234,7 +4234,7 @@
 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
 				CODE_SIGN_STYLE = Automatic;
 				CURRENT_PROJECT_VERSION = 1;
-				DEVELOPMENT_TEAM = "$(DEVELOPER_TEAM)";
+				DEVELOPMENT_TEAM = 54D5ZWZGJG;
 				ENABLE_USER_SCRIPT_SANDBOXING = YES;
 				GCC_C_LANGUAGE_STANDARD = gnu17;
 				GENERATE_INFOPLIST_FILE = YES;

+ 112 - 95
FreeAPS/Sources/Modules/AlgorithmAdvancedSettings/View/AlgorithmAdvancedSettingsRootView.swift

@@ -39,7 +39,7 @@ extension AlgorithmAdvancedSettings {
                     content: {
                         VStack(alignment: .leading) {
                             Text(
-                                "The settings in this section are designed for advanced expert users and typically do not require ANY modifications."
+                                "The settings in this section typically do not require ANY modifications. Do not alter them without a solid understanding of what you are changing and the full impact it will have on the algorithm."
                             ).bold()
                         }
                     }
@@ -61,21 +61,21 @@ extension AlgorithmAdvancedSettings {
                     type: .decimal("maxDailySafetyMultiplier"),
                     label: NSLocalizedString("Max Daily Safety Multiplier", comment: "Max Daily Safety Multiplier"),
                     miniHint: """
-                        Temporary basal rates cannot be set higher than this percentage of your LARGEST profile basal rate
-                        Default setting: 300%
-                        """,
+                    Temporary basal rates cannot be set higher than this percentage of your LARGEST profile basal rate
+                    Default setting: 300%
+                    """,
                     verboseHint: VStack {
                         Text("Default: 300%").bold()
                         Text("""
-                            
-                            This limits the automatic adjustment of the temporary basal rate to this value times the highest scheduled basal rate in your basal profile.
-                            
-                            """)
+
+                        This limits the automatic adjustment of the temporary basal rate to this value times the highest scheduled basal rate in your basal profile.
+
+                        """)
                         Text("If Autotune is enabled, Trio uses Autotune basals instead of scheduled basals.").italic()
                         Text("""
-                            
-                            Increasing this setting is not advised.
-                            """).bold().italic()
+
+                        Increasing this setting is not advised.
+                        """).bold().italic()
                     }
                 )
 
@@ -97,21 +97,21 @@ extension AlgorithmAdvancedSettings {
                     type: .decimal("currentBasalSafetyMultiplier"),
                     label: NSLocalizedString("Current Basal Safety Multiplier", comment: "Current Basal Safety Multiplier"),
                     miniHint: """
-                        Temporary basal rates cannot be set higher than this percentage of the profile basal rate at the time of the loop cycle
-                        Default: 400%
-                        """,
+                    Temporary basal rates cannot be set higher than this percentage of the profile basal rate at the time of the loop cycle
+                    Default: 400%
+                    """,
                     verboseHint: VStack {
                         Text("Default: 400%").bold()
                         Text("""
-                            
-                            This limits the automatic adjustment of the temporary basal rate to this percentage of the current hourly basal rate at the time of the loop cycle.
-                            
-                            """)
+
+                        This limits the automatic adjustment of the temporary basal rate to this percentage of the current hourly basal rate at the time of the loop cycle.
+
+                        """)
                         Text("If Autotune is enabled, Trio uses Autotune basals instead of scheduled basals.").italic()
                         Text("""
-                            
-                            Increasing this setting is not advised.
-                            """).bold().italic()
+
+                        Increasing this setting is not advised.
+                        """).bold().italic()
                     }
                 )
 
@@ -130,17 +130,18 @@ extension AlgorithmAdvancedSettings {
                     type: .decimal("dia"),
                     label: "Duration of Insulin Action",
                     miniHint: """
-                        Number of hours insulin will be active in your body
-                        Default: 6 hours
-                        """,
+                    Number of hours insulin is active in your body
+                    Default: 6 hours
+                    """,
                     verboseHint: VStack {
                         Text("Default: 6 hours").bold()
                         Text("""
-                            
-                            Number of hours insulin will contribute to IOB after dosing.
-                            
-                            """)
-                        Text("It is better to use Custom Peak Timing rather than adjust your Duration of Insulin Action (DIA)").italic()
+
+                        Number of hours insulin will contribute to IOB after dosing.
+
+                        """)
+                        Text("It is better to use Custom Peak Timing rather than adjust your Duration of Insulin Action (DIA)")
+                            .italic()
                     }
                 )
 
@@ -160,19 +161,19 @@ extension AlgorithmAdvancedSettings {
                     label: NSLocalizedString("Use Custom Peak Time", comment: "Use Custom Peak Time"),
                     conditionalLabel: NSLocalizedString("Insulin Peak Time", comment: "Insulin Peak Time"),
                     miniHint: """
-                        Time that insulin effect is at it’s highest. Set in minutes since injection.
-                        Default: (Set by Insulin Type)
-                        """,
+                    Time that insulin effect is at it’s highest. Set in minutes since injection.
+                    Default: (Set by Insulin Type)
+                    """,
                     verboseHint: VStack {
                         Text("Default: Set by Insulin Type").bold()
                         Text("""
-                            
-                            Time of maximum glucose lowering effect of insulin. Set in minutes since insulin administration.
-                            
-                            System-Determined Defaults:
-                            Ultra-Rapid: 55 minutes (permitted range 35-100 minutes)
-                            Rapid-Acting: 75 minutes (permitted range 50-120 minutes)
-                            """)
+
+                        Time of maximum glucose lowering effect of insulin. Set in minutes since insulin administration.
+
+                        System-Determined Defaults:
+                        Ultra-Rapid: 55 minutes (permitted range 35-100 minutes)
+                        Rapid-Acting: 75 minutes (permitted range 50-120 minutes)
+                        """)
                     }
                 )
 
@@ -191,17 +192,17 @@ extension AlgorithmAdvancedSettings {
                     type: .boolean,
                     label: NSLocalizedString("Skip Neutral Temps", comment: "Skip Neutral Temps"),
                     miniHint: """
-                        When on, Trio will not send a temp basal command to the pump if the determined basal rate is the same as the scheduled basal
-                        Default: OFF
-                        """,
+                    When on, Trio will not send a temp basal command to the pump if the determined basal rate is the same as the scheduled basal
+                    Default: OFF
+                    """,
                     verboseHint: VStack {
                         Text("Default: OFF").bold()
                         Text("""
-                            
-                            When enabled, Trio will skip neutral temp basals (those that are the same as your default basal), if no adjustments are needed. 
-                            
-                            When off, Trio will set temps whenever it can, so it will be easier to see if the system is working.
-                            """)
+
+                        When enabled, Trio will skip neutral temp basals (those that are the same as your default basal), if no adjustments are needed. 
+
+                        When off, Trio will set temps whenever it can, so it will be easier to see if the system is working.
+                        """)
                     }
                 )
 
@@ -220,16 +221,16 @@ extension AlgorithmAdvancedSettings {
                     type: .boolean,
                     label: NSLocalizedString("Unsuspend If No Temp", comment: "Unsuspend If No Temp"),
                     miniHint: """
-                        Automatically resume your insulin pump if you forget to unsuspend it after a zero temp basal expires
-                        Default: OFF
-                        """,
+                    Automatically resume your insulin pump if you forget to unsuspend it after a zero temp basal expires
+                    Default: OFF
+                    """,
                     verboseHint: VStack {
                         Text("Default: OFF").bold()
                         Text("""
-                            
-                            Many people occasionally forget to resume / unsuspend their pump after reconnecting it. If you’re one of them, and you are willing to reliably set a zero temp basal whenever suspending and disconnecting your pump, this feature has your back. If enabled, it will automatically resume / unsuspend the pump if you forget to do so before your zero temp expires. As long as the zero temp is still running, it will leave the pump suspended.
-                            
-                            """)
+
+                        Many people occasionally forget to resume / unsuspend their pump after reconnecting it. If you’re one of them, and you are willing to reliably set a zero temp basal whenever suspending and disconnecting your pump, this feature has your back. If enabled, it will automatically resume / unsuspend the pump if you forget to do so before your zero temp expires. As long as the zero temp is still running, it will leave the pump suspended.
+
+                        """)
                         Text("Applies only to pumps with manual suspend options").italic()
                     }
                 )
@@ -249,16 +250,16 @@ extension AlgorithmAdvancedSettings {
                     type: .boolean,
                     label: NSLocalizedString("Suspend Zeros IOB", comment: "Suspend Zeros IOB"),
                     miniHint: """
-                        Replaces any enacted temp basals prior to a pump suspend with a zero temp basal
-                        Default: OFF
-                        """,
+                    Replaces any enacted temp basals prior to a pump suspend with a zero temp basal
+                    Default: OFF
+                    """,
                     verboseHint: VStack {
                         Text("Default: OFF").bold()
                         Text("""
-                            
-                            Any existing temp basals during times the pump was suspended will be deleted and zero temp basals to negate the profile basal rates during times pump is suspended will be added.
-                            
-                            """)
+
+                        Any existing temp basals during times the pump was suspended will be deleted and zero temp basals to negate the profile basal rates during times pump is suspended will be added.
+
+                        """)
                         Text("Applies to only to pumps with manual suspend options").italic()
                     }
                 )
@@ -304,19 +305,19 @@ extension AlgorithmAdvancedSettings {
                     type: .decimal("min5mCarbimpact"),
                     label: NSLocalizedString("Min 5m Carbimpact", comment: "Min 5m Carbimpact"),
                     miniHint: """
-                        Set the default rate of carb absorption when no clear impact on blood glucose is visible
-                        Default: 8 mg/dL/5min
-                        """,
+                    Set the default rate of carb absorption when no clear impact on blood glucose is visible
+                    Default: 8 mg/dL/5min
+                    """,
                     verboseHint: VStack {
                         Text("Default: 8 mg/dL/5 min").bold()
                         Text("""
-                            
-                            The Min 5m Carbimpact setting determines the default expected glucose rise (in mg/dL) over a 5-minute period from carbs when the system cannot detect clear absorption from your blood glucose levels. 
-                            
-                            The default value of 8 mg/dL per 5 minutes corresponds to an absorption rate of 24g of carbs per hour. 
-                            
-                            This setting helps the system estimate how much glucose your body is absorbing, even when it’s not immediately visible in your glucose data, ensuring more accurate insulin dosing during carb absorption.
-                            """)
+
+                        The Min 5m Carbimpact setting determines the default expected glucose rise (in mg/dL) over a 5-minute period from carbs when the system cannot detect clear absorption from your blood glucose levels. 
+
+                        The default value of 8 mg/dL per 5 minutes corresponds to an absorption rate of 24g of carbs per hour. 
+
+                        This setting helps the system estimate how much glucose your body is absorbing, even when it’s not immediately visible in your glucose data, ensuring more accurate insulin dosing during carb absorption.
+                        """)
                     }
                 )
 
@@ -328,19 +329,23 @@ extension AlgorithmAdvancedSettings {
                         get: { selectedVerboseHint },
                         set: {
                             selectedVerboseHint = $0.map { AnyView($0) }
-                            hintLabel = NSLocalizedString("Remaining Carbs Fraction", comment: "Remaining Carbs Fraction")
+                            hintLabel = NSLocalizedString("Remaining Carbs Percentage", comment: "Remaining Carbs Percentage")
                         }
                     ),
                     units: state.units,
                     type: .decimal("remainingCarbsFraction"),
-                    label: NSLocalizedString("Remaining Carbs Fraction", comment: "Remaining Carbs Fraction"),
-                    miniHint: "Lorem ipsum dolor sit amet, consetetur sadipscing elitr.",
-                    verboseHint: Text(
-                        NSLocalizedString(
-                            "This is the fraction of carbs we’ll assume will absorb over 4h if we don’t yet see carb absorption.",
-                            comment: "Remaining Carbs Fraction"
-                        )
-                    )
+                    label: NSLocalizedString("Remaining Carbs Percentage", comment: "Remaining Carbs Percentage"),
+                    miniHint: """
+                    Set the percentage of unabsorbed carbs that will be assumed to absorb over 4 hours if no absorption is detected
+                    Default: 100%
+                    """,
+                    verboseHint: VStack {
+                        Text("Default: 100%").bold()
+                        Text("""
+
+                        The Remaining Carbs Percentage setting helps estimate how many carbs from a meal will still be absorbed if your glucose readings don’t show clear carb absorption. This percentage, applied to the entered carbs, will be spread over 4 hours. It’s useful when the system can’t detect carb absorption from blood glucose data, providing a fallback estimate to prevent under-dosing.
+                        """)
+                    }
                 )
 
                 SettingInputSection(
@@ -357,13 +362,19 @@ extension AlgorithmAdvancedSettings {
                     units: state.units,
                     type: .decimal("remainingCarbsCap"),
                     label: NSLocalizedString("Remaining Carbs Cap", comment: "Remaining Carbs Cap"),
-                    miniHint: "Lorem ipsum dolor sit amet, consetetur sadipscing elitr.",
-                    verboseHint: Text(
-                        NSLocalizedString(
-                            "This is the amount of the maximum number of carbs we’ll assume will absorb over 4h if we don’t yet see carb absorption.",
-                            comment: "Remaining Carbs Cap"
-                        )
-                    )
+                    miniHint: """
+                    Set the maximum amount of carbs assumed to absorb over 4 hours if no absorption is detected
+                    Default: 90g
+                    """,
+                    verboseHint: VStack {
+                        Text("Default: 90g").bold()
+                        Text("""
+
+                        The Remaining Carbs Cap defines the upper limit for how many carbs the system will assume are absorbing over 4 hours, even when there’s no clear sign of absorption from your glucose readings.
+
+                        This cap prevents the system from overestimating how much insulin is needed when carb absorption isn’t visible, offering a safeguard for accurate dosing.
+                        """)
+                    }
                 )
 
                 SettingInputSection(
@@ -379,14 +390,20 @@ extension AlgorithmAdvancedSettings {
                     ),
                     units: state.units,
                     type: .decimal("noisyCGMTargetMultiplier"),
-                    label: NSLocalizedString("Noisy CGM Target Multiplier", comment: "Noisy CGM Target Multiplier"),
-                    miniHint: "Lorem ipsum dolor sit amet, consetetur sadipscing elitr.",
-                    verboseHint: Text(
-                        NSLocalizedString(
-                            "Defaults to 1.3. Increase target by this amount when looping off raw/noisy CGM data",
-                            comment: "Noisy CGM Target Multiplier"
-                        )
-                    )
+                    label: NSLocalizedString("Noisy CGM Target Increase", comment: "Noisy CGM Target Increase"),
+                    miniHint: """
+                    Increase glucose target by this percent when relying on noisy CGM data
+                    Default: 130%
+                    """,
+                    verboseHint: VStack {
+                        Text("Default: 130%").bold()
+                        Text("""
+
+                        The Noisy CGM Target Multiplier increases your glucose target when the system detects noisy or raw CGM data. By default, the target is increased by 130% to account for the less reliable glucose readings.
+
+                        This helps reduce the risk of incorrect insulin dosing based on inaccurate sensor data, ensuring safer insulin adjustments during periods of poor CGM accuracy.
+                        """)
+                    }
                 )
             }
             .sheet(isPresented: $shouldDisplayHint) {

+ 11 - 9
FreeAPS/Sources/Modules/GlucoseNotificationSettings/View/GlucoseNotificationSettingsRootView.swift

@@ -68,8 +68,10 @@ extension GlucoseNotificationSettings {
                     units: state.units,
                     type: .boolean,
                     label: "Show Glucose App Badge",
-                    miniHint: "Lorem ipsum dolor sit amet, consetetur sadipscing elitr.",
-                    verboseHint: Text("Lorem ipsum dolor sit amet, consetetur sadipscing elitr."),
+                    miniHint: "Show your current glucose reading at the top of the Trio app icon",
+                    verboseHint: Text(
+                        "This will add your current glucose on the top right of your Trio icon as a red notification badge."
+                    ),
                     headerText: "Various Glucose Notifications"
                 )
 
@@ -87,8 +89,8 @@ extension GlucoseNotificationSettings {
                     units: state.units,
                     type: .boolean,
                     label: "Always Notify Glucose",
-                    miniHint: "Lorem ipsum dolor sit amet, consetetur sadipscing elitr.",
-                    verboseHint: Text("Lorem ipsum dolor sit amet, consetetur sadipscing elitr.")
+                    miniHint: "A notification will be triggered every time your glucose is updated in Trio",
+                    verboseHint: Text("A notification will be triggered every time your glucose is updated in Trio.")
                 )
 
                 SettingInputSection(
@@ -105,8 +107,8 @@ extension GlucoseNotificationSettings {
                     units: state.units,
                     type: .boolean,
                     label: "Play Alarm Sound",
-                    miniHint: "Lorem ipsum dolor sit amet, consetetur sadipscing elitr.",
-                    verboseHint: Text("Lorem ipsum dolor sit amet, consetetur sadipscing elitr.")
+                    miniHint: "This will cause a sound to be triggered by every Trio notification",
+                    verboseHint: Text("This will cause a sound to be triggered by every Trio notification.")
                 )
 
                 SettingInputSection(
@@ -123,8 +125,8 @@ extension GlucoseNotificationSettings {
                     units: state.units,
                     type: .boolean,
                     label: "Add Glucose Source to Alarm",
-                    miniHint: "Lorem ipsum dolor sit amet, consetetur sadipscing elitr.",
-                    verboseHint: Text("Lorem ipsum dolor sit amet, consetetur sadipscing elitr.")
+                    miniHint: "The source of the glucose reading will be added to the notification",
+                    verboseHint: Text("The source of the glucose reading will be added to the notification.")
                 )
 
                 Section {
@@ -144,7 +146,7 @@ extension GlucoseNotificationSettings {
 
                     HStack(alignment: .top) {
                         Text(
-                            "Set the lower and upper limit for glucose alarms. See hint for more details."
+                            "Set the upper and lower limits for glucose alarms. See hint for more details."
                         )
                         .font(.footnote)
                         .foregroundColor(.secondary)

+ 7 - 6
FreeAPS/Sources/Modules/HealthKit/View/AppleHealthKitRootView.swift

@@ -48,12 +48,13 @@ extension AppleHealthKit {
                     type: .boolean,
                     label: "Connect to Apple Health",
                     miniHint: "Allows Trio to read from and write to Apple Health.",
-                    verboseHint: Text(
-                        NSLocalizedString(
-                            "This allows Trio to read from and write to Apple Health. You must also give permissions in iOS Settings > Health > Data Access. If you enter a glucose value into Apple Health, open Trio to confirm it shows up.",
-                            comment: "Suspend Zeros IOB"
-                        )
-                    ),
+                    verboseHint: VStack {
+                        Text("""
+                         This allows Trio to read from and write to Apple Health.
+
+                         You must also give permissions in iOS Settings > Health > Data Access.
+                        """)
+                    },
                     headerText: "Apple Health Integration"
                 )
 

+ 22 - 7
FreeAPS/Sources/Modules/LiveActivitySettings/View/LiveActivitySettingsRootView.swift

@@ -75,10 +75,19 @@ extension LiveActivitySettings {
                         units: state.units,
                         type: .boolean,
                         label: "Enable Live Activity",
-                        miniHint: "Live Activities display Trio's glucose readings, and other current data on the iPhone Lock Screen and in the Dynamic Island",
-                        verboseHint: Text(
-                            "With Live Activities, you can let Trio display most current data, e.g. glucose reading from CGM, insulin on board, carbohydrates on board, or even a glucose trend chart, on the iPhone Lock Screen and in the Dynamic Island. It allows you to refer to live information at a glance and perform quick actions in your diabetes management."
-                        ),
+                        miniHint: "Live Activities display Trio's glucose readings and other current data on the iPhone Lock Screen and in the Dynamic Island",
+                        verboseHint: VStack {
+                            Text("""
+                            With Live Activities, Trio displays your choice of the following current data on your iPhone's Lock Screen and in the Dynamic Island:
+                            ● Current Glucose Reading
+                            ● IOB: Insulin On Board
+                            ● COB: Carbohydrates On Board
+                            ● Last Updated: Time of Last Loop Cycle
+                            ● Glucose Trend Chart
+
+                            It allows you to refer to live information at a glance and perform quick actions in your diabetes management.
+                            """)
+                        },
                         headerText: "Display Live Data From Trio"
                     )
 
@@ -107,9 +116,15 @@ extension LiveActivitySettings {
                                             hintLabel = "Lock Screen Widget Style"
                                             selectedVerboseHint =
                                                 AnyView(
-                                                    Text(
-                                                        "Trio's simple lock screen widget only display current glucose reading, trend arrow, delta and the timestamp of the current reading.\n\nThe detailed Lock Screen widget offers users a glucose chart, glucose trend arrow, glucose delta, current insulin and carbohydrates on board, and an icon as an indicator for running overrides."
-                                                    )
+                                                    Text("""
+                                                    Trio's Simple Lock Screen Widget only display current glucose reading, trend arrow, delta and the timestamp of the current reading.
+
+                                                    The Detailed Lock Screen Widget offers users a glucose chart as well as the ability to customize the information provided in the Detailed Widget using the following options:
+                                                    ● Current Glucose Reading
+                                                    ● IOB: Insulin On Board
+                                                    ● COB: Carbohydrates On Board
+                                                    ● Last Updated: Time of Last Loop Cycle
+                                                    """)
                                                 )
                                             shouldDisplayHint.toggle()
                                         },

+ 133 - 42
FreeAPS/Sources/Modules/MealSettings/View/MealSettingsRootView.swift

@@ -163,7 +163,7 @@ extension MealSettings {
 
                             HStack(alignment: .top) {
                                 Text(
-                                    "Set limits for entering meals in treatment view."
+                                    "Set limits for each type of macro per meal entry"
                                 )
                                 .lineLimit(nil)
                                 .font(.footnote)
@@ -174,7 +174,13 @@ extension MealSettings {
                                     action: {
                                         hintLabel = "Limits per Entry"
                                         selectedVerboseHint =
-                                            AnyView(Text("Lorem ipsum dolor sit amet, consetetur sadipscing elitr."))
+                                            AnyView(Text("""
+                                            Max Carbs = Enter the largest carbohydrate value allowed per meal entry
+
+                                            Max Fat = Enter the largest fat value allowed per meal entry
+
+                                            Max Protein = Enter the largest protein value allowed per meal entry
+                                            """))
                                         shouldDisplayHint.toggle()
                                     },
                                     label: {
@@ -196,19 +202,47 @@ extension MealSettings {
                         get: { selectedVerboseHint },
                         set: {
                             selectedVerboseHint = $0.map { AnyView($0) }
-                            hintLabel = "Display and Allow Fat and Protein Entries"
+                            hintLabel = "Enable Fat and Protein Entries"
                         }
                     ),
                     units: state.units,
                     type: .boolean,
-                    label: "Display and Allow Fat and Protein Entries",
-                    miniHint: "Lorem ipsum dolor sit amet, consetetur sadipscing elitr.",
-                    verboseHint: Text(
-                        "Allows fat and protein to be converted into future carb equivalents using the Warsaw formula of kilocalories divided by 10.\n\nDefaults: Spread Duration: 8 h, Spread Interval: 30 min, FPU Factor: 0.5, Delay 60 min."
-                    ),
+                    label: "Enable Fat and Protein Entries",
+                    miniHint: """
+                    Enabling this setting allows you to log fat and protein, which are then converted into future carb equivalents (FPU) using the Warsaw Method.
+                    Default: OFF
+                    """,
+                    verboseHint: VStack(spacing: 10) {
+                        Text("Default: OFF").bold()
+                        Text("""
+                        
+                        The Warsaw Method helps account for the delayed glucose spikes caused by fat and protein in meals. It uses Fat-Protein Units (FPU) to calculate the carb effect from fat and protein. The system spreads insulin delivery over several hours to mimic natural insulin release, helping to manage post-meal glucose spikes.
+                        
+                        """)
+                        Text("Fat Conversion").bold()
+                        Text("fat(g) × 90% = 𝑭").italic()
+                        Text("""
+                        
+                         Protein Conversion
+                        """).bold()
+                        Text("protein(g) × 40% = 𝑷").italic()
+                        Text("""
+                        
+                         FPU Conversion
+                        """).bold()
+                        Text("𝑭 + 𝑷 = g CHO").italic()
+                        Text(
+                            "You can personalize the conversion calculation by adjusting the following settings that will appear when this option is enabled:"
+                        )
+                        VStack(alignment: .leading) {
+                            Text("• Fat and Protein Delay")
+                            Text("• Maximum Duration")
+                            Text("• Spread Interval")
+                            Text("• Fat and Protein Percentage")
+                        }
+                    },
                     headerText: "Fat and Protein"
                 )
-
                 if state.useFPUconversion {
                     SettingInputSection(
                         decimalValue: $state.delay,
@@ -224,8 +258,19 @@ extension MealSettings {
                         units: state.units,
                         type: .decimal("delay"),
                         label: "Fat and Protein Delay",
-                        miniHint: "Delay is time from now until the first future carb entry.",
-                        verboseHint: Text("X-Axis Interval Step… bla bla bla")
+                        miniHint: """
+                        Set the delay between fat & protein entry in the bolus calculator and the first FPU entry
+                        Default: 60 min
+                        """,
+                        verboseHint: VStack {
+                            Text("Default: 60 min").bold()
+                            Text("""
+
+                            The Fat Protein Delay setting defines the time between when you log fat and protein and when the system starts delivering insulin for the Fat-Protein Unit Carb Equivalents (FPUs). 
+
+                            This delay accounts for the slower absorption of fat and protein, as calculated by the Warsaw Method, ensuring insulin delivery is properly timed to manage glucose spikes caused by high-fat, high-protein meals.
+                            """)
+                        }
                     )
 
                     SettingInputSection(
@@ -236,16 +281,31 @@ extension MealSettings {
                             get: { selectedVerboseHint },
                             set: {
                                 selectedVerboseHint = $0.map { AnyView($0) }
-                                hintLabel = "Maximum Duration (hours)"
+                                hintLabel = "Maximum Duration"
                             }
                         ),
                         units: state.units,
                         type: .decimal("timeCap"),
-                        label: "Maximum Duration (hours)",
-                        miniHint: "Carb spread over a maximum number of hours (5-12).",
-                        verboseHint: Text(
-                            "This spreads the carb equivilants over a maximum duration setting that can be configured from 5-12 hours."
-                        )
+                        label: "Maximum Duration",
+                        miniHint: """
+                        Set the maximum timeframe to extend FPUs
+                        Default: 8 hours
+                        """,
+                        verboseHint: VStack {
+                            Text("Default: 8 hours").bold()
+                            Text("""
+
+                            This sets the maximum length of time that Fat and Protein Carb Equivalents (FPUs) will be extended over from a single Fat and/or Protein bolus calcultor entry.
+
+                            It is one factor used in combination with the Fat and Protein Delay, Spread Interval, and Fat and Protein Factor to create the FPU entries
+
+                            Increasing this setting may result in more FPU entries with smaller carb values.
+
+                            Decreasing this setting may result in fewer FPU entries with larger carb values.
+
+                            """)
+                            Text("Accepted range for this setting is 5 - 12 hours.").italic()
+                        }
                     )
 
                     SettingInputSection(
@@ -256,16 +316,31 @@ extension MealSettings {
                             get: { selectedVerboseHint },
                             set: {
                                 selectedVerboseHint = $0.map { AnyView($0) }
-                                hintLabel = "Spread Interval (minutes)"
+                                hintLabel = "Spread Interval"
                             }
                         ),
                         units: state.units,
                         type: .decimal("minuteInterval"),
-                        label: "Spread Interval (minutes)",
-                        miniHint: "Interval in minutes is how many minutes are between entries.",
-                        verboseHint: Text(
-                            "Interval in minutes is how many minutes are between entries. The shorter the interval, the smoother the result. 10, 15, 20, 30, or 60 are reasonable choices."
-                        )
+                        label: "Spread Interval",
+                        miniHint: """
+                        Set the time interval between FPUs
+                        Default: 30 minutes
+                        """,
+                        verboseHint: VStack {
+                            Text("Default: 30 minutes").bold()
+                            Text("""
+
+                            This determines how many minutes will be between individual Fat-Protein Unit Carb Equivalent (FPU) entries from a single Fat and/or Protein bolus calculator entry.
+
+                            The shorter the interval, the smoother the correlating dosing result.
+
+                            Increasing this setting may result in fewer FPU entries with larger carb values.
+
+                            Decreasing this setting may result in more FPU entries with smaller carb values.
+
+                            """)
+                            Text("Accepted range for this setting is 5 - 60 minutes.").italic()
+                        }
                     )
 
                     SettingInputSection(
@@ -276,32 +351,48 @@ extension MealSettings {
                             get: { selectedVerboseHint },
                             set: {
                                 selectedVerboseHint = $0.map { AnyView($0) }
-                                hintLabel = "Fat and Protein Factor"
+                                hintLabel = "Fat and Protein Percentage"
                             }
                         ),
                         units: state.units,
                         type: .decimal("individualAdjustmentFactor"),
-                        label: "Fat and Protein Factor",
-                        miniHint: "Influences how many carb equivalents are recorded for fat and protein.",
-                        verboseHint: Text(
-                            "The Fat and Protein Factor influences how much effect the fat and protein has on the entries. 1.0 is full effect (original Warsaw Method) and 0.5 is half effect. Note that you may find that your normal carb ratio needs to increase to a larger number if you begin adding fat and protein entries. For this reason, it is best to start with a factor of about 0.5 to ease into it."
-                        )
+                        label: "Fat and Protein Percentage",
+                        miniHint: """
+                        Influences the conversion rate used in the Warsaw Method
+                        Default: 50%
+                        """,
+                        verboseHint: VStack {
+                            Text("Default: 50%").bold()
+                            Text("This setting changes how much effect the fat and protein entry has on FPUs.")
+                            VStack(alignment: .center) {
+                                Text("50% is half effect:").bold()
+                                Text("(Fat × 45%) + (Protein × 20%)")
+                                Text("100% is full effect:").bold()
+                                Text("(Fat × 90%) + (Protein × 40%)")
+                                Text("200% is double effect:").bold()
+                                Text("(Fat × 180%) + (Protein x 80%)")
+                                Text("""
+
+                                You may find that your normal carb ratio needs to increase to a larger number when you begin adding fat and protein entries. For this reason, it is best to start with a factor of about 50% to ease into it.
+                                """).italic()
+                            }
+                        }
                     )
+                    .sheet(isPresented: $shouldDisplayHint) {
+                        SettingInputHintView(
+                            hintDetent: $hintDetent,
+                            shouldDisplayHint: $shouldDisplayHint,
+                            hintLabel: hintLabel ?? "",
+                            hintText: selectedVerboseHint ?? AnyView(EmptyView()),
+                            sheetTitle: "Help"
+                        )
+                    }
+                    .scrollContentBackground(.hidden).background(color)
+                    .onAppear(perform: configureView)
+                    .navigationBarTitle("Meal Settings")
+                    .navigationBarTitleDisplayMode(.automatic)
                 }
             }
-            .sheet(isPresented: $shouldDisplayHint) {
-                SettingInputHintView(
-                    hintDetent: $hintDetent,
-                    shouldDisplayHint: $shouldDisplayHint,
-                    hintLabel: hintLabel ?? "",
-                    hintText: selectedVerboseHint ?? AnyView(EmptyView()),
-                    sheetTitle: "Help"
-                )
-            }
-            .scrollContentBackground(.hidden).background(color)
-            .onAppear(perform: configureView)
-            .navigationBarTitle("Meal Settings")
-            .navigationBarTitleDisplayMode(.automatic)
         }
     }
 }

+ 13 - 4
FreeAPS/Sources/Modules/NightscoutConfig/View/NightscoutUploadView.swift

@@ -46,9 +46,16 @@ struct NightscoutUploadView: View {
                 type: .boolean,
                 label: "Allow Uploading to Nightscout",
                 miniHint: "Enables upload of selected data sets to Nightscout. See hint for more details.",
-                verboseHint: Text(
-                    "The Upload Treatments toggle enables uploading of carbs, temp targets, device status, preferences and settings."
-                )
+                verboseHint: VStack(spacing: 10) {
+                    Text("The Upload Treatments toggle enables uploading of:")
+                    VStack(alignment: .leading) {
+                        Text("• Carbs")
+                        Text("• Temp Targets")
+                        Text("• Device Status")
+                        Text("• Preferences")
+                        Text("• Settings")
+                    }
+                }
             )
 
             if state.changeUploadGlucose {
@@ -68,7 +75,9 @@ struct NightscoutUploadView: View {
                     type: .boolean,
                     label: "Upload Glucose",
                     miniHint: "Enables uploading of CGM readings to Nightscout.",
-                    verboseHint: Text("Write stuff here.")
+                    verboseHint: Text(
+                        "Enabling this setting allows CGM readings from Trio to be used in Nightscout."
+                    )
                 )
             }
         }

+ 14 - 2
FreeAPS/Sources/Modules/NightscoutConfig/View/ProfileImport/ReviewInsulinActionView.swift

@@ -49,8 +49,20 @@ struct ReviewInsulinActionView: BaseView {
                 units: state.units,
                 type: .decimal("dia"),
                 label: "Duration of Insulin Action",
-                miniHint: "Lorem ipsum dolor sit amet, consetetur sadipscing elitr.",
-                verboseHint: Text("Duration of Insulin Action… bla bla bla"),
+                miniHint: """
+                Number of hours insulin is active in your body
+                Default: 6 hours
+                """,
+                verboseHint: VStack {
+                    Text("Default: 6 hours").bold()
+                    Text("""
+
+                    Number of hours insulin will contribute to IOB after dosing.
+
+                    """)
+                    Text("It is better to use Custom Peak Timing rather than adjust your Duration of Insulin Action (DIA)")
+                        .italic()
+                },
                 headerText: "Review imported DIA"
             )
         }

+ 25 - 25
FreeAPS/Sources/Modules/SMBSettings/View/SMBSettingsRootView.swift

@@ -367,17 +367,17 @@ extension SMBSettings {
                     type: .decimal("maxDeltaBGthreshold"),
                     label: NSLocalizedString("Max Delta-BG Threshold SMB", comment: "Max Delta-BG Threshold"),
                     miniHint: """
-                        When the difference between the last two glucose values is larger than this, it will disable SMBs
-                        Default: 20%
-                        """,
+                    When the difference between the last two glucose values is larger than this, it will disable SMBs
+                    Default: 20%
+                    """,
                     verboseHint: VStack {
                         Text("Default: 20% increase").bold()
                         Text("""
-                            
-                            Maximum allowed positive percentual change in glucose level to permit SMBs. If the difference in glucose is greater than this, Trio will disable SMBs.
-                            
-                            """)
-                        Text("This setting has a hard-coded cap of a 40%").italic()
+
+                        Maximum allowed positive percentual change in glucose level to permit SMBs. If the difference in glucose is greater than this, Trio will disable SMBs.
+
+                        """)
+                        Text("This setting has a hard-coded cap of 40%").italic()
                     }
                 )
 
@@ -396,18 +396,18 @@ extension SMBSettings {
                     type: .decimal("smbDeliveryRatio"),
                     label: NSLocalizedString("SMB DeliveryRatio", comment: "SMB DeliveryRatio"),
                     miniHint: """
-                        Safety limit on what percentage of total calculated insulin required can be administered as an SMB
-                        Default: 50%
-                        """,
+                    Safety limit on what percentage of total calculated insulin required can be administered as an SMB
+                    Default: 50%
+                    """,
                     verboseHint: VStack {
                         Text("Default: 50%").bold()
                         Text("""
-                            
-                            Once the total insulin required is calculated, this safety limit specifies what share of the total insulin required can be delivered as an SMB.
-                            
-                            Due to SMBs occurring every 5 minutes, it is important to set this value to a reasonable level that allows Trio to safely zero temp should dosing needs suddenly change. Increase this value with caution.
-                            
-                            """)
+
+                        Once the total insulin required is calculated, this safety limit specifies what share of the total insulin required can be delivered as an SMB.
+
+                        Due to SMBs occurring every 5 minutes, it is important to set this value to a reasonable level that allows Trio to safely zero temp should dosing needs suddenly change. Increase this value with caution.
+
+                        """)
                         Text("Limited to a range of 30 - 70%").italic()
                     }
                 )
@@ -427,17 +427,17 @@ extension SMBSettings {
                     type: .decimal("smbInterval"),
                     label: NSLocalizedString("SMB Interval", comment: "SMB Interval"),
                     miniHint: """
-                        Minimum minutes since the last SMB or manual bolus to allow an automated SMB
-                        Default: 3 min
-                        """,
+                    Minimum minutes since the last SMB or manual bolus to allow an automated SMB
+                    Default: 3 min
+                    """,
                     verboseHint: VStack {
                         Text("Default: 3 min").bold()
                         Text("""
-                            
-                            This is the minimum number of minutes since the last SMB or manual bolus before Trio will permit an automated SMB.
-                            
-                            For Omnipod Dash, this value can be as low as 3 min. For Omnipod Eros, the value can be as low as 5 min.
-                            """)
+
+                        This is the minimum number of minutes since the last SMB or manual bolus before Trio will permit an automated SMB.
+
+                        For Omnipod Dash, this value can be as low as 3 min. For Omnipod Eros, the value can be as low as 5 min.
+                        """)
                     }
                 )
             }

+ 39 - 39
FreeAPS/Sources/Modules/TargetBehavoir/View/TargetBehavoirRootView.swift

@@ -55,19 +55,19 @@ extension TargetBehavoir {
                         comment: "High Temp Target Raises Sensitivity"
                     ),
                     miniHint: """
-                        A Temp Target above 110 mg/dL increases sensitivity when glucose is above target
-                        Default: OFF
-                        """,
+                    A Temp Target above 110 mg/dL increases sensitivity when glucose is above target
+                    Default: OFF
+                    """,
                     verboseHint: VStack {
                         Text("Exercise-mode").bold().italic()
                         Text("Default: OFF").bold()
                         Text("""
-                            
-                            When this feature is enabled, setting a temporary target above 110 mg/dL will decrease the Autosens Ratio used for ISF and basal adjustments, resulting in less insulin delivered overall. This scales with the temporary target set; the higher the temp target, the lower the Autosens Ratio used.
-                            
-                            If Half Basal Exercise Target is set to 160, a temp target of 120 mg/dL uses an Autosens Ratio of 0.75. A temp target of 140 mg/dL uses an Autosens Ratio of 0.6.
-                            
-                            """)
+
+                        When this feature is enabled, setting a temporary target above 110 mg/dL will decrease the Autosens Ratio used for ISF and basal adjustments, resulting in less insulin delivered overall. This scales with the temporary target set; the higher the temp target, the lower the Autosens Ratio used.
+
+                        If Half Basal Exercise Target is set to 160, a temp target of 120 mg/dL uses an Autosens Ratio of 0.75. A temp target of 140 mg/dL uses an Autosens Ratio of 0.6.
+
+                        """)
                         Text("The effect of this can be adjusted with the Half Basal Exercise Target").italic()
                     },
                     headerText: "Algorithmic Target Settings"
@@ -94,19 +94,19 @@ extension TargetBehavoir {
                         comment: "Low Temp Target Lowers Sensitivity"
                     ),
                     miniHint: """
-                        A Temp Target below 100 mg/dL decreases sensitivity when glucose is below target
-                        Default setting: OFF
-                        """,
+                    A Temp Target below 100 mg/dL decreases sensitivity when glucose is below target
+                    Default setting: OFF
+                    """,
                     verboseHint: VStack {
                         Text("Eating Soon Mode").bold().italic()
                         Text("Default: OFF").bold()
                         Text("""
-                            
-                            When this feature is enabled, setting a temporary target below 100 mg/dL will increase the autosens ratio used for ISF and basal adjustments, resulting in more insulin delivered overall. This scales with the temporary target set; the lower the temp target, the higher the autosens ratio used.
-                            
-                            If Half Basal Exercise Target is 160, a temp target of 95 mg/dL uses an autosens ratio of 1.09. A temp target of 85 mg/dL uses an autosens ratio of 1.33.
-                            
-                            """)
+
+                        When this feature is enabled, setting a temporary target below 100 mg/dL will increase the autosens ratio used for ISF and basal adjustments, resulting in more insulin delivered overall. This scales with the temporary target set; the lower the temp target, the higher the autosens ratio used.
+
+                        If Half Basal Exercise Target is 160, a temp target of 95 mg/dL uses an autosens ratio of 1.09. A temp target of 85 mg/dL uses an autosens ratio of 1.33.
+
+                        """)
                         Text("The effect of this can be adjusted with the Half Basal Exercise Target").italic()
                     }
                 )
@@ -126,15 +126,15 @@ extension TargetBehavoir {
                     type: .boolean,
                     label: NSLocalizedString("Sensitivity Raises Target", comment: "Sensitivity Raises Target"),
                     miniHint: """
-                        Trio will automatically raise your target glucose with increased sensitivity
-                        Default: OFF
-                        """,
+                    Trio will automatically raise your target glucose with increased sensitivity
+                    Default: OFF
+                    """,
                     verboseHint: VStack {
                         Text("Default: OFF").bold()
                         Text("""
-                            
-                            Enabling this feature causes Trio to automatically increase the targeted glucose if it detects an increase in sensitivity.
-                            """)
+
+                        Enabling this feature causes Trio to automatically increase the targeted glucose if it detects an increase in sensitivity.
+                        """)
                     }
                 )
 
@@ -153,15 +153,15 @@ extension TargetBehavoir {
                     type: .boolean,
                     label: NSLocalizedString("Resistance Lowers Target", comment: "Resistance Lowers Target"),
                     miniHint: """
-                        Trio will automatically lower your target glucose when it detects resistance
-                        Default: OFF
-                        """,
+                    Trio will automatically lower your target glucose when it detects resistance
+                    Default: OFF
+                    """,
                     verboseHint: VStack {
                         Text("Default: OFF").bold()
                         Text("""
-                            
-                            Enabling this feature causes Trio to automatically reduce the targeted glucose if it detects a decrease in sensitivity (resistance).
-                            """)
+
+                        Enabling this feature causes Trio to automatically reduce the targeted glucose if it detects a decrease in sensitivity (resistance).
+                        """)
                     }
                 )
 
@@ -180,19 +180,19 @@ extension TargetBehavoir {
                     type: .decimal("halfBasalExerciseTarget"),
                     label: NSLocalizedString("Half Basal Exercise Target", comment: "Half Basal Exercise Target"),
                     miniHint: """
-                        Sets your current basal rate to 50% when a temp target is set to this number (in mg/dL)
-                        Default: 160 mg/dL
-                        """,
+                    Sets your current basal rate to 50% when a temp target is set to this number (in mg/dL)
+                    Default: 160 mg/dL
+                    """,
                     verboseHint: VStack {
                         Text("Default: 160 mg/dL").bold()
                         Text("""
-                            
-                            The Half Basal Exercise Target allows you to scale down your basal insulin during exercise or scale up your basal insulin when eating soon when a temporary glucose target is set. For example, at a temp target of 160 mg/dL, your basal is reduced to 50%, but this scales depending on the target (e.g., 75% at 120 mg/dL, 60% at 140 mg/dL).
-                            
-                            """)
+
+                        The Half Basal Exercise Target allows you to scale down your basal insulin during exercise or scale up your basal insulin when eating soon when a temporary glucose target is set. For example, at a temp target of 160 mg/dL, your basal is reduced to 50%, but this scales depending on the target (e.g., 75% at 120 mg/dL, 60% at 140 mg/dL).
+
+                        """)
                         Text("""
-                            This setting is only utilized if the settings "Low Temp Target Lowers Sensitivity" OR "High Temp Target Raises Sensitivity" are enabled.
-                            """).italic()
+                        This setting is only utilized if the settings "Low Temp Target Lowers Sensitivity" OR "High Temp Target Raises Sensitivity" are enabled.
+                        """).italic()
                     }
                 )
             }