Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
147 commits
Select commit Hold shift + click to select a range
6411d6e
Alarm refactoring
bjorkert Apr 26, 2025
e171dc4
SnoozerViewController
bjorkert Apr 26, 2025
9c1b6ad
Snoozer details
bjorkert Apr 26, 2025
7309f16
iOS 16 and stale bg
bjorkert Apr 26, 2025
1f4a80a
Landscape snoozer
bjorkert Apr 26, 2025
03c930c
Removal of dead code
bjorkert Apr 26, 2025
d7c9708
Show actual time
bjorkert Apr 26, 2025
637e62a
Work in progress
bjorkert May 3, 2025
7b64fe4
Focus to the snooze tab
bjorkert May 3, 2025
70fee8e
No more AlarmViewController.swift
bjorkert May 3, 2025
345d1da
No more DebugViewController.swift
bjorkert May 3, 2025
e096c9a
Working on snoozer
bjorkert May 4, 2025
dead9c3
Snoozer view part 1
bjorkert May 4, 2025
6a86806
Snoozer unit
bjorkert May 4, 2025
ef100e6
Alarm handling
bjorkert May 5, 2025
8c7783b
Testdata for alarms
bjorkert May 5, 2025
9990e12
Debug helpers
bjorkert May 6, 2025
002b328
bg picker
bjorkert May 6, 2025
570ae33
AlarmBGSection
bjorkert May 7, 2025
fc3188f
Low bg alarm in progress
bjorkert May 7, 2025
e8b9202
Low bg alarm in progress
bjorkert May 8, 2025
0b0bfec
bg alarm work
bjorkert May 9, 2025
8a8e5f6
LowBGCondition.swift
bjorkert May 9, 2025
1fa4c83
High bg alarm
bjorkert May 9, 2025
03fda19
Alarm editing gui improvements
bjorkert May 10, 2025
ebd2d68
Changed picker style
bjorkert May 11, 2025
9738af9
PickerStyle
bjorkert May 12, 2025
1a9af37
Tinted InfoBanner
bjorkert May 12, 2025
6118f48
Alarm gui adjustments
bjorkert May 12, 2025
1ec4a40
Alarm gui adjustments
bjorkert May 12, 2025
97378e4
Swap place of Done/+
bjorkert May 12, 2025
ef140b4
Alarm selection
bjorkert May 12, 2025
6aa3f78
Alarm selection
bjorkert May 12, 2025
d110b5d
Alarm icon and text changes
bjorkert May 12, 2025
4952fa2
Alarm icon and text changes
bjorkert May 12, 2025
53c0036
Delta sorting
bjorkert May 13, 2025
754e46a
More blue for InfoBanner
bjorkert May 13, 2025
9af524a
Icons icons icons
bjorkert May 13, 2025
cff2050
Alarm list
bjorkert May 13, 2025
4ae3455
Show snooze overlay
bjorkert May 13, 2025
b36c8e3
Snooze adjustment
bjorkert May 13, 2025
41cfa36
Snapped value
bjorkert May 13, 2025
a91cc0e
FastDropCondition
bjorkert May 14, 2025
be84d01
swiftformat
bjorkert May 14, 2025
6913060
swiftformat
bjorkert May 14, 2025
3fc4d0d
swiftformat
bjorkert May 14, 2025
8de6f51
swiftformat
bjorkert May 14, 2025
e7bc8c3
Linting
bjorkert May 14, 2025
02e7db1
Not Looping
bjorkert May 14, 2025
878d568
Active during fix
bjorkert May 14, 2025
f28c210
Active during fix
bjorkert May 14, 2025
a2d28cf
Day and night
bjorkert May 14, 2025
3a240a2
Alarm settings
bjorkert May 14, 2025
aa849c6
OverrideStartAlarm
bjorkert May 14, 2025
b74c944
OverrideEnd
bjorkert May 14, 2025
70b5800
TempTargetStart
bjorkert May 14, 2025
a36b7ac
TempTargetEnd
bjorkert May 14, 2025
e940546
RecBolus
bjorkert May 15, 2025
4c0ef75
RecBolus
bjorkert May 15, 2025
b47134c
COBAlarm
bjorkert May 15, 2025
1b28e00
FastRise
bjorkert May 15, 2025
667217c
Refactoring
bjorkert May 16, 2025
54d8de5
AlarmType
bjorkert May 16, 2025
8d284be
snoozeTimeUnit
bjorkert May 16, 2025
e1d5e64
Temporary alert
bjorkert May 16, 2025
ced5672
Temporary alert
bjorkert May 16, 2025
7c11619
SensorAge
bjorkert May 17, 2025
6d518b8
Header change
bjorkert May 17, 2025
1728116
PumpChange
bjorkert May 17, 2025
3627281
PumpInsulin
bjorkert May 17, 2025
744d9f7
Add now to alarm evaluators
bjorkert May 17, 2025
c55fd40
IOB Alarm
bjorkert May 19, 2025
267b1e6
Battery Alarm
bjorkert May 20, 2025
a40d974
BatteryDropAlarm
bjorkert May 20, 2025
f06f8f0
MissedBolus
bjorkert May 20, 2025
64b545a
Cleanup
bjorkert May 20, 2025
4fd0a24
Merge branch 'dev' into alarm
bjorkert May 20, 2025
0cad164
Merge dev
bjorkert May 20, 2025
c3b7925
Text adjustments
bjorkert May 20, 2025
0e203dd
dark theme and small adjustments
bjorkert May 20, 2025
58d7926
Unit tests
bjorkert May 23, 2025
d942238
Merge branch 'dev' into alarm
bjorkert May 23, 2025
f03a2a6
Acknowledge
bjorkert May 24, 2025
00e7fa9
Acknowledge
bjorkert May 24, 2025
6fdd020
Range adjustments
bjorkert May 24, 2025
e7bcd9f
Override and temp target alarm fix
bjorkert May 25, 2025
55054f5
Snoozer emoji
bjorkert May 26, 2025
d51d91c
Remove persistentNotification
bjorkert May 26, 2025
236c153
Code cleanup
bjorkert May 26, 2025
880b9b5
Graph Settings
bjorkert May 26, 2025
59935e1
Calendar settings
bjorkert May 26, 2025
6e72871
SettingsMenu
bjorkert May 26, 2025
75977b0
Removed Eureka
bjorkert May 27, 2025
5ffb69b
Bump SwiftFormat
bjorkert May 27, 2025
a86002e
Icon changes
bjorkert May 27, 2025
52af223
Glyph
bjorkert May 27, 2025
860712d
SettingsMenu
bjorkert May 27, 2025
4079dac
SettingsMenu
bjorkert May 27, 2025
570d0a0
SettingsMenu
bjorkert May 27, 2025
514338f
Dark Mode
bjorkert May 27, 2025
15f461b
SettingsMenu
bjorkert May 27, 2025
1a0c376
Glyph on alarm list
bjorkert May 28, 2025
e548b51
Alarm list
bjorkert May 28, 2025
82b381b
Restore Rermote Settings
bjorkert May 28, 2025
df9211c
TogglableSecureInput
bjorkert May 28, 2025
73e2bfb
Migrate general alarm settings
bjorkert May 28, 2025
42506a7
Migrate urgent low
bjorkert May 28, 2025
9eba9b8
Migrate urgent low
bjorkert May 28, 2025
5f1dc05
Migrate low
bjorkert May 28, 2025
b5ca801
Migrate high
bjorkert May 28, 2025
e52bef4
drop and rise migration
bjorkert May 28, 2025
dd3f61f
drop and rise migration
bjorkert May 28, 2025
2171f11
migrateMissedReadingAlarm
bjorkert May 28, 2025
f1b2e3a
Not looping migration
bjorkert Jun 6, 2025
1f67ea2
Missed bolus alert migration
bjorkert Jun 6, 2025
0527e9c
CAGE & SAGE
bjorkert Jun 6, 2025
6282006
Override alarm migrate
bjorkert Jun 6, 2025
d165f13
Temp target alarm migration
bjorkert Jun 6, 2025
21505ba
Migration
bjorkert Jun 6, 2025
f4f1472
IOB/COB Migration
bjorkert Jun 6, 2025
cdff6db
Alarm migration
bjorkert Jun 6, 2025
52c4b2c
Remove UserDefaults.swift
bjorkert Jun 6, 2025
0b118be
Data migration
bjorkert Jun 7, 2025
9df0323
Merge branch 'dev' into alarm
bjorkert Jun 7, 2025
bc025eb
High/low limits for not looping
bjorkert Jun 7, 2025
a89a654
Default value for bglimitqs
bjorkert Jun 7, 2025
d5c34bb
Default value for bglimit
bjorkert Jun 7, 2025
1390521
Default values
bjorkert Jun 9, 2025
e0daae6
Default values
bjorkert Jun 9, 2025
57232f4
Task scheduling of alarms
bjorkert Jun 9, 2025
779fe9a
Delete alarm button
bjorkert Jun 9, 2025
ab15e6f
Merge remote-tracking branch 'origin/main' into alarm
bjorkert Jun 12, 2025
2367c2e
Persistent Notification
bjorkert Jun 12, 2025
392e08c
Alarm Sort Order
bjorkert Jun 12, 2025
190a625
Merge branch 'dev' into alarm
bjorkert Jun 12, 2025
9d3e521
Build error fix
bjorkert Jun 12, 2025
94dcdd5
Fix for contact update lag
bjorkert Jun 13, 2025
725056d
Merge branch 'dev' into alarm
bjorkert Jun 27, 2025
5f5505b
Delete alarm bugfix
bjorkert Jun 27, 2025
a2095d1
Force portrait mode
bjorkert Jun 27, 2025
86eb20a
Merge branch 'dev' into alarm
bjorkert Jun 30, 2025
52b43d4
Removed date from header
bjorkert Jun 30, 2025
68d6104
suppress duplicate @Published emissions
bjorkert Jun 30, 2025
984908a
Merge branch 'dev' into alarm
bjorkert Jun 30, 2025
4b2a693
Categorize alarms by status
bjorkert Jul 1, 2025
4656c54
Fix displayed decimals for AlarmStepperSection
bjorkert Jul 1, 2025
f81a225
Align wordings
bjorkert Jul 1, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
build/
DerivedData/
R.generated.swift
Package.resolved

## Various settings
!default.mode1v3
Expand Down
21 changes: 21 additions & 0 deletions BuildTools/Package.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
// swift-tools-version:5.3
import PackageDescription

let package = Package(
name: "BuildTools",
platforms: [
.macOS(.v10_11),
],
dependencies: [
.package(
url: "https://github.com/nicklockwood/SwiftFormat.git",
from: "0.56.1"
),
],
targets: [
.target(
name: "BuildTools",
path: ""
),
]
)
708 changes: 634 additions & 74 deletions LoopFollow.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

24 changes: 24 additions & 0 deletions LoopFollow.xcworkspace/xcshareddata/xcschemes/LoopFollow.xcscheme
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,30 @@
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
<Testables>
<TestableReference
skipped = "NO"
parallelizable = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DDCC3AC62DDE1531006F1C10"
BuildableName = "LoopFollowTests.xctest"
BlueprintName = "LoopFollowTests"
ReferencedContainer = "container:LoopFollow.xcodeproj">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO"
parallelizable = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DDCC3AD52DDE1790006F1C10"
BuildableName = "Tests.xctest"
BlueprintName = "Tests"
ReferencedContainer = "container:LoopFollow.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
Expand Down
46 changes: 46 additions & 0 deletions LoopFollow/Alarm/AddAlarm/AddAlarmSheet.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
// LoopFollow
// AddAlarmSheet.swift
// Created by Jonas Björkert.

import SwiftUI

struct AddAlarmSheet: View {
let onSelect: (AlarmType) -> Void
@Environment(\.dismiss) private var dismiss

private let columns = [
GridItem(.adaptive(minimum: 110), spacing: 16),
]

var body: some View {
NavigationStack {
ScrollView {
LazyVGrid(columns: columns, spacing: 16) {
ForEach(AlarmType.Group.allCases, id: \.self) { group in
if AlarmType.allCases.contains(where: { $0.group == group }) {
Section(header: Text(group.rawValue)
.font(.headline)
.frame(maxWidth: .infinity, alignment: .leading)
.padding(.horizontal, 4)
) {
ForEach(AlarmType.allCases.filter { $0.group == group }, id: \.self) { type in
AlarmTile(type: type) {
onSelect(type)
}
}
}
}
}
}
.padding()
}
.navigationTitle("Add Alarm")
.toolbar {
ToolbarItem(placement: .cancellationAction) {
Button("Cancel") { dismiss() }
}
}
}
.preferredColorScheme(Storage.shared.forceDarkMode.value ? .dark : nil)
}
}
33 changes: 33 additions & 0 deletions LoopFollow/Alarm/AddAlarm/AlarmTile.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
// LoopFollow
// AlarmTile.swift
// Created by Jonas Björkert.

import SwiftUI

struct AlarmTile: View {
let type: AlarmType
let action: () -> Void

var body: some View {
Button(action: action) {
VStack(spacing: 8) {
Image(systemName: type.icon)
.font(.title2)
.foregroundColor(.accentColor)
Text(type.rawValue)
.font(.subheadline)
.multilineTextAlignment(.center)
.lineLimit(2)
Text(type.blurb)
.font(.caption2)
.foregroundColor(.secondary)
.multilineTextAlignment(.center)
.lineLimit(2)
}
.padding()
.frame(maxWidth: .infinity, minHeight: 110)
.background(.thinMaterial, in: RoundedRectangle(cornerRadius: 12))
}
.buttonStyle(.plain)
}
}
31 changes: 31 additions & 0 deletions LoopFollow/Alarm/Alarm+byPriorityThenSpec.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
// LoopFollow
// Alarm+byPriorityThenSpec.swift
// Created by Jonas Björkert.

import Foundation

extension Alarm {
/// Sorts by `AlarmType.priority`, then the per-type `sortSpec` if one exists.
static let byPriorityThenSpec: (Alarm, Alarm) -> Bool = { lhs, rhs in
// 1) type-level priority
if lhs.type.priority != rhs.type.priority {
return lhs.type.priority < rhs.type.priority
}

// 2) per-type “main value” ordering
if lhs.type == rhs.type,
let spec = lhs.type.sortSpec
{
let lv = spec.key(lhs)
let rv = spec.key(rhs)

switch spec.direction {
case .ascending: return (lv ?? .infinity) < (rv ?? .infinity)
case .descending: return (lv ?? -.infinity) > (rv ?? -.infinity)
}
}

// 3) fallback – keep original insertion order
return false
}
}
Loading