Concurrent build_dependencies.sh runs on the same CI runner get rate
limited by GitHub, so clones and fetches fail intermittently. Retry each
network operation with exponential backoff, jittered by PID so parallel
builds do not retry in lockstep.
The tree:0 filtered clones lazily fetch objects during checkout and
submodule update, so those hit the network too and are retried as well.
Add -f to curl so that a rate limited response is treated as a failure
instead of being saved as the tarball.
Assisted-by: Claude:claude-opus-5
The macOS build embeds D3DMetal.framework when the sysroot ships it, but
the framework is distributed separately and cannot be committed. When
D3DM_DIST_DMG_URL is set, fetch the distribution DMG and stage the
framework into the universal sysroot before it is packed into the
artifact and saved to the cache, so downstream builds pick it up. Builds
without the variable set are unaffected.
We cannot ship a com.apple.* bundle, but D3DMetal loads its own
default.metallib through [NSBundle bundleWithIdentifier:@"com.apple.D3DMetal"]
using that identifier as a literal compiled into the framework binary, so
the rebrand rewrites both the Info.plist and the binary. Rewriting only one
makes the lookup return nil and every D3DMetal process aborts in
-[MTLDevice newLibraryWithFile:nil error:].
Staging lives in scripts/install_d3dmetal.sh so it can also be run by hand.
Assisted-by: Claude:claude-opus-5
- virglrenderer uses shmem for texture import/export so we need App Group for both iOS and macOS
- Add QEMURenderServer for new process model rendering (both Venus and Neptune)
- macOS: add DXMT and D3DMetal-Native backends
- We require 8G hostmem for Neptune but iOS currently fails > 256M
The USB toolbar item used a bundled PNG (Toolbar USB) whose stroke
weight and overall size visibly differed from the surrounding SF
Symbols (cursorarrow.rays, opticaldisc, folder.badge.person.crop,
rectangle.on.rectangle, etc.). The mismatch is especially noticeable
in the floating capsule toolbar on macOS 26 (Tahoe).
Replace the icon with the system SF Symbol cable.connector when
available (iOS 15 / macOS 12 / visionOS 1, the SF Symbols 3 release
where cable.connector was introduced), and keep the existing PNG as
a fallback for older releases.
Assisted-by: Claude:claude-opus-4-7
Add agent-neutral workflows that walk an AI coding tool through reviewing a
change against the contribution guidelines and then opening or updating a pull
request to utmapp/UTM with the required AI attribution and human-testing
attestation.
The canonical instructions live in .agents/skills/ (auto-discovered by Codex,
Cursor, Amp, Zed, Copilot, Windsurf, OpenCode, Antigravity, and others), with
thin slash-command shims for Claude Code (.claude/commands/) and OpenCode
(.opencode/command/). AGENTS.md is trimmed to the essentials and points at the
workflows, and CONTRIBUTING.md now directs contributors to use them.
Assisted-by: Claude:claude-opus-4-8
Clear progressObserver and installProgress in the error path of
installVM() to break the retain cycle caused by the KVO observation
closure capturing self strongly.
Replace unsafe force unwraps with compactMap and direct value iteration
to prevent crashes during concurrent registry access.
- Line 41: Use compactMap instead of entries[key]!
- Line 126: Iterate entries.values instead of force-unwrapping by key
* Rename suse.png to opensuse.png
It is the opensuse logo.
* Add files via upload
Added SUSE Logo for SUSE VMs created by UTM.
* Rename SUSE_Logo-vert_L_Green-pos_sRGB-300x275-6b04bcf.png to SUSE.png
Changed logo name.
* Update VMConfigInfoView.swift
added opensuse for the changed name of the opensuse icon.
* Update VMConfigInfoView.swift
Changed suse into uppercase, because the logo is also named in uppercase.
* Changed logo size to 128x128 px