JIRO v0.3.1 Update: WinError 32 Auto-Heal, Unified Packages, Complete Changelog
By Adarsh Kushwah, CEO & Founder of Blackvault Technology
September 26, 2026
From v0.3.0 to v0.3.1: What Shipped and What Changed
JIRO v0.3.1 is more than a patch — it's the completion of a platform journey that started with v0.3.0. This post breaks down everything: what v0.3.0 delivered, what v0.3.1 fixes, and why it matters.
What Shipped in v0.3.0 (September 15, 2026)
v0.3.0 was the foundation. It introduced:
| Feature | Details |
|---|---|
| RFC 8628 Device Code Flow | CLI authenticates via browser. Works over SSH, Docker, headless servers |
| Encrypted Credential Storage | AES-256-GCM with machine-derived PBKDF2 key |
| Self-Hosted 3-Tier Pricing | Free (100 RPM, 10K RPD), Pro (500 RPM, 100K RPD), Enterprise (1,000 RPM, 1M RPD) |
| HMAC-SHA256 License Validation | Offline-first, hardware-bound, max 3 devices |
| CLI License Commands | jiro license activate, info, deactivate, validate |
| Device Code Polling | Rate-limited per RFC 8628 specification |
What Broke in v0.3.0
Despite being a landmark release, v0.3.0 had issues:
- WinError 32 on update:
jiro updateon Windows failed because the runningjiro.exelocked itself - Firestore user resolution: Device authorization didn't resolve the Firestore user document before issuing API keys
- Firestore emulator flows: Reported an unconfigured server when the emulator was active
normalize_profileAttributeError: Crashed onSocialProfileobjects with type defaults toprofile_CurlResponseAdaptermissing methods:raise_for_status()andjson()were absent- Cloud credit revocation: Malformed request handling was unsafe
What's New in v0.3.1
v0.3.1 builds on v0.3.0 with critical fixes, hardened infrastructure, and a unified package version.
Critical Fix: WinError 32 Auto-Heal
The #1 blocker for Windows users. The updater now:
- Force-kills any running
jiro.exeviataskkill /F /IM jiro.exe - Retries the pip install up to 5 times with exponential backoff (2s, 4s, 8s, 12s, 15s)
- Falls back to
heal_pip_install()on non-Windows platforms
jiro update
# Now works without WinError 32!
Auto-Heal Update System
Three new functions in self_healing.py:
heal_pip_install(pip_args, max_retries=5): Runs pip install with automatic retry on file lock errors_kill_jiro_exe(): Force-kills running jiro.exe on Windows_is_winerror_32(exc): Detects WinError 32 from exception strings for precise matching
Unified 0.3.1 Packages
The CLI, JavaScript SDK, Python SDK, and Cloud API all publish as 0.3.1:
pip install jirosearch==0.3.1
npm install jiro-sdk@0.3.1
Additional Features Added in v0.3.1
- Built-in engine plugin auto-registration (arXiv, GitHub, Google Scholar, Hacker News, Reddit, Wikipedia)
- Cloud pricing endpoint and synchronized credit actions across all operations
- CI workflow: pytest (non-network tests) + pip-audit + gitleaks on every push
- Release guard tests for social normalizers and the curl response adapter (15 tests)
- Hardened WAF query normalization and high-confidence payload blocking
- Improved async session validation and Firebase realtime token refresh
- Test suite: 835 tests (pytest 9.1.1 / pytest-asyncio 1.4.0)
Complete v0.3.0 to v0.3.1 Comparison
| Area | v0.3.0 | v0.3.1 |
|---|---|---|
| Auth | RFC 8628 Device Code Flow | RFC 8628 + hardened internal auth + WAF normalization |
| Pricing | 3-Tier (Free/Pro/Enterprise) | 3-Tier + Cloud pricing endpoint + synchronized credits |
| Licensing | HMAC-SHA256, hardware-bound | Same + device-auth Firestore resolution fix |
| Update System | Manual only | Auto-heal with WinError 32 recovery and exponential backoff |
| Package Version | Mixed across packages | All unified at 0.3.1 |
| Tests | ~800 | 835 (+15 release guard tests) |
| CI | Basic | pytest + pip-audit + gitleaks on every push |
| WAF | Basic | Hardened with query normalization |
| Circuit Breakers | Present | Hardened failure handling |
| Firebase | Token refresh | Resilient loading states + emulator support |
| Normalization | Missing | _CurlResponseAdapter now has raise_for_status() and json() |
All Bug Fixes in v0.3.1
- WinError 32 blocking pip upgrades — auto-heal with retry
- Device authorization Firestore user resolution — resolves before issuing API keys
- Firestore emulator flows — no longer reports unconfigured server
- Cloud credit revocation — malformed request handling now safe and consistent
- Metrics shutdown paths — safe and consistent
normalize_profileAttributeError — type defaults toprofile, dict results pass through unchanged_CurlResponseAdaptermissing methods — now providesraise_for_status()andjson()
Security Hardening
v0.3.1 continues the security trajectory from v0.3.0:
| Security Area | v0.3.0 | v0.3.1 |
|---|---|---|
| Device Code Polling | Rate-limited per RFC 8628 | Same + hardened |
| License Keys | Hardware-bound, max 3 devices | Same + Firestore fix |
| Grace Period | 24-hour | Same |
| WAF | Basic | Hardened with query normalization |
| Internal Auth | Optional | Required + API key ownership checks |
| Circuit Breakers | Present | Hardened failure handling |
Upgrade Instructions
# Update via the CLI
pip install --upgrade jirosearch==0.3.1
jiro update
jiro doctor
Try JIRO Today
JIRO is 100% free and open-source under the MIT license:
git clone https://github.com/blackvault-technology/jiro.git
cd jiro
pip install -e .
jiro doctor
jiro update
Or try the cloud version at https://searchjiro.vercel.app — 100 RPM / 10K RPD free, no credit card required.
Looking Ahead
What's coming next?
- More search engines (Startpage, Qwant, Ecosia, Naver)
- More social platforms (Mastodon, Bluesky expansion)
- Better AI models (Claude 3.5, GPT-4o, local LLM support with Ollama)
- Plugin system for custom engines and parsers
- Distributed scraping for massive scale (Kubernetes-based)
- Enterprise features (SSO, audit logs, compliance reporting)
Frequently Asked Questions
Was v0.3.0 broken?
No. v0.3.0 was a complete, functional release. The WinError 32 update blocker and Firestore resolution issues were edge cases that affected specific workflows. v0.3.1 fixes all of them.
Do I need to reinstall after upgrading?
No. pip install --upgrade jirosearch==0.3.1 handles the update. jiro update also works now with the auto-heal system.
What Python version does JIRO support?
JIRO supports Python 3.11+ and is tested on Python 3.14. It uses FastAPI for the web framework, Pydantic for data validation, and aiohttp for async HTTP requests.
Is self-hosting still free?
Yes. The core JIRO engine is 100% free and open-source under the MIT license. The free tier provides 100 RPM, 10K RPD. The Pro tier is ₹4,999 one-time and the Enterprise tier is ₹14,999 one-time.
About the Author
Adarsh Kushwah is the CEO & Founder of Blackvault Technology, based in Indore, MP, India. He built JIRO to solve the problem of expensive, closed-source search APIs. With over 8 years of experience in full-stack development and systems architecture, Adarsh has led engineering teams at multiple startups before founding Blackvault Technology.
Company: Blackvault Technology
GitHub: blackvault-technology/jiro
JIRO v0.3.1 — From v0.3.0 Foundation to Auto-Heal Everything. Local-first. AI-native.