Files
artcraft/artcraft-native
dependabot[bot] 4400485986 chore(deps): bump the cargo-dependencies group with 58 updates
Bumps the cargo-dependencies group with 58 updates:

| Package | From | To |
| --- | --- | --- |
| [anyhow](https://github.com/dtolnay/anyhow) | `1.0.102` | `1.0.104` |
| [assertor](https://github.com/google/assertor) | `0.0.3` | `0.0.4` |
| [base64](https://github.com/marshallpierce/rust-base64) | `0.22.1` | `0.23.1` |
| [bstr](https://github.com/BurntSushi/bstr) | `1.12.1` | `1.13.1` |
| [chrono](https://github.com/chronotope/chrono) | `0.4.44` | `0.4.45` |
| [cookie](https://github.com/SergioBenitez/cookie-rs) | `0.18.1` | `0.18.2` |
| [env_logger](https://github.com/rust-cli/env_logger) | `0.11.9` | `0.11.11` |
| [futures](https://github.com/rust-lang/futures-rs) | `0.3.32` | `0.3.34` |
| [indexmap](https://github.com/indexmap-rs/indexmap) | `2.13.0` | `2.14.2` |
| [rand](https://github.com/rust-random/rand) | `0.8.5` | `0.9.2` |
| [regex](https://github.com/rust-lang/regex) | `1.12.3` | `1.13.1` |
| [serde](https://github.com/serde-rs/serde) | `1.0.228` | `1.0.229` |
| [serde_derive](https://github.com/serde-rs/serde) | `1.0.228` | `1.0.229` |
| [serde_json](https://github.com/serde-rs/json) | `1.0.149` | `1.0.154` |
| [sha2](https://github.com/RustCrypto/hashes) | `0.11.0-rc.5` | `0.11.1` |
| [sha3](https://github.com/RustCrypto/hashes) | `0.10.8` | `0.12.0` |
| [tauri-plugin-dialog](https://github.com/tauri-apps/plugins-workspace) | `2.7.1` | `2.7.2` |
| [tauri-plugin-fs](https://github.com/tauri-apps/plugins-workspace) | `2.5.1` | `2.5.2` |
| [tauri-plugin-log](https://github.com/tauri-apps/plugins-workspace) | `2.8.0` | `2.9.2` |
| [tauri-plugin-upload](https://github.com/tauri-apps/plugins-workspace) | `2.4.0` | `2.5.0` |
| [thiserror](https://github.com/dtolnay/thiserror) | `2.0.18` | `2.0.21` |
| [tokio-util](https://github.com/tokio-rs/tokio) | `0.7.18` | `0.7.20` |
| [utoipa](https://github.com/juhaku/utoipa) | `5.4.0` | `6.0.0` |
| [uuid](https://github.com/uuid-rs/uuid) | `1.22.0` | `1.28.0` |
| [wreq-util](https://github.com/0x676e67/wreq-util) | `3.0.0-rc.10` | `3.0.0-rc.14` |
| [wreq](https://github.com/0x676e67/wreq) | `6.0.0-rc.28` | `6.0.0-rc.31` |
| [eframe](https://github.com/emilk/egui) | `0.36.2` | `0.37.0` |
| [egui](https://github.com/emilk/egui) | `0.36.2` | `0.37.0` |
| [egui_extras](https://github.com/emilk/egui) | `0.36.2` | `0.37.0` |
| [image](https://github.com/image-rs/image) | `0.25.6` | `0.25.10` |
| [open](https://github.com/Byron/open-rs) | `5.3.3` | `5.4.4` |
| [resvg](https://github.com/linebender/resvg) | `0.45.1` | `0.48.1` |
| [rfd](https://github.com/PolyMeilex/rfd) | `0.16.0` | `0.17.2` |
| [rodio](https://github.com/RustAudio/rodio) | `0.20.1` | `0.23.0` |
| [arboard](https://github.com/1Password/arboard) | `3.6.1` | `3.7.0` |
| [wry](https://github.com/tauri-apps/wry) | `0.55.1` | `0.57.0` |
| [egui_kittest](https://github.com/emilk/egui) | `0.36.2` | `0.37.0` |
| [scraper](https://github.com/rust-scraper/scraper) | `0.24.0` | `0.27.0` |
| [dom_query](https://github.com/niklak/dom_query) | `0.20.2` | `0.28.0` |
| [bytes](https://github.com/tokio-rs/bytes) | `1.11.1` | `1.12.1` |
| dirs | `6.0.0` | `7.0.0` |
| [os_info](https://github.com/stanislav-tkach/os_info) | `3.12.0` | `3.15.0` |
| [tauri-plugin-opener](https://github.com/tauri-apps/plugins-workspace) | `2.5.4` | `2.7.2` |
| [serial_test](https://github.com/palfrey/serial_test) | `3.2.0` | `4.0.1` |
| [tauri-build](https://github.com/tauri-apps/tauri) | `2.6.2` | `2.7.3` |
| [build-info](https://github.com/danielschemmel/build-info) | `0.0.40` | `0.0.47` |
| [build-info-build](https://github.com/danielschemmel/build-info) | `0.0.40` | `0.0.47` |
| [time](https://github.com/time-rs/time) | `0.3.36` | `0.3.55` |
| [infer](https://github.com/bojand/infer) | `0.19.0` | `0.22.0` |
| [sqlx](https://github.com/launchbadge/sqlx) | `0.7.4` | `0.8.6` |
| [sqlx-core](https://github.com/launchbadge/sqlx) | `0.7.4` | `0.8.6` |
| [sqlx-mysql](https://github.com/launchbadge/sqlx) | `0.7.4` | `0.8.6` |
| [urlpattern](https://github.com/denoland/rust-urlpattern) | `0.3.0` | `0.6.0` |
| [http](https://github.com/hyperium/http) | `1.3.1` | `1.5.0` |
| [data-url](https://github.com/servo/rust-url) | `0.3.1` | `0.3.2` |
| [tracing](https://github.com/tokio-rs/tracing) | `0.1.41` | `0.1.44` |
| [tauri-plugin](https://github.com/tauri-apps/tauri) | `2.6.2` | `2.7.2` |
| [schemars](https://github.com/GREsau/schemars) | `0.8.21` | `0.8.22` |


Updates `anyhow` from 1.0.102 to 1.0.104
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.102...1.0.104)

Updates `assertor` from 0.0.3 to 0.0.4
- [Release notes](https://github.com/google/assertor/releases)
- [Commits](https://github.com/google/assertor/compare/v0.0.3...v0.0.4)

Updates `base64` from 0.22.1 to 0.23.1
- [Changelog](https://github.com/marshallpierce/rust-base64/blob/master/RELEASE-NOTES.md)
- [Commits](https://github.com/marshallpierce/rust-base64/compare/v0.22.1...v0.23.1)

Updates `bstr` from 1.12.1 to 1.13.1
- [Commits](https://github.com/BurntSushi/bstr/compare/1.12.1...1.13.1)

Updates `chrono` from 0.4.44 to 0.4.45
- [Release notes](https://github.com/chronotope/chrono/releases)
- [Changelog](https://github.com/chronotope/chrono/blob/main/CHANGELOG.md)
- [Commits](https://github.com/chronotope/chrono/compare/v0.4.44...v0.4.45)

Updates `cookie` from 0.18.1 to 0.18.2
- [Changelog](https://github.com/rwf2/cookie-rs/blob/0.18.2/CHANGELOG.md)
- [Commits](https://github.com/SergioBenitez/cookie-rs/compare/0.18.1...0.18.2)

Updates `env_logger` from 0.11.9 to 0.11.11
- [Release notes](https://github.com/rust-cli/env_logger/releases)
- [Changelog](https://github.com/rust-cli/env_logger/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-cli/env_logger/compare/v0.11.9...v0.11.11)

Updates `futures` from 0.3.32 to 0.3.34
- [Release notes](https://github.com/rust-lang/futures-rs/releases)
- [Changelog](https://github.com/rust-lang/futures-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.32...0.3.34)

Updates `indexmap` from 2.13.0 to 2.14.2
- [Changelog](https://github.com/indexmap-rs/indexmap/blob/main/RELEASES.md)
- [Commits](https://github.com/indexmap-rs/indexmap/compare/2.13.0...2.14.2)

Updates `rand` from 0.8.5 to 0.9.2
- [Release notes](https://github.com/rust-random/rand/releases)
- [Changelog](https://github.com/rust-random/rand/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-random/rand/compare/0.8.5...rand_core-0.9.2)

Updates `regex` from 1.12.3 to 1.13.1
- [Release notes](https://github.com/rust-lang/regex/releases)
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/regex/compare/1.12.3...1.13.1)

Updates `serde` from 1.0.228 to 1.0.229
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.228...v1.0.229)

Updates `serde_derive` from 1.0.228 to 1.0.229
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.228...v1.0.229)

Updates `serde_json` from 1.0.149 to 1.0.154
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.149...v1.0.154)

Updates `sha2` from 0.11.0-rc.5 to 0.11.1
- [Commits](https://github.com/RustCrypto/hashes/compare/sha2-v0.11.0-rc.5...sha2-v0.11.1)

Updates `sha3` from 0.10.8 to 0.12.0
- [Commits](https://github.com/RustCrypto/hashes/compare/sha3/v0.10.8...sha3-v0.12.0)

Updates `tauri-plugin-dialog` from 2.7.1 to 2.7.2
- [Release notes](https://github.com/tauri-apps/plugins-workspace/releases)
- [Commits](https://github.com/tauri-apps/plugins-workspace/compare/fs-v2.7.1...dialog-v2.7.2)

Updates `tauri-plugin-fs` from 2.5.1 to 2.5.2
- [Release notes](https://github.com/tauri-apps/plugins-workspace/releases)
- [Commits](https://github.com/tauri-apps/plugins-workspace/compare/fs-v2.5.1...fs-v2.5.2)

Updates `tauri-plugin-log` from 2.8.0 to 2.9.2
- [Release notes](https://github.com/tauri-apps/plugins-workspace/releases)
- [Commits](https://github.com/tauri-apps/plugins-workspace/compare/log-v2.8.0...log-v2.9.2)

Updates `tauri-plugin-upload` from 2.4.0 to 2.5.0
- [Release notes](https://github.com/tauri-apps/plugins-workspace/releases)
- [Commits](https://github.com/tauri-apps/plugins-workspace/compare/os-v2.4.0...fs-v2.5.0)

Updates `thiserror` from 2.0.18 to 2.0.21
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/2.0.18...2.0.21)

Updates `tokio-util` from 0.7.18 to 0.7.20
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-util-0.7.18...tokio-util-0.7.20)

Updates `utoipa` from 5.4.0 to 6.0.0
- [Release notes](https://github.com/juhaku/utoipa/releases)
- [Changelog](https://github.com/juhaku/utoipa/blob/master/utoipa-rapidoc/CHANGELOG.md)
- [Commits](https://github.com/juhaku/utoipa/compare/utoipa-5.4.0...utoipa-6.0.0)

Updates `uuid` from 1.22.0 to 1.28.0
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/v1.22.0...v1.28.0)

Updates `wreq-util` from 3.0.0-rc.10 to 3.0.0-rc.14
- [Release notes](https://github.com/0x676e67/wreq-util/releases)
- [Changelog](https://github.com/0x676e67/wreq-util/blob/main/CHANGELOG.md)
- [Commits](https://github.com/0x676e67/wreq-util/compare/v3.0.0-rc.10...v3.0.0-rc.14)

Updates `wreq` from 6.0.0-rc.28 to 6.0.0-rc.31
- [Release notes](https://github.com/0x676e67/wreq/releases)
- [Changelog](https://github.com/0x676e67/wreq/blob/main/RELEASE.md)
- [Commits](https://github.com/0x676e67/wreq/compare/v6.0.0-rc.28...v6.0.0-rc.31)

Updates `eframe` from 0.36.2 to 0.37.0
- [Release notes](https://github.com/emilk/egui/releases)
- [Changelog](https://github.com/emilk/egui/blob/main/CHANGELOG.md)
- [Commits](https://github.com/emilk/egui/compare/0.36.2...0.37.0)

Updates `egui` from 0.36.2 to 0.37.0
- [Release notes](https://github.com/emilk/egui/releases)
- [Changelog](https://github.com/emilk/egui/blob/main/CHANGELOG.md)
- [Commits](https://github.com/emilk/egui/compare/0.36.2...0.37.0)

Updates `egui_extras` from 0.36.2 to 0.37.0
- [Release notes](https://github.com/emilk/egui/releases)
- [Changelog](https://github.com/emilk/egui/blob/main/CHANGELOG.md)
- [Commits](https://github.com/emilk/egui/compare/0.36.2...0.37.0)

Updates `image` from 0.25.6 to 0.25.10
- [Changelog](https://github.com/image-rs/image/blob/v0.25.10/CHANGES.md)
- [Commits](https://github.com/image-rs/image/compare/v0.25.6...v0.25.10)

Updates `open` from 5.3.3 to 5.4.4
- [Release notes](https://github.com/Byron/open-rs/releases)
- [Changelog](https://github.com/Byron/open-rs/blob/main/changelog.md)
- [Commits](https://github.com/Byron/open-rs/compare/v5.3.3...v5.4.4)

Updates `resvg` from 0.45.1 to 0.48.1
- [Release notes](https://github.com/linebender/resvg/releases)
- [Changelog](https://github.com/linebender/resvg/blob/main/CHANGELOG.md)
- [Commits](https://github.com/linebender/resvg/compare/v0.45.1...v0.48.1)

Updates `rfd` from 0.16.0 to 0.17.2
- [Release notes](https://github.com/PolyMeilex/rfd/releases)
- [Changelog](https://github.com/PolyMeilex/rfd/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PolyMeilex/rfd/compare/0.16.0...0.17.2)

Updates `rodio` from 0.20.1 to 0.23.0
- [Changelog](https://github.com/RustAudio/rodio/blob/v0.23.0/CHANGELOG.md)
- [Commits](https://github.com/RustAudio/rodio/compare/v0.20.1...v0.23.0)

Updates `arboard` from 3.6.1 to 3.7.0
- [Release notes](https://github.com/1Password/arboard/releases)
- [Commits](https://github.com/1Password/arboard/compare/v3.6.1...v3.7.0)

Updates `wry` from 0.55.1 to 0.57.0
- [Release notes](https://github.com/tauri-apps/wry/releases)
- [Changelog](https://github.com/tauri-apps/wry/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/tauri-apps/wry/compare/wry-v0.55.1...wry-v0.57)

Updates `egui_kittest` from 0.36.2 to 0.37.0
- [Release notes](https://github.com/emilk/egui/releases)
- [Changelog](https://github.com/emilk/egui/blob/main/CHANGELOG.md)
- [Commits](https://github.com/emilk/egui/compare/0.36.2...0.37.0)

Updates `scraper` from 0.24.0 to 0.27.0
- [Release notes](https://github.com/rust-scraper/scraper/releases)
- [Commits](https://github.com/rust-scraper/scraper/compare/v0.24.0...v0.27.0)

Updates `dom_query` from 0.20.2 to 0.28.0
- [Release notes](https://github.com/niklak/dom_query/releases)
- [Changelog](https://github.com/niklak/dom_query/blob/main/CHANGELOG.md)
- [Commits](https://github.com/niklak/dom_query/compare/0.20.2...0.28.0)

Updates `bytes` from 1.11.1 to 1.12.1
- [Release notes](https://github.com/tokio-rs/bytes/releases)
- [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/bytes/compare/v1.11.1...v1.12.1)

Updates `dirs` from 6.0.0 to 7.0.0

Updates `os_info` from 3.12.0 to 3.15.0
- [Release notes](https://github.com/stanislav-tkach/os_info/releases)
- [Changelog](https://github.com/stanislav-tkach/os_info/blob/master/CHANGELOG.md)
- [Commits](https://github.com/stanislav-tkach/os_info/compare/v3.12.0...v3.15.0)

Updates `tauri-plugin-opener` from 2.5.4 to 2.7.2
- [Release notes](https://github.com/tauri-apps/plugins-workspace/releases)
- [Commits](https://github.com/tauri-apps/plugins-workspace/compare/http-v2.5.4...dialog-v2.7.2)

Updates `serial_test` from 3.2.0 to 4.0.1
- [Release notes](https://github.com/palfrey/serial_test/releases)
- [Commits](https://github.com/palfrey/serial_test/compare/v3.2.0...v4.0.1)

Updates `tauri-build` from 2.6.2 to 2.7.3
- [Release notes](https://github.com/tauri-apps/tauri/releases)
- [Commits](https://github.com/tauri-apps/tauri/compare/tauri-build-v2.6.2...tauri-build-v2.7.3)

Updates `build-info` from 0.0.40 to 0.0.47
- [Commits](https://github.com/danielschemmel/build-info/compare/v0.0.40...v0.0.47)

Updates `build-info-build` from 0.0.40 to 0.0.47
- [Commits](https://github.com/danielschemmel/build-info/compare/v0.0.40...v0.0.47)

Updates `time` from 0.3.36 to 0.3.55
- [Release notes](https://github.com/time-rs/time/releases)
- [Changelog](https://github.com/time-rs/time/blob/main/CHANGELOG.md)
- [Commits](https://github.com/time-rs/time/compare/v0.3.36...v0.3.55)

Updates `infer` from 0.19.0 to 0.22.0
- [Release notes](https://github.com/bojand/infer/releases)
- [Commits](https://github.com/bojand/infer/compare/v0.19.0...v0.22.0)

Updates `sqlx` from 0.7.4 to 0.8.6
- [Changelog](https://github.com/transact-rs/sqlx/blob/main/CHANGELOG.md)
- [Commits](https://github.com/launchbadge/sqlx/compare/v0.7.4...v0.8.6)

Updates `sqlx-core` from 0.7.4 to 0.8.6
- [Changelog](https://github.com/transact-rs/sqlx/blob/main/CHANGELOG.md)
- [Commits](https://github.com/launchbadge/sqlx/compare/v0.7.4...v0.8.6)

Updates `sqlx-mysql` from 0.7.4 to 0.8.6
- [Changelog](https://github.com/transact-rs/sqlx/blob/main/CHANGELOG.md)
- [Commits](https://github.com/launchbadge/sqlx/compare/v0.7.4...v0.8.6)

Updates `urlpattern` from 0.3.0 to 0.6.0
- [Release notes](https://github.com/denoland/rust-urlpattern/releases)
- [Commits](https://github.com/denoland/rust-urlpattern/compare/0.3.0...0.6.0)

Updates `http` from 1.3.1 to 1.5.0
- [Release notes](https://github.com/hyperium/http/releases)
- [Changelog](https://github.com/hyperium/http/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/http/compare/v1.3.1...v1.5.0)

Updates `data-url` from 0.3.1 to 0.3.2
- [Release notes](https://github.com/servo/rust-url/releases)
- [Commits](https://github.com/servo/rust-url/commits)

Updates `tracing` from 0.1.41 to 0.1.44
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-0.1.41...tracing-0.1.44)

Updates `tauri-plugin` from 2.6.2 to 2.7.2
- [Release notes](https://github.com/tauri-apps/tauri/releases)
- [Commits](https://github.com/tauri-apps/tauri/compare/tauri-plugin-v2.6.2...tauri-plugin-v2.7.2)

Updates `schemars` from 0.8.21 to 0.8.22
- [Release notes](https://github.com/GREsau/schemars/releases)
- [Changelog](https://github.com/GREsau/schemars/blob/master/CHANGELOG.md)
- [Commits](https://github.com/GREsau/schemars/compare/v0.8.21...v0.8.22)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-version: 1.0.104
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-dependencies
- dependency-name: assertor
  dependency-version: 0.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-dependencies
- dependency-name: base64
  dependency-version: 0.23.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-dependencies
- dependency-name: bstr
  dependency-version: 1.13.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-dependencies
- dependency-name: chrono
  dependency-version: 0.4.45
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-dependencies
- dependency-name: cookie
  dependency-version: 0.18.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-dependencies
- dependency-name: env_logger
  dependency-version: 0.11.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-dependencies
- dependency-name: futures
  dependency-version: 0.3.34
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-dependencies
- dependency-name: indexmap
  dependency-version: 2.14.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-dependencies
- dependency-name: rand
  dependency-version: 0.9.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-dependencies
- dependency-name: regex
  dependency-version: 1.13.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-dependencies
- dependency-name: serde
  dependency-version: 1.0.229
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-dependencies
- dependency-name: serde_derive
  dependency-version: 1.0.229
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-dependencies
- dependency-name: serde_json
  dependency-version: 1.0.154
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-dependencies
- dependency-name: sha2
  dependency-version: 0.11.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-dependencies
- dependency-name: sha3
  dependency-version: 0.12.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-dependencies
- dependency-name: tauri-plugin-dialog
  dependency-version: 2.7.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-dependencies
- dependency-name: tauri-plugin-fs
  dependency-version: 2.5.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-dependencies
- dependency-name: tauri-plugin-log
  dependency-version: 2.9.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-dependencies
- dependency-name: tauri-plugin-upload
  dependency-version: 2.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-dependencies
- dependency-name: thiserror
  dependency-version: 2.0.21
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-dependencies
- dependency-name: tokio-util
  dependency-version: 0.7.20
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-dependencies
- dependency-name: utoipa
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: cargo-dependencies
- dependency-name: uuid
  dependency-version: 1.28.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-dependencies
- dependency-name: wreq-util
  dependency-version: 3.0.0-rc.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-dependencies
- dependency-name: wreq
  dependency-version: 6.0.0-rc.31
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-dependencies
- dependency-name: eframe
  dependency-version: 0.37.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-dependencies
- dependency-name: egui
  dependency-version: 0.37.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-dependencies
- dependency-name: egui_extras
  dependency-version: 0.37.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-dependencies
- dependency-name: image
  dependency-version: 0.25.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-dependencies
- dependency-name: open
  dependency-version: 5.4.4
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-dependencies
- dependency-name: resvg
  dependency-version: 0.48.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-dependencies
- dependency-name: rfd
  dependency-version: 0.17.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-dependencies
- dependency-name: rodio
  dependency-version: 0.23.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-dependencies
- dependency-name: arboard
  dependency-version: 3.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-dependencies
- dependency-name: wry
  dependency-version: 0.57.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-dependencies
- dependency-name: egui_kittest
  dependency-version: 0.37.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-dependencies
- dependency-name: scraper
  dependency-version: 0.27.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-dependencies
- dependency-name: dom_query
  dependency-version: 0.28.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-dependencies
- dependency-name: bytes
  dependency-version: 1.12.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-dependencies
- dependency-name: dirs
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: cargo-dependencies
- dependency-name: os_info
  dependency-version: 3.15.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-dependencies
- dependency-name: tauri-plugin-opener
  dependency-version: 2.7.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-dependencies
- dependency-name: serial_test
  dependency-version: 4.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: cargo-dependencies
- dependency-name: tauri-build
  dependency-version: 2.7.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-dependencies
- dependency-name: build-info
  dependency-version: 0.0.47
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-dependencies
- dependency-name: build-info-build
  dependency-version: 0.0.47
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-dependencies
- dependency-name: time
  dependency-version: 0.3.55
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-dependencies
- dependency-name: infer
  dependency-version: 0.22.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-dependencies
- dependency-name: sqlx
  dependency-version: 0.8.6
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-dependencies
- dependency-name: sqlx-core
  dependency-version: 0.8.6
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-dependencies
- dependency-name: sqlx-mysql
  dependency-version: 0.8.6
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-dependencies
- dependency-name: urlpattern
  dependency-version: 0.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-dependencies
- dependency-name: http
  dependency-version: 1.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-dependencies
- dependency-name: data-url
  dependency-version: 0.3.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-dependencies
- dependency-name: tracing
  dependency-version: 0.1.44
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-dependencies
- dependency-name: tauri-plugin
  dependency-version: 2.7.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-dependencies
- dependency-name: schemars
  dependency-version: 0.8.22
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-10-18 19:26:54 +00:00
..

ArtCraft Native

ArtCraft's desktop app in pure Rust: an egui UI over the same ArtCraft API client crates the Tauri app uses. There is no Tauri and no JavaScript; the only webview is the Midjourney sign-in window, which exists to capture Midjourney's login cookies.

The look follows the brutalist webapp (artcraft-services/frontend/apps/artcraft-webapp). That means near-black surfaces with white/15 hairlines and 3 px corners on controls. Type is Archivo for display, Inter for body text and Geist Mono for labels. The brand blue marks the primary actions.

Create Image, Create Video and Create Audio are fully built. The other tools show a "coming soon" page that links to the same tool in the web app.

Running

cargo run -p artcraft_native --release

The workspace's default member is the Tauri app, so pass -p artcraft_native.

  • Sign-in. On first launch the app reuses an existing ArtCraft login. It reads the session cookie from the Tauri app's jar (<cache dir>/ai.artcraft.app/.cookies) and keeps its own copy in ~/Artcraft/credentials/native_session.json. Otherwise use "Sign in with browser" (device code) or a username and password.
  • API host. ~/Artcraft/settings/env_configs.json selects it, exactly as for the Tauri app.

Architecture

Module What it does
backend Tokio runtime and every API call; results come back to the UI as Events
backend::wire Lenient response shapes; new server enum values can't break decoding
backend::session Credentials: own file, Tauri cookie import, env config
backend::media_cache Thumbnails and previews: downloaded and decoded off-thread, evicted when unused
backend::audio One clip at a time: reference previews, feed tracks (pause, seek, volume), waveforms
backend::providers Midjourney and fal: accounts, submitting, and a worker that finishes jobs into the library
models Model catalog from OmniGen listings, plus names, families and limits
prompt_box The shared prompt box: editor, reference deck, keyframes, pickers, model selector
pages Create Image, Video and Audio, Home, Library, and the shared page shell
feed Generation feed: running, failed and finished jobs, library paging, grid and list
overlays Lightbox, library picker, sign-in, settings, provider setup and the Midjourney sign-in window
shell Custom title bar, sidebar flush to the window edge, content panel header
theme, ui Tokens, Lucide-style icons, widgets, toasts, window chrome (drag, resize, caption buttons)

How the backend works:

  • Generation. It goes through OmniGen: /v1/omni_gen/{models,cost,generate}/{image,video,audio}. Model capabilities come from the server, so new models and options appear without an app update.
  • Typed client functions. Model lists, uploads, credits, login and deletes use artcraft_client.
  • Lenient decoding. Generate and cost requests are JSON maps, as in the Tauri app. Job polling (/v1/jobs/session), the audio model list, the library list, batches and prompts are decoded with lenient structs.
  • Identity headers. Every request sends the desktop identity headers: Origin and User-Agent.
  • Other providers. Images can also run on Midjourney (your own account) or fal (your own API key), through artcraft_router like the Tauri app. The accounts live in the same files (~/Artcraft/credentials), so connecting in either app works in both. Those jobs are tracked in ~/Artcraft/state/native_provider_jobs.json and their results uploaded into your library, resuming after a restart.

Prompt box parity

Feature Status
Auto-growing prompt (~4 lines), expand/collapse, resize grip Done
Focus mode (fullscreen editor with deck and toolbar) Done
Length counter, red over the model's limit Done
Enter to generate (setting; Shift+Enter for a new line) Done
@Image1 / @Video1 / @Audio1 highlight and autocomplete Done
Reference deck: fan, +N badge, hover-expand, reorder, clear all Done
Keyframe slots: first/last frame, tilt, swap Done
Upload, pick from library, drag & drop, paste image Done (video uploads must be MP4)
Model selector with families, logos, capability badges Done
Aspect ratio, resolution, quality, count Done
Bitrate, output format, duration slider, sound, input mode Done
Live credit cost on the generate button Done
Validation: starting frame, text-only banner, limits, uploads Done
Clear all (confirms when references are attached) Done
@Character mentions and the Characters modal (create/edit/delete) Done
Provider choice (Midjourney direct, fal), "Select Provider" Done (images; video runs on ArtCraft)
In-app video playback Done with FFmpeg on the PATH; otherwise opens in the system player
Audio reference playback (click to play/stop) Done
Animated video previews in the feed (with a stills toggle) Done
Audio: style, instrumental, keep lyrics, loop Done
Audio: Beat & Key (BPM, musical key) and Tuning (sample rate, speed, volume, pitch) Done
Audio references (play, 600 s cap) or one image, never both Done

Feed and lightbox:

  • Feed. Pending cards show progress, time left and a batch banner. Failed cards show the reason and can be dismissed. The grid is masonry, with a list view alongside. Hover actions are Recreate, Make Video, Share and Download. Select mode does batch downloads. The last viewed item is marked.
  • Audio. Audio cards play in place: a waveform (click to seek), the time and a volume flyout. One track plays at a time and stops when you leave the page. Audio offers Share and Download.
  • Lightbox. Prev/next with the arrow keys, prompt copy and details. Actions are Recreate, Make Video, Download, Share and Delete. Audio plays in a panel with the full-size player.

Diagnostics

Set ARTCRAFT_SCREENSHOT=<file.png> to save a screenshot once the window has settled. ARTCRAFT_PAGE (home, create-image, create-video, create-audio or library) picks the page, ARTCRAFT_OPEN (settings or midjourney-login) opens a dialog, and ARTCRAFT_SCREENSHOT_EXIT=1 closes the app afterwards. The screenshot shows egui only, not the sign-in webview.

Tests

cargo test -p artcraft_native

There are unit tests for the catalog, feed store, wire decoding and backend helpers. Headless UI tests (egui_kittest) drive the prompt box (generate gating, Enter to generate, the pickers, @ mentions, clear-all), the Characters dialog and the audio toolbar (toggles, Beat & Key, Tuning).

Fonts and brand assets

assets/fonts holds Inter, Archivo and Geist Mono, all under the SIL Open Font License; the licences sit next to the files. The wordmark, app icon and creator logos are the Tauri app's own (frontend/apps/artcraft/app/public/resources, crates/desktop/artcraft/icons); see NOTICE for their terms.