Skip to content

v0.61.0

Choose a tag to compare

@steipete steipete released this 18 Sep 08:37
· 373 commits to main since this release
Immutable release. Only release title and notes can be modified.
v0.61.0
e4d7cc6

0.61.0 - 2026-09-17

Highlights

  • Complete installations now include a native runtime pack. Matching Linux, macOS, and Windows companions handle supported filesystem operations, and the Linux companions let independent Linux and WSL2 SSH commands run without Bash.
  • Safer file copies and more accurate test results. Archive copies validate before replacing the destination and record recovery decisions durably. JUnit collection preserves report bytes and counts paths to the same file only once.
  • Inspect macOS toolchains before running tests. Preflight reports the platform and effective developer-tool selection, with opt-in Swift, Xcode, Homebrew, and Bash version probes.
  • More reliable lease reuse and sync. Preserve recorded idle policy, refresh workspace ownership when replacing leases, and avoid retaining stale nested caches or losing track of previously synced files.

Upgrade notes

  • Keep the complete crabbox-runtime/ directory beside the real CLI executable when installing a release archive; Homebrew installs the complete distribution. Every pack contains amd64 and arm64 companions for Linux, macOS, and Windows and is bound to its matching controller. Reinstall the matching archive or Homebrew package if an official installation's pack is missing or incomplete; do not mix packs between builds. go install remains CLI-only: a source-built CLI can compile the filesystem helper locally with Go 1.26 or newer, but retains shell-backed command supervision. PR 1556, PR 2300.
  • Running an independent argv command without Bash requires the complete runtime pack and a Linux or WSL2 SSH target. Existing Bash login behavior is retained when Bash is available; explicit --shell and Bash scripts still require it. Newly generated Linux readiness scripts use POSIX sh, but existing images and readiness scripts are not upgraded in place, and initial provisioning retains its own prerequisites. The new bash preflight probe is opt-in through --preflight --preflight-tools default,bash; missing Bash is diagnostic, not a request to install it. PR 2300, PR 2296.
  • Interrupted archive copies from older releases now stop when they encounter .crabbox-cp-transaction or .crabbox-cp-backup sidecars. Inspect the destination and backup, then use cp --recover keep-destination or cp --recover restore-backup for that exact destination; recovery retains the old marker and unselected data and prints their location. New copies use a private persistent journal outside the transferred tree; keep it until recovery completes. Archive fallback remains limited to POSIX operator hosts and native Linux/macOS SSH targets; native Windows copy still needs a provider-native backend. SSH copy from Windows operators or to WSL2 targets still requires rsync 3.4.3 or newer on both ends. PR 1556.
  • Managed SSH JUnit collection now deduplicates by opened-file identity across explicit and automatic paths, so aliases no longer inflate totals; separate files with identical contents remain separate reports. Explicit collection accepts up to 4,096 paths, 64 MiB per report, and 256 MiB total. Automatic discovery keeps its 50-report, 16 MiB-per-report, and 64 MiB-total limits. Provider-native result APIs retain their existing contracts. PR 1556.

Changes

  • Use one native filesystem engine for POSIX archive-copy fallback and managed SSH JUnit collection on POSIX and native Windows targets. Validate complete archives before publication, preserve report bytes, and deduplicate aliases by opened-file identity. Complete installations include all six matching filesystem companions, without requiring Go on the target. PR 1556. Thanks @steipete.
  • Record archive-copy publication and cleanup in destination-bound durable journals, and add explicit cp --recover keep-destination|restore-backup recovery for legacy sidecars. Preserve unselected destination and backup data instead of inferring an outcome from historical markers. PR 1556.
  • Bundle Linux command-supervision companions with complete CLI installations, discover and validate the matching runtime pack automatically, and support independent Linux/WSL2 SSH commands when Bash is absent. Add opt-in Bash version and missing-state preflight reporting on Linux, macOS, and WSL2, and generate managed-runner readiness checks with POSIX sh while retaining tool, bootstrap-marker, workroot, and desktop checks. PR 2300, PR 2296. Thanks @coygeek.
  • Add macos_platform to default macOS preflight, reporting OS version/build, architecture, and effective developer-tool selection. Offer opt-in swift, xcodebuild, and brew probes with bounded execution and confirmed cleanup before the workload continues. PR 2281. Thanks @coygeek.
  • Keep running Islo sandboxes active through a provider-owned heartbeat capability, using a bounded no-op after observing the live state and reporting the provider's current idle policy. Paused and terminal sandboxes are not resumed by heartbeat, --idle-timeout is rejected, and absolute lifetime is not extended. PR 1707. Thanks @zozo123.

Fixes

  • Finish the old workspace owner before replacing an unavailable lease, acquire fresh ownership before retrying sync, and avoid repeating completed cleanup when replacement acquisition fails. PR 2293.
  • Preserve ownership of previously synced files when attaching local Git metadata to a raw workspace, so later syncs can remove obsolete files without importing stale readiness markers. Keep pruning on the guarded manifest path, reject directory symlinks before deletion, and preserve Git-overlay caches only in individually verified directories so root-only ignore rules do not retain stale nested caches. PR 2285, PR 2291.
  • Preserve recorded direct-lease idle timeouts across provider preparation, reuse, and repository reclaim. Honor explicit run and heartbeat replacements while keeping claim labels and coordinator registration consistent and preserving managed-coordinator policy. PR 2288.
  • Keep Upstash Box status age and runtime metadata tied to native observations, preserve recorded local lease policy across reuse, and omit unknown policy instead of inventing current defaults or expiry. PR 2283.
  • Keep concurrent AWS heartbeats responsive when SSH sources are unchanged, while retaining durable ingress repair, alarm arming, and normal access setup for changed sources. PR 2290.
  • Preserve local GCP lease claims during cleanup dry-runs when an instance disappears, and share the cleanup mutation boundary with Azure recovery. PR 2297.
  • Report discovered Parallels lease addresses consistently and surface IP-discovery failures when connecting, while preserving VM identity for best-effort status and cleanup. PR 2301. Thanks @saariuslystoned.
  • Preserve terminal heredocs and significant trailing whitespace in Blacksmith Testbox shell commands while retaining command output and exit status. PR 2295. Thanks @shakkernerd.
  • Report the effective Linode machine type in doctor diagnostics, honoring configured native types and explicit generic overrides. PR 2298.
  • Bound retained POSIX preflight version output before extracting its first line, while draining excess output so verbose tools finish normally. PR 2282.
  • Preserve caller cancellation consistently in Crownest status waits while sharing request deadlines and polling with other providers. PR 2276.
  • Reject overflowing day durations before checkpoint pruning or benchmark filtering, preventing very large retention ages from wrapping into short deletion windows or incorrect report cutoffs. PR 2280.

Maintenance

  • Consolidate provider-owned defaults and native machine-type projections behind adapters while preserving configured values, explicit overrides, and existing selection behavior. PR 2307, PR 2308, PR 2309, PR 2311, PR 2313, PR 2314, PR 2315, PR 2316.
  • Move provider-specific diagnostic connections and native display values into their adapters, and share Upstash Box/SmolVM configuration displays and Runpod/SmolVM JSON request construction while retaining ordinary loaded-config output and provider-owned transport policy. PR 2312, PR 2317, PR 2318.
  • Consolidate provider configuration bindings and value ownership for Nomad, Hostinger, Tenki, Daytona, Proxmox, Sprites, Unikraft Cloud, XCP-ng, Superserve, and MXC, while preserving input precedence, explicit values, validation, and saved configuration. PR 2320, PR 2321, PR 2322, PR 2323, PR 2324, PR 2325.
  • Share bounded acquisition polling and cancellation-aware retry delays across providers while retaining provider-owned readiness rules, request budgets, and diagnostics. PR 2278, PR 2279.
  • Keep CodeSandbox runtime fallback defaults aligned with declared configuration while preserving the fixed SDK workspace boundary and operation-specific budgets. PR 1991. Thanks @steipete.
  • Make first runs easier with a task-first README, tested Docker and Node examples, warm-reuse guidance, and responsive desktop/mobile banners. PR 2275. Thanks @zozo123.
  • Cancel superseded pull-request CI runs while preserving independent main-branch and manual runs. PR 2286.