Orchard v2.7.1
Thank you for using Orchard, and for the bug reports, ideas and pull requests that keep making it better. If it's useful to you, please consider starring Orchard on GitHub. It takes a second and helps other people find it.
Changes
Added
-
On Apple container 1.7.1, Create Cluster has a Use local images option, on by default, which lets the nodes pull from the Mac's own image store (
container cluster create --shared-image-store) (#173). An image built or pulled in Orchard then runs in the cluster without a registry or a copy. A cluster's detail says whether it can see the Mac's images; one that can't points to Recreate, since only a create can turn it on. Recreate keeps the choice. -
Containers Orchard creates follow the
[container.dns]defaults in container'sconfig.toml(nameservers, search domains, options and domain), ascontainer rundoes from container 1.7.1 (#173). A field set in Orchard wins, then[container.dns], then Orchard's chosen default domain, then container's[dns].domain. This covers the Run form, compose, sandboxes and model servers. Settings > General shows the defaults read-only next to the DNS Domain picker, and the Run form's empty domain choice names the domain it falls back to. -
On Apple container 1.7.1, Create Cluster can size the workers apart from the control plane (#174). With workers, the resource fields say they size the control plane, and Size the workers under Advanced sets the CPUs and memory each worker gets (
--workers count=<n>,cpus=<n>,memory=<size>). Left off, a worker gets container's single-node defaults: a quarter of the Mac's CPUs and memory, at least 2 CPUs and 2 GB. Recreate reads the sizes off the live workers, keeps a cluster made in a terminal with workers of several sizes as it is, and otherwise uses the sizes the cluster was created with. Below 1.7 only a plain count is sent, as before. -
On Apple container 1.7.1, the Clusters tab reads what container stored for each cluster when it was created (
container cluster ls --format json) (#174). The list and detail show the cluster's Kubernetes version, and the detail its creation date. Recreate takes the CNI and Kubernetes version from that record, so a cluster created outside Orchard recreates with its real settings, and falls back to what Orchard remembers for clusters made before 1.7. Those show a short note thatcontainer cluster lsdoesn't list them; they can still be deleted. A cluster container has a record of but whose nodes are gone is listed with no nodes, so it can be recreated or deleted. Ifcluster lsfails, the tab works from the containers as before. -
Settings > System shows the kernel against the one the installed container version recommends (#174). When an older version's kernel is still installed it shows both and offers Use Recommended Kernel. A custom kernel is shown as custom and isn't flagged.
-
Settings > System shows whether container's image snapshots and container file systems are backed up by Time Machine, and offers Leave Out of Backups when they are (#174). Both can be rebuilt by pulling the image or recreating the container, and container 1.7.1 leaves them out on new installs only. It sets the same exclusion as
tmutil addexclusion, only when you choose it, and never touches named volumes. Nothing prompts for it, so putting the folders back in your backups is respected.
Changed
- Orchard now builds against Apple container 1.7.1 (containerization 0.54.0), up from 1.6.1 (containerization 0.53.0), and Install container installs 1.7.1 (#173).
- Load Image is gone on Apple container 1.7.1, which removed
container cluster load-image(#173); Use local images replaces it. On 1.6.x it works as before. - Orchard no longer stops, force stops or deletes a single cluster node, on any container version (#173). Acting on one node breaks the cluster's Kubernetes state, and container 1.7.1's CLI refuses it too. The detail header, context menus, multi-select cards, menu bar and Cmd+K leave those actions out for a node or turn them off with a note pointing to Clusters, and Stop All and the bulk stop and remove skip nodes and leave them out of their counts. Logs, terminals, stats and export still work on a node, and a cluster is still stopped or deleted from Clusters, including one made before container 1.6.1.
- Orchard now uses compose 0.9.0, and takes the rules for a failed
post_startorpre_stophook from it rather than keeping its own copy (#130): whether the run stops or carries on, what a failure reports and how much of a hook's output is kept. Hooks behave and read exactly as before. The Compose tab offers the matching 0.9.0 plugin update. - The foot of the Compose tab shows the installed
container composeversion on its own, and links to its release on GitHub. A development build shows as the release it came after, marked (dev), and links to the commit it was built from.
Fixed
- Orchard no longer calls any
vmlinux-*kernel the recommended one (#174). Someone still on the kernel container 1.6.1 installed was told they had the recommended kernel on 1.7.1. - In full screen the list and detail headers (search, filters, sort and the add buttons) are no longer hidden behind the toolbar (#167). They sit just below it while the window is full screen, and the windowed layout is unchanged.
- Containers in a Compose project can reach each other by name (#130). Compose containers were created with a bare hostname, which container's DNS never matches, so a service could not find another as
<container>.<domain>. They are now created under Orchard's default DNS domain (Settings > General > DNS Domain, else container's own default), as containers from the Run form are, with the same nameservers as before. The foot of the Compose tab shows it as Default domain, which opens Settings to change it, and says whencontainer composein a terminal would use another, since that reads only container's default fromconfig.toml. Containers already running pick it up when they are next recreated.
Security
- Orchard now builds with swift-nio 2.105.0, swift-nio-extras 1.35.2 and swift-nio-http2 1.46.0, up from 2.97.1, 1.33.0 and 1.42.0, to pick up the SwiftNIO security fixes for unbounded HTTP/1 headers, a
ByteBufferoverflow, CRLF injection in request URIs, a decompression ratio bypass and HTTP/2 request smuggling (#170). These libraries come in through Apple container and its dependencies; nothing Orchard calls changed.
Installation
brew install orchard
Already installed with Homebrew? Update with:
brew upgrade orchard
Download
- Download Orchard-2.7.1.dmg
- Open it and drag Orchard.app to your Applications folder
- Launch Orchard from Applications
Orchard also updates itself: when a new release is out, it offers the update in the app.
Checksums
- SHA256: Orchard-2.7.1.dmg.sha256
System Requirements
- macOS 26 (Tahoe)
- Apple container 1.7.1