Three Phase 1D clusters in one commit (user opted for less iOS-sim verification between each). 1.28 — `show_keyboard` / `hide_keyboard` use `#objc_call(u8)` against `becomeFirstResponder` / `resignFirstResponder`. Compile-only; chess startup doesn't reach the keyboard path, so the runtime side of this cluster is a verification gap to backfill at the end of Phase 1D. 1.29 — `uikit_create_gl_context` migrates `alloc` / `initWithAPI:` / `setCurrentContext:` and folds in the same `mainScreen.nativeScale` read shape already migrated in 1.27. EAGL context creation runs on launch, so this cluster IS runtime-exercised. 1.30 — `uikit_subscribe_keyboard_notifications` migrates the `defaultCenter` + `addObserver:selector:name:object:` pair. First standalone exercise of a 4-keyword selector through `#objc_call`. Notification-center wiring runs at launch, so runtime-exercised. Net -23 lines across the file. iOS-sim chess regression smoke: app launches cleanly into a fresh board state. Status-bar clearance, sharp rendering, and asset loading all good — confirming clusters 1.25–1.27 still work alongside the new ones.
38 KiB
38 KiB