ソースを参照

Merge branch 'settings-update' of https://github.com/tmhastings/Trio-dev into settings-update

Mike Plante 1 年間 前
コミット
e12d614f70
25 ファイル変更387 行追加442 行削除
  1. 53 54
      FreeAPS/Sources/Modules/AlgorithmAdvancedSettings/View/AlgorithmAdvancedSettingsRootView.swift
  2. 8 11
      FreeAPS/Sources/Modules/AutosensSettings/View/AutosensSettingsRootView.swift
  3. 197 196
      FreeAPS/Sources/Modules/AutotuneConfig/View/AutotuneConfigRootView.swift
  4. 5 10
      FreeAPS/Sources/Modules/BolusCalculatorConfig/View/BolusCalculatorConfigRootView.swift
  5. 3 3
      FreeAPS/Sources/Modules/CGM/View/CGMRootView.swift
  6. 4 4
      FreeAPS/Sources/Modules/CalendarEventSettings/View/CalendarEventSettingsRootView.swift
  7. 32 53
      FreeAPS/Sources/Modules/DynamicSettings/View/DynamicSettingsRootView.swift
  8. 7 9
      FreeAPS/Sources/Modules/GeneralSettings/View/UnitsLimitsSettingsRootView.swift
  9. 4 4
      FreeAPS/Sources/Modules/GlucoseNotificationSettings/View/GlucoseNotificationSettingsRootView.swift
  10. 1 2
      FreeAPS/Sources/Modules/HealthKit/View/AppleHealthKitRootView.swift
  11. 4 4
      FreeAPS/Sources/Modules/Home/View/HomeRootView.swift
  12. 2 2
      FreeAPS/Sources/Modules/LiveActivitySettings/View/LiveActivitySettingsRootView.swift
  13. 8 9
      FreeAPS/Sources/Modules/MealSettings/View/MealSettingsRootView.swift
  14. 13 27
      FreeAPS/Sources/Modules/NightscoutConfig/View/NightscoutConfigRootView.swift
  15. 2 2
      FreeAPS/Sources/Modules/NightscoutConfig/View/NightscoutFetchView.swift
  16. 2 2
      FreeAPS/Sources/Modules/NightscoutConfig/View/NightscoutUploadView.swift
  17. 1 2
      FreeAPS/Sources/Modules/NightscoutConfig/View/ProfileImport/ReviewInsulinActionView.swift
  18. 1 1
      FreeAPS/Sources/Modules/PumpConfig/View/PumpConfigRootView.swift
  19. 22 28
      FreeAPS/Sources/Modules/SMBSettings/View/SMBSettingsRootView.swift
  20. 2 2
      FreeAPS/Sources/Modules/Settings/SettingItems.swift
  21. 6 6
      FreeAPS/Sources/Modules/Settings/View/Subviews/FeatureSettingsView.swift
  22. 1 1
      FreeAPS/Sources/Modules/ShortcutsConfig/View/ShortcutsConfigView.swift
  23. 7 8
      FreeAPS/Sources/Modules/TargetBehavoir/View/TargetBehavoirRootView.swift
  24. 1 1
      FreeAPS/Sources/Modules/UserInterfaceSettings/View/UserInterfaceSettingsRootView.swift
  25. 1 1
      FreeAPS/Sources/Shortcuts/State/ListStateIntent.swift

+ 53 - 54
FreeAPS/Sources/Modules/AlgorithmAdvancedSettings/View/AlgorithmAdvancedSettingsRootView.swift

@@ -60,7 +60,7 @@ extension AlgorithmAdvancedSettings {
                     units: state.units,
                     type: .decimal("maxDailySafetyMultiplier"),
                     label: NSLocalizedString("Max Daily Safety Multiplier", comment: "Max Daily Safety Multiplier"),
-                    miniHint: "Limits temp basals to this % of your largest basal rate \nDefault:300%",
+                    miniHint: "Limits temporary basal rates to this percentage of your largest basal rate",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: 300%").bold()
                         VStack(alignment: .leading, spacing: 10) {
@@ -68,8 +68,7 @@ extension AlgorithmAdvancedSettings {
                                 "This setting restricts the maximum temporary basal rate Trio can set. At the default of 300%, it caps it at 3 times your highest programmed basal rate."
                             )
                             Text("It serves as a safety limit, ensuring no temporary basal rates exceed safe levels.")
-                            Text("Note: If Autotune is enabled, Trio uses Autotune basals instead of scheduled basals.").italic()
-                            Text("Warning: Increasing this setting is not advised.").bold().italic()
+                            Text("Warning: Increasing this setting is not advised.").bold()
                         }
                     }
                 )
@@ -91,7 +90,7 @@ extension AlgorithmAdvancedSettings {
                     units: state.units,
                     type: .decimal("currentBasalSafetyMultiplier"),
                     label: NSLocalizedString("Current Basal Safety Multiplier", comment: "Current Basal Safety Multiplier"),
-                    miniHint: "Limits temp basals to this % of the current basal rate \nDefault: 400%",
+                    miniHint: "Limits temporary basal rates to this percentage of the current basal rate",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: 400%").bold()
                         VStack(alignment: .leading, spacing: 10) {
@@ -101,8 +100,7 @@ extension AlgorithmAdvancedSettings {
                             Text(
                                 "This prevents excessive dosing, especially during times of variable insulin sensitivity, enhancing safety."
                             )
-                            Text("Note: If Autotune is enabled, Trio uses Autotune basals instead of scheduled basals.").italic()
-                            Text("Warning: Increasing this setting is not advised.").bold().italic()
+                            Text("Warning: Increasing this setting is not advised.").bold()
                         }
                     }
                 )
@@ -121,12 +119,12 @@ extension AlgorithmAdvancedSettings {
                     units: state.units,
                     type: .decimal("dia"),
                     label: "Duration of Insulin Action",
-                    miniHint: "Number of hours insulin is active in your body \nDefault: 6 hours",
+                    miniHint: "Number of hours insulin is active in your body",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: 6 hours").bold()
                         VStack(alignment: .leading, spacing: 10) {
                             Text(
-                                "The Duration of Insulin Action (DIA) defines how long your insulin continues to lower blood glucose after a dose."
+                                "The Duration of Insulin Action (DIA) defines how long your insulin continues to lower glucose readings after a dose."
                             )
                             Text(
                                 "This helps the system accurately track Insulin on Board (IOB), avoiding over- or under-corrections by considering the tail end of insulin's effect"
@@ -134,8 +132,7 @@ extension AlgorithmAdvancedSettings {
                             Text(
                                 "Tip: It is better to use Custom Peak Time rather than adjust your Duration of Insulin Action (DIA)"
                             )
-                            .italic()
-                            Text("Warning: Decreasing this setting is not advised.").bold().italic()
+                            Text("Warning: Decreasing this setting is not advised.").bold()
                         }
                     }
                 )
@@ -155,12 +152,12 @@ extension AlgorithmAdvancedSettings {
                     type: .conditionalDecimal("insulinPeakTime"),
                     label: NSLocalizedString("Use Custom Peak Time", comment: "Use Custom Peak Time"),
                     conditionalLabel: NSLocalizedString("Insulin Peak Time", comment: "Insulin Peak Time"),
-                    miniHint: "Sets time of insulin’s peak effect \nDefault: (Set by Insulin Type)",
+                    miniHint: "Sets time of insulin's peak effect",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: Set by Insulin Type").bold()
                         VStack(alignment: .leading, spacing: 10) {
                             Text(
-                                "Insulin Peak Time defines when insulin is most effective in lowering blood glucose, set in minutes after dosing."
+                                "Insulin Peak Time defines when insulin is most effective in lowering glucose, set in minutes after dosing."
                             )
                             Text(
                                 "This peak informs the system when to expect the most potent glucose-lowering effect, helping it predict glucose trends more accurately."
@@ -186,7 +183,7 @@ extension AlgorithmAdvancedSettings {
                     units: state.units,
                     type: .boolean,
                     label: NSLocalizedString("Skip Neutral Temps", comment: "Skip Neutral Temps"),
-                    miniHint: "Skip neutral temp basals to reduce pump alerts \nDefault: OFF",
+                    miniHint: "Skip neutral temporary basal rates to reduce pump alerts",
                     verboseHint: VStack {
                         Text("Default: OFF").bold()
                         VStack(alignment: .leading, spacing: 10) {
@@ -212,14 +209,14 @@ extension AlgorithmAdvancedSettings {
                     units: state.units,
                     type: .boolean,
                     label: NSLocalizedString("Unsuspend If No Temp", comment: "Unsuspend If No Temp"),
-                    miniHint: "Automatically resumes pump after suspension \nDefault: OFF",
+                    miniHint: "Automatically resumes pump after suspension",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: OFF").bold()
                         VStack(alignment: .leading, spacing: 10) {
                             Text(
                                 "Enabling Unsuspend If No Temp allows Trio to resume your pump if you forget, as long as a zero temp basal was set first. This feature ensures insulin delivery restarts if you forget to manually unsuspend, adding a safeguard for pump reconnections."
                             )
-                            Text("Note: Applies only to pumps with on-pump suspend options").italic()
+                            Text("Note: Applies only to pumps with on-pump suspend options")
                         }
                     }
                 )
@@ -238,46 +235,48 @@ extension AlgorithmAdvancedSettings {
                     units: state.units,
                     type: .boolean,
                     label: NSLocalizedString("Suspend Zeros IOB", comment: "Suspend Zeros IOB"),
-                    miniHint: "Clears temp basals and resets IOB when suspended \nDefault: OFF",
+                    miniHint: "Clears temporary basal rates and resets IOB when suspended",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: OFF").bold()
                         VStack(alignment: .leading, spacing: 10) {
                             Text(
-                                "When Suspend Zeros IOB is enabled, any active temp basals during a pump suspension are reset, with new zero temp basals added to counteract the basal rates during suspension."
+                                "When Suspend Zeros IOB is enabled, any active temporary basal rates during a pump suspension are reset, with new 0 U/hr temporary basal rates added to counteract those done during suspension."
                             )
                             Text(
                                 "This prevents lingering insulin effects when your pump is suspended, ensuring safer management of insulin on board."
                             )
-                            Text("Note: Applies to only to pumps with on-pump suspend options").italic()
+                            Text("Note: Applies to only to pumps with on-pump suspend options")
                         }
                     }
                 )
 
-                SettingInputSection(
-                    decimalValue: $state.autotuneISFAdjustmentFraction,
-                    booleanValue: $booleanPlaceholder,
-                    shouldDisplayHint: $shouldDisplayHint,
-                    selectedVerboseHint: Binding(
-                        get: { selectedVerboseHint },
-                        set: {
-                            selectedVerboseHint = $0.map { AnyView($0) }
-                            hintLabel = NSLocalizedString(
-                                "Autotune ISF Adjustment Percent",
-                                comment: "Autotune ISF Adjustment Percent"
-                            )
-                        }
-                    ),
-                    units: state.units,
-                    type: .decimal("autotuneISFAdjustmentFraction"),
-                    label: NSLocalizedString("Autotune ISF Adjustment Percent", comment: "Autotune ISF Adjustment Percent"),
-                    miniHint: "Using Autotune is not advised \nDefault: 50%",
-                    verboseHint: Text(
-                        NSLocalizedString(
-                            "The default of 50% for this value keeps autotune ISF closer to pump ISF via a weighted average of fullNewISF and pumpISF. 100% allows full adjustment, 0% is no adjustment from pump ISF.",
-                            comment: "Autotune ISF Adjustment Percent"
-                        )
-                    )
-                )
+                
+                //Commenting out Autotune from Settings Menu until full removal is complete
+                //SettingInputSection(
+                    //decimalValue: $state.autotuneISFAdjustmentFraction,
+                    //booleanValue: $booleanPlaceholder,
+                    //shouldDisplayHint: $shouldDisplayHint,
+                    //selectedVerboseHint: Binding(
+                        //get: { selectedVerboseHint },
+                        //set: {
+                            //selectedVerboseHint = $0.map { AnyView($0) }
+                            //hintLabel = NSLocalizedString(
+                                //"Autotune ISF Adjustment Percent",
+                                //comment: "Autotune ISF Adjustment Percent"
+                            //)
+                        //}
+                    //),
+                    //units: state.units,
+                    //type: .decimal("autotuneISFAdjustmentFraction"),
+                    //label: NSLocalizedString("Autotune ISF Adjustment Percent", comment: "Autotune ISF Adjustment Percent"),
+                    //miniHint: "Using Autotune is not advised",
+                    //verboseHint: Text(
+                        //NSLocalizedString(
+                            //"The default of 50% for this value keeps autotune ISF closer to pump ISF via a weighted average of fullNewISF and pumpISF. 100% allows full adjustment, 0% is no adjustment from pump ISF.",
+                            //comment: "Autotune ISF Adjustment Percent"
+                        //)
+                    //)
+                //)
 
                 SettingInputSection(
                     decimalValue: $state.min5mCarbimpact,
@@ -290,22 +289,22 @@ extension AlgorithmAdvancedSettings {
                             hintLabel = NSLocalizedString("Min 5m Carb Impact", comment: "Min 5m Carb Impact")
                         }
                     ),
+                    let myText = (state.units == .mg/dL ? 8 : 8.formmatedAsMmolL) + "Default:" + state.units.rawValue)
                     units: state.units,
                     type: .decimal("min5mCarbimpact"),
                     label: NSLocalizedString("Min 5m Carb Impact", comment: "Min 5m Carb Impact"),
-                    miniHint: "Estimates carb absorption rate per 5 minutes \nDefault: 8 mg/dL/5min",
+                    miniHint: "Estimates the impact of carb absorbtion after 5 minutes",
                     verboseHint: VStack(spacing: 10) {
-                        Text("mg/dL Default: 8 mg/dL/5min").bold()
-                        Text("mmol/L Default: 0.4 mmol/L/5min").bold()
+                        Text(myText).bold
                         VStack(alignment: .leading, spacing: 10) {
                             Text(
-                                "Min 5m Carb Impact sets the expected glucose rise from carbs over 5 minutes when absorption isnt obvious from glucose data."
+                                "Min 5m Carb Impact sets the expected glucose rise from carbs over 5 minutes when absorption isn't obvious from glucose data."
                             )
                             Text(
                                 "The default value of 8 mg/dL per 5 minutes corresponds to an absorption rate of 24g of carbs per hour."
                             )
                             Text(
-                                "This setting helps the system estimate how much glucose your body is absorbing, even when its not immediately visible in your glucose data, ensuring more accurate insulin dosing during carb absorption."
+                                "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."
                             )
                         }
                     }
@@ -325,12 +324,12 @@ extension AlgorithmAdvancedSettings {
                     units: state.units,
                     type: .decimal("remainingCarbsFraction"),
                     label: NSLocalizedString("Remaining Carbs Percentage", comment: "Remaining Carbs Percentage"),
-                    miniHint: "% of carbs still available if no absorption is detected \nDefault: 100%",
+                    miniHint: "% of carbs still available if no absorption is detected",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: 100%").bold()
                         VStack(alignment: .leading, spacing: 10) {
                             Text(
-                                "Remaining Carbs Percentage estimates carbs still absorbing over 4 hours if glucose data doesnt show clear absorption."
+                                "Remaining Carbs Percentage estimates carbs still absorbing over 4 hours if glucose data doesn't show clear absorption."
                             )
                             Text(
                                 "This fallback setting prevents under-dosing by spreading a portion of the entered carbs over time, balancing insulin needs with undetected carb impact."
@@ -353,15 +352,15 @@ extension AlgorithmAdvancedSettings {
                     units: state.units,
                     type: .decimal("remainingCarbsCap"),
                     label: NSLocalizedString("Remaining Carbs Cap", comment: "Remaining Carbs Cap"),
-                    miniHint: "Maximum Carbs(g) still available if no absorption is detected \nDefault:  90g",
+                    miniHint: "Maximum amount of carbs still available if no absorption is detected",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: 90g").bold()
                         VStack(alignment: .leading, spacing: 10) {
                             Text(
-                                "The Remaining Carbs Cap defines the upper limit for how many carbs the system will assume are absorbing over 4 hours, even when theres no clear sign of absorption from your glucose readings."
+                                "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."
                             )
                             Text(
-                                "This cap prevents the system from overestimating how much insulin is needed when carb absorption isnt visible, offering a safeguard for accurate dosing."
+                                "This cap prevents the system from overestimating how much insulin is needed when carb absorption isn't visible, offering a safeguard for accurate dosing."
                             )
                         }
                     }
@@ -381,7 +380,7 @@ extension AlgorithmAdvancedSettings {
                     units: state.units,
                     type: .decimal("noisyCGMTargetMultiplier"),
                     label: NSLocalizedString("Noisy CGM Target Increase", comment: "Noisy CGM Target Increase"),
-                    miniHint: "Increase glucose target when noisy CGM data detected \nDefault: 130%",
+                    miniHint: "Increase glucose target when noisy CGM data detected%",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: 130%").bold()
                         VStack(alignment: .leading, spacing: 10) {

+ 8 - 11
FreeAPS/Sources/Modules/AutosensSettings/View/AutosensSettingsRootView.swift

@@ -48,20 +48,19 @@ extension AutosensSettings {
                     units: state.units,
                     type: .decimal("autosensMax"),
                     label: NSLocalizedString("Autosens Max", comment: "Autosens Max"),
-                    miniHint: "The higher limit of the Autosens Ratio \nDefault: 120%",
+                    miniHint: "The higher limit of the Autosens Ratio",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: 120%").bold()
                         VStack(alignment: .leading, spacing: 10) {
                             Text(
-                                "Autosens Max sets the maximum Autosens Ratio used by Autosens, Dynamic ISF, Sigmoid Formula, and/or Autotune."
+                                "Autosens Max sets the maximum Autosens Ratio used by Autosens, Dynamic ISF, or Sigmoid Formula"
                             )
                             Text(
-                                "The Autosens Ratio is used to calculate the amount of adjustment needed to basals, ISF, and CR."
+                                "The Autosens Ratio is used to calculate the amount of adjustment needed to basal rates, ISF, and CR."
                             )
                             Text(
                                 "Tip: Increasing this value allows automatic adjustments of basal rates to be higher, ISF to be lower, and CR to be lower."
                             )
-                            .italic()
                         }
                     },
                     headerText: "Glucose Deviations Algorithm"
@@ -81,20 +80,19 @@ extension AutosensSettings {
                     units: state.units,
                     type: .decimal("autosensMin"),
                     label: NSLocalizedString("Autosens Min", comment: "Autosens Min"),
-                    miniHint: "The lower limit of the Autosens Ratio \nDefault: 80%",
+                    miniHint: "The lower limit of the Autosens Ratio",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: 80%").bold()
                         VStack(alignment: .leading, spacing: 10) {
                             Text(
-                                "Autosens Min sets the minimum Autosens Ratio used by Autosens, Dynamic ISF, Sigmoid Formula, and/or Autotune."
+                                "Autosens Min sets the minimum Autosens Ratio used by Autosens, Dynamic ISF, or Sigmoid Formula."
                             )
                             Text(
-                                "The Autosens Ratio is used to calculate the amount of adjustment needed to basals, ISF, and CR."
+                                "The Autosens Ratio is used to calculate the amount of adjustment needed to basal rates, ISF, and CR."
                             )
                             Text(
                                 "Tip: Decreasing this value allows automatic adjustments of basal rates to be lower, ISF to be higher, and CR to be higher."
                             )
-                            .italic()
                         }
                     }
                 )
@@ -113,10 +111,10 @@ extension AutosensSettings {
                     units: state.units,
                     type: .boolean,
                     label: NSLocalizedString("Rewind Resets Autosens", comment: "Rewind Resets Autosens"),
-                    miniHint: "Pump rewind initiates a reset in Autosens Ratio \nDefault: ON",
+                    miniHint: "Pump rewind initiates a reset in Autosens Ratio",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: ON").bold()
-                        Text("Medtronic Users Only").bold().italic()
+                        Text("Medtronic Users Only").bold()
                         VStack(alignment: .leading, spacing: 10) {
                             Text(
                                 "This feature resets the Autosens Ratio to neutral when you rewind your pump on the assumption that this corresponds to a site change."
@@ -127,7 +125,6 @@ extension AutosensSettings {
                             Text(
                                 "Tip: If you usually rewind your pump independently of site changes, you may want to consider disabling this feature."
                             )
-                            .italic()
                         }
                     }
                 )

+ 197 - 196
FreeAPS/Sources/Modules/AutotuneConfig/View/AutotuneConfigRootView.swift

@@ -1,180 +1,181 @@
-import SwiftUI
-import Swinject
+//Commenting out Autotune from Settings Menu until full removal is complete
+//import SwiftUI
+//import Swinject
+//
+//extension AutotuneConfig {
+    //struct RootView: BaseView {
+        //let resolver: Resolver
+        //@StateObject var state = StateModel()
+//
+        //@State private var shouldDisplayHint: Bool = false
+        //@State var hintDetent = PresentationDetent.large
+        //@State var selectedVerboseHint: AnyView?
+        //@State var hintLabel: String?
+        //@State private var decimalPlaceholder: Decimal = 0.0
+        //@State private var booleanPlaceholder: Bool = false
+//
+        //@State var replaceAlert = false
+//
+        //@Environment(\.colorScheme) var colorScheme
+        //var color: LinearGradient {
+            //colorScheme == .dark ? LinearGradient(
+                //gradient: Gradient(colors: [
+                    //Color.bgDarkBlue,
+                    //Color.bgDarkerDarkBlue
+                //]),
+                //startPoint: .top,
+                //endPoint: .bottom
+            //)
+                //:
+                //LinearGradient(
+                    //gradient: Gradient(colors: [Color.gray.opacity(0.1)]),
+                    //startPoint: .top,
+                    //endPoint: .bottom
+                //)
+        //}
 
-extension AutotuneConfig {
-    struct RootView: BaseView {
-        let resolver: Resolver
-        @StateObject var state = StateModel()
+        //private var isfFormatter: NumberFormatter {
+            //let formatter = NumberFormatter()
+            //formatter.numberStyle = .decimal
+            //formatter.maximumFractionDigits = 2
+            //return formatter
+        //}
 
-        @State private var shouldDisplayHint: Bool = false
-        @State var hintDetent = PresentationDetent.large
-        @State var selectedVerboseHint: AnyView?
-        @State var hintLabel: String?
-        @State private var decimalPlaceholder: Decimal = 0.0
-        @State private var booleanPlaceholder: Bool = false
+        //private var rateFormatter: NumberFormatter {
+            //let formatter = NumberFormatter()
+            //formatter.numberStyle = .decimal
+            //formatter.maximumFractionDigits = 2
+            //return formatter
+        //}
 
-        @State var replaceAlert = false
+        //private var dateFormatter: DateFormatter {
+            //let formatter = DateFormatter()
+            //formatter.dateStyle = .medium
+            //formatter.timeStyle = .short
+            //return formatter
+        //}
 
-        @Environment(\.colorScheme) var colorScheme
-        var color: LinearGradient {
-            colorScheme == .dark ? LinearGradient(
-                gradient: Gradient(colors: [
-                    Color.bgDarkBlue,
-                    Color.bgDarkerDarkBlue
-                ]),
-                startPoint: .top,
-                endPoint: .bottom
-            )
-                :
-                LinearGradient(
-                    gradient: Gradient(colors: [Color.gray.opacity(0.1)]),
-                    startPoint: .top,
-                    endPoint: .bottom
-                )
-        }
+        //var body: some View {
+            //Form {
+                //SettingInputSection(
+                    //decimalValue: $decimalPlaceholder,
+                    //booleanValue: $state.useAutotune,
+                    //shouldDisplayHint: $shouldDisplayHint,
+                    //selectedVerboseHint: Binding(
+                        //get: { selectedVerboseHint },
+                        //set: {
+                            //selectedVerboseHint = $0.map { AnyView($0) }
+                            //hintLabel = "Use Autotune"
+                        //}
+                    //),
+                    //units: state.units,
+                    //type: .boolean,
+                    //label: "Use Autotune",
+                    //miniHint: "It is not advised to use Autotune with Trio",
+                    //verboseHint: VStack(spacing: 10) {
+                        //Text("Default: OFF").bold()
+                        //VStack(alignment: .leading, spacing: 10) {
+                            //Text("It is not advised to use Autotune with Trio").bold()
+                            //Text("Autotune is not designed to work with Trio. It is best to keep Autotune off and do not use it.")
+                        //}
+                    //},
+                    //headerText: "Data-driven Adjustments"
+                //)
+//
+                //if state.useAutotune {
+                    //SettingInputSection(
+                        //decimalValue: $decimalPlaceholder,
+                        //booleanValue: $state.onlyAutotuneBasals,
+                        //shouldDisplayHint: $shouldDisplayHint,
+                        //selectedVerboseHint: Binding(
+                            //get: { selectedVerboseHint },
+                            //set: {
+                                //selectedVerboseHint = $0.map { AnyView($0) }
+                                //hintLabel = "Only Autotune Basal Insulin"
+                            //}
+                        //),
+                        //units: state.units,
+                        //type: .boolean,
+                        //label: "Only Autotune Basal Insulin",
+                        //miniHint: "Restricts Autotune adjustments to only basal settings",
+                        //verboseHint: Text("Restricts Autotune adjustments to only basal settings.")
+                    //)
+                //}
 
-        private var isfFormatter: NumberFormatter {
-            let formatter = NumberFormatter()
-            formatter.numberStyle = .decimal
-            formatter.maximumFractionDigits = 2
-            return formatter
-        }
+                //Section(
+                    //header: HStack {
+                        //Text("Last run")
+                        //Spacer()
+                        //Text(dateFormatter.string(from: state.publishedDate))
+                    //},
+                    //content: {
+                        //Button {
+                            //state.run()
+                        //} label: {
+                            //Text("Run now")
+                        //}
+                        //.frame(maxWidth: .infinity, alignment: .center)
+                        //.listRowBackground(Color(.systemBlue))
+                        //.tint(.white)
+                    //}
+                //)
+//
+                //if let autotune = state.autotune {
+                    //if !state.onlyAutotuneBasals {
+                        //Section {
+                            //HStack {
+                                //Text("Carb ratio")
+                                //Spacer()
+                                //Text(isfFormatter.string(from: autotune.carbRatio as NSNumber) ?? "0")
+                                //Text("g/U").foregroundColor(.secondary)
+                            //}
+                            //HStack {
+                                //Text("Sensitivity")
+                                //Spacer()
+                                //if state.units == .mmolL {
+                                    //Text(isfFormatter.string(from: autotune.sensitivity.asMmolL as NSNumber) ?? "0")
+                                //} else {
+                                    //Text(isfFormatter.string(from: autotune.sensitivity as NSNumber) ?? "0")
+                                //}
+                                //Text(state.units.rawValue + "/U").foregroundColor(.secondary)
+                            //}
+                        //}
+                        //.listRowBackground(Color.chart)
+                    //}
+//
+                    //Section(header: Text("Basal profile")) {
+                        //ForEach(0 ..< autotune.basalProfile.count, id: \.self) { index in
+                            //HStack {
+                                //Text(autotune.basalProfile[index].start).foregroundColor(.secondary)
+                                //Spacer()
+                                //Text(rateFormatter.string(from: autotune.basalProfile[index].rate as NSNumber) ?? "0")
+                                //Text("U/hr").foregroundColor(.secondary)
+                            //}
+                        //}
+                        //HStack {
+                            //Text("Total")
+                                //.bold()
+                                //.foregroundColor(.primary)
+                            //Spacer()
+                            //Text(rateFormatter.string(from: autotune.basalProfile.reduce(0) { $0 + $1.rate } as NSNumber) ?? "0")
+                                //.foregroundColor(.primary) +
+                                //Text(" U/day")
+                                //.foregroundColor(.secondary)
+                        //}
+                    //}
+                    //.listRowBackground(Color.chart)
 
-        private var rateFormatter: NumberFormatter {
-            let formatter = NumberFormatter()
-            formatter.numberStyle = .decimal
-            formatter.maximumFractionDigits = 2
-            return formatter
-        }
-
-        private var dateFormatter: DateFormatter {
-            let formatter = DateFormatter()
-            formatter.dateStyle = .medium
-            formatter.timeStyle = .short
-            return formatter
-        }
-
-        var body: some View {
-            Form {
-                SettingInputSection(
-                    decimalValue: $decimalPlaceholder,
-                    booleanValue: $state.useAutotune,
-                    shouldDisplayHint: $shouldDisplayHint,
-                    selectedVerboseHint: Binding(
-                        get: { selectedVerboseHint },
-                        set: {
-                            selectedVerboseHint = $0.map { AnyView($0) }
-                            hintLabel = "Use Autotune"
-                        }
-                    ),
-                    units: state.units,
-                    type: .boolean,
-                    label: "Use Autotune",
-                    miniHint: "It is not advised to use Autotune with Trio \nDefault: OFF",
-                    verboseHint: VStack(spacing: 10) {
-                        Text("Default: OFF").bold()
-                        VStack(alignment: .leading, spacing: 10) {
-                            Text("It is not advised to use Autotune with Trio").bold().italic()
-                            Text("Autotune is not designed to work with Trio. It is best to keep Autotune off and do not use it.")
-                        }
-                    },
-                    headerText: "Data-driven Adjustments"
-                )
-
-                if state.useAutotune {
-                    SettingInputSection(
-                        decimalValue: $decimalPlaceholder,
-                        booleanValue: $state.onlyAutotuneBasals,
-                        shouldDisplayHint: $shouldDisplayHint,
-                        selectedVerboseHint: Binding(
-                            get: { selectedVerboseHint },
-                            set: {
-                                selectedVerboseHint = $0.map { AnyView($0) }
-                                hintLabel = "Only Autotune Basal Insulin"
-                            }
-                        ),
-                        units: state.units,
-                        type: .boolean,
-                        label: "Only Autotune Basal Insulin",
-                        miniHint: "Restricts Autotune adjustments to only basal settings \nDefault: OFF",
-                        verboseHint: Text("Restricts Autotune adjustments to only basal settings.")
-                    )
-                }
-
-                Section(
-                    header: HStack {
-                        Text("Last run")
-                        Spacer()
-                        Text(dateFormatter.string(from: state.publishedDate))
-                    },
-                    content: {
-                        Button {
-                            state.run()
-                        } label: {
-                            Text("Run now")
-                        }
-                        .frame(maxWidth: .infinity, alignment: .center)
-                        .listRowBackground(Color(.systemBlue))
-                        .tint(.white)
-                    }
-                )
-
-                if let autotune = state.autotune {
-                    if !state.onlyAutotuneBasals {
-                        Section {
-                            HStack {
-                                Text("Carb ratio")
-                                Spacer()
-                                Text(isfFormatter.string(from: autotune.carbRatio as NSNumber) ?? "0")
-                                Text("g/U").foregroundColor(.secondary)
-                            }
-                            HStack {
-                                Text("Sensitivity")
-                                Spacer()
-                                if state.units == .mmolL {
-                                    Text(isfFormatter.string(from: autotune.sensitivity.asMmolL as NSNumber) ?? "0")
-                                } else {
-                                    Text(isfFormatter.string(from: autotune.sensitivity as NSNumber) ?? "0")
-                                }
-                                Text(state.units.rawValue + "/U").foregroundColor(.secondary)
-                            }
-                        }
-                        .listRowBackground(Color.chart)
-                    }
-
-                    Section(header: Text("Basal profile")) {
-                        ForEach(0 ..< autotune.basalProfile.count, id: \.self) { index in
-                            HStack {
-                                Text(autotune.basalProfile[index].start).foregroundColor(.secondary)
-                                Spacer()
-                                Text(rateFormatter.string(from: autotune.basalProfile[index].rate as NSNumber) ?? "0")
-                                Text("U/hr").foregroundColor(.secondary)
-                            }
-                        }
-                        HStack {
-                            Text("Total")
-                                .bold()
-                                .foregroundColor(.primary)
-                            Spacer()
-                            Text(rateFormatter.string(from: autotune.basalProfile.reduce(0) { $0 + $1.rate } as NSNumber) ?? "0")
-                                .foregroundColor(.primary) +
-                                Text(" U/day")
-                                .foregroundColor(.secondary)
-                        }
-                    }
-                    .listRowBackground(Color.chart)
-
-                    Section {
-                        Button {
-                            Task {
-                                await state.delete()
-                            }
-                        } label: {
-                            Text("Delete Autotune Data")
-                        }
-                        .frame(maxWidth: .infinity, alignment: .center)
-                        .listRowBackground(Color(.loopRed))
-                        .tint(.white)
+                    //Section {
+                        //Button {
+                            //Task {
+                                //await state.delete()
+                            //}
+                        //} label: {
+                            //Text("Delete Autotune Data")
+                        //}
+                        //.frame(maxWidth: .infinity, alignment: .center)
+                        //.listRowBackground(Color(.loopRed))
+                        //.tint(.white)
                     }
 
                     // Section {
@@ -187,28 +188,28 @@ extension AutotuneConfig {
                     //     .listRowBackground(Color(.systemGray4))
                     //     .tint(.white)
                     // }
-                }
-            }
-            .sheet(isPresented: $shouldDisplayHint) {
-                SettingInputHintView(
-                    hintDetent: $hintDetent,
-                    shouldDisplayHint: $shouldDisplayHint,
-                    hintLabel: hintLabel ?? "",
-                    hintText: selectedVerboseHint ?? AnyView(EmptyView()),
-                    sheetTitle: "Help"
-                )
-            }
-            .scrollContentBackground(.hidden).background(color)
-            .onAppear(perform: configureView)
-            .navigationTitle("Autotune")
-            .navigationBarTitleDisplayMode(.automatic)
-            .alert(Text("Are you sure?"), isPresented: $replaceAlert) {
-                Button("Yes", action: {
-                    state.replace()
-                    replaceAlert.toggle()
-                })
-                Button("No", action: { replaceAlert.toggle() })
-            }
-        }
-    }
-}
+                //}
+            //}
+            //.sheet(isPresented: $shouldDisplayHint) {
+                //SettingInputHintView(
+                    //hintDetent: $hintDetent,
+                    //shouldDisplayHint: $shouldDisplayHint,
+                    //hintLabel: hintLabel ?? "",
+                    //hintText: selectedVerboseHint ?? AnyView(EmptyView()),
+                    //sheetTitle: "Help"
+                //)
+            //}
+            //.scrollContentBackground(.hidden).background(color)
+            //.onAppear(perform: configureView)
+            //.navigationTitle("Autotune")
+            //.navigationBarTitleDisplayMode(.automatic)
+            //.alert(Text("Are you sure?"), isPresented: $replaceAlert) {
+                //Button("Yes", action: {
+                    //state.replace()
+                    //replaceAlert.toggle()
+                //})
+                //Button("No", action: { replaceAlert.toggle() })
+            //}
+        //}
+    //}
+//}

+ 5 - 10
FreeAPS/Sources/Modules/BolusCalculatorConfig/View/BolusCalculatorConfigRootView.swift

@@ -62,7 +62,7 @@ extension BolusCalculatorConfig {
                     units: state.units,
                     type: .boolean,
                     label: "Display Meal Presets",
-                    miniHint: "Allows you to create and save preset meals \nDefault: OFF",
+                    miniHint: "Allows you to create and save preset meals",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: OFF").bold()
                         Text("Enabling this feature allows you to create and save preset meals.")
@@ -83,7 +83,7 @@ extension BolusCalculatorConfig {
                     units: state.units,
                     type: .decimal("overrideFactor"),
                     label: "Recommended Bolus Percentage",
-                    miniHint: "Percent of bolus used in bolus calculator \nDefault: 70%",
+                    miniHint: "Percent of bolus used in bolus calculator",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: 70%").bold()
                         VStack(alignment: .leading, spacing: 10) {
@@ -94,9 +94,8 @@ extension BolusCalculatorConfig {
                                 "Because Trio utilizes SMBs and UAM SMBs to help you reach your target glucose, this is initially set to below the full calculated amount (<100%) because other AID systems do not bolus for COB the same way Trio does. When SMBs and UAM SMBs are enabled, you may find your current CR results in lows and needs to be increased before you increase this setting closer to or at 100%."
                             )
                             Text(
-                                "Tip: If you are a new Trio user, it is not advised to set this to 100% until you have verified that your core settings (CR, ISF, basals) do not need adjusting."
+                                "Tip: If you are a new Trio user, it is not advised to set this to 100% until you have verified that your core settings (basal rates, ISF, and CR) do not need adjusting."
                             )
-                            .italic()
                         }
                     },
                     headerText: "Calculator Configuration"
@@ -117,13 +116,12 @@ extension BolusCalculatorConfig {
                     type: .conditionalDecimal("fattyMealFactor"),
                     label: "Enable Fatty Meal Option",
                     conditionalLabel: "Fatty Meal Bolus Percentage",
-                    miniHint: "\"Fatty Meal\" option appears in the bolus calculator \nDefault: OFF\nDefault Percent: 70%",
+                    miniHint: "\"Fatty Meal\" option appears in the bolus calculator",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: OFF").bold()
                         Text("Default Percent: 70%").bold()
                         VStack(alignment: .leading, spacing: 10) {
                             Text("Do not enable this feature until you have optimized your CR (carb ratio) setting.").bold()
-                                .italic()
                             Text(
                                 "Enabling this setting adds a \"Fatty Meal\" option to the bolus calculator. Once this feature is enabled, a percentage setting will appear below this for you to select."
                             )
@@ -133,7 +131,6 @@ extension BolusCalculatorConfig {
                             Text(
                                 "Tip: This setting should be ↓LOWER↓ than your Recommended Bolus Percentage setting to enable the bolus calculator the ability to give less than the calculated amount to prevent lows due to carbs absorbing very slowly. This could be useful when eating meals like pizza."
                             )
-                            .italic()
                         }
                     }
                 )
@@ -153,13 +150,12 @@ extension BolusCalculatorConfig {
                     type: .conditionalDecimal("sweetMealFactor"),
                     label: "Enable Super Bolus Option",
                     conditionalLabel: "Super Bolus Percentage",
-                    miniHint: "\"Super Bolus\" option appears in the bolus calculator \nDefault: OFF\nDefault Percent: 200%",
+                    miniHint: "\"Super Bolus\" option appears in the bolus calculator",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: OFF").bold()
                         Text("Default Percent: 200%").bold()
                         VStack(alignment: .leading, spacing: 10) {
                             Text("Do not enable this feature until you have optimized your CR (carb ratio) setting.").bold()
-                                .italic()
                             Text(
                                 "Enabling this setting adds a \"Super Bolus\" option to the bolus calculator. Once this feature is enabled, a percentage setting will appear below this for you to select."
                             )
@@ -170,7 +166,6 @@ extension BolusCalculatorConfig {
                             Text(
                                 "Tip: This setting should be ↑HIGHER↑ than your Recommended Bolus Percentage setting to enable the bolus calculator the ability to give above the calculated amount to address carbs that absorb very quickly. This could be useful when eating sweets."
                             )
-                            .italic()
                         }
                     }
                 )

+ 3 - 3
FreeAPS/Sources/Modules/CGM/View/CGMRootView.swift

@@ -215,15 +215,15 @@ extension CGM {
                         units: state.units,
                         type: .boolean,
                         label: "Smooth Glucose Value",
-                        miniHint: "Smooth CGM readings \nDefault: OFF",
+                        miniHint: "Smooth CGM readings using Savitzky-Golay filtering",
                         verboseHint: VStack {
                             Text("Default: OFF").bold()
                             VStack(alignment: .leading, spacing: 10) {
                                 Text(
-                                    "This filter looks at small groups of nearby readings and fits them to a simple mathematical curve. This process doesnt change the overall pattern of your glucose data but helps smooth out the \"noise\" or irregular fluctuations that could lead to false highs or lows."
+                                    "This filter looks at small groups of nearby readings and fits them to a simple mathematical curve. This process doesn't change the overall pattern of your glucose data but helps smooth out the \"noise\" or irregular fluctuations that could lead to false highs or lows."
                                 )
                                 Text(
-                                    "Because your glucose readings are taken at regular intervals, the filter can use a set of pre-calculated \"weights\" to adjust each group of readings, making the calculations fast and efficient. Its designed to keep the important trends in your data while minimizing those small, misleading variations, giving you and Trio a clearer sense of where your blood sugar is really headed."
+                                    "Because your glucose readings are taken at regular intervals, the filter can use a set of pre-calculated \"weights\" to adjust each group of readings, making the calculations fast and efficient. It's designed to keep the important trends in your data while minimizing those small, misleading variations, giving you and Trio a clearer sense of where your blood sugar is really headed."
                                 )
                                 Text(
                                     "This type of filtering is useful in Trio, as it can help prevent over-corrections based on inaccurate glucose readings. This can help reduce the impact of sudden spikes or dips that might not reflect your true blood glucose levels."

+ 4 - 4
FreeAPS/Sources/Modules/CalendarEventSettings/View/CalendarEventSettingsRootView.swift

@@ -48,7 +48,7 @@ extension CalendarEventSettings {
                     units: state.units,
                     type: .boolean,
                     label: "Create Events in Calendar",
-                    miniHint: "Uses calendar events to display current data \nDefault: OFF",
+                    miniHint: "Uses calendar events to display current data",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: OFF").bold()
                         VStack(alignment: .leading, spacing: 10) {
@@ -61,7 +61,7 @@ extension CalendarEventSettings {
                             Text(
                                 "Once enabled, the available customizations will appear. You can customize with the calendar of your choosing, use of emoji labels, and the inclusion of IOB & COB data."
                             )
-                            Text("Note: Once a new calendar event is created, the previous event will be deleted.").italic()
+                            Text("Note: Once a new calendar event is created, the previous event will be deleted.")
                         }
                     },
                     headerText: "Diabetes Data as Calendar Event"
@@ -92,7 +92,7 @@ extension CalendarEventSettings {
                         units: state.units,
                         type: .boolean,
                         label: "Display Emojis as Labels",
-                        miniHint: "Emojis used instead of text for data labels \nDefault: OFF",
+                        miniHint: "Emojis used instead of text for data labels",
                         verboseHint: VStack(spacing: 10) {
                             Text("Default: OFF").bold()
                             VStack(alignment: .leading, spacing: 5) {
@@ -127,7 +127,7 @@ extension CalendarEventSettings {
                         units: state.units,
                         type: .boolean,
                         label: "Display IOB and COB",
-                        miniHint: "Include IOB & COB in the calendar event data \nDefault: OFF",
+                        miniHint: "Include IOB & COB in the calendar event data",
                         verboseHint: VStack(spacing: 10) {
                             Text("Default: OFF").bold()
                             Text(

+ 32 - 53
FreeAPS/Sources/Modules/DynamicSettings/View/DynamicSettingsRootView.swift

@@ -64,28 +64,24 @@ extension DynamicSettings {
                         get: { selectedVerboseHint },
                         set: {
                             selectedVerboseHint = $0.map { AnyView($0) }
-                            hintLabel = "Activate Dynamic Sensitivity (ISF)"
+                            hintLabel = "Activate Dynamic Sensitivity (Dynamic ISF)"
                         }
                     ),
                     units: state.units,
                     type: .boolean,
                     label: "Activate Dynamic ISF",
-                    miniHint: "Adjusts ISF dynamically based on recent BG and insulin \nDefault: OFF",
+                    miniHint: "Adjusts ISF dynamically based on multiple data points \n See hint for more info",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: OFF").bold()
                         VStack(alignment: .leading, spacing: 10) {
                             Text(
-                                "Enabling this feature allows Trio to calculate a new Insulin Sensitivity Factor (ISF) with each loop cycle by considering your current glucose (BG), total daily dose (TDD) of insulin, and adjustment factor (AF). This helps tailor your insulin response more accurately in real-time."
+                                "Enabling this feature allows Trio to calculate a new Insulin Sensitivity Factor with each loop cycle by considering your current glucose, the weighted total daily dose of insulin, the set adjustment factor, and a few other data points. This helps tailor your insulin response more accurately in real-time."
                             )
                             Text(
                                 "Dynamic ISF produces a Dynamic Ratio, replacing the Autosens Ratio, determining how much your profile ISF will be adjusted every loop cycle, ensuring it stays within safe limits set by your Autosens Min/Max settings. It provides more precise insulin dosing by responding to changes in insulin needs throughout the day."
                             )
-                            VStack(alignment: .leading, spacing: 10) {
-                                Text("New ISF = (Profile ISF) ÷ (Dynamic Ratio)").italic()
-                                Text("Dynamic Ratio = (Profile ISF) × AF × TDD × (log(BG ÷ (Insulin Factor) + 1)) ÷ 1800")
-                                    .italic()
-                                Text("Insulin Factor = 120 - (Insulin Peak Time)").italic()
-                            }
+                            Text("You can influence the adjustments made by Dynamic ISF primarily by adjusting Autosens Max, Autosens Min, and Adjustment Factor. Other settings also influence Dynamic ISF's response, such as Target Glucose, Profile ISF, Peak Insulin Time, and Weighted Average of TDD.")
+                            Text("Warning: Before adjusting these settings, make sure you are fully aware of the impact those changes will have.").bold()
                         }
                     },
                     headerText: "Dynamic Settings"
@@ -106,7 +102,7 @@ extension DynamicSettings {
                         units: state.units,
                         type: .boolean,
                         label: "Activate Dynamic CR (Carb Ratio)",
-                        miniHint: "Dynamically adjusts carb ratio (CR)\nDefault: OFF",
+                        miniHint: "Dynamically adjusts your Carb Ratio (CR)",
                         verboseHint: VStack(spacing: 10) {
                             Text("Default: OFF").bold()
                             VStack(alignment: .leading, spacing: 10) {
@@ -120,9 +116,8 @@ extension DynamicSettings {
                                     "When Dynamic Ratio decreases, indicating you need less insulin, the carb ratio is scaled back to avoid over-delivery."
                                 )
                                 Text(
-                                    "Note: Its recommended not to use this feature with a high Insulin Fraction (>2), as it can cause insulin dosing to become too aggressive."
+                                    "Note: It's recommended not to use this feature with a high Insulin Fraction (>2), as it can cause insulin dosing to become too aggressive."
                                 )
-                                .italic()
                             }
                         }
                     )
@@ -141,23 +136,22 @@ extension DynamicSettings {
                         units: state.units,
                         type: .boolean,
                         label: "Use Sigmoid Formula",
-                        miniHint: "Adjusts ISF using a sigmoid-shaped curve \nDefault: OFF",
+                        miniHint: "Adjusts ISF using a sigmoid-shaped curve",
                         verboseHint: VStack(spacing: 10) {
                             Text("Default: OFF").bold()
                             VStack(alignment: .leading, spacing: 10) {
                                 Text(
-                                    "Turning on the Sigmoid Formula setting alters how your Dynamic Ratio, and thus your New ISF and New Carb Ratio, are calculated using a sigmoid curve rather than the default logarithmic function. The curve's steepness is influenced by the Adjustment Factor (AF), while the Autosens Min/Max settings determine the limits of the ratio adjustment, which can also influence the steepness of the sigmoid curve."
+                                    "Turning on the Sigmoid Formula setting alters how your Dynamic Ratio, and thus your New ISF and New Carb Ratio, are calculated using a sigmoid curve rather than the default logarithmic function."
                                 )
+                                Text("The curve's steepness is influenced by the Adjustment Factor, while the Autosens Min/Max settings determine the limits of the ratio adjustment, which can also influence the steepness of the sigmoid curve.")
                                 Text(
-                                    "When using the Sigmoid Formula, TDD has a much lower impact on the dynamic adjustments to sensitivity."
+                                    "When using the Sigmoid Formula, the weighted Total Daily Dose has a much lower impact on the dynamic adjustments to sensitivity."
                                 )
                                 Text("Careful tuning is essential to avoid overly aggressive insulin changes.")
                                 Text("It is not recommended to set Autosens Max above 150% to maintain safe insulin dosing.")
-                                    .italic()
                                 Text(
                                     "There has been no empirical data analysis to support the use of the Sigmoid Formula for dynamic sensitivity determination."
-                                )
-                                .italic().bold()
+                                ).bold()
                             }
                         }
                     )
@@ -174,23 +168,23 @@ extension DynamicSettings {
                                     hintLabel = "Adjustment Factor (AF)"
                                 }
                             ),
+                            //TODO?: include conditional links to Desmos logarithmic graphs based on which .glucose setting is used
                             units: state.units,
                             type: .decimal("adjustmentFactor"),
                             label: "Adjustment Factor (AF)",
-                            miniHint: "Influences the rate of dynamic sensitivity adjustments \nDefault: 80%",
+                            miniHint: "Influences the rate of Dynamic ISF (Sensitivity) adjustments",
                             verboseHint: VStack(spacing: 10) {
                                 Text("Default: 80%").bold()
                                 VStack(alignment: .leading, spacing: 10) {
                                     Text(
-                                        "The Adjustment Factor (AF) allows you to control how quickly and effectively Dynamic ISF responds to changes in blood glucose levels."
+                                        "The Adjustment Factor (AF) allows you to control how quickly and effectively Dynamic ISF responds to changes in glucose levels."
                                     )
                                     Text(
                                         "Adjusting this value not only can adjust how quickly your sensitivity will respond to changing glucose readings, but also at what glucose readings you reach your Autosens Max/Min limits."
                                     )
                                     Text(
-                                        "Warning: Increasing this setting too high can result in a much lower ISF used at your target glucose than your profile ISF. Decreasing this setting too low can result in a much higher ISF used at your target glucose. It is best to utilize the Desmos graphs from the Trio Docs to optimize all Dynamic Settings."
+                                        "Increasing this setting can make ISF adjustments quicker, but will also change the glucose value that coincides with the ISF used at your Autosens Max and Autosens Min limits. Likewise, decreasing this settings can make ISF adjustments slower, but will also change the glucose value that coincides with the ISF used at your Autosens Max and Autosens Min limits. It is best to utilize the Desmos graphs from the Trio Docs to optimize all Dynamic Settings."
                                     )
-                                    .bold().italic()
                                 }
                             }
                         )
@@ -209,23 +203,21 @@ extension DynamicSettings {
                             units: state.units,
                             type: .decimal("adjustmentFactorSigmoid"),
                             label: "Sigmoid Adjustment Factor",
-                            miniHint: "Influences the rate of dynamic sensitivity adjustments for Sigmoid \nDefault: 50%",
+                            miniHint: "Influences the rate of dynamic sensitivity adjustments for Sigmoid",
                             verboseHint: VStack(spacing: 10) {
                                 Text("Default: 50%").bold()
                                 VStack(alignment: .leading, spacing: 10) {
                                     Text(
-                                        "The Sigmoid Adjustment Factor (AF) allows you to control how quickly Dynamic ISF using Sigmoid Formula responds to changes in blood glucose levels."
+                                        "The Sigmoid Adjustment Factor (AF) allows you to control how quickly Sigmoid Dynamic ISF responds to changes in glucose levels and at what glucose value you will reach your Autosens Max and Autosens Min limits."
                                     )
                                     Text(
-                                        "Higher values lead to quicker adjustment responses for high or low blood glucose levels by making the sigmoid-shaped adjustment curve steeper."
-                                    )
+                                        "Sigmoid Adjustment Factor influences both how fast your ISF values will change and how quickly you will reach your Autosens Max and Min limits set. Increasing Sigmoid Adjustment Factor increases the rate of change of your ISF and reduces the range of glucose values between your Autosens Max and Min limits.")
                                     Text(
                                         "This setting allows for a more responsive system, but the effects are restricted by the Autosens Min/Max settings."
                                     )
                                     Text(
                                         "Due to how the curve is calculated when using the Sigmoid Formula, increasing this setting has a different impact on the steepness of the curve than in the standard logarithmic Dynamic ISF calculation. Use caution when adjusting this setting."
                                     )
-                                    .italic()
                                 }
                             }
                         )
@@ -245,12 +237,12 @@ extension DynamicSettings {
                         units: state.units,
                         type: .decimal("weightPercentage"),
                         label: "Weighted Average of TDD",
-                        miniHint: "Weight of 24-hr TDD against 10-day TDD \nDefault: 65%",
+                        miniHint: "Weight of 24-hr TDD against 10-day TDD",
                         verboseHint: VStack(spacing: 10) {
                             Text("Default: 65%").bold()
                             VStack(alignment: .leading, spacing: 10) {
                                 Text(
-                                    "This setting adjusts how much weight is given to your recent total daily insulin dose (TDD) when calculating Dynamic ISF and Dynamic CR."
+                                    "This setting adjusts how much weight is given to your recent total daily insulin dose when calculating Dynamic ISF and Dynamic CR."
                                 )
                                 Text(
                                     "At the default setting, 65% of the calculation is based on the last 24 hours of insulin use, with the remaining 35% considering the last 10 days of data."
@@ -275,27 +267,15 @@ extension DynamicSettings {
                         units: state.units,
                         type: .boolean,
                         label: "Adjust Basal",
-                        miniHint: "Use Dynamic Ratio to adjust basal rates \nDefault: OFF",
+                        miniHint: "Use Dynamic Ratio to adjust basal rates",
                         verboseHint: VStack(spacing: 10) {
                             Text("Default: OFF").bold()
-                            Text("""
-
-                            Turn this setting on to give basal adjustments more agility. Keep this setting off if your basal needs are not highly variable.
-
-                            Normally, a new basal rate is set by autosens:
-
-                            """)
-                            Text("New Basal Profile = (Current Basal Profile) x (Autosens Ratio)").italic()
-                            Text("""
-
-                            Adjust Basal replaces the standard Autosens Ratio calculation with its own Autosens Ratio calculated as such:
-
-                            """)
-                            Text("""
-                            Autosens Ratio = (Weighted Average of TDD) ÷ (10-day Average of TDD)
-
-                            New Basal Profile = (Current Basal Profile) × (Autosens Ratio)
-                            """).italic()
+                            Text("Turn this setting on to give basal adjustments more agility. Keep this setting off if your basal needs are not highly variable.")
+                            Text("Normally, a new basal rate is set by autosens:")
+                            Text("New Basal Profile =\n(Current Basal Profile) x (Autosens Ratio)")
+                            Text("Adjust Basal replaces the standard Autosens Ratio calculation with its own Autosens Ratio calculated as such:")
+                            Text("Autosens Ratio =\n(Weighted Average of TDD) ÷ (10-day Average of TDD)")
+                            Text("New Basal Profile =\n(Current Basal Profile) × (Autosens Ratio)")
                         }
                     )
 
@@ -313,7 +293,7 @@ extension DynamicSettings {
                         units: state.units,
                         type: .decimal("threshold_setting"),
                         label: "Minimum Safety Threshold",
-                        miniHint: "Increase the safety threshold used to suspend insulin delivery \nDefault: 60 (Set by Algorithm)",
+                        miniHint: "Increase the safety threshold used to suspend insulin delivery",
                         verboseHint: VStack(spacing: 10) {
                             Text("Default: Set by Algorithm").bold()
                             VStack(alignment: .leading, spacing: 10) {
@@ -326,19 +306,18 @@ extension DynamicSettings {
                                 VStack(alignment: .leading, spacing: 10) {
                                     VStack(alignment: .leading, spacing: 5) {
                                         Text("The default setting is based on this calculation:").bold()
-                                        Text("Target BG - 0.5 × (Target BG - 40)").italic()
+                                        Text("Target Glucose - 0.5 × (Target Glucose - 40)")
                                     }
                                     VStack(alignment: .leading, spacing: 5) {
                                         Text(
                                             "If your glucose target is 110 mg/dL, Trio will use a safety threshold of 75 mg/dL, unless you set Minimum Safety Threshold (mg/dL) to something > 75."
                                         )
-                                        Text("110 - 0.5 × (110 - 40) = 75").italic()
+                                        Text("110 - 0.5 × (110 - 40) = 75")
                                     }
                                     Text("This setting is limited to values between 60 - 120 mg/dL (3.3 - 6.6 mmol/L)")
                                     Text(
-                                        "Note: Basal may be resumed if there's negative IOB and glucose is rising faster than the forecast."
+                                        "Note: Basal may be resumed if there is negative IOB and glucose is rising faster than the forecast."
                                     )
-                                    .italic()
                                 }
                             }
                         }

+ 7 - 9
FreeAPS/Sources/Modules/GeneralSettings/View/UnitsLimitsSettingsRootView.swift

@@ -58,14 +58,13 @@ extension UnitsLimitsSettings {
                     units: state.units,
                     type: .decimal("maxIOB"),
                     label: NSLocalizedString("Max IOB", comment: "Max IOB"),
-                    miniHint: "Maximum units of insulin allowed active at any given time \nDefault: 0 units",
+                    miniHint: "Maximum units of insulin allowed active at any given time",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: 0 units").bold()
                         VStack(alignment: .leading, spacing: 10) {
-                            Text("Warning: This must be greater than 0 for any automatic temp basals or SMBs to be given.").bold()
-                                .italic()
+                            Text("Warning: This must be greater than 0 for any automatic temporary basal rates or SMBs to be given.").bold()
                             Text(
-                                "The maximum amount of Insulin On Board (IOB) above profile basals from all sources - positive temp basals, manual or meal boluses, and SMBs - that Trio is allowed to accumulate to address a higher-than-target glucose."
+                                "The maximum amount of Insulin On Board (IOB) above profile basal rates from all sources - positive temporary basal rates, manual or meal boluses, and SMBs - that Trio is allowed to accumulate to address a higher-than-target glucose."
                             )
                             Text(
                                 "If a calculated amount exceeds this limit, the suggested and/or delivered amount will be reduced so that active insulin on board (IOB) will not exceed this safety limit."
@@ -73,7 +72,6 @@ extension UnitsLimitsSettings {
                             Text(
                                 "Note: You can still manually bolus above this limit, but the suggested bolus amount will never exceed this in the bolus calculator."
                             )
-                            .italic()
                         }
                     }
                 )
@@ -92,7 +90,7 @@ extension UnitsLimitsSettings {
                     units: state.units,
                     type: .decimal("maxBolus"),
                     label: "Max Bolus",
-                    miniHint: "Largest bolus of insulin allowed \nDefault: 10 units",
+                    miniHint: "Largest bolus of insulin allowed",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: 10 units").bold()
                         VStack(alignment: .leading, spacing: 10) {
@@ -117,7 +115,7 @@ extension UnitsLimitsSettings {
                     units: state.units,
                     type: .decimal("maxBasal"),
                     label: "Max Basal",
-                    miniHint: "Largest basal rate allowed \nDefault: 2.0 units",
+                    miniHint: "Largest basal rate allowed",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: 2.0 units").bold()
                         VStack(alignment: .leading, spacing: 10) {
@@ -141,14 +139,14 @@ extension UnitsLimitsSettings {
                     units: state.units,
                     type: .decimal("maxCOB"),
                     label: NSLocalizedString("Max COB", comment: "Max COB"),
-                    miniHint: "Max carbs Trio can use in dosing calculations \nDefault: 120 carbs",
+                    miniHint: "Max carbs Trio can use in dosing calculations",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: 120 carbs").bold()
                         VStack(alignment: .leading, spacing: 10) {
                             Text(
                                 "Maximum Carbs On Board (COB) allowed. If more carbs are entered than allowed by this limit, Trio will cap the current COB in calculations to Max COB and remain at max until all remaining carbs have shown to be absorbed."
                             )
-                            Text("This is an important limit when UAM is ON.").italic()
+                            Text("This is an important limit when UAM is ON.")
                         }
                     }
                 )

+ 4 - 4
FreeAPS/Sources/Modules/GlucoseNotificationSettings/View/GlucoseNotificationSettingsRootView.swift

@@ -70,7 +70,7 @@ extension GlucoseNotificationSettings {
                     units: state.units,
                     type: .boolean,
                     label: "Show Glucose App Badge",
-                    miniHint: "Show your current glucose on Trio app icon \nDefault: OFF",
+                    miniHint: "Show your current glucose on Trio app icon",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: OFF").bold()
                         Text("This will add your current glucose on the top right of your Trio icon as a red notification badge.")
@@ -92,7 +92,7 @@ extension GlucoseNotificationSettings {
                     units: state.units,
                     type: .boolean,
                     label: "Always Notify Glucose",
-                    miniHint: "Trigger a notification every time your glucose is updated \nDefault: OFF",
+                    miniHint: "Trigger a notification every time your glucose is updated",
                     verboseHint: VStack {
                         Text("Default: OFF").bold()
                         Text("A notification will be triggered every time your glucose is updated in Trio.")
@@ -113,7 +113,7 @@ extension GlucoseNotificationSettings {
                     units: state.units,
                     type: .boolean,
                     label: "Play Alarm Sound",
-                    miniHint: "Alarm with every Trio notification \nDefault: OFF",
+                    miniHint: "Alarm with every Trio notification",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: OFF").bold()
                         Text("This will cause a sound to be triggered by every Trio notification.")
@@ -134,7 +134,7 @@ extension GlucoseNotificationSettings {
                     units: state.units,
                     type: .boolean,
                     label: "Add Glucose Source to Alarm",
-                    miniHint: "Source of the glucose reading will be added to the notification \nDefault: OFF",
+                    miniHint: "Source of the glucose reading will be added to the notification",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: OFF").bold()
                         Text("The source of the glucose reading will be added to the notification.")

+ 1 - 2
FreeAPS/Sources/Modules/HealthKit/View/AppleHealthKitRootView.swift

@@ -47,13 +47,12 @@ extension AppleHealthKit {
                     units: state.units,
                     type: .boolean,
                     label: "Connect to Apple Health",
-                    miniHint: "Allow Trio to read from and write to Apple Health \nDefault: OFF",
+                    miniHint: "Allow Trio to read from and write to Apple Health",
                     verboseHint: VStack {
                         Text("Default: OFF").bold()
                         VStack(alignment: .leading, spacing: 10) {
                             Text("This allows Trio to read from and write to Apple Health.")
                             Text("Warning: You must also give permissions in iOS System Settings for the Health app.").bold()
-                                .italic()
                         }
                     },
                     headerText: "Apple Health Integration"

+ 4 - 4
FreeAPS/Sources/Modules/Home/View/HomeRootView.swift

@@ -788,27 +788,27 @@ extension Home {
                         List {
                             DefinitionRow(
                                 term: "IOB (Insulin on Board)",
-                                definition: Text("Forecasts BG based on the amount of insulin still active in the body."),
+                                definition: Text("Forecasts future glucose readings based on the amount of insulin still active in the body."),
                                 color: .insulin
                             )
                             DefinitionRow(
                                 term: "ZT (Zero-Temp)",
                                 definition: Text(
-                                    "Forecasts the worst-case blood glucose (BG) scenario if no carbs are absorbed and insulin delivery is stopped until BG starts rising."
+                                    "Forecasts the worst-case future glucose reading scenario if no carbs are absorbed and insulin delivery is stopped until glucose starts rising."
                                 ),
                                 color: .zt
                             )
                             DefinitionRow(
                                 term: "COB (Carbs on Board)",
                                 definition: Text(
-                                    "Forecasts BG changes by considering the amount of carbohydrates still being absorbed in the body."
+                                    "Forecasts future glucose reading changes by considering the amount of carbohydrates still being absorbed in the body."
                                 ),
                                 color: .loopYellow
                             )
                             DefinitionRow(
                                 term: "UAM (Unannounced Meal)",
                                 definition: Text(
-                                    "Forecasts BG levels and insulin dosing needs for unexpected meals or other causes of BG rises without prior notice."
+                                    "Forecasts future glucose levels and insulin dosing needs for unexpected meals or other causes of glucose reading increases without prior notice."
                                 ),
                                 color: .uam
                             )

+ 2 - 2
FreeAPS/Sources/Modules/LiveActivitySettings/View/LiveActivitySettingsRootView.swift

@@ -75,7 +75,7 @@ extension LiveActivitySettings {
                         units: state.units,
                         type: .boolean,
                         label: "Enable Live Activity",
-                        miniHint: "Display customizable data on Lock Screen and Dynamic Island \nDefault: OFF",
+                        miniHint: "Display customizable data on Lock Screen and Dynamic Island",
                         verboseHint: VStack(spacing: 10) {
                             Text("Default: OFF").bold()
                             VStack(alignment: .leading, spacing: 10) {
@@ -111,7 +111,7 @@ extension LiveActivitySettings {
 
                                 HStack(alignment: .top) {
                                     Text(
-                                        "Choose between simple or detailed style \nDefault: Simple"
+                                        "Choose between simple or detailed style"
                                     )
                                     .font(.footnote)
                                     .foregroundColor(.secondary)

+ 8 - 9
FreeAPS/Sources/Modules/MealSettings/View/MealSettingsRootView.swift

@@ -208,7 +208,7 @@ extension MealSettings {
                     units: state.units,
                     type: .boolean,
                     label: "Enable Fat and Protein Entries",
-                    miniHint: "Allows you to add fat and protein macros to meals \nDefault: OFF",
+                    miniHint: "Allows you to add fat and protein macros to meals",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: OFF").bold()
                         VStack(alignment: .leading, spacing: 10) {
@@ -237,7 +237,7 @@ extension MealSettings {
                         VStack(spacing: 5) {
                             Text(
                                 "You can personalize the conversion calculation by adjusting the following settings that will appear when this option is enabled:"
-                            ).italic()
+                            )
                             VStack(alignment: .leading) {
                                 Text("• Fat and Protein Delay")
                                 Text("• Maximum Duration")
@@ -263,7 +263,7 @@ extension MealSettings {
                         units: state.units,
                         type: .decimal("delay"),
                         label: "Fat and Protein Delay",
-                        miniHint: "Delay between fat & protein entry and first FPU entry \nDefault: 60 min",
+                        miniHint: "Delay between fat & protein entry and first FPU entry",
                         verboseHint: VStack(spacing: 10) {
                             Text("Default: 60 min").bold()
                             VStack(alignment: .leading, spacing: 10) {
@@ -291,7 +291,7 @@ extension MealSettings {
                         units: state.units,
                         type: .decimal("timeCap"),
                         label: "Maximum Duration",
-                        miniHint: "Set the maximum timeframe to extend FPUs \nDefault: 8 hours",
+                        miniHint: "Set the maximum timeframe to extend FPUs",
                         verboseHint: VStack(spacing: 10) {
                             Text("Default: 8 hours").bold()
                             VStack(alignment: .leading, spacing: 10) {
@@ -303,7 +303,7 @@ extension MealSettings {
                                 )
                                 Text("Increasing this setting may result in more FPU entries with smaller carb values.")
                                 Text("Decreasing this setting may result in fewer FPU entries with larger carb values.")
-                                Text("Note: Accepted range for this setting is 5 - 12 hours.").italic()
+                                Text("Note: Accepted range for this setting is 5 - 12 hours.")
                             }
                         }
                     )
@@ -322,7 +322,7 @@ extension MealSettings {
                         units: state.units,
                         type: .decimal("minuteInterval"),
                         label: "Spread Interval",
-                        miniHint: "Time interval between FPUs \nDefault: 30 minutes",
+                        miniHint: "Time interval between FPUs",
                         verboseHint: VStack(spacing: 10) {
                             Text("Default: 30 minutes").bold()
                             VStack(alignment: .leading, spacing: 10) {
@@ -332,7 +332,7 @@ extension MealSettings {
                                 Text("The shorter the interval, the smoother the correlating dosing result.")
                                 Text("Increasing this setting may result in fewer FPU entries with larger carb values.")
                                 Text("Decreasing this setting may result in more FPU entries with smaller carb values.")
-                                Text("Accepted range for this setting is 5 - 60 minutes.").italic()
+                                Text("Accepted range for this setting is 5 - 60 minutes.")
                             }
                         }
                     )
@@ -351,7 +351,7 @@ extension MealSettings {
                         units: state.units,
                         type: .decimal("individualAdjustmentFactor"),
                         label: "Fat and Protein Percentage",
-                        miniHint: "Influences the conversion rate used in the Warsaw Method \nDefault: 50%",
+                        miniHint: "Influences the conversion rate used in the Warsaw Method",
                         verboseHint: VStack(spacing: 10) {
                             Text("Default: 50%").bold()
                             VStack(spacing: 10) {
@@ -367,7 +367,6 @@ extension MealSettings {
                                 Text(
                                     "Tip: 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"
                                 )
-                                .italic()
                             }
                         }
                     )

+ 13 - 27
FreeAPS/Sources/Modules/NightscoutConfig/View/NightscoutConfigRootView.swift

@@ -65,17 +65,17 @@ extension NightscoutConfig {
                             Button {
                                 importAlert = Alert(
                                     title: Text("Import Therapy Settings?"),
-                                    message: Text(
-                                        """
-                                        Are you sure you want to import profile settings from Nightscout?
-
-                                        This will overwrite the following Trio therapy settings:
-                                            • Basal Rates
-                                            • Insulin Sensitivities
-                                            • Carb Ratios
-                                            • Target Glucose
-                                            • Duration of Insulin Action
-                                        """
+                                    message: VStack(spacing: 10) {
+                                        Text("Are you sure you want to import profile settings from Nightscout?")
+                                        Text("This will overwrite the following Trio therapy settings:")
+                                        VStack(alignment: .leading, spacing: 5) {
+                                            Text("• Basal Rates")
+                                            Text("• Insulin Sensitivities")
+                                            Text("• Carb Ratios")
+                                            Text("• Target Glucose")
+                                            Text("• Duration of Insulin Action")
+                                        }
+                                    }
                                     ),
                                     primaryButton: .default(
                                         Text("Yes, Import!"),
@@ -109,12 +109,7 @@ extension NightscoutConfig {
                                 .disabled(state.url.isEmpty || state.connecting)
 
                             HStack(alignment: .top) {
-                                Text(
-                                    """
-                                    Import therapy settings from Nightscout
-                                    See hint for the list of settings available for import
-                                    """
-                                )
+                                Text("Import therapy settings from Nightscout\nSee hint for the list of settings available for import")
                                 .font(.footnote)
                                 .foregroundColor(.secondary)
                                 .lineLimit(nil)
@@ -124,16 +119,7 @@ extension NightscoutConfig {
                                         hintLabel = "Import Settings from Nightscout"
                                         selectedVerboseHint =
                                             AnyView(
-                                                Text(
-                                                    """
-                                                    This will overwrite the following Trio therapy settings:
-                                                        • Basal Rates
-                                                        • Insulin Sensitivities
-                                                        • Carb Ratios
-                                                        • Target Glucose
-                                                        • Duration of Insulin Action
-                                                    """
-                                                )
+                                                Text("This will overwrite the following Trio therapy settings:\n\n• Basal Rates\n• Insulin Sensitivities\n• Carb Ratios\n• Target Glucose\n• Duration of Insulin Action")
                                             )
                                         shouldDisplayHint.toggle()
                                     },

+ 2 - 2
FreeAPS/Sources/Modules/NightscoutConfig/View/NightscoutFetchView.swift

@@ -45,7 +45,7 @@ struct NightscoutFetchView: View {
                 units: state.units,
                 type: .boolean,
                 label: "Allow Fetching from Nightscout",
-                miniHint: "Enable fetching of selected data sets from Nightscout \nDefault: OFF",
+                miniHint: "Enable fetching of selected data sets from Nightscout",
                 verboseHint: VStack(spacing: 10) {
                     Text("Default: OFF").bold()
                     Text(
@@ -70,7 +70,7 @@ struct NightscoutFetchView: View {
                     units: state.units,
                     type: .boolean,
                     label: "Allow Remote Control of Trio",
-                    miniHint: "Enables selected remote control capabilities via Nightscout \nDefault: OFF",
+                    miniHint: "Enables selected remote control capabilities via Nightscout",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: OFF").bold()
                         Text("When enabled you allow the following remote functions through announcements from Nightscout:")

+ 2 - 2
FreeAPS/Sources/Modules/NightscoutConfig/View/NightscoutUploadView.swift

@@ -45,7 +45,7 @@ struct NightscoutUploadView: View {
                 units: state.units,
                 type: .boolean,
                 label: "Allow Uploading to Nightscout",
-                miniHint: "Enables upload of selected data sets to Nightscout \nDefault: OFF",
+                miniHint: "Enables upload of selected data sets to Nightscout",
                 verboseHint: VStack(spacing: 10) {
                     Text("Default: OFF").bold()
                     VStack(alignment: .leading, spacing: 10) {
@@ -79,7 +79,7 @@ struct NightscoutUploadView: View {
                     units: state.units,
                     type: .boolean,
                     label: "Upload Glucose",
-                    miniHint: "Enables uploading of CGM readings to Nightscout \nDefault: OFF",
+                    miniHint: "Enables uploading of CGM readings to Nightscout",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: OFF").bold()
                         Text("Enabling this setting allows CGM readings from Trio to be used in Nightscout.")

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

@@ -49,7 +49,7 @@ struct ReviewInsulinActionView: BaseView {
                 units: state.units,
                 type: .decimal("dia"),
                 label: "Duration of Insulin Action",
-                miniHint: "Number of hours insulin is active in your body \nDefault: 6 hours",
+                miniHint: "Number of hours insulin is active in your body",
                 verboseHint: VStack(spacing: 10) {
                     Text("Default: 6 hours").bold()
                     VStack(alignment: .leading, spacing: 10) {
@@ -57,7 +57,6 @@ struct ReviewInsulinActionView: BaseView {
                         Text(
                             "Tip: It is better to use Custom Peak Timing rather than use a Duration of Insulin Action (DIA) other than the default of 6 hours."
                         )
-                        .italic()
                     }
                 },
                 headerText: "Review imported DIA"

+ 1 - 1
FreeAPS/Sources/Modules/PumpConfig/View/PumpConfigRootView.swift

@@ -73,7 +73,7 @@ extension PumpConfig {
                                         Button(
                                             action: {
                                                 hintLabel = "Pump Pairing to Trio"
-                                                selectedVerboseHint = AnyView(Text("Explanation… limitation… etc."))
+                                                selectedVerboseHint = AnyView(Text("Current Pump Models Supported:\n\n•Medtronic\n•Omnipod Eros\n•Omnipod Dash\n•Pump Simulator\n\nNote: If using a pump simulator, you will not have continuous readings from the CGM in Trio. Using a pump simulator is only advisable for becoming familiar with the app user interface. It will not give you insight on how the algorithm will respond."))
                                                 shouldDisplayHint.toggle()
                                             },
                                             label: {

+ 22 - 28
FreeAPS/Sources/Modules/SMBSettings/View/SMBSettingsRootView.swift

@@ -48,7 +48,7 @@ extension SMBSettings {
                     units: state.units,
                     type: .boolean,
                     label: NSLocalizedString("Enable SMB Always", comment: "Enable SMB Always"),
-                    miniHint: "Allow SMBs at all times except when a high Temp Target is set \nDefault: OFF",
+                    miniHint: "Allow SMBs at all times except when a high Temp Target is set",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: OFF").bold()
                         Text(
@@ -73,7 +73,7 @@ extension SMBSettings {
                         units: state.units,
                         type: .boolean,
                         label: NSLocalizedString("Enable SMB With COB", comment: "Enable SMB With COB"),
-                        miniHint: "Allow SMB when carbs are on board \nDefault: OFF",
+                        miniHint: "Allow SMB when carbs are on board",
                         verboseHint: VStack(spacing: 10) {
                             Text("Default: OFF").bold()
                             VStack(alignment: .leading, spacing: 10) {
@@ -83,7 +83,6 @@ extension SMBSettings {
                                 Text(
                                     "Note: If this is enabled and the criteria is met, SMBs could be utilized regardless of other SMB settings being enabled or not."
                                 )
-                                .italic()
                             }
                         }
                     )
@@ -102,7 +101,7 @@ extension SMBSettings {
                         units: state.units,
                         type: .boolean,
                         label: NSLocalizedString("Enable SMB With Temptarget", comment: "Enable SMB With Temptarget"),
-                        miniHint: "Allow SMB when a manual Temporary Target is set under 100 mg/dL (5.5 mmol/L) \nDefault: OFF",
+                        miniHint: "Allow SMB when a manual Temporary Target is set under 100 mg/dL (5.5 mmol/L)",
                         verboseHint: VStack(spacing: 10) {
                             Text("Default: OFF").bold()
                             VStack(alignment: .leading, spacing: 10) {
@@ -112,7 +111,6 @@ extension SMBSettings {
                                 Text(
                                     "Note: If this is enabled and the criteria is met, SMBs could be utilized regardless of other SMB settings being enabled or not."
                                 )
-                                .italic()
                             }
                         }
                     )
@@ -131,7 +129,7 @@ extension SMBSettings {
                         units: state.units,
                         type: .boolean,
                         label: NSLocalizedString("Enable SMB After Carbs", comment: "Enable SMB After Carbs"),
-                        miniHint: "Allow SMB for 6 hrs after carbs are logged \nDefault: OFF",
+                        miniHint: "Allow SMB for 6 hrs after carbs are logged",
                         verboseHint: VStack(spacing: 10) {
                             Text("Default: OFF").bold()
                             VStack(alignment: .leading, spacing: 10) {
@@ -141,7 +139,6 @@ extension SMBSettings {
                                 Text(
                                     "Note: If this is enabled and the criteria is met, SMBs could be utilized regardless of other SMB settings being enabled or not."
                                 )
-                                .italic()
                             }
                         }
                     )
@@ -161,7 +158,7 @@ extension SMBSettings {
                         type: .conditionalDecimal("enableSMB_high_bg_target"),
                         label: NSLocalizedString("Enable SMB With High BG", comment: "Enable SMB With High BG"),
                         conditionalLabel: "High BG Target",
-                        miniHint: "Allow SMB when glucose is above the High BG Target value \nDefault: OFF",
+                        miniHint: "Allow SMB when glucose is above the High BG Target value",
                         verboseHint: VStack(spacing: 10) {
                             Text("Default: OFF").bold()
                             VStack(alignment: .leading, spacing: 10) {
@@ -171,7 +168,6 @@ extension SMBSettings {
                                 Text(
                                     "Note: If this is enabled and the criteria is met, SMBs could be utilized regardless of other SMB settings being enabled or not."
                                 )
-                                .italic()
                             }
                         }
                     )
@@ -197,7 +193,7 @@ extension SMBSettings {
                         "Allow SMB With High Temptarget",
                         comment: "Allow SMB With High Temptarget"
                     ),
-                    miniHint: "Allow SMB when a manual Temporary Target is set greater than 100 mg/dL (5.5 mmol/L) \nDefault: OFF",
+                    miniHint: "Allow SMB when a manual Temporary Target is set greater than 100 mg/dL (5.5 mmol/L)",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: OFF").bold()
                         VStack(alignment: .leading, spacing: 10) {
@@ -207,11 +203,10 @@ extension SMBSettings {
                             Text(
                                 "Note: If this is enabled and the criteria is met, SMBs could be utilized regardless of other SMB settings being enabled or not."
                             )
-                            .italic()
                             Text(
                                 "Warning: High Temp Targets are often set when recovering from lows. If you use High Temp Targets for that purpose, this feature should remain disabled."
                             )
-                            .bold().italic()
+                            .bold()
                         }
                     }
                 )
@@ -230,12 +225,12 @@ extension SMBSettings {
                     units: state.units,
                     type: .boolean,
                     label: NSLocalizedString("Enable UAM", comment: "Enable UAM"),
-                    miniHint: "Automatically adjust insulin delivery when carbs are not announced or miscalculated \nDefault: OFF",
+                    miniHint: "Automatically adjust insulin delivery when carbs are not announced or miscalculated",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: OFF").bold()
                         VStack(alignment: .leading, spacing: 10) {
                             Text(
-                                "Enabling the UAM (Unannounced Meals) feature allows the system to detect and respond to unexpected rises in blood glucose caused by unannounced or miscalculated carbs, meals high in fat or protein, or other factors like adrenaline."
+                                "Enabling the UAM (Unannounced Meals) feature allows the system to detect and respond to unexpected rises in glucose readings caused by unannounced or miscalculated carbs, meals high in fat or protein, or other factors like adrenaline."
                             )
                             Text(
                                 "It uses the SMB (Super Micro Bolus) algorithm to deliver insulin in small amounts to correct glucose spikes. UAM also works in reverse, reducing or stopping SMBs if glucose levels drop unexpectedly."
@@ -261,7 +256,7 @@ extension SMBSettings {
                     units: state.units,
                     type: .decimal("maxSMBBasalMinutes"),
                     label: NSLocalizedString("Max SMB Basal Minutes", comment: "Max SMB Basal Minutes"),
-                    miniHint: "Limits the size of a single Super Micro Bolus (SMB) dose \nDefault: 30 minutes",
+                    miniHint: "Limits the size of a single Super Micro Bolus (SMB) dose",
                     verboseHint: VStack(spacing: 10) {
                         VStack(alignment: .center, spacing: 1) {
                             Text("Default: 30 minutes").bold()
@@ -279,13 +274,13 @@ extension SMBSettings {
                             Text(
                                 "(𝒳 = Max SMB Basal Minutes)"
                             )
-                            Text("(𝒳 ÷ 60) × current basal rate").italic()
+                            Text("(𝒳 ÷ 60) × current basal rate")
                         }
                         VStack(alignment: .leading, spacing: 10) {
                             Text(
                                 "Warning: Increasing this value above 90 minutes may impact Trio's ability to effectively zero temp and prevent lows."
-                            ).bold().italic()
-                            Text("Note: SMBs must be enabled to use this limit").italic()
+                            ).bold()
+                            Text("Note: SMBs must be enabled to use this limit")
                         }
                     }
                 )
@@ -304,7 +299,7 @@ extension SMBSettings {
                     units: state.units,
                     type: .decimal("maxUAMSMBBasalMinutes"),
                     label: NSLocalizedString("Max UAM Basal Minutes", comment: "Max UAM Basal Minutes"),
-                    miniHint: "Limits the size of a single Unannounced Meal (UAM) SMB dose \nDefault: 30 minutes",
+                    miniHint: "Limits the size of a single Unannounced Meal (UAM) SMB dose",
                     verboseHint: VStack(spacing: 10) {
                         VStack(alignment: .center, spacing: 1) {
                             Text("Default: 30 minutes").bold()
@@ -322,13 +317,13 @@ extension SMBSettings {
                             Text(
                                 "𝒳 = Max UAM SMB Basal Minutes"
                             )
-                            Text("(𝒳 ÷ 60) × current basal rate").italic()
+                            Text("(𝒳 ÷ 60) × current basal rate")
                         }
                         VStack(alignment: .leading, spacing: 10) {
                             Text(
                                 "Warning: Increasing this value above 90 minutes may impact Trio's ability to effectively zero temp and prevent lows."
-                            ).bold().italic()
-                            Text("Note: UAM SMBs must be enabled to use this limit").italic()
+                            ).bold()
+                            Text("Note: UAM SMBs must be enabled to use this limit")
                         }
                     }
                 )
@@ -347,14 +342,14 @@ extension SMBSettings {
                     units: state.units,
                     type: .decimal("maxDeltaBGthreshold"),
                     label: NSLocalizedString("Max Delta-BG Threshold SMB", comment: "Max Delta-BG Threshold"),
-                    miniHint: "Disables SMBs if last two glucose values differ by more than this percent \nDefault: 20%",
+                    miniHint: "Disables SMBs if last two glucose values differ by more than this percent",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: 20% increase").bold()
                         VStack(alignment: .leading, spacing: 10) {
                             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("Note: This setting has a hard-coded cap of 40%").italic()
+                            Text("Note: This setting has a hard-coded cap of 40%")
                         }
                     }
                 )
@@ -373,7 +368,7 @@ extension SMBSettings {
                     units: state.units,
                     type: .decimal("smbDeliveryRatio"),
                     label: NSLocalizedString("SMB DeliveryRatio", comment: "SMB DeliveryRatio"),
-                    miniHint: "Limits % of total insulin required that can be given as SMB \nDefault: 50%",
+                    miniHint: "Limits % of total insulin required that can be given as SMB",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: 50%").bold()
                         VStack(alignment: .leading, spacing: 10) {
@@ -383,7 +378,7 @@ extension SMBSettings {
                             Text(
                                 "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("Note: Limited to a range of 30 - 70%").italic()
+                            Text("Note: Limited to a range of 30 - 70%")
                         }
                     }
                 )
@@ -402,7 +397,7 @@ extension SMBSettings {
                     units: state.units,
                     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 \nDefault: 3 min",
+                    miniHint: "Minimum minutes since the last SMB or manual bolus to allow an automated SMB",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: 3 min").bold()
                         VStack(alignment: .leading, spacing: 10) {
@@ -410,7 +405,6 @@ extension SMBSettings {
                                 "This is the minimum number of minutes since the last SMB or manual bolus before Trio will permit an automated SMB."
                             )
                             Text("Note: For Omnipod Dash, minimum value is 3 min. For Omnipod Eros, minimum value is 5 min.")
-                                .italic()
                         }
                     }
                 )

+ 2 - 2
FreeAPS/Sources/Modules/Settings/SettingItems.swift

@@ -130,7 +130,7 @@ enum SettingItems {
                 "Unsuspend If No Temp",
                 "Suspend Zeros IOB",
                 "Min 5m Carbimpact",
-                "Autotune ISF Adjustment Fractio",
+                //"Autotune ISF Adjustment Fraction",
                 "Remaining Carbs Fraction",
                 "Remaining Carbs Cap",
                 "Noisy CGM Target Multiplier"
@@ -204,7 +204,7 @@ enum SettingItems {
             path: ["Features", "User Interface"]
         ),
         SettingItem(title: "App Icons", view: .iconConfig),
-        SettingItem(title: "Autotune", view: .autotuneConfig)
+        //SettingItem(title: "Autotune", view: .autotuneConfig)
     ]
 
     static let notificationItems = [

+ 6 - 6
FreeAPS/Sources/Modules/Settings/View/Subviews/FeatureSettingsView.swift

@@ -53,12 +53,12 @@ struct FeatureSettingsView: BaseView {
             )
             .listRowBackground(Color.chart)
 
-            Section(
-                header: Text("Data-Driven Settings Tuning"),
-                content: {
-                    Text("Autotune").navigationLink(to: .autotuneConfig, from: self)
-                }
-            )
+            //Section(
+                //header: Text("Data-Driven Settings Tuning"),
+                //content: {
+                    //Text("Autotune").navigationLink(to: .autotuneConfig, from: self)
+                //}
+            //)
             .listRowBackground(Color.chart)
         }
         .scrollContentBackground(.hidden).background(color)

+ 1 - 1
FreeAPS/Sources/Modules/ShortcutsConfig/View/ShortcutsConfigView.swift

@@ -70,7 +70,7 @@ extension ShortcutsConfig {
                     units: state.units,
                     type: .boolean,
                     label: "Allow Bolusing with Shortcuts",
-                    miniHint: "Automate boluses using the Shortcuts App \nDefault: OFF",
+                    miniHint: "Automate boluses using the Shortcuts App",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: OFF").bold()
                         VStack(alignment: .leading, spacing: 10) {

+ 7 - 8
FreeAPS/Sources/Modules/TargetBehavoir/View/TargetBehavoirRootView.swift

@@ -54,7 +54,7 @@ extension TargetBehavoir {
                         "High Temp Target Raises Sensitivity",
                         comment: "High Temp Target Raises Sensitivity"
                     ),
-                    miniHint: "A Temp Target > 110 mg/dL increases sensitivity when glucose is above target \nDefault: OFF",
+                    miniHint: "A Temp Target > 110 mg/dL increases sensitivity when glucose is above target",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: OFF").bold()
                         VStack(alignment: .leading, spacing: 10) {
@@ -64,7 +64,7 @@ extension TargetBehavoir {
                             Text(
                                 "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("Note: The effect of this can be adjusted with the Half Basal Exercise Target").italic()
+                            Text("Note: The effect of this can be adjusted with the Half Basal Exercise Target")
                         }
                     },
                     headerText: "Algorithmic Target Settings"
@@ -90,7 +90,7 @@ extension TargetBehavoir {
                         "Low Temp Target Lowers Sensitivity",
                         comment: "Low Temp Target Lowers Sensitivity"
                     ),
-                    miniHint: "Temp Target < 100 mg/dL decreases sensitivity when glucose is below target \nDefault setting: OFF",
+                    miniHint: "Temp Target < 100 mg/dL decreases sensitivity when glucose is below target",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: OFF").bold()
                         VStack(alignment: .leading, spacing: 10) {
@@ -100,7 +100,7 @@ extension TargetBehavoir {
                             Text(
                                 "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("Note: The effect of this can be adjusted with the Half Basal Exercise Target").italic()
+                            Text("Note: The effect of this can be adjusted with the Half Basal Exercise Target")
                         }
                     }
                 )
@@ -119,7 +119,7 @@ extension TargetBehavoir {
                     units: state.units,
                     type: .boolean,
                     label: NSLocalizedString("Sensitivity Raises Target", comment: "Sensitivity Raises Target"),
-                    miniHint: "Automatically raise target glucose if sensitivity is detected \nDefault: OFF",
+                    miniHint: "Automatically raise target glucose if sensitivity is detected",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: OFF").bold()
                         Text("Automatically increase target glucose if it detects an increase in sensitivity.")
@@ -140,7 +140,7 @@ extension TargetBehavoir {
                     units: state.units,
                     type: .boolean,
                     label: NSLocalizedString("Resistance Lowers Target", comment: "Resistance Lowers Target"),
-                    miniHint: "Automatically lower target glucose if resistance is detected \nDefault: OFF",
+                    miniHint: "Automatically lower target glucose if resistance is detected",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: OFF").bold()
                         Text(
@@ -163,7 +163,7 @@ extension TargetBehavoir {
                     units: state.units,
                     type: .decimal("halfBasalExerciseTarget"),
                     label: NSLocalizedString("Half Basal Exercise Target", comment: "Half Basal Exercise Target"),
-                    miniHint: "Scales down your basal rate to 50% at this value \nDefault: 160 mg/dL (8.9 mmol/L)",
+                    miniHint: "Scales down your basal rate to 50% at this value",
                     verboseHint: VStack(spacing: 10) {
                         Text("Default: 160 mg/dL (8.9 mmol/L)").bold()
                         VStack(alignment: .leading, spacing: 10) {
@@ -176,7 +176,6 @@ extension TargetBehavoir {
                             Text(
                                 "Note: This setting is only utilized if the settings \"Low Temp Target Lowers Sensitivity\" OR \"High Temp Target Raises Sensitivity\" are enabled."
                             )
-                            .italic()
                         }
                     }
                 )

+ 1 - 1
FreeAPS/Sources/Modules/UserInterfaceSettings/View/UserInterfaceSettingsRootView.swift

@@ -298,7 +298,7 @@ extension UserInterfaceSettings {
 
                         HStack(alignment: .top) {
                             Text(
-                                "Choose between the OpenAPS colored Lines or the Cone of Uncertainty for the Forecast Lines \nDefault: Cone"
+                                "Choose between the OpenAPS colored Lines or the Cone of Uncertainty for the Forecast Lines"
                             )
                             .font(.footnote)
                             .foregroundColor(.secondary)

+ 1 - 1
FreeAPS/Sources/Shortcuts/State/ListStateIntent.swift

@@ -9,7 +9,7 @@ import Foundation
 
     // Description of the action in the Shortcuts app
     static var description = IntentDescription(
-        "Allow to list the last Blood Glucose, trends, IOB and COB available in Trio"
+        "Allow to list the last glucose reading, trends, IOB and COB available in Trio"
     )
 
     static var parameterSummary: some ParameterSummary {