Fix captcha flow: burn checkbox only on ERROR, reload WebView on URL change
Go captcha:
captcha_pow.go:checkboxBurnedForSessionnow only set onstatus=ERROR(VK's "captcha type disabled" signal). Transient failures (BOT,ERROR_LIMIT) no longer burn the checkbox, so the nextsolveCaptchaPoWretries it.creds.go: themaxPoWRetries=3loop only short-circuits when the checkbox is provably burned. Transient failures now fully exercise all 3 attempts with fresh captcha URLs — often enough for VK to hand us a solvable slider.
iOS WebView:
CaptchaWKWebView.updateUIViewwas a no-op, so when VK rejected asuccess_tokenand Go fetched a fresh captcha URL, the SwiftUI sheet rebinding passed a newurlto the same WKWebView — which kept displaying the stale page (with the green check from the previous solve). Now tracks the last loaded URL and reloads on change; resets the one-shotsolvedguard so new tokens are forwarded.- Each
CaptchaWKWebViewinstance now uses an ephemeralWKWebsiteDataStore, so VK's anti-abuse cookies can't carry a pre-solved state into a fresh WebView.
Verified today on WiFi (1 checkbox → OK) and LTE (checkbox BOT → slider auto-solved on attempt 2 without any WebView). In both cases no manual captcha interaction was required.