* implement const cbor encoding + decoding for basic types
* implement map encoding and decoding
* fix map test
* all tests passing
* dynamically sized arrays
* smaller str encoding
* swap array and list and add more documentation
* move serialization and deserialization for each struct together
* support both legacy and new assets
* bump const serialize version
* fix asset conversion code
* pull out manganis symbol struct from tuble
* test reading old asset versions
* more list/array cleanup and bump rust version
* fix clippy
* switch cli opt port
* install playwright deps
* split cli-optimization package to avoid two dioxus' in the same crate
* fix clippy
* force the toast.png asset to be included in the linker stage #[used] has platform depedant behavior
* bundle both formats in the link section and only use the asset the cli changed
* remove sudo which doesn't exist on windows
* add binstall to the playwright workflow
* separate bin target for the old cli
* lockfile
* cargo update to get versions shaken out
* notes on binstalls, add back `.read()` for compat
* use 0.8.0-alpha.0 for const-serialize instead of 0.8
this ensures we can still publish breaking changes on 0.8 without taking over the full version
* fix clippy in example
* small debug nits
* update rust-overlay in nix
* fix flake?
* migrate to new structure
* just comment out binstalls
* just remove old test harness
---------
Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
we added some logs around unmatched ifuncs, but we actually didn't need them.
this is because ifuncs can be *new* even if there isn't and old corresponding ifunc.
* Fix exit_on_last_window_close for UserWindowEvent::CloseWindow
* fix: unify under close_requested
---------
Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
* enable musl target builds with vendored libgit2
* move git2 to bottom of list
* also fix dioxus fullstack docs builds
---------
Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
* dioxus-fullstack::Streaming: decode multiple client values from Bytes
* small nits
* remove the bidirectional stream since it doesn't work in the browser
* final cleanups
* nits
---------
Co-authored-by: Olivier Kannengieser <okanne@gmail.com>
Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
* fix(fullstack): Streaming::into_inner() returning empty stream
The Streaming struct previously maintained separate input_stream and
output_stream fields, but into_inner() always returned input_stream.
This caused it to return an empty stream on both client and server sides
where data was placed in output_stream.
Consolidate to a single stream field that properly returns the actual
stream data when into_inner() is called.
Also add examples demonstrating bidirectional streaming:
- echo_stream: passes client stream through server unchanged
- transform_stream: transforms client stream on server using filter_map
- Use stream::unfold for cleaner client-side stream generation
Reviewed-by: Claude <noreply@anthropic.com>
Commit-message-by: Claude <noreply@anthropic.com>
* fmt
* issue-5045 Trim slashes to prevent base path resolution issues in web
* Revert "issue-5045 Trim slashes to prevent base path resolution issues in web"
This reverts commit 480cd48d8537a56f57538c21e7cc98b75e8dc8ad.
* This is a more comprehensive approach. No matter how "/" gets set into
DIOXUS_ASSET_ROOT (cli arg, dioxus toml, or env var) it will be
normalized when used.
* Move the trim fix to the locations we set the variable DIOXUS_ASSET_ROOT as
this environment variable is not meant for public consumption.
* pull out trimming into a method
---------
Co-authored-by: Evan Almloff <evanalmloff@gmail.com>
Previously, when a file change event arrived while a build was in progress
(i.e., client stage was not Success/Failed/Aborted), the event was logged
and silently discarded. This caused issues with tools like stylance,
tailwind watch, or sass --watch that generate output files in response
to source file changes.
The typical failure case:
1. User saves a .module.scss file
2. dx starts rebuilding
3. stylance CLI (watching the same file) regenerates stylance.css
4. dx receives the stylance.css change event but discards it
5. Build completes with stale CSS
Now, file changes that arrive during a build are queued in a
pending_file_changes vector and processed after the build completes.