Repository navigation
Releases
v1.6.0
Lithium.js v1.6.0 - le tinywiny update fr fr
New:
• Custom search engines - search_engines.register("bing", (query) => "..."), unregistered names fall back to Google instead of breaking navigation
• Header overrides - headers.set for outgoing header overrides, headers.searchEngineHeaders for overrides scoped to just the current search engine's origin
• Device spoofing - headers.device overrides navigator/screen properties (userAgent, platform, screen size, etc.) so the proxied page's own JS sees a different device
• network_log() entries now include a caveats field naming exactly which configured headers got blocked by the browser and why
Changed:
• Repo moved to Lithium-Foundry/Lithium.js, everything updated to match (install commands, error messages, links)
• Added a GitHub Actions workflow that publishes to npm automatically when you cut a GitHub Release
• Referer set via headers.set.referer now gets auto-routed to fetch's real referrer option instead of silently doing nothing
Heads up, not a Lithium limitation:
• Cookie, Host, Origin, anything Sec-/Proxy-, and a few others can't be set from page JS at all, that's a browser restriction (Fetch spec forbidden headers), not something any library can route around
• User-Agent isn't spec-forbidden anymore but Chrome silently drops it from fetch() regardless (old Chromium quirk), Firefox honors it fine
Tested with 270+ checks across server/client/fixtures, all green, no regressions from the last patch. Full details in the README.
1.5.1
Lithium.js v1.5.1 - le small update1!1!1!
New:
• Proxy/transport registry - proxies.list(), transports.register(...), etc. Custom proxies/transports are now first-class instead of hardcoded
• npx lithium doctor - checks your install, package versions, and catches wrong transport generations before they break silently
• Structured errors (LithiumError with .code) instead of generic throws
• Events + navigation: on("navigate", ...), back() / forward() / reload() / search() / current_url() - works the same for UV and Scramjet now
• config object - config.proxy, config.transport, config.ready, etc.
• Debug mode - init_lithium({ debug: true }) for verbose [lithium debug] tracing
• Network log - network_log() / on("request", ...), basically devtools-lite for the proxied page's fetch/XHR traffic
• Header policy - block/allow specific headers, or passthrough mode to bypass filtering entirely (heads up: this only affects fetch/XHR, not <img>/<script> tag loads, no hook point for those)
• Colored console/CLI output (auto-detects TTY, respects NO_COLOR)
• middleware, wisp, quiet, strict server options
• Custom backend registration - bring your own proxy engine or transport
Changed:
• Server rewritten on top of the new registry
• Client split into per-proxy backend modules (client/backends/ultraviolet.js / scramjet.js)
Tested with 230+ checks across server/client/fixtures, all green. Full details in the README.