Repository navigation
Releases
3.1.2
MidgarKit 3.1.1
A host that sets MidgarConfig.gate (a parental gate) no longer refreshes the catalog in the background from the entry card. The card shows the bundled or cached catalog, and the first network request happens after the gate is passed.
MidgarKit 3.1.0: one place to add an app
Reserved URL scheme slots (midgar-01 to midgar-30): a catalog entry can name its own scheme, hosts list all slots once, so a new app never needs a change in an existing host. The catalog worker now discovers new apps by itself from the developer's App Store page (every six hours), so publishing an app is enough for it to appear in every portal. See the README section 'Adding an app'.
MidgarKit 3.0.0: the Midgar portal
MidgarKit 3.0.0: the Midgar portal
The "More Apps" list is gone. In its place is the portal: a full-screen universe in the spirit of the original watchOS home screen. Every Midgar app is a round icon on a honeycomb you drag around, a fisheye keeps the focused app large, related apps sit closest, and the app you are in stays on the map as "you are here".
- Entry card.
MidgarEntryView(UIKit, AppKit) andMidgarEntryCard(SwiftUI) show a live miniature of the honeycomb. Put it first in Settings; tapping it opens the portal with an iris that grows out of the card. - Knows what you have. Installed apps get a tick and an OPEN button, apps for another platform say so and offer to send the link, and a progress ring around the Midgar emblem counts what you own. Needs the Midgar URL schemes in
LSApplicationQueriesSchemes(scripts/midgar_schemes.py). - Fast. Core Animation layers only, a display link that runs only while something moves. 120 Hz on ProMotion iPhones (needs
CADisableMinimumFrameDurationOnPhone), measured 8.4 ms mean frame time on an iPhone Air. - Every platform. iOS 16, iPadOS, macOS 13, tvOS 16, visionOS 1. Liquid Glass on 26.
- Localized into 22 languages, accessible with VoiceOver and Reduce Motion.
- Attribution. Product pages open with a campaign token (
<host>-<placement>) and the provider token, and anonymous counts are kept per host, storefront and placement in D1.MidgarConfig.enableTelemetryturns the counts off. - Parental gates.
MidgarConfig.gatelets a host with a gate guard the portal.
Upgrading from 2.x
Midgar.present(from:config:) still works. The title and accent config values are ignored. Replace the old "More Apps" row with MidgarEntryView().embed(in: cell.contentView, verticalInset: 8) (or MidgarEntryCard()), register the schemes, and add CADisableMinimumFrameDurationOnPhone. scripts/audit_hosts.py --app Some.app --bundle-id com.example.app checks a built app.