Skip to content

Releases

3.1.2

Choose a tag to compare

@guitaripod guitaripod released this 13 Oct 20:30

Entry card polish: the title and subtitle are one centred block and the stray chevron is gone.

MidgarKit 3.1.1

Choose a tag to compare

@guitaripod guitaripod released this 13 Oct 19:30

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

Choose a tag to compare

@guitaripod guitaripod released this 13 Oct 19:21

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

Choose a tag to compare

@guitaripod guitaripod released this 13 Oct 18:04

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) and MidgarEntryCard (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.enableTelemetry turns the counts off.
  • Parental gates. MidgarConfig.gate lets 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.