Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
be663f2
feat: enable Network Extension (Phase 2 of background-connectivity plan)
torlando-tech Apr 29, 2026
7396834
address greptile review feedback (greploop iteration 1)
torlando-tech Apr 29, 2026
8d477ca
address greptile review feedback (greploop iteration 2)
torlando-tech Apr 29, 2026
7eb4286
address greptile review feedback (greploop iteration 3)
torlando-tech Apr 29, 2026
225b199
address greptile review feedback (greploop iteration 4)
torlando-tech Apr 29, 2026
c08258f
address greptile review feedback (greploop iteration 5)
torlando-tech Apr 29, 2026
dea72da
address greptile review feedback (greploop iteration 6)
torlando-tech Apr 29, 2026
234c0c1
address greptile review feedback (greploop iteration 7)
torlando-tech Apr 29, 2026
6d723ca
chore: add Re-run Onboarding debug card (DEBUG only)
torlando-tech Apr 29, 2026
9d4e261
fix: keep AutoInterface local when tunnel is active
torlando-tech Apr 29, 2026
d8fae72
fix: run real AutoInterface inside the extension for background Auto
torlando-tech Apr 29, 2026
dd71ba7
chore: shared ExtensionDiagLog for retrieving extension logs from device
torlando-tech Apr 29, 2026
c1fce1d
phase 1 ships TCP-only background; auto stays local
torlando-tech Apr 29, 2026
a22e9a7
chore: end-to-end test harness for AutoInterface in extension
torlando-tech Apr 29, 2026
d3719c2
fix: stabilize Phase 1 background transport (TCP-only, identity-safe)
torlando-tech Apr 29, 2026
f4f7c69
chore(greptile): iteration 1 — applied 2, rejected 0
torlando-agent[bot] May 8, 2026
774456f
chore(greptile): iteration 2 — applied 2, rejected 0
torlando-agent[bot] May 8, 2026
2e150b1
chore(greptile): iteration 3 — applied 1, rejected 0
torlando-agent[bot] May 8, 2026
58809e7
chore(greptile): iteration 4 — applied 1, rejected 0
torlando-agent[bot] May 8, 2026
79beb50
feat: multi-TCP tunnel — extension manages a connection per entity (#62)
torlando-tech May 11, 2026
ed89272
Merge remote-tracking branch 'origin/main' into feat/enable-tunnel-fl…
torlando-tech May 11, 2026
1ee72eb
chore(deps): bump reticulum-swift to 0.3.1, drop isTunnelModeActive w…
torlando-tech May 11, 2026
2ff0d10
chore(tunnel): restore isTunnelModeActive guard — 0.3.1 upstream guar…
torlando-tech May 11, 2026
bc4799d
test(harness): add get_notifications action for Phase A suspended-not…
torlando-tech May 13, 2026
a1a7fa1
test(harness): add notification permission preflight (get_notif_statu…
torlando-tech May 13, 2026
617941a
feat(ne): push destination-hash filter + notification scheduling into…
torlando-tech May 13, 2026
0fb75f9
test(harness): add enable_tunnel + get_tunnel_status actions
torlando-tech May 13, 2026
fa7e36e
test(harness): don't persist tunnelEnabledKey from enable_tunnel
torlando-tech May 13, 2026
fc9b0b8
fix(init): don't block app init on UNUserNotificationCenter authoriza…
torlando-tech May 13, 2026
138f600
test(harness): add skip_onboarding action for fresh-install bootstrap
torlando-tech May 13, 2026
dc1024b
fix(settings): register user-defaults at app launch, not in SettingsV…
torlando-tech May 14, 2026
f56fcfe
fix(tunnel): make applyTunnelModeToInterfaces(active: true) idempoten…
torlando-tech May 14, 2026
ea2e57e
feat(ne): dual-interface tunnel architecture replaces tunnel-mode flip
torlando-tech May 14, 2026
bdca767
test: update AutoAnnouncePolicy test for process-wide registration
torlando-tech May 14, 2026
b0894c9
chore(greptile): iteration 1 — applied 1, rejected 1
torlando-agent[bot] May 14, 2026
2b8569f
chore(greptile): iteration 2 — applied 1, rejected 0
torlando-agent[bot] May 14, 2026
d1833f6
chore(greptile): iteration 3 — applied 1, rejected 1
torlando-agent[bot] May 14, 2026
6949862
fix(test): forward test relay delegate to IncomingMessageHandler
torlando-agent[bot] May 14, 2026
38f8d2e
fix(tunnel): make NE tunnel lifecycle reliable
torlando-agent[bot] May 15, 2026
c97246a
fix(tunnel): re-announce on background transition to pin rnsd path
torlando-agent[bot] May 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 78 additions & 7 deletions Columba.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@
076B /* SharedFrameQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = F076 /* SharedFrameQueue.swift */; };
077B /* TunnelManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F077 /* TunnelManager.swift */; };
078B /* ExtensionFrameReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = F078 /* ExtensionFrameReader.swift */; };
TUNB /* TunnelTCPInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = FTUN /* TunnelTCPInterface.swift */; };
079B /* OnboardingRestoreSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = F079 /* OnboardingRestoreSheet.swift */; };
07AB /* PlatformCompat.swift in Sources */ = {isa = PBXBuildFile; fileRef = F07A /* PlatformCompat.swift */; };
07CB /* MicronDocument.swift in Sources */ = {isa = PBXBuildFile; fileRef = F07D /* MicronDocument.swift */; };
Expand All @@ -123,17 +124,37 @@
082B /* MicronRenderContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = F083 /* MicronRenderContainer.swift */; };
083B /* MonospaceLineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F084 /* MonospaceLineView.swift */; };
084B /* ZoomableScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F085 /* ZoomableScrollView.swift */; };
085B /* BackgroundTransportPage.swift in Sources */ = {isa = PBXBuildFile; fileRef = F088 /* BackgroundTransportPage.swift */; };
086B /* TCPClientWizardViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F086 /* TCPClientWizardViewModel.swift */; };
087B /* TCPClientWizard.swift in Sources */ = {isa = PBXBuildFile; fileRef = F087 /* TCPClientWizard.swift */; };
T006 /* TCPClientWizardViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FT06 /* TCPClientWizardViewModelTests.swift */; };
T003 /* MicronParserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FT03 /* MicronParserTests.swift */; };
TAA0 /* AutoAnnouncePolicyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FTAA /* AutoAnnouncePolicyTests.swift */; };
TPCR /* PeerChildInterfaceRegistryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FTPC /* PeerChildInterfaceRegistryTests.swift */; };
2F3D64B12F7227E100049252 /* ReticulumSwift in Frameworks */ = {isa = PBXBuildFile; productRef = P004 /* ReticulumSwift */; };
ERETIC /* ReticulumSwift in Frameworks */ = {isa = PBXBuildFile; productRef = P005 /* ReticulumSwift */; };
E001 /* PacketTunnelProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE01 /* PacketTunnelProvider.swift */; };
E002 /* SharedFrameQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = F076 /* SharedFrameQueue.swift */; };
E004 /* ExtensionAutoBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE04 /* ExtensionAutoBridge.swift */; };
EAPPEX /* ColumbaNetworkExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = EPROD /* ColumbaNetworkExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
088T /* TestController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F088T /* TestController.swift */; };
089T /* TestURLHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = F089T /* TestURLHandler.swift */; };
/* End PBXBuildFile section */

/* Begin PBXCopyFilesBuildPhase section */
EEMBED /* Embed Foundation Extensions */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 13;
files = (
EAPPEX /* ColumbaNetworkExtension.appex in Embed Foundation Extensions */,
);
name = "Embed Foundation Extensions";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */

/* Begin PBXContainerItemProxy section */
TTPROXY /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
Expand All @@ -142,6 +163,13 @@
remoteGlobalIDString = TTARG;
remoteInfo = ColumbaAppTests;
};
EDPROXY /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = PROJ /* Project object */;
proxyType = 1;
remoteGlobalIDString = ETARG;
remoteInfo = ColumbaNetworkExtension;
};
/* End PBXContainerItemProxy section */

/* Begin PBXFileReference section */
Expand Down Expand Up @@ -254,6 +282,7 @@
F076 /* SharedFrameQueue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharedFrameQueue.swift; sourceTree = "<group>"; };
F077 /* TunnelManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TunnelManager.swift; sourceTree = "<group>"; };
F078 /* ExtensionFrameReader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtensionFrameReader.swift; sourceTree = "<group>"; };
FTUN /* TunnelTCPInterface.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TunnelTCPInterface.swift; sourceTree = "<group>"; };
F079 /* OnboardingRestoreSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingRestoreSheet.swift; sourceTree = "<group>"; };
F07A /* PlatformCompat.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlatformCompat.swift; sourceTree = "<group>"; };
F07D /* MicronDocument.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MicronDocument.swift; sourceTree = "<group>"; };
Expand All @@ -265,6 +294,7 @@
F083 /* MicronRenderContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MicronRenderContainer.swift; sourceTree = "<group>"; };
F084 /* MonospaceLineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MonospaceLineView.swift; sourceTree = "<group>"; };
F085 /* ZoomableScrollView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ZoomableScrollView.swift; sourceTree = "<group>"; };
F088 /* BackgroundTransportPage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BackgroundTransportPage.swift; sourceTree = "<group>"; };
F086 /* TCPClientWizardViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TCPClientWizardViewModel.swift; sourceTree = "<group>"; };
F087 /* TCPClientWizard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TCPClientWizard.swift; sourceTree = "<group>"; };
FT06 /* TCPClientWizardViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TCPClientWizardViewModelTests.swift; sourceTree = "<group>"; };
Expand All @@ -273,14 +303,18 @@
FE01 /* PacketTunnelProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PacketTunnelProvider.swift; sourceTree = "<group>"; };
FE02 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
FE03 /* ColumbaNetworkExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ColumbaNetworkExtension.entitlements; sourceTree = "<group>"; };
FE04 /* ExtensionAutoBridge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtensionAutoBridge.swift; sourceTree = "<group>"; };
PROD /* ColumbaApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ColumbaApp.app; sourceTree = BUILT_PRODUCTS_DIR; };
F088T /* TestController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestController.swift; sourceTree = "<group>"; };
F089T /* TestURLHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestURLHandler.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
EFWBP /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
ERETIC /* ReticulumSwift in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down Expand Up @@ -362,6 +396,7 @@
isa = PBXGroup;
children = (
FE01 /* PacketTunnelProvider.swift */,
FE04 /* ExtensionAutoBridge.swift */,
FE02 /* Info.plist */,
FE03 /* ColumbaNetworkExtension.entitlements */,
);
Expand Down Expand Up @@ -412,6 +447,7 @@
F04F /* ConnectivityPage.swift */,
F050 /* PermissionsPage.swift */,
F051 /* CompletePage.swift */,
F088 /* BackgroundTransportPage.swift */,
F079 /* OnboardingRestoreSheet.swift */,
);
path = Onboarding;
Expand Down Expand Up @@ -513,6 +549,7 @@
F074 /* SharedDefaults.swift */,
F077 /* TunnelManager.swift */,
F078 /* ExtensionFrameReader.swift */,
FTUN /* TunnelTCPInterface.swift */,
F07F /* NomadNetBrowserService.swift */,
);
path = Services;
Expand Down Expand Up @@ -612,10 +649,20 @@
GVIEWS /* Views */,
GSVC /* Services */,
GRES /* Resources */,
GTEST /* Test */,
);
path = Sources/ColumbaApp;
sourceTree = "<group>";
};
GTEST /* Test */ = {
isa = PBXGroup;
children = (
F088T /* TestController.swift */,
F089T /* TestURLHandler.swift */,
);
path = Test;
sourceTree = "<group>";
};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
Expand All @@ -631,6 +678,9 @@
dependencies = (
);
name = ColumbaNetworkExtension;
packageProductDependencies = (
P005 /* ReticulumSwift */,
);
productName = ColumbaNetworkExtension;
productReference = EPROD /* ColumbaNetworkExtension.appex */;
productType = "com.apple.product-type.app-extension";
Expand All @@ -642,10 +692,12 @@
SRCBP /* Sources */,
FWBP /* Frameworks */,
RESBP /* Resources */,
EEMBED /* Embed Foundation Extensions */,
);
buildRules = (
);
dependencies = (
EDDEP /* PBXTargetDependency */,
);
name = ColumbaApp;
packageProductDependencies = (
Expand Down Expand Up @@ -743,6 +795,11 @@
target = TARG /* ColumbaApp */;
targetProxy = TTPROXY /* PBXContainerItemProxy */;
};
EDDEP /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = ETARG /* ColumbaNetworkExtension */;
targetProxy = EDPROXY /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */

/* Begin PBXSourcesBuildPhase section */
Expand All @@ -767,6 +824,7 @@
files = (
E001 /* PacketTunnelProvider.swift in Sources */,
E002 /* SharedFrameQueue.swift in Sources */,
E004 /* ExtensionAutoBridge.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down Expand Up @@ -831,6 +889,7 @@
04FB /* ConnectivityPage.swift in Sources */,
050B /* PermissionsPage.swift in Sources */,
051B /* CompletePage.swift in Sources */,
085B /* BackgroundTransportPage.swift in Sources */,
052B /* OnboardingViewModel.swift in Sources */,
053B /* TcpCommunityServer.swift in Sources */,
054B /* RNodeWizardView.swift in Sources */,
Expand Down Expand Up @@ -868,6 +927,7 @@
076B /* SharedFrameQueue.swift in Sources */,
077B /* TunnelManager.swift in Sources */,
078B /* ExtensionFrameReader.swift in Sources */,
TUNB /* TunnelTCPInterface.swift in Sources */,
079B /* OnboardingRestoreSheet.swift in Sources */,
07AB /* PlatformCompat.swift in Sources */,
07CB /* MicronDocument.swift in Sources */,
Expand All @@ -881,6 +941,8 @@
084B /* ZoomableScrollView.swift in Sources */,
086B /* TCPClientWizardViewModel.swift in Sources */,
087B /* TCPClientWizard.swift in Sources */,
088T /* TestController.swift in Sources */,
089T /* TestURLHandler.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down Expand Up @@ -957,7 +1019,7 @@
buildSettings = {
CODE_SIGN_ENTITLEMENTS = Sources/ColumbaNetworkExtension/ColumbaNetworkExtension.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
CURRENT_PROJECT_VERSION = 29;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = Sources/ColumbaNetworkExtension/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = "Columba Transport";
Expand All @@ -983,7 +1045,7 @@
buildSettings = {
CODE_SIGN_ENTITLEMENTS = Sources/ColumbaNetworkExtension/ColumbaNetworkExtension.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
CURRENT_PROJECT_VERSION = 29;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = Sources/ColumbaNetworkExtension/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = "Columba Transport";
Expand Down Expand Up @@ -1066,8 +1128,9 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_ENTITLEMENTS = Sources/ColumbaApp/Resources/ColumbaApp.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
CURRENT_PROJECT_VERSION = 29;
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = Sources/ColumbaApp/Resources/Info.plist;
Expand All @@ -1092,6 +1155,7 @@
PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx";
SUPPORTS_MACCATALYST = NO;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ENABLE_NETWORK_EXTENSION";
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
Expand All @@ -1104,8 +1168,9 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_ENTITLEMENTS = Sources/ColumbaApp/Resources/ColumbaApp.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
CURRENT_PROJECT_VERSION = 29;
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = Sources/ColumbaApp/Resources/Info.plist;
Expand All @@ -1130,6 +1195,7 @@
PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx";
SUPPORTS_MACCATALYST = NO;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ENABLE_NETWORK_EXTENSION";
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
Expand All @@ -1141,7 +1207,7 @@
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
CURRENT_PROJECT_VERSION = 29;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 17.0;
MACOSX_DEPLOYMENT_TARGET = 14.0;
Expand All @@ -1161,7 +1227,7 @@
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
CURRENT_PROJECT_VERSION = 29;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 17.0;
MACOSX_DEPLOYMENT_TARGET = 14.0;
Expand Down Expand Up @@ -1247,7 +1313,7 @@
repositoryURL = "https://github.com/torlando-tech/reticulum-swift.git";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 0.3.0;
minimumVersion = 0.3.1;
};
};
/* End XCRemoteSwiftPackageReference section */
Expand All @@ -1273,6 +1339,11 @@
package = PKGREF4 /* XCRemoteSwiftPackageReference "reticulum-swift" */;
productName = ReticulumSwift;
};
P005 /* ReticulumSwift */ = {
isa = XCSwiftPackageProductDependency;
package = PKGREF4 /* XCRemoteSwiftPackageReference "reticulum-swift" */;
productName = ReticulumSwift;
};
/* End XCSwiftPackageProductDependency section */
};
rootObject = PROJ /* Project object */;
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ let package = Package(
// library changes" for the exact recipe.
.package(url: "https://github.com/torlando-tech/LXMF-swift.git", from: "0.4.0"),
.package(url: "https://github.com/torlando-tech/LXST-swift.git", from: "0.2.0"),
.package(url: "https://github.com/torlando-tech/reticulum-swift.git", from: "0.3.0"),
.package(url: "https://github.com/torlando-tech/reticulum-swift.git", from: "0.3.1"),
.package(url: "https://github.com/maplibre/maplibre-gl-native-distribution", from: "6.9.0"),
],
targets: [
Expand Down
Loading
Loading