* fix autofill events
* ignore the wrong type of event like we do in desktop
* check the event type before dispatch instead of panicing on downcast
* clean up conversion
* remove example
* pull out shared event list
* pull in deserialize_raw
* unified event list
* prettier comment
* restore test
* restore alias
* normal doc comments
* move over comments
* minimize diff
* remove alias, was moved into the macro
* allow `--server` only builds!
* rollback example
* capture `/:route` routes
* fix: properly implement file uploads in forms
* implement desktop form uploads
* Performant serialization of form bytes
* finish up file stuff
* cleanups
* add request headers to streaming context
* remove some unwraps
overhaul dioxus fullstack using a new implementation of server_fn
This PR is a complete rewrite of dioxus fullstack designed to improve compatibility with axum and to fix a number of compilation errors based on feature flag unification plumbing through macros.
* Don't use inline scripts and function constructor.
This allows a stricter Content-Security-Policy which is required for web extensions.
* Load module scripts asynchronously
* Extract common code into method
* Fix injecting loading script
* Append to the file instead of reading and appending to the file string
---------
Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
Co-authored-by: Evan Almloff <evanalmloff@gmail.com>
* Add initial version of hash history
* wip...
* more cleanups
* cleanup the web history impl and then add a playwright test
---------
Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
Enable runtime rust hot patching.
* roll back wry to 0.45
* cleanup rustc
* wip
* wip: fix client/server
* get the subsecond cli thing working again
* back to list of builds but with accessors
* migrate some methods to workspace, clean up impl a bit
* pass mode through build context
* use a build context, similar to cargo/rustc
* merge BuildUpdate and HandleUpdate into BuilderUpdate
* Move more resolution of args into runner
* migrate some methods to runner
* hoist out fullstack
* fix build request resolver
* yay request is cleaned up
* fixup resolution a bit
* spawn off the build!
* re-wire android autodetection
* re-wire android autodetection
* wire back up a few more things
* re-wire tooling verification
* I think it's mostly in the right condition for regular app
* add depinfo parser
* yay okay works with regular apps again
* full rebuilds are back
* rewire file wtcher
* wire patch!
* yayyyyyy patching works and is really fast
* yay android works
* clean up stdout piping
* yayyy memap on android so we don't need root
* create a static wasm jump table
* wip: global offset table for wasm
* wip... thinking about making the patches relocatable
* wip: customized relocation
* YESSSSSS RELOCATABLE WASM
* clean up impl a bit
* lil bit more cleanup
* lil bit more
* lil bit more cleanup
* lil bit more cleanup, support 32 bit platforms
* sick, wasm is completely pic
* hmmmm not quite working yet
* woooo, patches loading from rust+wasm
* integrated into the cli 😎
* condense a bit
* cleaned up request a bit
* bust fingerprints
* Make the file diffing logic a bit more sensible
* still working through a few issues, server launches but is acting weird
* fix merge conflict
* more merge issues
* remove stuff we don't want anymore
* revert name change
* wip: server not working anymore :(
* split apart "dioxus fullstack" into "dioxus server" and "dioxus web"
* fixup a few more compile errors
* grrr opening server
* simultaneous frontend and backend patching
* use rustc wrapper
* wip: passing assets to jumptable
* migrate project-like examples
* patchy patchy server fns!
* rollback some random changes
* unwind the js files
* rollback hash
* no need for patch
* more cleanups
* lil bit more cleanup, remove some old cruft
* allow patching when wasm webpage is closed
* tiny bit more robust
* lil bit of clean up
* clean up ws code
* bit more clean ups
* condense
* undo file moves
* move back other project
* move other project
* migrate out harness and janky CLI
* fix compile
* anonymize some files, heavily document others
* lots more documentation, for posterity!
* ton more docs
* clean up the cli a bit more
* more ws cleanup
* more cleanup
* migrate build id to cli-config
* add command file handling
* random small cleanups
* wip....
* wip....
* fix: use workspace for krate discovery
* fix panic logging on serve by placing it *after* the logs
* reorder logging to be sensible on success
* bring back swc
* ws cruft
* small patches to relocs in loader
* bump krates
* hoist main funcs into the ifunc table, fixing wasm
* fix tui output for long lines
* add more linker logging
* wow, incredible, we build fat binaries, holy heckkkkk
* fix args for frontend/backend
* small cleanups
* properly send along build IDs to clients
* fix workspace compiles
* clean up jump table work a bit
* clean up logging a bit
* open existing
* fixup some commands
* open existing browser integration
* wire up the new dx serve client/server syntax
* fixup `dx run` command
* bring back some old functionality
* fix serverfn feature sets
* remove toast animation and simplify its code a bit
* less intrusive toast
* dont change build status when patching on web
* add proper cache busting to vcomponent
* clean up the patch file a bit
* more lints/checks cleaned up
* go back to TargetArgs but a BuildTargets resolved struct
* clean up more nits
* use an atomicptr for jumptable
* fix interaction with initial web load + suspense
* don't run asset system on wasm/bindgen js in dev
* reduce blast radius of PR
* use profile to determine if we're in release
* cleanup prod html template
* cleanup profiles
* fix feature resolution of fullstack
* if fullstack is explicitly false, don't use it
* light cleanups
* drop carg config2
* pass along linker args properly
* make workspace examples compile with dx again
* fewer unwraps and better error loggign
* bit more error handlign
* small cleanup
* drive-by cleanups
* use queries instead of initialize for aslr stuff
* fix hotpatch with higher opt level
* fix aslr bug from multiple clients
* fix merge conflict
* fix typos
* clippy
* fix miscompile
* fix doctest
* properly rollback wry to 0.45
* fix markdown path issues, other test issues
* fix test in router
* fix release mode test
* fix some more tests, clean up a few more items
* use fnptr instead of typeid
* clean up memozation via subsecond in core
* use "main" as sentinel
* fix imports and re-exports
* get off __rust_alloc for aslr offset detection
* wip
* wip... fixing unoptimized web
* hmmmm mmmm
* close,ish, still missing the wasmbindgen dynaimc imports
* aha! full wasm works now
- disable externref when compilng patch modules
- manually link wasm instrinsics
- displace the __wbindgen_placeholder__ table with the synthesized wbg imports
what an awful pain.
There might be a few items missing, so will test against the docsite shortly
* remove failing test
* hmmmm things aren't perfect
* from what I can tell, relocatable wasm just doesn't work with wasm-bindgen
sad
https://github.com/rustwasm/wasm-bindgen/issues/1420
* AI IS LITERALLY THE WORST
* preserve wasm snippets across compiles
* IT HOTPATCHES THE DOCSITE, WE ARE LIVING IN THE FUTURE
* remove the macos cfg-out
* fix: need to allocate 1 more page
* fix url issue
* properly span props
* properly fill in extra symbols
* light cleanups and good docs
* delete cruft, better docs
* More cleanups and simplifications
* clippy, typos
* remove harnesses
* wasm-bindgen error logging
* clean up deps
* remove cruft
* proper priv/pub
* use ifuncs for all env imports
* cruft
* use par_iter, better output
* implement a cache for the base module
* delete custom sections
* cache the main native module too
* add par iter in a few more places
* clippy, map ident
* better logging and status bars
* wip: some small windows support
* wip more windowss
* fix weird regression
* implement windows jump table
* small fixes for windows
* better windows support
* windows support pt2
* rust lld is not msvc
* whole archive the rlibs
* ignore windows and sys crates
* logging
* ohhhhhh, pop out dlls
* dedupe
* thANK GOD FAT LINKING WORKS ON WINDOWS
* hoist caching
* implement patch based on cache
* fix location for pdb
* pass data symbols, correct object
* add all symbol for windows
* add log
* treat none rva as undefined
* whoops
* handle windows calling convention
* dont use relocated arm64 stub windows
* not all are text?
* WINDOWS FUNCTION PATCHING WORKS
but issue with statics?
* use our own entry
* handle windows imp symbols
* add log
* jump to the real symbol not the layout
* whoops
* hotpatching windows works completely holy heck yay
* drop linker args crate
* disable ssg playwright for now
* light cleanups
* some cleanups / preps:
- bump to serverfn 0.8.2
- fix playwright test
- fix clippy
* use fix from #4042
* bring in other fix for liveview
* hoist some configuration
* use __aslr_reference instead of aslr_reference
* add better errors to patcherror
* fix android
* panic if patching fails
* clean up tomls
* wip: fixing wasm compile for server
* fullstack wasm again
* fix cfg
* fixup feature detection
* fix issue with features
* fix playwright!
* add barebones template test harness
* fix compatibility between the two hotreload engines
* fix preldue of server
* fix check for wasm-opt
* small fixes
* Change the suspense streaming context after suspense is resolved in the router
* Wait for the suspense context before streaming the first chunk in ssr
* forward more response parts
* warn
* extract the hydration format into a crate
* Fix hydration when no data is sent
* forward web and server features
* Fix suspense that starts on the client
* fix use_server_future on the client
* Add documentation for fullstack hooks and protocol
* downgrade rust edition
* fix clippy
* fix tests
* fix clippy
* Fix pure web compile
* undo changes to the fullstack router example
* fix formatting
* Fix hydration of suspense fragments that contain text nodes
* fix release builds
* disable link deduplication
* restore meta tag deduplication
* Add a test for the failed hydration case
* make changes to the document trait non-breaking
* remove info log from server future hook
* restore default implementation - this was also a breaking change
* fix semver breakage
* clean up server_future
* Cleanup unused code
* fix clippy
---------
Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
* feat: integrate dioxus-logger inline
* remove log/simple logger references
* fix: add dioxus-data-id-0 to root elements to not emit errors internally
* drop config.toml and use cargo.toml profiles instead
* make clippy happy with the unit value lint
* feat: better presentation for logging
* Add the `onvisible` event using the IntersectionObserver
* Add a visible example
This example is based on https://codepen.io/ryanfinni/pen/VwZeGxN
* Remove web-sys CustomEvent feature for html package
* update js bindings and hash
* Use dioxus doc instead of lorem ipsum
* Fix clippy warning
* Add get_target method to the event data
* Make `get_time` return an Instant instead of a f64
* fix merge conflicts, compilinga
* remove target
* small nits
* serialzie as time_ms
* fix timing, works on desktop
* remove latent nits, fix hash
* box size clippy
* fix browserlist cargo.lock
---------
Co-authored-by: Evan Almloff <evanalmloff@gmail.com>
Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
* Create a crate for constant serialization of config structs for manganis
* use SerializeConst for the image asset builder
* switch to a declarative macro for assets
* clean up asset macro a bit
* add serializable options for each asset type
* serialize const vec
* Add unique path formatting
* implement the new manganis macro
* optimize assets in the CLI
* Fix clippy
* Fix assets with dioxus formattable
* reduce fuzzing test limits
* use the new syntax in examples
* fix formatting
* Final doc and test pass on const-serialize
* fix avif support
* Fix manganis doc tests
* cache asset optimization
* Split out asset and bundled asset
* make hash pointer width independent
* remove const serialize cargo lock
* Fix manganis macro docs
* all tests passing
* add constvec::is_empty method to fix clippy lint
* remove nasm feature
* simplify test_rsplit_once test so typos passes
* fix range syntax for stable
* revert example change from clippy fix
* remove dioxus-static-site-generation workspace dependency
* always accept unix paths
* fix windows path seperator
* fix folder asset hash
* Optimize assets in a blocking task
* Fix asset options docs
* Document Asset and BundledAsset
* move manganis back into it's own folder
* simplify the linker macro a bit
* add more docs to AssetParser expansion
* fix manganis core doc test
* add image format helpers
* Fill in new cargo.tomls
* fix folders with explicit options
* Split by both unix and windows path separators and take the smallest one
* fix string length
* Fix base path on web and fullstack
* Fix assets with base path
* fix fullstack base route with trailing slash
* fix clippy