Releases: cocoonstack/cocoon-macos
Releases · cocoonstack/cocoon-macos
Release list
v0.1.4
Changelog
- 5984a92 chore: add MIT LICENSE
- a5d25d0 chore: bump cocoon to master (d9fa4df) for the range helpers
- 0535351 ci: boot Recovery by mouse double-click in stage_setup (arrow keys dead in picker)
- 2f1418b ci: capture base only after install reaches Setup Assistant (no more half-installed base)
- 7ceb4a7 ci: clarify slim SSH budget is insurance against a half-installed base
- c58d54f ci: pull base images via resumable aria2 + verify completeness
- 5ef9948 ci: reach Recovery for setup via a stable picker (Timeout=0), not doomed nav
- a7121e7 ci: recognize the installer welcome pane by its title (Continue)
- 51743d5 ci: retry Terminal+provision while Recovery finishes booting
- bf515c7 ci: robust Recovery nav + provision-success gate in stage_setup
- 75f8ed5 ci: slim SSH budget ~90min for Tahoe 26's long first-boot finalization
- 7189932 ci: wait for qemu-nbd to release OpenCore.qcow2 before launching QEMU
- 5fe029b docs(test): audit follow-up comment fixes
- 08ea0e8 feat(image): pull OCI artifacts natively via oras-go
- 539f526 feat(image): pull OCI blobs over parallel Range connections
- 7104b09 feat(vm): data disks via --data-disk, aligned with cocoon
- 32b1285 feat(vm): decide VNC per start, off by default
- 90703c3 feat(vm): reach a --net cni VM's VNC over a host-side proxy
- 59e4396 fix(image): guard parallel Range fetch; test the chunk split
- 8080bf3 fix(image): retry oras-go pull on transient registry stream drops
- fc2f7f6 fix(vm): apply the cni VNC password pre-check to clone too
- d1a3a04 fix(vm): boot OpenCore with no picker to avoid a headless stall
- 79f37f5 fix(vm): fail launch on password-set failure; validate cni VNC before scaffolding
- bb04aa1 fix(vm): fail loud on cni VNC gaps; keep persisted net on restart failure
- 563f777 fix(vm): start auto data-disk names at data1, matching cocoon
- 5a6a694 fix(vm): stop leaking the VNC password; unify the CNI-VNC password gate
- 771af6e fix+refactor: apply adversarially-verified audit findings across the CLI (#3)
- 522c66b fix: restore load-bearing macOS CPU flags (first-boot spin regression)
- 0691c43 refactor(cmd): rename vm/helper.go to utils.go per file-naming standard
- b950d43 refactor(image): pick largest layer via slices.MaxFunc
- cef1f05 refactor(image): use cocoon utils.SplitRanges/CopyRangeBody
- 6aedcd0 refactor(vm): reuse TerminateProcess for the vnc proxy; document launch-scoped --vnc
- f9adf66 refactor: adopt cocoon v0.4.5 (cliutil + narrowed store constructors)
- c96fe70 refactor: quality pass (/code + simplify + comment tightening)
v0.1.2
Changelog
- 402e364 feat(vm): add --force to vm rm (shared graceFromFlags)
- 4f3d733 feat: align vm/image list output with cocoon (table by default, -o json)
- dacf35c feat: boot macOS on Intel and AMD via the unified LongQT OpenCore
- 982e486 feat: provision firmware via scripts/doctor.sh, drop the firmware subcommand
- a3d5bfb fix(vm): make vm.json writes atomic and lock concurrent lifecycle ops
- a000528 refactor: lift internal/{cli,home} to top-level packages
- 7116f2b refactor: reuse cocoon helpers instead of hand-rolling
- eb907ac refactor: tighten comments and apply small simplifications
- 35188f5 refactor: tighten comments and small simplifications across all packages
v0.1.1
v0.1.0
Changelog
- b19e949 M1: real build-qemu-macos.sh — boot Tahoe headless via OSX-KVM + screenshots
- d9238fa M2 recon: select installer at OpenCore picker, capture Recovery boot sequence
- 6f14bce M2/M3: capture installed macOS qcow2 + oras push to ghcr (tahoe:26-base) after install
- 28ab459 M2: OCR-driven install click-through (tesseract); robust text-targeted clicks for Reinstall flow
- a745d22 M2: QMP absolute mouse-click driver (qmp-input.py); open Disk Utility via click
- e4cc180 M2: Return for blue-default intro Continue; OCR for gray Agree buttons (cascade fix)
- f124fb8 M2: agree license+confirm (685,650 / 690,405), reach disk-select, try start install
- ccac288 M2: boot picker via OpenCanopy mouse double-click (HMP sendkey unreliable)
- fc62091 M2: clean disk-select Continue (drop menu-bar misclick); start install + 30min observe
- d8396fa M2: confirm sheet via keyboard Tab+Space (+ pixel 676 backup)
- 83614fd M2: confirm-sheet Agree via PIL pixel (705,399); reach disk-select + start install
- a136f2f M2: extend install monitor to 75min — let install complete + reach Setup Assistant
- 97b653a M2: identify 80G target disk in Disk Utility sidebar (click each, screenshot capacity)
- 43c24b0 M2: jiggle mouse during install monitor to defeat macOS display-sleep (reveal Setup Assistant)
- cb9ccff M2: license Agree at PIL-located (685,650); try Return for confirm sheet
- ba2ff58 M2: open Disk Utility via keyboard nav (recon for erase choreography)
- 169d191 M2: open Erase sheet on disk0 (85.9GB target) — recon format/button layout
- e8d6d4b M2: open Terminal via Shift-Cmd-T, erase disk0 as APFS via diskutil (position-independent)
- 213a0c8 M2: patch OpenCore RequestBootVarRouting=true+Timeout so install reboots follow bless (fix recovery-reboot loop)
- f645794 M2: preprocess OCR (2x upscale + autocontrast, dual psm) for light-bg buttons; PIL dep
- e75c88b M2: probe menu bar to locate Utilities->Terminal (deterministic; pivot erase to diskutil)
- a9e9cbc M2: qmp-input type op (string->keystrokes); open Recovery Terminal + test diskutil
- c238db7 M2: recon Agree/confirm/disk-select coords (stop before 15GB download)
- 1180b0b M2: recon Reinstall macOS Tahoe GUI flow (erase via Terminal, then start Reinstall)
- f500750 M2: robust picker boot — 1x right + repeated ret (HMP sendkey; mouse has no pointer in OpenCanopy)
- bdc8f49 M2b: Migration screen = 'Set up as new' radio (425,572) + Continue (it has radios, no Not Now)
- e1599e3 M2b: Setup Assistant click-through best-effort (region->languages->privacy->skip->terms)
- cc9b03d M2b: Setup Assistant via mouse pixel-click footer Continue (955,661) — OCR/keys dead at SA
- 07aa1e2 M2b: add verify stage (boot turnkey tahoe:26, confirm login + SSH) + sshpass; generalize pull_image
- dbdb597 M2b: capture+push turnkey tahoe:26 after recovery-provision (SA-skipped, user cocoon, first-boot SSH)
- 6f13115 M2b: don't jiggle during OpenCore picker (input cancels Timeout auto-boot); jiggle only after macOS boots
- ac04be9 M2b: pivot to Recovery-Terminal provisioning — provision-macos.sh (skip SA + create user + first-boot SSH); setup stage boots recovery + curl|bash
- ef5dafe M2b: robust boot_macintosh — auto-boot else sendkey ret-retry until frame leaves picker (size<30KB)
- e9be5af M2b: robust first-boot SSH enable (launchctl enable+bootstrap+kickstart, root:wheel ownership, logging) + dual-path .AppleSetupDone
- 2f7086d M2b: route Setup Assistant by OCR'd title (dark text) -> Continue/Not Now footer buttons
- 337011c M2b: setup stage — pull tahoe:26-base + fast-boot to Setup Assistant (recon); conditional InstallMedia
- 08aa3a2 M2b: verify auto-boots installed macOS via OpenCore HideAuxiliary+Timeout (sendkey picker-boot was flaky)
- 694399e M2b: verify — longer boot + SSH waits (first-boot host-key gen + Remote Login enable take time)
- 6d2c260 M2b: wake display before OCR + wait-with-jiggle for Setup Assistant (NOTFOUNDs were black-screen)
- b2fa04a M3: CLI vm create/run/start/stop/list/inspect/rm — clone golden (qcow2 overlay) + launch QEMU; standalone (drop cocoon dep + CI checkout)
- cf43e44 M3: add cli stage (cocoon-macos vm run clones+boots tahoe:26 + SSH test) + setup-go in workflow
- 486cb65 M3: cli stage uses robust boot_macintosh against the CLI-launched VM's monitor socket
- 0e596d8 M3: make --state-dir a persistent flag on vm (list/stop/inspect/rm need it too, not just create/run)
- 5e26cad M4: lint green — drop gosec (noise for a VM-launcher CLI: exec + variable file paths) + use max() builtin
- 81a0412 build: add Makefile, goreleaser, version package, release workflow
- d3bed8e build: enable gosec and tighten state file/dir permissions
- 0d5b91f ci(image): parameterize the build by macOS version — add Sequoia 15 (same Action->ghcr)
- b8e326f ci(image): screendump the boot timeline during wait_ssh (diagnose SSH-never-came-up)
- dd49aa1 ci: drop oras from apt (not a package); install oras release binary only for image stage
- 62e8296 ci: image workflow is image-only; align Go test CI with cocoonv2
- 6ef9a11 feat(image): SA-independent slim stage (reclaim stale qcow2 clusters, re-push same tag)
- cf25da2 feat(image): cocoon-macos image pull/list/inspect/rm — reuse cocoon's cloudimg store
- c462674 feat(image): desktop stage — auto-login + skip Setup Assistant + slim, automated via Action
- 97b4dc7 feat(smbios): --random-smbios injects a unique Apple identity per VM
- 1f4ba2b feat(vm): --net tap — attach qemu to a pre-created host TAP (bridged/routed)
- e688c5a feat(vm): cocoon network port + snapshot/restore/clone + shared firmware store
- cd6ac30 feat(vm): qcow2 baking via cocoon storage — overlay on the immutable store blob
- f75f77f feat(vnc): --vnc-password so macOS Screen Sharing can connect
- e4c507d feat: default state-dir to /var/lib/cocoon-macos (mirror cocoon's /var/lib/cocoon)
- c2ca688 feat: structured logging via projecteru2/core/log + version wiring
- 295837d fix(build): QMP screendump (HMP emits empty frames) + longer slim SSH wait
- 6d54e1d fix(build): adaptive OCR installer driver (per-pane wait, not fixed sleeps)
- b9cf175 fix(build): anchor license/SLA pane on 'Disagree', fast-fail if hung before disk-select
- db34ef8 fix(build): click SLA Agree button by Disagree-pairing, not by OCR confidence
- 0023ae0 fix(build): click SLA confirm-sheet Agree by position (modal button is OCR-unreadable)
- e3e2079 fix(build): robustly leave the OpenCore picker (don't lead with 'right'; confirm)
- 7425e0e fix(errors): use errors.New for the two remaining static error strings
- 2364bcf fix(image): chmod 666 /dev/kvm — GHA runner not in kvm group (EACCES on QEMU init)
- 4311bcd fix(image): desktop stage — perl kcpassword (bash 3.2 has no printf \xHH) + guard reboot/shutdown under set -e
- 4a752cc fix(image): fetch-macOS via --shortname tahoe (non-interactive; --board-id still prompts)
- 7939cfe fix(image): longer SSH/console waits in desktop stage (complete-home first boot is slow)
- 952dff9 fix(image): provision a COMPLETE cocoon home so macOS 26 skips the system Setup Assistant
- 2d5dcc5 fix(image): provision boots straight to desktop — bake the SA-skip recipe OFFLINE
- 6ec6e09 fix(qemu): -k en-us so VNC shifted keysyms map correctly
- b792d30 fix(qemu): auto-boot the installed macOS — patch OpenCore HideAuxiliary+Timeout when injecting
- c6fb375 fix(smbios): wait for qemu-nbd to release the qcow2 before launching qemu
- 3063d57 fix(vm): bring up netns loopback ...