Why
With N bridges connected, Live Activities must be per-bridge. Today both ConnectionLiveActivityCoordinator and OTAUpdateLiveActivityCoordinator run a single activity each — switching bridges replaces the prior activity.
What
ConnectionActivityAttributes gains bridgeID: UUID.
ConnectionLiveActivityCoordinator keeps a [BridgeID: LiveActivityController] map and runs N concurrent activities (one per connected bridge).
OTAUpdateActivityAttributes gains bridgeID. The static identifier becomes "ota-updates-\(bridgeID)". OTAUpdateLiveActivityCoordinator runs N activities, one per bridge with active OTA.
- Both coordinators stop being singletons in spirit (still global instances, but multi-bridge internally).
- Widget UIs display the bridge name prominently.
Files
Shellbee/LiveActivities/ConnectionActivityAttributes.swift
Shellbee/LiveActivities/OTAUpdateActivityAttributes.swift
Shellbee/LiveActivities/ConnectionLiveActivityCoordinator.swift
Shellbee/LiveActivities/OTAUpdateLiveActivityCoordinator.swift
Shellbee/LiveActivities/*Widget.swift
Verification
- Trigger OTA on bridge A and bridge B simultaneously via two test centers; confirm two distinct OTA activities visible on lock screen.
- Disconnect bridge A; confirm only A's connection activity ends, B's stays.
Phase
Phase 2 of multi-bridge support. Depends on #2.1.
Why
With N bridges connected, Live Activities must be per-bridge. Today both
ConnectionLiveActivityCoordinatorandOTAUpdateLiveActivityCoordinatorrun a single activity each — switching bridges replaces the prior activity.What
ConnectionActivityAttributesgainsbridgeID: UUID.ConnectionLiveActivityCoordinatorkeeps a[BridgeID: LiveActivityController]map and runs N concurrent activities (one per connected bridge).OTAUpdateActivityAttributesgainsbridgeID. The staticidentifierbecomes"ota-updates-\(bridgeID)".OTAUpdateLiveActivityCoordinatorruns N activities, one per bridge with active OTA.Files
Shellbee/LiveActivities/ConnectionActivityAttributes.swiftShellbee/LiveActivities/OTAUpdateActivityAttributes.swiftShellbee/LiveActivities/ConnectionLiveActivityCoordinator.swiftShellbee/LiveActivities/OTAUpdateLiveActivityCoordinator.swiftShellbee/LiveActivities/*Widget.swiftVerification
Phase
Phase 2 of multi-bridge support. Depends on #2.1.