[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-10940":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":13,"stars7d":16,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":18,"compositeScore":19,"rankGlobal":9,"rankLanguage":9,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":23,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":25,"readmeContent":26,"aiSummary":27,"trendingCount":15,"starSnapshotCount":15,"syncStatus":28,"lastSyncTime":29,"discoverSource":30},10940,"Phosphor","momenbasel\u002FPhosphor","momenbasel","Free and open-source iOS device manager for macOS. Browse backups, export messages, extract photos, manage apps - no subscriptions, no iCloud lock-in.",null,"Swift",349,25,5,4,0,13,71,15,67.84,"MIT License",false,"main",true,[],"2026-06-12 04:00:53","\u003Cp align=\"center\">\n  \u003Cimg src=\"Resources\u002Fbanner.svg\" alt=\"Phosphor Banner\" width=\"100%\">\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"Resources\u002FAppIcon.svg\" alt=\"Phosphor Icon\" width=\"128\" height=\"128\">\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">Phosphor\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  \u003Cstrong>Free and open-source iOS device manager for macOS.\u003C\u002Fstrong>\u003Cbr>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fmomenbasel\u002FPhosphor\u002Freleases\u002Flatest\">Download\u003C\u002Fa> -\n  \u003Ca href=\"https:\u002F\u002Fmomenbasel.github.io\u002FPhosphor\u002F\">Website\u003C\u002Fa> -\n  \u003Ca href=\"#features\">Features\u003C\u002Fa> -\n  \u003Ca href=\"#installation\">Install\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fmomenbasel\u002FPhosphor\u002Freleases\u002Flatest\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002Fmomenbasel\u002FPhosphor?style=flat-square&color=5856D6\" alt=\"Release\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fmomenbasel\u002FPhosphor\u002Fblob\u002Fmain\u002FLICENSE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fmomenbasel\u002FPhosphor?style=flat-square&color=34C759\" alt=\"License\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fmomenbasel\u002FPhosphor\u002Factions\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fmomenbasel\u002FPhosphor\u002Fbuild.yml?style=flat-square\" alt=\"Build\">\u003C\u002Fa>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fplatform-macOS%2014%2B-blue?style=flat-square\" alt=\"Platform\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fswift-5.9-orange?style=flat-square\" alt=\"Swift\">\n\u003C\u002Fp>\n\n---\n\nPhosphor gives you complete control over your iPhone, iPad, and iPod touch without proprietary software, iCloud lock-in, or subscriptions. Built natively with SwiftUI and powered by [pymobiledevice3](https:\u002F\u002Fgithub.com\u002Fdoronz88\u002Fpymobiledevice3) with [libimobiledevice](https:\u002F\u002Flibimobiledevice.org\u002F) as fallback. Supports iOS 17-26+.\n\n---\n\n## Why Phosphor?\n\nApple's Finder integration is all-or-nothing. Proprietary tools like iMazing cost $50\u002Fyear. Phosphor fills the gap:\n\n| Feature | Finder | iMazing | Phosphor |\n|---------|--------|---------|----------|\n| Full device backup | Yes | Yes | Yes |\n| Incremental backup | No | Yes | Yes |\n| Browse backup contents | No | Yes | Yes |\n| Selective file restore | No | Yes | Yes |\n| Export iMessages to CSV\u002FHTML | No | Yes | Yes |\n| Export WhatsApp messages | No | Yes | Yes |\n| Photo extraction (no iCloud) | No | Yes | Yes |\n| App data extraction | No | Yes | Yes |\n| Install\u002Fremove IPAs | No | Yes | Yes |\n| Battery health diagnostics | No | Yes | Yes |\n| Real-time device console | No | Yes | Yes |\n| Device file system browser | No | Yes | Yes |\n| Drag-and-drop file transfer | No | Yes | Yes |\n| Scheduled Wi-Fi backups | No | Yes | Yes |\n| Time Machine backup restore | No | No | **Yes** |\n| Contacts export (vCard\u002FCSV) | No | Yes | Yes |\n| Calendar export (ICS\u002FCSV) | No | Yes | Yes |\n| Apple Watch data browsing | No | Yes | Yes |\n| Backup archive format | No | .imazing | **.phosphor** |\n| Localization (7 languages) | No | Yes | Yes |\n| Crash report viewer | No | Yes | Yes |\n| Process monitor | No | Yes | Yes |\n| Ringtone creator | No | Yes | Yes |\n| HEIC to JPG conversion | No | Yes | Yes |\n| iOS 26 support | N\u002FA | Paid | **Yes** |\n| Price | Free | $49.99\u002Fyr | Free |\n| Open source | No | No | **MIT** |\n\n## Features\n\n### Device Management\n- Automatic detection of connected iOS devices via USB\n- Device info: model, iOS version, serial, UDID, IMEI, Wi-Fi\u002FBluetooth MAC\n- Pair\u002Funpair devices\n- Restart, shutdown, sleep commands\n- Take device screenshots\n\n### Backups\n- Create full and incremental local backups (no iCloud required)\n- Browse backup contents through parsed `Manifest.db`\n- Navigate by domain (Camera Roll, Apps, Home, System, Keychain, etc.)\n- Search files across the entire backup\n- Extract individual files or entire domains\n- Manage backup encryption\n- Delete old backups\n\n### Messages\n- Browse all iMessage and SMS conversations from backups\n- View messages in a native chat-bubble interface\n- Search across all messages\n- Export conversations to **CSV**, **HTML**, **Plain Text**, or **JSON**\n- Export all conversations at once\n- HTML export styled like native iMessage (blue\u002Fgray bubbles)\n\n### Photos & Videos\n- Browse Camera Roll from backup without restoring\n- Filter by type: Photos, Videos, Screenshots\n- Grid and list view modes\n- Batch extract to any folder\n- Preserves original filenames and structure\n\n### Applications\n- List all installed apps on connected devices\n- Browse apps stored in backups with data sizes\n- Install `.ipa` files directly to device\n- Remove apps from device\n- Extract individual app containers (Documents, Library, tmp)\n\n### File System\n- Browse device filesystem via AFC (Apple File Conduit) - no FUSE\u002Fifuse required on macOS Sonoma+\n- Navigate directories, view file metadata\n- Copy files to\u002Ffrom device via pymobiledevice3 AFC push\u002Fpull\n- Browse specific app containers (Documents, Library, tmp)\n- Delete files on device\n- Drag-and-drop file transfer\n\n### Contacts\n- Browse all contacts from backup AddressBook database\n- View phone numbers, emails, organization details\n- Search across all contacts\n- Export as **vCard (.vcf)** or **CSV**\n\n### Calendar\n- Browse calendars and events from backup\n- View event details, duration, all-day status\n- Export as **ICS (iCalendar)** or **CSV**\n\n### Apple Watch\n- View paired Apple Watch info from iPhone backup\n- Browse WatchKit extension apps with data sizes\n- Activity ring history (Move, Exercise, Stand)\n- Extract all Watch-related data from backup\n\n### Diagnostics\n- Battery: current charge, charging status, health percentage, design vs. actual capacity (mAh), cycle count, temperature\n- Storage: total capacity, usage breakdown (Apps, Photos, Media, Other), available space\n- Visual storage bar similar to macOS About This Mac\n- Real-time device system log (syslog) streaming with proper process termination\n- Filter and search logs\n- Export logs to file\n- Color-coded log levels (Error\u002FWarning\u002FDebug)\n- **Crash report viewer** - Pull and browse device crash reports\n- **Process monitor** - Live process list from device\n\n### Backup Management\n- **Time Machine mode**: 3D animated backup browser for visual restore\n- **Scheduled backups**: automatic hourly\u002Fdaily\u002Fweekly\u002Fmonthly via USB or Wi-Fi\n- **.phosphor archives**: portable backup export\u002Fimport format\n- Backup encryption management (enable\u002Fdisable\u002Fverify)\n- Drag-and-drop file transfer in file browser\n\n## Installation\n\n### Homebrew (recommended)\n\n```bash\nbrew tap momenbasel\u002Fphosphor\nbrew install --cask phosphor\n```\n\n### Manual\n\n1. Download the latest `.dmg` from [Releases](https:\u002F\u002Fgithub.com\u002Fmomenbasel\u002FPhosphor\u002Freleases)\n2. Drag `Phosphor.app` to Applications\n3. Install pymobiledevice3: `pip3 install pymobiledevice3`\n4. Optional fallback: `brew install libimobiledevice ideviceinstaller`\n\n### Build from Source\n\n```bash\n# Install pymobiledevice3 (primary)\npip3 install pymobiledevice3\n\n# Optional fallback tools\nbrew install libimobiledevice ideviceinstaller\n\n# Clone and build\ngit clone https:\u002F\u002Fgithub.com\u002Fmomenbasel\u002FPhosphor.git\ncd Phosphor\nswift build -c release\n\n# Create app bundle\nbash Scripts\u002Fbuild.sh\n\n# Launch\nopen .build\u002FPhosphor.app\n```\n\n## Requirements\n\n- **macOS 14.0** (Sonoma) or later\n- **pymobiledevice3** (primary backend, supports iOS 17-26+): `pip3 install pymobiledevice3`\n- **libimobiledevice** (optional fallback): `brew install libimobiledevice`\n- **ideviceinstaller** (optional fallback for app management)\n- **ifuse** (legacy file mounting, not needed with pymobiledevice3)\n\nPhosphor checks for available tools on launch and uses the best available backend automatically.\n\n## Architecture\n\n```\nSources\u002FPhosphor\u002F\n  App\u002F           SwiftUI app entry point\n  Models\u002F        DeviceInfo, BackupInfo, Message, MediaItem, AppBundle\n  Services\u002F      DeviceManager, BackupManager, MessageExporter,\n                 PhotoExtractor, AppManager, FileTransferManager,\n                 DiagnosticsManager\n  ViewModels\u002F    MVVM state management layer\n  Views\u002F         SwiftUI views organized by feature\n  Utilities\u002F     Shell (process runner), SQLiteReader, BackupManifest,\n                 PlistParser\n```\n\n**Key design decisions:**\n\n- **pymobiledevice3 primary, libimobiledevice fallback** - Every operation tries pymobiledevice3 first (JSON-based, supports latest iOS), falls back to libimobiledevice CLI if unavailable.\n- **No C bindings** - Wraps CLI tools via subprocess. Simpler dependency chain, easier to maintain.\n- **Direct SQLite** - Parses iOS backup databases (`Manifest.db`, `sms.db`) using system `sqlite3`. Zero external Swift dependencies.\n- **MVVM** - Services handle business logic, ViewModels manage UI state, Views are declarative and composable.\n- **Zero external dependencies** - Only system frameworks (SwiftUI, Foundation, sqlite3, UniformTypeIdentifiers).\n\n## iOS Backup Format\n\nPhosphor directly parses Apple's backup format:\n\n```\n~\u002FLibrary\u002FApplication Support\u002FMobileSync\u002FBackup\u002F\u003CUDID>\u002F\n  Info.plist           Device metadata\n  Manifest.plist       Encryption status, app list\n  Manifest.db          SQLite database mapping files to SHA-1 hashes\n  Status.plist         Backup state\n  \u003Cxx>\u002F\u003Csha1-hash>     Actual files, organized in 2-char prefix dirs\n```\n\nThe `Manifest.db` contains a `Files` table with columns:\n- `fileID` - SHA-1 hash (also the filename on disk)\n- `domain` - e.g., `CameraRollDomain`, `AppDomain-com.example.app`\n- `relativePath` - Original path within the domain\n- `flags` - 1=file, 2=directory, 4=symlink\n\nPhosphor parses this to provide file-system-like browsing without modifying the backup.\n\n## Roadmap\n\n- [x] WhatsApp message parsing (ChatStorage.sqlite)\n- [x] Apple Notes extraction (NoteStore.sqlite)\n- [x] Call log browsing and export\n- [x] Safari bookmarks and history\n- [x] Health data extraction (samples, workouts, all data types)\n- [x] Music and ringtone transfer (extract from backup, install to device via AFC)\n- [x] Batch operations (multi-select extract in Photos, Music)\n- [x] Wi-Fi device connection (libimobiledevice network mode)\n- [x] Encrypted backup browsing (via iphone-backup-decrypt)\n- [x] Drag-and-drop file transfer\n- [x] Localization (English, Arabic, Spanish, French, German, Japanese, Chinese)\n- [x] Apple Watch data through paired iPhone\n- [x] Time Machine-style backup restore with 3D animation\n- [x] Scheduled automatic backups (hourly\u002Fdaily\u002Fweekly\u002Fmonthly, Wi-Fi support)\n- [x] .phosphor backup archive format (portable backup export\u002Fimport)\n- [x] Contacts browsing and export (vCard, CSV)\n- [x] Calendar events browsing and export (ICS, CSV)\n- [x] Device-to-device transfer (clone) - backup source, restore to destination\n- [x] Full pymobiledevice3 migration (72 Shell calls, 13 services)\n- [x] Crash report viewer\n- [x] Process monitor\n- [x] Ringtone creator (afconvert)\n- [x] HEIC to JPG conversion (sips)\n- [x] Backup progress bar with percentage\n- [x] Syslog proper process termination\n- [x] Backup cancel support\n- [x] Backup encryption management (enable\u002Fdisable\u002Fchange password)\n- [ ] Voicemail browsing\n\n## Troubleshooting\n\n### Where Phosphor stores backups\n\nStarting with v1.0.4, Phosphor's default backup directory is `~\u002FDocuments\u002FPhosphor Backups`. This is a user-owned location, so Phosphor needs no special permission grant; it also keeps Phosphor's backups separate from Finder's, which eliminates any risk of a Phosphor run corrupting Finder-managed backups.\n\nIf you are upgrading from v1.0.3 or earlier and were using the system MobileSync directory, Phosphor will detect existing backups there on first launch and pin it as your override - nothing changes. You can switch to the new default any time from **Phosphor -> Settings -> Backup Directory -> Reset**.\n\n### \"Both backup methods failed\"\n\nPhosphor now surfaces the underlying `pymobiledevice3` and `idevicebackup2` stderr in the failure message. Common causes:\n\n0. **Directory \"is not readable\" \u002F permission denied** - you pointed Phosphor at `~\u002FLibrary\u002FApplication Support\u002FMobileSync\u002FBackup` but did not grant Full Disk Access. Prefer switching the backup directory back to the default `~\u002FDocuments\u002FPhosphor Backups` in **Settings**; only grant Full Disk Access if you specifically need Phosphor to read Apple's shared backups.\n1. **Trust prompt missed** - Unlock the device, tap **Trust This Computer**, enter your passcode, then retry the backup.\n2. **Stale pymobiledevice3** - iOS 17\u002F18\u002F26 require a recent release. Upgrade with:\n   ```bash\n   pip3 install --upgrade pymobiledevice3\n   ```\n3. **Binary not on PATH** - GUI apps do not inherit your shell PATH. Phosphor probes `pipx`, Homebrew, and `~\u002FLibrary\u002FPython\u002F3.{10..14}\u002Fbin` automatically; if you installed pymobiledevice3 elsewhere, symlink it into one of those directories.\n4. **Missing Python dependencies** - `ModuleNotFoundError` in the failure details means a partial install. Reinstall with `pip3 install --upgrade --force-reinstall pymobiledevice3`.\n5. **Pairing record mismatch** - From Terminal, run `pymobiledevice3 lockdown pair` once, accept the Trust prompt, then retry.\n\nFor encrypted backup issues, verify the device has a passcode set and that `pymobiledevice3 backup2 encryption` reports the expected state.\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guidelines.\n\n## Credits\n\n- [pymobiledevice3](https:\u002F\u002Fgithub.com\u002Fdoronz88\u002Fpymobiledevice3) - Pure Python implementation of Apple's mobile device protocols (primary backend)\n- [libimobiledevice](https:\u002F\u002Flibimobiledevice.org\u002F) - Cross-platform protocol library for iOS devices (fallback)\n- [ifuse](https:\u002F\u002Fgithub.com\u002Flibimobiledevice\u002Fifuse) - FUSE filesystem for iOS devices (legacy)\n- Apple's SF Symbols for iconography\n\n## License\n\n[MIT](LICENSE) - Use it, fork it, ship it.\n","Phosphor 是一个免费且开源的 macOS 应用程序，用于管理 iOS 设备。它支持浏览备份、导出消息、提取照片和管理应用程序等功能，无需订阅且不依赖 iCloud。该应用使用 Swift 编写，并基于 SwiftUI 构建，利用 pymobiledevice3 和 libimobiledevice 技术实现与设备的交互。Phosphor 适用于需要对 iPhone、iPad 或 iPod touch 进行深入管理和数据操作但又不想被商业软件高昂费用或 iCloud 限制所困扰的用户。",2,"2026-06-11 03:30:54","CREATED_QUERY"]