Repository navigation
feat(ipod): the generic iPod runtime keeps every game's screen awake - #567
Merged
Merged
Conversation
The runtime build compiles hosts/ios-legacy/runtime.c with POCKET_KEEP_AWAKE, the switch a first-party app's keepAwake descriptor sets: the app disables iOS's idle timer for its lifetime, so a repacked Studio game stays on screen without a touch each auto-lock interval. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Evan's decision for Studio games on the iPod touch 4: they keep the screen awake. The generic iPod runtime (
bun tools/runtime.ts ipod, #564) now compileshosts/ios-legacy/runtime.cwithPOCKET_KEEP_AWAKE, the switch a first-party app'skeepAwakedescriptor sets:launch_applicationcallssetIdleTimerDisabled:YESfor the app's lifetime. The docs table indocs/IPODTOUCH4.mdsays so;tests/ipodtouch4-profile.test.tspins the define in the runtime build.Device results (iPod4,1, iOS 6.1.6 10B500, UDID 68dbced5…, AppSync Unified;
ipodtouch4:<udid>lease)Repack check on main (
efb39e90, before this change), runtime build70f432a0…:bun tests/e2e/ipod-repack.ts --manifest twenty48-remix/pocket.json --id dev.pocket-nexus.studio.twenty48-remix --title "Twenty48 Remix" … --device: 2.2 MB.pocket, 1,117,720-byte.iparepacked in 133 ms;deploy --ipainstalled it through AppSync with byte-exact readback of every bundle file, launch reportedstate=running renderer=gles1 640x960@2, first frame captured; whole run 23.6 s.PocketJSRuntime, Info.plist not bound, no sealed resources) under another file name, Info.plist, icons andapp.pocket.last_touch_hit39), five swipes slid tiles to score 20; the status record counted 6 completed touch sequences, 60 frames per second window, 0.4 ms guest+core per frame, 2.8 ms present.app.pocketthe status record saysstate=failed error=this app carries no game: app.pocket is missing renderer=software; with a damaged footer,app.pocket is not a ipodtouch4-dev ABI 8 game (error 4). The process stayed alive in both and HOME left it.With this change (runtime build
c722c410…), the same game installed and launched, then left untouched for 150 s: at 03:21 the status record still advanced (frame 10081, 0 touch sequences) and the capture returned the live frame.🤖 Generated with Claude Code