github henrywang/Berthly v1.7.2
Berthly 1.7.2

one hour ago

What's Changed

This release removes two rarely used System page features and reorganizes the code behind the daemon connection. There are no new features, and nothing else you use should change.

Removed

  • Set Kernel. Berthly already installs the default kernel the first time it starts the daemon, so the sheet only mattered if you wanted a different kernel. To switch kernels, run container system kernel set. The System page still shows the current kernel (#255).
  • Local DNS domains. Registering a domain under /etc/resolver is a one-time setup step: run sudo container system dns create <domain> instead. Domains you already created keep working. This was the only feature where Berthly ran the container CLI as root, so that code and its safety checks are gone too (#256). Container DNS settings are unchanged: the Run sheet's DNS fields, network DNS aliases, and the container.dns.* defaults.

PARITY.md lists both under "Deliberate gaps", and the README no longer claims Berthly covers the whole CLI.

Under the hood

  • LiveContainerService.swift, the 3,500-line file that most bug fixes landed in, is split into twelve files by area (build, run, machines, images, registries and so on). Nothing behaves differently, and all 30 real-daemon end-to-end tests pass on the split (#259).
  • If a service method is ever left unimplemented, debug builds and tests now stop with an assertion instead of silently doing nothing, and a test checks that they do (#257, #260).
  • Removed a version check on running-container export that could no longer fail, since Berthly already requires container 1.7.1 (#254), and a macOS 14 code path that can't run on macOS 26 (#252).
  • The comment on PushStallGuard, the timeout that stops a push from hanging in a registry sign-in loop, now matches containerization 0.54.0. Pushes without credentials to ghcr.io, Docker Hub and Quay now fail within seconds, but the guard stays because the upstream retry loop still has no limit (#253, #258).

Testing

This release shipped only after its gate run passed on the release commit:

  • 608 unit tests passed — 87% line coverage of the pure
    logic layer
    (Berthly/Core models, mapping, and planning; 57%
    including the daemon/terminal I/O plumbing, which the end-to-end suite
    exercises against a real daemon instead).
  • 84 UI tests (deterministic mock-daemon XCUITest) and
    30 real-daemon end-to-end journeys guard the UI wiring and the
    daemon integration. SwiftUI view bodies are covered by these suites, not
    unit tests, by design.

Full Changelog: v1.7.1...v1.7.2

Don't miss a new Berthly release

NewReleases is sending notifications on new releases.