# Changelog ## v0.10.0 - Updated dependencies - Adapted to Rust 1.67.1. - [BREAKING] removed `fetch` module (use [`gloo-net`](https://docs.rs/gloo-net/)) - [BREAKING] removed `websocket` module (use [`gloo-net`](https://docs.rs/gloo-net/) or [`wasm-sockets`](https://docs.rs/wasm-sockets/)) - [BREAKING] removed `web-storage!` module (use [`gloo-storage`](https://docs.rs/gloo-storage/)) - [BREAKING] removed `log!` and `error!` macros (use [`gloo-console`](https://docs.rs/gloo-console/)) - [BREAKING] removed `md!` macro (use an external crate + `El::from_html`) - [BREAKING] removed `cookies()` function (use an external crate like [cookie](https://docs.rs/cookie/)) - [BREAKING] removed `panic-hook` feature (use [`console_error_panic_hook`](https://docs.rs/console_error_panic_hook)) - [BREAKING] removed `serde-json` and `serde-wasm-bindgen` features - [BREAKING] added `routing` feature ## v0.9.2 #### Fixed - Make `fetch::JsonError` public. - Adapted to Rust 1.61.0. - Make Seed compile with `wasm_bindgen >= v0.2.81` - Decoding WebSocket JSON messages ## v0.9.1 - Fix: `serde-wasm-bindgen` feature. ## v0.9.0 - [BREAKING] Base path changed from `Rc>` to `Rc<[String]>`. It means also `Orders::clone_base_path` returns a slice. - [BREAKING] Hid markdown functionality behind optional `markdown` feature - [BREAKING] Added argument `Option<&Namespace>` to functions `Node::from_html` and `El::from_html`. - [BREAKING] Added blanket `impl> IntoNode for Option`. This might conflict with local `impl`s of `IntoNodes`, but should make those unnecessary and safe to remove. - [BREAKING] Removed the deprecated `browser::service::fetch` module. - [BREAKING] `fetch::Error::SerdeError` changed to `fetch::Error::JsonError` - Fixed: Prevent link listener from intercepting links with the `download` attribute. - Fixed an issue in vdom where inputs with invalid contents being cleared on Firefox. - Added helpers for wheel event: `wheel_ev` and `to_wheel_event`. - Added `Response::blob` - Added `panic-hook` feature, enabled by default, to conditionally include `console_error_panic_hook` - Added macro `raw_svg!` (#589). - Added `browser::dom::Namespace` to `prelude`. - Added `At::Role` variant. - Added `Response::headers`. - Added `Headers::new`. - Added `Header::name()` and `Header::value()`. - Added `fetch::form_data::FormData` and `Request.form_data`. - Added `serde-wasm-bindgen` and `serde-json` features to use either `serde-wasm-bindgen` or `serde_json` for JSON de-/serialization. `serde-wasm-bindgen` reduces final binary size for downstream users.`serde-json` is enabled by default. - Added method to return detailed error response from server with `FetchError`. - Added `Request.body_ref` to take the body by reference. - Added `sl_input` to the `custom_elements` example. - Added examples `drag_and_drop`, `record_screen`, `e2e_encryption` and `counters`. - Added `charts` example. - Added `page_trait` example. - Added `on_insert` event on elements, triggered when they are inserted into the DOM. - Implemented `AsAtValue` for `Option` - Implemented `From>` for `Headers`. - Implemented `FromIterator<(impl Into>, impl Into>)>` for `Headers`. - Use `wheel_ev` in `canvas` example to zoom rectangle with mouse scroll wheel. - Derived `Eq` and `PartialEq` for `Header`. - Element macros like `div!` can now contain `Iterator`s inside of `Option` values. Previously only one or the other was possible. - Adapted to Rust 1.60.0. - Updated dependencies ## v0.8.0 - [BREAKING] Rename `linear_gradient!` to `linearGradient!` for consistency with the other svg macros (same with `radial_gradient!` and `mesh_gradient!`) (#377). - Fixed `base_path` with a trailing slash parsing / handling. - Fixed `C` macro memory / WASM file size issue. - Added examples `tests`, `service_worker`, `resize_observer`, `component_builder`, `i18n` and `unsaved_changes` (#459). - Fixed `UrlRequested` handling (#459). - [BREAKING] Hidden and renamed module `effects` to `effect`. - Added `App::update_with_option`. - Added `Navigator` and `BeforeUnloadEvent` into Seed's `web_sys`. - Fixed runtime exception when using binary data in WS on some browsers (#470). - Exported macro `with_dollar_sign!`. - [deprecated] `RequestAnimationFrameTime` + `RequestAnimationFrameHandle` + `request_animation_frame` are deprecated. - [deprecated] `set_interval` + `set_timeout` are deprecated. - [deprecated] `class!` is deprecated in favor of `C!`. - [BREAKING] Removed deprecated `AppBuilder` with `sink`, `mount_point`, `routes`, `window_events`, etc. (Use `App::start` instead.) - [BREAKING] Removed support for deprecated global messages (`GMsg`, `GMs`, ..). Use `orders.notify` + `orders.subscribe` instead. - Relaxed `view` and `update` type in `App::start` from `fn` to `FnOnce + Clone`. - [BREAKING] Removed deprecated `Ev::TriggerUpdate`. - [deprecated] `simple_ev` is deprecated. - Exposed dependency `console_error_panic_hook`. - Fixed double `UrlChanged` firing by removing `hashchange` listener. - Added `Request::bytes`. - Build Changes - Remove all workspace=false and instead defined default_to_workspace=false in the config. - Build Changes - Make all core cargo-make tasks private with default namespace and remove clear=true from all seed tasks. - Build Changes - Remove installation instructions and instead depend on core cargo-make installation tasks. - Build Changes - Replace rust for_each implementation with duckscript which is much shorter, simpler and faster (in case you don't have cargo-script installed). - Build Changes - Enforce minimal cargo-make version: 0.32.1. - Added new `Orders` methods `request_url` (#518) and `msg_sender` (#502). - [BREAKING] `Orders::msg_mapper` returns `Rc<..>` instead of `Box<..>`. - Reexported `pub use wasm_bindgen_futures::{self, spawn_local, JsFuture};` and `pub use futures::{self, future::{self, FutureExt, TryFutureExt}};` in `lib.rs`. - Updated example `websocket`. - Fixed link handling (#527). - Fixed attribute ordering (#335). - Implemented `Display` for `Node` (#294). - Fixed url requests from pages when the hash routing is used. - Fixed url encoding, serializing in `push_route` and the method `Url::hash_path`. - Added `Url` methods `skip_hash_base_path` and `encode_uri_component` (#424). - Added `Node::NoChange`. ## v0.7.0 - [BREAKING] Custom elements are now patched in-place (#364). Use `el_key` to force reinitialize an element. - Added `el_key` method for adding keys to `El`s (#354). - Enabled all additional markdown [extensions](https://docs.rs/pulldown-cmark/latest/pulldown_cmark/struct.Options.html). - Removed `'static` bound from `El` and `Node`. - [BREAKING] Changed `perform_cmd` and `seed::browser::service::fetch` return type to `T` instead of `Result`. - Added Aria attributes. - [BREAKING] `UpdateEl` changed to `UpdateEl` and `fn update(self, el: &mut T);` to `fn update_el(self, el: &mut El);` (#370). - Added trait `UpdateElForIterator`. - Added support for all `Iterator`s, `Option`, `u32`, `i32`, `usize`, `f64` and references in element creation macros (#365, #128). - [BREAKING] `String` implements `UpdateEl`. (References are now required for `String` properties, e.g. `div![&model.title]`.) - Fixed `href` detection to ignore `use` elements (#384). - Added methods `subscribe`, `subscribe_with_handle`, `perform_cmd_with_handle`, `stream`, `stream_with_handle` and `notify` into `Orders` (#130). - Added `cmds::timeout`, `stream::interval`, `stream::window_event`, `stream::document_event`, `subs::UrlChanged` and `subs::UrlRequested` (#131). - [BREAKING] Futures in `perform_cmd` and `perform_g_cmd` are executed immediately. - Added `App` methods `notify` and `notify_with_notification`. - [BREAKING] `App` method `process_cmd_and_msg_queue` renamed to `process_effect_queue`. - [BREAKING] Url change listeners are always active (even if `routes` is not defined). - Added `cmds`, `streams`, `subs`, `CmdHandle`, `SubHandle` and `StreamHandle` into the Seed's prelude. - [BREAKING] Removed module `next_tick`. - Added method `App::start` (alternative to `AppBuilder`) (#376, #382). - Added trait `GetElement` + included in the `prelude` (alternative to `MountPoint`, used in `AppStart`). - Derive `Debug` for `ElRef`. - Added macros `C!` and `IF!` and helper `not` (#375). - Added trait `ToClasses` + included in the `prelude`. - `ev` accepts handlers that return `Msg`, `Option` or `()` (#394). - [BREAKING] `EventHandler::new` accepts only handlers that return `Option`. - [BREAKING] `ev`-like functions and some `Orders` method require `'static` bound for generic types (temporary). - `Orders::after_next_render` now accepts callbacks that return `Msg`, `Option` or `()`. - [deprecated] `View` is deprecated in favor of `IntoNodes`. - [BREAKING] `View` isn't implemented for `El` and `Vec`. - [BREAKING] `Node::add_listener` renamed to `add_event_handler`. - Rewritten `README.md`. - Added new Fetch API module. See [`seed::browser::fetch`](https://docs.rs/seed/0.7.0/seed/browser/fetch/index.html) (#353) - [deprecated] - `seed::browser::service::fetch` module is deprecated in favor of `seed::browser::fetch`. - Implemented `IntoNodes` for `Option>` and `Option>>`. - Implemented `UpdateEl` for `i64` and `u64`. - Reset properties `checked` and `value` on attribute remove (#405). - Added examples `markdown`, `tea_component`, `subscribe`, `custom_elements`, `fetch`, `url`, `pages`, `pages_hash_routing`, `pages_keep_state`, `auth`, `bunnies` and `graphql` (#400). - Updated examples. - Removed examples `app_builder`, `orders`, `server_interaction`, `counter_advanced` and `mathjax`. - Example `animation_frame` renamed to `animation`. - Added base url handling + method `Orders::clone_base+path` (#369). - [BREAKING] Updated `Url` and `routing.rs`. - [deprecated] `seed::browser::service::storage`. - Added `LocalStorage`, `SessionStorage` and `WebStorage` (trait). - Added `TouchEvent` and `touch_ev` definitions. - Added `DragEvent` and `drag_ev` definitions. - [BREAKING] Renamed `to_kbevent` to `to_keyboard_event`. - [BREAKING] `after_next_render` returns `RenderInfo`. - `web_sys`, `js_sys` and `wasm_bindgen` + `wasm_bindgen::JsCast` included in `prelude`. - Added `WebSocket` + related items (#8). - Exposed `App::mailbox`. - Added `streams::backoff` + updated `websocket` example. - Added `#[derive(Debug)]` to `fetch::Response` ## v0.6.0 - Implemented `UpdateEl` for `Filter` and `FilterMap`. - Added method `El::is_custom(&self)`. - Fixed custom elements patching (#325). - Removed unnecessary error message for comment nodes. - [BREAKING] Removed deprecated `update` and `trigger_update_ev`. - [BREAKING] Removed the remains of lifecycle hooks. - Fixed `value` and `checked` setting for input elements (a bug in VirtualDOM patch algorithm). - [BREAKING] Removed unpredictable internal input listeners - Seed will not longer react to external input value changes. - [BREAKING] Use `EventHandler` instead of `Listener`. (`Listener` is now used as the internal DOM EventListener representation.) - [deprecated] `raw_ev` is deprecated in favor of `ev`. Functionality is the same. - Improved performance - rewritten event-handling and other refactors in VirtualDOM. - Fixed processing of multiple event-handlers (#138). - Added DOM Element references - see `ElRef` and examples (`canvas`, `user_media` or `todomvc`) (#115). - Removed `Ms: Clone` restriction as much as possible. - [BREAKING] Added or changed `Custom` variant from `Custom(String)` to `Custom(Cow<'static, str>)` in `Ev`, `Tag`, `At` and `St`. Use function `from` to create custom entities (e.g. `At::from("my-attribute")`) (#208). - Added macro `nodes!`. It accepts `Node` and `Vec`. - Refactored all examples. - Fixed and rewritten example `todomvc`. - Renamed `counter` example to `counter_advanced`. - Renamed `drop` example to `drop_zone`. - Removed `server_interaction_detailed` example. - Added a new simpler `counter` example. - Changed example in the main `README.md`. - Added flag `#![forbid(unsafe_code)]` so the Seed will be marked as a safe library by the Rust community tools. - Removed `clone` restriction from the method `Effect::map_msg`. - Implemented `UpdateEl` for `FlatMap`. - Adapted to Rust 1.41.0. ## v0.5.1 - [BREAKING] `MessageMapper::map_message` changed to `MessageMapper::map_msg`. - [BREAKING] `fetch` and `storage` moved to `seed::browser::service::{fetch, storage}`, but reimported at the lib level. Ie: `seed::fetch`, and `seed::storage`. - Added support for `Vec` and `Vec