diff --git a/Cargo.lock b/Cargo.lock index 75038728..f5062a40 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -270,7 +270,7 @@ name = "assets" version = "1.0.2" dependencies = [ "anyhow", - "gpui", + "gpui-pre", "log", "rust-embed", ] @@ -531,7 +531,7 @@ dependencies = [ name = "auto_update" version = "1.0.2" dependencies = [ - "gpui", + "gpui-pre", "gpui-updater-core", "instant", "log", @@ -1072,7 +1072,7 @@ dependencies = [ "flume 0.11.1", "futures", "fuzzy-matcher", - "gpui", + "gpui-pre", "instant", "itertools 0.13.0", "log", @@ -1093,7 +1093,7 @@ dependencies = [ "common", "flume 0.11.1", "futures", - "gpui", + "gpui-pre", "itertools 0.13.0", "linkify", "log", @@ -1241,16 +1241,6 @@ dependencies = [ "unicode-width", ] -[[package]] -name = "collections" -version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#4b47ceb9d328035bde5ef99009e674d9fee07fb7" -dependencies = [ - "gpui_util", - "indexmap", - "rustc-hash 2.1.3", -] - [[package]] name = "color_quant" version = "1.1.0" @@ -1272,9 +1262,9 @@ name = "common" version = "1.0.2" dependencies = [ "chrono", - "dirs 5.0.1", + "dirs", "futures", - "gpui", + "gpui-pre", "instant", "itertools 0.13.0", "log", @@ -1423,15 +1413,15 @@ dependencies = [ "chat", "common", "device", - "gpui", - "gpui_linux", - "gpui_macos", - "gpui_platform", - "gpui_windows", + "gpui-pre", + "gpui-pre-linux", + "gpui-pre-macos", + "gpui-pre-platform", + "gpui-pre-reqwest-client", + "gpui-pre-windows", "log", "nostr-sdk", "person", - "reqwest_client", "settings", "state", "theme", @@ -1453,9 +1443,9 @@ dependencies = [ "getrandom 0.2.17", "getrandom 0.3.4", "getrandom 0.4.3", - "gpui", - "gpui_platform", - "gpui_web", + "gpui-pre", + "gpui-pre-platform", + "gpui-pre-web", "instant", "log", "person", @@ -1790,16 +1780,6 @@ dependencies = [ "unicode-xid", ] -[[package]] -name = "derive_refineable" -version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#4b47ceb9d328035bde5ef99009e674d9fee07fb7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - [[package]] name = "device" version = "1.0.2" @@ -1807,7 +1787,7 @@ dependencies = [ "anyhow", "common", "flume 0.11.1", - "gpui", + "gpui-pre", "instant", "log", "nostr-sdk", @@ -1849,16 +1829,7 @@ version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" dependencies = [ - "dirs-sys 0.4.1", -] - -[[package]] -name = "dirs" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" -dependencies = [ - "dirs-sys 0.5.0", + "dirs-sys", ] [[package]] @@ -1869,22 +1840,10 @@ checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" dependencies = [ "libc", "option-ext", - "redox_users 0.4.6", + "redox_users", "windows-sys 0.48.0", ] -[[package]] -name = "dirs-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" -dependencies = [ - "libc", - "option-ext", - "redox_users 0.5.3", - "windows-sys 0.61.2", -] - [[package]] name = "dispatch" version = "0.2.0" @@ -2387,6 +2346,16 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" +[[package]] +name = "futf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" +dependencies = [ + "mac", + "new_debug_unreachable", +] + [[package]] name = "futures" version = "0.3.34" @@ -2704,9 +2673,45 @@ dependencies = [ ] [[package]] -name = "gpui" -version = "0.2.2" -source = "git+https://github.com/zed-industries/zed#4b47ceb9d328035bde5ef99009e674d9fee07fb7" +name = "gpui-base" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d45dcaaeac889bf1e7757db1beb26c9043c8ea3156651facc11c6be56bb6722" +dependencies = [ + "aho-corasick", + "anyhow", + "async-channel", + "chrono", + "futures", + "gpui-pre", + "gpui-pre-macros", + "gpui-pre-sum-tree", + "html5ever", + "instant", + "lsp-types", + "markdown", + "markup5ever_rcdom", + "objc2 0.6.4", + "objc2-app-kit 0.3.2", + "objc2-foundation 0.3.2", + "raw-window-handle", + "regex", + "ropey", + "schemars", + "serde", + "serde_json", + "smallvec", + "smol", + "tracing", + "unicode-segmentation", + "web-time", +] + +[[package]] +name = "gpui-pre" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a9ca98fdcad06276de623c2f48ebd710f1e7724eebef2f2673c583e85dc8335" dependencies = [ "accesskit", "anyhow", @@ -2715,7 +2720,6 @@ dependencies = [ "bindgen", "bitflags 2.13.2", "chrono", - "collections", "core-video", "ctor", "derive_more", @@ -2724,19 +2728,23 @@ dependencies = [ "futures", "futures-concurrency", "getrandom 0.3.4", - "gpui_macros", - "gpui_shared_string", - "gpui_util", + "gpui-pre-collections", + "gpui-pre-http-client", + "gpui-pre-macros", + "gpui-pre-refineable", + "gpui-pre-scheduler", + "gpui-pre-shared-string", + "gpui-pre-sum-tree", + "gpui-pre-util", + "gpui-pre-util-macros", + "gpui-pre-ztracing", "heapless 0.9.3", - "http_client", "image", "inventory", "itertools 0.14.0", "log", "lyon", "num_cpus", - "objc2-core-foundation", - "objc2-core-video", "parking", "parking_lot", "pin-project", @@ -2745,10 +2753,8 @@ dependencies = [ "profiling", "rand 0.9.5", "raw-window-handle", - "refineable", "regex", "resvg", - "scheduler", "schemars", "seahash", "serde", @@ -2757,13 +2763,12 @@ dependencies = [ "smallvec", "spin 0.10.1", "strum", - "sum_tree", "taffy", "thiserror 2.0.20", + "tracing", "ttf-parser", "url", "usvg", - "util_macros", "uuid", "waker-fn", "web-time", @@ -2773,36 +2778,22 @@ dependencies = [ ] [[package]] -name = "gpui-updater-core" -version = "0.1.0" -source = "git+https://github.com/AprilNEA/gpui-updater#a622818f581eb8663a3a19d65f18b962f665946c" -dependencies = [ - "minisign-verify", - "semver", - "serde", - "serde_json", - "sha2 0.10.9", - "thiserror 2.0.20", - "tracing", - "ureq", -] - -[[package]] -name = "gpui_apple" -version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#4b47ceb9d328035bde5ef99009e674d9fee07fb7" +name = "gpui-pre-apple" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3fc4da82c5c2dbb25443655cfbc4305a2e2d1380bc0b815e80664fdfbf4cfdb" dependencies = [ "anyhow", "block", "cbindgen", "cocoa 0.26.0", - "collections", "core-foundation 0.10.1", "core-video", "derive_more", "etagere", "foreign-types", - "gpui", + "gpui-pre", + "gpui-pre-collections", "image", "log", "metal", @@ -2812,9 +2803,65 @@ dependencies = [ ] [[package]] -name = "gpui_linux" -version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#4b47ceb9d328035bde5ef99009e674d9fee07fb7" +name = "gpui-pre-collections" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "626a09f683ff6f3b2f708341bdcea9d479af5b14a6a2fccec9cff935ec0751b7" +dependencies = [ + "gpui-pre-util", + "indexmap", + "rustc-hash 2.1.3", +] + +[[package]] +name = "gpui-pre-derive-refineable" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56d06116a2b857588f6ea7bfb447b3554ba985e780b5995ae47780252da152f3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "gpui-pre-http-client" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0d2071c582c1a0f71b8c7c00607a3b9cd18f81fb3510d41845db3447b2a11c9" +dependencies = [ + "anyhow", + "async-compression", + "bytes", + "derive_more", + "futures", + "http", + "http-body", + "log", + "parking_lot", + "serde", + "serde_json", + "serde_urlencoded", + "url", +] + +[[package]] +name = "gpui-pre-http-client-tls" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b6f3936802580259d5af9bcb2ab37fb0d7002caeed449eaabb007c62aea7341" +dependencies = [ + "log", + "rustls", + "rustls-platform-verifier", + "webpki-roots 1.0.9", +] + +[[package]] +name = "gpui-pre-linux" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6b427589681ec1fed27951fd82edc70a7e288bb2487ede26dbbd07c2ce23d4f" dependencies = [ "accesskit", "accesskit_unix", @@ -2825,13 +2872,13 @@ dependencies = [ "bytemuck", "calloop", "calloop-wayland-source", - "collections", "filedescriptor", "futures", - "gpui", - "gpui_util", - "gpui_wgpu", - "http_client", + "gpui-pre", + "gpui-pre-collections", + "gpui-pre-http-client", + "gpui-pre-util", + "gpui-pre-wgpu", "libc", "log", "notify-rust", @@ -2858,17 +2905,18 @@ dependencies = [ ] [[package]] -name = "gpui_macos" -version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#4b47ceb9d328035bde5ef99009e674d9fee07fb7" +name = "gpui-pre-macos" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "806eac0cb5c0eebc0b032c6450c11d283264f9ac05754dda83fc80d0b86b4ee8" dependencies = [ "accesskit", "accesskit_macos", "anyhow", "async-task", + "block", "block2 0.6.2", "cocoa 0.26.0", - "collections", "core-foundation 0.10.1", "core-foundation-sys", "core-graphics 0.24.0", @@ -2877,19 +2925,20 @@ dependencies = [ "dispatch2", "foreign-types", "futures", - "gpui", - "gpui_apple", - "gpui_util", + "gpui-pre", + "gpui-pre-apple", + "gpui-pre-collections", + "gpui-pre-media", + "gpui-pre-util", "image", "itertools 0.14.0", "libc", "log", "mach2", + "metal", "objc", "objc2 0.6.4", "objc2-app-kit 0.3.2", - "objc2-core-graphics", - "objc2-core-media", "objc2-foundation 0.3.2", "objc2-screen-capture-kit", "objc2-user-notifications", @@ -2904,33 +2953,157 @@ dependencies = [ ] [[package]] -name = "gpui_macros" -version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#4b47ceb9d328035bde5ef99009e674d9fee07fb7" +name = "gpui-pre-macros" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06139051bf1db51949bfbb4ee338208bd64b4c35340d8c1a6a8200744e28fe1" dependencies = [ "heck 0.5.0", + "proc-macro-crate", "proc-macro2", "quote", "syn 2.0.119", ] [[package]] -name = "gpui_platform" -version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#4b47ceb9d328035bde5ef99009e674d9fee07fb7" +name = "gpui-pre-media" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "500acb13f818ff234021c1b9eae8592b0cbe017a64e26908c736b7421b1c6213" dependencies = [ - "console_error_panic_hook", - "gpui", - "gpui_linux", - "gpui_macos", - "gpui_web", - "gpui_windows", + "anyhow", + "bindgen", + "core-foundation 0.10.1", + "core-video", + "foreign-types", + "metal", + "objc", ] [[package]] -name = "gpui_shared_string" -version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#4b47ceb9d328035bde5ef99009e674d9fee07fb7" +name = "gpui-pre-perf" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0973bbb02bf46940ac0861d9dce0fc03a3109634172b69108d1bc13fa29d76c" +dependencies = [ + "gpui-pre-collections", + "serde", + "serde_json", +] + +[[package]] +name = "gpui-pre-platform" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b613512e29f1e7b825bfa7e50a447388ff1347044350a475e4c98a892a985c8d" +dependencies = [ + "console_error_panic_hook", + "gpui-pre", + "gpui-pre-linux", + "gpui-pre-macos", + "gpui-pre-web", + "gpui-pre-windows", +] + +[[package]] +name = "gpui-pre-refineable" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "428f23703ead5601618ffea73c137897b98a94ce8d30e257f22be947732dfbf9" +dependencies = [ + "gpui-pre-derive-refineable", +] + +[[package]] +name = "gpui-pre-reqwest" +version = "0.12.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05be23908e707966824f8c51a609904b7f30739e8d915e120a53c1b995ba964c" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "mime_guess", + "once_cell", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls", + "rustls-native-certs", + "rustls-pemfile", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "system-configuration", + "tokio", + "tokio-rustls", + "tokio-socks", + "tokio-util", + "tower", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "windows-registry 0.4.0", +] + +[[package]] +name = "gpui-pre-reqwest-client" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05d4e3d2eb2ab777597879e46047247447b9d93cef568e63d545c9deb1b3e57" +dependencies = [ + "anyhow", + "bytes", + "futures", + "gpui-pre-http-client", + "gpui-pre-http-client-tls", + "gpui-pre-reqwest", + "gpui-pre-util", + "log", + "regex", + "tokio", +] + +[[package]] +name = "gpui-pre-scheduler" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dd1b7ff2e7bf43302ae982cd786a22c16c52e16682e67b66cfbe2cb2bc3a72d" +dependencies = [ + "async-task", + "backtrace", + "chrono", + "flume 0.12.0", + "futures", + "parking_lot", + "rand 0.9.5", + "wasm_thread", + "web-time", +] + +[[package]] +name = "gpui-pre-shared-string" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "424a4dd6a570473d57acf1df2bfb9f3028d4b568abcaeb9252e0f13047b50c03" dependencies = [ "schemars", "serde", @@ -2938,20 +3111,23 @@ dependencies = [ ] [[package]] -name = "gpui_tokio" -version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#4b47ceb9d328035bde5ef99009e674d9fee07fb7" +name = "gpui-pre-sum-tree" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4855718e82630d29198b515d2b027361ef63dd19b6021cefe945789dcff82372" dependencies = [ - "anyhow", - "gpui", - "gpui_util", - "tokio", + "gpui-pre-ztracing", + "heapless 0.9.3", + "log", + "rayon", + "tracing", ] [[package]] -name = "gpui_util" -version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#4b47ceb9d328035bde5ef99009e674d9fee07fb7" +name = "gpui-pre-util" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e973148165346c0f9b3f5072b321d7c2f33807c93daea67fe298c005c0e0c2a8" dependencies = [ "anyhow", "log", @@ -2959,21 +3135,33 @@ dependencies = [ ] [[package]] -name = "gpui_web" -version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#4b47ceb9d328035bde5ef99009e674d9fee07fb7" +name = "gpui-pre-util-macros" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f71f6212d3772a70988c7d64627c7284dec73c17992ac4f9f0cdfdd46cbb677" +dependencies = [ + "gpui-pre-perf", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "gpui-pre-web" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f0daada903f106be946d87e25f5bc85ad6cf60d6d82cb8f8aed945417a9c1a3" dependencies = [ "anyhow", "console_error_panic_hook", "futures", - "gpui", - "gpui_wgpu", - "http_client", + "gpui-pre", + "gpui-pre-http-client", + "gpui-pre-scheduler", + "gpui-pre-wgpu", "js-sys", "log", "parking_lot", "raw-window-handle", - "scheduler", "smallvec", "unicode-properties", "unicode-script", @@ -2987,17 +3175,18 @@ dependencies = [ ] [[package]] -name = "gpui_wgpu" -version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#4b47ceb9d328035bde5ef99009e674d9fee07fb7" +name = "gpui-pre-wgpu" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "640b666a16ddf9504e2eb3e7a997acb2b2adfaa7859925bdd36fc3acfd8f30a7" dependencies = [ "anyhow", "bytemuck", - "collections", "cosmic-text", "etagere", - "gpui", - "gpui_util", + "gpui-pre", + "gpui-pre-collections", + "gpui-pre-util", "itertools 0.14.0", "log", "parking_lot", @@ -3013,19 +3202,20 @@ dependencies = [ ] [[package]] -name = "gpui_windows" -version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#4b47ceb9d328035bde5ef99009e674d9fee07fb7" +name = "gpui-pre-windows" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c12c7d84ec422feb2f064117d572447998381e5c219fcad69fe19f10d0b7aaea" dependencies = [ "accesskit", "accesskit_windows", "anyhow", - "collections", "dunce", "etagere", "futures", - "gpui", - "gpui_util", + "gpui-pre", + "gpui-pre-collections", + "gpui-pre-util", "image", "itertools 0.14.0", "log", @@ -3040,6 +3230,61 @@ dependencies = [ "windows-registry 0.6.1", ] +[[package]] +name = "gpui-pre-zlog" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98352858fac3d4d05b46d6014ad04bad313652a691d4e21dc55fa96fb4acb7cf" +dependencies = [ + "anyhow", + "chrono", + "gpui-pre-collections", + "log", +] + +[[package]] +name = "gpui-pre-ztracing" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d63a3c7276875b4d7e6d3961e92a138e9233e86a591bf318f2e54df4ad58102" +dependencies = [ + "gpui-pre-zlog", + "gpui-pre-ztracing-macro", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "gpui-pre-ztracing-macro" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84e2a5ff79002223edfcfa76c6f9f79f4f60f6ec545ccc27832f12bd46348b39" + +[[package]] +name = "gpui-updater-core" +version = "0.1.0" +source = "git+https://github.com/AprilNEA/gpui-updater#a622818f581eb8663a3a19d65f18b962f665946c" +dependencies = [ + "minisign-verify", + "semver", + "serde", + "serde_json", + "sha2 0.10.9", + "thiserror 2.0.20", + "tracing", + "ureq", +] + +[[package]] +name = "gpui_tokio" +version = "0.1.0" +dependencies = [ + "anyhow", + "gpui-pre", + "gpui-pre-util", + "tokio", +] + [[package]] name = "h2" version = "0.4.19" @@ -3254,6 +3499,20 @@ dependencies = [ "digest 0.11.3", ] +[[package]] +name = "html5ever" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c13771afe0e6e846f1e67d038d4cb29998a6779f93c809212e4e9c32efd244d4" +dependencies = [ + "log", + "mac", + "markup5ever", + "proc-macro2", + "quote", + "syn 2.0.119", +] + [[package]] name = "http" version = "1.5.0" @@ -3287,37 +3546,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "http_client" -version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#4b47ceb9d328035bde5ef99009e674d9fee07fb7" -dependencies = [ - "anyhow", - "async-compression", - "bytes", - "derive_more", - "futures", - "http", - "http-body", - "log", - "parking_lot", - "serde", - "serde_json", - "serde_urlencoded", - "url", -] - -[[package]] -name = "http_client_tls" -version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#4b47ceb9d328035bde5ef99009e674d9fee07fb7" -dependencies = [ - "log", - "rustls", - "rustls-platform-verifier", - "webpki-roots 1.0.9", -] - [[package]] name = "httparse" version = "1.10.1" @@ -4034,6 +4262,12 @@ dependencies = [ "num-traits", ] +[[package]] +name = "mac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" + [[package]] name = "mac-notification-sys" version = "0.6.15" @@ -4066,6 +4300,42 @@ dependencies = [ "libc", ] +[[package]] +name = "markdown" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5cab8f2cadc416a82d2e783a1946388b31654d391d1c7d92cc1f03e295b1deb" +dependencies = [ + "serde", + "unicode-id", +] + +[[package]] +name = "markup5ever" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16ce3abbeba692c8b8441d036ef91aea6df8da2c6b6e21c7e14d3c18e526be45" +dependencies = [ + "log", + "phf 0.11.3", + "phf_codegen", + "string_cache", + "string_cache_codegen", + "tendril", +] + +[[package]] +name = "markup5ever_rcdom" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edaa21ab3701bfee5099ade5f7e1f84553fd19228cf332f13cd6e964bf59be18" +dependencies = [ + "html5ever", + "markup5ever", + "tendril", + "xml5ever", +] + [[package]] name = "maybe-rayon" version = "0.1.1" @@ -4645,8 +4915,8 @@ dependencies = [ "block2 0.5.1", "libc", "objc2 0.5.2", - "objc2-core-data", - "objc2-core-image", + "objc2-core-data 0.2.2", + "objc2-core-image 0.2.2", "objc2-foundation 0.2.2", "objc2-quartz-core 0.2.2", ] @@ -4659,31 +4929,28 @@ checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" dependencies = [ "bitflags 2.13.2", "block2 0.6.2", + "libc", "objc2 0.6.4", + "objc2-cloud-kit", + "objc2-core-data 0.3.2", "objc2-core-foundation", + "objc2-core-graphics", + "objc2-core-image 0.3.2", + "objc2-core-text", + "objc2-core-video", "objc2-foundation 0.3.2", + "objc2-quartz-core 0.3.2", ] [[package]] -name = "objc2-core-audio" +name = "objc2-cloud-kit" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1eebcea8b0dbff5f7c8504f3107c68fc061a3eb44932051c8cf8a68d969c3b2" -dependencies = [ - "dispatch2", - "objc2 0.6.4", - "objc2-core-audio-types", - "objc2-core-foundation", -] - -[[package]] -name = "objc2-core-audio-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a89f2ec274a0cf4a32642b2991e8b351a404d290da87bb6a9a9d8632490bd1c" +checksum = "73ad74d880bb43877038da939b7427bba67e9dd42004a18b809ba7d87cee241c" dependencies = [ "bitflags 2.13.2", "objc2 0.6.4", + "objc2-foundation 0.3.2", ] [[package]] @@ -4698,6 +4965,17 @@ dependencies = [ "objc2-foundation 0.2.2", ] +[[package]] +name = "objc2-core-data" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa" +dependencies = [ + "bitflags 2.13.2", + "objc2 0.6.4", + "objc2-foundation 0.3.2", +] + [[package]] name = "objc2-core-foundation" version = "0.3.2" @@ -4734,6 +5012,16 @@ dependencies = [ "objc2-metal 0.2.2", ] +[[package]] +name = "objc2-core-image" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d563b38d2b97209f8e861173de434bd0214cf020e3423a52624cd1d989f006" +dependencies = [ + "objc2 0.6.4", + "objc2-foundation 0.3.2", +] + [[package]] name = "objc2-core-location" version = "0.3.2" @@ -4745,18 +5033,15 @@ dependencies = [ ] [[package]] -name = "objc2-core-media" +name = "objc2-core-text" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ec576860167a15dd9fce7fbee7512beb4e31f532159d3482d1f9c6caedf31d" +checksum = "0cde0dfb48d25d2b4862161a4d5fcc0e3c24367869ad306b0c9ec0073bfed92d" dependencies = [ "bitflags 2.13.2", - "dispatch2", "objc2 0.6.4", - "objc2-core-audio", - "objc2-core-audio-types", "objc2-core-foundation", - "objc2-core-video", + "objc2-core-graphics", ] [[package]] @@ -4871,10 +5156,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74b7c5390f477482f001bc354d6571a70db7e4f8d5288e860c45521fbce11394" dependencies = [ "block2 0.6.2", - "dispatch2", "objc2 0.6.4", "objc2-core-graphics", - "objc2-core-media", "objc2-foundation 0.3.2", ] @@ -5114,16 +5397,6 @@ version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" -[[package]] -name = "perf" -version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#4b47ceb9d328035bde5ef99009e674d9fee07fb7" -dependencies = [ - "collections", - "serde", - "serde_json", -] - [[package]] name = "person" version = "1.0.2" @@ -5131,7 +5404,7 @@ dependencies = [ "anyhow", "common", "flume 0.11.1", - "gpui", + "gpui-pre", "instant", "log", "nostr-sdk", @@ -5160,6 +5433,16 @@ dependencies = [ "serde", ] +[[package]] +name = "phf_codegen" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" +dependencies = [ + "phf_generator 0.11.3", + "phf_shared 0.11.3", +] + [[package]] name = "phf_generator" version = "0.11.3" @@ -5413,6 +5696,12 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + [[package]] name = "presser" version = "0.3.1" @@ -5866,16 +6155,6 @@ dependencies = [ "thiserror 1.0.69", ] -[[package]] -name = "redox_users" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60dc65c0ff1a7ae1294b0c67b9f14baf70b644404010370171787bfac1038fc0" -dependencies = [ - "libredox", - "thiserror 2.0.20", -] - [[package]] name = "ref-cast" version = "1.0.27" @@ -5896,14 +6175,6 @@ dependencies = [ "syn 3.0.6", ] -[[package]] -name = "refineable" -version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#4b47ceb9d328035bde5ef99009e674d9fee07fb7" -dependencies = [ - "derive_refineable", -] - [[package]] name = "regex" version = "1.13.1" @@ -5978,23 +6249,6 @@ dependencies = [ "webpki-roots 1.0.9", ] -[[package]] -name = "reqwest_client" -version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#4b47ceb9d328035bde5ef99009e674d9fee07fb7" -dependencies = [ - "anyhow", - "bytes", - "futures", - "gpui_util", - "http_client", - "http_client_tls", - "log", - "regex", - "tokio", - "zed-reqwest", -] - [[package]] name = "resvg" version = "0.46.0" @@ -6279,22 +6533,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "scheduler" -version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#4b47ceb9d328035bde5ef99009e674d9fee07fb7" -dependencies = [ - "async-task", - "backtrace", - "chrono", - "flume 0.12.0", - "futures", - "parking_lot", - "rand 0.9.5", - "wasm_thread", - "web-time", -] - [[package]] name = "schemars" version = "1.2.2" @@ -6554,7 +6792,7 @@ version = "1.0.2" dependencies = [ "anyhow", "common", - "gpui", + "gpui-pre", "log", "nostr-sdk", "paste", @@ -6803,7 +7041,7 @@ dependencies = [ "data-encoding", "flume 0.11.1", "futures", - "gpui", + "gpui-pre", "gpui_tokio", "instant", "log", @@ -6834,12 +7072,6 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d08889ec5408683408db66ad89e0e1f93dff55c73a4ccc71c427d5b277ee47e6" -[[package]] -name = "streaming-iterator" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b2231b7c3057d5e4ad0156fb3dc807d900806020c5ffa3ee6ff2c8c76fb8520" - [[package]] name = "strict-num" version = "0.1.1" @@ -6849,6 +7081,31 @@ dependencies = [ "float-cmp", ] +[[package]] +name = "string_cache" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" +dependencies = [ + "new_debug_unreachable", + "parking_lot", + "phf_shared 0.11.3", + "precomputed-hash", + "serde", +] + +[[package]] +name = "string_cache_codegen" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0" +dependencies = [ + "phf_generator 0.11.3", + "phf_shared 0.11.3", + "proc-macro2", + "quote", +] + [[package]] name = "strum" version = "0.28.0" @@ -6876,18 +7133,6 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" -[[package]] -name = "sum_tree" -version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#4b47ceb9d328035bde5ef99009e674d9fee07fb7" -dependencies = [ - "heapless 0.9.3", - "log", - "rayon", - "tracing", - "ztracing", -] - [[package]] name = "sval" version = "2.22.0" @@ -7070,12 +7315,12 @@ dependencies = [ [[package]] name = "system-configuration" -version = "0.8.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501336eb7ba9e417300a6a0fa985721065467aa83a6dcf0422a8e43e4c0328fa" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ "bitflags 2.13.2", - "core-foundation 0.10.1", + "core-foundation 0.9.4", "system-configuration-sys", ] @@ -7137,6 +7382,17 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "tendril" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" +dependencies = [ + "futf", + "mac", + "utf-8", +] + [[package]] name = "termcolor" version = "1.4.1" @@ -7151,7 +7407,8 @@ name = "theme" version = "1.0.2" dependencies = [ "anyhow", - "gpui", + "gpui-base", + "gpui-pre", "log", "schemars", "serde", @@ -7609,26 +7866,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "tree-sitter" -version = "0.26.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ebdd3a5a7e28a1890b876fdbd0c3c0fe0a6336cffaa104f11b9f720c9daa29" -dependencies = [ - "cc", - "regex", - "regex-syntax", - "serde_json", - "streaming-iterator", - "tree-sitter-language", -] - -[[package]] -name = "tree-sitter-language" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca0d1bf6fdd806e43ae5198f82f527056d359def39e54e67a0f478ac09dac081" - [[package]] name = "try-lock" version = "0.2.5" @@ -7692,20 +7929,15 @@ version = "1.0.2" dependencies = [ "anyhow", "common", - "gpui", + "gpui-base", + "gpui-pre", "instant", "itertools 0.13.0", "log", - "lsp-types", - "regex", - "ropey", "serde", "smallvec", "smol", - "sum_tree", "theme", - "tree-sitter", - "unicode-segmentation", "uuid", ] @@ -7733,6 +7965,12 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce61d488bcdc9bc8b5d1772c404828b17fc481c0a582b5581e95fb233aef503e" +[[package]] +name = "unicode-id" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ba288e709927c043cbe476718d37be306be53fb1fafecd0dbe36d072be2580" + [[package]] name = "unicode-ident" version = "1.0.25" @@ -7907,16 +8145,6 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" -[[package]] -name = "util_macros" -version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#4b47ceb9d328035bde5ef99009e674d9fee07fb7" -dependencies = [ - "perf", - "quote", - "syn 2.0.119", -] - [[package]] name = "uuid" version = "1.26.1" @@ -8120,7 +8348,8 @@ dependencies = [ [[package]] name = "wasm_thread" version = "0.3.3" -source = "git+https://github.com/zed-industries/wasm_thread?rev=0cf96c7708dfb97ccf3da50347e25edcf75d6937#0cf96c7708dfb97ccf3da50347e25edcf75d6937" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7516db7f32decdadb1c3b8deb1b7d78b9df7606c5cc2f6241737c2ab3a0258e" dependencies = [ "futures", "js-sys", @@ -9095,7 +9324,7 @@ dependencies = [ "chat_ui", "common", "device", - "gpui", + "gpui-pre", "instant", "log", "nostr-connect", @@ -9176,15 +9405,17 @@ checksum = "163b33ed8786455e2fa5d72f554057ce3f3182425434f756cd39c99839d88e23" [[package]] name = "xim-ctext" version = "0.3.0" -source = "git+https://github.com/zed-industries/xim-rs.git?rev=16f35a2c881b815a2b6cdfd6687988e84f8447d8#16f35a2c881b815a2b6cdfd6687988e84f8447d8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ac61a7062c40f3c37b6e82eeeef835d5cc7824b632a72784a89b3963c33284c" dependencies = [ "encoding_rs", ] [[package]] name = "xim-parser" -version = "0.2.1" -source = "git+https://github.com/zed-industries/xim-rs.git?rev=16f35a2c881b815a2b6cdfd6687988e84f8447d8#16f35a2c881b815a2b6cdfd6687988e84f8447d8" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dcee45f89572d5a65180af3a84e7ddb24f5ea690a6d3aa9de231281544dd7b7" dependencies = [ "bitflags 2.13.2", ] @@ -9213,6 +9444,17 @@ version = "0.8.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e450f9b2ed1dff33c94c12589a87338689467b9c4f5d8a5710bd09a847d2c8a7" +[[package]] +name = "xml5ever" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bbb26405d8e919bc1547a5aa9abc95cbfa438f04844f5fdd9dc7596b748bf69" +dependencies = [ + "log", + "mac", + "markup5ever", +] + [[package]] name = "xmlwriter" version = "0.1.0" @@ -9374,14 +9616,15 @@ dependencies = [ [[package]] name = "zed-font-kit" version = "0.14.1-zed" -source = "git+https://github.com/zed-industries/font-kit?rev=94b0f28166665e8fd2f53ff6d268a14955c82269#94b0f28166665e8fd2f53ff6d268a14955c82269" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3898e450f36f852edda72e3f985c34426042c4951790b23b107f93394f9bff5" dependencies = [ "bitflags 2.13.2", "byteorder", "core-foundation 0.10.1", "core-graphics 0.24.0", "core-text", - "dirs 6.0.0", + "dirs", "dwrote", "float-ord", "freetype-sys", @@ -9395,59 +9638,11 @@ dependencies = [ "yeslogic-fontconfig-sys", ] -[[package]] -name = "zed-reqwest" -version = "0.12.15-zed" -source = "git+https://github.com/zed-industries/reqwest.git?rev=33bc764aa15ff7b200bf7c93bd96e24878d53e14#33bc764aa15ff7b200bf7c93bd96e24878d53e14" -dependencies = [ - "base64 0.22.1", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-rustls", - "hyper-util", - "ipnet", - "js-sys", - "log", - "mime", - "mime_guess", - "once_cell", - "percent-encoding", - "pin-project-lite", - "quinn", - "rustls", - "rustls-native-certs", - "rustls-pemfile", - "rustls-pki-types", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper", - "system-configuration", - "tokio", - "tokio-rustls", - "tokio-socks", - "tokio-util", - "tower", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "wasm-streams", - "web-sys", - "windows-registry 0.4.0", -] - [[package]] name = "zed-scap" version = "0.0.8-zed" -source = "git+https://github.com/zed-industries/scap?rev=4afea48c3b002197176fb19cd0f9b180dd36eaac#4afea48c3b002197176fb19cd0f9b180dd36eaac" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6b338d705ae33a43ca00287c11129303a7a0aa57b101b72a1c08c863f698ac8" dependencies = [ "anyhow", "cocoa 0.25.0", @@ -9468,7 +9663,8 @@ dependencies = [ [[package]] name = "zed-xim" version = "0.4.0-zed" -source = "git+https://github.com/zed-industries/xim-rs.git?rev=16f35a2c881b815a2b6cdfd6687988e84f8447d8#16f35a2c881b815a2b6cdfd6687988e84f8447d8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0b46ed118eba34d9ba53d94ddc0b665e0e06a2cf874cfa2dd5dec278148642" dependencies = [ "ahash", "hashbrown 0.14.5", @@ -9584,39 +9780,12 @@ version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b268e58e7c693d7c271f93ffc4ba3b380412554231c85bf61ca7af91042a4112" -[[package]] -name = "zlog" -version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#4b47ceb9d328035bde5ef99009e674d9fee07fb7" -dependencies = [ - "anyhow", - "chrono", - "collections", - "log", -] - [[package]] name = "zmij" version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" -[[package]] -name = "ztracing" -version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#4b47ceb9d328035bde5ef99009e674d9fee07fb7" -dependencies = [ - "tracing", - "tracing-subscriber", - "zlog", - "ztracing_macro", -] - -[[package]] -name = "ztracing_macro" -version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#4b47ceb9d328035bde5ef99009e674d9fee07fb7" - [[package]] name = "zune-core" version = "0.5.3" diff --git a/Cargo.toml b/Cargo.toml index 391680ca..8ced0833 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,14 +9,21 @@ edition = "2024" publish = false [workspace.dependencies] -# GPUI -gpui = { git = "https://github.com/zed-industries/zed" } -gpui_platform = { git = "https://github.com/zed-industries/zed", features = ["font-kit", "x11", "wayland"] } -gpui_linux = { git = "https://github.com/zed-industries/zed" } -gpui_windows = { git = "https://github.com/zed-industries/zed" } -gpui_macos = { git = "https://github.com/zed-industries/zed" } -gpui_tokio = { git = "https://github.com/zed-industries/zed" } -reqwest_client = { git = "https://github.com/zed-industries/zed" } +# GPUI. The `gpui-pre` family is upstream zed's gpui republished unchanged, so these +# aliases keep every `use gpui::..` site as it is while moving off the zed git pin. +gpui = { package = "gpui-pre", version = "0.3.5" } +gpui_platform = { package = "gpui-pre-platform", version = "0.3.5", features = ["font-kit", "x11", "wayland"] } +gpui_linux = { package = "gpui-pre-linux", version = "0.3.5" } +gpui_windows = { package = "gpui-pre-windows", version = "0.3.5" } +gpui_macos = { package = "gpui-pre-macos", version = "0.3.5" } +gpui_web = { package = "gpui-pre-web", version = "0.3.5" } +gpui_util = { package = "gpui-pre-util", version = "0.3.5" } +sum_tree = { package = "gpui-pre-sum-tree", version = "0.3.5" } +reqwest_client = { package = "gpui-pre-reqwest-client", version = "0.3.5" } +gpui_tokio = { path = "crates/gpui_tokio" } + +# Unstyled behavior, state, and infrastructure from GPUI Kit +gpui-base = "0.6.1" # Nostr nostr-lmdb = { git = "https://github.com/rust-nostr/nostr" } diff --git a/crates/chat_ui/src/lib.rs b/crates/chat_ui/src/lib.rs index ecf0efd1..977aef6b 100644 --- a/crates/chat_ui/src/lib.rs +++ b/crates/chat_ui/src/lib.rs @@ -29,7 +29,7 @@ use theme::ActiveTheme; use ui::avatar::Avatar; use ui::button::{Button, ButtonVariants}; use ui::dock::{Panel, PanelEvent}; -use ui::input::{Input, InputEvent, InputState}; +use ui::input::{Input, InputEvent, InputState, Textarea, TextareaState}; use ui::menu::DropdownMenu; use ui::notification::Notification; use ui::scroll::Scrollbar; @@ -85,7 +85,7 @@ pub struct ChatPanel { reports_by_id: Arc>>>, /// Chat input state - input: Entity, + input: Entity, /// Subject input state subject_input: Entity, @@ -142,7 +142,7 @@ impl ChatPanel { // Define input state let input = cx.new(|cx| { - InputState::new(window, cx) + TextareaState::new(window, cx) .placeholder(format!("Message {}", name)) .auto_grow(1, 20) .clean_on_escape() @@ -2108,7 +2108,7 @@ impl Render for ChatPanel { this.upload(window, cx); })), ) - .child(Input::new(&self.input).appearance(false).flex_1()) + .child(Textarea::new(&self.input).appearance(false).flex_1()) .child( h_flex() .pl_1() diff --git a/crates/gpui_tokio/Cargo.toml b/crates/gpui_tokio/Cargo.toml new file mode 100644 index 00000000..34d943fa --- /dev/null +++ b/crates/gpui_tokio/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "gpui_tokio" +version = "0.1.0" +edition.workspace = true +publish.workspace = true + +[dependencies] +anyhow.workspace = true +gpui.workspace = true +gpui_util.workspace = true +tokio = { version = "1", features = ["rt", "rt-multi-thread"] } diff --git a/crates/gpui_tokio/src/lib.rs b/crates/gpui_tokio/src/lib.rs new file mode 100644 index 00000000..7c2fff3f --- /dev/null +++ b/crates/gpui_tokio/src/lib.rs @@ -0,0 +1,102 @@ +//! Vendored from zed's `crates/gpui_tokio` (Apache-2.0) because the `gpui-pre` family +//! does not republish it, and `nostr-sdk`'s reqwest client needs a Tokio runtime. + +use std::future::Future; + +use gpui::{App, AppContext, Global, ReadGlobal, Task}; +use gpui_util::defer; +pub use tokio::task::JoinError; + +/// Initializes the Tokio wrapper using a new Tokio runtime with 2 worker threads. +/// +/// If you need more threads (or access to the runtime outside of GPUI), you can create the runtime +/// yourself and pass a Handle to `init_from_handle`. +pub fn init(cx: &mut App) { + let runtime = tokio::runtime::Builder::new_multi_thread() + // Since we now have two executors, let's try to keep our footprint small + .worker_threads(2) + .enable_all() + .build() + .expect("Failed to initialize Tokio"); + + let handle = runtime.handle().clone(); + cx.set_global(GlobalTokio { + owned_runtime: Some(runtime), + handle, + }); +} + +/// Initializes the Tokio wrapper using a Tokio runtime handle. +pub fn init_from_handle(cx: &mut App, handle: tokio::runtime::Handle) { + cx.set_global(GlobalTokio { + owned_runtime: None, + handle, + }); +} + +struct GlobalTokio { + owned_runtime: Option, + handle: tokio::runtime::Handle, +} + +impl Global for GlobalTokio {} + +impl Drop for GlobalTokio { + fn drop(&mut self) { + if let Some(runtime) = self.owned_runtime.take() { + runtime.shutdown_background(); + } + } +} + +pub struct Tokio {} + +impl Tokio { + /// Spawns the given future on Tokio's thread pool, and returns it via a GPUI task + /// Note that the Tokio task will be cancelled if the GPUI task is dropped + pub fn spawn(cx: &C, f: Fut) -> Task> + where + C: AppContext, + Fut: Future + Send + 'static, + R: Send + 'static, + { + cx.read_global(|tokio: &GlobalTokio, cx| { + let join_handle = tokio.handle.spawn(f); + let abort_handle = join_handle.abort_handle(); + let cancel = defer(move || { + abort_handle.abort(); + }); + cx.background_spawn(async move { + let result = join_handle.await; + drop(cancel); + result + }) + }) + } + + /// Spawns the given future on Tokio's thread pool, and returns it via a GPUI task + /// Note that the Tokio task will be cancelled if the GPUI task is dropped + pub fn spawn_result(cx: &C, f: Fut) -> Task> + where + C: AppContext, + Fut: Future> + Send + 'static, + R: Send + 'static, + { + cx.read_global(|tokio: &GlobalTokio, cx| { + let join_handle = tokio.handle.spawn(f); + let abort_handle = join_handle.abort_handle(); + let cancel = defer(move || { + abort_handle.abort(); + }); + cx.background_spawn(async move { + let result = join_handle.await?; + drop(cancel); + result + }) + }) + } + + pub fn handle(cx: &App) -> tokio::runtime::Handle { + GlobalTokio::global(cx).handle.clone() + } +} diff --git a/crates/theme/Cargo.toml b/crates/theme/Cargo.toml index 80e07c12..314f8d0e 100644 --- a/crates/theme/Cargo.toml +++ b/crates/theme/Cargo.toml @@ -6,6 +6,7 @@ publish.workspace = true [dependencies] gpui.workspace = true +gpui-base.workspace = true anyhow.workspace = true log.workspace = true serde.workspace = true diff --git a/crates/theme/src/lib.rs b/crates/theme/src/lib.rs index 830901ac..84028327 100644 --- a/crates/theme/src/lib.rs +++ b/crates/theme/src/lib.rs @@ -46,6 +46,63 @@ pub fn init(cx: &mut App) { Theme::sync_scrollbar_appearance(cx); } +/// Mirror the active coop theme into the `gpui-base` global theme. +/// +/// Base paints a few things from its own tokens -- the focus ring, the wash +/// behind selected text, scrollbars, and overlay backdrops -- so the two +/// globals have to agree or those details drift away from the palette. +/// +/// Only roles base can act on are projected. Radius, spacing, typography sizes, +/// shadows, and scrollbar geometry keep their base defaults: coop has a single +/// `radius`/`radius_lg`/`font_size` where base has six-point scales, so any +/// mapping would be invented rather than derived. +/// +/// This is a no-op before the coop theme global exists; [`Theme::change`] is the +/// authoritative hook that keeps the projection current. +pub fn sync_base(cx: &mut App) { + let Some(theme) = cx.try_global::() else { + return; + }; + + let appearance = if theme.mode.is_dark() { + gpui_base::ThemeAppearance::Dark + } else { + gpui_base::ThemeAppearance::Light + }; + let scrollbar_mode = match theme.scrollbar_mode { + ScrollbarMode::Scrolling => gpui_base::ScrollbarMode::Scrolling, + ScrollbarMode::Hover => gpui_base::ScrollbarMode::Hover, + ScrollbarMode::Always => gpui_base::ScrollbarMode::Always, + }; + let colors = theme.colors; + let font_family = theme.font_family.clone(); + + let base = gpui_base::Theme::global_mut(cx); + base.appearance = appearance; + base.scrollbar = base.scrollbar.clone().with_mode(scrollbar_mode); + base.tokens.typography.sans = font_family; + + let tokens = &mut base.tokens.colors; + tokens.background = colors.background; + tokens.foreground = colors.text; + tokens.surface = colors.surface_background; + tokens.surface_foreground = colors.text; + tokens.primary = colors.element_background; + tokens.primary_foreground = colors.element_foreground; + tokens.secondary = colors.secondary_background; + tokens.secondary_foreground = colors.secondary_foreground; + tokens.muted = colors.ghost_element_background_alt; + tokens.muted_foreground = colors.text_muted; + tokens.accent = colors.ghost_element_hover; + tokens.accent_foreground = colors.text; + tokens.destructive = colors.danger_background; + tokens.destructive_foreground = colors.danger_foreground; + tokens.border = colors.border; + tokens.input = colors.border; + tokens.ring = colors.ring; + tokens.selection = colors.selection; +} + pub trait ActiveTheme { fn theme(&self) -> &Theme; } @@ -183,6 +240,9 @@ impl Theme { if let Some(window) = window { window.refresh(); } + + // Keep the base-layer projection in step with the coop palette + sync_base(cx); } } diff --git a/crates/ui/Cargo.toml b/crates/ui/Cargo.toml index ce16ba98..7ce646ef 100644 --- a/crates/ui/Cargo.toml +++ b/crates/ui/Cargo.toml @@ -9,6 +9,7 @@ common = { path = "../common" } theme = { path = "../theme" } gpui.workspace = true +gpui-base.workspace = true instant.workspace = true serde.workspace = true smallvec.workspace = true @@ -16,13 +17,7 @@ anyhow.workspace = true itertools.workspace = true log.workspace = true -unicode-segmentation = "1.12.0" uuid = "1.10" -regex = "1" -lsp-types = "0.97.0" -ropey = { version = "=2.0.0-beta.1", features = ["metric_lines_lf", "metric_utf16"] } -sum_tree = { git = "https://github.com/zed-industries/zed" } [target.'cfg(not(target_arch = "wasm32"))'.dependencies] smol.workspace = true -tree-sitter = "0.26" diff --git a/crates/ui/src/actions.rs b/crates/ui/src/actions.rs deleted file mode 100644 index af2cab9c..00000000 --- a/crates/ui/src/actions.rs +++ /dev/null @@ -1,12 +0,0 @@ -use gpui::{actions, Action}; -use serde::Deserialize; - -/// Define a custom confirm action -#[derive(Clone, Action, PartialEq, Eq, Deserialize)] -#[action(namespace = list, no_json)] -pub struct Confirm { - /// Is confirm with secondary. - pub secondary: bool, -} - -actions!(ui, [Cancel, SelectUp, SelectDown, SelectLeft, SelectRight]); diff --git a/crates/ui/src/button.rs b/crates/ui/src/button.rs index 2647ccc8..81d72f09 100644 --- a/crates/ui/src/button.rs +++ b/crates/ui/src/button.rs @@ -2,15 +2,16 @@ use std::rc::Rc; use gpui::prelude::FluentBuilder as _; use gpui::{ - AnyElement, App, ClickEvent, Div, ElementId, Hsla, InteractiveElement, IntoElement, - ParentElement, RenderOnce, SharedString, Stateful, StatefulInteractiveElement as _, - StyleRefinement, Styled, Window, div, relative, + AnyElement, App, ClickEvent, ElementId, Hsla, InteractiveElement, IntoElement, MouseButton, + ParentElement, RenderOnce, SharedString, StatefulInteractiveElement as _, StyleRefinement, + Styled, Window, div, relative, }; +use gpui_base::Button as BaseButton; use theme::ActiveTheme; use crate::indicator::Indicator; use crate::tooltip::Tooltip; -use crate::{Disableable, Icon, IconName, Selectable, Sizable, Size, StyledExt, h_flex}; +use crate::{Disableable, Icon, IconName, Selectable, Sizable, Size, h_flex}; #[derive(Clone, Copy, PartialEq, Eq)] pub struct ButtonCustomVariant { @@ -114,9 +115,7 @@ pub trait ButtonVariants: Sized { #[derive(IntoElement)] #[allow(clippy::type_complexity)] pub struct Button { - id: ElementId, - base: Stateful
, - style: StyleRefinement, + base: BaseButton, icon: Option, label: Option, @@ -151,12 +150,8 @@ impl From