| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
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 个月前 | |
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> | 30 天前 | |
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 个月前 | |
catalog: Replace iOS 26.6.1 RC with release build 23G83 The bundled 26.6.1 IPSW pointed at the 23G82 release candidate, which differs from the shipped release. Point it at the 23G83 final restore and update the tested-environment tables accordingly. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> | 23 天前 | |
feat(vm create): prompt for firmware pairing when a source is omitted `vm create` on an interactive terminal now prompts for whichever firmware component wasn't passed on the command line, choosing from a known-good iPhone/cloudOS catalog by friendly name (e.g. "iOS 26.4", "cloudOS 26.4") rather than raw URLs. Supply one of --iphone-source/--cloudos-source and only the other is asked for; supply neither and a full pairing is chosen. Non-interactive runs (or both flags set) pass through unchanged, so fw_prepare's defaults still fill any gap and scripted use is unaffected. - VPhoneFirmwareCatalog: 18 iPhone17,3 pairings + 4 distinct cloudOS images. - VPhoneFirmwarePicker: pure, injectable-I/O resolver (13 unit tests). - VPhoneFirmwareSelection: TTY adapter (isatty + readLine → stderr prompts). - Wired into `vm create` before the orchestrator runs; READMEs (+ ja/ko/zh) document the prompt behavior. 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 个月前 | |
vphone-cli: Add VPHONE_ROOT env variable to override user data root | 25 天前 | |
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 个月前 | |
cli: Add byte-counting tar pipeline + progress-bar primitives Two building blocks for streaming progress on vm export/import, unused until the export/import rework wires them in: - VPhoneProcessRunner.runCountingTarPipe: drives a /usr/bin/tar consumer that reads its archive on stdin, invoking a callback with the running byte total. The source is either a producer tar (export) or a file read directly (import). SIGPIPE is ignored so a consumer that dies early surfaces as its exit status instead of killing this process. - VPhoneProgressBar: a single-line redrawing byte bar that renders to stderr only when it is a TTY, so piped/--json/GUI-subprocess runs stay clean and it simply no-ops. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> | 30 天前 | |
vphone-cli: Add VPHONE_ROOT env variable to override user data root | 25 天前 | |
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 个月前 | |
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 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 1 个月前 | ||
| 30 天前 | ||
| 1 个月前 | ||
| 23 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 25 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 30 天前 | ||
| 25 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 |