Skip to content

0.5.0

Latest

Choose a tag to compare

@Luminoid Luminoid released this 27 Jul 09:07
· 5 commits to main since this release

[0.5.0] - 2026-07-26

A bug-fix release. Every generated project type now builds, lints, and tests clean on the first run, without hand-editing the output first.

Fixed

Generated apps

  • A CloudKit Sharing app crashed on launch under its own make test. CloudKit sync was forced on at first launch, which traps in an unsigned build (the generated make test builds without code signing), so the test bundle never connected. Sync is now opt-in behind a preference that defaults off, and the privacy manifest declares the matching reason.
  • A CloudKit app without a widget was generated with no entitlements at all. Entitlements were tied to the widget feature, so CloudKit apps shipped without an iCloud container, the CloudKit service, or a push environment. They now follow the CloudKit features too.
  • Accepting a share on a Core Data app imported nothing. The invitation was accepted at the CloudKit layer but never brought into the app's shared store, so shared records never showed up locally. SwiftData behavior is unchanged.
  • A Core Data app could not run make test: the test target failed to build because the generated helpers could not see the app's own types. Core Data scaffolds also start with a real round-trip test now instead of an empty suite next to unused helpers.
  • A widget could not read the shared App Group identifier, forcing adopters to hardcode it on the widget side.
  • Tab bar and Mac menu titles stayed English in localized apps, while navigation bars localized correctly.
  • A fresh Mac Catalyst app failed its own make check, because generated platform-conditional code did not match the formatter config generated beside it.
  • A fresh multi-locale app failed its own make check, because the string audit treated the untranslated entries it had just created as hard failures. Untranslated strings are now non-fatal warnings; missing locales, placeholder mismatches, and unlocalizable keys still fail.
  • Post-generation next steps pointed Core Data adopters at a file that path never creates. They now point at the data model.

Generated packages

  • A package with a local-path dependency produced a Package.swift that would not compile, which made local paths, the usual way to develop against a sibling framework, unusable.
  • make build and make test failed on a fresh multi-target package, because the generated Makefile and docs named a scheme Xcode never creates for that target layout.
  • The generated guide claimed swift build and swift test work on packages with UI-framework targets. They fail on a Mac host. The guide now names the targets that can be built that way and shows the per-target form to use for the rest.

CLI

  • new app --dry-run previewed a different file list than the real run wrote. The preview now comes from the same plan the generator writes from, and is verified against a real generation.
  • The local-path form of --external-packages was documented incorrectly (Name=path:../Dir rather than Name=../Dir), and following the docs silently set the dependency path to a literal, unusable string. Wiring a multi-product local package is now documented as well.
  • --features help listed fewer than half the available features. It now lists them all and points at monolith list features for the annotated version.

Tests

  • 794 → 828 tests, 71 → 73 suites, zero regressions. New coverage spans CloudKit entitlement and dual-store gating, Core Data test helpers and the persistence demo, share acceptance, App Group wiring into the widget, localized tab and menu titles, the localization audit's warning/failure split, dry-run parity with real generation, local-path package emission, umbrella-scheme selection, and a lint check that runs the formatter against a generated app.