github andrew-waters/orchard v2.4.1

3 hours ago

Orchard v2.4.1

Installation

  1. Download the DMG file below
  2. Open the DMG and drag Orchard.app to your Applications folder
  3. Launch Orchard from Applications

Changes

Added

  • The k8s Clusters tab now warns when the guest kernel cannot bootstrap a cluster, and offers to fix it. container k8s create prepares its node with iptables-nft, which needs a kernel built with nftables; the kernel Apple container recommended before 1.3.0 was not, and container system start skips the kernel download whenever a kernel already exists (apple/container#905), so an install carried forward from an earlier release keeps the old kernel and fails every cluster creation however new the CLI is. Orchard reads the default kernel the CLI records, and when it predates nftables the tab says so and offers "Install Recommended Kernel" in place of the empty state. Creation is still available from there, because the check is a version floor rather than a capability probe and a deliberately chosen custom kernel is nobody's business but yours.

Changed

  • Sheets have one Cancel button rather than two. Create Cluster, Create Machine, Edit Machine, Add Network and Add DNS Domain each had one in the header and another in the footer, and several bound the Escape key twice over. The footer keeps its Cancel, beside the action it cancels.
  • The log viewer's target picker now shares a row with the filter field instead of sitting on a row of its own above a divider, which gives every pane back a band of vertical space; a window split four ways spent four of them on it. The picker also sits flush with the pane's leading edge: a menu picker centres itself in a flexible frame, which was insetting it from everything above and below.

Fixed

  • Opening Containers or Images no longer highlights a row from the middle of the list. Both lists sort and filter in the view (by name, running first, the search field, the in-use toggle), while the selection was made from the first element of the service's array, which is the order the daemon returned. On this machine that meant Images opened on a digest-pinned Kubernetes node image nine rows down. Each of those lists now claims the first row it is actually showing.
  • A single-node Kubernetes cluster is no longer treated as though it had no control plane. Container 1.4.1 labels the one node of a default container k8s create cluster control-plane,worker, because it is both, and Orchard compared that label to control-plane exactly. The node therefore classified as a worker, the cluster read as stopped while it was running, and everything gated on a running control plane was hidden: the detail header offered Start instead of Terminal (kubectl), Write Kubeconfig, Copy Kubeconfig Path and Load Image, and every resource panel showed "Not running" over live charts. Roles are now read as the list the label can be, so a node that is both counts as the control plane.
  • A cluster that fails while its node is being prepared now explains why. The plugin runs node preparation as one set -e script whose last two commands are the iptables-nft calls, so an abort there surfaces the accumulated output of the steps that already succeeded: the error names net.ipv4.ip_forward = 1, a sysctl that worked, and never shows the command that failed (apple/container#2120, open with no fix in 1.4.1). Orchard recognises that failure and names the real cause, including the kernel responsible when it can tell.
  • "Install Recommended Kernel" no longer reports success without installing anything. An "already exists" refusal from the CLI was treated as an idempotent success, which is wrong in the one case that matters most: someone on an outdated kernel would be told the recommended one was installed and would still fail every cluster creation. The refusal is now retried with --force, which replaces only a kernel of the same name.

Checksums

  • SHA256: See the .sha256 file for verification

System Requirements

Don't miss a new orchard release

NewReleases is sending notifications on new releases.