[workspace] resolver = "2" # virtual workspace resolver so we don't need a root package members = [ "apps/testing", # onelauncher_test -- test the core crate in a cli setting "apps/desktop", # onelauncher_gui -- the rust code for our tauri app "packages/core", # onelauncher -- the rust core for onelauncher "packages/macros", # onelauncher_macros -- utility procedural macros for onelauncher "packages/gamemode", # onelauncher_gamemode -- rust wrapper for feral gamemode "packages/prisma-cli", # onelauncher_prisma_cli -- rust wrapper for prisma cli "packages/prisma", # onelauncher_prisma -- rust client for prisma "packages/utils" # onelauncher_utils -- standard utilities for use within all crates ] [workspace.package] # sets default [package] settings for workspace members license = "GPL-3.0-only" edition = "2021" # latest rust edition repository = "https://github.com/Polyfrost/OneLauncher" documentation = "https://docs.polyfrost.org/onelauncher" readme = "README.md" homepage = "https://polyfrost.org/projects/onelauncher" authors = [ "Polyfrost", "Polyfrost Contributors" ] version = "1.0.0-alpha.1" # bump this manually for now [workspace.dependencies] # # ============= WORKSPACE ============= # # # best practice to define all workspace crates in the root # even if they are not use, with no features enabled. onelauncher = { path = "./packages/core" } onelauncher_macros = { path = "./packages/macros" } onelauncher_gui = { path = "./apps/desktop" } onelauncher_test = { path = "./apps/testing" } onelauncher_gamemode = { path = "./packages/gamemode" } onelauncher_prisma = { path = "./packages/prisma" } onelauncher_prisma_cli = { path = "./packages/prisma-cli" } onelauncher_utils = { path = "./packages/utils" } # # ============= TAURI ============= # # # tauri uses latest crates.io rc channel tauri = { version = "=2.0.0-rc.8", features = [ "rustls-tls", "tracing", "specta", "uuid", "protocol-asset" ] } # tauri-utils is a collection of utilities for tauri apps. tauri-utils = { version = "=2.0.0-rc.7" } # tauri-build is the codegen utility for our tauri buildscript. tauri-build = { version = "=2.0.0-rc.7" } # tauri-plugin-shell adds a bridge for opening urls and paths in the frontend. tauri-plugin-shell = { version = "=2.0.0-rc.3" } # tauri-plugin-window-state saves the window position and size to be restored. tauri-plugin-window-state = { version = "=2.0.0-rc.2" } # tauri-plugin-single-instance ensures that only one instance of the app is running. tauri-plugin-single-instance = { version = "=2.0.0-rc.1" } # tauri-plugin-clipboard-manager adds a bridge for reading/writing to the clipboard. tauri-plugin-clipboard-manager = { version = "=2.0.0-rc.3" } # tauri-plugin-updater allows for us to use it's functionality for in-app updates. tauri-plugin-updater = { version = "=2.0.0-rc.2" } # tauri-plugin-dialog adds a bridge for opening file manager and message dialogs. tauri-plugin-dialog = { version = "=2.0.0-rc.3" } # tauri-plugin-deep-link adds a way to handle custom uri schemes (onelauncher://) tauri-plugin-deep-link = { version = "=2.0.0-rc.2" } # # ============= CORE ============= # # # rspc is used as a faster and more intuitive replacement for tauri-specta # commands/apis that don't depend on tauri. rather than using the tauri # event and invoke apis for handling api calling, it creates a router which # we can easily use with tanstack solid query apis. # this means we don't have to redefine all our core apis as tauri commands. # features: "specta2" is for using the latest v2 rc of specta. # TODO: the api migration is blocked until rspc updates to a newer version of tauri v2. rspc = { version = "=0.2.0", features = [ "specta2", "tracing" ] } # specta is used as a peer dependency for tauri-specta and rspc. # it generates rust code into other languages, in our case, typescript. # v2 is the latest/only version, and it is updated as a release candidate # on crates.io almost after every commit, so a git dep isn't necessary. # features: "derive" and "function" are core apis of specta we rely on. # the remaining features implements the specta::Type trait for their # respective dependencies of the same name. if we add a new dependency # and run into specta errors, adding the dependency as a feature will usually solve this. specta = { version = "=2.0.0-rc.20", features = [ "chrono", "uuid", "serde", "serde_json", "function", "derive", "time" ] } # tauri-specta is the tauri adapter for specta. tauri-specta = { version = "=2.0.0-rc.18", features = [ "javascript", "typescript", "derive" ] } # specta-typescript is the typescript adapter for specta. specta-typescript = { version = "=0.0.7" } # rspc-specta2 is the specta v2 (rc) adapter for rspc. rspc-tauri2 = { version = "=0.0.1" } # core utilities for minecraft and mod management with pulseflow apis interpulse = { version = "=1.1.3", features = [ "specta" ] } # # ============= SECURITY ============= # # thiserror = { version = "1.0" } anyhow = { version = "1.0" } tracing = { version = "0.1" } tracing-subscriber = { version = "0.3", features = [ "chrono", "env-filter" ] } tracing-error = { version = "0.2" } tracing-appender = { version = "0.2" } iota_stronghold = { version = "2.1" } zeroize = { version = "1.8", features = [ "zeroize_derive" ] } # # ============= SERIALIZATION ============= # # serde = { version = "1.0", features = [ "derive" ] } serde_json = { version = "1.0" } serde_ini = { version = "0.2" } regex = { version = "1.10" } url = { version = "2.5.2" } strum = { version = "0.26", features = [ "derive" ] } chrono = { version = "0.4", features = [ "serde" ] } rand = { version = "0.8.5" } byteorder = { version = "1.5.0" } base64 = { version = "0.22" } p256 = { version = "0.13.2", features = [ "ecdsa" ] } uuid = { version = "1.10", features = [ "serde", "v4" ] } toml = { version = "0.8" } nom = { version = "7" } # # ============= NETWORK ============= # # reqwest = { version = "0.12", default-features = false, features = [ "json", "stream", "multipart", "blocking", "rustls-tls", "charset", "http2", "macos-system-configuration", "deflate", "gzip", "brotli" ] } async-tungstenite = { version = "0.28", features = [ "tokio-runtime", "tokio-rustls-webpki-roots" ] } webbrowser = { version = "1.0" } # # ============= SYSTEM ============= # # tokio = { version = "1.40", features = [ "full" ] } tokio-stream = { version = "0.1.16", features = [ "fs" ] } notify = { version = "6.1", default-features = false } notify-debouncer-mini = { version = "0.4", default-features = false } tempfile = { version = "3.12" } dunce = { version = "1.0.5" } zip = { version = "2.2.0" } dirs = { version = "5.0" } async_zip = { version = "0.0.17", features = [ "full" ] } async-compression = { version = "0.4.12", features = [ "flate2", "tokio" ] } flate2 = { version = "1.0" } sha1_smol = { version = "1.0", features = [ "std" ] } sha2 = { version = "0.10" } bytes = { version = "1.7" } # # ============= UTILITY ============= # # async-channel = { version = "2.3" } pin-project-lite = { version = "0.2" } once_cell = { version = "1.19" } quote = { version = "1.0" } syn = { version = "2.0", features = [ "full" ] } discord-rich-presence = { version = "0.2" } winreg = { version = "0.52" } paste = { version = "1.0" } dashmap = { version = "6.1", features = [ "serde" ] } lazy_static = { version = "1.5" } indicatif = { version = "0.17" } futures = { version = "0.3" } async-recursion = { version = "1.1" } sysinfo = { version = "0.31", features = [ "serde" ] } sys-info = { version = "0.9" } whoami = { version = "1.5" } cocoa = { version = "0.26" } objc = { version = "0.2" } cc = { version = "1.1" } libc = { version = "0.2" } # https://github.com/tauri-apps/tauri/blob/dev/crates/tauri/Cargo.toml#L102 webkit2gtk = { version = "=2.0.1", features = [ "v2_40" ] } [workspace.dependencies.prisma-client-rust] git = "https://github.com/brendonovich/prisma-client-rust" rev = "4f9ef9d38ca732162accff72b2eb684d2f120bab" features = [ "migrations", "specta", "sqlite", "sqlite-create-many", "rspc" ] default-features = false [workspace.dependencies.prisma-client-rust-generator] git = "https://github.com/brendonovich/prisma-client-rust" rev = "4f9ef9d38ca732162accff72b2eb684d2f120bab" features = [ "migrations", "specta", "sqlite", "sqlite-create-many", "rspc" ] default-features = false [patch.crates-io] # rspc = { git = "https://github.com/oscartbeaumont/rspc", rev = "9f26d6400affdb501837cb023678268ad72feb9b" } # rspc-tauri2 = { git = "https://github.com/specta-rs/tauri2", rev = "6b9419566e2a826fb2a62538c7647f4524ab0fea" } [profile.dev] # add debug symbols/logic and optimize for reduced build time (parallel) debug = true # add debug info opt-level = 0 # reduce optimizations strip = "none" # don't remove debug symbols incremental = true # enable incremental compilation split-debuginfo = "unpacked" # unpack debug info lto = false # disable link time optimizations, reduce compile time codegen-units = 256 # make parallel incremental builds faster rpath = false # disable rpath panic = "unwind" # add unwind panic logic because some deps require it # add debug symbols/logic and optimize for reduced build time (parallel) [profile.dev-debug] inherits = "dev" # extend the dev profile split-debuginfo = "none" # don't split debug info opt-level = 0 # reduce optimizations debug = "full" # add full debug info strip = "none" # don't remove debug symbols lto = "off" # disable link time optimizations, reduce compile time codegen-units = 256 # make parallel incremental builds faster incremental = true # enable incremental compilation # set the settings for build scripts and proc-macros. [profile.dev.build-override] opt-level = 3 # optimize build # set the default for dependencies, except workspace members. [profile.dev.package."*"] opt-level = 3 # optimize build incremental = false # disable incremental compilation # set the default for dependencies, except workspace members. [profile.dev-debug.package."*"] inherits = "dev" # extend the dev profile opt-level = 3 # optimize build debug = "full" # add full debug info incremental = false # disable incremental compilation # optimize for speed and reduce size for release [profile.release] panic = "abort" # strip panic cleanup logic codegen-units = 1 # compile crate one after another for better optimization lto = true # enable link time optimization opt-level = "s" # optimize binary strip = true # remove debug symbols