Skip to content

Releases: stephancill/stupid-app-cli

stupid-app v0.0.25 for Apple Silicon macOS

Choose a tag to compare

@stephancill stephancill released this 01 Nov 11:23

After an upload without --wait, release status --live and release beta-notes now find the build on App Store Connect by bundle ID, version and build number, instead of failing with "did not resolve to a build". status --live saves the found build id to the release manifest.

stupid-app v0.0.24 for Apple Silicon macOS

Choose a tag to compare

@stephancill stephancill released this 30 Oct 21:28

run --mac now installs the app under its display name (.MacInstall/<display name>.app/Wrapper/<product>.app, the shape of an App Store install), so macOS shows the app's name rather than the Swift product name in the Dock, app switcher and Force Quit. An earlier install under the product name is unregistered and removed.

stupid-app v0.0.23 for Apple Silicon macOS

Choose a tag to compare

@stephancill stephancill released this 27 Oct 23:40

signing setup now replaces a provisioning profile that doesn't authorize the bundle's entitlements, such as one made before a capability was enabled, and retires the stale profile, so adding a capability and rerunning signing setup is enough for release archive. Profile listing now returns each profile's bundle identifier.

stupid-app v0.0.22 for Apple Silicon macOS

Choose a tag to compare

@stephancill stephancill released this 27 Oct 22:26

Binary targets: stupid-app now links local XCFrameworks of static libraries (.a) with an arm64 slice for the build platform (device, or arm64 simulator for run --simulator). Remote, framework, and slice-less binary targets still fail loudly with the reason.

stupid-app v0.0.21 for Apple Silicon macOS

Choose a tag to compare

@stephancill stephancill released this 27 Oct 20:30

stupid-app 0.0.21

Fixes SwiftPM library resource bundles missing from built apps. SwiftPM names a library target's resource bundle <Package>_<Target>.bundle, and the generated Bundle.module accessor looks for exactly that name at the app root. The packer looked for <Target>.bundle and silently skipped it when absent, so Bundle.module resources never reached the .app or its extensions. The packer now copies <Package>_<Target>.bundle into the app or appex root, and fails the build with an actionable error when a target that declares resources produced no bundle.

No command, option, default, or output path changed.

Validation: swift test --filter PackerModeATests passed (4 tests, including two new regressions). The full swift test run passed apart from one known contention-sensitive DeviceKit pairing test, which passed when rerun in isolation. swift build -c release passed and the CLI reports stupid-app 0.0.21.

Assets keep the versionless names used by the README install commands.

SHA-256:

  • stupid-app-macos-arm64: b920ad93d2e476f08d6accfd993846a72bcb34873da05413268603e7cadafc37
  • stupid-app-gui-macos-arm64: 24e15a7d0364d85d34f278e379e37fba1e0f6e969cb1871bef84ea44805c09cb

🤖 Generated with Claude Code

https://claude.ai/code/session_01NMVp3fuc4j1khsMZ6cA2eh

stupid-app v0.0.20 for Apple Silicon macOS

Choose a tag to compare

@stephancill stephancill released this 05 Oct 10:38

Wireless development uses stupid-app run --network --udid <udid> on macOS and Linux. Pair the phone once, then keep it unlocked on the same network as the host. The GUI's wireless Run invokes the same command. DeviceKit manages the process-local IPv6/TCP connection throughout deployment.

This release fixes repeated macOS installs failing on their second connection. Each OpenSSL handshake, read, and write clears the worker's stale error queue before the operation. A deterministic regression reproduces that failure and verifies the fix on both hosts.

Each process supports one wireless connection and up to 16 service streams. Qualification continues for minimum supported hosts, larger IPAs, device lock, network loss, and cleanup after failure.

Validation: 317 macOS tests and 309 Linux tests passed. Optimized CLI builds passed on both hosts, and the macOS GUI built successfully. Physical developer proofs completed three consecutive wireless install and launch runs on each host using an extension-bearing development IPA. Each run also verified a separate 12 MiB AFC transfer. The macOS sequence includes the OpenSSL fix.

Post-release physical verification (2026-10-05): the installed 0.0.20 macOS binary passed three consecutive wireless runs using the existing signed IPA. Each run installed the app, verified its bundle, removed staging, and launched it. These runs used the ordinary deployment account through the internal coredevice-helper run-network entrypoint, which invokes the same NativeNetworkRunner as run --network. Independent USB inventory was empty before and after. The normal build-and-run attempt stopped during compilation because Swift 6.4 rejects a non-Sendable JavaScriptCore callback result in the test app. The complete app build workflow remains blocked by that source error.

Assets retain the versionless names used by the README install commands. THIRD_PARTY_NOTICES.md includes the bundled lwIP BSD-3-Clause license.

SHA-256:

  • stupid-app-macos-arm64: e88c3af5ab9c7436183932a2a86622ee129ab06f9cdfb021971fe739f9566f26
  • stupid-app-gui-macos-arm64: 24e15a7d0364d85d34f278e379e37fba1e0f6e969cb1871bef84ea44805c09cb

stupid-app v0.0.19 for Apple Silicon macOS

Choose a tag to compare

@stephancill stephancill released this 24 Sep 10:37

stupid-app 0.0.19

Adds an optional deviceFamily key to stupid-app.yml (iphone | ipad | universal,
default universal) that sets the UIDeviceFamily written into the synthesized Info.plist
for the app and every bundled extension. An iPhone-only app also omits the iPad orientation
key, so iPadOS and Apple silicon Mac present the phone layout instead of a resizable iPad
layout. Unsupported values are rejected loudly.

No command, option, default, or output path changed.

stupid-app v0.0.18 for Apple Silicon macOS

Choose a tag to compare

@stephancill stephancill released this 20 Sep 14:05

stupid-app 0.0.18

Makes unplugged run --network work:

  • Remote-pairing discovery uses the system DNS-SD API (DNSServiceBrowse / DNSServiceResolve
    / DNSServiceGetAddrInfo) instead of a raw multicast socket, which fails with
    EHOSTUNREACH on current macOS.
  • The resolved SRV port is byte-swapped (it is network byte order); a listener on 49152 was
    previously read as 192.
  • The tunnel utun MTU is clamped to 1500. Apple advertises a 16 KiB client MTU and macOS then
    hands the relay 16 KiB TSO super-segments, which the iOS peer stalls on; clamping makes every
    segment acceptable and lets AFC staging, installation and launch complete.
  • Fixes a DeviceKitTests compile failure that blocked the test target.

No command, option, default, or output path changed; install the same assets as before.

stupid-app v0.0.17 for Apple Silicon macOS

Choose a tag to compare

@stephancill stephancill released this 20 Sep 11:57

stupid-app 0.0.17

  • Generates and packages App Intents metadata (Metadata.appintents) for the app and each
    bundled extension on Xcode-present hosts, so Siri and the Shortcuts app can discover App
    Intents and App Shortcuts. SwiftPM does not run Apple's metadata step, so the packer now
    emits Swift const-values with the const-gather protocol list and runs
    appintentsmetadataprocessor after assembly.
  • A module that declares App Intents fails loudly on an imported-SDK host that cannot run
    Apple's processor, instead of producing a bundle the system silently cannot discover.
    A checked-in extension appIntentsMetadata directory remains authoritative.
  • Includes the --build-system native pin for the SwiftPM build invocation.

No command, option, default, or output path changed; install the same assets as before.

stupid-app v0.0.16 for Apple Silicon macOS

Choose a tag to compare

@stephancill stephancill released this 04 Sep 20:27

Fixes run --simulator launch rejection for apps with Push, Siri, Communication Notifications, and other profile-gated entitlements.

Simulator ad-hoc signing now removes team/profile-gated entitlements while preserving App Groups. Full suite: 295 tests across 51 suites.