Early access — core works, not a daily driver yet.
Been building this solo for about a week on Tauri v2 (Rust + WebView2).
Ad blocking at the COM level. Intercepts network requests via WebView2's WebResourceRequested before the page loads. adblock-rust with ~140k EasyList + EasyPrivacy rules, ~4.6μs per-request matching. Cached to disk as binary - 5ms warm load. No extension to disable, page JS can't detect it.
Encrypted LAN sync. mDNS discovery, SPAKE2 zero-knowledge pairing (6-digit code never transmitted), Noise XX encrypted TCP, Loro CRDT for conflict-free merging of bookmarks, history, settings, and open tabs.
Parallel downloads. 6-segment chunked downloads, pause/resume via HTTP Range, cookie extraction from WebView2 for authenticated downloads, crash-safe manifest persistence.
Smart tab lifecycle. Active → suspended (COM TrySuspend, ~85% memory saved, instant resume) → destroyed (0 bytes, reloads on focus). Auto-suspends inactive tabs.
Also: split view (4 panes), reader mode, PiP, sidebar media controls, cookie banner auto-reject, HTTPS-only, Chrome/Edge/Firefox import, themes.
Some pain points:
- COM callbacks that panic across FFI = 0xc0000005. Every handler needs catch_unwind + AssertUnwindSafe
- adblock-rust single-thread feature must be disabled for Send + Sync
- WebSockets don't fire WebResourceRequested — known gap
- TrySuspend callback is (HRESULT, BOOL) and barely documented
Windows only atm. ~27MB binary. Build instructions in the repo.
kovaaksplayer•1h ago
Ad blocking at the COM level. Intercepts network requests via WebView2's WebResourceRequested before the page loads. adblock-rust with ~140k EasyList + EasyPrivacy rules, ~4.6μs per-request matching. Cached to disk as binary - 5ms warm load. No extension to disable, page JS can't detect it.
23 fingerprint resistance mitigations. Canvas PRNG noise, performance.now() clamped to 16.67ms, hardwareConcurrency spoofing, speechSynthesis/mediaDevices/storage.estimate blocked, WebGL renderer spoofed, toString() hardened Always-on