* refactor(tauri-cli): introduce replacement functions
* refactor(tauri-cli): apply replacement to remove.rs
* refactor(tauri-cli): apply replacement to icon.rs
* refactor(tauri-cli): apply replacement to bundle.rs
* refactor(tauri-cli): apply replacement to build.rs
* refactor(tauri-cli): apply replacement to add.rs
* refactor(tauri-cli): apply replacement to dev.rs
* refactor(tauri-cli): less controlflow
* refactor(tauri-cli): split config loading from locking static
* refactor(tauri-cli): remove duplicate checks covered by if let Some(tauri_dir) = tauri_dir
tauri_dir.is_some() must be true, otherwise the entire block is not run, so the frontend_dir check
is irrelevant
* fmt
* refactor(tauri-cli): apply replacement to inspect.rs
* refactor(tauri-cli): dont use statics for config
* refactor(tauri-cli): finish threading directory paths through functions
* fix: clippy
* fixup CI
* refactor(tauri-cli): dont need mutex
* refactor(tauri-cli): rescope mutex use to minimal necessary
* fix CI, reduce mutex use
* fixup PR #14607
* fix: clippy
* refactor(tauri-cli): remove ConfigHandle
* refactor(tauri-cli): remove more unwraps and panicing functions
* refactor(tauri-cli): less mutexes
* refactor(tauri-cli): undo mistaken change, address review comment
* Split android build to 2 functions
* Pass in dirs to migration v1 like the v2 beta
* Add change file
---------
Co-authored-by: Tony <legendmastertony@gmail.com>
* refactor: use empty vector for features instead of None
* refactor: reorder
* add change file
* comment: highlight places where serialization is used
* refactor: simplify serialization
* Update .changes/empty-vec-instead-of-none.md
* Update crates/tauri-cli/src/mobile/ios/mod.rs
---------
Co-authored-by: Tony <68118705+Legend-Master@users.noreply.github.com>
* refactor(tauri-utils): current_dest and current_pattern always change in-sync, group them to one Option
* refactor(tauri-utils): pass path as explicit argument instead of implicitly through self
* refactor(tauri-utils): remove struct field that is never set to Some
* refactor(tauri-cli): use OsString, OsStr where possible
* refactor(tauri-cli): Deref Arc early
* refactor(tauri-cli): lock config before passing to build::setup()
* refactor(tauri-build, tauri-utils): bettern pattern matching and borrowing
* refactor(tauri-cli): dont need Arc if already have static
* fix(tauri-cli): race condition initializing static flag, remove unnecessary OnceLock
* refactor(tauri-cli): use expect
* refactor(tauri-cli): remove unnecessary OnceLock
* refactor(tauri-cli): better use of dunce api
* refactor(tauri-cli): rename
* feat(cli): check plugin versions for incompatibilities
check core plugin versions for incompatibilities between Cargo and NPM releases
a plugin NPM/cargo version is considered "incompatible" if their major or minor versions are not equal
on dev we show an warning
on build we error out (with a `--ignore-incompatible-plugins` flag to prevent that)
this is an idea from @oscartbeaumont
we've seen several plugin changes that require updates for both the cargo and the NPM releases of a plugin, and if they are not in sync, the functionality does not work
e.g. https://github.com/tauri-apps/plugins-workspace/pull/2573 where the change actually breaks the app updater if you miss the NPM update
* Use list to get multiple package versions at once
* Fix for older rust versions
* Clippy
* Support yarn classic
* Support yarn berry
* Use `.cmd` only for `npm`, `yarn`, `pnpm`
* Use yarn list without --pattern
* rename
* Extract function `check_incompatible_packages`
* Check `tauri` <-> `@tauri-apps/api`
* incompatible -> mismatched
* run build check in parallel
* rename struct
* Switch back to use sync check and add todo
* Extract to function `cargo_manifest_and_lock`
---------
Co-authored-by: Tony <legendmastertony@gmail.com>
* feat: add config option for custom watch folders
* fix: cargo clippy changes
* chore: remove file
* fix: ios dev
* docs: clarify absolute allowed
* refactor: rename variable
* fix: review suggestions
* fix: resolve paths
* fixL use canonicalize
* chore: add changefile
* chore: add error if cant canonicalize
* reformat changelog
* Update .changes/additional-watch-folders.md
* Update crates/tauri-cli/src/interface/rust.rs
Co-authored-by: Tony <68118705+Legend-Master@users.noreply.github.com>
* Revert "Update .changes/additional-watch-folders.md"
This reverts commit 98186b1a89.
* Also bump `@tauri-apps/cli`
* Apparently I'm so used to a higher rust version
* Revert "Apparently I'm so used to a higher rust version"
This reverts commit ea1d89e2d3.
* Need to check for existence for abs paths as well
---------
Co-authored-by: Tony <68118705+Legend-Master@users.noreply.github.com>
Co-authored-by: Tony <legendmastertony@gmail.com>
* Update config.schema.json
* Add RunnerConfig for customizable build runner
Replaces runner String with RunnerConfig in CLI and config, allowing advanced runner configuration via string or object with cmd, cwd, and args. Updates schema and usage to support new format, and adds tests for serialization, deserialization, and API. Enables more flexible build and run command customization.
* Create runner-object-config.md
* Remove unused RunnerConfig import in tests
Cleaned up the test module in config.rs by removing the unused RunnerConfig import from two test functions.
* Fix tests failing
Updates related tests in tauri-utils to improve readability and maintain consistency. Minor import reordering in tauri-cli for clarity.
* Move RunnerConfig enum and impls above BuildConfig
Relocated the RunnerConfig enum and its associated implementations to appear before the BuildConfig definition. This improves code organization and logical grouping of configuration-related types.
* feat(cli): allow merging multiple configuration values
Currently the dev/build/bundle commands can only merge a single Tauri configuration value (file or raw JSON string), which imposes a limitation in scenarios where you need more flexibility (like multiple app flavors and environments). This changes the config CLI option to allow multiple values, letting you merge multiple Tauri config files with the main one.
* fix ios build
* Fix mixup of `env_tauri_app_path()` and `env_tauri_frontend_path()` in tauri's path resolutions
* Rename functions in `app_paths` to match their corresponding, publicly exposed env var keys
* Rename `app_dir`/`app_path` variables that deal with the frontend app's directory to `frontend_dir
* Rename `APP_DIR` to `FRONTEND_DIR`
* Improve comment on meaning of tauri path env vars