diff --git a/Cargo.lock b/Cargo.lock
index 84fd279fa7..d6490337da 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -126,18 +126,17 @@ dependencies = [
[[package]]
name = "alacritty_config"
version = "0.1.2-dev"
-source = "git+https://github.com/alacritty/alacritty?rev=7b9f32300ee0a249c0872302c97635b460e45ba5#7b9f32300ee0a249c0872302c97635b460e45ba5"
+source = "git+https://github.com/zed-industries/alacritty?rev=33306142195b354ef3485ca2b1d8a85dfc6605ca#33306142195b354ef3485ca2b1d8a85dfc6605ca"
dependencies = [
"log",
"serde",
"toml 0.7.6",
- "winit",
]
[[package]]
name = "alacritty_config_derive"
version = "0.2.2-dev"
-source = "git+https://github.com/alacritty/alacritty?rev=7b9f32300ee0a249c0872302c97635b460e45ba5#7b9f32300ee0a249c0872302c97635b460e45ba5"
+source = "git+https://github.com/zed-industries/alacritty?rev=33306142195b354ef3485ca2b1d8a85dfc6605ca#33306142195b354ef3485ca2b1d8a85dfc6605ca"
dependencies = [
"proc-macro2",
"quote",
@@ -147,7 +146,7 @@ dependencies = [
[[package]]
name = "alacritty_terminal"
version = "0.20.0-dev"
-source = "git+https://github.com/alacritty/alacritty?rev=7b9f32300ee0a249c0872302c97635b460e45ba5#7b9f32300ee0a249c0872302c97635b460e45ba5"
+source = "git+https://github.com/zed-industries/alacritty?rev=33306142195b354ef3485ca2b1d8a85dfc6605ca#33306142195b354ef3485ca2b1d8a85dfc6605ca"
dependencies = [
"alacritty_config",
"alacritty_config_derive",
@@ -213,30 +212,6 @@ version = "0.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec8ad6edb4840b78c5c3d88de606b22252d552b55f3a4699fbb10fc070ec3049"
-[[package]]
-name = "android-activity"
-version = "0.4.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "64529721f27c2314ced0890ce45e469574a73e5e6fdd6e9da1860eb29285f5e0"
-dependencies = [
- "android-properties",
- "bitflags 1.3.2",
- "cc",
- "jni-sys",
- "libc",
- "log",
- "ndk",
- "ndk-context",
- "ndk-sys",
- "num_enum 0.6.1",
-]
-
-[[package]]
-name = "android-properties"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04"
-
[[package]]
name = "android-tzdata"
version = "0.1.1"
@@ -926,25 +901,6 @@ dependencies = [
"generic-array",
]
-[[package]]
-name = "block-sys"
-version = "0.1.0-beta.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fa55741ee90902547802152aaf3f8e5248aab7e21468089560d4c8840561146"
-dependencies = [
- "objc-sys",
-]
-
-[[package]]
-name = "block2"
-version = "0.2.0-alpha.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8dd9e63c1744f755c2f60332b88de39d341e5e86239014ad839bd71c106dec42"
-dependencies = [
- "block-sys",
- "objc2-encode",
-]
-
[[package]]
name = "blocking"
version = "1.3.1"
@@ -1126,20 +1082,6 @@ dependencies = [
"util",
]
-[[package]]
-name = "calloop"
-version = "0.10.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "52e0d00eb1ea24371a97d2da6201c6747a633dc6dc1988ef503403b4c59504a8"
-dependencies = [
- "bitflags 1.3.2",
- "log",
- "nix 0.25.1",
- "slotmap",
- "thiserror",
- "vec_map",
-]
-
[[package]]
name = "cap-fs-ext"
version = "0.24.4"
@@ -1248,12 +1190,6 @@ version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
-[[package]]
-name = "cfg_aliases"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e"
-
[[package]]
name = "chrono"
version = "0.4.26"
@@ -1376,12 +1312,6 @@ version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b"
-[[package]]
-name = "claxon"
-version = "0.4.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4bfbf56724aa9eca8afa4fcfadeb479e722935bb2a0900c2d37e0cc477af0688"
-
[[package]]
name = "cli"
version = "0.1.0"
@@ -1479,7 +1409,7 @@ dependencies = [
[[package]]
name = "collab"
-version = "0.16.0"
+version = "0.17.0"
dependencies = [
"anyhow",
"async-tungstenite",
@@ -1552,6 +1482,7 @@ dependencies = [
"clock",
"collections",
"context_menu",
+ "db",
"editor",
"feedback",
"futures 0.3.28",
@@ -1563,9 +1494,11 @@ dependencies = [
"postage",
"project",
"recent_projects",
+ "schemars",
"serde",
"serde_derive",
"settings",
+ "staff_mode",
"theme",
"theme_selector",
"util",
@@ -2070,15 +2003,6 @@ dependencies = [
"winapi 0.3.9",
]
-[[package]]
-name = "cursor-icon"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "740bb192a8e2d1350119916954f4409ee7f62f149b536911eeb78ba5a20526bf"
-dependencies = [
- "serde",
-]
-
[[package]]
name = "dashmap"
version = "5.5.0"
@@ -2294,12 +2218,6 @@ dependencies = [
"winapi 0.3.9",
]
-[[package]]
-name = "dispatch"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b"
-
[[package]]
name = "dlib"
version = "0.5.2"
@@ -3183,7 +3101,6 @@ dependencies = [
name = "gpui_macros"
version = "0.1.0"
dependencies = [
- "gpui",
"lazy_static",
"proc-macro2",
"quote",
@@ -3985,17 +3902,6 @@ version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67"
-[[package]]
-name = "lewton"
-version = "0.10.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "777b48df9aaab155475a83a7df3070395ea1ac6902f5cd062b8f2b028075c030"
-dependencies = [
- "byteorder",
- "ogg",
- "tinyvec",
-]
-
[[package]]
name = "libc"
version = "0.2.147"
@@ -4549,7 +4455,7 @@ dependencies = [
"bitflags 1.3.2",
"jni-sys",
"ndk-sys",
- "num_enum 0.5.11",
+ "num_enum",
"raw-window-handle",
"thiserror",
]
@@ -4591,19 +4497,6 @@ dependencies = [
"libc",
]
-[[package]]
-name = "nix"
-version = "0.25.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4"
-dependencies = [
- "autocfg",
- "bitflags 1.3.2",
- "cfg-if 1.0.0",
- "libc",
- "memoffset 0.6.5",
-]
-
[[package]]
name = "nix"
version = "0.26.2"
@@ -4769,16 +4662,7 @@ version = "0.5.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9"
dependencies = [
- "num_enum_derive 0.5.11",
-]
-
-[[package]]
-name = "num_enum"
-version = "0.6.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1"
-dependencies = [
- "num_enum_derive 0.6.1",
+ "num_enum_derive",
]
[[package]]
@@ -4793,18 +4677,6 @@ dependencies = [
"syn 1.0.109",
]
-[[package]]
-name = "num_enum_derive"
-version = "0.6.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6"
-dependencies = [
- "proc-macro-crate 1.3.1",
- "proc-macro2",
- "quote",
- "syn 2.0.28",
-]
-
[[package]]
name = "nvim-rs"
version = "0.5.0"
@@ -4830,32 +4702,6 @@ dependencies = [
"objc_exception",
]
-[[package]]
-name = "objc-sys"
-version = "0.2.0-beta.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "df3b9834c1e95694a05a828b59f55fa2afec6288359cda67146126b3f90a55d7"
-
-[[package]]
-name = "objc2"
-version = "0.3.0-beta.3.patch-leaks.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7e01640f9f2cb1220bbe80325e179e532cb3379ebcd1bf2279d703c19fe3a468"
-dependencies = [
- "block2",
- "objc-sys",
- "objc2-encode",
-]
-
-[[package]]
-name = "objc2-encode"
-version = "2.0.0-pre.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "abfcac41015b00a120608fdaa6938c44cb983fee294351cc4bac7638b4e50512"
-dependencies = [
- "objc-sys",
-]
-
[[package]]
name = "objc_exception"
version = "0.1.2"
@@ -4909,15 +4755,6 @@ dependencies = [
"cc",
]
-[[package]]
-name = "ogg"
-version = "0.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6951b4e8bf21c8193da321bcce9c9dd2e13c858fe078bf9054a288b419ae5d6e"
-dependencies = [
- "byteorder",
-]
-
[[package]]
name = "once_cell"
version = "1.18.0"
@@ -4974,15 +4811,6 @@ dependencies = [
"vcpkg",
]
-[[package]]
-name = "orbclient"
-version = "0.3.45"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "221d488cd70617f1bd599ed8ceb659df2147d9393717954d82a0f5e8032a6ab1"
-dependencies = [
- "redox_syscall 0.3.5",
-]
-
[[package]]
name = "ordered-float"
version = "2.10.0"
@@ -5757,6 +5585,17 @@ dependencies = [
"memchr",
]
+[[package]]
+name = "quick_action_bar"
+version = "0.1.0"
+dependencies = [
+ "editor",
+ "gpui",
+ "search",
+ "theme",
+ "workspace",
+]
+
[[package]]
name = "quote"
version = "1.0.32"
@@ -6198,11 +6037,8 @@ version = "0.17.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bdf1d4dea18dff2e9eb6dca123724f8b60ef44ad74a9ad283cdfe025df7e73fa"
dependencies = [
- "claxon",
"cpal",
"hound",
- "lewton",
- "symphonia",
]
[[package]]
@@ -7201,15 +7037,6 @@ dependencies = [
"pin-project-lite 0.1.12",
]
-[[package]]
-name = "smol_str"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "74212e6bbe9a4352329b2f68ba3130c15a3f26fe88ff22dbdc6cdd58fa85e99c"
-dependencies = [
- "serde",
-]
-
[[package]]
name = "snippet"
version = "0.1.0"
@@ -7536,56 +7363,6 @@ dependencies = [
"siphasher",
]
-[[package]]
-name = "symphonia"
-version = "0.5.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62e48dba70095f265fdb269b99619b95d04c89e619538138383e63310b14d941"
-dependencies = [
- "lazy_static",
- "symphonia-bundle-mp3",
- "symphonia-core",
- "symphonia-metadata",
-]
-
-[[package]]
-name = "symphonia-bundle-mp3"
-version = "0.5.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f31d7fece546f1e6973011a9eceae948133bbd18fd3d52f6073b1e38ae6368a"
-dependencies = [
- "bitflags 1.3.2",
- "lazy_static",
- "log",
- "symphonia-core",
- "symphonia-metadata",
-]
-
-[[package]]
-name = "symphonia-core"
-version = "0.5.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f7c73eb88fee79705268cc7b742c7bc93a7b76e092ab751d0833866970754142"
-dependencies = [
- "arrayvec 0.7.4",
- "bitflags 1.3.2",
- "bytemuck",
- "lazy_static",
- "log",
-]
-
-[[package]]
-name = "symphonia-metadata"
-version = "0.5.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89c3e1937e31d0e068bbe829f66b2f2bfaa28d056365279e0ef897172c3320c0"
-dependencies = [
- "encoding_rs",
- "lazy_static",
- "log",
- "symphonia-core",
-]
-
[[package]]
name = "syn"
version = "1.0.109"
@@ -8345,7 +8122,7 @@ dependencies = [
[[package]]
name = "tree-sitter"
version = "0.20.10"
-source = "git+https://github.com/tree-sitter/tree-sitter?rev=1c65ca24bc9a734ab70115188f465e12eecf224e#1c65ca24bc9a734ab70115188f465e12eecf224e"
+source = "git+https://github.com/tree-sitter/tree-sitter?rev=35a6052fbcafc5e5fc0f9415b8652be7dcaf7222#35a6052fbcafc5e5fc0f9415b8652be7dcaf7222"
dependencies = [
"cc",
"regex",
@@ -8907,12 +8684,6 @@ dependencies = [
"workspace",
]
-[[package]]
-name = "vec_map"
-version = "0.8.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
-
[[package]]
name = "version_check"
version = "0.9.4"
@@ -9377,17 +9148,6 @@ dependencies = [
"wasm-bindgen",
]
-[[package]]
-name = "web-time"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "19353897b48e2c4d849a2d73cb0aeb16dc2be4e00c565abfc11eb65a806e47de"
-dependencies = [
- "js-sys",
- "once_cell",
- "wasm-bindgen",
-]
-
[[package]]
name = "webpki"
version = "0.21.4"
@@ -9703,42 +9463,6 @@ version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
-[[package]]
-name = "winit"
-version = "0.29.0-beta.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2f1afaf8490cc3f1309520ebb53a4cd3fc3642c7df8064a4b074bb9867998d44"
-dependencies = [
- "android-activity",
- "atomic-waker",
- "bitflags 2.3.3",
- "calloop",
- "cfg_aliases",
- "core-foundation",
- "core-graphics",
- "cursor-icon",
- "dispatch",
- "js-sys",
- "libc",
- "log",
- "ndk",
- "ndk-sys",
- "objc2",
- "once_cell",
- "orbclient",
- "raw-window-handle",
- "redox_syscall 0.3.5",
- "serde",
- "smol_str",
- "unicode-segmentation",
- "wasm-bindgen",
- "wasm-bindgen-futures",
- "web-sys",
- "web-time",
- "windows-sys",
- "xkbcommon-dl",
-]
-
[[package]]
name = "winnow"
version = "0.5.2"
@@ -9856,25 +9580,6 @@ dependencies = [
"libc",
]
-[[package]]
-name = "xkbcommon-dl"
-version = "0.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6924668544c48c0133152e7eec86d644a056ca3d09275eb8d5cdb9855f9d8699"
-dependencies = [
- "bitflags 2.3.3",
- "dlib",
- "log",
- "once_cell",
- "xkeysym",
-]
-
-[[package]]
-name = "xkeysym"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "054a8e68b76250b253f671d1268cb7f1ae089ec35e195b2efb2a4e9a836d0621"
-
[[package]]
name = "xmlparser"
version = "0.13.5"
@@ -9927,7 +9632,7 @@ dependencies = [
[[package]]
name = "zed"
-version = "0.100.0"
+version = "0.101.0"
dependencies = [
"activity_indicator",
"ai",
@@ -9986,6 +9691,7 @@ dependencies = [
"project",
"project_panel",
"project_symbols",
+ "quick_action_bar",
"rand 0.8.5",
"recent_projects",
"regex",
diff --git a/Cargo.toml b/Cargo.toml
index 3cc697fb03..a60b4eb610 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -140,7 +140,7 @@ tree-sitter-lua = "0.0.14"
tree-sitter-nix = { git = "https://github.com/nix-community/tree-sitter-nix", rev = "66e3e9ce9180ae08fc57372061006ef83f0abde7" }
[patch.crates-io]
-tree-sitter = { git = "https://github.com/tree-sitter/tree-sitter", rev = "1c65ca24bc9a734ab70115188f465e12eecf224e" }
+tree-sitter = { git = "https://github.com/tree-sitter/tree-sitter", rev = "35a6052fbcafc5e5fc0f9415b8652be7dcaf7222" }
async-task = { git = "https://github.com/zed-industries/async-task", rev = "341b57d6de98cdfd7b418567b8de2022ca993a6e" }
# TODO - Remove when a version is released with this PR: https://github.com/servo/core-foundation-rs/pull/457
diff --git a/assets/icons/ai.svg b/assets/icons/ai.svg
new file mode 100644
index 0000000000..5b3faaa9cc
--- /dev/null
+++ b/assets/icons/ai.svg
@@ -0,0 +1,23 @@
+
diff --git a/assets/icons/arrow_left.svg b/assets/icons/arrow_left.svg
new file mode 100644
index 0000000000..186c9c7457
--- /dev/null
+++ b/assets/icons/arrow_left.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/arrow_right.svg b/assets/icons/arrow_right.svg
new file mode 100644
index 0000000000..7bae7f4801
--- /dev/null
+++ b/assets/icons/arrow_right.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/case_insensitive_12.svg b/assets/icons/case_insensitive_12.svg
new file mode 100644
index 0000000000..8c943e7509
--- /dev/null
+++ b/assets/icons/case_insensitive_12.svg
@@ -0,0 +1,8 @@
+
+
diff --git a/assets/icons/channel_hash.svg b/assets/icons/channel_hash.svg
new file mode 100644
index 0000000000..edd0462678
--- /dev/null
+++ b/assets/icons/channel_hash.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/icons/check.svg b/assets/icons/check.svg
new file mode 100644
index 0000000000..77b180892c
--- /dev/null
+++ b/assets/icons/check.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/check_circle.svg b/assets/icons/check_circle.svg
new file mode 100644
index 0000000000..85ba2e1f37
--- /dev/null
+++ b/assets/icons/check_circle.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/icons/chevron_down.svg b/assets/icons/chevron_down.svg
new file mode 100644
index 0000000000..b971555cfa
--- /dev/null
+++ b/assets/icons/chevron_down.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/chevron_left.svg b/assets/icons/chevron_left.svg
new file mode 100644
index 0000000000..8e61beed5d
--- /dev/null
+++ b/assets/icons/chevron_left.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/chevron_right.svg b/assets/icons/chevron_right.svg
new file mode 100644
index 0000000000..fcd9d83fc2
--- /dev/null
+++ b/assets/icons/chevron_right.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/chevron_up.svg b/assets/icons/chevron_up.svg
new file mode 100644
index 0000000000..171cdd61c0
--- /dev/null
+++ b/assets/icons/chevron_up.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/conversations.svg b/assets/icons/conversations.svg
new file mode 100644
index 0000000000..fe8ad03dda
--- /dev/null
+++ b/assets/icons/conversations.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/icons/copilot.svg b/assets/icons/copilot.svg
new file mode 100644
index 0000000000..06dbf178ae
--- /dev/null
+++ b/assets/icons/copilot.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/icons/copy.svg b/assets/icons/copy.svg
new file mode 100644
index 0000000000..4aa44979c3
--- /dev/null
+++ b/assets/icons/copy.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/icons/ellipsis.svg b/assets/icons/ellipsis.svg
new file mode 100644
index 0000000000..1858c65520
--- /dev/null
+++ b/assets/icons/ellipsis.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/icons/error.svg b/assets/icons/error.svg
new file mode 100644
index 0000000000..82b9401d08
--- /dev/null
+++ b/assets/icons/error.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/icons/exit.svg b/assets/icons/exit.svg
new file mode 100644
index 0000000000..7e45535773
--- /dev/null
+++ b/assets/icons/exit.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/icons/feedback.svg b/assets/icons/feedback.svg
new file mode 100644
index 0000000000..2703f70119
--- /dev/null
+++ b/assets/icons/feedback.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/icons/file_icons/elixir.svg b/assets/icons/file_icons/elixir.svg
new file mode 100644
index 0000000000..15a1004328
--- /dev/null
+++ b/assets/icons/file_icons/elixir.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/file_icons/file_types.json b/assets/icons/file_icons/file_types.json
index 9ea75d0730..a65155d4eb 100644
--- a/assets/icons/file_icons/file_types.json
+++ b/assets/icons/file_icons/file_types.json
@@ -21,23 +21,27 @@
"dll": "storage",
"doc": "document",
"docx": "document",
+ "eex": "elixir",
"eslintrc": "eslint",
"eslintrc.js": "eslint",
"eslintrc.json": "eslint",
+ "ex": "elixir",
+ "exs": "elixir",
+ "fish": "terminal",
+ "flac": "audio",
"fmp": "storage",
"fp7": "storage",
- "flac": "audio",
- "fish": "terminal",
"frm": "storage",
"gdb": "storage",
+ "gif": "image",
"gitattributes": "vcs",
"gitignore": "vcs",
"gitmodules": "vcs",
- "gif": "image",
"go": "code",
"h": "code",
"handlebars": "code",
"hbs": "template",
+ "heex": "elixir",
"htm": "template",
"html": "template",
"ib": "storage",
@@ -51,16 +55,16 @@
"ldf": "storage",
"lock": "lock",
"log": "log",
- "mdb": "storage",
"md": "document",
+ "mdb": "storage",
"mdf": "storage",
"mdx": "document",
"mp3": "audio",
"mp4": "video",
"myd": "storage",
"myi": "storage",
- "ods": "document",
"odp": "document",
+ "ods": "document",
"odt": "document",
"ogg": "video",
"pdb": "storage",
@@ -74,24 +78,24 @@
"profile": "terminal",
"ps1": "terminal",
"psd": "image",
- "py": "code",
+ "py": "python",
"rb": "code",
"rkt": "code",
"rs": "rust",
"rtf": "document",
"sav": "storage",
"scm": "code",
+ "sdf": "storage",
"sh": "terminal",
"sqlite": "storage",
- "sdf": "storage",
"svelte": "template",
"svg": "image",
"swift": "code",
- "ts": "typescript",
- "tsx": "code",
"tiff": "image",
"toml": "toml",
+ "ts": "typescript",
"tsv": "storage",
+ "tsx": "code",
"txt": "document",
"wav": "audio",
"webm": "video",
@@ -103,9 +107,9 @@
"zlogin": "terminal",
"zsh": "terminal",
"zsh_aliases": "terminal",
- "zshenv": "terminal",
"zsh_histfile": "terminal",
"zsh_profile": "terminal",
+ "zshenv": "terminal",
"zshrc": "terminal"
},
"types": {
@@ -127,6 +131,9 @@
"document": {
"icon": "icons/file_icons/book.svg"
},
+ "elixir": {
+ "icon": "icons/file_icons/elixir.svg"
+ },
"eslint": {
"icon": "icons/file_icons/eslint.svg"
},
@@ -145,9 +152,15 @@
"log": {
"icon": "icons/file_icons/info.svg"
},
+ "phoenix": {
+ "icon": "icons/file_icons/phoenix.svg"
+ },
"prettier": {
"icon": "icons/file_icons/prettier.svg"
},
+ "python": {
+ "icon": "icons/file_icons/python.svg"
+ },
"rust": {
"icon": "icons/file_icons/rust.svg"
},
diff --git a/assets/icons/file_icons/phoenix.svg b/assets/icons/file_icons/phoenix.svg
new file mode 100644
index 0000000000..424b753806
--- /dev/null
+++ b/assets/icons/file_icons/phoenix.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/icons/file_icons/python.svg b/assets/icons/file_icons/python.svg
new file mode 100644
index 0000000000..dbc8565f90
--- /dev/null
+++ b/assets/icons/file_icons/python.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/icons/filter.svg b/assets/icons/filter.svg
new file mode 100644
index 0000000000..80ce656f57
--- /dev/null
+++ b/assets/icons/filter.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/filter_12.svg b/assets/icons/filter_12.svg
new file mode 100644
index 0000000000..9c1ad5ba5c
--- /dev/null
+++ b/assets/icons/filter_12.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/filter_14.svg b/assets/icons/filter_14.svg
new file mode 100644
index 0000000000..379be15b51
--- /dev/null
+++ b/assets/icons/filter_14.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/assets/icons/hash.svg b/assets/icons/hash.svg
new file mode 100644
index 0000000000..f685245ed3
--- /dev/null
+++ b/assets/icons/hash.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/icons/html.svg b/assets/icons/html.svg
new file mode 100644
index 0000000000..1e676fe313
--- /dev/null
+++ b/assets/icons/html.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/icons/inlay_hint.svg b/assets/icons/inlay_hint.svg
new file mode 100644
index 0000000000..c8e6bb2d36
--- /dev/null
+++ b/assets/icons/inlay_hint.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/icons/kebab.svg b/assets/icons/kebab.svg
new file mode 100644
index 0000000000..1858c65520
--- /dev/null
+++ b/assets/icons/kebab.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/icons/lock.svg b/assets/icons/lock.svg
new file mode 100644
index 0000000000..652f45a7e8
--- /dev/null
+++ b/assets/icons/lock.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/icons/magnifying_glass.svg b/assets/icons/magnifying_glass.svg
new file mode 100644
index 0000000000..0b539adb6c
--- /dev/null
+++ b/assets/icons/magnifying_glass.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/match_case.svg b/assets/icons/match_case.svg
new file mode 100644
index 0000000000..82f4529c1b
--- /dev/null
+++ b/assets/icons/match_case.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/icons/match_word.svg b/assets/icons/match_word.svg
new file mode 100644
index 0000000000..69ba8eb9e6
--- /dev/null
+++ b/assets/icons/match_word.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/icons/maximize.svg b/assets/icons/maximize.svg
new file mode 100644
index 0000000000..4dc7755714
--- /dev/null
+++ b/assets/icons/maximize.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/icons/microphone.svg b/assets/icons/microphone.svg
new file mode 100644
index 0000000000..8974fd939d
--- /dev/null
+++ b/assets/icons/microphone.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/icons/minimize.svg b/assets/icons/minimize.svg
new file mode 100644
index 0000000000..d8941ee1f0
--- /dev/null
+++ b/assets/icons/minimize.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/icons/plus.svg b/assets/icons/plus.svg
new file mode 100644
index 0000000000..a54dd0ad66
--- /dev/null
+++ b/assets/icons/plus.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/project.svg b/assets/icons/project.svg
new file mode 100644
index 0000000000..525109db4c
--- /dev/null
+++ b/assets/icons/project.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/icons/replace.svg b/assets/icons/replace.svg
new file mode 100644
index 0000000000..af10921891
--- /dev/null
+++ b/assets/icons/replace.svg
@@ -0,0 +1,11 @@
+
diff --git a/assets/icons/replace_all.svg b/assets/icons/replace_all.svg
new file mode 100644
index 0000000000..4838e82242
--- /dev/null
+++ b/assets/icons/replace_all.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/icons/replace_next.svg b/assets/icons/replace_next.svg
new file mode 100644
index 0000000000..ba751411af
--- /dev/null
+++ b/assets/icons/replace_next.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/icons/screen.svg b/assets/icons/screen.svg
new file mode 100644
index 0000000000..49e097b023
--- /dev/null
+++ b/assets/icons/screen.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/icons/split.svg b/assets/icons/split.svg
new file mode 100644
index 0000000000..4c131466c2
--- /dev/null
+++ b/assets/icons/split.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/icons/success.svg b/assets/icons/success.svg
new file mode 100644
index 0000000000..85450cdc43
--- /dev/null
+++ b/assets/icons/success.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/icons/terminal.svg b/assets/icons/terminal.svg
new file mode 100644
index 0000000000..15dd705b0b
--- /dev/null
+++ b/assets/icons/terminal.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/icons/warning.svg b/assets/icons/warning.svg
new file mode 100644
index 0000000000..6b3d0fd41e
--- /dev/null
+++ b/assets/icons/warning.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/icons/word_search_12.svg b/assets/icons/word_search_12.svg
new file mode 100644
index 0000000000..4cf6401fd2
--- /dev/null
+++ b/assets/icons/word_search_12.svg
@@ -0,0 +1,8 @@
+
+
diff --git a/assets/icons/word_search_14.svg b/assets/icons/word_search_14.svg
new file mode 100644
index 0000000000..adb4976bcc
--- /dev/null
+++ b/assets/icons/word_search_14.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/assets/icons/x.svg b/assets/icons/x.svg
new file mode 100644
index 0000000000..31c5aa31a6
--- /dev/null
+++ b/assets/icons/x.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/keymaps/default.json b/assets/keymaps/default.json
index 38ec8ffb40..1bd973e83b 100644
--- a/assets/keymaps/default.json
+++ b/assets/keymaps/default.json
@@ -13,6 +13,7 @@
"cmd-up": "menu::SelectFirst",
"cmd-down": "menu::SelectLast",
"enter": "menu::Confirm",
+ "ctrl-enter": "menu::ShowContextMenu",
"cmd-enter": "menu::SecondaryConfirm",
"escape": "menu::Cancel",
"ctrl-c": "menu::Cancel",
@@ -172,6 +173,7 @@
"context": "Editor && mode == full",
"bindings": {
"enter": "editor::Newline",
+ "shift-enter": "editor::Newline",
"cmd-shift-enter": "editor::NewlineAbove",
"cmd-enter": "editor::NewlineBelow",
"alt-z": "editor::ToggleSoftWrap",
@@ -224,7 +226,8 @@
"tab": "buffer_search::FocusEditor",
"enter": "search::SelectNextMatch",
"shift-enter": "search::SelectPrevMatch",
- "alt-enter": "search::SelectAllMatches"
+ "alt-enter": "search::SelectAllMatches",
+ "alt-tab": "search::CycleMode"
}
},
{
@@ -237,7 +240,8 @@
{
"context": "ProjectSearchBar",
"bindings": {
- "escape": "project_search::ToggleFocus"
+ "escape": "project_search::ToggleFocus",
+ "alt-tab": "search::CycleMode"
}
},
{
@@ -250,7 +254,8 @@
{
"context": "ProjectSearchView",
"bindings": {
- "escape": "project_search::ToggleFocus"
+ "escape": "project_search::ToggleFocus",
+ "alt-tab": "search::CycleMode"
}
},
{
@@ -262,7 +267,8 @@
"alt-enter": "search::SelectAllMatches",
"alt-cmd-c": "search::ToggleCaseSensitive",
"alt-cmd-w": "search::ToggleWholeWord",
- "alt-cmd-r": "search::ToggleRegex"
+ "alt-tab": "search::CycleMode",
+ "alt-cmd-f": "project_search::ToggleFilters"
}
},
// Bindings from VS Code
@@ -513,7 +519,8 @@
{
"bindings": {
"ctrl-alt-cmd-f": "workspace::FollowNextCollaborator",
- "cmd-shift-c": "collab::ToggleContactsMenu",
+ // TODO: Move this to a dock open action
+ "cmd-shift-c": "collab_panel::ToggleFocus",
"cmd-alt-i": "zed::DebugElements"
}
},
@@ -536,6 +543,8 @@
"bindings": {
"left": "project_panel::CollapseSelectedEntry",
"right": "project_panel::ExpandSelectedEntry",
+ "cmd-n": "project_panel::NewFile",
+ "alt-cmd-n": "project_panel::NewDirectory",
"cmd-x": "project_panel::Cut",
"cmd-c": "project_panel::Copy",
"cmd-v": "project_panel::Paste",
@@ -549,6 +558,25 @@
"alt-shift-f": "project_panel::NewSearchInDirectory"
}
},
+ {
+ "context": "CollabPanel",
+ "bindings": {
+ "ctrl-backspace": "collab_panel::Remove",
+ "space": "menu::Confirm"
+ }
+ },
+ {
+ "context": "ChannelModal",
+ "bindings": {
+ "tab": "channel_modal::ToggleMode"
+ }
+ },
+ {
+ "context": "ChannelModal > Picker > Editor",
+ "bindings": {
+ "tab": "channel_modal::ToggleMode"
+ }
+ },
{
"context": "Terminal",
"bindings": {
diff --git a/assets/keymaps/vim.json b/assets/keymaps/vim.json
index 94a271f037..458232b9b0 100644
--- a/assets/keymaps/vim.json
+++ b/assets/keymaps/vim.json
@@ -101,9 +101,21 @@
"vim::SwitchMode",
"Normal"
],
+ "v": "vim::ToggleVisual",
+ "shift-v": "vim::ToggleVisualLine",
+ "ctrl-v": "vim::ToggleVisualBlock",
+ "ctrl-q": "vim::ToggleVisualBlock",
"*": "vim::MoveToNext",
"#": "vim::MoveToPrev",
"0": "vim::StartOfLine", // When no number operator present, use start of line motion
+ "ctrl-f": "vim::PageDown",
+ "pagedown": "vim::PageDown",
+ "ctrl-b": "vim::PageUp",
+ "pageup": "vim::PageUp",
+ "ctrl-d": "vim::ScrollDown",
+ "ctrl-u": "vim::ScrollUp",
+ "ctrl-e": "vim::LineDown",
+ "ctrl-y": "vim::LineUp",
// "g" commands
"g g": "vim::StartOfDocument",
"g h": "editor::Hover",
@@ -236,6 +248,14 @@
"ctrl-w ctrl-q": "pane::CloseAllItems"
}
},
+ {
+ // escape is in its own section so that it cancels a pending count.
+ "context": "Editor && vim_mode == normal && vim_operator == none && !VimWaiting",
+ "bindings": {
+ "escape": "editor::Cancel",
+ "ctrl+[": "editor::Cancel"
+ }
+ },
{
"context": "Editor && vim_mode == normal && (vim_operator == none || vim_operator == n) && !VimWaiting",
"bindings": {
@@ -266,22 +286,6 @@
"o": "vim::InsertLineBelow",
"shift-o": "vim::InsertLineAbove",
"~": "vim::ChangeCase",
- "v": [
- "vim::SwitchMode",
- {
- "Visual": {
- "line": false
- }
- }
- ],
- "shift-v": [
- "vim::SwitchMode",
- {
- "Visual": {
- "line": true
- }
- }
- ],
"p": "vim::Paste",
"u": "editor::Undo",
"ctrl-r": "editor::Redo",
@@ -299,14 +303,6 @@
"backwards": true
}
],
- "ctrl-f": "vim::PageDown",
- "pagedown": "vim::PageDown",
- "ctrl-b": "vim::PageUp",
- "pageup": "vim::PageUp",
- "ctrl-d": "vim::ScrollDown",
- "ctrl-u": "vim::ScrollUp",
- "ctrl-e": "vim::LineDown",
- "ctrl-y": "vim::LineUp",
"r": [
"vim::PushOperator",
"Replace"
@@ -371,16 +367,23 @@
}
},
{
- "context": "Editor && vim_mode == visual && !VimWaiting",
+ "context": "Editor && vim_mode == visual && !VimWaiting && !VimObject",
"bindings": {
"u": "editor::Undo",
- "c": "vim::VisualChange",
+ "o": "vim::OtherEnd",
+ "shift-o": "vim::OtherEnd",
"d": "vim::VisualDelete",
"x": "vim::VisualDelete",
"y": "vim::VisualYank",
"p": "vim::VisualPaste",
"s": "vim::Substitute",
+ "c": "vim::Substitute",
"~": "vim::ChangeCase",
+ "shift-i": [
+ "vim::SwitchMode",
+ "Insert"
+ ],
+ "shift-a": "vim::InsertAfter",
"r": [
"vim::PushOperator",
"Replace"
@@ -389,8 +392,32 @@
"vim::SwitchMode",
"Normal"
],
+ "escape": [
+ "vim::SwitchMode",
+ "Normal"
+ ],
+ "ctrl+[": [
+ "vim::SwitchMode",
+ "Normal"
+ ],
">": "editor::Indent",
- "<": "editor::Outdent"
+ "<": "editor::Outdent",
+ "i": [
+ "vim::PushOperator",
+ {
+ "Object": {
+ "around": false
+ }
+ }
+ ],
+ "a": [
+ "vim::PushOperator",
+ {
+ "Object": {
+ "around": true
+ }
+ }
+ ],
}
},
{
diff --git a/assets/settings/default.json b/assets/settings/default.json
index 397dac0961..24412b883b 100644
--- a/assets/settings/default.json
+++ b/assets/settings/default.json
@@ -122,13 +122,29 @@
// Amount of indentation for nested items.
"indent_size": 20
},
+ "collaboration_panel": {
+ // Whether to show the collaboration panel button in the status bar.
+ "button": true,
+ // Where to dock channels panel. Can be 'left' or 'right'.
+ "dock": "left",
+ // Default width of the channels panel.
+ "default_width": 240
+ },
"assistant": {
+ // Whether to show the assistant panel button in the status bar.
+ "button": true,
// Where to dock the assistant. Can be 'left', 'right' or 'bottom'.
"dock": "right",
// Default width when the assistant is docked to the left or right.
"default_width": 640,
// Default height when the assistant is docked to the bottom.
- "default_height": 320
+ "default_height": 320,
+ // The default OpenAI model to use when starting new conversations. This
+ // setting can take two values:
+ //
+ // 1. "gpt-3.5-turbo-0613""
+ // 2. "gpt-4-0613""
+ "default_open_ai_model": "gpt-4-0613"
},
// Whether the screen sharing icon is shown in the os status bar.
"show_call_status_icon": true,
@@ -214,7 +230,9 @@
"copilot": {
// The set of glob patterns for which copilot should be disabled
// in any matching file.
- "disabled_globs": [".env"]
+ "disabled_globs": [
+ ".env"
+ ]
},
// Settings specific to journaling
"journal": {
diff --git a/crates/activity_indicator/src/activity_indicator.rs b/crates/activity_indicator/src/activity_indicator.rs
index 8b46d7cfc5..6d1db5ada5 100644
--- a/crates/activity_indicator/src/activity_indicator.rs
+++ b/crates/activity_indicator/src/activity_indicator.rs
@@ -318,7 +318,7 @@ impl View for ActivityIndicator {
on_click,
} = self.content_to_render(cx);
- let mut element = MouseEventHandler::::new(0, cx, |state, cx| {
+ let mut element = MouseEventHandler::new::(0, cx, |state, cx| {
let theme = &theme::current(cx).workspace.status_bar.lsp_status;
let style = if state.hovered() && on_click.is_some() {
theme.hovered.as_ref().unwrap_or(&theme.default)
diff --git a/crates/ai/src/ai.rs b/crates/ai/src/ai.rs
index 7cc5f08f7c..d2be651bd5 100644
--- a/crates/ai/src/ai.rs
+++ b/crates/ai/src/ai.rs
@@ -3,6 +3,7 @@ mod assistant_settings;
use anyhow::Result;
pub use assistant::AssistantPanel;
+use assistant_settings::OpenAIModel;
use chrono::{DateTime, Local};
use collections::HashMap;
use fs::Fs;
@@ -60,7 +61,7 @@ struct SavedConversation {
messages: Vec,
message_metadata: HashMap,
summary: String,
- model: String,
+ model: OpenAIModel,
}
impl SavedConversation {
diff --git a/crates/ai/src/assistant.rs b/crates/ai/src/assistant.rs
index 0a18266d2a..81299bbdc2 100644
--- a/crates/ai/src/assistant.rs
+++ b/crates/ai/src/assistant.rs
@@ -1,5 +1,5 @@
use crate::{
- assistant_settings::{AssistantDockPosition, AssistantSettings},
+ assistant_settings::{AssistantDockPosition, AssistantSettings, OpenAIModel},
MessageId, MessageMetadata, MessageStatus, OpenAIRequest, OpenAIResponseStreamEvent,
RequestMessage, Role, SavedConversation, SavedConversationMetadata, SavedMessage,
};
@@ -158,7 +158,7 @@ impl AssistantPanel {
});
let toolbar = cx.add_view(|cx| {
- let mut toolbar = Toolbar::new(None);
+ let mut toolbar = Toolbar::new();
toolbar.set_can_navigate(false, cx);
toolbar.add_item(cx.add_view(|cx| BufferSearchBar::new(cx)), cx);
toolbar
@@ -192,6 +192,7 @@ impl AssistantPanel {
old_dock_position = new_dock_position;
cx.emit(AssistantPanelEvent::DockPositionChanged);
}
+ cx.notify();
})];
this
@@ -348,7 +349,7 @@ impl AssistantPanel {
enum History {}
let theme = theme::current(cx);
let tooltip_style = theme::current(cx).tooltip.clone();
- MouseEventHandler::::new(0, cx, |state, _| {
+ MouseEventHandler::new::(0, cx, |state, _| {
let style = theme.assistant.hamburger_button.style_for(state);
Svg::for_style(style.icon.clone())
.contained()
@@ -380,7 +381,7 @@ impl AssistantPanel {
fn render_split_button(cx: &mut ViewContext) -> impl Element {
let theme = theme::current(cx);
let tooltip_style = theme::current(cx).tooltip.clone();
- MouseEventHandler::::new(0, cx, |state, _| {
+ MouseEventHandler::new::(0, cx, |state, _| {
let style = theme.assistant.split_button.style_for(state);
Svg::for_style(style.icon.clone())
.contained()
@@ -404,7 +405,7 @@ impl AssistantPanel {
fn render_assist_button(cx: &mut ViewContext) -> impl Element {
let theme = theme::current(cx);
let tooltip_style = theme::current(cx).tooltip.clone();
- MouseEventHandler::::new(0, cx, |state, _| {
+ MouseEventHandler::new::(0, cx, |state, _| {
let style = theme.assistant.assist_button.style_for(state);
Svg::for_style(style.icon.clone())
.contained()
@@ -422,7 +423,7 @@ impl AssistantPanel {
fn render_quote_button(cx: &mut ViewContext) -> impl Element {
let theme = theme::current(cx);
let tooltip_style = theme::current(cx).tooltip.clone();
- MouseEventHandler::::new(0, cx, |state, _| {
+ MouseEventHandler::new::(0, cx, |state, _| {
let style = theme.assistant.quote_button.style_for(state);
Svg::for_style(style.icon.clone())
.contained()
@@ -450,7 +451,7 @@ impl AssistantPanel {
fn render_plus_button(cx: &mut ViewContext) -> impl Element {
let theme = theme::current(cx);
let tooltip_style = theme::current(cx).tooltip.clone();
- MouseEventHandler::::new(0, cx, |state, _| {
+ MouseEventHandler::new::(0, cx, |state, _| {
let style = theme.assistant.plus_button.style_for(state);
Svg::for_style(style.icon.clone())
.contained()
@@ -480,7 +481,7 @@ impl AssistantPanel {
&theme.assistant.zoom_in_button
};
- MouseEventHandler::::new(0, cx, |state, _| {
+ MouseEventHandler::new::(0, cx, |state, _| {
let style = style.style_for(state);
Svg::for_style(style.icon.clone())
.contained()
@@ -506,7 +507,7 @@ impl AssistantPanel {
) -> impl Element {
let conversation = &self.saved_conversations[index];
let path = conversation.path.clone();
- MouseEventHandler::::new(index, cx, move |state, cx| {
+ MouseEventHandler::new::(index, cx, move |state, cx| {
let style = &theme::current(cx).assistant.saved_conversation;
Flex::row()
.with_child(
@@ -725,10 +726,10 @@ impl Panel for AssistantPanel {
}
}
- fn set_size(&mut self, size: f32, cx: &mut ViewContext) {
+ fn set_size(&mut self, size: Option, cx: &mut ViewContext) {
match self.position(cx) {
- DockPosition::Left | DockPosition::Right => self.width = Some(size),
- DockPosition::Bottom => self.height = Some(size),
+ DockPosition::Left | DockPosition::Right => self.width = size,
+ DockPosition::Bottom => self.height = size,
}
cx.notify();
}
@@ -780,8 +781,10 @@ impl Panel for AssistantPanel {
}
}
- fn icon_path(&self) -> &'static str {
- "icons/robot_14.svg"
+ fn icon_path(&self, cx: &WindowContext) -> Option<&'static str> {
+ settings::get::(cx)
+ .button
+ .then(|| "icons/ai.svg")
}
fn icon_tooltip(&self) -> (String, Option>) {
@@ -830,7 +833,7 @@ struct Conversation {
pending_summary: Task