Changelog
All notable changes to Hyperbasis will be documented here.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[1.1.0] - 2024-XX-XX
Added
- •Versioning - Event-based history tracking for anchors
- •
HBAnchorEvent- Immutable record of anchor changes - •
HBTimeline- Navigate through space history - •
HBDiff- Compare two points in time
- •
- •New HBStorage methods:
- •
timeline(spaceId:)- Get full timeline for a space - •
anchorsAt(spaceId:date:)- Reconstruct state at any date - •
diff(spaceId:from:to:)- Generate change diff - •
history(anchorId:)- Get event history for anchor - •
rollback(anchorId:toVersion:)- Restore previous version
- •
- •New errors:
- •
versionNotFound- Requested version doesn't exist - •
reconstructionFailed- Could not rebuild anchor from events - •
eventLogCorrupted- Event log is malformed
- •
Changed
- •
save(_ anchor:)now records events automatically - •Existing anchors are migrated on first save (seeded with
createdevent)
Migration
No action required. Existing anchors are automatically migrated when first saved.
[1.0.0] - 2024-XX-XX
Added
- •HBSpace - Container for ARWorldMap data with serialization/deserialization
- •HBAnchor - Placed objects with 3D transforms and flexible metadata
- •HBStorage - Main persistence API for spaces and anchors
- •AnyCodableValue - Type-erased Codable enum for metadata values
- •Local storage - File-based persistence in app's Documents directory
- •Cloud sync - Optional Supabase integration for cross-device sync
- •Compression - ~40% size reduction for world map data using zlib
- •Soft delete - Anchors can be deleted and later restored or purged
Features
- •Column-major transform storage matching
simd_float4x4memory layout - •Automatic compression/decompression of world map data
- •Offline-first architecture with pending operation queue
- •Configurable sync strategies (manual or on-save)
- •Typed metadata accessors (string, int, bool, etc.)
Requirements
- •iOS 17.0+
- •Swift 5.9+
- •Xcode 15.0+
- •ARKit-compatible device
Upcoming
Features planned for future releases:
[1.2.0] - Planned
- •Batch anchor operations for improved performance
- •Anchor filtering by metadata
- •Change notifications via Combine publishers
- •Event compaction (reduce old event storage)
[1.3.0] - Planned
- •Custom conflict resolution strategies
- •Partial/selective sync
- •Additional cloud backend support
Migration Notes
Migrating to 1.0.0
If you're coming from a custom ARWorldMap persistence implementation:
- •Replace NSKeyedArchiver calls with
HBSpace(worldMap:) - •Replace transform serialization with
HBAnchor- transforms are automatically flattened - •Replace FileManager operations with
HBStoragesave/load methods - •Convert metadata to
[String: AnyCodableValue]format
// Before (custom implementation)
let data = try NSKeyedArchiver.archivedData(withRootObject: worldMap, requiringSecureCoding: true)
try data.write(to: fileURL)
// After (Hyperbasis)
let space = try HBSpace(worldMap: worldMap)
try await storage.save(space)Version Support
| Version | iOS | Swift | Status |
|---|---|---|---|
| 1.1.x | 17.0+ | 5.9+ | Current |
| 1.0.x | 17.0+ | 5.9+ | Supported |
Reporting Issues
Found a bug or have a feature request?
- •GitHub Issues: github.com/hyperbasis/hyperbasis-sdk
When reporting issues, please include:
- •Hyperbasis version
- •iOS version
- •Device model
- •Steps to reproduce
- •Error messages (if any)