- name
- playback-webview-debugging
- description
- Use when playback, auth recovery, queue sync, or hidden WebView state diverges from native Swift state and you need to debug the DRM playback WebView, bridge events, or cookie/auth behavior.
- metadata
- {"short-description":"Debug playback WebView state"}
# Playback WebView Debugging
Use this skill when playback, auth recovery, queue sync, or hidden WebView state diverges from the native Swift state.
## When To Use It
- Playback starts, stops, or advances unexpectedly
- Auth looks stale and API calls return 401/403
- WebView metadata drifts from the native queue
- You need to inspect JavaScript bridge events or DOM/player state
## Runtime Workflow
1. Reproduce with the packaged app or `Scripts/compile_and_run.sh`.
2. Use Xcode Console filters to watch runtime logs:
`subsystem:Kaset category:player`
`subsystem:Kaset category:auth`
3. In debug builds, verify `webView.isInspectable = true`, then inspect the player WebView with Safari Web Inspector.
4. To simulate auth expiry, delete `__Secure-3PAPISID` via Safari Web Inspector storage tools and trigger an authenticated API call.
5. If auth cookies or headers look suspicious, run `swift run api-explorer auth` and compare against the exported cookie state.
## Landmarks
- `docs/testing.md`
- `docs/playback.md`
- `Sources/Kaset/Views/MiniPlayerWebView.swift`
- `Sources/Kaset/Views/SingletonPlayerWebView+ObserverScript.swift`
- `Sources/Kaset/Views/SingletonPlayerWebView+NavigationState.swift`
- `Sources/Kaset/Views/SingletonPlayerWebView+QueueInjection.swift`
- `Sources/Kaset/Services/Player/PlayerService.swift`
- `Sources/Kaset/Services/Player/PlayerService+WebPlaybackIdentity.swift`
- `Sources/Kaset/Services/Player/PlayerService+WebQueueSync.swift`
- `Sources/Kaset/Services/Player/PlayerService+QueueNavigationRecovery.swift`
- `Sources/Kaset/Services/WebKit/WebKitManager.swift`
GitHubで見る