What's New

A lot has shipped since v4.0.0. Below are the most impactful additions and improvements across v4.0.1 → v4.1.0 — new engines, blocks, and a large runner performance overhaul. This is a curated summary, not the full changelog.

Highlights

📦
OpenBullet 2 (.opk) support
Import, run, and create OpenBullet 2 configs directly, powered by an embedded OB2 engine (LoliCode/C# via Roslyn). No manual porting to M2 blocks.
⚡
Runner performance overhaul
CPM brought in line with OB2 Native: HTTP connection reuse, a 60s proxy cooldown, O(1) proxy rotation, and a non-blocking output→UI path.
🌐
New HTTP engine
Request blocks migrated from the legacy Extreme.Net engine to the modern RuriLib.Http stack for correctness and speed.
📜
Script block (4 interpreters)
The RUNSCRIPT block now offers Jint and IronPython (embedded, no install needed) alongside real Node.js and Python.
🤖
Selenium upgrades
New element/browser actions (OB2 parity), a visual MOUSEACTION block, UndetectedChromeDriver, Firefox .xpi extensions, and CDP stealth.
🔒
More captchas
New Cap Solve block for Cap.js PoW captchas, plus Cloudflare Turnstile, DataDome, and GeeTest v4 captcha types.
🗂
Proxy Groups
Organize proxies into groups with a per-Runner active group and explicit Add/Edit/Delete management in the Proxy Manager.
📊
Home dashboard
Redesigned home with a memory card and a live system resource monitor.
🔌
OB2 Plugin Converter
Turn an OpenBullet 2 plugin (.dll) into a native M2 Stacker block, no coding required. Learn more.
ℹ

Looking for every fix and internal change? The complete, version-by-version changelog lives in the project repository.

v4.1.0

  • Full migration to .NET 10 — every project (app, RuriLib, embedded OB2 engine, plugins) retargeted from .NET 8 to .NET 10, unlocking the modern HTTP stack and features that were previously stubbed out.
  • HTTP engine upgraded to RuriLib.Http 2.0.1 — same engine as OB2 Native, with Brotli/zstd decompression and a fixed certificate-validation crash on native and embedded OB2 requests.
  • Native curl-impersonate, browser automation and CPython, all in-process — the OB2 engine's curl-impersonate, Selenium/Playwright/Puppeteer and Python blocks no longer need the external TLS proxy or a separate interpreter; Chrome/Firefox/Edge/PuppeteerSharp and CPython download automatically on first use.
  • OB2 Plugin Converter — turn an OpenBullet 2 plugin (.dll) into a native M2 block directly from the Tools menu, no coding or .NET SDK required. See below for the full walkthrough.
  • Home dashboard restyle — new poster-style header, a CPU progress bar, six individual "Your collection" cards, and a success-only recent-hits chart.
  • AESEncrypt / AESDecrypt — new OpenSSL-compatible "Salted__" passphrase mode, byte-for-byte compatible with openssl enc -aes-256-cbc -md md5.
  • Keycheck — "If no key found" is now a three-way choice (Nothing / Ban / Fail) instead of a single ban checkbox.
  • Script block — new OB2-style output editor and two more embedded interpreters, Jint (JavaScript) and IronPython, alongside the existing external Node.js/Python execution — four interpreters total, no install required for Jint/IronPython.
  • Wordlist Tools — new recursive Country TLD Extractor that scans a folder and all its subfolders in one pass.
🔌

OB2 Plugin Converter — what it does, and why you'd use it.

Many working configs rely on an OpenBullet 2 plugin (a .dll) for logic that OB2's own blocks can't cover — a custom captcha solver, a proprietary crypto routine, a vendor-specific SDK call. M2 runs OB2 configs through its embedded OB2 engine, but a plugin written for OB2 is still OB2-only code: on its own it has no UI, no palette icon, and no place in the M2 Stacker, so a config that needs it can look "broken" in M2 even though nothing is actually wrong with the plugin.

The Tools → OB2 Plugin Converter closes that gap. Point it at the plugin's .dll and it generates a matching native M2 block — with its own Stacker entry (category Plugins), a proper parameter UI (text fields, checkboxes, dropdowns matching the plugin's inputs), and full LoliScript save/load — while the plugin's actual logic keeps running unchanged, unmodified, inside the embedded OB2 engine. No C# knowledge, no Visual Studio, and no .NET SDK install are needed: the wrapper compiles in-process via Roslyn.

What you get: two files, deployed side by side — the original OB2 plugin in Plugins/OB2/ (the logic) and the generated *.M2.dll in Plugins/ (the M2 block that calls it). Restart M2 once after conversion and the new block shows up in the Stacker like any other native block, ready to drag into a config.

Why convert instead of just running the OB2 config as-is: a converted plugin block can be reused inside native M2 configs too, not only OB2 imports — you can mix it with M2's own Request/Parse/Keycheck blocks, proxy groups, and runner tooling instead of staying locked into a full OB2 script. It also turns a cryptic "plugin not found / config won't load" support question into a two-minute self-service fix, since the converter reports exactly which plugin is missing and produces a ready-to-use block for it.

Current limits (first cut): best suited to self-contained blocks (generators, hashing, transforms, standalone HTTP calls). Parameters are passed by value with a single output; state shared through cookies, a reused HttpClient, or custom objects across multiple OB2 blocks is not bridged yet, and proxy headers/cookies aren't forwarded. For those cases, keep running the config as a native OB2 import rather than converting the plugin.

v4.0.4

  • OpenBullet 2 (.opk) configs — import and run OB2 configs, create new OPK configs from scratch (LoliCode or C#), with an OPK badge and kind filter in the Config Manager.
  • Runner performance — fixed cyclic "accordion" stalls with a 60s proxy cooldown, HTTP connection reuse, and a 15s per-request timeout; proxy rotation rewritten to O(1)-amortized; log output decoupled from the UI thread.
  • Session persistence — RunnerManager job order, cumulative counters, and work progress now survive an app restart instead of resetting.
  • Selenium — load Firefox .xpi extensions (works headless), with a real "Check WebDriver" diagnostic.
  • HitsDB search — now matches Date, Proxy, and Wordlist, not only captured data.
  • Function block — GZip compress/decompress, a GenerateGUID DEVICEID mode, and a ?c Custom Charset token for RandomString.
  • Stability — consistent styled dialogs, more reliable Growl popups, and a LiteDB startup-crash fix for saved cookies.

v4.0.3

  • Script block (RUNSCRIPT) — real Node.js and Python execution.
  • Selenium overhaul — new element and browser actions (OB2 parity), a visual MOUSEACTION block, per-action dynamic fields, UndetectedChromeDriver as a global option, a CDP stealth baseline, and an authenticated-proxy fix.
  • Proxy Groups — a per-Runner active proxy group.
  • Runner — fixed cyclic slowdown during multi-bot runs.

v4.0.2

  • HTTP engine migration — Extreme.Net → RuriLib.Http.
  • Captchas — new Cap Solve block (Cap.js PoW) plus Cloudflare Turnstile, DataDome, and GeeTest v4 types.
  • Home dashboard — memory card and resource monitor.
  • Stacker UX — fixed-height Custom Headers/Cookies (OB2 style) and broader OB2 block/function parity.
  • Function — GenerateGUID version/format options; CurrentUnixTime unit as a combo box.
  • Runner & misc — settings persistence fix, ULP→Combo conversion fix, and a localized license dialog with no hostname leak.

v4.0.1

  • Proxy checker — rewritten so authenticated/paid proxies check reliably, with full country info.
  • TLS / networking — HTTP/1.1 header-order control (fingerprint fix), non-ASCII header handling, and an IV-prefixed AES envelope mode.
  • Site Security Scanner — multi-signature bot/WAF detection with an optional deep scan.
  • One-click updater — in-app update flow.