The `Update` struct/object will now contain a `raw_json`/`rawJson` property to be able to read parts of server's json response that are not handled by the plugin.
- [`ce11079f`](https://github.com/tauri-apps/plugins-workspace/commit/ce11079f19852fbefdecf0e4c7d947af3624fee0) ([#2280](https://github.com/tauri-apps/plugins-workspace/pull/2280) by [@FabianLars](https://github.com/tauri-apps/plugins-workspace/../../FabianLars)) Explicitly drop `arboard::Clipboard` on exit. Add recommendation to not use read methods on the mainthread.
## \[2.2.0]
## \[2.2.0]
- [`3a79266b`](https://github.com/tauri-apps/plugins-workspace/commit/3a79266b8cf96a55b1ae6339d725567d45a44b1d) ([#2173](https://github.com/tauri-apps/plugins-workspace/pull/2173) by [@FabianLars](https://github.com/tauri-apps/plugins-workspace/../../FabianLars)) Bumped all plugins to `v2.2.0`. From now, the versions for the Rust and JavaScript packages of each plugin will be in sync with each other.
- [`3a79266b`](https://github.com/tauri-apps/plugins-workspace/commit/3a79266b8cf96a55b1ae6339d725567d45a44b1d) ([#2173](https://github.com/tauri-apps/plugins-workspace/pull/2173) by [@FabianLars](https://github.com/tauri-apps/plugins-workspace/../../FabianLars)) Bumped all plugins to `v2.2.0`. From now, the versions for the Rust and JavaScript packages of each plugin will be in sync with each other.
- [`10513649`](https://github.com/tauri-apps/plugins-workspace/commit/105136494c5a5bf4b1f1cc06cc71815412d17ec8) ([#2204](https://github.com/tauri-apps/plugins-workspace/pull/2204) by [@RickeyWard](https://github.com/tauri-apps/plugins-workspace/../../RickeyWard)) Add `dangerous-settings` feature flag and new JS `danger` option to disable tls hostname/certificate validation.
## \[2.2.0]
## \[2.2.0]
- [`3a79266b`](https://github.com/tauri-apps/plugins-workspace/commit/3a79266b8cf96a55b1ae6339d725567d45a44b1d) ([#2173](https://github.com/tauri-apps/plugins-workspace/pull/2173) by [@FabianLars](https://github.com/tauri-apps/plugins-workspace/../../FabianLars)) Bumped all plugins to `v2.2.0`. From now, the versions for the Rust and JavaScript packages of each plugin will be in sync with each other.
- [`3a79266b`](https://github.com/tauri-apps/plugins-workspace/commit/3a79266b8cf96a55b1ae6339d725567d45a44b1d) ([#2173](https://github.com/tauri-apps/plugins-workspace/pull/2173) by [@FabianLars](https://github.com/tauri-apps/plugins-workspace/../../FabianLars)) Bumped all plugins to `v2.2.0`. From now, the versions for the Rust and JavaScript packages of each plugin will be in sync with each other.
- [`784a54a3`](https://github.com/tauri-apps/plugins-workspace/commit/784a54a39094dfbaaa8dd123eb083c04dc6c3bb2) ([#2344](https://github.com/tauri-apps/plugins-workspace/pull/2344) by [@madsmtm](https://github.com/tauri-apps/plugins-workspace/../../madsmtm)) Use `objc2` instead of `objc`.
## \[2.2.0]
## \[2.2.0]
- [`3a79266b`](https://github.com/tauri-apps/plugins-workspace/commit/3a79266b8cf96a55b1ae6339d725567d45a44b1d) ([#2173](https://github.com/tauri-apps/plugins-workspace/pull/2173) by [@FabianLars](https://github.com/tauri-apps/plugins-workspace/../../FabianLars)) Bumped all plugins to `v2.2.0`. From now, the versions for the Rust and JavaScript packages of each plugin will be in sync with each other.
- [`3a79266b`](https://github.com/tauri-apps/plugins-workspace/commit/3a79266b8cf96a55b1ae6339d725567d45a44b1d) ([#2173](https://github.com/tauri-apps/plugins-workspace/pull/2173) by [@FabianLars](https://github.com/tauri-apps/plugins-workspace/../../FabianLars)) Bumped all plugins to `v2.2.0`. From now, the versions for the Rust and JavaScript packages of each plugin will be in sync with each other.
- [`0afc9b6b`](https://github.com/tauri-apps/plugins-workspace/commit/0afc9b6be07bee1077f05a86285d977e57810ed9) ([#2325](https://github.com/tauri-apps/plugins-workspace/pull/2325) by [@FabianLars](https://github.com/tauri-apps/plugins-workspace/../../FabianLars)) The `Update` struct/object will now contain a `raw_json`/`rawJson` property to be able to read parts of server's json response that are not handled by the plugin.
## \[2.3.1]
## \[2.3.1]
- [`57efb47c`](https://github.com/tauri-apps/plugins-workspace/commit/57efb47c116f880477f72f02a8e4239e88007d44) ([#2235](https://github.com/tauri-apps/plugins-workspace/pull/2235) by [@amrbashir](https://github.com/tauri-apps/plugins-workspace/../../amrbashir)) Add `Builder::header` and `Builder::headers` method to configure default headers for updater.
- [`57efb47c`](https://github.com/tauri-apps/plugins-workspace/commit/57efb47c116f880477f72f02a8e4239e88007d44) ([#2235](https://github.com/tauri-apps/plugins-workspace/pull/2235) by [@amrbashir](https://github.com/tauri-apps/plugins-workspace/../../amrbashir)) Add `Builder::header` and `Builder::headers` method to configure default headers for updater.
- [`78acfa45`](https://github.com/tauri-apps/plugins-workspace/commit/78acfa456f343c0af5fbf35660802d14ff7a5eca) ([#2027](https://github.com/tauri-apps/plugins-workspace/pull/2027) by [@twlite](https://github.com/tauri-apps/plugins-workspace/../../twlite)) `addListener` now returns a cleanup function instead of `void` to remove the listener.
## \[2.2.1]
## \[2.2.1]
- [`05cca602`](https://github.com/tauri-apps/plugins-workspace/commit/05cca602d927c30014d3892438ca28d99bc4e1d3) ([#2210](https://github.com/tauri-apps/plugins-workspace/pull/2210) by [@renovate](https://github.com/tauri-apps/plugins-workspace/../../renovate)) **Breaking change:** Updated tokio_tungstenite to `0.26`. This may be a breaking change if you use the `tls_connector` Builder method in Rust.
- [`05cca602`](https://github.com/tauri-apps/plugins-workspace/commit/05cca602d927c30014d3892438ca28d99bc4e1d3) ([#2210](https://github.com/tauri-apps/plugins-workspace/pull/2210) by [@renovate](https://github.com/tauri-apps/plugins-workspace/../../renovate)) **Breaking change:** Updated tokio_tungstenite to `0.26`. This may be a breaking change if you use the `tls_connector` Builder method in Rust.
if("__TAURI__"inwindow){var__TAURI_PLUGIN_WEBSOCKET__=function(){"use strict";functione(e,t,s,n){if("a"===s&&!n)thrownewTypeError("Private accessor was defined without a getter");if("function"==typeoft?e!==t||!n:!t.has(e))thrownewTypeError("Cannot read private member from an object whose class did not declare it");return"m"===s?n:"a"===s?n.call(e):n?n.value:t.get(e)}functiont(e,t,s,n,i){if("function"==typeoft||!t.has(e))thrownewTypeError("Cannot write private member to an object whose class did not declare it");returnt.set(e,s),s}vars,n,i;"function"==typeofSuppressedError&&SuppressedError;constr="__TAURI_TO_IPC_KEY__";classa{constructor(){this.__TAURI_CHANNEL_MARKER__=!0,s.set(this,(()=>{})),n.set(this,0),i.set(this,[]),this.id=function(e,t=!1){returnwindow.__TAURI_INTERNALS__.transformCallback(e,t)}((({message:r,id:a})=>{if(a==e(this,n,"f"))for(e(this,s,"f").call(this,r),t(this,n,e(this,n,"f")+1);e(this,n,"f")ine(this,i,"f");){constr=e(this,i,"f")[e(this,n,"f")];e(this,s,"f").call(this,r),deletee(this,i,"f")[e(this,n,"f")],t(this,n,e(this,n,"f")+1)}elsee(this,i,"f")[a]=r}))}setonmessage(e){t(this,s,e)}getonmessage(){returne(this,s,"f")}[(s=newWeakMap,n=newWeakMap,i=newWeakMap,r)](){return`__CHANNEL__:${this.id}`}toJSON(){returnthis[r]()}}asyncfunctiono(e,t={},s){returnwindow.__TAURI_INTERNALS__.invoke(e,t,s)}classc{constructor(e,t){this.id=e,this.listeners=t}staticasyncconnect(e,t){consts=[],n=newa;returnn.onmessage=e=>{s.forEach((t=>{t(e)}))},t?.headers&&(t.headers=Array.from(newHeaders(t.headers).entries())),awaito("plugin:websocket|connect",{url:e,onMessage:n,config:t}).then((e=>newc(e,s)))}addListener(e){this.listeners.push(e)}asyncsend(e){lett;if("string"==typeofe)t={type:"Text",data:e};elseif("object"==typeofe&&"type"ine)t=e;else{if(!Array.isArray(e))thrownewError("invalid `message` type, expected a `{ type: string, data: any }` object, a string or a numeric array");t={type:"Binary",data:e}}awaito("plugin:websocket|send",{id:this.id,message:t})}asyncdisconnect(){awaitthis.send({type:"Close",data:{code:1e3,reason:"Disconnected by client"}})}}returnc}();Object.defineProperty(window.__TAURI__,"websocket",{value:__TAURI_PLUGIN_WEBSOCKET__})}
if("__TAURI__"inwindow){var__TAURI_PLUGIN_WEBSOCKET__=function(){"use strict";functione(e,t,s,n){if("a"===s&&!n)thrownewTypeError("Private accessor was defined without a getter");if("function"==typeoft?e!==t||!n:!t.has(e))thrownewTypeError("Cannot read private member from an object whose class did not declare it");return"m"===s?n:"a"===s?n.call(e):n?n.value:t.get(e)}functiont(e,t,s,n,i){if("function"==typeoft||!t.has(e))thrownewTypeError("Cannot write private member to an object whose class did not declare it");returnt.set(e,s),s}vars,n,i;"function"==typeofSuppressedError&&SuppressedError;constr="__TAURI_TO_IPC_KEY__";classa{constructor(){this.__TAURI_CHANNEL_MARKER__=!0,s.set(this,(()=>{})),n.set(this,0),i.set(this,[]),this.id=function(e,t=!1){returnwindow.__TAURI_INTERNALS__.transformCallback(e,t)}((({message:r,id:a})=>{if(a==e(this,n,"f"))for(e(this,s,"f").call(this,r),t(this,n,e(this,n,"f")+1);e(this,n,"f")ine(this,i,"f");){constr=e(this,i,"f")[e(this,n,"f")];e(this,s,"f").call(this,r),deletee(this,i,"f")[e(this,n,"f")],t(this,n,e(this,n,"f")+1)}elsee(this,i,"f")[a]=r}))}setonmessage(e){t(this,s,e)}getonmessage(){returne(this,s,"f")}[(s=newWeakMap,n=newWeakMap,i=newWeakMap,r)](){return`__CHANNEL__:${this.id}`}toJSON(){returnthis[r]()}}asyncfunctiono(e,t={},s){returnwindow.__TAURI_INTERNALS__.invoke(e,t,s)}classc{constructor(e,t){this.id=e,this.listeners=t}staticasyncconnect(e,t){consts=newSet,n=newa;returnn.onmessage=e=>{s.forEach((t=>{t(e)}))},t?.headers&&(t.headers=Array.from(newHeaders(t.headers).entries())),awaito("plugin:websocket|connect",{url:e,onMessage:n,config:t}).then((e=>newc(e,s)))}addListener(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}asyncsend(e){lett;if("string"==typeofe)t={type:"Text",data:e};elseif("object"==typeofe&&"type"ine)t=e;else{if(!Array.isArray(e))thrownewError("invalid `message` type, expected a `{ type: string, data: any }` object, a string or a numeric array");t={type:"Binary",data:e}}awaito("plugin:websocket|send",{id:this.id,message:t})}asyncdisconnect(){awaitthis.send({type:"Close",data:{code:1e3,reason:"Disconnected by client"}})}}returnc}();Object.defineProperty(window.__TAURI__,"websocket",{value:__TAURI_PLUGIN_WEBSOCKET__})}