| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
cli: Rework vm export/import — presets, auto-naming, positional, progress Export/import UX overhaul, wiring in the counting-pipe and progress-bar primitives: - Compression: replace `--compress {fast,balanced,max}` with a fast (zstd -3) default and a single `--max` (xz -9) flag; drop balanced. - `vm export --out DIR`: when the destination is an existing directory, auto-name the archive `<vm>.tzst`/`.txz` and print the resolved path. - `vm import ARCHIVE`: take the archive as a positional argument instead of `--in`. - Progress bars: export runs a two-stage tar pipeline (uncompressed gnutar producer -> compressing consumer via bsdtar `@-`) so the bar is driven off the known uncompressed total; import extracts once (was decompressing twice) and counts the archive as it is fed into `tar -x`. gnutar avoids the pax-header `@-` mtree misbid on large members and, unlike ustar, carries files >8 GB. Import validates the single top-level bundle after extracting into a private staging dir, still failing fast on an explicit --name collision. Tests: default is fast zstd; --max is xz; directory auto-naming yields the right extensions; export/import invoke progress with monotonic, correctly-totalled callbacks. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> | 1 个月前 | |
vphone-cli: Add network to `vm info`/`vm list` JSON `vm info --json` and `vm list --json` encode VPhoneBundleReport, which carried no network field — so the network mode was absent from JSON even though the human-readable output prints `net:`. Consumers parsing JSON had no way to read a VM's network config. Project the manifest's NetworkConfig into VPhoneBundleReport as `network`, so both `info` and `list` emit it as structured JSON (mode, macAddress, bridgeInterface). NetworkConfig gains Equatable (VPhoneBundleReport is Equatable). The text `net:` line now reads from the same report projection. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> | 1 个月前 | |
feat: add VPhoneCore library — VM bundle model + host primitives The library the consolidated CLI is built on: - bundle/library model (VPhoneBundle, VPhoneLibrary, VPhoneVirtualMachineManifest), bundle ops + reporting, restore helpers (VPhoneRestoreOps) - host process primitives: VPhoneProcessRunner, VPhoneManagedProcess (spawn + stdout pattern-match + SIGKILL-escalating terminate), VPhoneLaunchLayout, VPhoneBootPatterns - VPhoneResources: bundled-.app vs dev asset resolution, and Python resolution that provisions a per-user venv (~/.vphone/venv) on demand so the app is portable — never depends on the repo's .venv - VPhoneVerbosity (quiet/info/debug/trace) and VPhoneVMPicker Manifest moves out of the executable target into VPhoneCore. Full unit-test suite under tests/VPhoneCoreTests. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y4VDqWf5pVakcFLqB23CKe | 1 个月前 | |
vphone-cli: Add `fw catalog` with recommended pairings and `--json` Show the known iOS ↔ cloudOS firmware pairings, one recommended cloudOS per iOS build, projected from VPhoneFirmwareCatalog.pairings. Human output is an aligned table; `--json`/`-j` emits an object carrying the device plus each pairing's download URLs. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> | 1 个月前 | |
catalog: Add iOS 27 beta 6 + cloudOS 26.4 firmware pairing Add iPhone17,3 iOS 27.0 beta 6 (24A5418b) paired with cloudOS 26.4 to the firmware catalog so it appears in the `fw prepare` picker, `fw catalog`, and the `--json` report. Document it in the Tested Environments table across README.md and the ja/ko/zh translations. Bump the hardcoded pairing/menu count in FirmwarePickerTests 20 -> 21. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> | 28 天前 | |
feat: add VPhoneCore library — VM bundle model + host primitives The library the consolidated CLI is built on: - bundle/library model (VPhoneBundle, VPhoneLibrary, VPhoneVirtualMachineManifest), bundle ops + reporting, restore helpers (VPhoneRestoreOps) - host process primitives: VPhoneProcessRunner, VPhoneManagedProcess (spawn + stdout pattern-match + SIGKILL-escalating terminate), VPhoneLaunchLayout, VPhoneBootPatterns - VPhoneResources: bundled-.app vs dev asset resolution, and Python resolution that provisions a per-user venv (~/.vphone/venv) on demand so the app is portable — never depends on the repo's .venv - VPhoneVerbosity (quiet/info/debug/trace) and VPhoneVMPicker Manifest moves out of the executable target into VPhoneCore. Full unit-test suite under tests/VPhoneCoreTests. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y4VDqWf5pVakcFLqB23CKe | 1 个月前 | |
vphone-cli: Add VPHONE_ROOT env variable to override user data root | 28 天前 | |
feat: add VPhoneCore library — VM bundle model + host primitives The library the consolidated CLI is built on: - bundle/library model (VPhoneBundle, VPhoneLibrary, VPhoneVirtualMachineManifest), bundle ops + reporting, restore helpers (VPhoneRestoreOps) - host process primitives: VPhoneProcessRunner, VPhoneManagedProcess (spawn + stdout pattern-match + SIGKILL-escalating terminate), VPhoneLaunchLayout, VPhoneBootPatterns - VPhoneResources: bundled-.app vs dev asset resolution, and Python resolution that provisions a per-user venv (~/.vphone/venv) on demand so the app is portable — never depends on the repo's .venv - VPhoneVerbosity (quiet/info/debug/trace) and VPhoneVMPicker Manifest moves out of the executable target into VPhoneCore. Full unit-test suite under tests/VPhoneCoreTests. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y4VDqWf5pVakcFLqB23CKe | 1 个月前 | |
networking: Add `vm config --network` to edit VM network mode after creation Adds `--network nat|bridged|none` and `--bridge-interface` to `vm config`, and wires the boot path to honor the stored networkConfig (it previously hardcoded NAT and ignored the manifest). `vm info` now shows the mode. - New VPhoneNetworking: validates the mode, resolves/auto-picks the bridge interface, and builds the VZ network device — shared by config-time editing and boot. - bridged uses VZBridgedNetworkDeviceAttachment (com.apple.vm.networking entitlement already present); hostOnly is rejected (no native VZ attachment); none yields no NIC. - Rename NetworkMode.none -> .off (raw value kept "none") so a NetworkMode? literal `.none` can't silently bind to Optional.none. The MAC is left framework-assigned; forcing a custom MAC breaks guest networking, so no MAC override is exposed. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> | 1 个月前 | |
networking: Add `vm config --network` to edit VM network mode after creation Adds `--network nat|bridged|none` and `--bridge-interface` to `vm config`, and wires the boot path to honor the stored networkConfig (it previously hardcoded NAT and ignored the manifest). `vm info` now shows the mode. - New VPhoneNetworking: validates the mode, resolves/auto-picks the bridge interface, and builds the VZ network device — shared by config-time editing and boot. - bridged uses VZBridgedNetworkDeviceAttachment (com.apple.vm.networking entitlement already present); hostOnly is rejected (no native VZ attachment); none yields no NIC. - Rename NetworkMode.none -> .off (raw value kept "none") so a NetworkMode? literal `.none` can't silently bind to Optional.none. The MAC is left framework-assigned; forcing a custom MAC breaks guest networking, so no MAC override is exposed. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> | 1 个月前 | |
feat: add VPhoneCore library — VM bundle model + host primitives The library the consolidated CLI is built on: - bundle/library model (VPhoneBundle, VPhoneLibrary, VPhoneVirtualMachineManifest), bundle ops + reporting, restore helpers (VPhoneRestoreOps) - host process primitives: VPhoneProcessRunner, VPhoneManagedProcess (spawn + stdout pattern-match + SIGKILL-escalating terminate), VPhoneLaunchLayout, VPhoneBootPatterns - VPhoneResources: bundled-.app vs dev asset resolution, and Python resolution that provisions a per-user venv (~/.vphone/venv) on demand so the app is portable — never depends on the repo's .venv - VPhoneVerbosity (quiet/info/debug/trace) and VPhoneVMPicker Manifest moves out of the executable target into VPhoneCore. Full unit-test suite under tests/VPhoneCoreTests. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y4VDqWf5pVakcFLqB23CKe | 1 个月前 | |
vphone-cli: Add VPHONE_ROOT env variable to override user data root | 28 天前 | |
vphone-cli: Add variant, udid, and device to `vm info` `vm info` now reports the CFW variant the VM was last restored to, its predicted UDID, and the product type the guest identifies as. - udid: read from the bundle's udid-prediction.txt (VPhoneRestoreOps.resolveUDID) - variant + device: recorded into restore-info.json at CFW-install time, in both the standalone `cfw install` and the `vm create` orchestrator. device is iPhone99,11 for every variant except exp, whose DeviceTree rewrite -> iPhone17,3. - both new restore-info.json fields are optional, so pre-existing bundles decode unchanged and pick up variant/device on their next install. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> | 1 个月前 | |
vphone-cli: Add variant, udid, and device to `vm info` `vm info` now reports the CFW variant the VM was last restored to, its predicted UDID, and the product type the guest identifies as. - udid: read from the bundle's udid-prediction.txt (VPhoneRestoreOps.resolveUDID) - variant + device: recorded into restore-info.json at CFW-install time, in both the standalone `cfw install` and the `vm create` orchestrator. device is iPhone99,11 for every variant except exp, whose DeviceTree rewrite -> iPhone17,3. - both new restore-info.json fields are optional, so pre-existing bundles decode unchanged and pick up variant/device on their next install. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> | 1 个月前 | |
feat: add VPhoneCore library — VM bundle model + host primitives The library the consolidated CLI is built on: - bundle/library model (VPhoneBundle, VPhoneLibrary, VPhoneVirtualMachineManifest), bundle ops + reporting, restore helpers (VPhoneRestoreOps) - host process primitives: VPhoneProcessRunner, VPhoneManagedProcess (spawn + stdout pattern-match + SIGKILL-escalating terminate), VPhoneLaunchLayout, VPhoneBootPatterns - VPhoneResources: bundled-.app vs dev asset resolution, and Python resolution that provisions a per-user venv (~/.vphone/venv) on demand so the app is portable — never depends on the repo's .venv - VPhoneVerbosity (quiet/info/debug/trace) and VPhoneVMPicker Manifest moves out of the executable target into VPhoneCore. Full unit-test suite under tests/VPhoneCoreTests. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y4VDqWf5pVakcFLqB23CKe | 1 个月前 | |
feat: add VPhoneCore library — VM bundle model + host primitives The library the consolidated CLI is built on: - bundle/library model (VPhoneBundle, VPhoneLibrary, VPhoneVirtualMachineManifest), bundle ops + reporting, restore helpers (VPhoneRestoreOps) - host process primitives: VPhoneProcessRunner, VPhoneManagedProcess (spawn + stdout pattern-match + SIGKILL-escalating terminate), VPhoneLaunchLayout, VPhoneBootPatterns - VPhoneResources: bundled-.app vs dev asset resolution, and Python resolution that provisions a per-user venv (~/.vphone/venv) on demand so the app is portable — never depends on the repo's .venv - VPhoneVerbosity (quiet/info/debug/trace) and VPhoneVMPicker Manifest moves out of the executable target into VPhoneCore. Full unit-test suite under tests/VPhoneCoreTests. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y4VDqWf5pVakcFLqB23CKe | 1 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 28 天前 | ||
| 1 个月前 | ||
| 28 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 28 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 |