Skip to content

Fix experimental keep-alive, wire it into "Other" tab, add Dynamic Island Live Activity#7

Merged
dizzafizza merged 2 commits into
mainfrom
claude/keep-alive-banner-fixes-n830n2
Jul 15, 2026
Merged

Fix experimental keep-alive, wire it into "Other" tab, add Dynamic Island Live Activity#7
dizzafizza merged 2 commits into
mainfrom
claude/keep-alive-banner-fixes-n830n2

Conversation

@dizzafizza

Copy link
Copy Markdown
Owner

Keep-alive for any app:

  • On TXM devices (iOS 26+), keep-alive now falls back to the bundled universal
    JIT script for apps with no assigned/name-matched script. Previously only known
    apps got a script callback, so a generic app's JIT brk syscalls went unserviced
    and the app hung / was killed in the background — the reason keep-alive "didn't
    work for any app". The fallback is read straight from the app bundle so the
    current, cancellation-aware script is always used.
  • Stopping a hold now reliably stops the script loop: the hold and its JIT script
    share one cancellation token, exposed to JS as should_continue() and honored by
    send_command(). universal.js checks should_continue() each iteration. On stop we
    interrupt + detach so the held app keeps running instead of being torn down. The
    cancellation flag is only read from the script's own thread, so there is no
    unsafe concurrent access to the (non-thread-safe) debug proxy.

Banner from the "Other" tab:

  • Selecting an app in the "Other" (launch) tab while keep-alive is enabled now
    holds it in the background and shows the banner, instead of silently launching
    without a debugger. The launch rows show a green "Hold" action and a footer note
    in this mode.

Dynamic Island / Live Activity:

  • New StikDebugWidgets widget-extension target hosting a keep-alive Live Activity,
    with compact/expanded/minimal Dynamic Island presentations and a Lock Screen
    view. Shared KeepAliveActivityAttributes lives in a StikDebugShared group used by
    both the app and the extension.
  • BackgroundAliveManager starts the activity when a hold begins and ends it when
    the hold stops; stale activities from a previous run are cleared at launch.
  • Added NSSupportsLiveActivities to the app Info.plist.

Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01EpCxAimrBo9RA8v6BxSEXT

claude added 2 commits July 15, 2026 10:47
…land Live Activity

Keep-alive for any app:
- On TXM devices (iOS 26+), keep-alive now falls back to the bundled universal
  JIT script for apps with no assigned/name-matched script. Previously only known
  apps got a script callback, so a generic app's JIT brk syscalls went unserviced
  and the app hung / was killed in the background — the reason keep-alive "didn't
  work for any app". The fallback is read straight from the app bundle so the
  current, cancellation-aware script is always used.
- Stopping a hold now reliably stops the script loop: the hold and its JIT script
  share one cancellation token, exposed to JS as should_continue() and honored by
  send_command(). universal.js checks should_continue() each iteration. On stop we
  interrupt + detach so the held app keeps running instead of being torn down. The
  cancellation flag is only read from the script's own thread, so there is no
  unsafe concurrent access to the (non-thread-safe) debug proxy.

Banner from the "Other" tab:
- Selecting an app in the "Other" (launch) tab while keep-alive is enabled now
  holds it in the background and shows the banner, instead of silently launching
  without a debugger. The launch rows show a green "Hold" action and a footer note
  in this mode.

Dynamic Island / Live Activity:
- New StikDebugWidgets widget-extension target hosting a keep-alive Live Activity,
  with compact/expanded/minimal Dynamic Island presentations and a Lock Screen
  view. Shared KeepAliveActivityAttributes lives in a StikDebugShared group used by
  both the app and the extension.
- BackgroundAliveManager starts the activity when a hold begins and ends it when
  the hold stops; stale activities from a previous run are cleared at launch.
- Added NSSupportsLiveActivities to the app Info.plist.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EpCxAimrBo9RA8v6BxSEXT
Drops the StikDebugWidgets extension target, the shared ActivityAttributes,
and the KeepAliveLiveActivity controller — no Dynamic Island / Lock Screen
presentation. The banner stays as the existing in-app overlay in HomeView,
now also shown when holding an app from the "Other" tab. project.pbxproj,
Info.plist, and AppBootstrapper.swift are back to their pre-widget state.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EpCxAimrBo9RA8v6BxSEXT
@dizzafizza
dizzafizza merged commit 12684b7 into main Jul 15, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants