# Libcurl.js Changelog:

## v0.7.4 (12/1/25):
- Export `libcurl.wasm` in the NPM package ([PR #8](https://github.com/ading2210/libcurl.js/pull/8))
- Allow requests to `.onion` domains (overriding [upstream curl behavior](https://github.com/curl/curl/discussions/11125))
- Use the latest versions of curl and brotli 

## v0.7.3 (10/28/25):
- Add an option in the API to control the HTTP protocol version
- Add better error messages for `libcurl.fetch` before initialization
- Update Mbed TLS, nghttp2, and cJSON libraries

## v0.7.2 (9/4/25):
- Use the latest versions of Mbed TLS, curl, and nghttp2

## v0.7.1 (5/2/25):
- Use the latest versions of Mbed TLS, curl, and nghttp2
- Compile Mbed TLS and curl with `-O3` for better performance (however the bundle size is slightly larger as a result)

## v0.7.0 (1/24/25):
- Switch to Mbed TLS for the TLS backend
  - This fixes some TLS certificate errors that were occurring on some sites with WolfSSL
- Fix a null pointer dereference bug with websockets
- Store the CA certificates bundle more efficiently 
- The WASM size has decreased from 1.4MB to 1.2MB

## v0.6.22 (1/10/25):
- Remove Emscripten's maximum socket limit of 64 
- Fix handling of sub-protocols in Websockets

## v0.6.21 (12/25/24):
- Work around a [WolfSSL bug](https://github.com/wolfSSL/wolfssl/issues/8137) causing requests to open.spotify.com to fail 

## v0.6.20 (11/10/24):
- Fix bug with response body getting corrupted

## v0.6.19 (11/1/24):
- Improve download speeds even more by reducing memory copies 
- Fix wrong mime type being reported in response blob

## v0.6.18 (10/29/24):
- Improve download speeds by increasing libcurl's internal buffer size and listening directly for websocket messages

## v0.6.17 (10/24/24):
- Enable a per host connection limit. This defaults to 6, which is the same as most web browsers.
- Use the latest WolfSSL again and compile with workarounds
- Upgrade to curl 8.10.1

## v0.6.16 (10/2/24):
- Fix a bug with `Headers` objects and `Request` objects not being properly handled when passed into `libcurl.fetch`
- Errors thrown are now `Error` or `TypeError` objects instead of plain strings

## v0.6.15 (9/6/24):
- WolfSSL has been downgraded to v5.6.6 due to an upstream regression

## v0.6.14 (9/4/24):
- All dependencies have been updated to the latest versions
- `libcurl.load_wasm` now returns a promise that resolves when the WASM has finished loading
- Unused protocol support has been disabled in the curl binary, resulting in 100kb binary size savings

## v0.6.13 (9/1/24):
- A minor bug where the hostname for TCP connections would be wrong in certain cases has been fixed. 

## v0.6.12 (7/28/24):
- The APIs from [wisp-client-js](https://github.com/MercuryWorkshop/wisp-client-js) are now exposed at `libcurl.wisp`

## v0.6.11 (7/18/24):
- Add support for SOCKS5, SOCKS4, and HTTP proxies

## v0.6.10 (7/11/24):
- Fix a problem where the websocket URL wouldn't be set properly in some cases

## v0.6.9 (7/10/24):
- Fix a possible double free when requests get aborted
- Handle `ReadableStream` objects as the request payload
- Support the Clang AddressSanitizer

## v0.6.8 (4/30/24):
- Add support for relative URLs in HTTP sessions
- Better error handling for invalid URLs

## v0.6.7 (3/26/24):
- Fix handling of `Request` objects when passed into `libcurl.fetch`

## v0.6.6 (3/20/24):
- Fix random segfaults due to an improper invocation of libcurl

## v0.6.5 (3/20/24):
- Update Wisp client and server
- Compile WolfSSL with greater site support

## v0.6.4 (3/20/24):
- Fix handling of request bodies

## v0.6.3 (3/20/24):
- Fix an error during websocket cleanup

## v0.6.1 (3/20/24):
- Fix NPM package exports

## v0.6.0 (3/20/24):
- Refactor JS and C code
- Allow for multiple sessions with separate connection pools
- Switch to wolfSSL instead of OpenSSL for significantly smaller binaries
- Add support for sending cookies automatically
- Add NPM export for bundled version

## v0.5.3 (3/11/24):
- Update Wisp client and server, which improves error handling
- Expose the wisp-client-js version in the API

## v0.5.2 (3/10/24):
- Fix a bug with error handling

## v0.5.1 (3/10/24):
- Added support for aborting requests

## v0.5.0 (3/9/24):
- Added support for streaming HTTP responses via a readable stream
- Improve compatibility for older browsers
- Support for all types of fetch request bodies

## v0.4.2 (3/7/24):
- Expose a function to get error strings

## v0.4.1 (3/7/24):
- Fix handling of duplicate HTTP headers

## v0.4.0 (3/7/24):
- Add TLS socket support
- Add function to get the CA cert bundle
- Re-add wsproxy support
- Add custom network transport support
- Split WebSocket API into simple `libcurl.CurlWebSocket` and `libcurl.WebSocket` polyfill
- Refactor WebSocket API code

## v0.3.9 (3/3/24):
- Fix running libcurl.js inside a web worker

## v0.3.8 (2/28/24):
- Update Wisp client and server
- Expose Wisp client API functions

## v0.3.7 (2/27/24):
- Pin C library versions to stable
- Load the CA certs directly from memory instead of from the Emscripten virtual filesystem

## v0.3.6 (2/26/24):
- Fix ES6 module syntax

## v0.3.4 (2/24/24):
- Limit max TCP connections to 50

## v0.3.3 (2/4/24):
- Fix a memory leak with WebSockets

## v0.3.2 (2/4/24):
- Fix handling of 204 and 205 response codes
- Add verbose option to WebSocket API
- Fix conversion of request payloads

## v0.3.1 (2/3/24):
- Add a copyright notice to the JS bundle

## v0.3.0 (2/3/24):
- Add API to get the libcurl.js version and C library versions
- Add checks to ensure that the Websocket proxy URL has been set 

## v0.2.0 (2/2/24):
- Add an option to redirect the verbose curl output.
- Use separate callbacks for stdout and stderr.

## v0.1.2 (2/1/24):
- Fix bundling the WASM into a single file
- Add unit tests

## v0.1.1 (1/29/24):
- Don't set a default websocket proxy URL

## v0.1.0 (1/28/24):
- Initial release on NPM
- Add Github Actions for automatic builds
- Add WebSocket support
- Add Fetch API support 