Combined release of builds 49 + 50 + 51 + 52 since v1.0-build48. Four
small UI/diagnostic improvements; no protocol or stability changes.
Build 49 — extended captcha-view diagnostic
- WKNavigationDelegate intermediate events: didStartProvisional,
didCommit, didReceiveServerRedirect — pin down which network-layer
stage hangs when load is slow. - JS heartbeat (every 1s) reporting readyState, body length, title
length, current URL — reveals whether the parser is stuck or
progressing, and at what stage. - JS error catchers (window.onerror + unhandledrejection) so failures
in VK's own scripts don't disappear silently.
Build 50 — WRAP key whitespace tolerance
- SecureField in Settings now strips whitespace as you type/paste.
- Go bridge also strips defensively as a backstop.
- Without this, a stray space in pasted hex caused the bridge to fail
decoding ("encoding/hex: invalid byte: U+0020 ' '") and silently
disable WRAP for the session.
Build 51 — Logs UI lag fix after Clear
- LogsView caches the os_log fallback content and refreshes at most
once per 4s, off the main thread (Task.detached). Without this, the
fallback ran the synchronous OSLogStore query on every 2s timer
tick, blocking the main thread for hundreds of ms each time.
Build 52 — captcha cold-cache diagnostic + UX
- Loading overlay in CaptchaWebView replaces the blank white WebView
during slow first loads. Spinner + "Loading captcha…" + elapsed
counter; hides as soon as DOM has body content. Eliminates the
"white screen for 60-90s, app feels broken" perception observed in
issue #5 cold-cache reports. - PerformanceObserver in JS hooks logs DNS/TCP/TLS/TTFB/body phases
per fetched resource, naming the hostname. When the slow-load
pattern reproduces, the offending resource appears with
total=60000ms+ — direct identification of the bottleneck. - Heartbeat self-terminate cap raised from 60s to 180s so visibility
doesn't end before the actual Loaded event in slow scenarios.