1 pointby kovaaksplayer2 hours ago1 comment
  • kovaaksplayer2 hours ago
    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.

    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

      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.