Skip Tailwind watcher in fullstack mode to prevent race conditions between
the watcher and prebuild() both trying to install/run Tailwind simultaneously.
In fullstack mode, the client build's prebuild() properly handles Tailwind
generation, making the watcher redundant and problematic.
Fixes "Text file busy" error when running:
dx serve --fullstack true --platform web
Fixes#4431
* warn if we both find manganis in the dependencies and strip is enabled in the current profile
* bump node
---------
Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
* Update dependencies in Cargo.lock
* added in the missing bevy example which was included in recent merge
* undo unneccessary library installation in gh actions
* cleaned up further
* Update dependencies in Cargo.toml and Cargo.lock askana_escape to 0.13
* updated code to make tests work
* updated the wgpu texture example
* replaced all direct reference with use
* fixed wgpu and jsframework errors in benches and examples
* Fix: Import black_box from std::hint
* grand finale upgrade
* updated cargo.lock
* Bump hyper-util to 0.1.15 and plist to 1.7.4
* remove some unused swc dependencies and add a command to update them in the future
---------
Co-authored-by: Evan Almloff <evanalmloff@gmail.com>
Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
* wip: openssl autodetection
* add voltaile read inside of asset fn
* support xcode 15 for --device
* vendor openssl on android
* Smaller width TUI
* switch to anyhow for the entire CLI
* add backtrace and print double printing of cargo_metadata errors
* add some padding to multi-line anyhow error
* check semvers
* don't open if not interactive
* set the tailwind current_dir so it doesn't twitch
* get the oboe demo working
* copy the c++ library on android
* cleanup env vars
* add depinfo watcher
* fix stale hotpatches and crate count
* add musl support
* remove outdated autofmt test
* update scanner app
* add hotdog app and bundle to ci
* upload dx on every branch
* collapse mobile into desktop
* `dx doctor` command
* windows command files
* no pipe on doctor
* fix ci?
* fix links
* fix ci
* use main instead of nightly
* bump node
* build cli for host
* cargo doc
* prep dog_app for bundle
* package hotdog
* no bundle or nightly cli
* comment out nightly cli
* add quotes to linker files
* chore(deps): upgrade wry from 0.45.0 to v0.51.2
* Unwrap webview
* update tauri
* fix more versions
* switch to a single websocket per app to communicate edits in desktop
* use websockets on the ts side
* queue pending edits before the websocket connects
* fix decoding the websocket blobs in ts
* rebuild js
* fix clippy
* more sensible struct names
* allow http on android and require a key to match between the webview and native sides
* remove out.txt
* clippy
* small style changes
* More light cleanups
---------
Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
Co-authored-by: Evan Almloff <evanalmloff@gmail.com>
* wip: fixes to get docsite working again
* Fix asset location with PIC in hot patched builds
* Add an hidden cli flag to exit early in hot patch tests on failure
* add a test for hot patching with assets
* fix clippy
* fix looks_like_manganis_symbol
* longer timeout for hot patching in CI
* log page content
* log assets
* Log asset after write
* record a playwright trace
* Explicitly enable cargo incremental for hot patching
* fix retry for patch test
* reset asset
* disable hot patching test for new exports
* add nightly playwright
* use different toolchain names
* use beta instead of nightly for less thrashing
* add failing test
* workaround hot reloading bug
* restore swapping asset tests
* add toolchain
---------
Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
* 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>
* wip: add some spin logging
* wipe dioxus branding if not being used by dioxus
* add --locked, --offline, --frozen
* properly git init with `dx new` and `dx init`
* dont panic in verbosity
* Move build-assets to "tools"
* change ui for dx new offline
* pin tauri-bundle
* pin tauri
* run tailwind once
* fix(cli, breaking): Align Android applicationId with user's `bundle.identifier`
This commit fixes the Android `applicationId` generation to accurately reflect the user-configured `bundle.identifier` when provided. It also refactors the logic by removing the `full_mobile_app_name` function, with `bundle_identifier` now being the direct source for the Android `applicationId`.
The `bundle_identifier` function now operates as follows:
1. If `bundle.identifier` is explicitly set by the user:
- It validates that the identifier has at least three segments (e.g., `com.example.app`).
- The user's `identifier` is then returned and used directly as the Android `applicationId`.
2. If `config.bundle.identifier` is not set by the user:
- It defaults to `com.example.{PascalCaseExecutableName}`. The `executable_name` (e.g., "my-app" derived from a project name like "MyApp") is converted to `PascalCase` (e.g., "MyApp") for this default.
**BREAKING CHANGE**:
This change primarily affects Android builds and may alter the final `applicationId` for users who had a custom `bundle.identifier` set, particularly if its casing or final segment differed from the PascalCased `executable_name`.
- **Previous Behavior**:
The Android `applicationId` was derived from `full_mobile_app_name`. This function effectively used the first two segments of the `bundle_identifier` (user-configured or default) but then **always** appended a PascalCased version of the `executable_name` as the final segment.
Example Scenario:
- User project name: "MyApp" (CLI set `executable_name` to "my-app")
- User configured `bundle.identifier` in Dioxus config: `"com.custom.myapp"`
- `bundled_app_name()` (from "my-app"): "MyApp"
- Old `applicationId` (via `full_mobile_app_name`): `"com.custom.MyApp"`
- **New Behavior**:
With the same user configuration (`"com.custom.myapp"`), the `applicationId` will now be: `"com.custom.myapp"`
This change ensures the `applicationId` respects the user's explicit `bundle.identifier` string. However, if users were unknowingly relying on the previous behavior where the last segment was always a PascalCased version of the `executable_name` (potentially mismatching their intended lowercase final segment in `bundle.identifier`), their `applicationId` will change upon updating the CLI.
According to Google's Android documentation, the `applicationId` must not be changed after an app is published, as this causes Google Play to treat it as a new application. Users who have published Android apps and utilized custom `bundle.identifier` configurations should meticulously verify their `applicationId` after this update to ensure it remains consistent with their published versions or to take appropriate action if a change is detected.
* fix: relax validation for bundle.identifier
1. Contains at least one dot ('.').
2. Does not start with a dot.
3. Does not end with a dot.
4. Does not contain consecutive dots ('..').
e.g., `com.example` or `com.example.app`
---------
Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
* Add better error handling for wasm-opt and prevent file truncation on error
* clippy
---------
Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
* Build ssg routes when both the client and server builds are finished
* Fix default server fn encoding
* fix tokio console
* fix ssg
* add prerendering message
* render under the same environment variables as normal
* fix check
* use should_bundle_to_asset
* enable ssg playwright test
* fix clippy
* Use different release profiles for desktop and server builds
* fix clippy
* change the global cargo config instead of the local one
* fix merge
* fix release profile logic
* use adhoc profile generation
* fix compilation of dioxus-lib in fullstack
---------
Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
* Allows desktop apps to open mailto links
* Drop webbrowser, use `open` only
* switch to that_detached
* use workspace `open`
---------
Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
* Pass args after -- to the executable during run and serve
* fix clippy
* switch to accepting a string argument for subcommand compatibility
* Handle merging with `@server` and `@client`
* fix clippy
* fix formatting
* always build into the client package
* fix clippy
* more clippy fixes
* white-list .rcgu.o files in the linking phase, otherwise dump them into the normal linking pile
* simplify a bit
* remove noisy trace
* remove wrong comment
* Fix deduping assets
* hash assets in the linker
* fix extracting assets
* Fix the hashed asset name
* deserialize the asset back from the link section
* prevent the read from being inlined
* remove some extra logs
* Fix liveview routing
* Only look for direct dependencies on dioxus features
* fix wasm split test
* On wasm, create a new object file with the asset information
* Fix multiple assets
* add a regression test for 3467
* fix image link
* fix linker out file
* fix linux linker args
* add windows linker command
* fix linux link args
* fix windows target triple
* Expose an option to build assets in the linker intercept
* Fix the standalone optimizer and document it in the dx help command
* include the cli opt version in the hash
* fix clippy
* fix ssg port
* add a safety note to the read_volatile call
* move found assets log
* fix some merge conflicts
* fix build
* make most env var for the linker optional
* guess the target triple when dx acts as the linker intercept
* automatically find the linker for normal builds
* use the right linker in wasm mode
* fix mac linker
* look inside archive files (rlibs)
* remove out.txt
* fix clippy
* fix typo
* fix clippy
* fix build
* fix dx link name in docs
* ignore libcompiler_builtins warnings
* fix playwright
* pass typocheck
* fix printing sysroot
* Modify final binary
* fix wasm assets
* remove old link section logic
* fix tests
* forward manganis export args
* fail to evaluate relocatable address
* retain all exports in the same pattern as other platforms
* Fix adding assets during a wasm hot patch
* less nesting and remove logs
* fix clippy
* log pdb files
* read from pdb
* print data section contents
* print with object
* normal windows builds working
* fix hot patch windows
* clean up logs
* fix clippy
* clean up assets
* use the most recent pdb
* fix doc test
* fix typo
* tiny nits
* make bundled a reference instead of a pointer
* add helpful comment to impl
* match on file format
* Fix asset hashing comment
---------
Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
* subsecond/cli: fix passing through -fuse-ld for LinkerFlavour::Gnu
* if linker isn't a relative, local path, keep it unresolved since its a command on PATH
* disable precompress by default
* go back to nuking wasm dir in some cases
* enable more wasm-opt flags, use stable
* add better logging for wasm-opt failure
* add vscode debugger for apps
* todo: need to disconnect when rebuilding
* update debugger
* add uri handler to remote launch the debugger
* attach
* dont panic
* fixed it - hung processes are not errors
* wip: android debugger
* clean it up a bit
* revert ios stdout/stderr
* wire up pid from ios
* use target family instead of target_arch
* fix android
* bring back softkill
* typo
* feat: copy frameworks to Frameworks folder
* add dylib linking to patching
* remove logging
* rename __aslr_offset
* fix android/linux
* support linker flavor
* support custom target dirs
* custom cargo target dir support
* whoops ios
* dlsym doesn't exist on windows
* look for the right main symbol per platform
* distinction between mains
* export main on windows
* enbable rlib caching
* add dx hash
* adjust linking warnings
* update tui with hotreload state
* implement symbol flags
* add flags
* only run ranlib on darwin
* enable lld
* paths
* add harness test for tls
* wip: revert launch mobile
* wip
* fix fullstack mobile
* fix a few bugs
- long paths?
- reverting back to original
* pass-thru fuse-ld args
* fix nan in render, fix empty archives
* consider existing dep files if archive exists
* fmt
* drop msrv