Skip to main content
Looking for the latest iOS SDK version? Go to SDK download

0.1.12 — 2026-08-27

Logs now carry a level.
BreakingonDebugLog and onLog closures now take two arguments. See the migration guide.
Before, only the text came through, so the receiver had to guess the level from the emoji at the front. Reword a line and it silently changed level — and in practice “this floor has no zones,” a perfectly normal state, was showing up as an error.
It’s Comparable, so you can filter with level >= .warn. All 84 messages were classified — no zones on a floor is info, while calling things out of order (missing session ID, no floor set) is error.

0.1.11 — 2026-08-27

Clearing zones now stops the judging engine too. Your app can set the SDK’s language.
  • An empty zone list reaches the engine. Empty lists were being filtered out internally, so clearing every zone in the console left the engine still holding the deleted ones. Removed rules kept firing where the zone no longer appeared on the map, and switching to a floor with no zones judged against the previous floor’s.
  • setLanguage(_:) — for apps that have their own language setting.
  • The “judging is off” warning now says which of the two it is. One line covered both “no zones injected” and “engine failed to start,” and they need completely different responses — the first means drawing a zone in the console, the second is a defect.

0.1.10 — 2026-08-27

Positioning resumes after being suspended. Once suspended, coordinates froze in place and never came back. NearbyInteraction does not resume on its own — sessionSuspensionEnded arriving is the signal to call run again, and the SDK wasn’t doing it. There was no error and the state still read “positioning,” so on screen only the dot stopped moving. A suspension happens from something as small as the app going to the background and back, which made it look intermittent.

0.1.9 — 2026-08-26

Devices that can’t position can still show floor plans and zones.
Breakinginitialize no longer fails on an unsupported device.
The device gate sat in the first step of initialize, so on a phone without a UWB chip no session was created at all. That closed buildings, floors, zones and locators, leaving nothing to draw. Not being able to position and not being able to show a map are different problems that had been tied together.
If you read a successful initialize as “this device can position,” ask OneS1ght.deviceAvailability instead, or catch the throw from begin(). This release also fixed live change events never arriving. SSE frames end with a blank line, and the API used for reading didn’t return those blank lines, so no frame was ever completed. The resync sent right after connecting bypasses the parser, so the connection looked fine and the first refresh worked — the only symptom was “I have to hit refresh.” Fetching the floor list also downloaded each floor’s full plan (888KB per floor); fixed.

0.1.8 — 2026-08-25

Live updates connect before positioning starts. onConfigChanged was wired only for the positioning session, so while you were just looking at a floor plan, console changes never reached the app. It now connects as soon as a floor is set, and stays connected when positioning stops.

0.1.7 — 2026-08-24

Fixed: picking a building showed no floors. The GeoSpace building tree sends floor IDs as numbers ("floorId": 14) while the decoder declared them as strings, so the whole JSON decode failed. The caller swallowed the error, so the only symptom was an empty floor list.

0.1.6 — 2026-08-21

No code changes. Fixed an integration sample that didn’t compile. The right side of ?? is an autoclosure and can’t hold try/await.

0.1.5 — 2026-08-21

No code changes. The repository moved.
Change the package: identifier too. SPM derives it from the repository name, so fixing only the URL breaks the build with unknown package 'onesight-mobile-swift'. In an Xcode project, remove the package dependency and add it again at the new address.

0.1.4 and earlier — 2026-08-20 ~ 08-21

The first release and the fixes right after it. Full history in the CHANGELOG.
0.1.3 and earlier fail to initialize against the current server. Use 0.1.12 or later.