Skip to content

fix: restore iOS controls and background artwork - #8

Merged
a3384379 merged 1 commit into
masterfrom
codex/ios-artwork-control-audit-fixes
Oct 1, 2026
Merged

a3384379 merged 1 commit into
masterfrom
codex/ios-artwork-control-audit-fixes

Conversation

@a3384379

@a3384379 a3384379 commented Oct 1, 2026

Copy link
Copy Markdown
Owner

Summary

iOS volume and progress could not be dragged because their touch-handling SwiftUI Slider had opacity 0.001. Background artwork requests were also frozen with other synchronization work, so changing songs outside the app could leave Dynamic Island artwork empty until foregrounding.

  • Use a visible native UISlider with a 44pt touch area, retain the compact appearance and drag/VoiceOver edit lifecycle, and defer diagnostic presentation until the preceding modal dismisses. The speaker image remains decorative.
  • Allow only the current artwork preview to pass the background command queue, discard obsolete artwork requests, and use finite background tasks for thumbnail publication. Shared thumbnails are written atomically with protection that permits reading after the first unlock.
  • Finish history/statistics and lyric diagnostic requests on send failure, malformed responses, timeout and disconnect; prevent stale history callbacks from changing a new connection's UI.
  • Keep Android volume edits authoritative during delayed acknowledgements. Replace Sony API 24/26-only calls with compatible implementations and resolve all 20 Android lint errors without raising minSdk or suppressing checks.

Detailed root causes, scope and validation limits are in docs/CONTROL_INTERACTION_AUDIT.md. Existing deployment scripts, InfoPlist changes and unrelated localization edits are excluded; the catalog change adds only two diagnostic messages.

Compatibility

  • No BLE UUID, command name, payload or A1/A2 header changes
  • Old iOS/Sony compatibility considered; Sony minSdk remains 23
  • QQ Music-only scope preserved
  • Live Activity ContentState continues to contain artwork key/revision only

Validation

The exact isolated change set passed local verification:

Check Result
iOS simulator XCTest 67 tests, 0 failures; iPhone 16 Pro, iOS 18.3
Sony JVM tests and Debug APK 137 tests, 0 failures; build passed
Android Controller JVM tests and Debug APK 34 tests, 0 failures; build passed
Sony lint 0 errors / 34 warnings; previously 20 errors / 33 warnings
Android Controller lint 0 errors / 30 warnings
git diff --check Passed
  • Relevant unit tests passed, including slider hit testing, background preview eligibility, shared artwork files, request failure/retry and successful history pagination, cache write recovery, and delayed volume acknowledgements
  • iOS quick/full device smoke: not run under the user's instruction to proceed without a physical-device demonstration
  • Android quick/full device smoke: not run under the same instruction
  • Real-device cross-device validation: background wake-up, locked-device artwork display and Sony/iPhone BLE interaction remain unverified on hardware

Diagnostics and privacy

  • No device logs or screenshots are committed
  • No signing keys, provisioning profiles, deployment state or user caches are included

Complete history and lyric diagnostic request cleanup, preserve Android volume drags, and resolve Sony API compatibility and lint errors.
@a3384379
a3384379 merged commit 7a0bc2a into master Oct 1, 2026
4 checks 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.

1 participant