[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-49":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":13,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":15,"stars7d":16,"stars30d":17,"stars90d":14,"forks30d":14,"starsTrendScore":18,"compositeScore":19,"rankGlobal":9,"rankLanguage":9,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":25,"readmeContent":26,"aiSummary":27,"trendingCount":14,"starSnapshotCount":14,"syncStatus":28,"lastSyncTime":29,"discoverSource":30},49,"codex-plusplus-ios-simulator","b-nnett\u002Fcodex-plusplus-ios-simulator","b-nnett","iOS Simulator tweak for Codex++ — embeds a headless, mirrored simulator in Codex's right panel.",null,"JavaScript",546,53,1,0,4,16,55,12,9.2,"MIT License",false,"main",true,[],"2026-06-12 02:00:07","# iOS Simulator for Codex++\n\nAdds an **iOS Simulator** entry to Codex's right-panel `+` menu, alongside\n`Open file` and `Browser`. Selecting it opens a real-feeling tab that\nmirrors the booted iOS simulator **headlessly** (no `Simulator.app`\nwindow) and forwards taps, swipes, and hardware buttons back to the\ndevice.\n\nThis is a [Codex++](https:\u002F\u002Fgithub.com\u002Fb-nnett\u002Fcodex-plusplus) tweak —\ninstall Codex++ first, then drop this directory into\n`~\u002FLibrary\u002FApplication Support\u002Fcodex-plusplus\u002Ftweaks\u002F`.\n\n## Requirements\n\n- macOS with **Xcode** installed (Command-Line Tools alone aren't enough\n  — the tweak needs `SimulatorKit.framework`, which only ships with the\n  full Xcode).\n- `sudo xcode-select -s \u002FApplications\u002FXcode.app` if you've previously\n  pointed the toolchain at the CLT.\n- At least one downloaded iOS runtime \u002F simulator device.\n\nThe tweak runs a preflight check on first open and surfaces a one-line\nerror with a fix-it hint if any of the above is missing.\n\n## How it works\n\n- **UI.** A `MutationObserver` clones the existing `+` menu entry into\n  an \"iOS Simulator\" item, then injects a sibling tab + tabpanel into\n  Codex's right-panel React tree. The injected tab participates in\n  Codex's native drag-to-reorder, close-on-hover, and selection wiring.\n- **Capture.** A small Swift helper\n  (`helpers\u002Fsim-capture.swift` → `helpers\u002Fsim-capture`) attaches to\n  `CoreSimulator`'s `SimDisplayIOSurfaceRenderable` and JPEG-encodes\n  frames straight from the device's IOSurface. Frames are length-prefixed\n  on stdout and forwarded to the renderer over IPC at native pixel\n  resolution (e.g. 1170×2532 for an iPhone 16e).\n- **Input.** An Objective-C helper (`helpers\u002Fsim-input.m` →\n  `helpers\u002Fsim-input`) ports `FBSimulatorIndigoHID`: it builds Indigo\n  binary structs for touch \u002F keyboard \u002F hardware-button events and\n  posts them via `SimDeviceLegacyHIDClient` over a mach port. Pointer\n  events on the mirror surface are scaled CSS px → device point →\n  device pixel before being forwarded.\n- **Device picker.** Toolbar lists every installed simulator with a\n  `● Booted` indicator. Selecting another device shuts the current one\n  down, boots the new one, and restarts the capture stream.\n\n## Why a parallel tab?\n\nCodex's right-panel tab system is React-internal in a 2.8 MB minified\nVite bundle whose chunk hashes rotate every release. Patching the\nbundle to add a real tab type would break on every Codex update. The\nparallel injection is robust across releases — visually identical,\ndraggable, closable, and reconciled against React selection through a\n`MutationObserver`.\n\n## Permissions\n\n- **Screen Recording** is **not** required — capture goes through\n  `CoreSimulator` IOSurface, not display capture.\n- The first run compiles the helpers via `swiftc` \u002F `clang` from your\n  Xcode install. Subsequent runs reuse the cached binaries.\n\n## Security model\n\n- All long-running native processes are spawned by the tweak's main\n  process and killed on `stop()`.\n- The `simctl` IPC channel only accepts a small whitelist of\n  subcommands (`boot`, `shutdown`) and validates UDIDs against a\n  regex. Screenshots go through a dedicated handler that resolves the\n  destination path against `~\u002FDesktop` server-side; the renderer\n  cannot request writes to arbitrary filesystem locations.\n- Helpers are signed with the user's local toolchain; nothing is\n  fetched from the network.\n\n## Files\n\n- `index.js` — renderer + main tweak entry (menu injection, tab\u002Fpanel\n  mount, toolbar, mirror surface, pointer scaling, device picker, IPC\n  bridge, preflight).\n- `helpers\u002Fsim-capture.swift` — headless frame source.\n- `helpers\u002Fsim-input.m` — Indigo HID input forwarder.\n- `manifest.json` — tweak metadata.\n\n## License\n\nMIT.\n","b-nnett\u002Fcodex-plusplus-ios-simulator 是一个为 Codex++ 增加 iOS 模拟器功能的插件，能够在 Codex 的右侧面板中嵌入一个无头、镜像的模拟器。其核心功能包括通过 `MutationObserver` 动态添加 UI 元素，并利用 Swift 和 Objective-C 辅助程序直接从设备 IOSurface 读取和编码帧，以及转发触控和硬件按钮事件到模拟器。此项目特别适合需要在 macOS 环境下进行 iOS 应用开发与测试的场景，要求用户已安装 Xcode 及至少一个 iOS 运行时\u002F模拟器设备。它提供了一种无缝集成的方式，让开发者能够更高效地进行跨平台开发工作。",2,"2026-06-11 02:30:36","CREATED_QUERY"]