All notable changes to Labby are documented here.
- Xcode project setup with XcodeGen (
project.yml) - SwiftUI app lifecycle with SwiftData integration
- iOS 17.0 minimum deployment target
- SwiftSoup dependency for HTML parsing
Servicemodel: name, URL, icon, category, health status, manual flagHomepageConnectionmodel: base URL, name, sync settingsBrowserTabobservable class with WKWebView referenceTabManagersingleton for managing open tabs
HomepageClientfetches and parses Homepage HTML- Extracts services from Next.js
__NEXT_DATA__JSON payload - Parses
props.pageProps.fallback["/api/services"]structure - Resolves icon URLs (CDN, relative paths, SI/MDI icons)
SyncManagercoordinates sync with SwiftData persistence
- Grid layout with category grouping
ServiceCardwith icon, name, health indicator- Services without URLs show "Widget Only" and are disabled
- Pull-to-refresh triggers sync
- Search/filter functionality
- WKWebView-based embedded browser
- Persistent cookies via
WKWebsiteDataStore.default() - Tab bar with loading indicators
- All tabs kept in memory (ZStack with opacity toggle)
- Back/forward navigation
- Reload button
- URL display in toolbar
- Add Homepage connection with URL validation
- Test connection before saving
- Add manual services with icon picker
- Clear all data option
- Environment-based tab switching
- Tapping service card opens browser and switches to Browser tab
- Tab persistence when navigating away
- App Transport Security configured for local network access
- Debug logging in HomepageClient and SyncManager (remove for production)