Merge branch 'main' into refine-render-traits

Piotr Osiewicz created

Change summary

Cargo.lock                                                   |   2 
crates/assistant2/src/assistant_panel.rs                     |   4 
crates/client/src/telemetry.rs                               |  20 
crates/client2/src/telemetry.rs                              |  36 
crates/collab/k8s                                            |   1 
crates/collab/k8s/environments/production.sh                 |   4 
crates/collab/k8s/environments/staging.sh                    |   4 
crates/collab/k8s/manifest.template.yml                      | 177 -
crates/collab/k8s/migrate.template.yml                       |  21 
crates/collab2/k8s/collab.template.yml                       |  56 
crates/collab2/k8s/environments/nightly.sh                   |   2 
crates/collab2/k8s/postgrest.template.yml                    |  55 
crates/collab_ui2/src/chat_panel.rs                          |   4 
crates/collab_ui2/src/collab_panel.rs                        |  89 
crates/collab_ui2/src/notification_panel.rs                  |   4 
crates/diagnostics2/src/diagnostics.rs                       |  35 
crates/editor2/src/display_map.rs                            |   2 
crates/editor2/src/editor.rs                                 |  38 
crates/editor2/src/element.rs                                | 103 
crates/editor2/src/hover_popover.rs                          |  54 
crates/gpui/src/platform/mac/renderer.rs                     |  48 
crates/gpui2/src/app.rs                                      |  18 
crates/gpui2/src/app/async_context.rs                        |   2 
crates/gpui2/src/app/entity_map.rs                           |   4 
crates/gpui2/src/app/model_context.rs                        |   4 
crates/gpui2/src/color.rs                                    |   6 
crates/gpui2/src/elements/div.rs                             | 113 
crates/gpui2/src/elements/overlay.rs                         |  12 
crates/gpui2/src/elements/text.rs                            |   1 
crates/gpui2/src/elements/uniform_list.rs                    |   2 
crates/gpui2/src/executor.rs                                 |   6 
crates/gpui2/src/geometry.rs                                 |  49 
crates/gpui2/src/interactive.rs                              |   4 
crates/gpui2/src/key_dispatch.rs                             |   2 
crates/gpui2/src/keymap/binding.rs                           |   2 
crates/gpui2/src/keymap/context.rs                           |   4 
crates/gpui2/src/platform/mac.rs                             |   4 
crates/gpui2/src/platform/mac/dispatcher.rs                  |   6 
crates/gpui2/src/platform/mac/display.rs                     |   2 
crates/gpui2/src/platform/mac/display_linker.rs              |   1 
crates/gpui2/src/platform/mac/metal_atlas.rs                 |   4 
crates/gpui2/src/platform/mac/metal_renderer.rs              |  74 
crates/gpui2/src/platform/mac/platform.rs                    |  18 
crates/gpui2/src/platform/mac/text_system.rs                 |  10 
crates/gpui2/src/platform/mac/window.rs                      |  18 
crates/gpui2/src/scene.rs                                    |  17 
crates/gpui2/src/shared_string.rs                            |  12 
crates/gpui2/src/style.rs                                    |  14 
crates/gpui2/src/subscription.rs                             |   6 
crates/gpui2/src/taffy.rs                                    |  25 
crates/gpui2/src/text_system.rs                              |  23 
crates/gpui2/src/text_system/line_wrapper.rs                 |  12 
crates/gpui2/src/view.rs                                     |  12 
crates/gpui2/src/window.rs                                   |  45 
crates/gpui2_macros/src/style_helpers.rs                     |   6 
crates/media/src/media.rs                                    | 140 
crates/project_panel2/src/project_panel.rs                   |   4 
crates/refineable/derive_refineable/src/derive_refineable.rs |   4 
crates/refineable/src/refineable.rs                          |   8 
crates/rope2/src/rope2.rs                                    |   2 
crates/sqlez/src/migrations.rs                               |   8 
crates/sqlez/src/statement.rs                                |   4 
crates/sqlez/src/thread_safe_connection.rs                   |   6 
crates/sum_tree/src/tree_map.rs                              |   6 
crates/terminal_view2/src/terminal_panel.rs                  |   4 
crates/text2/src/locator.rs                                  |   4 
crates/text2/src/subscription.rs                             |   2 
crates/text2/src/text2.rs                                    |   2 
crates/theme/src/theme.rs                                    |   8 
crates/theme2/src/default_colors.rs                          | 230 -
crates/theme2/src/one_themes.rs                              |  38 
crates/theme2/src/styles/colors.rs                           |   9 
crates/theme2/src/styles/status.rs                           |  84 
crates/theme2/src/theme2.rs                                  |  21 
crates/theme2/src/themes/andromeda.rs                        |  83 
crates/theme2/src/themes/atelier.rs                          | 664 +++++
crates/theme2/src/themes/ayu.rs                              | 249 +
crates/theme2/src/themes/gruvbox.rs                          | 498 +++
crates/theme2/src/themes/one.rs                              | 166 +
crates/theme2/src/themes/rose_pine.rs                        | 249 +
crates/theme2/src/themes/sandcastle.rs                       |  83 
crates/theme2/src/themes/solarized.rs                        | 166 +
crates/theme2/src/themes/summercamp.rs                       |  83 
crates/theme_importer/src/theme_printer.rs                   |  37 
crates/theme_importer/src/zed1/converter.rs                  | 205 +
crates/theme_selector/Cargo.toml                             |   1 
crates/theme_selector/src/theme_selector.rs                  |  17 
crates/theme_selector2/Cargo.toml                            |  11 
crates/theme_selector2/src/theme_selector.rs                 |  14 
crates/ui2/src/components/context_menu.rs                    |   2 
crates/util/src/paths.rs                                     |   6 
crates/workspace2/src/dock.rs                                |  14 
crates/zed/src/main.rs                                       |   5 
crates/zed2/src/main.rs                                      |   5 
script/deploy-collab                                         |   7 
script/deploy-postgrest                                      |  25 
styles/src/style_tree/app.ts                                 |   1 
97 files changed, 3,104 insertions(+), 1,368 deletions(-)

Detailed changes

Cargo.lock 🔗

@@ -9838,6 +9838,7 @@ dependencies = [
 name = "theme_selector"
 version = "0.1.0"
 dependencies = [
+ "client",
  "editor",
  "feature_flags",
  "fs",
@@ -9858,6 +9859,7 @@ dependencies = [
 name = "theme_selector2"
 version = "0.1.0"
 dependencies = [
+ "client2",
  "editor2",
  "feature_flags2",
  "fs2",

crates/assistant2/src/assistant_panel.rs 🔗

@@ -1281,6 +1281,10 @@ impl Panel for AssistantPanel {
         Some(Icon::Ai)
     }
 
+    fn icon_tooltip(&self, _cx: &WindowContext) -> Option<&'static str> {
+        Some("Assistant Panel")
+    }
+
     fn toggle_action(&self) -> Box<dyn Action> {
         Box::new(ToggleFocus)
     }

crates/client/src/telemetry.rs 🔗

@@ -113,6 +113,11 @@ pub enum ClickhouseEvent {
         operation: &'static str,
         milliseconds_since_first_event: i64,
     },
+    Setting {
+        setting: &'static str,
+        value: String,
+        milliseconds_since_first_event: i64,
+    },
 }
 
 #[cfg(debug_assertions)]
@@ -354,6 +359,21 @@ impl Telemetry {
         self.report_clickhouse_event(event, telemetry_settings, immediate_flush)
     }
 
+    pub fn report_setting_event(
+        self: &Arc<Self>,
+        telemetry_settings: TelemetrySettings,
+        setting: &'static str,
+        value: String,
+    ) {
+        let event = ClickhouseEvent::Setting {
+            setting,
+            value,
+            milliseconds_since_first_event: self.milliseconds_since_first_event(),
+        };
+
+        self.report_clickhouse_event(event, telemetry_settings, false)
+    }
+
     fn milliseconds_since_first_event(&self) -> i64 {
         let mut state = self.state.lock();
         match state.first_event_datetime {

crates/client2/src/telemetry.rs 🔗

@@ -28,6 +28,7 @@ struct TelemetryState {
     app_metadata: AppMetadata,
     architecture: &'static str,
     clickhouse_events_queue: Vec<ClickhouseEventWrapper>,
+    flush_clickhouse_events_task: Option<Task<()>>,
     log_file: Option<NamedTempFile>,
     is_staff: Option<bool>,
     first_event_datetime: Option<DateTime<Utc>>,
@@ -111,6 +112,11 @@ pub enum ClickhouseEvent {
         operation: &'static str,
         milliseconds_since_first_event: i64,
     },
+    Setting {
+        setting: &'static str,
+        value: String,
+        milliseconds_since_first_event: i64,
+    },
 }
 
 #[cfg(debug_assertions)]
@@ -119,6 +125,12 @@ const MAX_QUEUE_LEN: usize = 1;
 #[cfg(not(debug_assertions))]
 const MAX_QUEUE_LEN: usize = 50;
 
+#[cfg(debug_assertions)]
+const DEBOUNCE_INTERVAL: Duration = Duration::from_secs(1);
+
+#[cfg(not(debug_assertions))]
+const DEBOUNCE_INTERVAL: Duration = Duration::from_secs(60 * 5);
+
 impl Telemetry {
     pub fn new(client: Arc<dyn HttpClient>, cx: &mut AppContext) -> Arc<Self> {
         let release_channel = if cx.has_global::<ReleaseChannel>() {
@@ -139,6 +151,7 @@ impl Telemetry {
                 metrics_id: None,
                 session_id: None,
                 clickhouse_events_queue: Default::default(),
+                flush_clickhouse_events_task: Default::default(),
                 log_file: None,
                 is_staff: None,
                 first_event_datetime: None,
@@ -370,6 +383,21 @@ impl Telemetry {
         self.report_clickhouse_event(event, telemetry_settings, immediate_flush)
     }
 
+    pub fn report_setting_event(
+        self: &Arc<Self>,
+        telemetry_settings: TelemetrySettings,
+        setting: &'static str,
+        value: String,
+    ) {
+        let event = ClickhouseEvent::Setting {
+            setting,
+            value,
+            milliseconds_since_first_event: self.milliseconds_since_first_event(),
+        };
+
+        self.report_clickhouse_event(event, telemetry_settings, false)
+    }
+
     fn milliseconds_since_first_event(&self) -> i64 {
         let mut state = self.state.lock();
         match state.first_event_datetime {
@@ -404,6 +432,13 @@ impl Telemetry {
             if immediate_flush || state.clickhouse_events_queue.len() >= MAX_QUEUE_LEN {
                 drop(state);
                 self.flush_clickhouse_events();
+            } else {
+                let this = self.clone();
+                let executor = self.executor.clone();
+                state.flush_clickhouse_events_task = Some(self.executor.spawn(async move {
+                    executor.timer(DEBOUNCE_INTERVAL).await;
+                    this.flush_clickhouse_events();
+                }));
             }
         }
     }
@@ -424,6 +459,7 @@ impl Telemetry {
         let mut state = self.state.lock();
         state.first_event_datetime = None;
         let mut events = mem::take(&mut state.clickhouse_events_queue);
+        state.flush_clickhouse_events_task.take();
         drop(state);
 
         let this = self.clone();

crates/collab/k8s/manifest.template.yml 🔗

@@ -1,177 +0,0 @@
----
-apiVersion: v1
-kind: Namespace
-metadata:
-  name: ${ZED_KUBE_NAMESPACE}
-
----
-kind: Service
-apiVersion: v1
-metadata:
-  namespace: ${ZED_KUBE_NAMESPACE}
-  name: collab
-  annotations:
-    service.beta.kubernetes.io/do-loadbalancer-tls-ports: "443"
-    service.beta.kubernetes.io/do-loadbalancer-certificate-id: ${ZED_DO_CERTIFICATE_ID}
-spec:
-  type: LoadBalancer
-  selector:
-    app: collab
-  ports:
-    - name: web
-      protocol: TCP
-      port: 443
-      targetPort: 8080
-
----
-kind: Service
-apiVersion: v1
-metadata:
-  namespace: ${ZED_KUBE_NAMESPACE}
-  name: pgadmin
-  annotations:
-    service.beta.kubernetes.io/do-loadbalancer-tls-ports: "443"
-    service.beta.kubernetes.io/do-loadbalancer-certificate-id: ${ZED_DO_CERTIFICATE_ID}
-spec:
-  type: LoadBalancer
-  selector:
-    app: postgrest
-  ports:
-    - name: web
-      protocol: TCP
-      port: 443
-      targetPort: 8080
-
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
-  namespace: ${ZED_KUBE_NAMESPACE}
-  name: collab
-
-spec:
-  replicas: 1
-  selector:
-    matchLabels:
-      app: collab
-  template:
-    metadata:
-      labels:
-        app: collab
-      annotations:
-        ad.datadoghq.com/collab.check_names: |
-          ["openmetrics"]
-        ad.datadoghq.com/collab.init_configs: |
-          [{}]
-        ad.datadoghq.com/collab.instances: |
-          [
-              {
-              "openmetrics_endpoint": "http://%%host%%:%%port%%/metrics",
-              "namespace": "collab_${ZED_KUBE_NAMESPACE}",
-              "metrics": [".*"]
-              }
-          ]
-    spec:
-      containers:
-        - name: collab
-          image: "${ZED_IMAGE_ID}"
-          args:
-            - serve
-          ports:
-            - containerPort: 8080
-              protocol: TCP
-          livenessProbe:
-            httpGet:
-              path: /healthz
-              port: 8080
-            initialDelaySeconds: 5
-            periodSeconds: 5
-            timeoutSeconds: 5
-          readinessProbe:
-            httpGet:
-              path: /
-              port: 8080
-            initialDelaySeconds: 1
-            periodSeconds: 1
-          env:
-            - name: HTTP_PORT
-              value: "8080"
-            - name: DATABASE_URL
-              valueFrom:
-                secretKeyRef:
-                  name: database
-                  key: url
-            - name: DATABASE_MAX_CONNECTIONS
-              value: "${DATABASE_MAX_CONNECTIONS}"
-            - name: API_TOKEN
-              valueFrom:
-                secretKeyRef:
-                  name: api
-                  key: token
-            - name: LIVE_KIT_SERVER
-              valueFrom:
-                secretKeyRef:
-                  name: livekit
-                  key: server
-            - name: LIVE_KIT_KEY
-              valueFrom:
-                secretKeyRef:
-                  name: livekit
-                  key: key
-            - name: LIVE_KIT_SECRET
-              valueFrom:
-                secretKeyRef:
-                  name: livekit
-                  key: secret
-            - name: INVITE_LINK_PREFIX
-              value: ${INVITE_LINK_PREFIX}
-            - name: RUST_BACKTRACE
-              value: "1"
-            - name: RUST_LOG
-              value: ${RUST_LOG}
-            - name: LOG_JSON
-              value: "true"
-            - name: ZED_ENVIRONMENT
-              value: ${ZED_ENVIRONMENT}
-          securityContext:
-            capabilities:
-              # FIXME - Switch to the more restrictive `PERFMON` capability.
-              # This capability isn't yet available in a stable version of Debian.
-              add: ["SYS_ADMIN"]
-
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
-  namespace: ${ZED_KUBE_NAMESPACE}
-  name: postgrest
-
-spec:
-  replicas: 1
-  selector:
-    matchLabels:
-      app: postgrest
-  template:
-    metadata:
-      labels:
-        app: postgrest
-    spec:
-      containers:
-        - name: postgrest
-          image: "postgrest/postgrest"
-          ports:
-            - containerPort: 8080
-              protocol: TCP
-          env:
-            - name: PGRST_SERVER_PORT
-              value: "8080"
-            - name: PGRST_DB_URI
-              valueFrom:
-                secretKeyRef:
-                  name: database
-                  key: url
-            - name: PGRST_JWT_SECRET
-              valueFrom:
-                secretKeyRef:
-                  name: postgrest
-                  key: jwt_secret

crates/collab/k8s/migrate.template.yml 🔗

@@ -1,21 +0,0 @@
-apiVersion: batch/v1
-kind: Job
-metadata:
-  namespace: ${ZED_KUBE_NAMESPACE}
-  name: ${ZED_MIGRATE_JOB_NAME}
-spec:
-  template:
-    spec:
-      restartPolicy: Never
-      containers:
-        - name: migrator
-          imagePullPolicy: Always
-          image: ${ZED_IMAGE_ID}
-          args:
-            - migrate
-          env:
-            - name: DATABASE_URL
-              valueFrom:
-                secretKeyRef:
-                  name: database
-                  key: url

crates/collab2/k8s/manifest.template.yml → crates/collab2/k8s/collab.template.yml 🔗

@@ -23,25 +23,6 @@ spec:
       port: 443
       targetPort: 8080
 
----
-kind: Service
-apiVersion: v1
-metadata:
-  namespace: ${ZED_KUBE_NAMESPACE}
-  name: pgadmin
-  annotations:
-    service.beta.kubernetes.io/do-loadbalancer-tls-ports: "443"
-    service.beta.kubernetes.io/do-loadbalancer-certificate-id: ${ZED_DO_CERTIFICATE_ID}
-spec:
-  type: LoadBalancer
-  selector:
-    app: postgrest
-  ports:
-    - name: web
-      protocol: TCP
-      port: 443
-      targetPort: 8080
-
 ---
 apiVersion: apps/v1
 kind: Deployment
@@ -138,40 +119,3 @@ spec:
               # FIXME - Switch to the more restrictive `PERFMON` capability.
               # This capability isn't yet available in a stable version of Debian.
               add: ["SYS_ADMIN"]
-
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
-  namespace: ${ZED_KUBE_NAMESPACE}
-  name: postgrest
-
-spec:
-  replicas: 1
-  selector:
-    matchLabels:
-      app: postgrest
-  template:
-    metadata:
-      labels:
-        app: postgrest
-    spec:
-      containers:
-        - name: postgrest
-          image: "postgrest/postgrest"
-          ports:
-            - containerPort: 8080
-              protocol: TCP
-          env:
-            - name: PGRST_SERVER_PORT
-              value: "8080"
-            - name: PGRST_DB_URI
-              valueFrom:
-                secretKeyRef:
-                  name: database
-                  key: url
-            - name: PGRST_JWT_SECRET
-              valueFrom:
-                secretKeyRef:
-                  name: postgrest
-                  key: jwt_secret

crates/collab/k8s/environments/preview.sh → crates/collab2/k8s/environments/nightly.sh 🔗

@@ -1,4 +1,4 @@
-ZED_ENVIRONMENT=preview
+ZED_ENVIRONMENT=nightly
 RUST_LOG=info
 INVITE_LINK_PREFIX=https://zed.dev/invites/
 DATABASE_MAX_CONNECTIONS=10

crates/collab2/k8s/postgrest.template.yml 🔗

@@ -0,0 +1,55 @@
+---
+kind: Service
+apiVersion: v1
+metadata:
+  namespace: ${ZED_KUBE_NAMESPACE}
+  name: postgrest
+  annotations:
+    service.beta.kubernetes.io/do-loadbalancer-tls-ports: "443"
+    service.beta.kubernetes.io/do-loadbalancer-certificate-id: ${ZED_DO_CERTIFICATE_ID}
+spec:
+  type: LoadBalancer
+  selector:
+    app: postgrest
+  ports:
+    - name: web
+      protocol: TCP
+      port: 443
+      targetPort: 8080
+
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  namespace: ${ZED_KUBE_NAMESPACE}
+  name: postgrest
+
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: postgrest
+  template:
+    metadata:
+      labels:
+        app: postgrest
+    spec:
+      containers:
+        - name: postgrest
+          image: "postgrest/postgrest"
+          ports:
+            - containerPort: 8080
+              protocol: TCP
+          env:
+            - name: PGRST_SERVER_PORT
+              value: "8080"
+            - name: PGRST_DB_URI
+              valueFrom:
+                secretKeyRef:
+                  name: database
+                  key: url
+            - name: PGRST_JWT_SECRET
+              valueFrom:
+                secretKeyRef:
+                  name: postgrest
+                  key: jwt_secret

crates/collab_ui2/src/chat_panel.rs 🔗

@@ -611,6 +611,10 @@ impl Panel for ChatPanel {
         Some(ui::Icon::MessageBubbles)
     }
 
+    fn icon_tooltip(&self, _cx: &WindowContext) -> Option<&'static str> {
+        Some("Chat Panel")
+    }
+
     fn toggle_action(&self) -> Box<dyn gpui::Action> {
         Box::new(ToggleFocus)
     }

crates/collab_ui2/src/collab_panel.rs 🔗

@@ -2163,40 +2163,71 @@ impl CollabPanel {
                     .child(
                         h_stack()
                             .id(channel_id as usize)
+                            // HACK: This is a dirty hack to help with the positioning of the button container.
+                            //
+                            // We're using a pixel width for the elements but then allowing the contents to
+                            // overflow. This means that the label and facepile will be shown, but will not
+                            // push the button container off the edge of the panel.
+                            .w_px()
                             .child(Label::new(channel.name.clone()))
                             .children(face_pile.map(|face_pile| face_pile.render(cx))),
                     )
                     .end_slot(
                         h_stack()
+                            .absolute()
+                            // We're using a negative coordinate for the right anchor to
+                            // counteract the padding of the `ListItem`.
+                            //
+                            // This prevents a gap from showing up between the background
+                            // of this element and the edge of the collab panel.
+                            .right(rems(-0.5))
+                            // HACK: Without this the channel name clips on top of the icons, but I'm not sure why.
+                            .z_index(10)
+                            .bg(cx.theme().colors().panel_background)
+                            .when(is_selected || is_active, |this| {
+                                this.bg(cx.theme().colors().ghost_element_selected)
+                            })
                             .child(
-                                IconButton::new("channel_chat", Icon::MessageBubbles)
-                                    .icon_size(IconSize::Small)
-                                    .icon_color(if has_messages_notification {
-                                        Color::Default
-                                    } else {
-                                        Color::Muted
-                                    })
-                                    .when(!has_messages_notification, |this| {
-                                        this.visible_on_hover("")
-                                    })
-                                    .on_click(cx.listener(move |this, _, cx| {
-                                        this.join_channel_chat(channel_id, cx)
-                                    }))
-                                    .tooltip(|cx| Tooltip::text("Open channel chat", cx)),
-                            )
-                            .child(
-                                IconButton::new("channel_notes", Icon::File)
-                                    .icon_size(IconSize::Small)
-                                    .icon_color(if has_notes_notification {
-                                        Color::Default
-                                    } else {
-                                        Color::Muted
+                                h_stack()
+                                    .px_1()
+                                    // The element hover background has a slight transparency to it, so we
+                                    // need to apply it to the inner element so that it blends with the solid
+                                    // background color of the absolutely-positioned element.
+                                    .group_hover("", |style| {
+                                        style.bg(cx.theme().colors().ghost_element_hover)
                                     })
-                                    .when(!has_notes_notification, |this| this.visible_on_hover(""))
-                                    .on_click(cx.listener(move |this, _, cx| {
-                                        this.open_channel_notes(channel_id, cx)
-                                    }))
-                                    .tooltip(|cx| Tooltip::text("Open channel notes", cx)),
+                                    .child(
+                                        IconButton::new("channel_chat", Icon::MessageBubbles)
+                                            .icon_size(IconSize::Small)
+                                            .icon_color(if has_messages_notification {
+                                                Color::Default
+                                            } else {
+                                                Color::Muted
+                                            })
+                                            .when(!has_messages_notification, |this| {
+                                                this.visible_on_hover("")
+                                            })
+                                            .on_click(cx.listener(move |this, _, cx| {
+                                                this.join_channel_chat(channel_id, cx)
+                                            }))
+                                            .tooltip(|cx| Tooltip::text("Open channel chat", cx)),
+                                    )
+                                    .child(
+                                        IconButton::new("channel_notes", Icon::File)
+                                            .icon_size(IconSize::Small)
+                                            .icon_color(if has_notes_notification {
+                                                Color::Default
+                                            } else {
+                                                Color::Muted
+                                            })
+                                            .when(!has_notes_notification, |this| {
+                                                this.visible_on_hover("")
+                                            })
+                                            .on_click(cx.listener(move |this, _, cx| {
+                                                this.open_channel_notes(channel_id, cx)
+                                            }))
+                                            .tooltip(|cx| Tooltip::text("Open channel notes", cx)),
+                                    ),
                             ),
                     ),
             )
@@ -2331,6 +2362,10 @@ impl Panel for CollabPanel {
             .then(|| ui::Icon::Collab)
     }
 
+    fn icon_tooltip(&self, _cx: &WindowContext) -> Option<&'static str> {
+        Some("Collab Panel")
+    }
+
     fn toggle_action(&self) -> Box<dyn gpui::Action> {
         Box::new(ToggleFocus)
     }

crates/collab_ui2/src/notification_panel.rs 🔗

@@ -661,6 +661,10 @@ impl Panel for NotificationPanel {
             .then(|| Icon::Bell)
     }
 
+    fn icon_tooltip(&self, _cx: &WindowContext) -> Option<&'static str> {
+        Some("Notification Panel")
+    }
+
     fn icon_label(&self, cx: &WindowContext) -> Option<String> {
         let count = self.notification_store.read(cx).unread_notification_count();
         if count == 0 {

crates/diagnostics2/src/diagnostics.rs 🔗

@@ -13,7 +13,7 @@ use editor::{
 };
 use futures::future::try_join_all;
 use gpui::{
-    actions, div, AnyElement, AnyView, AppContext, Context, EventEmitter, FocusHandle,
+    actions, div, svg, AnyElement, AnyView, AppContext, Context, EventEmitter, FocusHandle,
     FocusableView, HighlightStyle, InteractiveElement, IntoElement, Model, ParentElement, Render,
     SharedString, Styled, StyledText, Subscription, Task, View, ViewContext, VisualContext,
     WeakView, WindowContext,
@@ -663,6 +663,7 @@ impl Item for ProjectDiagnosticsEditor {
                 .when(self.summary.warning_count > 0, |then| {
                     then.child(
                         h_stack()
+                            .gap_1()
                             .child(
                                 IconElement::new(Icon::ExclamationTriangle).color(Color::Warning),
                             )
@@ -799,12 +800,20 @@ fn diagnostic_header_renderer(diagnostic: Diagnostic) -> RenderBlock {
                 h_stack()
                     .gap_3()
                     .map(|stack| {
-                        let icon = if diagnostic.severity == DiagnosticSeverity::ERROR {
-                            IconElement::new(Icon::XCircle).color(Color::Error)
-                        } else {
-                            IconElement::new(Icon::ExclamationTriangle).color(Color::Warning)
-                        };
-                        stack.child(icon)
+                        stack.child(
+                            svg()
+                                .size(cx.text_style().font_size)
+                                .flex_none()
+                                .map(|icon| {
+                                    if diagnostic.severity == DiagnosticSeverity::ERROR {
+                                        icon.path(Icon::XCircle.path())
+                                            .text_color(Color::Error.color(cx))
+                                    } else {
+                                        icon.path(Icon::ExclamationTriangle.path())
+                                            .text_color(Color::Warning.color(cx))
+                                    }
+                                }),
+                        )
                     })
                     .child(
                         h_stack()
@@ -818,7 +827,11 @@ fn diagnostic_header_renderer(diagnostic: Diagnostic) -> RenderBlock {
                                 ),
                             )
                             .when_some(diagnostic.code.as_ref(), |stack, code| {
-                                stack.child(Label::new(format!("({code})")).color(Color::Muted))
+                                stack.child(
+                                    div()
+                                        .child(SharedString::from(format!("({code})")))
+                                        .text_color(cx.theme().colors().text_muted),
+                                )
                             }),
                     ),
             )
@@ -826,7 +839,11 @@ fn diagnostic_header_renderer(diagnostic: Diagnostic) -> RenderBlock {
                 h_stack()
                     .gap_1()
                     .when_some(diagnostic.source.as_ref(), |stack, source| {
-                        stack.child(Label::new(format!("{source}")).color(Color::Muted))
+                        stack.child(
+                            div()
+                                .child(SharedString::from(source.clone()))
+                                .text_color(cx.theme().colors().text_muted),
+                        )
                     }),
             )
             .into_any_element()

crates/editor2/src/display_map.rs 🔗

@@ -536,7 +536,7 @@ impl DisplaySnapshot {
                 // Omit underlines for HINT/INFO diagnostics on 'unnecessary' code.
                 if severity <= DiagnosticSeverity::WARNING || !chunk.is_unnecessary {
                     let diagnostic_color =
-                        super::diagnostic_style(severity, true, &editor_style.diagnostic_style);
+                        super::diagnostic_style(severity, true, &editor_style.status);
                     diagnostic_highlight.underline = Some(UnderlineStyle {
                         color: Some(diagnostic_color),
                         thickness: 1.0.into(),

crates/editor2/src/editor.rs 🔗

@@ -97,7 +97,7 @@ use std::{
 pub use sum_tree::Bias;
 use sum_tree::TreeMap;
 use text::{OffsetUtf16, Rope};
-use theme::{ActiveTheme, DiagnosticStyle, PlayerColor, SyntaxTheme, ThemeColors, ThemeSettings};
+use theme::{ActiveTheme, PlayerColor, StatusColors, SyntaxTheme, ThemeColors, ThemeSettings};
 use ui::{h_stack, ButtonSize, ButtonStyle, Icon, IconButton, Popover, Tooltip};
 use ui::{prelude::*, IconSize};
 use util::{post_inc, RangeExt, ResultExt, TryFutureExt};
@@ -512,7 +512,7 @@ pub struct EditorStyle {
     pub text: TextStyle,
     pub scrollbar_width: Pixels,
     pub syntax: Arc<SyntaxTheme>,
-    pub diagnostic_style: DiagnosticStyle,
+    pub status: StatusColors,
     pub inlays_style: HighlightStyle,
     pub suggestions_style: HighlightStyle,
 }
@@ -1195,7 +1195,6 @@ impl CompletionsMenu {
                     .min_w(px(260.))
                     .max_w(px(640.))
                     .w(px(500.))
-                    .text_ui()
                     .overflow_y_scroll()
                     // Prevent a mouse down on documentation from being propagated to the editor,
                     // because that would move the cursor.
@@ -1251,7 +1250,6 @@ impl CompletionsMenu {
                             .max_w(px(540.))
                             .whitespace_nowrap()
                             .overflow_hidden()
-                            .text_ui()
                             .px_1()
                             .rounded(px(4.))
                             .bg(cx.theme().colors().ghost_element_background)
@@ -1425,7 +1423,6 @@ impl CodeActionsMenu {
                         let colors = cx.theme().colors();
                         div()
                             .px_2()
-                            .text_ui()
                             .text_color(colors.text)
                             .when(selected, |style| {
                                 style
@@ -7662,10 +7659,7 @@ impl Editor {
                                                 text: text_style,
                                                 scrollbar_width: cx.editor_style.scrollbar_width,
                                                 syntax: cx.editor_style.syntax.clone(),
-                                                diagnostic_style: cx
-                                                    .editor_style
-                                                    .diagnostic_style
-                                                    .clone(),
+                                                status: cx.editor_style.status.clone(),
                                                 // todo!("what about the rest of the highlight style parts for inlays and suggestions?")
                                                 inlays_style: HighlightStyle {
                                                     color: Some(cx.theme().status().hint),
@@ -9335,7 +9329,7 @@ impl Render for Editor {
                 text: text_style,
                 scrollbar_width: px(12.),
                 syntax: cx.theme().syntax().clone(),
-                diagnostic_style: cx.theme().diagnostic_style(),
+                status: cx.theme().status().clone(),
                 // todo!("what about the rest of the highlight style parts?")
                 inlays_style: HighlightStyle {
                     color: Some(cx.theme().status().hint),
@@ -9789,21 +9783,17 @@ pub fn highlight_diagnostic_message(diagnostic: &Diagnostic) -> (SharedString, V
     (text_without_backticks.into(), code_ranges)
 }
 
-pub fn diagnostic_style(
-    severity: DiagnosticSeverity,
-    valid: bool,
-    style: &DiagnosticStyle,
-) -> Hsla {
+pub fn diagnostic_style(severity: DiagnosticSeverity, valid: bool, colors: &StatusColors) -> Hsla {
     match (severity, valid) {
-        (DiagnosticSeverity::ERROR, true) => style.error,
-        (DiagnosticSeverity::ERROR, false) => style.error,
-        (DiagnosticSeverity::WARNING, true) => style.warning,
-        (DiagnosticSeverity::WARNING, false) => style.warning,
-        (DiagnosticSeverity::INFORMATION, true) => style.info,
-        (DiagnosticSeverity::INFORMATION, false) => style.info,
-        (DiagnosticSeverity::HINT, true) => style.info,
-        (DiagnosticSeverity::HINT, false) => style.info,
-        _ => style.ignored,
+        (DiagnosticSeverity::ERROR, true) => colors.error,
+        (DiagnosticSeverity::ERROR, false) => colors.error,
+        (DiagnosticSeverity::WARNING, true) => colors.warning,
+        (DiagnosticSeverity::WARNING, false) => colors.warning,
+        (DiagnosticSeverity::INFORMATION, true) => colors.info,
+        (DiagnosticSeverity::INFORMATION, false) => colors.info,
+        (DiagnosticSeverity::HINT, true) => colors.info,
+        (DiagnosticSeverity::HINT, false) => colors.info,
+        _ => colors.ignored,
     }
 }
 

crates/editor2/src/element.rs 🔗

@@ -52,7 +52,7 @@ use std::{
 use sum_tree::Bias;
 use theme::{ActiveTheme, PlayerColor};
 use ui::prelude::*;
-use ui::{h_stack, ButtonLike, ButtonStyle, IconButton, Label, Tooltip};
+use ui::{h_stack, ButtonLike, ButtonStyle, IconButton, Tooltip};
 use util::ResultExt;
 use workspace::item::Item;
 
@@ -2305,13 +2305,17 @@ impl EditorElement {
                                         h_stack().gap_3().child(
                                             h_stack()
                                                 .gap_2()
-                                                .child(Label::new(
+                                                .child(
                                                     filename
                                                         .map(SharedString::from)
                                                         .unwrap_or_else(|| "untitled".into()),
-                                                ))
+                                                )
                                                 .when_some(parent_path, |then, path| {
-                                                    then.child(Label::new(path).color(Color::Muted))
+                                                    then.child(
+                                                        div().child(path).text_color(
+                                                            cx.theme().colors().text_muted,
+                                                        ),
+                                                    )
                                                 }),
                                         ),
                                     )
@@ -2373,8 +2377,6 @@ impl EditorElement {
                                     this.child(div().size_full().bg(gpui::green()))
                                 }
                             })
-                        // .child("⋯")
-                        // .children(jump_icon) // .p_x(gutter_padding)
                     };
                     element.into_any()
                 }
@@ -2811,50 +2813,65 @@ impl Element for EditorElement {
     ) {
         let editor = self.editor.clone();
 
-        let mut layout = self.compute_layout(bounds, cx);
-        let gutter_bounds = Bounds {
-            origin: bounds.origin,
-            size: layout.gutter_size,
-        };
-        let text_bounds = Bounds {
-            origin: gutter_bounds.upper_right(),
-            size: layout.text_size,
-        };
+        cx.with_text_style(
+            Some(gpui::TextStyleRefinement {
+                font_size: Some(self.style.text.font_size),
+                ..Default::default()
+            }),
+            |cx| {
+                let mut layout = self.compute_layout(bounds, cx);
+                let gutter_bounds = Bounds {
+                    origin: bounds.origin,
+                    size: layout.gutter_size,
+                };
+                let text_bounds = Bounds {
+                    origin: gutter_bounds.upper_right(),
+                    size: layout.text_size,
+                };
 
-        let focus_handle = editor.focus_handle(cx);
-        let key_context = self.editor.read(cx).key_context(cx);
-        cx.with_key_dispatch(Some(key_context), Some(focus_handle.clone()), |_, cx| {
-            self.register_actions(cx);
-            self.register_key_listeners(cx);
+                let focus_handle = editor.focus_handle(cx);
+                let key_context = self.editor.read(cx).key_context(cx);
+                cx.with_key_dispatch(Some(key_context), Some(focus_handle.clone()), |_, cx| {
+                    self.register_actions(cx);
+                    self.register_key_listeners(cx);
 
-            cx.with_content_mask(Some(ContentMask { bounds }), |cx| {
-                let input_handler = ElementInputHandler::new(bounds, self.editor.clone(), cx);
-                cx.handle_input(&focus_handle, input_handler);
+                    cx.with_content_mask(Some(ContentMask { bounds }), |cx| {
+                        let input_handler =
+                            ElementInputHandler::new(bounds, self.editor.clone(), cx);
+                        cx.handle_input(&focus_handle, input_handler);
 
-                self.paint_background(gutter_bounds, text_bounds, &layout, cx);
-                if layout.gutter_size.width > Pixels::ZERO {
-                    self.paint_gutter(gutter_bounds, &mut layout, cx);
-                }
-                self.paint_text(text_bounds, &mut layout, cx);
+                        self.paint_background(gutter_bounds, text_bounds, &layout, cx);
+                        if layout.gutter_size.width > Pixels::ZERO {
+                            self.paint_gutter(gutter_bounds, &mut layout, cx);
+                        }
+                        self.paint_text(text_bounds, &mut layout, cx);
 
-                cx.with_z_index(0, |cx| {
-                    self.paint_mouse_listeners(bounds, gutter_bounds, text_bounds, &layout, cx);
-                });
-                if !layout.blocks.is_empty() {
-                    cx.with_z_index(0, |cx| {
-                        cx.with_element_id(Some("editor_blocks"), |cx| {
-                            self.paint_blocks(bounds, &mut layout, cx);
+                        cx.with_z_index(0, |cx| {
+                            self.paint_mouse_listeners(
+                                bounds,
+                                gutter_bounds,
+                                text_bounds,
+                                &layout,
+                                cx,
+                            );
                         });
-                    })
-                }
+                        if !layout.blocks.is_empty() {
+                            cx.with_z_index(0, |cx| {
+                                cx.with_element_id(Some("editor_blocks"), |cx| {
+                                    self.paint_blocks(bounds, &mut layout, cx);
+                                });
+                            })
+                        }
 
-                cx.with_z_index(1, |cx| {
-                    self.paint_overlays(text_bounds, &mut layout, cx);
-                });
+                        cx.with_z_index(1, |cx| {
+                            self.paint_overlays(text_bounds, &mut layout, cx);
+                        });
 
-                cx.with_z_index(2, |cx| self.paint_scrollbar(bounds, &mut layout, cx));
-            });
-        })
+                        cx.with_z_index(2, |cx| self.paint_scrollbar(bounds, &mut layout, cx));
+                    });
+                })
+            },
+        );
     }
 }
 

crates/editor2/src/hover_popover.rs 🔗

@@ -6,12 +6,13 @@ use crate::{
 };
 use futures::FutureExt;
 use gpui::{
-    actions, div, px, AnyElement, CursorStyle, InteractiveElement, IntoElement, Model, MouseButton,
-    ParentElement, Pixels, SharedString, Size, StatefulInteractiveElement, Styled, Task,
-    ViewContext, WeakView,
+    actions, div, px, AnyElement, CursorStyle, Hsla, InteractiveElement, IntoElement, Model,
+    MouseButton, ParentElement, Pixels, SharedString, Size, StatefulInteractiveElement, Styled,
+    Task, ViewContext, WeakView,
 };
 use language::{markdown, Bias, DiagnosticEntry, Language, LanguageRegistry, ParsedMarkdown};
 
+use lsp::DiagnosticSeverity;
 use project::{HoverBlock, HoverBlockKind, InlayHintLabelPart, Project};
 use settings::Settings;
 use std::{ops::Range, sync::Arc, time::Duration};
@@ -477,7 +478,6 @@ impl InfoPopover {
         div()
             .id("info_popover")
             .elevation_2(cx)
-            .text_ui()
             .p_2()
             .overflow_y_scroll()
             .max_w(max_size.width)
@@ -514,16 +514,50 @@ impl DiagnosticPopover {
             None => self.local_diagnostic.diagnostic.message.clone(),
         };
 
-        let container_bg = crate::diagnostic_style(
-            self.local_diagnostic.diagnostic.severity,
-            true,
-            &style.diagnostic_style,
-        );
+        struct DiagnosticColors {
+            pub text: Hsla,
+            pub background: Hsla,
+            pub border: Hsla,
+        }
+
+        let diagnostic_colors = match self.local_diagnostic.diagnostic.severity {
+            DiagnosticSeverity::ERROR => DiagnosticColors {
+                text: style.status.error,
+                background: style.status.error_background,
+                border: style.status.error_border,
+            },
+            DiagnosticSeverity::WARNING => DiagnosticColors {
+                text: style.status.warning,
+                background: style.status.warning_background,
+                border: style.status.warning_border,
+            },
+            DiagnosticSeverity::INFORMATION => DiagnosticColors {
+                text: style.status.info,
+                background: style.status.info_background,
+                border: style.status.info_border,
+            },
+            DiagnosticSeverity::HINT => DiagnosticColors {
+                text: style.status.hint,
+                background: style.status.hint_background,
+                border: style.status.hint_border,
+            },
+            _ => DiagnosticColors {
+                text: style.status.ignored,
+                background: style.status.ignored_background,
+                border: style.status.ignored_border,
+            },
+        };
 
         div()
             .id("diagnostic")
             .overflow_y_scroll()
-            .bg(container_bg)
+            .px_2()
+            .py_1()
+            .bg(diagnostic_colors.background)
+            .text_color(diagnostic_colors.text)
+            .border_1()
+            .border_color(diagnostic_colors.border)
+            .rounded_md()
             .max_w(max_size.width)
             .max_h(max_size.height)
             .cursor(CursorStyle::PointingHand)

crates/gpui/src/platform/mac/renderer.rs 🔗

@@ -162,7 +162,7 @@ impl Renderer {
             "underline_fragment",
             PIXEL_FORMAT,
         );
-        let cv_texture_cache = CVMetalTextureCache::new(device.as_ptr()).unwrap();
+        let cv_texture_cache = unsafe { CVMetalTextureCache::new(device.as_ptr()).unwrap() };
         Self {
             layer,
             command_queue: device.new_command_queue(),
@@ -887,28 +887,30 @@ impl Renderer {
                 core_video::kCVPixelFormatType_420YpCbCr8BiPlanarFullRange
             );
 
-            let y_texture = self
-                .cv_texture_cache
-                .create_texture_from_image(
-                    surface.image_buffer.as_concrete_TypeRef(),
-                    ptr::null(),
-                    MTLPixelFormat::R8Unorm,
-                    surface.image_buffer.plane_width(0),
-                    surface.image_buffer.plane_height(0),
-                    0,
-                )
-                .unwrap();
-            let cb_cr_texture = self
-                .cv_texture_cache
-                .create_texture_from_image(
-                    surface.image_buffer.as_concrete_TypeRef(),
-                    ptr::null(),
-                    MTLPixelFormat::RG8Unorm,
-                    surface.image_buffer.plane_width(1),
-                    surface.image_buffer.plane_height(1),
-                    1,
-                )
-                .unwrap();
+            let y_texture = unsafe {
+                self.cv_texture_cache
+                    .create_texture_from_image(
+                        surface.image_buffer.as_concrete_TypeRef(),
+                        ptr::null(),
+                        MTLPixelFormat::R8Unorm,
+                        surface.image_buffer.plane_width(0),
+                        surface.image_buffer.plane_height(0),
+                        0,
+                    )
+                    .unwrap()
+            };
+            let cb_cr_texture = unsafe {
+                self.cv_texture_cache
+                    .create_texture_from_image(
+                        surface.image_buffer.as_concrete_TypeRef(),
+                        ptr::null(),
+                        MTLPixelFormat::RG8Unorm,
+                        surface.image_buffer.plane_width(1),
+                        surface.image_buffer.plane_height(1),
+                        1,
+                    )
+                    .unwrap()
+            };
 
             align_offset(offset);
             let next_offset = *offset + mem::size_of::<shaders::GPUISurface>();

crates/gpui2/src/app.rs 🔗

@@ -52,7 +52,7 @@ pub struct AppCell {
 impl AppCell {
     #[track_caller]
     pub fn borrow(&self) -> AppRef {
-        if let Some(_) = option_env!("TRACK_THREAD_BORROWS") {
+        if option_env!("TRACK_THREAD_BORROWS").is_some() {
             let thread_id = std::thread::current().id();
             eprintln!("borrowed {thread_id:?}");
         }
@@ -61,7 +61,7 @@ impl AppCell {
 
     #[track_caller]
     pub fn borrow_mut(&self) -> AppRefMut {
-        if let Some(_) = option_env!("TRACK_THREAD_BORROWS") {
+        if option_env!("TRACK_THREAD_BORROWS").is_some() {
             let thread_id = std::thread::current().id();
             eprintln!("borrowed {thread_id:?}");
         }
@@ -74,7 +74,7 @@ pub struct AppRef<'a>(Ref<'a, AppContext>);
 
 impl<'a> Drop for AppRef<'a> {
     fn drop(&mut self) {
-        if let Some(_) = option_env!("TRACK_THREAD_BORROWS") {
+        if option_env!("TRACK_THREAD_BORROWS").is_some() {
             let thread_id = std::thread::current().id();
             eprintln!("dropped borrow from {thread_id:?}");
         }
@@ -86,7 +86,7 @@ pub struct AppRefMut<'a>(RefMut<'a, AppContext>);
 
 impl<'a> Drop for AppRefMut<'a> {
     fn drop(&mut self) {
-        if let Some(_) = option_env!("TRACK_THREAD_BORROWS") {
+        if option_env!("TRACK_THREAD_BORROWS").is_some() {
             let thread_id = std::thread::current().id();
             eprintln!("dropped {thread_id:?}");
         }
@@ -130,7 +130,7 @@ impl App {
         let this = Rc::downgrade(&self.0);
         self.0.borrow().platform.on_open_urls(Box::new(move |urls| {
             if let Some(app) = this.upgrade() {
-                callback(urls, &mut *app.borrow_mut());
+                callback(urls, &mut app.borrow_mut());
             }
         }));
         self
@@ -280,7 +280,7 @@ impl AppContext {
             }),
         });
 
-        init_app_menus(platform.as_ref(), &mut *app.borrow_mut());
+        init_app_menus(platform.as_ref(), &mut app.borrow_mut());
 
         platform.on_quit(Box::new({
             let cx = app.clone();
@@ -428,7 +428,7 @@ impl AppContext {
     pub fn windows(&self) -> Vec<AnyWindowHandle> {
         self.windows
             .values()
-            .filter_map(|window| Some(window.as_ref()?.handle.clone()))
+            .filter_map(|window| Some(window.as_ref()?.handle))
             .collect()
     }
 
@@ -808,7 +808,7 @@ impl AppContext {
         self.push_effect(Effect::NotifyGlobalObservers { global_type });
         self.globals_by_type
             .entry(global_type)
-            .or_insert_with(|| Box::new(G::default()))
+            .or_insert_with(|| Box::<G>::default())
             .downcast_mut::<G>()
             .unwrap()
     }
@@ -993,7 +993,7 @@ impl AppContext {
             (),
             Box::new(move |cx| {
                 let future = on_quit(cx);
-                async move { future.await }.boxed_local()
+                future.boxed_local()
             }),
         );
         activate();

crates/gpui2/src/app/async_context.rs 🔗

@@ -106,7 +106,7 @@ impl AsyncAppContext {
             .upgrade()
             .ok_or_else(|| anyhow!("app was released"))?;
         let mut lock = app.borrow_mut();
-        Ok(f(&mut *lock))
+        Ok(f(&mut lock))
     }
 
     pub fn open_window<V>(

crates/gpui2/src/app/entity_map.rs 🔗

@@ -327,9 +327,9 @@ impl<T: 'static> Model<T> {
         cx.entities.read(self)
     }
 
-    pub fn read_with<'a, R, C: Context>(
+    pub fn read_with<R, C: Context>(
         &self,
-        cx: &'a C,
+        cx: &C,
         f: impl FnOnce(&T, &AppContext) -> R,
     ) -> C::Result<R> {
         cx.read_model(self, f)

crates/gpui2/src/app/model_context.rs 🔗

@@ -262,12 +262,12 @@ impl<'a, T> Context for ModelContext<'a, T> {
 
 impl<T> Borrow<AppContext> for ModelContext<'_, T> {
     fn borrow(&self) -> &AppContext {
-        &self.app
+        self.app
     }
 }
 
 impl<T> BorrowMut<AppContext> for ModelContext<'_, T> {
     fn borrow_mut(&mut self) -> &mut AppContext {
-        &mut self.app
+        self.app
     }
 }

crates/gpui2/src/color.rs 🔗

@@ -34,7 +34,7 @@ impl fmt::Debug for Rgba {
 impl Rgba {
     pub fn blend(&self, other: Rgba) -> Self {
         if other.a >= 1.0 {
-            return other;
+            other
         } else if other.a <= 0.0 {
             return *self;
         } else {
@@ -117,7 +117,7 @@ impl TryFrom<&'_ str> for Rgba {
         const RRGGBB: usize = "rrggbb".len();
         const RRGGBBAA: usize = "rrggbbaa".len();
 
-        const EXPECTED_FORMATS: &'static str = "Expected #rgb, #rgba, #rrggbb, or #rrggbbaa";
+        const EXPECTED_FORMATS: &str = "Expected #rgb, #rgba, #rrggbb, or #rrggbbaa";
 
         let Some(("", hex)) = value.trim().split_once('#') else {
             bail!("invalid RGBA hex color: '{value}'. {EXPECTED_FORMATS}");
@@ -328,7 +328,7 @@ impl Hsla {
         let alpha = other.a;
 
         if alpha >= 1.0 {
-            return other;
+            other
         } else if alpha <= 0.0 {
             return self;
         } else {

crates/gpui2/src/elements/div.rs 🔗

@@ -176,21 +176,20 @@ impl Interactivity {
     {
         self.mouse_move_listeners
             .push(Box::new(move |event, bounds, phase, cx| {
-                if phase == DispatchPhase::Capture {
-                    if cx
+                if phase == DispatchPhase::Capture
+                    && cx
                         .active_drag
                         .as_ref()
                         .is_some_and(|drag| drag.value.as_ref().type_id() == TypeId::of::<T>())
-                    {
-                        (listener)(
-                            &DragMoveEvent {
-                                event: event.clone(),
-                                bounds: bounds.bounds,
-                                drag: PhantomData,
-                            },
-                            cx,
-                        );
-                    }
+                {
+                    (listener)(
+                        &DragMoveEvent {
+                            event: event.clone(),
+                            bounds: bounds.bounds,
+                            drag: PhantomData,
+                        },
+                        cx,
+                    );
                 }
             }));
     }
@@ -236,7 +235,7 @@ impl Interactivity {
 
     pub fn on_boxed_action(
         &mut self,
-        action: &Box<dyn Action>,
+        action: &dyn Action,
         listener: impl Fn(&Box<dyn Action>, &mut WindowContext) + 'static,
     ) {
         let action = action.boxed_clone();
@@ -511,7 +510,7 @@ pub trait InteractiveElement: Sized {
 
     fn on_boxed_action(
         mut self,
-        action: &Box<dyn Action>,
+        action: &dyn Action,
         listener: impl Fn(&Box<dyn Action>, &mut WindowContext) + 'static,
     ) -> Self {
         self.interactivity().on_boxed_action(action, listener);
@@ -878,6 +877,7 @@ impl DivState {
     }
 }
 
+#[derive(Default)]
 pub struct Interactivity {
     pub element_id: Option<ElementId>,
     pub key_context: Option<KeyContext>,
@@ -921,12 +921,12 @@ pub struct InteractiveBounds {
 
 impl InteractiveBounds {
     pub fn visibly_contains(&self, point: &Point<Pixels>, cx: &WindowContext) -> bool {
-        self.bounds.contains(point) && cx.was_top_layer(&point, &self.stacking_order)
+        self.bounds.contains(point) && cx.was_top_layer(point, &self.stacking_order)
     }
 
     pub fn drag_target_contains(&self, point: &Point<Pixels>, cx: &WindowContext) -> bool {
         self.bounds.contains(point)
-            && cx.was_top_layer_under_active_drag(&point, &self.stacking_order)
+            && cx.was_top_layer_under_active_drag(point, &self.stacking_order)
     }
 }
 
@@ -1009,8 +1009,7 @@ impl Interactivity {
                                         None,
                                     )
                                     .ok()
-                                    .map(|mut text| text.pop())
-                                    .flatten()
+                                    .and_then(|mut text| text.pop())
                                 {
                                     text.paint(bounds.origin, FONT_SIZE, cx).ok();
 
@@ -1024,7 +1023,6 @@ impl Interactivity {
                                     {
                                         let command_held = cx.modifiers().command;
                                         cx.on_key_event({
-                                            let text_bounds = text_bounds.clone();
                                             move |e: &crate::ModifiersChangedEvent, _phase, cx| {
                                                 if e.modifiers.command != command_held
                                                     && text_bounds.contains(&cx.mouse_position())
@@ -1037,17 +1035,16 @@ impl Interactivity {
                                         let hovered = bounds.contains(&cx.mouse_position());
                                         cx.on_mouse_event(
                                             move |event: &MouseMoveEvent, phase, cx| {
-                                                if phase == DispatchPhase::Capture {
-                                                    if bounds.contains(&event.position) != hovered {
-                                                        cx.notify();
-                                                    }
+                                                if phase == DispatchPhase::Capture
+                                                    && bounds.contains(&event.position) != hovered
+                                                {
+                                                    cx.notify();
                                                 }
                                             },
                                         );
 
                                         cx.on_mouse_event({
-                                            let location = self.location.clone().unwrap();
-                                            let text_bounds = text_bounds.clone();
+                                            let location = self.location.unwrap();
                                             move |e: &crate::MouseDownEvent, phase, cx| {
                                                 if text_bounds.contains(&e.position)
                                                     && phase.capture()
@@ -1188,10 +1185,10 @@ impl Interactivity {
                         if let Some(group_bounds) = hover_group_bounds {
                             let hovered = group_bounds.contains(&cx.mouse_position());
                             cx.on_mouse_event(move |event: &MouseMoveEvent, phase, cx| {
-                                if phase == DispatchPhase::Capture {
-                                    if group_bounds.contains(&event.position) != hovered {
-                                        cx.notify();
-                                    }
+                                if phase == DispatchPhase::Capture
+                                    && group_bounds.contains(&event.position) != hovered
+                                {
+                                    cx.notify();
                                 }
                             });
                         }
@@ -1203,10 +1200,10 @@ impl Interactivity {
                             let bounds = bounds.intersect(&cx.content_mask().bounds);
                             let hovered = bounds.contains(&cx.mouse_position());
                             cx.on_mouse_event(move |event: &MouseMoveEvent, phase, cx| {
-                                if phase == DispatchPhase::Capture {
-                                    if bounds.contains(&event.position) != hovered {
-                                        cx.notify();
-                                    }
+                                if phase == DispatchPhase::Capture
+                                    && bounds.contains(&event.position) != hovered
+                                {
+                                    cx.notify();
                                 }
                             });
                         }
@@ -1366,7 +1363,7 @@ impl Interactivity {
                                     && !cx.has_active_drag();
                                 let mut was_hovered = was_hovered.borrow_mut();
 
-                                if is_hovered != was_hovered.clone() {
+                                if is_hovered != *was_hovered {
                                     *was_hovered = is_hovered;
                                     drop(was_hovered);
 
@@ -1693,46 +1690,6 @@ impl Interactivity {
     }
 }
 
-impl Default for Interactivity {
-    fn default() -> Self {
-        Self {
-            element_id: None,
-            key_context: None,
-            focusable: false,
-            tracked_focus_handle: None,
-            scroll_handle: None,
-            // scroll_offset: Point::default(),
-            group: None,
-            base_style: Box::new(StyleRefinement::default()),
-            focus_style: None,
-            in_focus_style: None,
-            hover_style: None,
-            group_hover_style: None,
-            active_style: None,
-            group_active_style: None,
-            drag_over_styles: Vec::new(),
-            group_drag_over_styles: Vec::new(),
-            mouse_down_listeners: Vec::new(),
-            mouse_up_listeners: Vec::new(),
-            mouse_move_listeners: Vec::new(),
-            scroll_wheel_listeners: Vec::new(),
-            key_down_listeners: Vec::new(),
-            key_up_listeners: Vec::new(),
-            action_listeners: Vec::new(),
-            drop_listeners: Vec::new(),
-            can_drop_predicate: None,
-            click_listeners: Vec::new(),
-            drag_listener: None,
-            hover_listener: None,
-            tooltip_builder: None,
-            block_mouse: false,
-
-            #[cfg(debug_assertions)]
-            location: None,
-        }
-    }
-}
-
 #[derive(Default)]
 pub struct InteractiveElementState {
     pub focus_handle: Option<FocusHandle>,
@@ -1942,13 +1899,19 @@ struct ScrollHandleState {
 #[derive(Clone)]
 pub struct ScrollHandle(Rc<RefCell<ScrollHandleState>>);
 
+impl Default for ScrollHandle {
+    fn default() -> Self {
+        Self::new()
+    }
+}
+
 impl ScrollHandle {
     pub fn new() -> Self {
         Self(Rc::default())
     }
 
     pub fn offset(&self) -> Point<Pixels> {
-        self.0.borrow().offset.borrow().clone()
+        *self.0.borrow().offset.borrow()
     }
 
     pub fn top_item(&self) -> usize {

crates/gpui2/src/elements/overlay.rs 🔗

@@ -71,9 +71,11 @@ impl Element for Overlay {
             .map(|child| child.request_layout(cx))
             .collect::<SmallVec<_>>();
 
-        let mut overlay_style = Style::default();
-        overlay_style.position = Position::Absolute;
-        overlay_style.display = Display::Flex;
+        let overlay_style = Style {
+            position: Position::Absolute,
+            display: Display::Flex,
+            ..Style::default()
+        };
 
         let layout_id = cx.request_layout(&overlay_style, child_layout_ids.iter().copied());
 
@@ -147,7 +149,9 @@ impl Element for Overlay {
             desired.origin.y = limits.origin.y;
         }
 
-        cx.with_element_offset(desired.origin - bounds.origin, |cx| {
+        let mut offset = cx.element_offset() + desired.origin - bounds.origin;
+        offset = point(offset.x.round(), offset.y.round());
+        cx.with_absolute_element_offset(offset, |cx| {
             cx.break_content_mask(|cx| {
                 for child in &mut self.children {
                     child.paint(cx);

crates/gpui2/src/elements/text.rs 🔗

@@ -171,7 +171,6 @@ impl TextState {
         let line_height = text_style
             .line_height
             .to_pixels(font_size.into(), cx.rem_size());
-        let text = SharedString::from(text);
 
         let runs = if let Some(runs) = runs {
             runs

crates/gpui2/src/elements/uniform_list.rs 🔗

@@ -41,7 +41,7 @@ where
         item_to_measure_index: 0,
         render_items: Box::new(render_range),
         interactivity: Interactivity {
-            element_id: Some(id.into()),
+            element_id: Some(id),
             base_style: Box::new(base_style),
 
             #[cfg(debug_assertions)]

crates/gpui2/src/executor.rs 🔗

@@ -80,6 +80,12 @@ impl<T> Future for Task<T> {
 #[derive(Clone, Copy, PartialEq, Eq, Hash, Debug)]
 pub struct TaskLabel(NonZeroUsize);
 
+impl Default for TaskLabel {
+    fn default() -> Self {
+        Self::new()
+    }
+}
+
 impl TaskLabel {
     pub fn new() -> Self {
         static NEXT_TASK_LABEL: AtomicUsize = AtomicUsize::new(1);

crates/gpui2/src/geometry.rs 🔗

@@ -1601,13 +1601,13 @@ impl Edges<Pixels> {
     }
 }
 
-impl Into<Edges<Pixels>> for f32 {
-    fn into(self) -> Edges<Pixels> {
+impl From<f32> for Edges<Pixels> {
+    fn from(val: f32) -> Self {
         Edges {
-            top: self.into(),
-            right: self.into(),
-            bottom: self.into(),
-            left: self.into(),
+            top: val.into(),
+            right: val.into(),
+            bottom: val.into(),
+            left: val.into(),
         }
     }
 }
@@ -1840,24 +1840,24 @@ where
 
 impl<T> Copy for Corners<T> where T: Copy + Clone + Default + Debug {}
 
-impl Into<Corners<Pixels>> for f32 {
-    fn into(self) -> Corners<Pixels> {
+impl From<f32> for Corners<Pixels> {
+    fn from(val: f32) -> Self {
         Corners {
-            top_left: self.into(),
-            top_right: self.into(),
-            bottom_right: self.into(),
-            bottom_left: self.into(),
+            top_left: val.into(),
+            top_right: val.into(),
+            bottom_right: val.into(),
+            bottom_left: val.into(),
         }
     }
 }
 
-impl Into<Corners<Pixels>> for Pixels {
-    fn into(self) -> Corners<Pixels> {
+impl From<Pixels> for Corners<Pixels> {
+    fn from(val: Pixels) -> Self {
         Corners {
-            top_left: self,
-            top_right: self,
-            bottom_right: self,
-            bottom_left: self,
+            top_left: val,
+            top_right: val,
+            bottom_right: val,
+            bottom_left: val,
         }
     }
 }
@@ -1896,7 +1896,6 @@ impl Into<Corners<Pixels>> for Pixels {
     Div,
     DivAssign,
     PartialEq,
-    PartialOrd,
     Serialize,
     Deserialize,
 )]
@@ -2039,9 +2038,15 @@ impl Mul<Pixels> for Pixels {
 
 impl Eq for Pixels {}
 
+impl PartialOrd for Pixels {
+    fn partial_cmp(&self, other: &Self) -> Option<cmp::Ordering> {
+        self.0.partial_cmp(&other.0)
+    }
+}
+
 impl Ord for Pixels {
     fn cmp(&self, other: &Self) -> cmp::Ordering {
-        self.0.partial_cmp(&other.0).unwrap()
+        self.partial_cmp(other).unwrap()
     }
 }
 
@@ -2517,12 +2522,12 @@ impl Debug for Length {
 ///
 /// A `DefiniteLength` representing the relative length as a fraction of the parent's size.
 pub fn relative(fraction: f32) -> DefiniteLength {
-    DefiniteLength::Fraction(fraction).into()
+    DefiniteLength::Fraction(fraction)
 }
 
 /// Returns the Golden Ratio, i.e. `~(1.0 + sqrt(5.0)) / 2.0`.
 pub fn phi() -> DefiniteLength {
-    relative(1.61803398875)
+    relative(1.618_034)
 }
 
 /// Constructs a `Rems` value representing a length in rems.

crates/gpui2/src/interactive.rs 🔗

@@ -258,7 +258,7 @@ impl InputEvent {
         }
     }
 
-    pub fn mouse_event<'a>(&'a self) -> Option<&'a dyn Any> {
+    pub fn mouse_event(&self) -> Option<&dyn Any> {
         match self {
             InputEvent::KeyDown { .. } => None,
             InputEvent::KeyUp { .. } => None,
@@ -272,7 +272,7 @@ impl InputEvent {
         }
     }
 
-    pub fn keyboard_event<'a>(&'a self) -> Option<&'a dyn Any> {
+    pub fn keyboard_event(&self) -> Option<&dyn Any> {
         match self {
             InputEvent::KeyDown(event) => Some(event),
             InputEvent::KeyUp(event) => Some(event),

crates/gpui2/src/keymap/binding.rs 🔗

@@ -54,7 +54,7 @@ impl KeyBinding {
         pending_keystrokes: &[Keystroke],
         contexts: &[KeyContext],
     ) -> KeyMatch {
-        if self.keystrokes.as_ref().starts_with(&pending_keystrokes)
+        if self.keystrokes.as_ref().starts_with(pending_keystrokes)
             && self.matches_context(contexts)
         {
             // If the binding is completed, push it onto the matches list

crates/gpui2/src/keymap/context.rs 🔗

@@ -24,7 +24,7 @@ impl KeyContext {
     pub fn parse(source: &str) -> Result<Self> {
         let mut context = Self::default();
         let source = skip_whitespace(source);
-        Self::parse_expr(&source, &mut context)?;
+        Self::parse_expr(source, &mut context)?;
         Ok(context)
     }
 
@@ -220,7 +220,7 @@ impl KeyBindingContextPredicate {
             }
             '!' => {
                 let source = skip_whitespace(&source[1..]);
-                let (predicate, source) = Self::parse_expr(&source, PRECEDENCE_NOT)?;
+                let (predicate, source) = Self::parse_expr(source, PRECEDENCE_NOT)?;
                 Ok((KeyBindingContextPredicate::Not(Box::new(predicate)), source))
             }
             _ if is_identifier_char(next) => {

crates/gpui2/src/platform/mac.rs 🔗

@@ -1,5 +1,5 @@
-///! Macos screen have a y axis that goings up from the bottom of the screen and
-///! an origin at the bottom left of the main display.
+//! Macos screen have a y axis that goings up from the bottom of the screen and
+//! an origin at the bottom left of the main display.
 mod dispatcher;
 mod display;
 mod display_linker;

crates/gpui2/src/platform/mac/dispatcher.rs 🔗

@@ -23,6 +23,12 @@ pub struct MacDispatcher {
     parker: Arc<Mutex<Parker>>,
 }
 
+impl Default for MacDispatcher {
+    fn default() -> Self {
+        Self::new()
+    }
+}
+
 impl MacDispatcher {
     pub fn new() -> Self {
         MacDispatcher {

crates/gpui2/src/platform/mac/display.rs 🔗

@@ -41,7 +41,7 @@ impl MacDisplay {
                 CGGetActiveDisplayList(display_count, displays.as_mut_ptr(), &mut display_count);
                 displays.set_len(display_count as usize);
 
-                displays.into_iter().map(|display| MacDisplay(display))
+                displays.into_iter().map(MacDisplay)
             } else {
                 panic!("Failed to get active display list");
             }

crates/gpui2/src/platform/mac/metal_atlas.rs 🔗

@@ -64,7 +64,7 @@ impl PlatformAtlas for MetalAtlas {
     ) -> Result<AtlasTile> {
         let mut lock = self.0.lock();
         if let Some(tile) = lock.tiles_by_key.get(key) {
-            return Ok(tile.clone());
+            Ok(tile.clone())
         } else {
             let (size, bytes) = build()?;
             let tile = lock.allocate(size, key.texture_kind());
@@ -203,7 +203,7 @@ impl MetalAtlasTexture {
             region,
             0,
             bytes.as_ptr() as *const _,
-            u32::from(bounds.size.width.to_bytes(self.bytes_per_pixel())) as u64,
+            bounds.size.width.to_bytes(self.bytes_per_pixel()) as u64,
         );
     }
 

crates/gpui2/src/platform/mac/metal_renderer.rs 🔗

@@ -66,12 +66,10 @@ impl MetalRenderer {
             .expect("error building metal library");
 
         fn to_float2_bits(point: crate::PointF) -> u64 {
-            unsafe {
-                let mut output = mem::transmute::<_, u32>(point.y.to_bits()) as u64;
-                output <<= 32;
-                output |= mem::transmute::<_, u32>(point.x.to_bits()) as u64;
-                output
-            }
+            let mut output = point.y.to_bits() as u64;
+            output <<= 32;
+            output |= point.x.to_bits() as u64;
+            output
         }
 
         let unit_vertices = [
@@ -174,12 +172,12 @@ impl MetalRenderer {
             unit_vertices,
             instances,
             sprite_atlas,
-            core_video_texture_cache: CVMetalTextureCache::new(device.as_ptr()).unwrap(),
+            core_video_texture_cache: unsafe { CVMetalTextureCache::new(device.as_ptr()).unwrap() },
         }
     }
 
     pub fn layer(&self) -> &metal::MetalLayerRef {
-        &*self.layer
+        &self.layer
     }
 
     pub fn sprite_atlas(&self) -> &Arc<MetalAtlas> {
@@ -206,7 +204,7 @@ impl MetalRenderer {
         let command_buffer = command_queue.new_command_buffer();
         let mut instance_offset = 0;
 
-        let path_tiles = self.rasterize_paths(scene.paths(), &mut instance_offset, &command_buffer);
+        let path_tiles = self.rasterize_paths(scene.paths(), &mut instance_offset, command_buffer);
 
         let render_pass_descriptor = metal::RenderPassDescriptor::new();
         let color_attachment = render_pass_descriptor
@@ -429,7 +427,7 @@ impl MetalRenderer {
             &viewport_size as *const Size<DevicePixels> as *const _,
         );
 
-        let shadow_bytes_len = mem::size_of::<Shadow>() * shadows.len();
+        let shadow_bytes_len = std::mem::size_of_val(shadows);
         let buffer_contents = unsafe { (self.instances.contents() as *mut u8).add(*offset) };
         unsafe {
             ptr::copy_nonoverlapping(
@@ -489,7 +487,7 @@ impl MetalRenderer {
             &viewport_size as *const Size<DevicePixels> as *const _,
         );
 
-        let quad_bytes_len = mem::size_of::<Quad>() * quads.len();
+        let quad_bytes_len = std::mem::size_of_val(quads);
         let buffer_contents = unsafe { (self.instances.contents() as *mut u8).add(*offset) };
         unsafe {
             ptr::copy_nonoverlapping(quads.as_ptr() as *const u8, buffer_contents, quad_bytes_len);
@@ -537,7 +535,7 @@ impl MetalRenderer {
         let mut prev_texture_id = None;
         let mut sprites = SmallVec::<[_; 1]>::new();
         let mut paths_and_tiles = paths
-            .into_iter()
+            .iter()
             .map(|path| (path, tiles_by_path_id.get(&path.id).unwrap()))
             .peekable();
 
@@ -652,7 +650,7 @@ impl MetalRenderer {
             &viewport_size as *const Size<DevicePixels> as *const _,
         );
 
-        let quad_bytes_len = mem::size_of::<Underline>() * underlines.len();
+        let quad_bytes_len = std::mem::size_of_val(underlines);
         let buffer_contents = unsafe { (self.instances.contents() as *mut u8).add(*offset) };
         unsafe {
             ptr::copy_nonoverlapping(
@@ -723,7 +721,7 @@ impl MetalRenderer {
         );
         command_encoder.set_fragment_texture(SpriteInputIndex::AtlasTexture as u64, Some(&texture));
 
-        let sprite_bytes_len = mem::size_of::<MonochromeSprite>() * sprites.len();
+        let sprite_bytes_len = std::mem::size_of_val(sprites);
         let buffer_contents = unsafe { (self.instances.contents() as *mut u8).add(*offset) };
         unsafe {
             ptr::copy_nonoverlapping(
@@ -794,7 +792,7 @@ impl MetalRenderer {
         );
         command_encoder.set_fragment_texture(SpriteInputIndex::AtlasTexture as u64, Some(&texture));
 
-        let sprite_bytes_len = mem::size_of::<PolychromeSprite>() * sprites.len();
+        let sprite_bytes_len = std::mem::size_of_val(sprites);
         let buffer_contents = unsafe { (self.instances.contents() as *mut u8).add(*offset) };
         unsafe {
             ptr::copy_nonoverlapping(
@@ -849,28 +847,30 @@ impl MetalRenderer {
                 media::core_video::kCVPixelFormatType_420YpCbCr8BiPlanarFullRange
             );
 
-            let y_texture = self
-                .core_video_texture_cache
-                .create_texture_from_image(
-                    surface.image_buffer.as_concrete_TypeRef(),
-                    ptr::null(),
-                    MTLPixelFormat::R8Unorm,
-                    surface.image_buffer.plane_width(0),
-                    surface.image_buffer.plane_height(0),
-                    0,
-                )
-                .unwrap();
-            let cb_cr_texture = self
-                .core_video_texture_cache
-                .create_texture_from_image(
-                    surface.image_buffer.as_concrete_TypeRef(),
-                    ptr::null(),
-                    MTLPixelFormat::RG8Unorm,
-                    surface.image_buffer.plane_width(1),
-                    surface.image_buffer.plane_height(1),
-                    1,
-                )
-                .unwrap();
+            let y_texture = unsafe {
+                self.core_video_texture_cache
+                    .create_texture_from_image(
+                        surface.image_buffer.as_concrete_TypeRef(),
+                        ptr::null(),
+                        MTLPixelFormat::R8Unorm,
+                        surface.image_buffer.plane_width(0),
+                        surface.image_buffer.plane_height(0),
+                        0,
+                    )
+                    .unwrap()
+            };
+            let cb_cr_texture = unsafe {
+                self.core_video_texture_cache
+                    .create_texture_from_image(
+                        surface.image_buffer.as_concrete_TypeRef(),
+                        ptr::null(),
+                        MTLPixelFormat::RG8Unorm,
+                        surface.image_buffer.plane_width(1),
+                        surface.image_buffer.plane_height(1),
+                        1,
+                    )
+                    .unwrap()
+            };
 
             align_offset(offset);
             let next_offset = *offset + mem::size_of::<Surface>();

crates/gpui2/src/platform/mac/platform.rs 🔗

@@ -166,6 +166,12 @@ pub struct MacPlatformState {
     finish_launching: Option<Box<dyn FnOnce()>>,
 }
 
+impl Default for MacPlatform {
+    fn default() -> Self {
+        Self::new()
+    }
+}
+
 impl MacPlatform {
     pub fn new() -> Self {
         let dispatcher = Arc::new(MacDispatcher::new());
@@ -219,7 +225,12 @@ impl MacPlatform {
             menu.setDelegate_(delegate);
 
             for item_config in menu_config.items {
-                menu.addItem_(self.create_menu_item(item_config, delegate, actions, keymap));
+                menu.addItem_(Self::create_menu_item(
+                    item_config,
+                    delegate,
+                    actions,
+                    keymap,
+                ));
             }
 
             let menu_item = NSMenuItem::new(nil).autorelease();
@@ -236,7 +247,6 @@ impl MacPlatform {
     }
 
     unsafe fn create_menu_item(
-        &self,
         item: MenuItem,
         delegate: id,
         actions: &mut Vec<Box<dyn Action>>,
@@ -342,7 +352,7 @@ impl MacPlatform {
                 let submenu = NSMenu::new(nil).autorelease();
                 submenu.setDelegate_(delegate);
                 for item in items {
-                    submenu.addItem_(self.create_menu_item(item, delegate, actions, keymap));
+                    submenu.addItem_(Self::create_menu_item(item, delegate, actions, keymap));
                 }
                 item.setSubmenu_(submenu);
                 item.setTitle_(ns_string(name));
@@ -475,7 +485,6 @@ impl Platform for MacPlatform {
 
     fn displays(&self) -> Vec<Rc<dyn PlatformDisplay>> {
         MacDisplay::all()
-            .into_iter()
             .map(|screen| Rc::new(screen) as Rc<_>)
             .collect()
     }
@@ -1035,7 +1044,6 @@ extern "C" fn will_terminate(this: &mut Object, _: Sel, _: id) {
 extern "C" fn open_urls(this: &mut Object, _: Sel, _: id, urls: id) {
     let urls = unsafe {
         (0..urls.count())
-            .into_iter()
             .filter_map(|i| {
                 let url = urls.objectAtIndex(i);
                 match CStr::from_ptr(url.absoluteString().UTF8String() as *mut c_char).to_str() {

crates/gpui2/src/platform/mac/text_system.rs 🔗

@@ -335,7 +335,7 @@ impl MacTextSystemState {
                 }
             }
 
-            Ok((bitmap_size.into(), bytes))
+            Ok((bitmap_size, bytes))
         }
     }
 
@@ -343,10 +343,10 @@ impl MacTextSystemState {
         // Construct the attributed string, converting UTF8 ranges to UTF16 ranges.
         let mut string = CFMutableAttributedString::new();
         {
-            string.replace_str(&CFString::new(text.as_ref()), CFRange::init(0, 0));
+            string.replace_str(&CFString::new(text), CFRange::init(0, 0));
             let utf16_line_len = string.char_len() as usize;
 
-            let mut ix_converter = StringIndexConverter::new(text.as_ref());
+            let mut ix_converter = StringIndexConverter::new(text);
             for run in font_runs {
                 let utf8_end = ix_converter.utf8_ix + run.len;
                 let utf16_start = ix_converter.utf16_ix;
@@ -390,7 +390,7 @@ impl MacTextSystemState {
             };
             let font_id = self.id_for_native_font(font);
 
-            let mut ix_converter = StringIndexConverter::new(text.as_ref());
+            let mut ix_converter = StringIndexConverter::new(text);
             let mut glyphs = SmallVec::new();
             for ((glyph_id, position), glyph_utf16_ix) in run
                 .glyphs()
@@ -453,7 +453,7 @@ impl MacTextSystemState {
                 if ix_converter.utf8_ix >= text.len() {
                     break;
                 }
-                break_indices.push(ix_converter.utf8_ix as usize);
+                break_indices.push(ix_converter.utf8_ix);
             }
             break_indices
         }

crates/gpui2/src/platform/mac/window.rs 🔗

@@ -487,7 +487,7 @@ impl MacWindow {
             let display = options
                 .display_id
                 .and_then(|display_id| MacDisplay::all().find(|display| display.id() == display_id))
-                .unwrap_or_else(|| MacDisplay::primary());
+                .unwrap_or_else(MacDisplay::primary);
 
             let mut target_screen = nil;
             let screens = NSScreen::screens(nil);
@@ -701,7 +701,7 @@ impl PlatformWindow for MacWindow {
     }
 
     fn content_size(&self) -> Size<Pixels> {
-        self.0.as_ref().lock().content_size().into()
+        self.0.as_ref().lock().content_size()
     }
 
     fn scale_factor(&self) -> f32 {
@@ -1338,12 +1338,10 @@ extern "C" fn window_did_change_key_status(this: &Object, selector: Sel, _: id)
     // The following code detects the spurious event and invokes `resignKeyWindow`:
     // in theory, we're not supposed to invoke this method manually but it balances out
     // the spurious `becomeKeyWindow` event and helps us work around that bug.
-    if selector == sel!(windowDidBecomeKey:) {
-        if !is_active {
-            unsafe {
-                let _: () = msg_send![lock.native_window, resignKeyWindow];
-                return;
-            }
+    if selector == sel!(windowDidBecomeKey:) && !is_active {
+        unsafe {
+            let _: () = msg_send![lock.native_window, resignKeyWindow];
+            return;
         }
     }
 
@@ -1664,11 +1662,11 @@ extern "C" fn accepts_first_mouse(this: &Object, _: Sel, _: id) -> BOOL {
     unsafe {
         let state = get_window_state(this);
         let lock = state.as_ref().lock();
-        return if lock.kind == WindowKind::PopUp {
+        if lock.kind == WindowKind::PopUp {
             YES
         } else {
             NO
-        };
+        }
     }
 }
 

crates/gpui2/src/scene.rs 🔗

@@ -14,6 +14,7 @@ pub type LayerId = u32;
 
 pub type DrawOrder = u32;
 
+#[derive(Default)]
 pub(crate) struct SceneBuilder {
     last_order: Option<(StackingOrder, LayerId)>,
     layers_by_order: BTreeMap<StackingOrder, LayerId>,
@@ -26,22 +27,6 @@ pub(crate) struct SceneBuilder {
     surfaces: Vec<Surface>,
 }
 
-impl Default for SceneBuilder {
-    fn default() -> Self {
-        SceneBuilder {
-            last_order: None,
-            layers_by_order: BTreeMap::new(),
-            shadows: Vec::new(),
-            quads: Vec::new(),
-            paths: Vec::new(),
-            underlines: Vec::new(),
-            monochrome_sprites: Vec::new(),
-            polychrome_sprites: Vec::new(),
-            surfaces: Vec::new(),
-        }
-    }
-}
-
 impl SceneBuilder {
     pub fn build(&mut self) -> Scene {
         let mut orders = vec![0; self.layers_by_order.len()];

crates/gpui2/src/shared_string.rs 🔗

@@ -60,9 +60,9 @@ impl<'a> PartialEq<&'a str> for SharedString {
     }
 }
 
-impl Into<Arc<str>> for SharedString {
-    fn into(self) -> Arc<str> {
-        match self.0 {
+impl From<SharedString> for Arc<str> {
+    fn from(val: SharedString) -> Self {
+        match val.0 {
             ArcCow::Borrowed(borrowed) => Arc::from(borrowed),
             ArcCow::Owned(owned) => owned.clone(),
         }
@@ -75,9 +75,9 @@ impl<T: Into<ArcCow<'static, str>>> From<T> for SharedString {
     }
 }
 
-impl Into<String> for SharedString {
-    fn into(self) -> String {
-        self.0.to_string()
+impl From<SharedString> for String {
+    fn from(val: SharedString) -> Self {
+        val.0.to_string()
     }
 }
 

crates/gpui2/src/style.rs 🔗

@@ -210,7 +210,7 @@ impl TextStyle {
     pub fn font(&self) -> Font {
         Font {
             family: self.font_family.clone(),
-            features: self.font_features.clone(),
+            features: self.font_features,
             weight: self.font_weight,
             style: self.font_style,
         }
@@ -232,7 +232,7 @@ impl TextStyle {
             },
             color: self.color,
             background_color: self.background_color,
-            underline: self.underline.clone(),
+            underline: self.underline,
         }
     }
 }
@@ -386,12 +386,14 @@ impl Style {
         let background_color = self.background.as_ref().and_then(Fill::color);
         if background_color.map_or(false, |color| !color.is_transparent()) {
             cx.with_z_index(1, |cx| {
+                let mut border_color = background_color.unwrap_or_default();
+                border_color.a = 0.;
                 cx.paint_quad(quad(
                     bounds,
                     self.corner_radii.to_pixels(bounds.size, rem_size),
                     background_color.unwrap_or_default(),
                     Edges::default(),
-                    Hsla::transparent_black(),
+                    border_color,
                 ));
             });
         }
@@ -426,10 +428,12 @@ impl Style {
                     bottom_bounds.upper_right(),
                 );
 
+                let mut background = self.border_color.unwrap_or_default();
+                background.a = 0.;
                 let quad = quad(
                     bounds,
                     corner_radii,
-                    Hsla::transparent_black(),
+                    background,
                     border_widths,
                     self.border_color.unwrap_or_default(),
                 );
@@ -570,7 +574,7 @@ impl From<&TextStyle> for HighlightStyle {
             font_weight: Some(other.font_weight),
             font_style: Some(other.font_style),
             background_color: other.background_color,
-            underline: other.underline.clone(),
+            underline: other.underline,
             fade_out: None,
         }
     }

crates/gpui2/src/subscription.rs 🔗

@@ -53,7 +53,7 @@ where
         lock.subscribers
             .entry(emitter_key.clone())
             .or_default()
-            .get_or_insert_with(|| Default::default())
+            .get_or_insert_with(Default::default)
             .insert(
                 subscriber_id,
                 Subscriber {
@@ -90,7 +90,7 @@ where
     }
 
     pub fn remove(&self, emitter: &EmitterKey) -> impl IntoIterator<Item = Callback> {
-        let subscribers = self.0.lock().subscribers.remove(&emitter);
+        let subscribers = self.0.lock().subscribers.remove(emitter);
         subscribers
             .unwrap_or_default()
             .map(|s| s.into_values())
@@ -131,7 +131,7 @@ where
         let mut lock = self.0.lock();
 
         // Add any new subscribers that were added while invoking the callback.
-        if let Some(Some(new_subscribers)) = lock.subscribers.remove(&emitter) {
+        if let Some(Some(new_subscribers)) = lock.subscribers.remove(emitter) {
             subscribers.extend(new_subscribers);
         }
 

crates/gpui2/src/taffy.rs 🔗

@@ -29,8 +29,7 @@ pub struct TaffyLayoutEngine {
     >,
 }
 
-static EXPECT_MESSAGE: &'static str =
-    "we should avoid taffy layout errors by construction if possible";
+static EXPECT_MESSAGE: &str = "we should avoid taffy layout errors by construction if possible";
 
 impl TaffyLayoutEngine {
     pub fn new() -> Self {
@@ -246,7 +245,7 @@ impl ToTaffy<taffy::style::Style> for Style {
     fn to_taffy(&self, rem_size: Pixels) -> taffy::style::Style {
         taffy::style::Style {
             display: self.display,
-            overflow: self.overflow.clone().into(),
+            overflow: self.overflow.into(),
             scrollbar_width: self.scrollbar_width,
             position: self.position,
             inset: self.inset.to_taffy(rem_size),
@@ -378,14 +377,14 @@ where
     }
 }
 
-impl<T, T2> Into<TaffyPoint<T2>> for Point<T>
+impl<T, T2> From<Point<T>> for TaffyPoint<T2>
 where
     T: Into<T2> + Clone + Default + Debug,
 {
-    fn into(self) -> TaffyPoint<T2> {
+    fn from(val: Point<T>) -> Self {
         TaffyPoint {
-            x: self.x.into(),
-            y: self.y.into(),
+            x: val.x.into(),
+            y: val.y.into(),
         }
     }
 }
@@ -396,8 +395,8 @@ where
 {
     fn to_taffy(&self, rem_size: Pixels) -> TaffySize<U> {
         TaffySize {
-            width: self.width.to_taffy(rem_size).into(),
-            height: self.height.to_taffy(rem_size).into(),
+            width: self.width.to_taffy(rem_size),
+            height: self.height.to_taffy(rem_size),
         }
     }
 }
@@ -408,10 +407,10 @@ where
 {
     fn to_taffy(&self, rem_size: Pixels) -> TaffyRect<U> {
         TaffyRect {
-            top: self.top.to_taffy(rem_size).into(),
-            right: self.right.to_taffy(rem_size).into(),
-            bottom: self.bottom.to_taffy(rem_size).into(),
-            left: self.left.to_taffy(rem_size).into(),
+            top: self.top.to_taffy(rem_size),
+            right: self.right.to_taffy(rem_size),
+            bottom: self.bottom.to_taffy(rem_size),
+            left: self.left.to_taffy(rem_size),
         }
     }
 }

crates/gpui2/src/text_system.rs 🔗

@@ -106,7 +106,7 @@ impl TextSystem {
     }
 
     pub fn units_per_em(&self, font_id: FontId) -> u32 {
-        self.read_metrics(font_id, |metrics| metrics.units_per_em as u32)
+        self.read_metrics(font_id, |metrics| metrics.units_per_em)
     }
 
     pub fn cap_height(&self, font_id: FontId, font_size: Pixels) -> Pixels {
@@ -174,7 +174,7 @@ impl TextSystem {
 
         let layout = self
             .line_layout_cache
-            .layout_line(&text, font_size, &font_runs);
+            .layout_line(text, font_size, &font_runs);
 
         font_runs.clear();
         self.font_runs_pool.lock().push(font_runs);
@@ -208,7 +208,7 @@ impl TextSystem {
                 len: run.len as u32,
                 color: run.color,
                 background_color: run.background_color,
-                underline: run.underline.clone(),
+                underline: run.underline,
             });
         }
 
@@ -268,7 +268,7 @@ impl TextSystem {
                         len: run_len_within_line as u32,
                         color: run.color,
                         background_color: run.background_color,
-                        underline: run.underline.clone(),
+                        underline: run.underline,
                     });
                 }
 
@@ -287,7 +287,7 @@ impl TextSystem {
             lines.push(WrappedLine {
                 layout,
                 decoration_runs,
-                text: SharedString::from(line_text),
+                text: line_text,
             });
 
             // Skip `\n` character.
@@ -338,7 +338,7 @@ impl TextSystem {
     pub fn raster_bounds(&self, params: &RenderGlyphParams) -> Result<Bounds<DevicePixels>> {
         let raster_bounds = self.raster_bounds.upgradable_read();
         if let Some(bounds) = raster_bounds.get(params) {
-            Ok(bounds.clone())
+            Ok(*bounds)
         } else {
             let mut raster_bounds = RwLockUpgradableReadGuard::upgrade(raster_bounds);
             let bounds = self.platform_text_system.glyph_raster_bounds(params)?;
@@ -374,7 +374,7 @@ impl Drop for LineWrapperHandle {
         let wrapper = self.wrapper.take().unwrap();
         state
             .get_mut(&FontIdWithSize {
-                font_id: wrapper.font_id.clone(),
+                font_id: wrapper.font_id,
                 font_size: wrapper.font_size,
             })
             .unwrap()
@@ -438,9 +438,10 @@ impl FontWeight {
 }
 
 /// Allows italic or oblique faces to be selected.
-#[derive(Clone, Copy, Eq, PartialEq, Debug, Hash)]
+#[derive(Clone, Copy, Eq, PartialEq, Debug, Hash, Default)]
 pub enum FontStyle {
     /// A face that is neither italic not obliqued.
+    #[default]
     Normal,
     /// A form that is generally cursive in nature.
     Italic,
@@ -448,12 +449,6 @@ pub enum FontStyle {
     Oblique,
 }
 
-impl Default for FontStyle {
-    fn default() -> FontStyle {
-        FontStyle::Normal
-    }
-}
-
 impl Display for FontStyle {
     fn fmt(&self, f: &mut Formatter) -> fmt::Result {
         Debug::fmt(self, f)

crates/gpui2/src/text_system/line_wrapper.rs 🔗

@@ -97,14 +97,12 @@ impl LineWrapper {
                 self.cached_ascii_char_widths[c as usize] = Some(width);
                 width
             }
+        } else if let Some(cached_width) = self.cached_other_char_widths.get(&c) {
+            *cached_width
         } else {
-            if let Some(cached_width) = self.cached_other_char_widths.get(&c) {
-                *cached_width
-            } else {
-                let width = self.compute_width_for_char(c);
-                self.cached_other_char_widths.insert(c, width);
-                width
-            }
+            let width = self.compute_width_for_char(c);
+            self.cached_other_char_widths.insert(c, width);
+            width
         }
     }
 

crates/gpui2/src/view.rs 🔗

@@ -221,7 +221,7 @@ impl<V: Render> From<View<V>> for AnyView {
         AnyView {
             model: value.model.into_any(),
             layout: any_view::layout::<V>,
-            paint: any_view::paint::<V>,
+            paint: any_view::paint,
         }
     }
 }
@@ -243,7 +243,7 @@ impl Element for AnyView {
             state.is_some(),
             "state is None. Did you include an AnyView twice in the tree?"
         );
-        (self.paint)(&self, state.as_mut().unwrap(), cx)
+        (self.paint)(self, state.as_mut().unwrap(), cx)
     }
 }
 
@@ -293,7 +293,7 @@ impl<V: 'static + Render> From<WeakView<V>> for AnyWeakView {
         Self {
             model: view.model.into(),
             layout: any_view::layout::<V>,
-            paint: any_view::paint::<V>,
+            paint: any_view::paint,
         }
     }
 }
@@ -325,11 +325,7 @@ mod any_view {
         (layout_id, element)
     }
 
-    pub(crate) fn paint<V: 'static + Render>(
-        _view: &AnyView,
-        element: &mut AnyElement,
-        cx: &mut WindowContext,
-    ) {
+    pub(crate) fn paint(_view: &AnyView, element: &mut AnyElement, cx: &mut WindowContext) {
         element.paint(cx);
     }
 }

crates/gpui2/src/window.rs 🔗

@@ -26,6 +26,7 @@ use std::{
     any::{Any, TypeId},
     borrow::{Borrow, BorrowMut, Cow},
     cell::RefCell,
+    collections::hash_map::Entry,
     fmt::Debug,
     future::Future,
     hash::{Hash, Hasher},
@@ -403,7 +404,7 @@ impl Window {
             element_id_stack: GlobalElementId::default(),
             rendered_frame: Frame::new(DispatchTree::new(cx.keymap.clone(), cx.actions.clone())),
             next_frame: Frame::new(DispatchTree::new(cx.keymap.clone(), cx.actions.clone())),
-            frame_arena: Arena::new(1 * 1024 * 1024),
+            frame_arena: Arena::new(1024 * 1024),
             focus_handles: Arc::new(RwLock::new(SlotMap::with_key())),
             focus_listeners: SubscriberSet::new(),
             blur_listeners: SubscriberSet::new(),
@@ -637,7 +638,8 @@ impl<'a> WindowContext<'a> {
         let handle = self.window.handle;
         let display_id = self.window.display_id;
 
-        if !self.frame_consumers.contains_key(&display_id) {
+        let mut frame_consumers = std::mem::take(&mut self.app.frame_consumers);
+        if let Entry::Vacant(e) = frame_consumers.entry(display_id) {
             let (tx, mut rx) = mpsc::unbounded::<()>();
             self.platform.set_display_link_output_callback(
                 display_id,
@@ -669,8 +671,10 @@ impl<'a> WindowContext<'a> {
                     .ok();
                 }
             });
-            self.frame_consumers.insert(display_id, consumer_task);
+            e.insert(consumer_task);
         }
+        debug_assert!(self.app.frame_consumers.is_empty());
+        self.app.frame_consumers = frame_consumers;
 
         if self.next_frame_callbacks.is_empty() {
             self.platform.start_display_link(display_id);
@@ -718,7 +722,7 @@ impl<'a> WindowContext<'a> {
         children: impl IntoIterator<Item = LayoutId>,
     ) -> LayoutId {
         self.app.layout_id_buffer.clear();
-        self.app.layout_id_buffer.extend(children.into_iter());
+        self.app.layout_id_buffer.extend(children);
         let rem_size = self.rem_size();
 
         self.window.layout_engine.as_mut().unwrap().request_layout(
@@ -844,7 +848,7 @@ impl<'a> WindowContext<'a> {
         let text_style = self.text_style();
         text_style
             .line_height
-            .to_pixels(text_style.font_size.into(), rem_size)
+            .to_pixels(text_style.font_size, rem_size)
     }
 
     /// Call to prevent the default action of an event. Currently only used to prevent
@@ -966,7 +970,7 @@ impl<'a> WindowContext<'a> {
     pub fn add_opaque_layer(&mut self, bounds: Bounds<Pixels>) {
         let stacking_order = self.window.next_frame.z_index_stack.clone();
         let depth_map = &mut self.window.next_frame.depth_map;
-        match depth_map.binary_search_by(|(level, _)| stacking_order.cmp(&level)) {
+        match depth_map.binary_search_by(|(level, _)| stacking_order.cmp(level)) {
             Ok(i) | Err(i) => depth_map.insert(i, (stacking_order, bounds)),
         }
     }
@@ -1886,7 +1890,7 @@ impl Context for WindowContext<'_> {
         T: 'static,
     {
         let entity = self.entities.read(handle);
-        read(&*entity, &*self.app)
+        read(entity, &*self.app)
     }
 
     fn read_window<T, R>(
@@ -1946,7 +1950,7 @@ impl VisualContext for WindowContext<'_> {
         update: impl FnOnce(&mut T, &mut ViewContext<'_, T>) -> R,
     ) -> Self::Result<R> {
         let mut lease = self.app.entities.lease(&view.model);
-        let mut cx = ViewContext::new(&mut *self.app, &mut *self.window, &view);
+        let mut cx = ViewContext::new(&mut *self.app, &mut *self.window, view);
         let result = update(&mut *lease, &mut cx);
         cx.app.entities.end_lease(lease);
         result
@@ -1983,25 +1987,25 @@ impl<'a> std::ops::Deref for WindowContext<'a> {
     type Target = AppContext;
 
     fn deref(&self) -> &Self::Target {
-        &self.app
+        self.app
     }
 }
 
 impl<'a> std::ops::DerefMut for WindowContext<'a> {
     fn deref_mut(&mut self) -> &mut Self::Target {
-        &mut self.app
+        self.app
     }
 }
 
 impl<'a> Borrow<AppContext> for WindowContext<'a> {
     fn borrow(&self) -> &AppContext {
-        &self.app
+        self.app
     }
 }
 
 impl<'a> BorrowMut<AppContext> for WindowContext<'a> {
     fn borrow_mut(&mut self) -> &mut AppContext {
-        &mut self.app
+        self.app
     }
 }
 
@@ -2033,7 +2037,7 @@ pub trait BorrowWindow: BorrowMut<Window> + BorrowMut<AppContext> {
     ) -> R {
         if let Some(id) = id.map(Into::into) {
             let window = self.window_mut();
-            window.element_id_stack.push(id.into());
+            window.element_id_stack.push(id);
             let result = f(self);
             let window: &mut Window = self.borrow_mut();
             window.element_id_stack.pop();
@@ -2255,13 +2259,13 @@ pub trait BorrowWindow: BorrowMut<Window> + BorrowMut<AppContext> {
 
 impl Borrow<Window> for WindowContext<'_> {
     fn borrow(&self) -> &Window {
-        &self.window
+        self.window
     }
 }
 
 impl BorrowMut<Window> for WindowContext<'_> {
     fn borrow_mut(&mut self) -> &mut Window {
-        &mut self.window
+        self.window
     }
 }
 
@@ -2915,10 +2919,7 @@ impl<V> Copy for WindowHandle<V> {}
 
 impl<V> Clone for WindowHandle<V> {
     fn clone(&self) -> Self {
-        WindowHandle {
-            any_handle: self.any_handle,
-            state_type: PhantomData,
-        }
+        *self
     }
 }
 
@@ -2936,9 +2937,9 @@ impl<V> Hash for WindowHandle<V> {
     }
 }
 
-impl<V: 'static> Into<AnyWindowHandle> for WindowHandle<V> {
-    fn into(self) -> AnyWindowHandle {
-        self.any_handle
+impl<V: 'static> From<WindowHandle<V>> for AnyWindowHandle {
+    fn from(val: WindowHandle<V>) -> Self {
+        val.any_handle
     }
 }
 

crates/gpui2_macros/src/style_helpers.rs 🔗

@@ -102,7 +102,7 @@ fn generate_methods() -> Vec<TokenStream2> {
 fn generate_predefined_setter(
     name: &'static str,
     length: &'static str,
-    fields: &Vec<TokenStream2>,
+    fields: &[TokenStream2],
     length_tokens: &TokenStream2,
     negate: bool,
     doc_string: &str,
@@ -143,12 +143,12 @@ fn generate_predefined_setter(
 fn generate_custom_value_setter(
     prefix: &'static str,
     length_type: TokenStream2,
-    fields: &Vec<TokenStream2>,
+    fields: &[TokenStream2],
     doc_string: &str,
 ) -> TokenStream2 {
     let method_name = format_ident!("{}", prefix);
 
-    let mut iter = fields.into_iter();
+    let mut iter = fields.iter();
     let last = iter.next_back().unwrap();
     let field_assignments = iter
         .map(|field_tokens| {

crates/media/src/media.rs 🔗

@@ -108,25 +108,23 @@ pub mod core_video {
     impl_CFTypeDescription!(CVMetalTextureCache);
 
     impl CVMetalTextureCache {
-        pub fn new(metal_device: *mut MTLDevice) -> Result<Self> {
-            unsafe {
-                let mut this = ptr::null();
-                let result = CVMetalTextureCacheCreate(
-                    kCFAllocatorDefault,
-                    ptr::null(),
-                    metal_device,
-                    ptr::null(),
-                    &mut this,
-                );
-                if result == kCVReturnSuccess {
-                    Ok(CVMetalTextureCache::wrap_under_create_rule(this))
-                } else {
-                    Err(anyhow!("could not create texture cache, code: {}", result))
-                }
+        pub unsafe fn new(metal_device: *mut MTLDevice) -> Result<Self> {
+            let mut this = ptr::null();
+            let result = CVMetalTextureCacheCreate(
+                kCFAllocatorDefault,
+                ptr::null(),
+                metal_device,
+                ptr::null(),
+                &mut this,
+            );
+            if result == kCVReturnSuccess {
+                Ok(CVMetalTextureCache::wrap_under_create_rule(this))
+            } else {
+                Err(anyhow!("could not create texture cache, code: {}", result))
             }
         }
 
-        pub fn create_texture_from_image(
+        pub unsafe fn create_texture_from_image(
             &self,
             source: CVImageBufferRef,
             texture_attributes: CFDictionaryRef,
@@ -135,24 +133,22 @@ pub mod core_video {
             height: usize,
             plane_index: usize,
         ) -> Result<CVMetalTexture> {
-            unsafe {
-                let mut this = ptr::null();
-                let result = CVMetalTextureCacheCreateTextureFromImage(
-                    kCFAllocatorDefault,
-                    self.as_concrete_TypeRef(),
-                    source,
-                    texture_attributes,
-                    pixel_format,
-                    width,
-                    height,
-                    plane_index,
-                    &mut this,
-                );
-                if result == kCVReturnSuccess {
-                    Ok(CVMetalTexture::wrap_under_create_rule(this))
-                } else {
-                    Err(anyhow!("could not create texture, code: {}", result))
-                }
+            let mut this = ptr::null();
+            let result = CVMetalTextureCacheCreateTextureFromImage(
+                kCFAllocatorDefault,
+                self.as_concrete_TypeRef(),
+                source,
+                texture_attributes,
+                pixel_format,
+                width,
+                height,
+                plane_index,
+                &mut this,
+            );
+            if result == kCVReturnSuccess {
+                Ok(CVMetalTexture::wrap_under_create_rule(this))
+            } else {
+                Err(anyhow!("could not create texture, code: {}", result))
             }
         }
     }
@@ -438,60 +434,56 @@ pub mod video_toolbox {
     impl_CFTypeDescription!(VTCompressionSession);
 
     impl VTCompressionSession {
-        pub fn new(
+        pub unsafe fn new(
             width: usize,
             height: usize,
             codec: CMVideoCodecType,
             callback: VTCompressionOutputCallback,
             callback_data: *const c_void,
         ) -> Result<Self> {
-            unsafe {
-                let mut this = ptr::null();
-                let result = VTCompressionSessionCreate(
-                    ptr::null(),
-                    width as i32,
-                    height as i32,
-                    codec,
-                    ptr::null(),
-                    ptr::null(),
-                    ptr::null(),
-                    callback,
-                    callback_data,
-                    &mut this,
-                );
-
-                if result == 0 {
-                    Ok(Self::wrap_under_create_rule(this))
-                } else {
-                    Err(anyhow!(
-                        "error creating compression session, code {}",
-                        result
-                    ))
-                }
+            let mut this = ptr::null();
+            let result = VTCompressionSessionCreate(
+                ptr::null(),
+                width as i32,
+                height as i32,
+                codec,
+                ptr::null(),
+                ptr::null(),
+                ptr::null(),
+                callback,
+                callback_data,
+                &mut this,
+            );
+
+            if result == 0 {
+                Ok(Self::wrap_under_create_rule(this))
+            } else {
+                Err(anyhow!(
+                    "error creating compression session, code {}",
+                    result
+                ))
             }
         }
 
-        pub fn encode_frame(
+        pub unsafe fn encode_frame(
             &self,
             buffer: CVImageBufferRef,
             presentation_timestamp: CMTime,
             duration: CMTime,
         ) -> Result<()> {
-            unsafe {
-                let result = VTCompressionSessionEncodeFrame(
-                    self.as_concrete_TypeRef(),
-                    buffer,
-                    presentation_timestamp,
-                    duration,
-                    ptr::null(),
-                    ptr::null(),
-                    ptr::null_mut(),
-                );
-                if result == 0 {
-                    Ok(())
-                } else {
-                    Err(anyhow!("error encoding frame, code {}", result))
-                }
+            let result = VTCompressionSessionEncodeFrame(
+                self.as_concrete_TypeRef(),
+                buffer,
+                presentation_timestamp,
+                duration,
+                ptr::null(),
+                ptr::null(),
+                ptr::null_mut(),
+            );
+            if result == 0 {
+                Ok(())
+            } else {
+                Err(anyhow!("error encoding frame, code {}", result))
             }
         }
     }

crates/project_panel2/src/project_panel.rs 🔗

@@ -1612,6 +1612,10 @@ impl Panel for ProjectPanel {
         Some(ui::Icon::FileTree)
     }
 
+    fn icon_tooltip(&self, _cx: &WindowContext) -> Option<&'static str> {
+        Some("Project Panel")
+    }
+
     fn toggle_action(&self) -> Box<dyn Action> {
         Box::new(ToggleFocus)
     }

crates/refineable/derive_refineable/src/derive_refineable.rs 🔗

@@ -85,9 +85,7 @@ pub fn derive_refineable(input: TokenStream) -> TokenStream {
     // Append to where_clause or create a new one if it doesn't exist
     let where_clause = match where_clause.cloned() {
         Some(mut where_clause) => {
-            where_clause
-                .predicates
-                .extend(type_param_bounds.into_iter());
+            where_clause.predicates.extend(type_param_bounds);
             where_clause.clone()
         }
         None => WhereClause {

crates/refineable/src/refineable.rs 🔗

@@ -27,7 +27,7 @@ pub struct CascadeSlot(usize);
 impl<S: Refineable + Default> Cascade<S> {
     pub fn reserve(&mut self) -> CascadeSlot {
         self.0.push(None);
-        return CascadeSlot(self.0.len() - 1);
+        CascadeSlot(self.0.len() - 1)
     }
 
     pub fn base(&mut self) -> &mut S::Refinement {
@@ -40,10 +40,8 @@ impl<S: Refineable + Default> Cascade<S> {
 
     pub fn merged(&self) -> S::Refinement {
         let mut merged = self.0[0].clone().unwrap();
-        for refinement in self.0.iter().skip(1) {
-            if let Some(refinement) = refinement {
-                merged.refine(refinement);
-            }
+        for refinement in self.0.iter().skip(1).flatten() {
+            merged.refine(refinement);
         }
         merged
     }

crates/rope2/src/rope2.rs 🔗

@@ -906,7 +906,7 @@ impl Chunk {
 
     fn clip_offset_utf16(&self, target: OffsetUtf16, bias: Bias) -> OffsetUtf16 {
         let mut code_units = self.0.encode_utf16();
-        let mut offset = code_units.by_ref().take(target.0 as usize).count();
+        let mut offset = code_units.by_ref().take(target.0).count();
         if char::decode_utf16(code_units).next().transpose().is_err() {
             match bias {
                 Bias::Left => offset -= 1,

crates/sqlez/src/migrations.rs 🔗

@@ -20,8 +20,8 @@ impl Connection {
                 self.sqlite3,
                 sql_str.as_c_str().as_ptr(),
                 None,
-                0 as *mut _,
-                0 as *mut _,
+                std::ptr::null_mut(),
+                std::ptr::null_mut(),
             );
         }
         self.last_error()
@@ -59,10 +59,10 @@ impl Connection {
                     if completed_migration != migration {
                         return Err(anyhow!(formatdoc! {"
                             Migration changed for {} at step {}
-                            
+
                             Stored migration:
                             {}
-                            
+
                             Proposed migration:
                             {}", domain, index, completed_migration, migration}));
                     } else {

crates/sqlez/src/statement.rs 🔗

@@ -232,13 +232,13 @@ impl<'a> Statement<'a> {
             .last_error()
             .with_context(|| format!("Failed to read text length at {index}"))?;
 
-        let slice = unsafe { slice::from_raw_parts(pointer as *const u8, len) };
+        let slice = unsafe { slice::from_raw_parts(pointer, len) };
         Ok(str::from_utf8(slice)?)
     }
 
     pub fn bind<T: Bind>(&self, value: &T, index: i32) -> Result<i32> {
         debug_assert!(index > 0);
-        Ok(value.bind(self, index)?)
+        value.bind(self, index)
     }
 
     pub fn column<T: Column>(&mut self) -> Result<T> {

crates/sqlez/src/thread_safe_connection.rs 🔗

@@ -10,14 +10,14 @@ use crate::{connection::Connection, domain::Migrator, util::UnboundedSyncSender}
 const MIGRATION_RETRIES: usize = 10;
 
 type QueuedWrite = Box<dyn 'static + Send + FnOnce()>;
-type WriteQueueConstructor =
-    Box<dyn 'static + Send + FnMut() -> Box<dyn 'static + Send + Sync + Fn(QueuedWrite)>>;
+type WriteQueue = Box<dyn 'static + Send + Sync + Fn(QueuedWrite)>;
+type WriteQueueConstructor = Box<dyn 'static + Send + FnMut() -> WriteQueue>;
 lazy_static! {
     /// List of queues of tasks by database uri. This lets us serialize writes to the database
     /// and have a single worker thread per db file. This means many thread safe connections
     /// (possibly with different migrations) could all be communicating with the same background
     /// thread.
-    static ref QUEUES: RwLock<HashMap<Arc<str>, Box<dyn 'static + Send + Sync + Fn(QueuedWrite)>>> =
+    static ref QUEUES: RwLock<HashMap<Arc<str>, WriteQueue>> =
         Default::default();
 }
 

crates/sum_tree/src/tree_map.rs 🔗

@@ -40,7 +40,7 @@ impl<K: Clone + Debug + Default + Ord, V: Clone + Debug> TreeMap<K, V> {
         self.0.is_empty()
     }
 
-    pub fn get<'a>(&self, key: &'a K) -> Option<&V> {
+    pub fn get(&self, key: &K) -> Option<&V> {
         let mut cursor = self.0.cursor::<MapKeyRef<'_, K>>();
         cursor.seek(&MapKeyRef(Some(key)), Bias::Left, &());
         if let Some(item) = cursor.item() {
@@ -98,9 +98,7 @@ impl<K: Clone + Debug + Default + Ord, V: Clone + Debug> TreeMap<K, V> {
         let from_key = MapKeyRef(Some(from));
         cursor.seek(&from_key, Bias::Left, &());
 
-        cursor
-            .into_iter()
-            .map(|map_entry| (&map_entry.key, &map_entry.value))
+        cursor.map(|map_entry| (&map_entry.key, &map_entry.value))
     }
 
     pub fn update<F, T>(&mut self, key: &K, f: F) -> Option<T>

crates/terminal_view2/src/terminal_panel.rs 🔗

@@ -419,6 +419,10 @@ impl Panel for TerminalPanel {
         Some(Icon::Terminal)
     }
 
+    fn icon_tooltip(&self, _cx: &WindowContext) -> Option<&'static str> {
+        Some("Terminal Panel")
+    }
+
     fn toggle_action(&self) -> Box<dyn gpui::Action> {
         Box::new(ToggleFocus)
     }

crates/text2/src/locator.rs 🔗

@@ -20,11 +20,11 @@ impl Locator {
     }
 
     pub fn min_ref() -> &'static Self {
-        &*MIN
+        &MIN
     }
 
     pub fn max_ref() -> &'static Self {
-        &*MAX
+        &MAX
     }
 
     pub fn assign(&mut self, other: &Self) {

crates/text2/src/subscription.rs 🔗

@@ -18,7 +18,7 @@ impl Topic {
     }
 
     pub fn publish(&self, edits: impl Clone + IntoIterator<Item = Edit<usize>>) {
-        publish(&mut *self.0.lock(), edits);
+        publish(&mut self.0.lock(), edits);
     }
 
     pub fn publish_mut(&mut self, edits: impl Clone + IntoIterator<Item = Edit<usize>>) {

crates/text2/src/text2.rs 🔗

@@ -2652,7 +2652,7 @@ impl LineEnding {
             max_ix -= 1;
         }
 
-        if let Some(ix) = text[..max_ix].find(&['\n']) {
+        if let Some(ix) = text[..max_ix].find(['\n']) {
             if ix > 0 && text.as_bytes()[ix - 1] == b'\r' {
                 Self::Windows
             } else {

crates/theme/src/theme.rs 🔗

@@ -8,7 +8,7 @@ use components::{
 };
 use gpui::{
     color::Color,
-    elements::{Border, ContainerStyle, ImageStyle, LabelStyle, Shadow, SvgStyle, TooltipStyle},
+    elements::{Border, ContainerStyle, ImageStyle, LabelStyle, SvgStyle, TooltipStyle},
     fonts::{HighlightStyle, TextStyle},
     platform, AppContext, AssetSource, MouseState,
 };
@@ -1276,15 +1276,9 @@ pub struct WelcomeStyle {
 pub struct ColorScheme {
     pub name: String,
     pub is_light: bool,
-    pub ramps: RampSet,
     pub lowest: Layer,
     pub middle: Layer,
     pub highest: Layer,
-
-    pub popover_shadow: Shadow,
-    pub modal_shadow: Shadow,
-
-    pub players: Vec<Player>,
 }
 
 #[derive(Clone, Deserialize, Default, JsonSchema)]

crates/theme2/src/default_colors.rs 🔗

@@ -13,91 +13,82 @@ impl ThemeColors {
         let system = SystemColors::default();
 
         Self {
-            background: neutral().light().step_1(),
             border: neutral().light().step_6(),
-            border_disabled: neutral().light().step_3(),
+            border_variant: neutral().light().step_5(),
             border_focused: blue().light().step_5(),
             border_selected: blue().light().step_5(),
             border_transparent: system.transparent,
-            border_variant: neutral().light().step_5(),
-            code_block_background: gpui::transparent_black(),
-            code_block_border: gpui::transparent_black(),
-            drop_target_background: blue().light_alpha().step_2(),
-            editor_active_line_background: neutral().light_alpha().step_3(),
-            editor_active_line_number: neutral().light().step_11(),
-            editor_active_wrap_guide: neutral().light_alpha().step_8(), // todo!("pick the right colors")
-            editor_foreground: neutral().light().step_12(),
-            editor_background: neutral().light().step_1(),
-            editor_document_highlight_read_background: neutral().light_alpha().step_3(), // todo!("pick the right colors")
-            editor_document_highlight_write_background: neutral().light_alpha().step_4(), // todo!("pick the right colors")
-            editor_gutter_background: neutral().light().step_1(), // todo!("pick the right colors")
-            editor_highlighted_line_background: neutral().light_alpha().step_3(),
-            editor_invisible: neutral().light().step_10(),
-            editor_line_number: neutral().light().step_10(),
-            editor_subheader_background: neutral().light().step_2(),
-            editor_wrap_guide: neutral().light_alpha().step_7(),
-            element_active: neutral().light_alpha().step_5(),
+            border_disabled: neutral().light().step_3(),
+            elevated_surface_background: neutral().light().step_2(),
+            surface_background: neutral().light().step_2(),
+            background: neutral().light().step_1(),
             element_background: neutral().light().step_3(),
-            element_disabled: neutral().light_alpha().step_3(),
-            element_hover: neutral().light_alpha().step_4(),
+            element_hover: neutral().light_alpha().step_4(), // todo!("pick the right colors")
+            element_active: neutral().light_alpha().step_5(),
             element_selected: neutral().light_alpha().step_5(),
-            elevated_surface_background: neutral().light().step_2(),
-            emphasis: neutral().light().step_12(),
-            ghost_element_active: neutral().light_alpha().step_4(),
-            ghost_element_background: system.transparent,
-            ghost_element_disabled: neutral().light_alpha().step_3(),
+            element_disabled: neutral().light_alpha().step_3(), // todo!("pick the right colors")
+            drop_target_background: blue().light_alpha().step_2(), // todo!("pick the right colors")
+            ghost_element_background: system.transparent,       // todo!("pick the right colors")
             ghost_element_hover: neutral().light_alpha().step_3(),
+            ghost_element_active: neutral().light_alpha().step_4(),
             ghost_element_selected: neutral().light_alpha().step_5(),
-            headline: blue().light().step_9(),
+            ghost_element_disabled: neutral().light_alpha().step_3(),
+            text: neutral().light().step_12(),
+            text_muted: neutral().light().step_10(),
+            text_placeholder: neutral().light().step_10(),
+            text_disabled: neutral().light().step_9(),
+            text_accent: blue().light().step_11(),
             icon: neutral().light().step_11(),
-            icon_accent: blue().light().step_11(),
-            icon_disabled: neutral().light().step_9(),
             icon_muted: neutral().light().step_10(),
+            icon_disabled: neutral().light().step_9(),
             icon_placeholder: neutral().light().step_10(),
-            inline_code_background: gpui::transparent_black(),
-            inline_code_border: gpui::transparent_black(),
-            link_text: orange().light().step_9(),
-            link_text_hover: orange().light().step_10(),
-            link_uri: green().light().step_9(),
-            pane_focused_border: blue().light().step_5(),
+            icon_accent: blue().light().step_11(),
+            status_bar_background: neutral().light().step_2(),
+            title_bar_background: neutral().light().step_2(),
+            toolbar_background: neutral().light().step_1(),
+            tab_bar_background: neutral().light().step_2(),
+            tab_inactive_background: neutral().light().step_2(),
+            tab_active_background: neutral().light().step_1(),
+            search_match_background: neutral().light().step_2(),
             panel_background: neutral().light().step_2(),
             panel_focused_border: blue().light().step_5(),
-            paragraph: neutral().light().step_12(),
+            pane_focused_border: blue().light().step_5(),
             scrollbar_thumb_background: neutral().light_alpha().step_3(),
-            scrollbar_thumb_border: gpui::transparent_black(),
             scrollbar_thumb_hover_background: neutral().light_alpha().step_4(),
+            scrollbar_thumb_border: gpui::transparent_black(),
             scrollbar_track_background: gpui::transparent_black(),
             scrollbar_track_border: neutral().light().step_5(),
-            search_match_background: neutral().light().step_2(), // todo!(this was inserted by Mikayla)
-            status_bar_background: neutral().light().step_2(),
-            surface_background: neutral().light().step_2(),
-            tab_active_background: neutral().light().step_1(),
-            tab_bar_background: neutral().light().step_2(),
-            tab_inactive_background: neutral().light().step_2(),
-            terminal_ansi_black: black().light().step_12(),
-            terminal_ansi_blue: blue().light().step_11(),
+            editor_foreground: neutral().light().step_12(),
+            editor_background: neutral().light().step_1(), // todo!(this was inserted by Mikayla)
+            editor_gutter_background: neutral().light().step_1(),
+            editor_subheader_background: neutral().light().step_2(),
+            editor_active_line_background: neutral().light_alpha().step_3(),
+            editor_highlighted_line_background: neutral().light_alpha().step_3(),
+            editor_line_number: neutral().light().step_10(),
+            editor_active_line_number: neutral().light().step_11(),
+            editor_invisible: neutral().light().step_10(),
+            editor_wrap_guide: neutral().light_alpha().step_7(),
+            editor_active_wrap_guide: neutral().light_alpha().step_8(),
+            editor_document_highlight_read_background: neutral().light_alpha().step_3(),
+            editor_document_highlight_write_background: neutral().light_alpha().step_4(),
+            terminal_background: neutral().light().step_1(),
             terminal_ansi_bright_black: black().light().step_11(),
-            terminal_ansi_bright_blue: blue().light().step_10(),
-            terminal_ansi_bright_cyan: cyan().light().step_10(),
+            terminal_ansi_bright_red: red().light().step_10(),
             terminal_ansi_bright_green: green().light().step_10(),
+            terminal_ansi_bright_yellow: yellow().light().step_10(),
+            terminal_ansi_bright_blue: blue().light().step_10(),
             terminal_ansi_bright_magenta: violet().light().step_10(),
-            terminal_ansi_bright_red: red().light().step_10(),
+            terminal_ansi_bright_cyan: cyan().light().step_10(),
             terminal_ansi_bright_white: neutral().light().step_11(),
-            terminal_ansi_bright_yellow: yellow().light().step_10(),
-            terminal_ansi_cyan: cyan().light().step_11(),
+            terminal_ansi_black: black().light().step_12(),
+            terminal_ansi_red: red().light().step_11(),
             terminal_ansi_green: green().light().step_11(),
+            terminal_ansi_yellow: yellow().light().step_11(),
+            terminal_ansi_blue: blue().light().step_11(),
             terminal_ansi_magenta: violet().light().step_11(),
-            terminal_ansi_red: red().light().step_11(),
+            terminal_ansi_cyan: cyan().light().step_11(),
             terminal_ansi_white: neutral().light().step_12(),
-            terminal_ansi_yellow: yellow().light().step_11(),
-            terminal_background: neutral().light().step_1(),
-            text: neutral().light().step_12(),
-            text_accent: blue().light().step_11(),
-            text_disabled: neutral().light().step_9(),
-            text_muted: neutral().light().step_10(),
-            text_placeholder: neutral().light().step_10(),
-            title_bar_background: neutral().light().step_2(),
-            toolbar_background: neutral().light().step_1(),
+            link_text_hover: orange().light().step_10(),
         }
     }
 
@@ -105,91 +96,82 @@ impl ThemeColors {
         let system = SystemColors::default();
 
         Self {
-            background: neutral().dark().step_1(),
             border: neutral().dark().step_6(),
-            border_disabled: neutral().dark().step_3(),
+            border_variant: neutral().dark().step_5(),
             border_focused: blue().dark().step_5(),
             border_selected: blue().dark().step_5(),
             border_transparent: system.transparent,
-            border_variant: neutral().dark().step_5(),
-            code_block_background: gpui::transparent_black(),
-            code_block_border: gpui::transparent_black(),
-            drop_target_background: blue().dark_alpha().step_2(),
-            editor_active_line_background: neutral().dark_alpha().step_3(),
-            editor_active_line_number: neutral().dark_alpha().step_12(),
-            editor_active_wrap_guide: neutral().dark_alpha().step_4(), // todo!("pick the right colors")
-            editor_background: neutral().dark().step_1(),
-            editor_document_highlight_read_background: neutral().dark_alpha().step_4(), // todo!("pick the right colors")
-            editor_document_highlight_write_background: neutral().dark_alpha().step_4(), // todo!("pick the right colors")
-            editor_foreground: neutral().dark().step_12(),
-            editor_gutter_background: neutral().dark().step_1(),
-            editor_highlighted_line_background: neutral().dark_alpha().step_4(), // todo!("pick the right colors")
-            editor_invisible: neutral().dark_alpha().step_4(), // todo!("pick the right colors")
-            editor_line_number: neutral().dark_alpha().step_10(),
-            editor_subheader_background: neutral().dark().step_3(),
-            editor_wrap_guide: neutral().dark_alpha().step_4(), // todo!("pick the right colors")
-            element_active: neutral().dark_alpha().step_5(),
-            element_background: neutral().dark().step_3(),
-            element_disabled: neutral().dark_alpha().step_3(),
-            element_hover: neutral().dark_alpha().step_4(),
-            element_selected: neutral().dark_alpha().step_5(),
+            border_disabled: neutral().dark().step_3(),
             elevated_surface_background: neutral().dark().step_2(),
-            emphasis: neutral().dark().step_12(),
-            ghost_element_active: neutral().dark_alpha().step_5(),
+            surface_background: neutral().dark().step_2(),
+            background: neutral().dark().step_1(),
+            element_background: neutral().dark().step_3(),
+            element_hover: neutral().dark_alpha().step_4(), // todo!("pick the right colors")
+            element_active: neutral().dark_alpha().step_5(),
+            element_selected: neutral().dark_alpha().step_5(), // todo!("pick the right colors")
+            element_disabled: neutral().dark_alpha().step_3(), // todo!("pick the right colors")
+            drop_target_background: blue().dark_alpha().step_2(),
             ghost_element_background: system.transparent,
-            ghost_element_disabled: neutral().dark_alpha().step_3(),
-            ghost_element_hover: neutral().dark_alpha().step_4(),
+            ghost_element_hover: neutral().dark_alpha().step_4(), // todo!("pick the right colors")
+            ghost_element_active: neutral().dark_alpha().step_5(), // todo!("pick the right colors")
             ghost_element_selected: neutral().dark_alpha().step_5(),
-            headline: blue().dark().step_9(),
+            ghost_element_disabled: neutral().dark_alpha().step_3(),
+            text: neutral().dark().step_12(), // todo!("pick the right colors")
+            text_muted: neutral().dark().step_11(),
+            text_placeholder: neutral().dark().step_10(),
+            text_disabled: neutral().dark().step_9(),
+            text_accent: blue().dark().step_11(),
             icon: neutral().dark().step_11(),
-            icon_accent: blue().dark().step_11(),
-            icon_disabled: neutral().dark().step_9(),
             icon_muted: neutral().dark().step_10(),
+            icon_disabled: neutral().dark().step_9(),
             icon_placeholder: neutral().dark().step_10(),
-            inline_code_background: gpui::transparent_black(),
-            inline_code_border: gpui::transparent_black(),
-            link_text: orange().dark().step_9(),
-            link_text_hover: orange().dark().step_10(),
-            link_uri: green().dark().step_9(),
-            pane_focused_border: blue().dark().step_5(),
+            icon_accent: blue().dark().step_11(),
+            status_bar_background: neutral().dark().step_2(),
+            title_bar_background: neutral().dark().step_2(),
+            toolbar_background: neutral().dark().step_1(),
+            tab_bar_background: neutral().dark().step_2(),
+            tab_inactive_background: neutral().dark().step_2(),
+            tab_active_background: neutral().dark().step_1(),
+            search_match_background: neutral().dark().step_2(),
             panel_background: neutral().dark().step_2(),
             panel_focused_border: blue().dark().step_5(),
-            paragraph: neutral().dark().step_12(),
+            pane_focused_border: blue().dark().step_5(),
             scrollbar_thumb_background: neutral().dark_alpha().step_3(),
-            scrollbar_thumb_border: gpui::transparent_black(),
             scrollbar_thumb_hover_background: neutral().dark_alpha().step_4(),
+            scrollbar_thumb_border: gpui::transparent_black(),
             scrollbar_track_background: gpui::transparent_black(),
-            scrollbar_track_border: neutral().dark().step_5(),
-            search_match_background: neutral().dark().step_2(), // todo!(this was inserted by Mikayla)
-            status_bar_background: neutral().dark().step_2(),
-            surface_background: neutral().dark().step_2(),
-            tab_active_background: neutral().dark().step_1(),
-            tab_bar_background: neutral().dark().step_2(),
-            tab_inactive_background: neutral().dark().step_2(),
-            terminal_ansi_black: black().dark().step_12(),
-            terminal_ansi_blue: blue().dark().step_11(),
+            scrollbar_track_border: neutral().dark().step_5(), // todo!(this was inserted by Mikayla)
+            editor_foreground: neutral().dark().step_12(),
+            editor_background: neutral().dark().step_1(),
+            editor_gutter_background: neutral().dark().step_1(),
+            editor_subheader_background: neutral().dark().step_3(),
+            editor_active_line_background: neutral().dark_alpha().step_3(),
+            editor_highlighted_line_background: neutral().dark_alpha().step_4(),
+            editor_line_number: neutral().dark_alpha().step_10(),
+            editor_active_line_number: neutral().dark_alpha().step_12(),
+            editor_invisible: neutral().dark_alpha().step_4(),
+            editor_wrap_guide: neutral().dark_alpha().step_4(),
+            editor_active_wrap_guide: neutral().dark_alpha().step_4(),
+            editor_document_highlight_read_background: neutral().dark_alpha().step_4(),
+            editor_document_highlight_write_background: neutral().dark_alpha().step_4(),
+            terminal_background: neutral().dark().step_1(),
             terminal_ansi_bright_black: black().dark().step_11(),
-            terminal_ansi_bright_blue: blue().dark().step_10(),
-            terminal_ansi_bright_cyan: cyan().dark().step_10(),
+            terminal_ansi_bright_red: red().dark().step_10(),
             terminal_ansi_bright_green: green().dark().step_10(),
+            terminal_ansi_bright_yellow: yellow().dark().step_10(),
+            terminal_ansi_bright_blue: blue().dark().step_10(),
             terminal_ansi_bright_magenta: violet().dark().step_10(),
-            terminal_ansi_bright_red: red().dark().step_10(),
+            terminal_ansi_bright_cyan: cyan().dark().step_10(),
             terminal_ansi_bright_white: neutral().dark().step_11(),
-            terminal_ansi_bright_yellow: yellow().dark().step_10(),
-            terminal_ansi_cyan: cyan().dark().step_11(),
+            terminal_ansi_black: black().dark().step_12(),
+            terminal_ansi_red: red().dark().step_11(),
             terminal_ansi_green: green().dark().step_11(),
+            terminal_ansi_yellow: yellow().dark().step_11(),
+            terminal_ansi_blue: blue().dark().step_11(),
             terminal_ansi_magenta: violet().dark().step_11(),
-            terminal_ansi_red: red().dark().step_11(),
+            terminal_ansi_cyan: cyan().dark().step_11(),
             terminal_ansi_white: neutral().dark().step_12(),
-            terminal_ansi_yellow: yellow().dark().step_11(),
-            terminal_background: neutral().dark().step_1(),
-            text: neutral().dark().step_12(),
-            text_accent: blue().dark().step_11(),
-            text_disabled: neutral().dark().step_9(),
-            text_muted: neutral().dark().step_11(),
-            text_placeholder: neutral().dark().step_10(),
-            title_bar_background: neutral().dark().step_2(),
-            toolbar_background: neutral().dark().step_1(),
+            link_text_hover: orange().dark().step_10(),
         }
     }
 }

crates/theme2/src/one_themes.rs 🔗

@@ -23,7 +23,6 @@ pub(crate) fn one_dark() -> Theme {
     let elevated_surface = hsla(225. / 360., 12. / 100., 17. / 100., 1.);
 
     let blue = hsla(207.8 / 360., 81. / 100., 66. / 100., 1.0);
-    let light_gray = hsla(218.8 / 360., 14. / 100., 71. / 100., 1.0);
     let gray = hsla(218.8 / 360., 10. / 100., 40. / 100., 1.0);
     let green = hsla(95. / 360., 38. / 100., 62. / 100., 1.0);
     let orange = hsla(29. / 360., 54. / 100., 61. / 100., 1.0);
@@ -123,32 +122,51 @@ pub(crate) fn one_dark() -> Theme {
                 scrollbar_track_background: gpui::transparent_black(),
                 scrollbar_track_border: hsla(228. / 360., 8. / 100., 25. / 100., 1.),
                 editor_foreground: hsla(218. / 360., 14. / 100., 71. / 100., 1.),
-                headline: hsla(355. / 360., 65. / 100., 65. / 100., 1.),
-                paragraph: light_gray,
-                link_text: blue,
                 link_text_hover: blue,
-                link_uri: teal,
-                inline_code_background: gpui::transparent_black(),
-                inline_code_border: gpui::transparent_black(),
-                code_block_background: gpui::transparent_black(),
-                code_block_border: gpui::transparent_black(),
-                emphasis: orange,
             },
             status: StatusColors {
                 conflict: yellow,
+                conflict_background: yellow,
+                conflict_border: yellow,
                 created: green,
+                created_background: green,
+                created_border: green,
                 deleted: red,
+                deleted_background: red,
+                deleted_border: red,
                 error: red,
+                error_background: red,
+                error_border: red,
                 hidden: gray,
+                hidden_background: gray,
+                hidden_border: gray,
                 hint: blue,
+                hint_background: blue,
+                hint_border: blue,
                 ignored: gray,
+                ignored_background: gray,
+                ignored_border: gray,
                 info: blue,
+                info_background: blue,
+                info_border: blue,
                 modified: yellow,
+                modified_background: yellow,
+                modified_border: yellow,
                 predictive: gray,
+                predictive_background: gray,
+                predictive_border: gray,
                 renamed: blue,
+                renamed_background: blue,
+                renamed_border: blue,
                 success: green,
+                success_background: green,
+                success_border: green,
                 unreachable: gray,
+                unreachable_background: gray,
+                unreachable_border: gray,
                 warning: yellow,
+                warning_background: yellow,
+                warning_border: yellow,
             },
             player: PlayerColors::dark(),
             syntax: Arc::new(SyntaxTheme {

crates/theme2/src/styles/colors.rs 🔗

@@ -206,16 +206,7 @@ pub struct ThemeColors {
     // ===
     // UI/Rich Text
     // ===
-    pub headline: Hsla,
-    pub paragraph: Hsla,
-    pub link_text: Hsla,
     pub link_text_hover: Hsla,
-    pub link_uri: Hsla,
-    pub inline_code_background: Hsla,
-    pub inline_code_border: Hsla,
-    pub code_block_background: Hsla,
-    pub code_block_border: Hsla,
-    pub emphasis: Hsla,
 }
 
 #[derive(Refineable, Clone)]

crates/theme2/src/styles/status.rs 🔗

@@ -9,45 +9,73 @@ pub struct StatusColors {
     /// Indicates some kind of conflict, like a file changed on disk while it was open, or
     /// merge conflicts in a Git repository.
     pub conflict: Hsla,
+    pub conflict_background: Hsla,
+    pub conflict_border: Hsla,
 
     /// Indicates something new, like a new file added to a Git repository.
     pub created: Hsla,
+    pub created_background: Hsla,
+    pub created_border: Hsla,
 
     /// Indicates that something no longer exists, like a deleted file.
     pub deleted: Hsla,
+    pub deleted_background: Hsla,
+    pub deleted_border: Hsla,
 
     /// Indicates a system error, a failed operation or a diagnostic error.
     pub error: Hsla,
+    pub error_background: Hsla,
+    pub error_border: Hsla,
 
     /// Represents a hidden status, such as a file being hidden in a file tree.
     pub hidden: Hsla,
+    pub hidden_background: Hsla,
+    pub hidden_border: Hsla,
 
     /// Indicates a hint or some kind of additional information.
     pub hint: Hsla,
+    pub hint_background: Hsla,
+    pub hint_border: Hsla,
 
     /// Indicates that something is deliberately ignored, such as a file or operation ignored by Git.
     pub ignored: Hsla,
+    pub ignored_background: Hsla,
+    pub ignored_border: Hsla,
 
     /// Represents informational status updates or messages.
     pub info: Hsla,
+    pub info_background: Hsla,
+    pub info_border: Hsla,
 
     /// Indicates a changed or altered status, like a file that has been edited.
     pub modified: Hsla,
+    pub modified_background: Hsla,
+    pub modified_border: Hsla,
 
     /// Indicates something that is predicted, like automatic code completion, or generated code.
     pub predictive: Hsla,
+    pub predictive_background: Hsla,
+    pub predictive_border: Hsla,
 
     /// Represents a renamed status, such as a file that has been renamed.
     pub renamed: Hsla,
+    pub renamed_background: Hsla,
+    pub renamed_border: Hsla,
 
     /// Indicates a successful operation or task completion.
     pub success: Hsla,
+    pub success_background: Hsla,
+    pub success_border: Hsla,
 
     /// Indicates some kind of unreachable status, like a block of code that can never be reached.
     pub unreachable: Hsla,
+    pub unreachable_background: Hsla,
+    pub unreachable_border: Hsla,
 
     /// Represents a warning status, like an operation that is about to fail.
     pub warning: Hsla,
+    pub warning_background: Hsla,
+    pub warning_border: Hsla,
 }
 
 impl Default for StatusColors {
@@ -78,38 +106,94 @@ impl StatusColors {
     pub fn dark() -> Self {
         Self {
             conflict: red().dark().step_9(),
+            conflict_background: red().dark().step_9(),
+            conflict_border: red().dark().step_9(),
             created: grass().dark().step_9(),
+            created_background: grass().dark().step_9(),
+            created_border: grass().dark().step_9(),
             deleted: red().dark().step_9(),
+            deleted_background: red().dark().step_9(),
+            deleted_border: red().dark().step_9(),
             error: red().dark().step_9(),
+            error_background: red().dark().step_9(),
+            error_border: red().dark().step_9(),
             hidden: neutral().dark().step_9(),
+            hidden_background: neutral().dark().step_9(),
+            hidden_border: neutral().dark().step_9(),
             hint: blue().dark().step_9(),
+            hint_background: blue().dark().step_9(),
+            hint_border: blue().dark().step_9(),
             ignored: neutral().dark().step_9(),
+            ignored_background: neutral().dark().step_9(),
+            ignored_border: neutral().dark().step_9(),
             info: blue().dark().step_9(),
+            info_background: blue().dark().step_9(),
+            info_border: blue().dark().step_9(),
             modified: yellow().dark().step_9(),
+            modified_background: yellow().dark().step_9(),
+            modified_border: yellow().dark().step_9(),
             predictive: neutral().dark_alpha().step_9(),
+            predictive_background: neutral().dark_alpha().step_9(),
+            predictive_border: neutral().dark_alpha().step_9(),
             renamed: blue().dark().step_9(),
+            renamed_background: blue().dark().step_9(),
+            renamed_border: blue().dark().step_9(),
             success: grass().dark().step_9(),
+            success_background: grass().dark().step_9(),
+            success_border: grass().dark().step_9(),
             unreachable: neutral().dark().step_10(),
+            unreachable_background: neutral().dark().step_10(),
+            unreachable_border: neutral().dark().step_10(),
             warning: yellow().dark().step_9(),
+            warning_background: yellow().dark().step_9(),
+            warning_border: yellow().dark().step_9(),
         }
     }
 
     pub fn light() -> Self {
         Self {
             conflict: red().light().step_9(),
+            conflict_background: red().light().step_9(),
+            conflict_border: red().light().step_9(),
             created: grass().light().step_9(),
+            created_background: grass().light().step_9(),
+            created_border: grass().light().step_9(),
             deleted: red().light().step_9(),
+            deleted_background: red().light().step_9(),
+            deleted_border: red().light().step_9(),
             error: red().light().step_9(),
+            error_background: red().light().step_9(),
+            error_border: red().light().step_9(),
             hidden: neutral().light().step_9(),
+            hidden_background: neutral().light().step_9(),
+            hidden_border: neutral().light().step_9(),
             hint: blue().light().step_9(),
+            hint_background: blue().light().step_9(),
+            hint_border: blue().light().step_9(),
             ignored: neutral().light().step_9(),
+            ignored_background: neutral().light().step_9(),
+            ignored_border: neutral().light().step_9(),
             info: blue().light().step_9(),
+            info_background: blue().light().step_9(),
+            info_border: blue().light().step_9(),
             modified: yellow().light().step_9(),
+            modified_background: yellow().light().step_9(),
+            modified_border: yellow().light().step_9(),
             predictive: neutral().light_alpha().step_9(),
+            predictive_background: neutral().light_alpha().step_9(),
+            predictive_border: neutral().light_alpha().step_9(),
             renamed: blue().light().step_9(),
+            renamed_background: blue().light().step_9(),
+            renamed_border: blue().light().step_9(),
             success: grass().light().step_9(),
+            success_background: grass().light().step_9(),
+            success_border: grass().light().step_9(),
             unreachable: neutral().light().step_10(),
+            unreachable_background: neutral().light().step_10(),
+            unreachable_border: neutral().light().step_10(),
             warning: yellow().light().step_9(),
+            warning_background: yellow().light().step_9(),
+            warning_border: yellow().light().step_9(),
         }
     }
 

crates/theme2/src/theme2.rs 🔗

@@ -134,18 +134,6 @@ impl Theme {
         self.syntax().color(name)
     }
 
-    /// Returns the [`DiagnosticStyle`] for the theme.
-    #[inline(always)]
-    pub fn diagnostic_style(&self) -> DiagnosticStyle {
-        DiagnosticStyle {
-            error: self.status().error,
-            warning: self.status().warning,
-            info: self.status().info,
-            hint: self.status().info,
-            ignored: self.status().ignored,
-        }
-    }
-
     /// Returns the [`Appearance`] for the theme.
     #[inline(always)]
     pub fn appearance(&self) -> Appearance {
@@ -153,15 +141,6 @@ impl Theme {
     }
 }
 
-#[derive(Clone, Debug, Default)]
-pub struct DiagnosticStyle {
-    pub error: Hsla,
-    pub warning: Hsla,
-    pub info: Hsla,
-    pub hint: Hsla,
-    pub ignored: Hsla,
-}
-
 pub fn color_alpha(color: Hsla, alpha: f32) -> Hsla {
     let mut color = color;
     color.a = alpha;

crates/theme2/src/themes/andromeda.rs 🔗

@@ -19,36 +19,61 @@ pub fn andromeda() -> UserThemeFamily {
             appearance: Appearance::Dark,
             styles: UserThemeStylesRefinement {
                 colors: ThemeColorsRefinement {
-                    border: Some(rgba(0x252931ff).into()),
-                    border_variant: Some(rgba(0x21232aff).into()),
+                    border: Some(rgba(0x2b2f39ff).into()),
+                    border_variant: Some(rgba(0x2b2f39ff).into()),
+                    border_focused: Some(rgba(0x183a34ff).into()),
+                    border_selected: Some(rgba(0x183a34ff).into()),
+                    border_transparent: Some(rgba(0x00000000).into()),
+                    border_disabled: Some(rgba(0x292d37ff).into()),
                     elevated_surface_background: Some(rgba(0x21242bff).into()),
+                    surface_background: Some(rgba(0x21242bff).into()),
                     background: Some(rgba(0x262a33ff).into()),
                     panel_background: Some(rgba(0x21242bff).into()),
-                    element_hover: Some(rgba(0x2b2f3980).into()),
-                    element_selected: Some(rgba(0x383b4580).into()),
+                    element_background: Some(rgba(0x21242bff).into()),
+                    element_hover: Some(rgba(0x252931ff).into()),
+                    element_active: Some(rgba(0x2a2f39ff).into()),
+                    element_selected: Some(rgba(0x2a2f39ff).into()),
+                    element_disabled: Some(rgba(0x21242bff).into()),
                     drop_target_background: Some(rgba(0xaca8ae80).into()),
+                    ghost_element_background: Some(rgba(0x00000000).into()),
+                    ghost_element_hover: Some(rgba(0x252931ff).into()),
+                    ghost_element_active: Some(rgba(0x2a2f39ff).into()),
+                    ghost_element_selected: Some(rgba(0x2a2f39ff).into()),
+                    ghost_element_disabled: Some(rgba(0x21242bff).into()),
                     text: Some(rgba(0xf7f7f8ff).into()),
                     text_muted: Some(rgba(0xaca8aeff).into()),
-                    text_placeholder: Some(rgba(0x474a53ff).into()),
-                    text_disabled: Some(rgba(0xf7f7f8ff).into()),
+                    text_placeholder: Some(rgba(0x6b6b73ff).into()),
+                    text_disabled: Some(rgba(0x6b6b73ff).into()),
                     text_accent: Some(rgba(0x11a793ff).into()),
+                    icon: Some(rgba(0xf7f7f8ff).into()),
+                    icon_muted: Some(rgba(0xaca8aeff).into()),
+                    icon_disabled: Some(rgba(0x6b6b73ff).into()),
+                    icon_placeholder: Some(rgba(0xaca8aeff).into()),
+                    icon_accent: Some(rgba(0x11a793ff).into()),
                     status_bar_background: Some(rgba(0x262a33ff).into()),
                     title_bar_background: Some(rgba(0x262a33ff).into()),
                     toolbar_background: Some(rgba(0x1e2025ff).into()),
                     tab_bar_background: Some(rgba(0x21242bff).into()),
                     tab_inactive_background: Some(rgba(0x21242bff).into()),
                     tab_active_background: Some(rgba(0x1e2025ff).into()),
-                    scrollbar_thumb_background: Some(rgba(0xf7f7f84d).into()),
-                    scrollbar_thumb_hover_background: Some(rgba(0xf7f7f84d).into()),
-                    scrollbar_thumb_border: Some(rgba(0x21232aff).into()),
+                    scrollbar_thumb_background: Some(rgba(0xf7f7f84c).into()),
+                    scrollbar_thumb_hover_background: Some(rgba(0x252931ff).into()),
+                    scrollbar_thumb_border: Some(rgba(0x252931ff).into()),
+                    scrollbar_track_background: Some(rgba(0x1e2025ff).into()),
                     scrollbar_track_border: Some(rgba(0x21232aff).into()),
                     editor_foreground: Some(rgba(0xf7f7f8ff).into()),
                     editor_background: Some(rgba(0x1e2025ff).into()),
                     editor_gutter_background: Some(rgba(0x1e2025ff).into()),
+                    editor_subheader_background: Some(rgba(0x21242bff).into()),
+                    editor_active_line_background: Some(rgba(0x21242bbf).into()),
+                    editor_highlighted_line_background: Some(rgba(0x21242bff).into()),
                     editor_line_number: Some(rgba(0xf7f7f859).into()),
                     editor_active_line_number: Some(rgba(0xf7f7f8ff).into()),
+                    editor_invisible: Some(rgba(0xaca8aeff).into()),
                     editor_wrap_guide: Some(rgba(0xf7f7f80d).into()),
                     editor_active_wrap_guide: Some(rgba(0xf7f7f81a).into()),
+                    editor_document_highlight_read_background: Some(rgba(0x11a7931a).into()),
+                    editor_document_highlight_write_background: Some(rgba(0x64646d66).into()),
                     terminal_background: Some(rgba(0x1e2025ff).into()),
                     terminal_ansi_bright_black: Some(rgba(0x40434cff).into()),
                     terminal_ansi_bright_red: Some(rgba(0x8e103aff).into()),
@@ -66,16 +91,52 @@ pub fn andromeda() -> UserThemeFamily {
                     terminal_ansi_magenta: Some(rgba(0xc74decff).into()),
                     terminal_ansi_cyan: Some(rgba(0x09e7c6ff).into()),
                     terminal_ansi_white: Some(rgba(0xf7f7f8ff).into()),
+                    link_text_hover: Some(rgba(0x11a793ff).into()),
                     ..Default::default()
                 },
                 status: StatusColorsRefinement {
+                    conflict: Some(rgba(0xfee56dff).into()),
+                    conflict_background: Some(rgba(0x5c5015ff).into()),
+                    conflict_border: Some(rgba(0x796b26ff).into()),
                     created: Some(rgba(0x96df72ff).into()),
-                    deleted: Some(rgba(0xcd1d5aff).into()),
+                    created_background: Some(rgba(0x194618ff).into()),
+                    created_border: Some(rgba(0x306129ff).into()),
+                    deleted: Some(rgba(0xf82872ff).into()),
+                    deleted_background: Some(rgba(0x55051bff).into()),
+                    deleted_border: Some(rgba(0x720a2bff).into()),
                     error: Some(rgba(0xf82872ff).into()),
+                    error_background: Some(rgba(0x55051bff).into()),
+                    error_border: Some(rgba(0x720a2bff).into()),
+                    hidden: Some(rgba(0x6b6b73ff).into()),
+                    hidden_background: Some(rgba(0x262a33ff).into()),
+                    hidden_border: Some(rgba(0x292d37ff).into()),
                     hint: Some(rgba(0x618399ff).into()),
+                    hint_background: Some(rgba(0x122420ff).into()),
+                    hint_border: Some(rgba(0x183a34ff).into()),
+                    ignored: Some(rgba(0xaca8aeff).into()),
+                    ignored_background: Some(rgba(0x262a33ff).into()),
+                    ignored_border: Some(rgba(0x2b2f39ff).into()),
+                    info: Some(rgba(0x11a793ff).into()),
+                    info_background: Some(rgba(0x122420ff).into()),
+                    info_border: Some(rgba(0x183a34ff).into()),
                     modified: Some(rgba(0xfee56dff).into()),
-                    success: Some(rgba(0xf7f7f8ff).into()),
+                    modified_background: Some(rgba(0x5c5015ff).into()),
+                    modified_border: Some(rgba(0x796b26ff).into()),
+                    predictive: Some(rgba(0x96df72ff).into()),
+                    predictive_background: Some(rgba(0x194618ff).into()),
+                    predictive_border: Some(rgba(0x306129ff).into()),
+                    renamed: Some(rgba(0x11a793ff).into()),
+                    renamed_background: Some(rgba(0x122420ff).into()),
+                    renamed_border: Some(rgba(0x183a34ff).into()),
+                    success: Some(rgba(0x96df72ff).into()),
+                    success_background: Some(rgba(0x194618ff).into()),
+                    success_border: Some(rgba(0x306129ff).into()),
+                    unreachable: Some(rgba(0xaca8aeff).into()),
+                    unreachable_background: Some(rgba(0x262a33ff).into()),
+                    unreachable_border: Some(rgba(0x2b2f39ff).into()),
                     warning: Some(rgba(0xfee56dff).into()),
+                    warning_background: Some(rgba(0x5c5015ff).into()),
+                    warning_border: Some(rgba(0x796b26ff).into()),
                     ..Default::default()
                 },
                 player: Some(PlayerColors(vec![

crates/theme2/src/themes/atelier.rs 🔗

@@ -20,36 +20,61 @@ pub fn atelier() -> UserThemeFamily {
                 appearance: Appearance::Light,
                 styles: UserThemeStylesRefinement {
                     colors: ThemeColorsRefinement {
-                        border: Some(rgba(0xd1d0c6ff).into()),
-                        border_variant: Some(rgba(0xedece5ff).into()),
+                        border: Some(rgba(0x969585ff).into()),
+                        border_variant: Some(rgba(0x969585ff).into()),
+                        border_focused: Some(rgba(0xbbddc6ff).into()),
+                        border_selected: Some(rgba(0xbbddc6ff).into()),
+                        border_transparent: Some(rgba(0x00000000).into()),
+                        border_disabled: Some(rgba(0xadac9fff).into()),
                         elevated_surface_background: Some(rgba(0xebeae3ff).into()),
+                        surface_background: Some(rgba(0xebeae3ff).into()),
                         background: Some(rgba(0xc5c4b9ff).into()),
                         panel_background: Some(rgba(0xebeae3ff).into()),
-                        element_hover: Some(rgba(0x96958580).into()),
-                        element_selected: Some(rgba(0x8b8a7880).into()),
+                        element_background: Some(rgba(0xebeae3ff).into()),
+                        element_hover: Some(rgba(0xd1d0c6ff).into()),
+                        element_active: Some(rgba(0x989788ff).into()),
+                        element_selected: Some(rgba(0x989788ff).into()),
+                        element_disabled: Some(rgba(0xebeae3ff).into()),
                         drop_target_background: Some(rgba(0x61604f80).into()),
+                        ghost_element_background: Some(rgba(0x00000000).into()),
+                        ghost_element_hover: Some(rgba(0xd1d0c6ff).into()),
+                        ghost_element_active: Some(rgba(0x989788ff).into()),
+                        ghost_element_selected: Some(rgba(0x989788ff).into()),
+                        ghost_element_disabled: Some(rgba(0xebeae3ff).into()),
                         text: Some(rgba(0x22221bff).into()),
                         text_muted: Some(rgba(0x61604fff).into()),
-                        text_placeholder: Some(rgba(0x878573ff).into()),
-                        text_disabled: Some(rgba(0x22221bff).into()),
+                        text_placeholder: Some(rgba(0x767463ff).into()),
+                        text_disabled: Some(rgba(0x767463ff).into()),
                         text_accent: Some(rgba(0x38a166ff).into()),
+                        icon: Some(rgba(0x22221bff).into()),
+                        icon_muted: Some(rgba(0x61604fff).into()),
+                        icon_disabled: Some(rgba(0x767463ff).into()),
+                        icon_placeholder: Some(rgba(0x61604fff).into()),
+                        icon_accent: Some(rgba(0x38a166ff).into()),
                         status_bar_background: Some(rgba(0xc5c4b9ff).into()),
                         title_bar_background: Some(rgba(0xc5c4b9ff).into()),
                         toolbar_background: Some(rgba(0xf4f3ecff).into()),
                         tab_bar_background: Some(rgba(0xebeae3ff).into()),
                         tab_inactive_background: Some(rgba(0xebeae3ff).into()),
                         tab_active_background: Some(rgba(0xf4f3ecff).into()),
-                        scrollbar_thumb_background: Some(rgba(0x22221b4d).into()),
-                        scrollbar_thumb_hover_background: Some(rgba(0x22221b4d).into()),
-                        scrollbar_thumb_border: Some(rgba(0xedece5ff).into()),
+                        scrollbar_thumb_background: Some(rgba(0x22221b4c).into()),
+                        scrollbar_thumb_hover_background: Some(rgba(0xd1d0c6ff).into()),
+                        scrollbar_thumb_border: Some(rgba(0xd1d0c6ff).into()),
+                        scrollbar_track_background: Some(rgba(0xf4f3ecff).into()),
                         scrollbar_track_border: Some(rgba(0xedece5ff).into()),
                         editor_foreground: Some(rgba(0x302f27ff).into()),
                         editor_background: Some(rgba(0xf4f3ecff).into()),
                         editor_gutter_background: Some(rgba(0xf4f3ecff).into()),
+                        editor_subheader_background: Some(rgba(0xebeae3ff).into()),
+                        editor_active_line_background: Some(rgba(0xebeae3bf).into()),
+                        editor_highlighted_line_background: Some(rgba(0xebeae3ff).into()),
                         editor_line_number: Some(rgba(0x22221b59).into()),
                         editor_active_line_number: Some(rgba(0x22221bff).into()),
+                        editor_invisible: Some(rgba(0x61604fff).into()),
                         editor_wrap_guide: Some(rgba(0x22221b0d).into()),
                         editor_active_wrap_guide: Some(rgba(0x22221b1a).into()),
+                        editor_document_highlight_read_background: Some(rgba(0x38a1661a).into()),
+                        editor_document_highlight_write_background: Some(rgba(0x7a786766).into()),
                         terminal_background: Some(rgba(0xf4f3ecff).into()),
                         terminal_ansi_bright_black: Some(rgba(0x898775ff).into()),
                         terminal_ansi_bright_red: Some(rgba(0xe4af96ff).into()),
@@ -67,16 +92,52 @@ pub fn atelier() -> UserThemeFamily {
                         terminal_ansi_magenta: Some(rgba(0x9d6c7cff).into()),
                         terminal_ansi_cyan: Some(rgba(0x5c9d49ff).into()),
                         terminal_ansi_white: Some(rgba(0x22221bff).into()),
+                        link_text_hover: Some(rgba(0x38a166ff).into()),
                         ..Default::default()
                     },
                     status: StatusColorsRefinement {
-                        created: Some(rgba(0x98ab54ff).into()),
+                        conflict: Some(rgba(0xa59810ff).into()),
+                        conflict_background: Some(rgba(0xf0e9d1ff).into()),
+                        conflict_border: Some(rgba(0xe3d8adff).into()),
+                        created: Some(rgba(0x7d9728ff).into()),
+                        created_background: Some(rgba(0xe6e9d3ff).into()),
+                        created_border: Some(rgba(0xd2d8b1ff).into()),
                         deleted: Some(rgba(0xba6337ff).into()),
+                        deleted_background: Some(rgba(0xf6ded4ff).into()),
+                        deleted_border: Some(rgba(0xedc5b3ff).into()),
                         error: Some(rgba(0xba6337ff).into()),
+                        error_background: Some(rgba(0xf6ded4ff).into()),
+                        error_border: Some(rgba(0xedc5b3ff).into()),
+                        hidden: Some(rgba(0x767463ff).into()),
+                        hidden_background: Some(rgba(0xc5c4b9ff).into()),
+                        hidden_border: Some(rgba(0xadac9fff).into()),
                         hint: Some(rgba(0x768962ff).into()),
+                        hint_background: Some(rgba(0xd9ecdfff).into()),
+                        hint_border: Some(rgba(0xbbddc6ff).into()),
+                        ignored: Some(rgba(0x61604fff).into()),
+                        ignored_background: Some(rgba(0xc5c4b9ff).into()),
+                        ignored_border: Some(rgba(0x969585ff).into()),
+                        info: Some(rgba(0x38a166ff).into()),
+                        info_background: Some(rgba(0xd9ecdfff).into()),
+                        info_border: Some(rgba(0xbbddc6ff).into()),
                         modified: Some(rgba(0xa59810ff).into()),
-                        success: Some(rgba(0x22221bff).into()),
+                        modified_background: Some(rgba(0xf0e9d1ff).into()),
+                        modified_border: Some(rgba(0xe3d8adff).into()),
+                        predictive: Some(rgba(0x7d9728ff).into()),
+                        predictive_background: Some(rgba(0xe6e9d3ff).into()),
+                        predictive_border: Some(rgba(0xd2d8b1ff).into()),
+                        renamed: Some(rgba(0x38a166ff).into()),
+                        renamed_background: Some(rgba(0xd9ecdfff).into()),
+                        renamed_border: Some(rgba(0xbbddc6ff).into()),
+                        success: Some(rgba(0x7d9728ff).into()),
+                        success_background: Some(rgba(0xe6e9d3ff).into()),
+                        success_border: Some(rgba(0xd2d8b1ff).into()),
+                        unreachable: Some(rgba(0x61604fff).into()),
+                        unreachable_background: Some(rgba(0xc5c4b9ff).into()),
+                        unreachable_border: Some(rgba(0x969585ff).into()),
                         warning: Some(rgba(0xa59810ff).into()),
+                        warning_background: Some(rgba(0xf0e9d1ff).into()),
+                        warning_border: Some(rgba(0xe3d8adff).into()),
                         ..Default::default()
                     },
                     player: Some(PlayerColors(vec![
@@ -424,36 +485,61 @@ pub fn atelier() -> UserThemeFamily {
                 appearance: Appearance::Dark,
                 styles: UserThemeStylesRefinement {
                     colors: ThemeColorsRefinement {
-                        border: Some(rgba(0x3b3431ff).into()),
-                        border_variant: Some(rgba(0x251f1dff).into()),
+                        border: Some(rgba(0x665f5cff).into()),
+                        border_variant: Some(rgba(0x665f5cff).into()),
+                        border_focused: Some(rgba(0x192e5bff).into()),
+                        border_selected: Some(rgba(0x192e5bff).into()),
+                        border_transparent: Some(rgba(0x00000000).into()),
+                        border_disabled: Some(rgba(0x554e4bff).into()),
                         elevated_surface_background: Some(rgba(0x27211eff).into()),
+                        surface_background: Some(rgba(0x27211eff).into()),
                         background: Some(rgba(0x443c39ff).into()),
                         panel_background: Some(rgba(0x27211eff).into()),
-                        element_hover: Some(rgba(0x665f5c80).into()),
-                        element_selected: Some(rgba(0x71696680).into()),
+                        element_background: Some(rgba(0x27211eff).into()),
+                        element_hover: Some(rgba(0x3b3431ff).into()),
+                        element_active: Some(rgba(0x645d5aff).into()),
+                        element_selected: Some(rgba(0x645d5aff).into()),
+                        element_disabled: Some(rgba(0x27211eff).into()),
                         drop_target_background: Some(rgba(0xa79f9d80).into()),
+                        ghost_element_background: Some(rgba(0x00000000).into()),
+                        ghost_element_hover: Some(rgba(0x3b3431ff).into()),
+                        ghost_element_active: Some(rgba(0x645d5aff).into()),
+                        ghost_element_selected: Some(rgba(0x645d5aff).into()),
+                        ghost_element_disabled: Some(rgba(0x27211eff).into()),
                         text: Some(rgba(0xf1efeeff).into()),
                         text_muted: Some(rgba(0xa79f9dff).into()),
-                        text_placeholder: Some(rgba(0x766e6bff).into()),
-                        text_disabled: Some(rgba(0xf1efeeff).into()),
+                        text_placeholder: Some(rgba(0x8e8683ff).into()),
+                        text_disabled: Some(rgba(0x8e8683ff).into()),
                         text_accent: Some(rgba(0x417ee6ff).into()),
+                        icon: Some(rgba(0xf1efeeff).into()),
+                        icon_muted: Some(rgba(0xa79f9dff).into()),
+                        icon_disabled: Some(rgba(0x8e8683ff).into()),
+                        icon_placeholder: Some(rgba(0xa79f9dff).into()),
+                        icon_accent: Some(rgba(0x417ee6ff).into()),
                         status_bar_background: Some(rgba(0x443c39ff).into()),
                         title_bar_background: Some(rgba(0x443c39ff).into()),
                         toolbar_background: Some(rgba(0x1b1918ff).into()),
                         tab_bar_background: Some(rgba(0x27211eff).into()),
                         tab_inactive_background: Some(rgba(0x27211eff).into()),
                         tab_active_background: Some(rgba(0x1b1918ff).into()),
-                        scrollbar_thumb_background: Some(rgba(0xf1efee4d).into()),
-                        scrollbar_thumb_hover_background: Some(rgba(0xf1efee4d).into()),
-                        scrollbar_thumb_border: Some(rgba(0x251f1dff).into()),
+                        scrollbar_thumb_background: Some(rgba(0xf1efee4c).into()),
+                        scrollbar_thumb_hover_background: Some(rgba(0x3b3431ff).into()),
+                        scrollbar_thumb_border: Some(rgba(0x3b3431ff).into()),
+                        scrollbar_track_background: Some(rgba(0x1b1918ff).into()),
                         scrollbar_track_border: Some(rgba(0x251f1dff).into()),
                         editor_foreground: Some(rgba(0xe6e2e0ff).into()),
                         editor_background: Some(rgba(0x1b1918ff).into()),
                         editor_gutter_background: Some(rgba(0x1b1918ff).into()),
+                        editor_subheader_background: Some(rgba(0x27211eff).into()),
+                        editor_active_line_background: Some(rgba(0x27211ebf).into()),
+                        editor_highlighted_line_background: Some(rgba(0x27211eff).into()),
                         editor_line_number: Some(rgba(0xf1efee59).into()),
                         editor_active_line_number: Some(rgba(0xf1efeeff).into()),
+                        editor_invisible: Some(rgba(0xa79f9dff).into()),
                         editor_wrap_guide: Some(rgba(0xf1efee0d).into()),
                         editor_active_wrap_guide: Some(rgba(0xf1efee1a).into()),
+                        editor_document_highlight_read_background: Some(rgba(0x417ee61a).into()),
+                        editor_document_highlight_write_background: Some(rgba(0x89817e66).into()),
                         terminal_background: Some(rgba(0x1b1918ff).into()),
                         terminal_ansi_bright_black: Some(rgba(0x746c69ff).into()),
                         terminal_ansi_bright_red: Some(rgba(0x8c1223ff).into()),
@@ -471,16 +557,52 @@ pub fn atelier() -> UserThemeFamily {
                         terminal_ansi_magenta: Some(rgba(0xc340f2ff).into()),
                         terminal_ansi_cyan: Some(rgba(0x3e97b8ff).into()),
                         terminal_ansi_white: Some(rgba(0xf1efeeff).into()),
+                        link_text_hover: Some(rgba(0x417ee6ff).into()),
                         ..Default::default()
                     },
                     status: StatusColorsRefinement {
+                        conflict: Some(rgba(0xc38419ff).into()),
+                        conflict_background: Some(rgba(0x371d0dff).into()),
+                        conflict_border: Some(rgba(0x4f2f12ff).into()),
                         created: Some(rgba(0x7b9727ff).into()),
-                        deleted: Some(rgba(0xc82234ff).into()),
+                        created_background: Some(rgba(0x1d2110ff).into()),
+                        created_border: Some(rgba(0x2e3516ff).into()),
+                        deleted: Some(rgba(0xf22d40ff).into()),
+                        deleted_background: Some(rgba(0x550512ff).into()),
+                        deleted_border: Some(rgba(0x710c1bff).into()),
                         error: Some(rgba(0xf22d40ff).into()),
+                        error_background: Some(rgba(0x550512ff).into()),
+                        error_border: Some(rgba(0x710c1bff).into()),
+                        hidden: Some(rgba(0x8e8683ff).into()),
+                        hidden_background: Some(rgba(0x443c39ff).into()),
+                        hidden_border: Some(rgba(0x554e4bff).into()),
                         hint: Some(rgba(0xa87187ff).into()),
+                        hint_background: Some(rgba(0x0f1d3dff).into()),
+                        hint_border: Some(rgba(0x192e5bff).into()),
+                        ignored: Some(rgba(0xa79f9dff).into()),
+                        ignored_background: Some(rgba(0x443c39ff).into()),
+                        ignored_border: Some(rgba(0x665f5cff).into()),
+                        info: Some(rgba(0x417ee6ff).into()),
+                        info_background: Some(rgba(0x0f1d3dff).into()),
+                        info_border: Some(rgba(0x192e5bff).into()),
                         modified: Some(rgba(0xc38419ff).into()),
-                        success: Some(rgba(0xf1efeeff).into()),
+                        modified_background: Some(rgba(0x371d0dff).into()),
+                        modified_border: Some(rgba(0x4f2f12ff).into()),
+                        predictive: Some(rgba(0x7b9727ff).into()),
+                        predictive_background: Some(rgba(0x1d2110ff).into()),
+                        predictive_border: Some(rgba(0x2e3516ff).into()),
+                        renamed: Some(rgba(0x417ee6ff).into()),
+                        renamed_background: Some(rgba(0x0f1d3dff).into()),
+                        renamed_border: Some(rgba(0x192e5bff).into()),
+                        success: Some(rgba(0x7b9727ff).into()),
+                        success_background: Some(rgba(0x1d2110ff).into()),
+                        success_border: Some(rgba(0x2e3516ff).into()),
+                        unreachable: Some(rgba(0xa79f9dff).into()),
+                        unreachable_background: Some(rgba(0x443c39ff).into()),
+                        unreachable_border: Some(rgba(0x665f5cff).into()),
                         warning: Some(rgba(0xc38419ff).into()),
+                        warning_background: Some(rgba(0x371d0dff).into()),
+                        warning_border: Some(rgba(0x4f2f12ff).into()),
                         ..Default::default()
                     },
                     player: Some(PlayerColors(vec![
@@ -828,36 +950,61 @@ pub fn atelier() -> UserThemeFamily {
                 appearance: Appearance::Light,
                 styles: UserThemeStylesRefinement {
                     colors: ThemeColorsRefinement {
-                        border: Some(rgba(0xc8d1cbff).into()),
-                        border_variant: Some(rgba(0xe5ede7ff).into()),
+                        border: Some(rgba(0x8b968eff).into()),
+                        border_variant: Some(rgba(0x8b968eff).into()),
+                        border_focused: Some(rgba(0xbed4d6ff).into()),
+                        border_selected: Some(rgba(0xbed4d6ff).into()),
+                        border_transparent: Some(rgba(0x00000000).into()),
+                        border_disabled: Some(rgba(0xa3ada6ff).into()),
                         elevated_surface_background: Some(rgba(0xe3ebe6ff).into()),
+                        surface_background: Some(rgba(0xe3ebe6ff).into()),
                         background: Some(rgba(0xbcc5bfff).into()),
                         panel_background: Some(rgba(0xe3ebe6ff).into()),
-                        element_hover: Some(rgba(0x8b968e80).into()),
-                        element_selected: Some(rgba(0x7e8b8280).into()),
+                        element_background: Some(rgba(0xe3ebe6ff).into()),
+                        element_hover: Some(rgba(0xc8d1cbff).into()),
+                        element_active: Some(rgba(0x8d9890ff).into()),
+                        element_selected: Some(rgba(0x8d9890ff).into()),
+                        element_disabled: Some(rgba(0xe3ebe6ff).into()),
                         drop_target_background: Some(rgba(0x54625980).into()),
+                        ghost_element_background: Some(rgba(0x00000000).into()),
+                        ghost_element_hover: Some(rgba(0xc8d1cbff).into()),
+                        ghost_element_active: Some(rgba(0x8d9890ff).into()),
+                        ghost_element_selected: Some(rgba(0x8d9890ff).into()),
+                        ghost_element_disabled: Some(rgba(0xe3ebe6ff).into()),
                         text: Some(rgba(0x171c19ff).into()),
                         text_muted: Some(rgba(0x546259ff).into()),
-                        text_placeholder: Some(rgba(0x79877dff).into()),
-                        text_disabled: Some(rgba(0x171c19ff).into()),
+                        text_placeholder: Some(rgba(0x68766dff).into()),
+                        text_disabled: Some(rgba(0x68766dff).into()),
                         text_accent: Some(rgba(0x488c90ff).into()),
+                        icon: Some(rgba(0x171c19ff).into()),
+                        icon_muted: Some(rgba(0x546259ff).into()),
+                        icon_disabled: Some(rgba(0x68766dff).into()),
+                        icon_placeholder: Some(rgba(0x546259ff).into()),
+                        icon_accent: Some(rgba(0x488c90ff).into()),
                         status_bar_background: Some(rgba(0xbcc5bfff).into()),
                         title_bar_background: Some(rgba(0xbcc5bfff).into()),
                         toolbar_background: Some(rgba(0xecf4eeff).into()),
                         tab_bar_background: Some(rgba(0xe3ebe6ff).into()),
                         tab_inactive_background: Some(rgba(0xe3ebe6ff).into()),
                         tab_active_background: Some(rgba(0xecf4eeff).into()),
-                        scrollbar_thumb_background: Some(rgba(0x171c194d).into()),
-                        scrollbar_thumb_hover_background: Some(rgba(0x171c194d).into()),
-                        scrollbar_thumb_border: Some(rgba(0xe5ede7ff).into()),
+                        scrollbar_thumb_background: Some(rgba(0x171c194c).into()),
+                        scrollbar_thumb_hover_background: Some(rgba(0xc8d1cbff).into()),
+                        scrollbar_thumb_border: Some(rgba(0xc8d1cbff).into()),
+                        scrollbar_track_background: Some(rgba(0xecf4eeff).into()),
                         scrollbar_track_border: Some(rgba(0xe5ede7ff).into()),
                         editor_foreground: Some(rgba(0x232a25ff).into()),
                         editor_background: Some(rgba(0xecf4eeff).into()),
                         editor_gutter_background: Some(rgba(0xecf4eeff).into()),
+                        editor_subheader_background: Some(rgba(0xe3ebe6ff).into()),
+                        editor_active_line_background: Some(rgba(0xe3ebe6bf).into()),
+                        editor_highlighted_line_background: Some(rgba(0xe3ebe6ff).into()),
                         editor_line_number: Some(rgba(0x171c1959).into()),
                         editor_active_line_number: Some(rgba(0x171c19ff).into()),
+                        editor_invisible: Some(rgba(0x546259ff).into()),
                         editor_wrap_guide: Some(rgba(0x171c190d).into()),
                         editor_active_wrap_guide: Some(rgba(0x171c191a).into()),
+                        editor_document_highlight_read_background: Some(rgba(0x488c901a).into()),
+                        editor_document_highlight_write_background: Some(rgba(0x6c7a7166).into()),
                         terminal_background: Some(rgba(0xecf4eeff).into()),
                         terminal_ansi_bright_black: Some(rgba(0x7b897fff).into()),
                         terminal_ansi_bright_red: Some(rgba(0xdeae97ff).into()),
@@ -875,16 +1022,52 @@ pub fn atelier() -> UserThemeFamily {
                         terminal_ansi_magenta: Some(rgba(0x867469ff).into()),
                         terminal_ansi_cyan: Some(rgba(0x1f9aa0ff).into()),
                         terminal_ansi_white: Some(rgba(0x171c19ff).into()),
+                        link_text_hover: Some(rgba(0x488c90ff).into()),
                         ..Default::default()
                     },
                     status: StatusColorsRefinement {
-                        created: Some(rgba(0x6fae80ff).into()),
+                        conflict: Some(rgba(0xa07e3cff).into()),
+                        conflict_background: Some(rgba(0xeee4d5ff).into()),
+                        conflict_border: Some(rgba(0xdfcfb6ff).into()),
+                        created: Some(rgba(0x499963ff).into()),
+                        created_background: Some(rgba(0xdaeadeff).into()),
+                        created_border: Some(rgba(0xbedac5ff).into()),
                         deleted: Some(rgba(0xb1623aff).into()),
+                        deleted_background: Some(rgba(0xf3ded4ff).into()),
+                        deleted_border: Some(rgba(0xe8c5b4ff).into()),
                         error: Some(rgba(0xb1623aff).into()),
+                        error_background: Some(rgba(0xf3ded4ff).into()),
+                        error_border: Some(rgba(0xe8c5b4ff).into()),
+                        hidden: Some(rgba(0x68766dff).into()),
+                        hidden_background: Some(rgba(0xbcc5bfff).into()),
+                        hidden_border: Some(rgba(0xa3ada6ff).into()),
                         hint: Some(rgba(0x66847cff).into()),
+                        hint_background: Some(rgba(0xdae7e8ff).into()),
+                        hint_border: Some(rgba(0xbed4d6ff).into()),
+                        ignored: Some(rgba(0x546259ff).into()),
+                        ignored_background: Some(rgba(0xbcc5bfff).into()),
+                        ignored_border: Some(rgba(0x8b968eff).into()),
+                        info: Some(rgba(0x488c90ff).into()),
+                        info_background: Some(rgba(0xdae7e8ff).into()),
+                        info_border: Some(rgba(0xbed4d6ff).into()),
                         modified: Some(rgba(0xa07e3cff).into()),
-                        success: Some(rgba(0x171c19ff).into()),
+                        modified_background: Some(rgba(0xeee4d5ff).into()),
+                        modified_border: Some(rgba(0xdfcfb6ff).into()),
+                        predictive: Some(rgba(0x499963ff).into()),
+                        predictive_background: Some(rgba(0xdaeadeff).into()),
+                        predictive_border: Some(rgba(0xbedac5ff).into()),
+                        renamed: Some(rgba(0x488c90ff).into()),
+                        renamed_background: Some(rgba(0xdae7e8ff).into()),
+                        renamed_border: Some(rgba(0xbed4d6ff).into()),
+                        success: Some(rgba(0x499963ff).into()),
+                        success_background: Some(rgba(0xdaeadeff).into()),
+                        success_border: Some(rgba(0xbedac5ff).into()),
+                        unreachable: Some(rgba(0x546259ff).into()),
+                        unreachable_background: Some(rgba(0xbcc5bfff).into()),
+                        unreachable_border: Some(rgba(0x8b968eff).into()),
                         warning: Some(rgba(0xa07e3cff).into()),
+                        warning_background: Some(rgba(0xeee4d5ff).into()),
+                        warning_border: Some(rgba(0xdfcfb6ff).into()),
                         ..Default::default()
                     },
                     player: Some(PlayerColors(vec![
@@ -1232,36 +1415,61 @@ pub fn atelier() -> UserThemeFamily {
                 appearance: Appearance::Dark,
                 styles: UserThemeStylesRefinement {
                     colors: ThemeColorsRefinement {
-                        border: Some(rgba(0x332f38ff).into()),
-                        border_variant: Some(rgba(0x201e24ff).into()),
+                        border: Some(rgba(0x56505eff).into()),
+                        border_variant: Some(rgba(0x56505eff).into()),
+                        border_focused: Some(rgba(0x222953ff).into()),
+                        border_selected: Some(rgba(0x222953ff).into()),
+                        border_transparent: Some(rgba(0x00000000).into()),
+                        border_disabled: Some(rgba(0x48434fff).into()),
                         elevated_surface_background: Some(rgba(0x221f26ff).into()),
+                        surface_background: Some(rgba(0x221f26ff).into()),
                         background: Some(rgba(0x3a353fff).into()),
                         panel_background: Some(rgba(0x221f26ff).into()),
-                        element_hover: Some(rgba(0x56505e80).into()),
-                        element_selected: Some(rgba(0x605a6880).into()),
+                        element_background: Some(rgba(0x221f26ff).into()),
+                        element_hover: Some(rgba(0x332f38ff).into()),
+                        element_active: Some(rgba(0x544f5cff).into()),
+                        element_selected: Some(rgba(0x544f5cff).into()),
+                        element_disabled: Some(rgba(0x221f26ff).into()),
                         drop_target_background: Some(rgba(0x89859180).into()),
+                        ghost_element_background: Some(rgba(0x00000000).into()),
+                        ghost_element_hover: Some(rgba(0x332f38ff).into()),
+                        ghost_element_active: Some(rgba(0x544f5cff).into()),
+                        ghost_element_selected: Some(rgba(0x544f5cff).into()),
+                        ghost_element_disabled: Some(rgba(0x221f26ff).into()),
                         text: Some(rgba(0xefecf4ff).into()),
                         text_muted: Some(rgba(0x898591ff).into()),
-                        text_placeholder: Some(rgba(0x655f6dff).into()),
-                        text_disabled: Some(rgba(0xefecf4ff).into()),
+                        text_placeholder: Some(rgba(0x756f7eff).into()),
+                        text_disabled: Some(rgba(0x756f7eff).into()),
                         text_accent: Some(rgba(0x576ddaff).into()),
+                        icon: Some(rgba(0xefecf4ff).into()),
+                        icon_muted: Some(rgba(0x898591ff).into()),
+                        icon_disabled: Some(rgba(0x756f7eff).into()),
+                        icon_placeholder: Some(rgba(0x898591ff).into()),
+                        icon_accent: Some(rgba(0x576ddaff).into()),
                         status_bar_background: Some(rgba(0x3a353fff).into()),
                         title_bar_background: Some(rgba(0x3a353fff).into()),
                         toolbar_background: Some(rgba(0x19171cff).into()),
                         tab_bar_background: Some(rgba(0x221f26ff).into()),
                         tab_inactive_background: Some(rgba(0x221f26ff).into()),
                         tab_active_background: Some(rgba(0x19171cff).into()),
-                        scrollbar_thumb_background: Some(rgba(0xefecf44d).into()),
-                        scrollbar_thumb_hover_background: Some(rgba(0xefecf44d).into()),
-                        scrollbar_thumb_border: Some(rgba(0x201e24ff).into()),
+                        scrollbar_thumb_background: Some(rgba(0xefecf44c).into()),
+                        scrollbar_thumb_hover_background: Some(rgba(0x332f38ff).into()),
+                        scrollbar_thumb_border: Some(rgba(0x332f38ff).into()),
+                        scrollbar_track_background: Some(rgba(0x19171cff).into()),
                         scrollbar_track_border: Some(rgba(0x201e24ff).into()),
                         editor_foreground: Some(rgba(0xe2dfe7ff).into()),
                         editor_background: Some(rgba(0x19171cff).into()),
                         editor_gutter_background: Some(rgba(0x19171cff).into()),
+                        editor_subheader_background: Some(rgba(0x221f26ff).into()),
+                        editor_active_line_background: Some(rgba(0x221f26bf).into()),
+                        editor_highlighted_line_background: Some(rgba(0x221f26ff).into()),
                         editor_line_number: Some(rgba(0xefecf459).into()),
                         editor_active_line_number: Some(rgba(0xefecf4ff).into()),
+                        editor_invisible: Some(rgba(0x898591ff).into()),
                         editor_wrap_guide: Some(rgba(0xefecf40d).into()),
                         editor_active_wrap_guide: Some(rgba(0xefecf41a).into()),
+                        editor_document_highlight_read_background: Some(rgba(0x576dda1a).into()),
+                        editor_document_highlight_write_background: Some(rgba(0x726c7a66).into()),
                         terminal_background: Some(rgba(0x19171cff).into()),
                         terminal_ansi_bright_black: Some(rgba(0x635d6bff).into()),
                         terminal_ansi_bright_red: Some(rgba(0x5c283cff).into()),
@@ -1279,16 +1487,52 @@ pub fn atelier() -> UserThemeFamily {
                         terminal_ansi_magenta: Some(rgba(0xbf41bfff).into()),
                         terminal_ansi_cyan: Some(rgba(0x3a8bc6ff).into()),
                         terminal_ansi_white: Some(rgba(0xefecf4ff).into()),
+                        link_text_hover: Some(rgba(0x576ddaff).into()),
                         ..Default::default()
                     },
                     status: StatusColorsRefinement {
+                        conflict: Some(rgba(0xa06e3bff).into()),
+                        conflict_background: Some(rgba(0x231a12ff).into()),
+                        conflict_border: Some(rgba(0x392a1aff).into()),
                         created: Some(rgba(0x2c9292ff).into()),
-                        deleted: Some(rgba(0x953a5fff).into()),
+                        created_background: Some(rgba(0x132020ff).into()),
+                        created_border: Some(rgba(0x1a3434ff).into()),
+                        deleted: Some(rgba(0xbe4678ff).into()),
+                        deleted_background: Some(rgba(0x28151cff).into()),
+                        deleted_border: Some(rgba(0x421f2dff).into()),
                         error: Some(rgba(0xbe4678ff).into()),
+                        error_background: Some(rgba(0x28151cff).into()),
+                        error_border: Some(rgba(0x421f2dff).into()),
+                        hidden: Some(rgba(0x756f7eff).into()),
+                        hidden_background: Some(rgba(0x3a353fff).into()),
+                        hidden_border: Some(rgba(0x48434fff).into()),
                         hint: Some(rgba(0x716998ff).into()),
+                        hint_background: Some(rgba(0x161a36ff).into()),
+                        hint_border: Some(rgba(0x222953ff).into()),
+                        ignored: Some(rgba(0x898591ff).into()),
+                        ignored_background: Some(rgba(0x3a353fff).into()),
+                        ignored_border: Some(rgba(0x56505eff).into()),
+                        info: Some(rgba(0x576ddaff).into()),
+                        info_background: Some(rgba(0x161a36ff).into()),
+                        info_border: Some(rgba(0x222953ff).into()),
                         modified: Some(rgba(0xa06e3bff).into()),
-                        success: Some(rgba(0xefecf4ff).into()),
+                        modified_background: Some(rgba(0x231a12ff).into()),
+                        modified_border: Some(rgba(0x392a1aff).into()),
+                        predictive: Some(rgba(0x2c9292ff).into()),
+                        predictive_background: Some(rgba(0x132020ff).into()),
+                        predictive_border: Some(rgba(0x1a3434ff).into()),
+                        renamed: Some(rgba(0x576ddaff).into()),
+                        renamed_background: Some(rgba(0x161a36ff).into()),
+                        renamed_border: Some(rgba(0x222953ff).into()),
+                        success: Some(rgba(0x2c9292ff).into()),
+                        success_background: Some(rgba(0x132020ff).into()),
+                        success_border: Some(rgba(0x1a3434ff).into()),
+                        unreachable: Some(rgba(0x898591ff).into()),
+                        unreachable_background: Some(rgba(0x3a353fff).into()),
+                        unreachable_border: Some(rgba(0x56505eff).into()),
                         warning: Some(rgba(0xa06e3bff).into()),
+                        warning_background: Some(rgba(0x231a12ff).into()),
+                        warning_border: Some(rgba(0x392a1aff).into()),
                         ..Default::default()
                     },
                     player: Some(PlayerColors(vec![
@@ -1636,36 +1880,61 @@ pub fn atelier() -> UserThemeFamily {
                 appearance: Appearance::Dark,
                 styles: UserThemeStylesRefinement {
                     colors: ThemeColorsRefinement {
-                        border: Some(rgba(0x3c3b31ff).into()),
-                        border_variant: Some(rgba(0x2a2922ff).into()),
+                        border: Some(rgba(0x5d5c4cff).into()),
+                        border_variant: Some(rgba(0x5d5c4cff).into()),
+                        border_focused: Some(rgba(0x1c3927ff).into()),
+                        border_selected: Some(rgba(0x1c3927ff).into()),
+                        border_transparent: Some(rgba(0x00000000).into()),
+                        border_disabled: Some(rgba(0x504f41ff).into()),
                         elevated_surface_background: Some(rgba(0x2c2b23ff).into()),
+                        surface_background: Some(rgba(0x2c2b23ff).into()),
                         background: Some(rgba(0x424136ff).into()),
                         panel_background: Some(rgba(0x2c2b23ff).into()),
-                        element_hover: Some(rgba(0x5d5c4c80).into()),
-                        element_selected: Some(rgba(0x67665580).into()),
+                        element_background: Some(rgba(0x2c2b23ff).into()),
+                        element_hover: Some(rgba(0x3c3b31ff).into()),
+                        element_active: Some(rgba(0x5c5b4bff).into()),
+                        element_selected: Some(rgba(0x5c5b4bff).into()),
+                        element_disabled: Some(rgba(0x2c2b23ff).into()),
                         drop_target_background: Some(rgba(0x91907f80).into()),
+                        ghost_element_background: Some(rgba(0x00000000).into()),
+                        ghost_element_hover: Some(rgba(0x3c3b31ff).into()),
+                        ghost_element_active: Some(rgba(0x5c5b4bff).into()),
+                        ghost_element_selected: Some(rgba(0x5c5b4bff).into()),
+                        ghost_element_disabled: Some(rgba(0x2c2b23ff).into()),
                         text: Some(rgba(0xf4f3ecff).into()),
                         text_muted: Some(rgba(0x91907fff).into()),
-                        text_placeholder: Some(rgba(0x6c6b5aff).into()),
-                        text_disabled: Some(rgba(0xf4f3ecff).into()),
+                        text_placeholder: Some(rgba(0x7d7c6aff).into()),
+                        text_disabled: Some(rgba(0x7d7c6aff).into()),
                         text_accent: Some(rgba(0x37a166ff).into()),
+                        icon: Some(rgba(0xf4f3ecff).into()),
+                        icon_muted: Some(rgba(0x91907fff).into()),
+                        icon_disabled: Some(rgba(0x7d7c6aff).into()),
+                        icon_placeholder: Some(rgba(0x91907fff).into()),
+                        icon_accent: Some(rgba(0x37a166ff).into()),
                         status_bar_background: Some(rgba(0x424136ff).into()),
                         title_bar_background: Some(rgba(0x424136ff).into()),
                         toolbar_background: Some(rgba(0x22221bff).into()),
                         tab_bar_background: Some(rgba(0x2c2b23ff).into()),
                         tab_inactive_background: Some(rgba(0x2c2b23ff).into()),
                         tab_active_background: Some(rgba(0x22221bff).into()),
-                        scrollbar_thumb_background: Some(rgba(0xf4f3ec4d).into()),
-                        scrollbar_thumb_hover_background: Some(rgba(0xf4f3ec4d).into()),
-                        scrollbar_thumb_border: Some(rgba(0x2a2922ff).into()),
+                        scrollbar_thumb_background: Some(rgba(0xf4f3ec4c).into()),
+                        scrollbar_thumb_hover_background: Some(rgba(0x3c3b31ff).into()),
+                        scrollbar_thumb_border: Some(rgba(0x3c3b31ff).into()),
+                        scrollbar_track_background: Some(rgba(0x22221bff).into()),
                         scrollbar_track_border: Some(rgba(0x2a2922ff).into()),
                         editor_foreground: Some(rgba(0xe7e6dfff).into()),
                         editor_background: Some(rgba(0x22221bff).into()),
                         editor_gutter_background: Some(rgba(0x22221bff).into()),
+                        editor_subheader_background: Some(rgba(0x2c2b23ff).into()),
+                        editor_active_line_background: Some(rgba(0x2c2b23bf).into()),
+                        editor_highlighted_line_background: Some(rgba(0x2c2b23ff).into()),
                         editor_line_number: Some(rgba(0xf4f3ec59).into()),
                         editor_active_line_number: Some(rgba(0xf4f3ecff).into()),
+                        editor_invisible: Some(rgba(0x91907fff).into()),
                         editor_wrap_guide: Some(rgba(0xf4f3ec0d).into()),
                         editor_active_wrap_guide: Some(rgba(0xf4f3ec1a).into()),
+                        editor_document_highlight_read_background: Some(rgba(0x37a1661a).into()),
+                        editor_document_highlight_write_background: Some(rgba(0x7a786766).into()),
                         terminal_background: Some(rgba(0x22221bff).into()),
                         terminal_ansi_bright_black: Some(rgba(0x6a6958ff).into()),
                         terminal_ansi_bright_red: Some(rgba(0x5c331fff).into()),
@@ -1683,16 +1952,52 @@ pub fn atelier() -> UserThemeFamily {
                         terminal_ansi_magenta: Some(rgba(0x9d6c7cff).into()),
                         terminal_ansi_cyan: Some(rgba(0x5b9d48ff).into()),
                         terminal_ansi_white: Some(rgba(0xf4f3ecff).into()),
+                        link_text_hover: Some(rgba(0x37a166ff).into()),
                         ..Default::default()
                     },
                     status: StatusColorsRefinement {
+                        conflict: Some(rgba(0xa59810ff).into()),
+                        conflict_background: Some(rgba(0x25210dff).into()),
+                        conflict_border: Some(rgba(0x3b3612ff).into()),
                         created: Some(rgba(0x7d9727ff).into()),
-                        deleted: Some(rgba(0x934e2dff).into()),
+                        created_background: Some(rgba(0x1e2110ff).into()),
+                        created_border: Some(rgba(0x2f3516ff).into()),
+                        deleted: Some(rgba(0xba6237ff).into()),
+                        deleted_background: Some(rgba(0x2b1811ff).into()),
+                        deleted_border: Some(rgba(0x442619ff).into()),
                         error: Some(rgba(0xba6237ff).into()),
+                        error_background: Some(rgba(0x2b1811ff).into()),
+                        error_border: Some(rgba(0x442619ff).into()),
+                        hidden: Some(rgba(0x7d7c6aff).into()),
+                        hidden_background: Some(rgba(0x424136ff).into()),
+                        hidden_border: Some(rgba(0x504f41ff).into()),
                         hint: Some(rgba(0x70825bff).into()),
+                        hint_background: Some(rgba(0x142319ff).into()),
+                        hint_border: Some(rgba(0x1c3927ff).into()),
+                        ignored: Some(rgba(0x91907fff).into()),
+                        ignored_background: Some(rgba(0x424136ff).into()),
+                        ignored_border: Some(rgba(0x5d5c4cff).into()),
+                        info: Some(rgba(0x37a166ff).into()),
+                        info_background: Some(rgba(0x142319ff).into()),
+                        info_border: Some(rgba(0x1c3927ff).into()),
                         modified: Some(rgba(0xa59810ff).into()),
-                        success: Some(rgba(0xf4f3ecff).into()),
+                        modified_background: Some(rgba(0x25210dff).into()),
+                        modified_border: Some(rgba(0x3b3612ff).into()),
+                        predictive: Some(rgba(0x7d9727ff).into()),
+                        predictive_background: Some(rgba(0x1e2110ff).into()),
+                        predictive_border: Some(rgba(0x2f3516ff).into()),
+                        renamed: Some(rgba(0x37a166ff).into()),
+                        renamed_background: Some(rgba(0x142319ff).into()),
+                        renamed_border: Some(rgba(0x1c3927ff).into()),
+                        success: Some(rgba(0x7d9727ff).into()),
+                        success_background: Some(rgba(0x1e2110ff).into()),
+                        success_border: Some(rgba(0x2f3516ff).into()),
+                        unreachable: Some(rgba(0x91907fff).into()),
+                        unreachable_background: Some(rgba(0x424136ff).into()),
+                        unreachable_border: Some(rgba(0x5d5c4cff).into()),
                         warning: Some(rgba(0xa59810ff).into()),
+                        warning_background: Some(rgba(0x25210dff).into()),
+                        warning_border: Some(rgba(0x3b3612ff).into()),
                         ..Default::default()
                     },
                     player: Some(PlayerColors(vec![
@@ -2040,36 +2345,61 @@ pub fn atelier() -> UserThemeFamily {
                 appearance: Appearance::Dark,
                 styles: UserThemeStylesRefinement {
                     colors: ThemeColorsRefinement {
-                        border: Some(rgba(0x363f62ff).into()),
-                        border_variant: Some(rgba(0x252d4fff).into()),
+                        border: Some(rgba(0x5c6485ff).into()),
+                        border_variant: Some(rgba(0x5c6485ff).into()),
+                        border_focused: Some(rgba(0x203348ff).into()),
+                        border_selected: Some(rgba(0x203348ff).into()),
+                        border_transparent: Some(rgba(0x00000000).into()),
+                        border_disabled: Some(rgba(0x4d5577ff).into()),
                         elevated_surface_background: Some(rgba(0x262f51ff).into()),
+                        surface_background: Some(rgba(0x262f51ff).into()),
                         background: Some(rgba(0x3e4769ff).into()),
                         panel_background: Some(rgba(0x262f51ff).into()),
-                        element_hover: Some(rgba(0x5c648580).into()),
-                        element_selected: Some(rgba(0x666e8f80).into()),
+                        element_background: Some(rgba(0x262f51ff).into()),
+                        element_hover: Some(rgba(0x363f62ff).into()),
+                        element_active: Some(rgba(0x5a6284ff).into()),
+                        element_selected: Some(rgba(0x5a6284ff).into()),
+                        element_disabled: Some(rgba(0x262f51ff).into()),
                         drop_target_background: Some(rgba(0x959bb280).into()),
+                        ghost_element_background: Some(rgba(0x00000000).into()),
+                        ghost_element_hover: Some(rgba(0x363f62ff).into()),
+                        ghost_element_active: Some(rgba(0x5a6284ff).into()),
+                        ghost_element_selected: Some(rgba(0x5a6284ff).into()),
+                        ghost_element_disabled: Some(rgba(0x262f51ff).into()),
                         text: Some(rgba(0xf5f7ffff).into()),
                         text_muted: Some(rgba(0x959bb2ff).into()),
-                        text_placeholder: Some(rgba(0x6b7394ff).into()),
-                        text_disabled: Some(rgba(0xf5f7ffff).into()),
+                        text_placeholder: Some(rgba(0x7e849eff).into()),
+                        text_disabled: Some(rgba(0x7e849eff).into()),
                         text_accent: Some(rgba(0x3e8fd0ff).into()),
+                        icon: Some(rgba(0xf5f7ffff).into()),
+                        icon_muted: Some(rgba(0x959bb2ff).into()),
+                        icon_disabled: Some(rgba(0x7e849eff).into()),
+                        icon_placeholder: Some(rgba(0x959bb2ff).into()),
+                        icon_accent: Some(rgba(0x3e8fd0ff).into()),
                         status_bar_background: Some(rgba(0x3e4769ff).into()),
                         title_bar_background: Some(rgba(0x3e4769ff).into()),
                         toolbar_background: Some(rgba(0x202746ff).into()),
                         tab_bar_background: Some(rgba(0x262f51ff).into()),
                         tab_inactive_background: Some(rgba(0x262f51ff).into()),
                         tab_active_background: Some(rgba(0x202746ff).into()),
-                        scrollbar_thumb_background: Some(rgba(0xf5f7ff4d).into()),
-                        scrollbar_thumb_hover_background: Some(rgba(0xf5f7ff4d).into()),
-                        scrollbar_thumb_border: Some(rgba(0x252d4fff).into()),
+                        scrollbar_thumb_background: Some(rgba(0xf5f7ff4c).into()),
+                        scrollbar_thumb_hover_background: Some(rgba(0x363f62ff).into()),
+                        scrollbar_thumb_border: Some(rgba(0x363f62ff).into()),
+                        scrollbar_track_background: Some(rgba(0x202746ff).into()),
                         scrollbar_track_border: Some(rgba(0x252d4fff).into()),
                         editor_foreground: Some(rgba(0xdfe2f1ff).into()),
                         editor_background: Some(rgba(0x202746ff).into()),
                         editor_gutter_background: Some(rgba(0x202746ff).into()),
+                        editor_subheader_background: Some(rgba(0x262f51ff).into()),
+                        editor_active_line_background: Some(rgba(0x262f51bf).into()),
+                        editor_highlighted_line_background: Some(rgba(0x262f51ff).into()),
                         editor_line_number: Some(rgba(0xf5f7ff59).into()),
                         editor_active_line_number: Some(rgba(0xf5f7ffff).into()),
+                        editor_invisible: Some(rgba(0x959bb2ff).into()),
                         editor_wrap_guide: Some(rgba(0xf5f7ff0d).into()),
                         editor_active_wrap_guide: Some(rgba(0xf5f7ff1a).into()),
+                        editor_document_highlight_read_background: Some(rgba(0x3e8fd01a).into()),
+                        editor_document_highlight_write_background: Some(rgba(0x7a819c66).into()),
                         terminal_background: Some(rgba(0x202746ff).into()),
                         terminal_ansi_bright_black: Some(rgba(0x697192ff).into()),
                         terminal_ansi_bright_red: Some(rgba(0x6d2616ff).into()),
@@ -2087,16 +2417,52 @@ pub fn atelier() -> UserThemeFamily {
                         terminal_ansi_magenta: Some(rgba(0x9c637aff).into()),
                         terminal_ansi_cyan: Some(rgba(0x25a2c9ff).into()),
                         terminal_ansi_white: Some(rgba(0xf5f7ffff).into()),
+                        link_text_hover: Some(rgba(0x3e8fd0ff).into()),
                         ..Default::default()
                     },
                     status: StatusColorsRefinement {
+                        conflict: Some(rgba(0xc08b31ff).into()),
+                        conflict_background: Some(rgba(0x311e11ff).into()),
+                        conflict_border: Some(rgba(0x4b3218ff).into()),
                         created: Some(rgba(0xac973aff).into()),
-                        deleted: Some(rgba(0xa33a1eff).into()),
+                        created_background: Some(rgba(0x252113ff).into()),
+                        created_border: Some(rgba(0x3d351bff).into()),
+                        deleted: Some(rgba(0xc94923ff).into()),
+                        deleted_background: Some(rgba(0x3c120dff).into()),
+                        deleted_border: Some(rgba(0x551c13ff).into()),
                         error: Some(rgba(0xc94923ff).into()),
+                        error_background: Some(rgba(0x3c120dff).into()),
+                        error_border: Some(rgba(0x551c13ff).into()),
+                        hidden: Some(rgba(0x7e849eff).into()),
+                        hidden_background: Some(rgba(0x3e4769ff).into()),
+                        hidden_border: Some(rgba(0x4d5577ff).into()),
                         hint: Some(rgba(0x6d82a6ff).into()),
+                        hint_background: Some(rgba(0x161f2bff).into()),
+                        hint_border: Some(rgba(0x203348ff).into()),
+                        ignored: Some(rgba(0x959bb2ff).into()),
+                        ignored_background: Some(rgba(0x3e4769ff).into()),
+                        ignored_border: Some(rgba(0x5c6485ff).into()),
+                        info: Some(rgba(0x3e8fd0ff).into()),
+                        info_background: Some(rgba(0x161f2bff).into()),
+                        info_border: Some(rgba(0x203348ff).into()),
                         modified: Some(rgba(0xc08b31ff).into()),
-                        success: Some(rgba(0xf5f7ffff).into()),
+                        modified_background: Some(rgba(0x311e11ff).into()),
+                        modified_border: Some(rgba(0x4b3218ff).into()),
+                        predictive: Some(rgba(0xac973aff).into()),
+                        predictive_background: Some(rgba(0x252113ff).into()),
+                        predictive_border: Some(rgba(0x3d351bff).into()),
+                        renamed: Some(rgba(0x3e8fd0ff).into()),
+                        renamed_background: Some(rgba(0x161f2bff).into()),
+                        renamed_border: Some(rgba(0x203348ff).into()),
+                        success: Some(rgba(0xac973aff).into()),
+                        success_background: Some(rgba(0x252113ff).into()),
+                        success_border: Some(rgba(0x3d351bff).into()),
+                        unreachable: Some(rgba(0x959bb2ff).into()),
+                        unreachable_background: Some(rgba(0x3e4769ff).into()),
+                        unreachable_border: Some(rgba(0x5c6485ff).into()),
                         warning: Some(rgba(0xc08b31ff).into()),
+                        warning_background: Some(rgba(0x311e11ff).into()),
+                        warning_border: Some(rgba(0x4b3218ff).into()),
                         ..Default::default()
                     },
                     player: Some(PlayerColors(vec![
@@ -2444,36 +2810,61 @@ pub fn atelier() -> UserThemeFamily {
                 appearance: Appearance::Light,
                 styles: UserThemeStylesRefinement {
                     colors: ThemeColorsRefinement {
-                        border: Some(rgba(0xccd0e1ff).into()),
-                        border_variant: Some(rgba(0xe9ebf7ff).into()),
+                        border: Some(rgba(0x9a9fb6ff).into()),
+                        border_variant: Some(rgba(0x9a9fb6ff).into()),
+                        border_focused: Some(rgba(0xc2d5efff).into()),
+                        border_selected: Some(rgba(0xc2d5efff).into()),
+                        border_transparent: Some(rgba(0x00000000).into()),
+                        border_disabled: Some(rgba(0xaeb3c7ff).into()),
                         elevated_surface_background: Some(rgba(0xe5e8f5ff).into()),
+                        surface_background: Some(rgba(0xe5e8f5ff).into()),
                         background: Some(rgba(0xc2c6d9ff).into()),
                         panel_background: Some(rgba(0xe5e8f5ff).into()),
-                        element_hover: Some(rgba(0x9a9fb680).into()),
-                        element_selected: Some(rgba(0x8e94aa80).into()),
+                        element_background: Some(rgba(0xe5e8f5ff).into()),
+                        element_hover: Some(rgba(0xccd0e1ff).into()),
+                        element_active: Some(rgba(0x9ca1b8ff).into()),
+                        element_selected: Some(rgba(0x9ca1b8ff).into()),
+                        element_disabled: Some(rgba(0xe5e8f5ff).into()),
                         drop_target_background: Some(rgba(0x60688980).into()),
+                        ghost_element_background: Some(rgba(0x00000000).into()),
+                        ghost_element_hover: Some(rgba(0xccd0e1ff).into()),
+                        ghost_element_active: Some(rgba(0x9ca1b8ff).into()),
+                        ghost_element_selected: Some(rgba(0x9ca1b8ff).into()),
+                        ghost_element_disabled: Some(rgba(0xe5e8f5ff).into()),
                         text: Some(rgba(0x202746ff).into()),
                         text_muted: Some(rgba(0x606889ff).into()),
-                        text_placeholder: Some(rgba(0x898fa5ff).into()),
-                        text_disabled: Some(rgba(0x202746ff).into()),
+                        text_placeholder: Some(rgba(0x767d9aff).into()),
+                        text_disabled: Some(rgba(0x767d9aff).into()),
                         text_accent: Some(rgba(0x3f8fd0ff).into()),
+                        icon: Some(rgba(0x202746ff).into()),
+                        icon_muted: Some(rgba(0x606889ff).into()),
+                        icon_disabled: Some(rgba(0x767d9aff).into()),
+                        icon_placeholder: Some(rgba(0x606889ff).into()),
+                        icon_accent: Some(rgba(0x3f8fd0ff).into()),
                         status_bar_background: Some(rgba(0xc2c6d9ff).into()),
                         title_bar_background: Some(rgba(0xc2c6d9ff).into()),
                         toolbar_background: Some(rgba(0xf5f7ffff).into()),
                         tab_bar_background: Some(rgba(0xe5e8f5ff).into()),
                         tab_inactive_background: Some(rgba(0xe5e8f5ff).into()),
                         tab_active_background: Some(rgba(0xf5f7ffff).into()),
-                        scrollbar_thumb_background: Some(rgba(0x2027464d).into()),
-                        scrollbar_thumb_hover_background: Some(rgba(0x2027464d).into()),
-                        scrollbar_thumb_border: Some(rgba(0xe9ebf7ff).into()),
+                        scrollbar_thumb_background: Some(rgba(0x2027464c).into()),
+                        scrollbar_thumb_hover_background: Some(rgba(0xccd0e1ff).into()),
+                        scrollbar_thumb_border: Some(rgba(0xccd0e1ff).into()),
+                        scrollbar_track_background: Some(rgba(0xf5f7ffff).into()),
                         scrollbar_track_border: Some(rgba(0xe9ebf7ff).into()),
                         editor_foreground: Some(rgba(0x293256ff).into()),
                         editor_background: Some(rgba(0xf5f7ffff).into()),
                         editor_gutter_background: Some(rgba(0xf5f7ffff).into()),
+                        editor_subheader_background: Some(rgba(0xe5e8f5ff).into()),
+                        editor_active_line_background: Some(rgba(0xe5e8f5bf).into()),
+                        editor_highlighted_line_background: Some(rgba(0xe5e8f5ff).into()),
                         editor_line_number: Some(rgba(0x20274659).into()),
                         editor_active_line_number: Some(rgba(0x202746ff).into()),
+                        editor_invisible: Some(rgba(0x606889ff).into()),
                         editor_wrap_guide: Some(rgba(0x2027460d).into()),
                         editor_active_wrap_guide: Some(rgba(0x2027461a).into()),
+                        editor_document_highlight_read_background: Some(rgba(0x3f8fd01a).into()),
+                        editor_document_highlight_write_background: Some(rgba(0x7a819c66).into()),
                         terminal_background: Some(rgba(0xf5f7ffff).into()),
                         terminal_ansi_bright_black: Some(rgba(0x8b91a7ff).into()),
                         terminal_ansi_bright_red: Some(rgba(0xefa58cff).into()),
@@ -2491,16 +2882,52 @@ pub fn atelier() -> UserThemeFamily {
                         terminal_ansi_magenta: Some(rgba(0x9c637aff).into()),
                         terminal_ansi_cyan: Some(rgba(0x25a2c9ff).into()),
                         terminal_ansi_white: Some(rgba(0x202746ff).into()),
+                        link_text_hover: Some(rgba(0x3f8fd0ff).into()),
                         ..Default::default()
                     },
                     status: StatusColorsRefinement {
-                        created: Some(rgba(0xbfab61ff).into()),
+                        conflict: Some(rgba(0xc08b31ff).into()),
+                        conflict_background: Some(rgba(0xf6e6d4ff).into()),
+                        conflict_border: Some(rgba(0xeed4b3ff).into()),
+                        created: Some(rgba(0xac973aff).into()),
+                        created_background: Some(rgba(0xf1e9d6ff).into()),
+                        created_border: Some(rgba(0xe4d8b7ff).into()),
                         deleted: Some(rgba(0xc94a23ff).into()),
+                        deleted_background: Some(rgba(0xfcdad0ff).into()),
+                        deleted_border: Some(rgba(0xf6beabff).into()),
                         error: Some(rgba(0xc94a23ff).into()),
+                        error_background: Some(rgba(0xfcdad0ff).into()),
+                        error_border: Some(rgba(0xf6beabff).into()),
+                        hidden: Some(rgba(0x767d9aff).into()),
+                        hidden_background: Some(rgba(0xc2c6d9ff).into()),
+                        hidden_border: Some(rgba(0xaeb3c7ff).into()),
                         hint: Some(rgba(0x7087b2ff).into()),
+                        hint_background: Some(rgba(0xdde7f6ff).into()),
+                        hint_border: Some(rgba(0xc2d5efff).into()),
+                        ignored: Some(rgba(0x606889ff).into()),
+                        ignored_background: Some(rgba(0xc2c6d9ff).into()),
+                        ignored_border: Some(rgba(0x9a9fb6ff).into()),
+                        info: Some(rgba(0x3f8fd0ff).into()),
+                        info_background: Some(rgba(0xdde7f6ff).into()),
+                        info_border: Some(rgba(0xc2d5efff).into()),
                         modified: Some(rgba(0xc08b31ff).into()),
-                        success: Some(rgba(0x202746ff).into()),
+                        modified_background: Some(rgba(0xf6e6d4ff).into()),
+                        modified_border: Some(rgba(0xeed4b3ff).into()),
+                        predictive: Some(rgba(0xac973aff).into()),
+                        predictive_background: Some(rgba(0xf1e9d6ff).into()),
+                        predictive_border: Some(rgba(0xe4d8b7ff).into()),
+                        renamed: Some(rgba(0x3f8fd0ff).into()),
+                        renamed_background: Some(rgba(0xdde7f6ff).into()),
+                        renamed_border: Some(rgba(0xc2d5efff).into()),
+                        success: Some(rgba(0xac973aff).into()),
+                        success_background: Some(rgba(0xf1e9d6ff).into()),
+                        success_border: Some(rgba(0xe4d8b7ff).into()),
+                        unreachable: Some(rgba(0x606889ff).into()),
+                        unreachable_background: Some(rgba(0xc2c6d9ff).into()),
+                        unreachable_border: Some(rgba(0x9a9fb6ff).into()),
                         warning: Some(rgba(0xc08b31ff).into()),
+                        warning_background: Some(rgba(0xf6e6d4ff).into()),
+                        warning_border: Some(rgba(0xeed4b3ff).into()),
                         ..Default::default()
                     },
                     player: Some(PlayerColors(vec![
@@ -2848,36 +3275,61 @@ pub fn atelier() -> UserThemeFamily {
                 appearance: Appearance::Dark,
                 styles: UserThemeStylesRefinement {
                     colors: ThemeColorsRefinement {
-                        border: Some(rgba(0x3b3933ff).into()),
-                        border_variant: Some(rgba(0x252521ff).into()),
+                        border: Some(rgba(0x6c695cff).into()),
+                        border_variant: Some(rgba(0x6c695cff).into()),
+                        border_focused: Some(rgba(0x263056ff).into()),
+                        border_selected: Some(rgba(0x263056ff).into()),
+                        border_transparent: Some(rgba(0x00000000).into()),
+                        border_disabled: Some(rgba(0x58564bff).into()),
                         elevated_surface_background: Some(rgba(0x262622ff).into()),
+                        surface_background: Some(rgba(0x262622ff).into()),
                         background: Some(rgba(0x45433bff).into()),
                         panel_background: Some(rgba(0x262622ff).into()),
-                        element_hover: Some(rgba(0x6c695c80).into()),
-                        element_selected: Some(rgba(0x77746480).into()),
+                        element_background: Some(rgba(0x262622ff).into()),
+                        element_hover: Some(rgba(0x3b3933ff).into()),
+                        element_active: Some(rgba(0x6a675aff).into()),
+                        element_selected: Some(rgba(0x6a675aff).into()),
+                        element_disabled: Some(rgba(0x262622ff).into()),
                         drop_target_background: Some(rgba(0xa4a08b80).into()),
+                        ghost_element_background: Some(rgba(0x00000000).into()),
+                        ghost_element_hover: Some(rgba(0x3b3933ff).into()),
+                        ghost_element_active: Some(rgba(0x6a675aff).into()),
+                        ghost_element_selected: Some(rgba(0x6a675aff).into()),
+                        ghost_element_disabled: Some(rgba(0x262622ff).into()),
                         text: Some(rgba(0xfefbecff).into()),
                         text_muted: Some(rgba(0xa4a08bff).into()),
-                        text_placeholder: Some(rgba(0x7c7968ff).into()),
-                        text_disabled: Some(rgba(0xfefbecff).into()),
+                        text_placeholder: Some(rgba(0x8f8b77ff).into()),
+                        text_disabled: Some(rgba(0x8f8b77ff).into()),
                         text_accent: Some(rgba(0x6684e0ff).into()),
+                        icon: Some(rgba(0xfefbecff).into()),
+                        icon_muted: Some(rgba(0xa4a08bff).into()),
+                        icon_disabled: Some(rgba(0x8f8b77ff).into()),
+                        icon_placeholder: Some(rgba(0xa4a08bff).into()),
+                        icon_accent: Some(rgba(0x6684e0ff).into()),
                         status_bar_background: Some(rgba(0x45433bff).into()),
                         title_bar_background: Some(rgba(0x45433bff).into()),
                         toolbar_background: Some(rgba(0x20201dff).into()),
                         tab_bar_background: Some(rgba(0x262622ff).into()),
                         tab_inactive_background: Some(rgba(0x262622ff).into()),
                         tab_active_background: Some(rgba(0x20201dff).into()),
-                        scrollbar_thumb_background: Some(rgba(0xfefbec4d).into()),
-                        scrollbar_thumb_hover_background: Some(rgba(0xfefbec4d).into()),
-                        scrollbar_thumb_border: Some(rgba(0x252521ff).into()),
+                        scrollbar_thumb_background: Some(rgba(0xfefbec4c).into()),
+                        scrollbar_thumb_hover_background: Some(rgba(0x3b3933ff).into()),
+                        scrollbar_thumb_border: Some(rgba(0x3b3933ff).into()),
+                        scrollbar_track_background: Some(rgba(0x20201dff).into()),
                         scrollbar_track_border: Some(rgba(0x252521ff).into()),
                         editor_foreground: Some(rgba(0xe8e4cfff).into()),
                         editor_background: Some(rgba(0x20201dff).into()),
                         editor_gutter_background: Some(rgba(0x20201dff).into()),
+                        editor_subheader_background: Some(rgba(0x262622ff).into()),
+                        editor_active_line_background: Some(rgba(0x262622bf).into()),
+                        editor_highlighted_line_background: Some(rgba(0x262622ff).into()),
                         editor_line_number: Some(rgba(0xfefbec59).into()),
                         editor_active_line_number: Some(rgba(0xfefbecff).into()),
+                        editor_invisible: Some(rgba(0xa4a08bff).into()),
                         editor_wrap_guide: Some(rgba(0xfefbec0d).into()),
                         editor_active_wrap_guide: Some(rgba(0xfefbec1a).into()),
+                        editor_document_highlight_read_background: Some(rgba(0x6684e01a).into()),
+                        editor_document_highlight_write_background: Some(rgba(0x8b887466).into()),
                         terminal_background: Some(rgba(0x20201dff).into()),
                         terminal_ansi_bright_black: Some(rgba(0x7a7766ff).into()),
                         terminal_ansi_bright_red: Some(rgba(0x781c1fff).into()),
@@ -2895,16 +3347,52 @@ pub fn atelier() -> UserThemeFamily {
                         terminal_ansi_magenta: Some(rgba(0xd43652ff).into()),
                         terminal_ansi_cyan: Some(rgba(0x21ad83ff).into()),
                         terminal_ansi_white: Some(rgba(0xfefbecff).into()),
+                        link_text_hover: Some(rgba(0x6684e0ff).into()),
                         ..Default::default()
                     },
                     status: StatusColorsRefinement {
+                        conflict: Some(rgba(0xae9515ff).into()),
+                        conflict_background: Some(rgba(0x2a200eff).into()),
+                        conflict_border: Some(rgba(0x413513ff).into()),
                         created: Some(rgba(0x60ac3aff).into()),
-                        deleted: Some(rgba(0xaf2c2eff).into()),
+                        created_background: Some(rgba(0x1a2413ff).into()),
+                        created_border: Some(rgba(0x273c1bff).into()),
+                        deleted: Some(rgba(0xd73837ff).into()),
+                        deleted_background: Some(rgba(0x450d11ff).into()),
+                        deleted_border: Some(rgba(0x5f1519ff).into()),
                         error: Some(rgba(0xd73837ff).into()),
+                        error_background: Some(rgba(0x450d11ff).into()),
+                        error_border: Some(rgba(0x5f1519ff).into()),
+                        hidden: Some(rgba(0x8f8b77ff).into()),
+                        hidden_background: Some(rgba(0x45433bff).into()),
+                        hidden_border: Some(rgba(0x58564bff).into()),
                         hint: Some(rgba(0xb17272ff).into()),
+                        hint_background: Some(rgba(0x171e39ff).into()),
+                        hint_border: Some(rgba(0x263056ff).into()),
+                        ignored: Some(rgba(0xa4a08bff).into()),
+                        ignored_background: Some(rgba(0x45433bff).into()),
+                        ignored_border: Some(rgba(0x6c695cff).into()),
+                        info: Some(rgba(0x6684e0ff).into()),
+                        info_background: Some(rgba(0x171e39ff).into()),
+                        info_border: Some(rgba(0x263056ff).into()),
                         modified: Some(rgba(0xae9515ff).into()),
-                        success: Some(rgba(0xfefbecff).into()),
+                        modified_background: Some(rgba(0x2a200eff).into()),
+                        modified_border: Some(rgba(0x413513ff).into()),
+                        predictive: Some(rgba(0x60ac3aff).into()),
+                        predictive_background: Some(rgba(0x1a2413ff).into()),
+                        predictive_border: Some(rgba(0x273c1bff).into()),
+                        renamed: Some(rgba(0x6684e0ff).into()),
+                        renamed_background: Some(rgba(0x171e39ff).into()),
+                        renamed_border: Some(rgba(0x263056ff).into()),
+                        success: Some(rgba(0x60ac3aff).into()),
+                        success_background: Some(rgba(0x1a2413ff).into()),
+                        success_border: Some(rgba(0x273c1bff).into()),
+                        unreachable: Some(rgba(0xa4a08bff).into()),
+                        unreachable_background: Some(rgba(0x45433bff).into()),
+                        unreachable_border: Some(rgba(0x6c695cff).into()),
                         warning: Some(rgba(0xae9515ff).into()),
+                        warning_background: Some(rgba(0x2a200eff).into()),
+                        warning_border: Some(rgba(0x413513ff).into()),
                         ..Default::default()
                     },
                     player: Some(PlayerColors(vec![

crates/theme2/src/themes/ayu.rs 🔗

@@ -20,36 +20,61 @@ pub fn ayu() -> UserThemeFamily {
                 appearance: Appearance::Dark,
                 styles: UserThemeStylesRefinement {
                     colors: ThemeColorsRefinement {
-                        border: Some(rgba(0x2d2f34ff).into()),
-                        border_variant: Some(rgba(0x1b1e24ff).into()),
+                        border: Some(rgba(0x3f4043ff).into()),
+                        border_variant: Some(rgba(0x3f4043ff).into()),
+                        border_focused: Some(rgba(0x1b4a6eff).into()),
+                        border_selected: Some(rgba(0x1b4a6eff).into()),
+                        border_transparent: Some(rgba(0x00000000).into()),
+                        border_disabled: Some(rgba(0x383a3eff).into()),
                         elevated_surface_background: Some(rgba(0x1f2127ff).into()),
+                        surface_background: Some(rgba(0x1f2127ff).into()),
                         background: Some(rgba(0x313337ff).into()),
                         panel_background: Some(rgba(0x1f2127ff).into()),
-                        element_hover: Some(rgba(0x3f404380).into()),
-                        element_selected: Some(rgba(0x50515280).into()),
+                        element_background: Some(rgba(0x1f2127ff).into()),
+                        element_hover: Some(rgba(0x2d2f34ff).into()),
+                        element_active: Some(rgba(0x3e4043ff).into()),
+                        element_selected: Some(rgba(0x3e4043ff).into()),
+                        element_disabled: Some(rgba(0x1f2127ff).into()),
                         drop_target_background: Some(rgba(0x8a898680).into()),
+                        ghost_element_background: Some(rgba(0x00000000).into()),
+                        ghost_element_hover: Some(rgba(0x2d2f34ff).into()),
+                        ghost_element_active: Some(rgba(0x3e4043ff).into()),
+                        ghost_element_selected: Some(rgba(0x3e4043ff).into()),
+                        ghost_element_disabled: Some(rgba(0x1f2127ff).into()),
                         text: Some(rgba(0xbfbdb6ff).into()),
                         text_muted: Some(rgba(0x8a8986ff).into()),
-                        text_placeholder: Some(rgba(0x58595aff).into()),
-                        text_disabled: Some(rgba(0xbfbdb6ff).into()),
+                        text_placeholder: Some(rgba(0x696a6aff).into()),
+                        text_disabled: Some(rgba(0x696a6aff).into()),
                         text_accent: Some(rgba(0x5ac2feff).into()),
+                        icon: Some(rgba(0xbfbdb6ff).into()),
+                        icon_muted: Some(rgba(0x8a8986ff).into()),
+                        icon_disabled: Some(rgba(0x696a6aff).into()),
+                        icon_placeholder: Some(rgba(0x8a8986ff).into()),
+                        icon_accent: Some(rgba(0x5ac2feff).into()),
                         status_bar_background: Some(rgba(0x313337ff).into()),
                         title_bar_background: Some(rgba(0x313337ff).into()),
                         toolbar_background: Some(rgba(0x0d1017ff).into()),
                         tab_bar_background: Some(rgba(0x1f2127ff).into()),
                         tab_inactive_background: Some(rgba(0x1f2127ff).into()),
                         tab_active_background: Some(rgba(0x0d1017ff).into()),
-                        scrollbar_thumb_background: Some(rgba(0xbfbdb64d).into()),
-                        scrollbar_thumb_hover_background: Some(rgba(0xbfbdb64d).into()),
-                        scrollbar_thumb_border: Some(rgba(0x1b1e24ff).into()),
+                        scrollbar_thumb_background: Some(rgba(0xbfbdb64c).into()),
+                        scrollbar_thumb_hover_background: Some(rgba(0x2d2f34ff).into()),
+                        scrollbar_thumb_border: Some(rgba(0x2d2f34ff).into()),
+                        scrollbar_track_background: Some(rgba(0x0d1017ff).into()),
                         scrollbar_track_border: Some(rgba(0x1b1e24ff).into()),
                         editor_foreground: Some(rgba(0xbfbdb6ff).into()),
                         editor_background: Some(rgba(0x0d1017ff).into()),
                         editor_gutter_background: Some(rgba(0x0d1017ff).into()),
+                        editor_subheader_background: Some(rgba(0x1f2127ff).into()),
+                        editor_active_line_background: Some(rgba(0x1f2127bf).into()),
+                        editor_highlighted_line_background: Some(rgba(0x1f2127ff).into()),
                         editor_line_number: Some(rgba(0xbfbdb659).into()),
                         editor_active_line_number: Some(rgba(0xbfbdb6ff).into()),
+                        editor_invisible: Some(rgba(0x8a8986ff).into()),
                         editor_wrap_guide: Some(rgba(0xbfbdb60d).into()),
                         editor_active_wrap_guide: Some(rgba(0xbfbdb61a).into()),
+                        editor_document_highlight_read_background: Some(rgba(0x5ac2fe1a).into()),
+                        editor_document_highlight_write_background: Some(rgba(0x66676766).into()),
                         terminal_background: Some(rgba(0x0d1017ff).into()),
                         terminal_ansi_bright_black: Some(rgba(0x545557ff).into()),
                         terminal_ansi_bright_red: Some(rgba(0x83363cff).into()),
@@ -67,16 +92,52 @@ pub fn ayu() -> UserThemeFamily {
                         terminal_ansi_magenta: Some(rgba(0x3abae5ff).into()),
                         terminal_ansi_cyan: Some(rgba(0x95e5cbff).into()),
                         terminal_ansi_white: Some(rgba(0xbfbdb6ff).into()),
+                        link_text_hover: Some(rgba(0x5ac2feff).into()),
                         ..Default::default()
                     },
                     status: StatusColorsRefinement {
+                        conflict: Some(rgba(0xfeb454ff).into()),
+                        conflict_background: Some(rgba(0x572916ff).into()),
+                        conflict_border: Some(rgba(0x754221ff).into()),
                         created: Some(rgba(0xaad84cff).into()),
-                        deleted: Some(rgba(0xc3595fff).into()),
+                        created_background: Some(rgba(0x294113ff).into()),
+                        created_border: Some(rgba(0x405c1dff).into()),
+                        deleted: Some(rgba(0xef7178ff).into()),
+                        deleted_background: Some(rgba(0x48171cff).into()),
+                        deleted_border: Some(rgba(0x66272dff).into()),
                         error: Some(rgba(0xef7178ff).into()),
+                        error_background: Some(rgba(0x48171cff).into()),
+                        error_border: Some(rgba(0x66272dff).into()),
+                        hidden: Some(rgba(0x696a6aff).into()),
+                        hidden_background: Some(rgba(0x313337ff).into()),
+                        hidden_border: Some(rgba(0x383a3eff).into()),
                         hint: Some(rgba(0x638c81ff).into()),
+                        hint_background: Some(rgba(0x0d304fff).into()),
+                        hint_border: Some(rgba(0x1b4a6eff).into()),
+                        ignored: Some(rgba(0x8a8986ff).into()),
+                        ignored_background: Some(rgba(0x313337ff).into()),
+                        ignored_border: Some(rgba(0x3f4043ff).into()),
+                        info: Some(rgba(0x5ac2feff).into()),
+                        info_background: Some(rgba(0x0d304fff).into()),
+                        info_border: Some(rgba(0x1b4a6eff).into()),
                         modified: Some(rgba(0xfeb454ff).into()),
-                        success: Some(rgba(0xbfbdb6ff).into()),
+                        modified_background: Some(rgba(0x572916ff).into()),
+                        modified_border: Some(rgba(0x754221ff).into()),
+                        predictive: Some(rgba(0xaad84cff).into()),
+                        predictive_background: Some(rgba(0x294113ff).into()),
+                        predictive_border: Some(rgba(0x405c1dff).into()),
+                        renamed: Some(rgba(0x5ac2feff).into()),
+                        renamed_background: Some(rgba(0x0d304fff).into()),
+                        renamed_border: Some(rgba(0x1b4a6eff).into()),
+                        success: Some(rgba(0xaad84cff).into()),
+                        success_background: Some(rgba(0x294113ff).into()),
+                        success_border: Some(rgba(0x405c1dff).into()),
+                        unreachable: Some(rgba(0x8a8986ff).into()),
+                        unreachable_background: Some(rgba(0x313337ff).into()),
+                        unreachable_border: Some(rgba(0x3f4043ff).into()),
                         warning: Some(rgba(0xfeb454ff).into()),
+                        warning_background: Some(rgba(0x572916ff).into()),
+                        warning_border: Some(rgba(0x754221ff).into()),
                         ..Default::default()
                     },
                     player: Some(PlayerColors(vec![
@@ -403,36 +464,61 @@ pub fn ayu() -> UserThemeFamily {
                 appearance: Appearance::Light,
                 styles: UserThemeStylesRefinement {
                     colors: ThemeColorsRefinement {
-                        border: Some(rgba(0xdfe0e1ff).into()),
-                        border_variant: Some(rgba(0xefeff0ff).into()),
+                        border: Some(rgba(0xcfd1d2ff).into()),
+                        border_variant: Some(rgba(0xcfd1d2ff).into()),
+                        border_focused: Some(rgba(0xc4daf6ff).into()),
+                        border_selected: Some(rgba(0xc4daf6ff).into()),
+                        border_transparent: Some(rgba(0x00000000).into()),
+                        border_disabled: Some(rgba(0xd5d6d8ff).into()),
                         elevated_surface_background: Some(rgba(0xececedff).into()),
+                        surface_background: Some(rgba(0xececedff).into()),
                         background: Some(rgba(0xdcdddeff).into()),
                         panel_background: Some(rgba(0xececedff).into()),
-                        element_hover: Some(rgba(0xcfd1d280).into()),
-                        element_selected: Some(rgba(0xc0c2c480).into()),
+                        element_background: Some(rgba(0xececedff).into()),
+                        element_hover: Some(rgba(0xdfe0e1ff).into()),
+                        element_active: Some(rgba(0xd0d1d3ff).into()),
+                        element_selected: Some(rgba(0xd0d1d3ff).into()),
+                        element_disabled: Some(rgba(0xececedff).into()),
                         drop_target_background: Some(rgba(0x8c8f9380).into()),
+                        ghost_element_background: Some(rgba(0x00000000).into()),
+                        ghost_element_hover: Some(rgba(0xdfe0e1ff).into()),
+                        ghost_element_active: Some(rgba(0xd0d1d3ff).into()),
+                        ghost_element_selected: Some(rgba(0xd0d1d3ff).into()),
+                        ghost_element_disabled: Some(rgba(0xececedff).into()),
                         text: Some(rgba(0x5c6166ff).into()),
                         text_muted: Some(rgba(0x8c8f93ff).into()),
-                        text_placeholder: Some(rgba(0xb9bbbdff).into()),
-                        text_disabled: Some(rgba(0x5c6166ff).into()),
+                        text_placeholder: Some(rgba(0xa9acaeff).into()),
+                        text_disabled: Some(rgba(0xa9acaeff).into()),
                         text_accent: Some(rgba(0x3b9ee5ff).into()),
+                        icon: Some(rgba(0x5c6166ff).into()),
+                        icon_muted: Some(rgba(0x8c8f93ff).into()),
+                        icon_disabled: Some(rgba(0xa9acaeff).into()),
+                        icon_placeholder: Some(rgba(0x8c8f93ff).into()),
+                        icon_accent: Some(rgba(0x3b9ee5ff).into()),
                         status_bar_background: Some(rgba(0xdcdddeff).into()),
                         title_bar_background: Some(rgba(0xdcdddeff).into()),
                         toolbar_background: Some(rgba(0xfcfcfcff).into()),
                         tab_bar_background: Some(rgba(0xececedff).into()),
                         tab_inactive_background: Some(rgba(0xececedff).into()),
                         tab_active_background: Some(rgba(0xfcfcfcff).into()),
-                        scrollbar_thumb_background: Some(rgba(0x5c61664d).into()),
-                        scrollbar_thumb_hover_background: Some(rgba(0x5c61664d).into()),
-                        scrollbar_thumb_border: Some(rgba(0xefeff0ff).into()),
+                        scrollbar_thumb_background: Some(rgba(0x5c61664c).into()),
+                        scrollbar_thumb_hover_background: Some(rgba(0xdfe0e1ff).into()),
+                        scrollbar_thumb_border: Some(rgba(0xdfe0e1ff).into()),
+                        scrollbar_track_background: Some(rgba(0xfcfcfcff).into()),
                         scrollbar_track_border: Some(rgba(0xefeff0ff).into()),
                         editor_foreground: Some(rgba(0x5c6166ff).into()),
                         editor_background: Some(rgba(0xfcfcfcff).into()),
                         editor_gutter_background: Some(rgba(0xfcfcfcff).into()),
+                        editor_subheader_background: Some(rgba(0xececedff).into()),
+                        editor_active_line_background: Some(rgba(0xececedbf).into()),
+                        editor_highlighted_line_background: Some(rgba(0xececedff).into()),
                         editor_line_number: Some(rgba(0x5c616659).into()),
                         editor_active_line_number: Some(rgba(0x5c6166ff).into()),
+                        editor_invisible: Some(rgba(0x8c8f93ff).into()),
                         editor_wrap_guide: Some(rgba(0x5c61660d).into()),
                         editor_active_wrap_guide: Some(rgba(0x5c61661a).into()),
+                        editor_document_highlight_read_background: Some(rgba(0x3b9ee51a).into()),
+                        editor_document_highlight_write_background: Some(rgba(0xacafb166).into()),
                         terminal_background: Some(rgba(0xfcfcfcff).into()),
                         terminal_ansi_bright_black: Some(rgba(0xbcbec0ff).into()),
                         terminal_ansi_bright_red: Some(rgba(0xfebab6ff).into()),
@@ -450,16 +536,52 @@ pub fn ayu() -> UserThemeFamily {
                         terminal_ansi_magenta: Some(rgba(0x56b4d3ff).into()),
                         terminal_ansi_cyan: Some(rgba(0x4dbf99ff).into()),
                         terminal_ansi_white: Some(rgba(0x5c6166ff).into()),
+                        link_text_hover: Some(rgba(0x3b9ee5ff).into()),
                         ..Default::default()
                     },
                     status: StatusColorsRefinement {
-                        created: Some(rgba(0xa1c24bff).into()),
+                        conflict: Some(rgba(0xf1ae4aff).into()),
+                        conflict_background: Some(rgba(0xffeedaff).into()),
+                        conflict_border: Some(rgba(0xffe1beff).into()),
+                        created: Some(rgba(0x86b305ff).into()),
+                        created_background: Some(rgba(0xe9efd2ff).into()),
+                        created_border: Some(rgba(0xd7e3aeff).into()),
                         deleted: Some(rgba(0xef7271ff).into()),
+                        deleted_background: Some(rgba(0xffe3e1ff).into()),
+                        deleted_border: Some(rgba(0xffcdcaff).into()),
                         error: Some(rgba(0xef7271ff).into()),
+                        error_background: Some(rgba(0xffe3e1ff).into()),
+                        error_border: Some(rgba(0xffcdcaff).into()),
+                        hidden: Some(rgba(0xa9acaeff).into()),
+                        hidden_background: Some(rgba(0xdcdddeff).into()),
+                        hidden_border: Some(rgba(0xd5d6d8ff).into()),
                         hint: Some(rgba(0x8ca7c2ff).into()),
+                        hint_background: Some(rgba(0xdeebfaff).into()),
+                        hint_border: Some(rgba(0xc4daf6ff).into()),
+                        ignored: Some(rgba(0x8c8f93ff).into()),
+                        ignored_background: Some(rgba(0xdcdddeff).into()),
+                        ignored_border: Some(rgba(0xcfd1d2ff).into()),
+                        info: Some(rgba(0x3b9ee5ff).into()),
+                        info_background: Some(rgba(0xdeebfaff).into()),
+                        info_border: Some(rgba(0xc4daf6ff).into()),
                         modified: Some(rgba(0xf1ae4aff).into()),
-                        success: Some(rgba(0x5c6166ff).into()),
+                        modified_background: Some(rgba(0xffeedaff).into()),
+                        modified_border: Some(rgba(0xffe1beff).into()),
+                        predictive: Some(rgba(0x86b305ff).into()),
+                        predictive_background: Some(rgba(0xe9efd2ff).into()),
+                        predictive_border: Some(rgba(0xd7e3aeff).into()),
+                        renamed: Some(rgba(0x3b9ee5ff).into()),
+                        renamed_background: Some(rgba(0xdeebfaff).into()),
+                        renamed_border: Some(rgba(0xc4daf6ff).into()),
+                        success: Some(rgba(0x86b305ff).into()),
+                        success_background: Some(rgba(0xe9efd2ff).into()),
+                        success_border: Some(rgba(0xd7e3aeff).into()),
+                        unreachable: Some(rgba(0x8c8f93ff).into()),
+                        unreachable_background: Some(rgba(0xdcdddeff).into()),
+                        unreachable_border: Some(rgba(0xcfd1d2ff).into()),
                         warning: Some(rgba(0xf1ae4aff).into()),
+                        warning_background: Some(rgba(0xffeedaff).into()),
+                        warning_border: Some(rgba(0xffe1beff).into()),
                         ..Default::default()
                     },
                     player: Some(PlayerColors(vec![
@@ -786,36 +908,61 @@ pub fn ayu() -> UserThemeFamily {
                 appearance: Appearance::Dark,
                 styles: UserThemeStylesRefinement {
                     colors: ThemeColorsRefinement {
-                        border: Some(rgba(0x43464fff).into()),
-                        border_variant: Some(rgba(0x323641ff).into()),
+                        border: Some(rgba(0x53565dff).into()),
+                        border_variant: Some(rgba(0x53565dff).into()),
+                        border_focused: Some(rgba(0x24556fff).into()),
+                        border_selected: Some(rgba(0x24556fff).into()),
+                        border_transparent: Some(rgba(0x00000000).into()),
+                        border_disabled: Some(rgba(0x4d5058ff).into()),
                         elevated_surface_background: Some(rgba(0x353944ff).into()),
+                        surface_background: Some(rgba(0x353944ff).into()),
                         background: Some(rgba(0x464a52ff).into()),
                         panel_background: Some(rgba(0x353944ff).into()),
-                        element_hover: Some(rgba(0x53565d80).into()),
-                        element_selected: Some(rgba(0x63656a80).into()),
+                        element_background: Some(rgba(0x353944ff).into()),
+                        element_hover: Some(rgba(0x43464fff).into()),
+                        element_active: Some(rgba(0x53565dff).into()),
+                        element_selected: Some(rgba(0x53565dff).into()),
+                        element_disabled: Some(rgba(0x353944ff).into()),
                         drop_target_background: Some(rgba(0x9a9a9880).into()),
+                        ghost_element_background: Some(rgba(0x00000000).into()),
+                        ghost_element_hover: Some(rgba(0x43464fff).into()),
+                        ghost_element_active: Some(rgba(0x53565dff).into()),
+                        ghost_element_selected: Some(rgba(0x53565dff).into()),
+                        ghost_element_disabled: Some(rgba(0x353944ff).into()),
                         text: Some(rgba(0xcccac2ff).into()),
                         text_muted: Some(rgba(0x9a9a98ff).into()),
-                        text_placeholder: Some(rgba(0x6b6d71ff).into()),
-                        text_disabled: Some(rgba(0xcccac2ff).into()),
+                        text_placeholder: Some(rgba(0x7b7d7fff).into()),
+                        text_disabled: Some(rgba(0x7b7d7fff).into()),
                         text_accent: Some(rgba(0x73cffeff).into()),
+                        icon: Some(rgba(0xcccac2ff).into()),
+                        icon_muted: Some(rgba(0x9a9a98ff).into()),
+                        icon_disabled: Some(rgba(0x7b7d7fff).into()),
+                        icon_placeholder: Some(rgba(0x9a9a98ff).into()),
+                        icon_accent: Some(rgba(0x73cffeff).into()),
                         status_bar_background: Some(rgba(0x464a52ff).into()),
                         title_bar_background: Some(rgba(0x464a52ff).into()),
                         toolbar_background: Some(rgba(0x242936ff).into()),
                         tab_bar_background: Some(rgba(0x353944ff).into()),
                         tab_inactive_background: Some(rgba(0x353944ff).into()),
                         tab_active_background: Some(rgba(0x242936ff).into()),
-                        scrollbar_thumb_background: Some(rgba(0xcccac24d).into()),
-                        scrollbar_thumb_hover_background: Some(rgba(0xcccac24d).into()),
-                        scrollbar_thumb_border: Some(rgba(0x323641ff).into()),
+                        scrollbar_thumb_background: Some(rgba(0xcccac24c).into()),
+                        scrollbar_thumb_hover_background: Some(rgba(0x43464fff).into()),
+                        scrollbar_thumb_border: Some(rgba(0x43464fff).into()),
+                        scrollbar_track_background: Some(rgba(0x242936ff).into()),
                         scrollbar_track_border: Some(rgba(0x323641ff).into()),
                         editor_foreground: Some(rgba(0xcccac2ff).into()),
                         editor_background: Some(rgba(0x242936ff).into()),
                         editor_gutter_background: Some(rgba(0x242936ff).into()),
+                        editor_subheader_background: Some(rgba(0x353944ff).into()),
+                        editor_active_line_background: Some(rgba(0x353944bf).into()),
+                        editor_highlighted_line_background: Some(rgba(0x353944ff).into()),
                         editor_line_number: Some(rgba(0xcccac259).into()),
                         editor_active_line_number: Some(rgba(0xcccac2ff).into()),
+                        editor_invisible: Some(rgba(0x9a9a98ff).into()),
                         editor_wrap_guide: Some(rgba(0xcccac20d).into()),
                         editor_active_wrap_guide: Some(rgba(0xcccac21a).into()),
+                        editor_document_highlight_read_background: Some(rgba(0x73cffe1a).into()),
+                        editor_document_highlight_write_background: Some(rgba(0x787a7c66).into()),
                         terminal_background: Some(rgba(0x242936ff).into()),
                         terminal_ansi_bright_black: Some(rgba(0x67696eff).into()),
                         terminal_ansi_bright_red: Some(rgba(0x83403dff).into()),
@@ -833,16 +980,52 @@ pub fn ayu() -> UserThemeFamily {
                         terminal_ansi_magenta: Some(rgba(0x5ccee5ff).into()),
                         terminal_ansi_cyan: Some(rgba(0x95e5cbff).into()),
                         terminal_ansi_white: Some(rgba(0xcccac2ff).into()),
+                        link_text_hover: Some(rgba(0x73cffeff).into()),
                         ..Default::default()
                     },
                     status: StatusColorsRefinement {
+                        conflict: Some(rgba(0xfed073ff).into()),
+                        conflict_background: Some(rgba(0x584018ff).into()),
+                        conflict_border: Some(rgba(0x765a29ff).into()),
                         created: Some(rgba(0xd5fe80ff).into()),
-                        deleted: Some(rgba(0xc46a60ff).into()),
+                        created_background: Some(rgba(0x426118ff).into()),
+                        created_border: Some(rgba(0x5d7e2cff).into()),
+                        deleted: Some(rgba(0xf18779ff).into()),
+                        deleted_background: Some(rgba(0x481b1cff).into()),
+                        deleted_border: Some(rgba(0x662e2dff).into()),
                         error: Some(rgba(0xf18779ff).into()),
+                        error_background: Some(rgba(0x481b1cff).into()),
+                        error_border: Some(rgba(0x662e2dff).into()),
+                        hidden: Some(rgba(0x7b7d7fff).into()),
+                        hidden_background: Some(rgba(0x464a52ff).into()),
+                        hidden_border: Some(rgba(0x4d5058ff).into()),
                         hint: Some(rgba(0x7399a3ff).into()),
+                        hint_background: Some(rgba(0x123a50ff).into()),
+                        hint_border: Some(rgba(0x24556fff).into()),
+                        ignored: Some(rgba(0x9a9a98ff).into()),
+                        ignored_background: Some(rgba(0x464a52ff).into()),
+                        ignored_border: Some(rgba(0x53565dff).into()),
+                        info: Some(rgba(0x73cffeff).into()),
+                        info_background: Some(rgba(0x123a50ff).into()),
+                        info_border: Some(rgba(0x24556fff).into()),
                         modified: Some(rgba(0xfed073ff).into()),
-                        success: Some(rgba(0xcccac2ff).into()),
+                        modified_background: Some(rgba(0x584018ff).into()),
+                        modified_border: Some(rgba(0x765a29ff).into()),
+                        predictive: Some(rgba(0xd5fe80ff).into()),
+                        predictive_background: Some(rgba(0x426118ff).into()),
+                        predictive_border: Some(rgba(0x5d7e2cff).into()),
+                        renamed: Some(rgba(0x73cffeff).into()),
+                        renamed_background: Some(rgba(0x123a50ff).into()),
+                        renamed_border: Some(rgba(0x24556fff).into()),
+                        success: Some(rgba(0xd5fe80ff).into()),
+                        success_background: Some(rgba(0x426118ff).into()),
+                        success_border: Some(rgba(0x5d7e2cff).into()),
+                        unreachable: Some(rgba(0x9a9a98ff).into()),
+                        unreachable_background: Some(rgba(0x464a52ff).into()),
+                        unreachable_border: Some(rgba(0x53565dff).into()),
                         warning: Some(rgba(0xfed073ff).into()),
+                        warning_background: Some(rgba(0x584018ff).into()),
+                        warning_border: Some(rgba(0x765a29ff).into()),
                         ..Default::default()
                     },
                     player: Some(PlayerColors(vec![

crates/theme2/src/themes/gruvbox.rs 🔗

@@ -20,36 +20,61 @@ pub fn gruvbox() -> UserThemeFamily {
                 appearance: Appearance::Light,
                 styles: UserThemeStylesRefinement {
                     colors: ThemeColorsRefinement {
-                        border: Some(rgba(0xddcca7ff).into()),
-                        border_variant: Some(rgba(0xefe2bcff).into()),
+                        border: Some(rgba(0xc9b99aff).into()),
+                        border_variant: Some(rgba(0xc9b99aff).into()),
+                        border_focused: Some(rgba(0xaec6cdff).into()),
+                        border_selected: Some(rgba(0xaec6cdff).into()),
+                        border_transparent: Some(rgba(0x00000000).into()),
+                        border_disabled: Some(rgba(0xd1c09eff).into()),
                         elevated_surface_background: Some(rgba(0xecddb5ff).into()),
+                        surface_background: Some(rgba(0xecddb5ff).into()),
                         background: Some(rgba(0xd9c8a4ff).into()),
                         panel_background: Some(rgba(0xecddb5ff).into()),
-                        element_hover: Some(rgba(0xc9b99a80).into()),
-                        element_selected: Some(rgba(0xb5a68e80).into()),
+                        element_background: Some(rgba(0xecddb5ff).into()),
+                        element_hover: Some(rgba(0xddcca7ff).into()),
+                        element_active: Some(rgba(0xc9b99aff).into()),
+                        element_selected: Some(rgba(0xc9b99aff).into()),
+                        element_disabled: Some(rgba(0xecddb5ff).into()),
                         drop_target_background: Some(rgba(0x5f565080).into()),
+                        ghost_element_background: Some(rgba(0x00000000).into()),
+                        ghost_element_hover: Some(rgba(0xddcca7ff).into()),
+                        ghost_element_active: Some(rgba(0xc9b99aff).into()),
+                        ghost_element_selected: Some(rgba(0xc9b99aff).into()),
+                        ghost_element_disabled: Some(rgba(0xecddb5ff).into()),
                         text: Some(rgba(0x282828ff).into()),
                         text_muted: Some(rgba(0x5f5650ff).into()),
-                        text_placeholder: Some(rgba(0xad9e87ff).into()),
-                        text_disabled: Some(rgba(0x282828ff).into()),
+                        text_placeholder: Some(rgba(0x8a7c6fff).into()),
+                        text_disabled: Some(rgba(0x8a7c6fff).into()),
                         text_accent: Some(rgba(0x0b6678ff).into()),
+                        icon: Some(rgba(0x282828ff).into()),
+                        icon_muted: Some(rgba(0x5f5650ff).into()),
+                        icon_disabled: Some(rgba(0x8a7c6fff).into()),
+                        icon_placeholder: Some(rgba(0x5f5650ff).into()),
+                        icon_accent: Some(rgba(0x0b6678ff).into()),
                         status_bar_background: Some(rgba(0xd9c8a4ff).into()),
                         title_bar_background: Some(rgba(0xd9c8a4ff).into()),
                         toolbar_background: Some(rgba(0xf9f5d7ff).into()),
                         tab_bar_background: Some(rgba(0xecddb5ff).into()),
                         tab_inactive_background: Some(rgba(0xecddb5ff).into()),
                         tab_active_background: Some(rgba(0xf9f5d7ff).into()),
-                        scrollbar_thumb_background: Some(rgba(0x2828284d).into()),
-                        scrollbar_thumb_hover_background: Some(rgba(0x2828284d).into()),
-                        scrollbar_thumb_border: Some(rgba(0xefe2bcff).into()),
+                        scrollbar_thumb_background: Some(rgba(0x2828284c).into()),
+                        scrollbar_thumb_hover_background: Some(rgba(0xddcca7ff).into()),
+                        scrollbar_thumb_border: Some(rgba(0xddcca7ff).into()),
+                        scrollbar_track_background: Some(rgba(0xf9f5d7ff).into()),
                         scrollbar_track_border: Some(rgba(0xefe2bcff).into()),
                         editor_foreground: Some(rgba(0x282828ff).into()),
                         editor_background: Some(rgba(0xf9f5d7ff).into()),
                         editor_gutter_background: Some(rgba(0xf9f5d7ff).into()),
+                        editor_subheader_background: Some(rgba(0xecddb5ff).into()),
+                        editor_active_line_background: Some(rgba(0xecddb5bf).into()),
+                        editor_highlighted_line_background: Some(rgba(0xecddb5ff).into()),
                         editor_line_number: Some(rgba(0x28282859).into()),
                         editor_active_line_number: Some(rgba(0x282828ff).into()),
+                        editor_invisible: Some(rgba(0x5f5650ff).into()),
                         editor_wrap_guide: Some(rgba(0x2828280d).into()),
                         editor_active_wrap_guide: Some(rgba(0x2828281a).into()),
+                        editor_document_highlight_read_background: Some(rgba(0x0b66781a).into()),
+                        editor_document_highlight_write_background: Some(rgba(0x92847466).into()),
                         terminal_background: Some(rgba(0xf9f5d7ff).into()),
                         terminal_ansi_bright_black: Some(rgba(0xb1a28aff).into()),
                         terminal_ansi_bright_red: Some(rgba(0xdc8c7bff).into()),
@@ -67,16 +92,52 @@ pub fn gruvbox() -> UserThemeFamily {
                         terminal_ansi_magenta: Some(rgba(0x7c6f64ff).into()),
                         terminal_ansi_cyan: Some(rgba(0x437b59ff).into()),
                         terminal_ansi_white: Some(rgba(0x282828ff).into()),
+                        link_text_hover: Some(rgba(0x0b6678ff).into()),
                         ..Default::default()
                     },
                     status: StatusColorsRefinement {
-                        created: Some(rgba(0x958e43ff).into()),
+                        conflict: Some(rgba(0xb57616ff).into()),
+                        conflict_background: Some(rgba(0xf5e2d0ff).into()),
+                        conflict_border: Some(rgba(0xebccabff).into()),
+                        created: Some(rgba(0x797410ff).into()),
+                        created_background: Some(rgba(0xe5e1ceff).into()),
+                        created_border: Some(rgba(0xd1cba8ff).into()),
                         deleted: Some(rgba(0x9d0408ff).into()),
+                        deleted_background: Some(rgba(0xf4d1c9ff).into()),
+                        deleted_border: Some(rgba(0xe8ac9eff).into()),
                         error: Some(rgba(0x9d0408ff).into()),
+                        error_background: Some(rgba(0xf4d1c9ff).into()),
+                        error_border: Some(rgba(0xe8ac9eff).into()),
+                        hidden: Some(rgba(0x8a7c6fff).into()),
+                        hidden_background: Some(rgba(0xd9c8a4ff).into()),
+                        hidden_border: Some(rgba(0xd1c09eff).into()),
                         hint: Some(rgba(0x677562ff).into()),
+                        hint_background: Some(rgba(0xd2dee2ff).into()),
+                        hint_border: Some(rgba(0xaec6cdff).into()),
+                        ignored: Some(rgba(0x5f5650ff).into()),
+                        ignored_background: Some(rgba(0xd9c8a4ff).into()),
+                        ignored_border: Some(rgba(0xc9b99aff).into()),
+                        info: Some(rgba(0x0b6678ff).into()),
+                        info_background: Some(rgba(0xd2dee2ff).into()),
+                        info_border: Some(rgba(0xaec6cdff).into()),
                         modified: Some(rgba(0xb57616ff).into()),
-                        success: Some(rgba(0x282828ff).into()),
+                        modified_background: Some(rgba(0xf5e2d0ff).into()),
+                        modified_border: Some(rgba(0xebccabff).into()),
+                        predictive: Some(rgba(0x797410ff).into()),
+                        predictive_background: Some(rgba(0xe5e1ceff).into()),
+                        predictive_border: Some(rgba(0xd1cba8ff).into()),
+                        renamed: Some(rgba(0x0b6678ff).into()),
+                        renamed_background: Some(rgba(0xd2dee2ff).into()),
+                        renamed_border: Some(rgba(0xaec6cdff).into()),
+                        success: Some(rgba(0x797410ff).into()),
+                        success_background: Some(rgba(0xe5e1ceff).into()),
+                        success_border: Some(rgba(0xd1cba8ff).into()),
+                        unreachable: Some(rgba(0x5f5650ff).into()),
+                        unreachable_background: Some(rgba(0xd9c8a4ff).into()),
+                        unreachable_border: Some(rgba(0xc9b99aff).into()),
                         warning: Some(rgba(0xb57616ff).into()),
+                        warning_background: Some(rgba(0xf5e2d0ff).into()),
+                        warning_border: Some(rgba(0xebccabff).into()),
                         ..Default::default()
                     },
                     player: Some(PlayerColors(vec![
@@ -410,36 +471,61 @@ pub fn gruvbox() -> UserThemeFamily {
                 appearance: Appearance::Dark,
                 styles: UserThemeStylesRefinement {
                     colors: ThemeColorsRefinement {
-                        border: Some(rgba(0x494340ff).into()),
-                        border_variant: Some(rgba(0x393634ff).into()),
+                        border: Some(rgba(0x5b534dff).into()),
+                        border_variant: Some(rgba(0x5b534dff).into()),
+                        border_focused: Some(rgba(0x303a36ff).into()),
+                        border_selected: Some(rgba(0x303a36ff).into()),
+                        border_transparent: Some(rgba(0x00000000).into()),
+                        border_disabled: Some(rgba(0x544c48ff).into()),
                         elevated_surface_background: Some(rgba(0x3b3735ff).into()),
+                        surface_background: Some(rgba(0x3b3735ff).into()),
                         background: Some(rgba(0x4c4642ff).into()),
                         panel_background: Some(rgba(0x3b3735ff).into()),
-                        element_hover: Some(rgba(0x5b534d80).into()),
-                        element_selected: Some(rgba(0x6e635a80).into()),
+                        element_background: Some(rgba(0x3b3735ff).into()),
+                        element_hover: Some(rgba(0x494340ff).into()),
+                        element_active: Some(rgba(0x5b524cff).into()),
+                        element_selected: Some(rgba(0x5b524cff).into()),
+                        element_disabled: Some(rgba(0x3b3735ff).into()),
                         drop_target_background: Some(rgba(0xc5b59780).into()),
+                        ghost_element_background: Some(rgba(0x00000000).into()),
+                        ghost_element_hover: Some(rgba(0x494340ff).into()),
+                        ghost_element_active: Some(rgba(0x5b524cff).into()),
+                        ghost_element_selected: Some(rgba(0x5b524cff).into()),
+                        ghost_element_disabled: Some(rgba(0x3b3735ff).into()),
                         text: Some(rgba(0xfbf1c7ff).into()),
                         text_muted: Some(rgba(0xc5b597ff).into()),
-                        text_placeholder: Some(rgba(0x776b61ff).into()),
-                        text_disabled: Some(rgba(0xfbf1c7ff).into()),
+                        text_placeholder: Some(rgba(0x9a8c79ff).into()),
+                        text_disabled: Some(rgba(0x9a8c79ff).into()),
                         text_accent: Some(rgba(0x83a598ff).into()),
+                        icon: Some(rgba(0xfbf1c7ff).into()),
+                        icon_muted: Some(rgba(0xc5b597ff).into()),
+                        icon_disabled: Some(rgba(0x9a8c79ff).into()),
+                        icon_placeholder: Some(rgba(0xc5b597ff).into()),
+                        icon_accent: Some(rgba(0x83a598ff).into()),
                         status_bar_background: Some(rgba(0x4c4642ff).into()),
                         title_bar_background: Some(rgba(0x4c4642ff).into()),
                         toolbar_background: Some(rgba(0x32302fff).into()),
                         tab_bar_background: Some(rgba(0x3b3735ff).into()),
                         tab_inactive_background: Some(rgba(0x3b3735ff).into()),
                         tab_active_background: Some(rgba(0x32302fff).into()),
-                        scrollbar_thumb_background: Some(rgba(0xfbf1c74d).into()),
-                        scrollbar_thumb_hover_background: Some(rgba(0xfbf1c74d).into()),
-                        scrollbar_thumb_border: Some(rgba(0x393634ff).into()),
+                        scrollbar_thumb_background: Some(rgba(0xfbf1c74c).into()),
+                        scrollbar_thumb_hover_background: Some(rgba(0x494340ff).into()),
+                        scrollbar_thumb_border: Some(rgba(0x494340ff).into()),
+                        scrollbar_track_background: Some(rgba(0x32302fff).into()),
                         scrollbar_track_border: Some(rgba(0x393634ff).into()),
                         editor_foreground: Some(rgba(0xebdbb2ff).into()),
                         editor_background: Some(rgba(0x32302fff).into()),
                         editor_gutter_background: Some(rgba(0x32302fff).into()),
+                        editor_subheader_background: Some(rgba(0x3b3735ff).into()),
+                        editor_active_line_background: Some(rgba(0x3b3735bf).into()),
+                        editor_highlighted_line_background: Some(rgba(0x3b3735ff).into()),
                         editor_line_number: Some(rgba(0xfbf1c759).into()),
                         editor_active_line_number: Some(rgba(0xfbf1c7ff).into()),
+                        editor_invisible: Some(rgba(0xc5b597ff).into()),
                         editor_wrap_guide: Some(rgba(0xfbf1c70d).into()),
                         editor_active_wrap_guide: Some(rgba(0xfbf1c71a).into()),
+                        editor_document_highlight_read_background: Some(rgba(0x83a5981a).into()),
+                        editor_document_highlight_write_background: Some(rgba(0x92847466).into()),
                         terminal_background: Some(rgba(0x32302fff).into()),
                         terminal_ansi_bright_black: Some(rgba(0x73675eff).into()),
                         terminal_ansi_bright_red: Some(rgba(0x93211eff).into()),
@@ -457,16 +543,52 @@ pub fn gruvbox() -> UserThemeFamily {
                         terminal_ansi_magenta: Some(rgba(0xa89984ff).into()),
                         terminal_ansi_cyan: Some(rgba(0x8ec07cff).into()),
                         terminal_ansi_white: Some(rgba(0xfbf1c7ff).into()),
+                        link_text_hover: Some(rgba(0x83a598ff).into()),
                         ..Default::default()
                     },
                     status: StatusColorsRefinement {
+                        conflict: Some(rgba(0xf9bd30ff).into()),
+                        conflict_background: Some(rgba(0x582f10ff).into()),
+                        conflict_border: Some(rgba(0x754916ff).into()),
                         created: Some(rgba(0xb8bb27ff).into()),
-                        deleted: Some(rgba(0xd0382bff).into()),
+                        created_background: Some(rgba(0x332b11ff).into()),
+                        created_border: Some(rgba(0x4a4516ff).into()),
+                        deleted: Some(rgba(0xfb4a35ff).into()),
+                        deleted_background: Some(rgba(0x5a0a10ff).into()),
+                        deleted_border: Some(rgba(0x771618ff).into()),
                         error: Some(rgba(0xfb4a35ff).into()),
+                        error_background: Some(rgba(0x5a0a10ff).into()),
+                        error_border: Some(rgba(0x771618ff).into()),
+                        hidden: Some(rgba(0x9a8c79ff).into()),
+                        hidden_background: Some(rgba(0x4c4642ff).into()),
+                        hidden_border: Some(rgba(0x544c48ff).into()),
                         hint: Some(rgba(0x8d957eff).into()),
+                        hint_background: Some(rgba(0x1e2321ff).into()),
+                        hint_border: Some(rgba(0x303a36ff).into()),
+                        ignored: Some(rgba(0xc5b597ff).into()),
+                        ignored_background: Some(rgba(0x4c4642ff).into()),
+                        ignored_border: Some(rgba(0x5b534dff).into()),
+                        info: Some(rgba(0x83a598ff).into()),
+                        info_background: Some(rgba(0x1e2321ff).into()),
+                        info_border: Some(rgba(0x303a36ff).into()),
                         modified: Some(rgba(0xf9bd30ff).into()),
-                        success: Some(rgba(0xfbf1c7ff).into()),
+                        modified_background: Some(rgba(0x582f10ff).into()),
+                        modified_border: Some(rgba(0x754916ff).into()),
+                        predictive: Some(rgba(0xb8bb27ff).into()),
+                        predictive_background: Some(rgba(0x332b11ff).into()),
+                        predictive_border: Some(rgba(0x4a4516ff).into()),
+                        renamed: Some(rgba(0x83a598ff).into()),
+                        renamed_background: Some(rgba(0x1e2321ff).into()),
+                        renamed_border: Some(rgba(0x303a36ff).into()),
+                        success: Some(rgba(0xb8bb27ff).into()),
+                        success_background: Some(rgba(0x332b11ff).into()),
+                        success_border: Some(rgba(0x4a4516ff).into()),
+                        unreachable: Some(rgba(0xc5b597ff).into()),
+                        unreachable_background: Some(rgba(0x4c4642ff).into()),
+                        unreachable_border: Some(rgba(0x5b534dff).into()),
                         warning: Some(rgba(0xf9bd30ff).into()),
+                        warning_background: Some(rgba(0x582f10ff).into()),
+                        warning_border: Some(rgba(0x754916ff).into()),
                         ..Default::default()
                     },
                     player: Some(PlayerColors(vec![
@@ -800,36 +922,61 @@ pub fn gruvbox() -> UserThemeFamily {
                 appearance: Appearance::Light,
                 styles: UserThemeStylesRefinement {
                     colors: ThemeColorsRefinement {
-                        border: Some(rgba(0xddcca7ff).into()),
-                        border_variant: Some(rgba(0xefe1b8ff).into()),
+                        border: Some(rgba(0xc9b99aff).into()),
+                        border_variant: Some(rgba(0xc9b99aff).into()),
+                        border_focused: Some(rgba(0xaec6cdff).into()),
+                        border_selected: Some(rgba(0xaec6cdff).into()),
+                        border_transparent: Some(rgba(0x00000000).into()),
+                        border_disabled: Some(rgba(0xd1c09eff).into()),
                         elevated_surface_background: Some(rgba(0xecddb4ff).into()),
+                        surface_background: Some(rgba(0xecddb4ff).into()),
                         background: Some(rgba(0xd9c8a4ff).into()),
                         panel_background: Some(rgba(0xecddb4ff).into()),
-                        element_hover: Some(rgba(0xc9b99a80).into()),
-                        element_selected: Some(rgba(0xb5a68e80).into()),
+                        element_background: Some(rgba(0xecddb4ff).into()),
+                        element_hover: Some(rgba(0xddcca7ff).into()),
+                        element_active: Some(rgba(0xc9b99aff).into()),
+                        element_selected: Some(rgba(0xc9b99aff).into()),
+                        element_disabled: Some(rgba(0xecddb4ff).into()),
                         drop_target_background: Some(rgba(0x5f565080).into()),
+                        ghost_element_background: Some(rgba(0x00000000).into()),
+                        ghost_element_hover: Some(rgba(0xddcca7ff).into()),
+                        ghost_element_active: Some(rgba(0xc9b99aff).into()),
+                        ghost_element_selected: Some(rgba(0xc9b99aff).into()),
+                        ghost_element_disabled: Some(rgba(0xecddb4ff).into()),
                         text: Some(rgba(0x282828ff).into()),
                         text_muted: Some(rgba(0x5f5650ff).into()),
-                        text_placeholder: Some(rgba(0xad9e87ff).into()),
-                        text_disabled: Some(rgba(0x282828ff).into()),
+                        text_placeholder: Some(rgba(0x8a7c6fff).into()),
+                        text_disabled: Some(rgba(0x8a7c6fff).into()),
                         text_accent: Some(rgba(0x0b6678ff).into()),
+                        icon: Some(rgba(0x282828ff).into()),
+                        icon_muted: Some(rgba(0x5f5650ff).into()),
+                        icon_disabled: Some(rgba(0x8a7c6fff).into()),
+                        icon_placeholder: Some(rgba(0x5f5650ff).into()),
+                        icon_accent: Some(rgba(0x0b6678ff).into()),
                         status_bar_background: Some(rgba(0xd9c8a4ff).into()),
                         title_bar_background: Some(rgba(0xd9c8a4ff).into()),
                         toolbar_background: Some(rgba(0xfbf1c7ff).into()),
                         tab_bar_background: Some(rgba(0xecddb4ff).into()),
                         tab_inactive_background: Some(rgba(0xecddb4ff).into()),
                         tab_active_background: Some(rgba(0xfbf1c7ff).into()),
-                        scrollbar_thumb_background: Some(rgba(0x2828284d).into()),
-                        scrollbar_thumb_hover_background: Some(rgba(0x2828284d).into()),
-                        scrollbar_thumb_border: Some(rgba(0xefe1b8ff).into()),
+                        scrollbar_thumb_background: Some(rgba(0x2828284c).into()),
+                        scrollbar_thumb_hover_background: Some(rgba(0xddcca7ff).into()),
+                        scrollbar_thumb_border: Some(rgba(0xddcca7ff).into()),
+                        scrollbar_track_background: Some(rgba(0xfbf1c7ff).into()),
                         scrollbar_track_border: Some(rgba(0xefe1b8ff).into()),
                         editor_foreground: Some(rgba(0x282828ff).into()),
                         editor_background: Some(rgba(0xfbf1c7ff).into()),
                         editor_gutter_background: Some(rgba(0xfbf1c7ff).into()),
+                        editor_subheader_background: Some(rgba(0xecddb4ff).into()),
+                        editor_active_line_background: Some(rgba(0xecddb4bf).into()),
+                        editor_highlighted_line_background: Some(rgba(0xecddb4ff).into()),
                         editor_line_number: Some(rgba(0x28282859).into()),
                         editor_active_line_number: Some(rgba(0x282828ff).into()),
+                        editor_invisible: Some(rgba(0x5f5650ff).into()),
                         editor_wrap_guide: Some(rgba(0x2828280d).into()),
                         editor_active_wrap_guide: Some(rgba(0x2828281a).into()),
+                        editor_document_highlight_read_background: Some(rgba(0x0b66781a).into()),
+                        editor_document_highlight_write_background: Some(rgba(0x92847466).into()),
                         terminal_background: Some(rgba(0xfbf1c7ff).into()),
                         terminal_ansi_bright_black: Some(rgba(0xb1a28aff).into()),
                         terminal_ansi_bright_red: Some(rgba(0xdc8c7bff).into()),
@@ -847,16 +994,52 @@ pub fn gruvbox() -> UserThemeFamily {
                         terminal_ansi_magenta: Some(rgba(0x7c6f64ff).into()),
                         terminal_ansi_cyan: Some(rgba(0x437b59ff).into()),
                         terminal_ansi_white: Some(rgba(0x282828ff).into()),
+                        link_text_hover: Some(rgba(0x0b6678ff).into()),
                         ..Default::default()
                     },
                     status: StatusColorsRefinement {
-                        created: Some(rgba(0x958e43ff).into()),
+                        conflict: Some(rgba(0xb57616ff).into()),
+                        conflict_background: Some(rgba(0xf5e2d0ff).into()),
+                        conflict_border: Some(rgba(0xebccabff).into()),
+                        created: Some(rgba(0x797410ff).into()),
+                        created_background: Some(rgba(0xe5e1ceff).into()),
+                        created_border: Some(rgba(0xd1cba8ff).into()),
                         deleted: Some(rgba(0x9d0408ff).into()),
+                        deleted_background: Some(rgba(0xf4d1c9ff).into()),
+                        deleted_border: Some(rgba(0xe8ac9eff).into()),
                         error: Some(rgba(0x9d0408ff).into()),
+                        error_background: Some(rgba(0xf4d1c9ff).into()),
+                        error_border: Some(rgba(0xe8ac9eff).into()),
+                        hidden: Some(rgba(0x8a7c6fff).into()),
+                        hidden_background: Some(rgba(0xd9c8a4ff).into()),
+                        hidden_border: Some(rgba(0xd1c09eff).into()),
                         hint: Some(rgba(0x677562ff).into()),
+                        hint_background: Some(rgba(0xd2dee2ff).into()),
+                        hint_border: Some(rgba(0xaec6cdff).into()),
+                        ignored: Some(rgba(0x5f5650ff).into()),
+                        ignored_background: Some(rgba(0xd9c8a4ff).into()),
+                        ignored_border: Some(rgba(0xc9b99aff).into()),
+                        info: Some(rgba(0x0b6678ff).into()),
+                        info_background: Some(rgba(0xd2dee2ff).into()),
+                        info_border: Some(rgba(0xaec6cdff).into()),
                         modified: Some(rgba(0xb57616ff).into()),
-                        success: Some(rgba(0x282828ff).into()),
+                        modified_background: Some(rgba(0xf5e2d0ff).into()),
+                        modified_border: Some(rgba(0xebccabff).into()),
+                        predictive: Some(rgba(0x797410ff).into()),
+                        predictive_background: Some(rgba(0xe5e1ceff).into()),
+                        predictive_border: Some(rgba(0xd1cba8ff).into()),
+                        renamed: Some(rgba(0x0b6678ff).into()),
+                        renamed_background: Some(rgba(0xd2dee2ff).into()),
+                        renamed_border: Some(rgba(0xaec6cdff).into()),
+                        success: Some(rgba(0x797410ff).into()),
+                        success_background: Some(rgba(0xe5e1ceff).into()),
+                        success_border: Some(rgba(0xd1cba8ff).into()),
+                        unreachable: Some(rgba(0x5f5650ff).into()),
+                        unreachable_background: Some(rgba(0xd9c8a4ff).into()),
+                        unreachable_border: Some(rgba(0xc9b99aff).into()),
                         warning: Some(rgba(0xb57616ff).into()),
+                        warning_background: Some(rgba(0xf5e2d0ff).into()),
+                        warning_border: Some(rgba(0xebccabff).into()),
                         ..Default::default()
                     },
                     player: Some(PlayerColors(vec![
@@ -1190,36 +1373,61 @@ pub fn gruvbox() -> UserThemeFamily {
                 appearance: Appearance::Dark,
                 styles: UserThemeStylesRefinement {
                     colors: ThemeColorsRefinement {
-                        border: Some(rgba(0x494340ff).into()),
-                        border_variant: Some(rgba(0x373432ff).into()),
+                        border: Some(rgba(0x5b534dff).into()),
+                        border_variant: Some(rgba(0x5b534dff).into()),
+                        border_focused: Some(rgba(0x303a36ff).into()),
+                        border_selected: Some(rgba(0x303a36ff).into()),
+                        border_transparent: Some(rgba(0x00000000).into()),
+                        border_disabled: Some(rgba(0x544c48ff).into()),
                         elevated_surface_background: Some(rgba(0x3a3735ff).into()),
+                        surface_background: Some(rgba(0x3a3735ff).into()),
                         background: Some(rgba(0x4c4642ff).into()),
                         panel_background: Some(rgba(0x3a3735ff).into()),
-                        element_hover: Some(rgba(0x5b534d80).into()),
-                        element_selected: Some(rgba(0x6e635a80).into()),
+                        element_background: Some(rgba(0x3a3735ff).into()),
+                        element_hover: Some(rgba(0x494340ff).into()),
+                        element_active: Some(rgba(0x5b524cff).into()),
+                        element_selected: Some(rgba(0x5b524cff).into()),
+                        element_disabled: Some(rgba(0x3a3735ff).into()),
                         drop_target_background: Some(rgba(0xc5b59780).into()),
+                        ghost_element_background: Some(rgba(0x00000000).into()),
+                        ghost_element_hover: Some(rgba(0x494340ff).into()),
+                        ghost_element_active: Some(rgba(0x5b524cff).into()),
+                        ghost_element_selected: Some(rgba(0x5b524cff).into()),
+                        ghost_element_disabled: Some(rgba(0x3a3735ff).into()),
                         text: Some(rgba(0xfbf1c7ff).into()),
                         text_muted: Some(rgba(0xc5b597ff).into()),
-                        text_placeholder: Some(rgba(0x776b61ff).into()),
-                        text_disabled: Some(rgba(0xfbf1c7ff).into()),
+                        text_placeholder: Some(rgba(0x9a8c79ff).into()),
+                        text_disabled: Some(rgba(0x9a8c79ff).into()),
                         text_accent: Some(rgba(0x83a598ff).into()),
+                        icon: Some(rgba(0xfbf1c7ff).into()),
+                        icon_muted: Some(rgba(0xc5b597ff).into()),
+                        icon_disabled: Some(rgba(0x9a8c79ff).into()),
+                        icon_placeholder: Some(rgba(0xc5b597ff).into()),
+                        icon_accent: Some(rgba(0x83a598ff).into()),
                         status_bar_background: Some(rgba(0x4c4642ff).into()),
                         title_bar_background: Some(rgba(0x4c4642ff).into()),
                         toolbar_background: Some(rgba(0x282828ff).into()),
                         tab_bar_background: Some(rgba(0x3a3735ff).into()),
                         tab_inactive_background: Some(rgba(0x3a3735ff).into()),
                         tab_active_background: Some(rgba(0x282828ff).into()),
-                        scrollbar_thumb_background: Some(rgba(0xfbf1c74d).into()),
-                        scrollbar_thumb_hover_background: Some(rgba(0xfbf1c74d).into()),
-                        scrollbar_thumb_border: Some(rgba(0x373432ff).into()),
+                        scrollbar_thumb_background: Some(rgba(0xfbf1c74c).into()),
+                        scrollbar_thumb_hover_background: Some(rgba(0x494340ff).into()),
+                        scrollbar_thumb_border: Some(rgba(0x494340ff).into()),
+                        scrollbar_track_background: Some(rgba(0x282828ff).into()),
                         scrollbar_track_border: Some(rgba(0x373432ff).into()),
                         editor_foreground: Some(rgba(0xebdbb2ff).into()),
                         editor_background: Some(rgba(0x282828ff).into()),
                         editor_gutter_background: Some(rgba(0x282828ff).into()),
+                        editor_subheader_background: Some(rgba(0x3a3735ff).into()),
+                        editor_active_line_background: Some(rgba(0x3a3735bf).into()),
+                        editor_highlighted_line_background: Some(rgba(0x3a3735ff).into()),
                         editor_line_number: Some(rgba(0xfbf1c759).into()),
                         editor_active_line_number: Some(rgba(0xfbf1c7ff).into()),
+                        editor_invisible: Some(rgba(0xc5b597ff).into()),
                         editor_wrap_guide: Some(rgba(0xfbf1c70d).into()),
                         editor_active_wrap_guide: Some(rgba(0xfbf1c71a).into()),
+                        editor_document_highlight_read_background: Some(rgba(0x83a5981a).into()),
+                        editor_document_highlight_write_background: Some(rgba(0x92847466).into()),
                         terminal_background: Some(rgba(0x282828ff).into()),
                         terminal_ansi_bright_black: Some(rgba(0x73675eff).into()),
                         terminal_ansi_bright_red: Some(rgba(0x93211eff).into()),
@@ -1237,16 +1445,52 @@ pub fn gruvbox() -> UserThemeFamily {
                         terminal_ansi_magenta: Some(rgba(0xa89984ff).into()),
                         terminal_ansi_cyan: Some(rgba(0x8ec07cff).into()),
                         terminal_ansi_white: Some(rgba(0xfbf1c7ff).into()),
+                        link_text_hover: Some(rgba(0x83a598ff).into()),
                         ..Default::default()
                     },
                     status: StatusColorsRefinement {
+                        conflict: Some(rgba(0xf9bd30ff).into()),
+                        conflict_background: Some(rgba(0x582f10ff).into()),
+                        conflict_border: Some(rgba(0x754916ff).into()),
                         created: Some(rgba(0xb8bb27ff).into()),
-                        deleted: Some(rgba(0xd0382bff).into()),
+                        created_background: Some(rgba(0x332b11ff).into()),
+                        created_border: Some(rgba(0x4a4516ff).into()),
+                        deleted: Some(rgba(0xfb4a35ff).into()),
+                        deleted_background: Some(rgba(0x5a0a10ff).into()),
+                        deleted_border: Some(rgba(0x771618ff).into()),
                         error: Some(rgba(0xfb4a35ff).into()),
+                        error_background: Some(rgba(0x5a0a10ff).into()),
+                        error_border: Some(rgba(0x771618ff).into()),
+                        hidden: Some(rgba(0x9a8c79ff).into()),
+                        hidden_background: Some(rgba(0x4c4642ff).into()),
+                        hidden_border: Some(rgba(0x544c48ff).into()),
                         hint: Some(rgba(0x8d957eff).into()),
+                        hint_background: Some(rgba(0x1e2321ff).into()),
+                        hint_border: Some(rgba(0x303a36ff).into()),
+                        ignored: Some(rgba(0xc5b597ff).into()),
+                        ignored_background: Some(rgba(0x4c4642ff).into()),
+                        ignored_border: Some(rgba(0x5b534dff).into()),
+                        info: Some(rgba(0x83a598ff).into()),
+                        info_background: Some(rgba(0x1e2321ff).into()),
+                        info_border: Some(rgba(0x303a36ff).into()),
                         modified: Some(rgba(0xf9bd30ff).into()),
-                        success: Some(rgba(0xfbf1c7ff).into()),
+                        modified_background: Some(rgba(0x582f10ff).into()),
+                        modified_border: Some(rgba(0x754916ff).into()),
+                        predictive: Some(rgba(0xb8bb27ff).into()),
+                        predictive_background: Some(rgba(0x332b11ff).into()),
+                        predictive_border: Some(rgba(0x4a4516ff).into()),
+                        renamed: Some(rgba(0x83a598ff).into()),
+                        renamed_background: Some(rgba(0x1e2321ff).into()),
+                        renamed_border: Some(rgba(0x303a36ff).into()),
+                        success: Some(rgba(0xb8bb27ff).into()),
+                        success_background: Some(rgba(0x332b11ff).into()),
+                        success_border: Some(rgba(0x4a4516ff).into()),
+                        unreachable: Some(rgba(0xc5b597ff).into()),
+                        unreachable_background: Some(rgba(0x4c4642ff).into()),
+                        unreachable_border: Some(rgba(0x5b534dff).into()),
                         warning: Some(rgba(0xf9bd30ff).into()),
+                        warning_background: Some(rgba(0x582f10ff).into()),
+                        warning_border: Some(rgba(0x754916ff).into()),
                         ..Default::default()
                     },
                     player: Some(PlayerColors(vec![
@@ -1580,36 +1824,61 @@ pub fn gruvbox() -> UserThemeFamily {
                 appearance: Appearance::Light,
                 styles: UserThemeStylesRefinement {
                     colors: ThemeColorsRefinement {
-                        border: Some(rgba(0xddcca7ff).into()),
-                        border_variant: Some(rgba(0xeddeb5ff).into()),
+                        border: Some(rgba(0xc9b99aff).into()),
+                        border_variant: Some(rgba(0xc9b99aff).into()),
+                        border_focused: Some(rgba(0xaec6cdff).into()),
+                        border_selected: Some(rgba(0xaec6cdff).into()),
+                        border_transparent: Some(rgba(0x00000000).into()),
+                        border_disabled: Some(rgba(0xd1c09eff).into()),
                         elevated_surface_background: Some(rgba(0xecdcb3ff).into()),
+                        surface_background: Some(rgba(0xecdcb3ff).into()),
                         background: Some(rgba(0xd9c8a4ff).into()),
                         panel_background: Some(rgba(0xecdcb3ff).into()),
-                        element_hover: Some(rgba(0xc9b99a80).into()),
-                        element_selected: Some(rgba(0xb5a68e80).into()),
+                        element_background: Some(rgba(0xecdcb3ff).into()),
+                        element_hover: Some(rgba(0xddcca7ff).into()),
+                        element_active: Some(rgba(0xc9b99aff).into()),
+                        element_selected: Some(rgba(0xc9b99aff).into()),
+                        element_disabled: Some(rgba(0xecdcb3ff).into()),
                         drop_target_background: Some(rgba(0x5f565080).into()),
+                        ghost_element_background: Some(rgba(0x00000000).into()),
+                        ghost_element_hover: Some(rgba(0xddcca7ff).into()),
+                        ghost_element_active: Some(rgba(0xc9b99aff).into()),
+                        ghost_element_selected: Some(rgba(0xc9b99aff).into()),
+                        ghost_element_disabled: Some(rgba(0xecdcb3ff).into()),
                         text: Some(rgba(0x282828ff).into()),
                         text_muted: Some(rgba(0x5f5650ff).into()),
-                        text_placeholder: Some(rgba(0xad9e87ff).into()),
-                        text_disabled: Some(rgba(0x282828ff).into()),
+                        text_placeholder: Some(rgba(0x8a7c6fff).into()),
+                        text_disabled: Some(rgba(0x8a7c6fff).into()),
                         text_accent: Some(rgba(0x0b6678ff).into()),
+                        icon: Some(rgba(0x282828ff).into()),
+                        icon_muted: Some(rgba(0x5f5650ff).into()),
+                        icon_disabled: Some(rgba(0x8a7c6fff).into()),
+                        icon_placeholder: Some(rgba(0x5f5650ff).into()),
+                        icon_accent: Some(rgba(0x0b6678ff).into()),
                         status_bar_background: Some(rgba(0xd9c8a4ff).into()),
                         title_bar_background: Some(rgba(0xd9c8a4ff).into()),
                         toolbar_background: Some(rgba(0xf2e5bcff).into()),
                         tab_bar_background: Some(rgba(0xecdcb3ff).into()),
                         tab_inactive_background: Some(rgba(0xecdcb3ff).into()),
                         tab_active_background: Some(rgba(0xf2e5bcff).into()),
-                        scrollbar_thumb_background: Some(rgba(0x2828284d).into()),
-                        scrollbar_thumb_hover_background: Some(rgba(0x2828284d).into()),
-                        scrollbar_thumb_border: Some(rgba(0xeddeb5ff).into()),
+                        scrollbar_thumb_background: Some(rgba(0x2828284c).into()),
+                        scrollbar_thumb_hover_background: Some(rgba(0xddcca7ff).into()),
+                        scrollbar_thumb_border: Some(rgba(0xddcca7ff).into()),
+                        scrollbar_track_background: Some(rgba(0xf2e5bcff).into()),
                         scrollbar_track_border: Some(rgba(0xeddeb5ff).into()),
                         editor_foreground: Some(rgba(0x282828ff).into()),
                         editor_background: Some(rgba(0xf2e5bcff).into()),
                         editor_gutter_background: Some(rgba(0xf2e5bcff).into()),
+                        editor_subheader_background: Some(rgba(0xecdcb3ff).into()),
+                        editor_active_line_background: Some(rgba(0xecdcb3bf).into()),
+                        editor_highlighted_line_background: Some(rgba(0xecdcb3ff).into()),
                         editor_line_number: Some(rgba(0x28282859).into()),
                         editor_active_line_number: Some(rgba(0x282828ff).into()),
+                        editor_invisible: Some(rgba(0x5f5650ff).into()),
                         editor_wrap_guide: Some(rgba(0x2828280d).into()),
                         editor_active_wrap_guide: Some(rgba(0x2828281a).into()),
+                        editor_document_highlight_read_background: Some(rgba(0x0b66781a).into()),
+                        editor_document_highlight_write_background: Some(rgba(0x92847466).into()),
                         terminal_background: Some(rgba(0xf2e5bcff).into()),
                         terminal_ansi_bright_black: Some(rgba(0xb1a28aff).into()),
                         terminal_ansi_bright_red: Some(rgba(0xdc8c7bff).into()),
@@ -1627,16 +1896,52 @@ pub fn gruvbox() -> UserThemeFamily {
                         terminal_ansi_magenta: Some(rgba(0x7c6f64ff).into()),
                         terminal_ansi_cyan: Some(rgba(0x437b59ff).into()),
                         terminal_ansi_white: Some(rgba(0x282828ff).into()),
+                        link_text_hover: Some(rgba(0x0b6678ff).into()),
                         ..Default::default()
                     },
                     status: StatusColorsRefinement {
-                        created: Some(rgba(0x958e43ff).into()),
+                        conflict: Some(rgba(0xb57616ff).into()),
+                        conflict_background: Some(rgba(0xf5e2d0ff).into()),
+                        conflict_border: Some(rgba(0xebccabff).into()),
+                        created: Some(rgba(0x797410ff).into()),
+                        created_background: Some(rgba(0xe5e1ceff).into()),
+                        created_border: Some(rgba(0xd1cba8ff).into()),
                         deleted: Some(rgba(0x9d0408ff).into()),
+                        deleted_background: Some(rgba(0xf4d1c9ff).into()),
+                        deleted_border: Some(rgba(0xe8ac9eff).into()),
                         error: Some(rgba(0x9d0408ff).into()),
+                        error_background: Some(rgba(0xf4d1c9ff).into()),
+                        error_border: Some(rgba(0xe8ac9eff).into()),
+                        hidden: Some(rgba(0x8a7c6fff).into()),
+                        hidden_background: Some(rgba(0xd9c8a4ff).into()),
+                        hidden_border: Some(rgba(0xd1c09eff).into()),
                         hint: Some(rgba(0x677562ff).into()),
+                        hint_background: Some(rgba(0xd2dee2ff).into()),
+                        hint_border: Some(rgba(0xaec6cdff).into()),
+                        ignored: Some(rgba(0x5f5650ff).into()),
+                        ignored_background: Some(rgba(0xd9c8a4ff).into()),
+                        ignored_border: Some(rgba(0xc9b99aff).into()),
+                        info: Some(rgba(0x0b6678ff).into()),
+                        info_background: Some(rgba(0xd2dee2ff).into()),
+                        info_border: Some(rgba(0xaec6cdff).into()),
                         modified: Some(rgba(0xb57616ff).into()),
-                        success: Some(rgba(0x282828ff).into()),
+                        modified_background: Some(rgba(0xf5e2d0ff).into()),
+                        modified_border: Some(rgba(0xebccabff).into()),
+                        predictive: Some(rgba(0x797410ff).into()),
+                        predictive_background: Some(rgba(0xe5e1ceff).into()),
+                        predictive_border: Some(rgba(0xd1cba8ff).into()),
+                        renamed: Some(rgba(0x0b6678ff).into()),
+                        renamed_background: Some(rgba(0xd2dee2ff).into()),
+                        renamed_border: Some(rgba(0xaec6cdff).into()),
+                        success: Some(rgba(0x797410ff).into()),
+                        success_background: Some(rgba(0xe5e1ceff).into()),
+                        success_border: Some(rgba(0xd1cba8ff).into()),
+                        unreachable: Some(rgba(0x5f5650ff).into()),
+                        unreachable_background: Some(rgba(0xd9c8a4ff).into()),
+                        unreachable_border: Some(rgba(0xc9b99aff).into()),
                         warning: Some(rgba(0xb57616ff).into()),
+                        warning_background: Some(rgba(0xf5e2d0ff).into()),
+                        warning_border: Some(rgba(0xebccabff).into()),
                         ..Default::default()
                     },
                     player: Some(PlayerColors(vec![
@@ -1970,36 +2275,61 @@ pub fn gruvbox() -> UserThemeFamily {
                 appearance: Appearance::Dark,
                 styles: UserThemeStylesRefinement {
                     colors: ThemeColorsRefinement {
-                        border: Some(rgba(0x494340ff).into()),
-                        border_variant: Some(rgba(0x343130ff).into()),
+                        border: Some(rgba(0x5b534dff).into()),
+                        border_variant: Some(rgba(0x5b534dff).into()),
+                        border_focused: Some(rgba(0x303a36ff).into()),
+                        border_selected: Some(rgba(0x303a36ff).into()),
+                        border_transparent: Some(rgba(0x00000000).into()),
+                        border_disabled: Some(rgba(0x544c48ff).into()),
                         elevated_surface_background: Some(rgba(0x393634ff).into()),
+                        surface_background: Some(rgba(0x393634ff).into()),
                         background: Some(rgba(0x4c4642ff).into()),
                         panel_background: Some(rgba(0x393634ff).into()),
-                        element_hover: Some(rgba(0x5b534d80).into()),
-                        element_selected: Some(rgba(0x6e635a80).into()),
+                        element_background: Some(rgba(0x393634ff).into()),
+                        element_hover: Some(rgba(0x494340ff).into()),
+                        element_active: Some(rgba(0x5b524cff).into()),
+                        element_selected: Some(rgba(0x5b524cff).into()),
+                        element_disabled: Some(rgba(0x393634ff).into()),
                         drop_target_background: Some(rgba(0xc5b59780).into()),
+                        ghost_element_background: Some(rgba(0x00000000).into()),
+                        ghost_element_hover: Some(rgba(0x494340ff).into()),
+                        ghost_element_active: Some(rgba(0x5b524cff).into()),
+                        ghost_element_selected: Some(rgba(0x5b524cff).into()),
+                        ghost_element_disabled: Some(rgba(0x393634ff).into()),
                         text: Some(rgba(0xfbf1c7ff).into()),
                         text_muted: Some(rgba(0xc5b597ff).into()),
-                        text_placeholder: Some(rgba(0x776b61ff).into()),
-                        text_disabled: Some(rgba(0xfbf1c7ff).into()),
+                        text_placeholder: Some(rgba(0x9a8c79ff).into()),
+                        text_disabled: Some(rgba(0x9a8c79ff).into()),
                         text_accent: Some(rgba(0x83a598ff).into()),
+                        icon: Some(rgba(0xfbf1c7ff).into()),
+                        icon_muted: Some(rgba(0xc5b597ff).into()),
+                        icon_disabled: Some(rgba(0x9a8c79ff).into()),
+                        icon_placeholder: Some(rgba(0xc5b597ff).into()),
+                        icon_accent: Some(rgba(0x83a598ff).into()),
                         status_bar_background: Some(rgba(0x4c4642ff).into()),
                         title_bar_background: Some(rgba(0x4c4642ff).into()),
                         toolbar_background: Some(rgba(0x1d2021ff).into()),
                         tab_bar_background: Some(rgba(0x393634ff).into()),
                         tab_inactive_background: Some(rgba(0x393634ff).into()),
                         tab_active_background: Some(rgba(0x1d2021ff).into()),
-                        scrollbar_thumb_background: Some(rgba(0xfbf1c74d).into()),
-                        scrollbar_thumb_hover_background: Some(rgba(0xfbf1c74d).into()),
-                        scrollbar_thumb_border: Some(rgba(0x343130ff).into()),
+                        scrollbar_thumb_background: Some(rgba(0xfbf1c74c).into()),
+                        scrollbar_thumb_hover_background: Some(rgba(0x494340ff).into()),
+                        scrollbar_thumb_border: Some(rgba(0x494340ff).into()),
+                        scrollbar_track_background: Some(rgba(0x1d2021ff).into()),
                         scrollbar_track_border: Some(rgba(0x343130ff).into()),
                         editor_foreground: Some(rgba(0xebdbb2ff).into()),
                         editor_background: Some(rgba(0x1d2021ff).into()),
                         editor_gutter_background: Some(rgba(0x1d2021ff).into()),
+                        editor_subheader_background: Some(rgba(0x393634ff).into()),
+                        editor_active_line_background: Some(rgba(0x393634bf).into()),
+                        editor_highlighted_line_background: Some(rgba(0x393634ff).into()),
                         editor_line_number: Some(rgba(0xfbf1c759).into()),
                         editor_active_line_number: Some(rgba(0xfbf1c7ff).into()),
+                        editor_invisible: Some(rgba(0xc5b597ff).into()),
                         editor_wrap_guide: Some(rgba(0xfbf1c70d).into()),
                         editor_active_wrap_guide: Some(rgba(0xfbf1c71a).into()),
+                        editor_document_highlight_read_background: Some(rgba(0x83a5981a).into()),
+                        editor_document_highlight_write_background: Some(rgba(0x92847466).into()),
                         terminal_background: Some(rgba(0x1d2021ff).into()),
                         terminal_ansi_bright_black: Some(rgba(0x73675eff).into()),
                         terminal_ansi_bright_red: Some(rgba(0x93211eff).into()),
@@ -2017,16 +2347,52 @@ pub fn gruvbox() -> UserThemeFamily {
                         terminal_ansi_magenta: Some(rgba(0xa89984ff).into()),
                         terminal_ansi_cyan: Some(rgba(0x8ec07cff).into()),
                         terminal_ansi_white: Some(rgba(0xfbf1c7ff).into()),
+                        link_text_hover: Some(rgba(0x83a598ff).into()),
                         ..Default::default()
                     },
                     status: StatusColorsRefinement {
+                        conflict: Some(rgba(0xf9bd30ff).into()),
+                        conflict_background: Some(rgba(0x582f10ff).into()),
+                        conflict_border: Some(rgba(0x754916ff).into()),
                         created: Some(rgba(0xb8bb27ff).into()),
-                        deleted: Some(rgba(0xd0382bff).into()),
+                        created_background: Some(rgba(0x332b11ff).into()),
+                        created_border: Some(rgba(0x4a4516ff).into()),
+                        deleted: Some(rgba(0xfb4a35ff).into()),
+                        deleted_background: Some(rgba(0x5a0a10ff).into()),
+                        deleted_border: Some(rgba(0x771618ff).into()),
                         error: Some(rgba(0xfb4a35ff).into()),
+                        error_background: Some(rgba(0x5a0a10ff).into()),
+                        error_border: Some(rgba(0x771618ff).into()),
+                        hidden: Some(rgba(0x9a8c79ff).into()),
+                        hidden_background: Some(rgba(0x4c4642ff).into()),
+                        hidden_border: Some(rgba(0x544c48ff).into()),
                         hint: Some(rgba(0x8d957eff).into()),
+                        hint_background: Some(rgba(0x1e2321ff).into()),
+                        hint_border: Some(rgba(0x303a36ff).into()),
+                        ignored: Some(rgba(0xc5b597ff).into()),
+                        ignored_background: Some(rgba(0x4c4642ff).into()),
+                        ignored_border: Some(rgba(0x5b534dff).into()),
+                        info: Some(rgba(0x83a598ff).into()),
+                        info_background: Some(rgba(0x1e2321ff).into()),
+                        info_border: Some(rgba(0x303a36ff).into()),
                         modified: Some(rgba(0xf9bd30ff).into()),
-                        success: Some(rgba(0xfbf1c7ff).into()),
+                        modified_background: Some(rgba(0x582f10ff).into()),
+                        modified_border: Some(rgba(0x754916ff).into()),
+                        predictive: Some(rgba(0xb8bb27ff).into()),
+                        predictive_background: Some(rgba(0x332b11ff).into()),
+                        predictive_border: Some(rgba(0x4a4516ff).into()),
+                        renamed: Some(rgba(0x83a598ff).into()),
+                        renamed_background: Some(rgba(0x1e2321ff).into()),
+                        renamed_border: Some(rgba(0x303a36ff).into()),
+                        success: Some(rgba(0xb8bb27ff).into()),
+                        success_background: Some(rgba(0x332b11ff).into()),
+                        success_border: Some(rgba(0x4a4516ff).into()),
+                        unreachable: Some(rgba(0xc5b597ff).into()),
+                        unreachable_background: Some(rgba(0x4c4642ff).into()),
+                        unreachable_border: Some(rgba(0x5b534dff).into()),
                         warning: Some(rgba(0xf9bd30ff).into()),
+                        warning_background: Some(rgba(0x582f10ff).into()),
+                        warning_border: Some(rgba(0x754916ff).into()),
                         ..Default::default()
                     },
                     player: Some(PlayerColors(vec![

crates/theme2/src/themes/one.rs 🔗

@@ -20,36 +20,61 @@ pub fn one() -> UserThemeFamily {
                 appearance: Appearance::Light,
                 styles: UserThemeStylesRefinement {
                     colors: ThemeColorsRefinement {
-                        border: Some(rgba(0xdfdfe0ff).into()),
-                        border_variant: Some(rgba(0xeeeeeeff).into()),
+                        border: Some(rgba(0xc9c9caff).into()),
+                        border_variant: Some(rgba(0xc9c9caff).into()),
+                        border_focused: Some(rgba(0xcbcdf6ff).into()),
+                        border_selected: Some(rgba(0xcbcdf6ff).into()),
+                        border_transparent: Some(rgba(0x00000000).into()),
+                        border_disabled: Some(rgba(0xd3d3d4ff).into()),
                         elevated_surface_background: Some(rgba(0xebebecff).into()),
+                        surface_background: Some(rgba(0xebebecff).into()),
                         background: Some(rgba(0xdcdcddff).into()),
                         panel_background: Some(rgba(0xebebecff).into()),
-                        element_hover: Some(rgba(0xc9c9ca80).into()),
-                        element_selected: Some(rgba(0xafafaf80).into()),
+                        element_background: Some(rgba(0xebebecff).into()),
+                        element_hover: Some(rgba(0xdfdfe0ff).into()),
+                        element_active: Some(rgba(0xcacacaff).into()),
+                        element_selected: Some(rgba(0xcacacaff).into()),
+                        element_disabled: Some(rgba(0xebebecff).into()),
                         drop_target_background: Some(rgba(0x7f818880).into()),
+                        ghost_element_background: Some(rgba(0x00000000).into()),
+                        ghost_element_hover: Some(rgba(0xdfdfe0ff).into()),
+                        ghost_element_active: Some(rgba(0xcacacaff).into()),
+                        ghost_element_selected: Some(rgba(0xcacacaff).into()),
+                        ghost_element_disabled: Some(rgba(0xebebecff).into()),
                         text: Some(rgba(0x383a41ff).into()),
                         text_muted: Some(rgba(0x7f8188ff).into()),
-                        text_placeholder: Some(rgba(0xa7a7a8ff).into()),
-                        text_disabled: Some(rgba(0x383a41ff).into()),
+                        text_placeholder: Some(rgba(0xa1a1a3ff).into()),
+                        text_disabled: Some(rgba(0xa1a1a3ff).into()),
                         text_accent: Some(rgba(0x5c79e2ff).into()),
+                        icon: Some(rgba(0x383a41ff).into()),
+                        icon_muted: Some(rgba(0x7f8188ff).into()),
+                        icon_disabled: Some(rgba(0xa1a1a3ff).into()),
+                        icon_placeholder: Some(rgba(0x7f8188ff).into()),
+                        icon_accent: Some(rgba(0x5c79e2ff).into()),
                         status_bar_background: Some(rgba(0xdcdcddff).into()),
                         title_bar_background: Some(rgba(0xdcdcddff).into()),
                         toolbar_background: Some(rgba(0xfafafaff).into()),
                         tab_bar_background: Some(rgba(0xebebecff).into()),
                         tab_inactive_background: Some(rgba(0xebebecff).into()),
                         tab_active_background: Some(rgba(0xfafafaff).into()),
-                        scrollbar_thumb_background: Some(rgba(0x383a414d).into()),
-                        scrollbar_thumb_hover_background: Some(rgba(0x383a414d).into()),
-                        scrollbar_thumb_border: Some(rgba(0xeeeeeeff).into()),
+                        scrollbar_thumb_background: Some(rgba(0x383a414c).into()),
+                        scrollbar_thumb_hover_background: Some(rgba(0xdfdfe0ff).into()),
+                        scrollbar_thumb_border: Some(rgba(0xdfdfe0ff).into()),
+                        scrollbar_track_background: Some(rgba(0xfafafaff).into()),
                         scrollbar_track_border: Some(rgba(0xeeeeeeff).into()),
                         editor_foreground: Some(rgba(0x383a41ff).into()),
                         editor_background: Some(rgba(0xfafafaff).into()),
                         editor_gutter_background: Some(rgba(0xfafafaff).into()),
+                        editor_subheader_background: Some(rgba(0xebebecff).into()),
+                        editor_active_line_background: Some(rgba(0xebebecbf).into()),
+                        editor_highlighted_line_background: Some(rgba(0xebebecff).into()),
                         editor_line_number: Some(rgba(0x383a4159).into()),
                         editor_active_line_number: Some(rgba(0x383a41ff).into()),
+                        editor_invisible: Some(rgba(0x7f8188ff).into()),
                         editor_wrap_guide: Some(rgba(0x383a410d).into()),
                         editor_active_wrap_guide: Some(rgba(0x383a411a).into()),
+                        editor_document_highlight_read_background: Some(rgba(0x5c79e21a).into()),
+                        editor_document_highlight_write_background: Some(rgba(0xa3a3a466).into()),
                         terminal_background: Some(rgba(0xfafafaff).into()),
                         terminal_ansi_bright_black: Some(rgba(0xaaaaaaff).into()),
                         terminal_ansi_bright_red: Some(rgba(0xf0b0a4ff).into()),
@@ -67,16 +92,52 @@ pub fn one() -> UserThemeFamily {
                         terminal_ansi_magenta: Some(rgba(0x994fa6ff).into()),
                         terminal_ansi_cyan: Some(rgba(0x3b82b7ff).into()),
                         terminal_ansi_white: Some(rgba(0x383a41ff).into()),
+                        link_text_hover: Some(rgba(0x5c79e2ff).into()),
                         ..Default::default()
                     },
                     status: StatusColorsRefinement {
-                        created: Some(rgba(0x84b278ff).into()),
+                        conflict: Some(rgba(0xdec184ff).into()),
+                        conflict_background: Some(rgba(0xfaf2e6ff).into()),
+                        conflict_border: Some(rgba(0xf5e8d2ff).into()),
+                        created: Some(rgba(0x669f59ff).into()),
+                        created_background: Some(rgba(0xe0ebdcff).into()),
+                        created_border: Some(rgba(0xc8dcc1ff).into()),
                         deleted: Some(rgba(0xd36151ff).into()),
+                        deleted_background: Some(rgba(0xfbdfd9ff).into()),
+                        deleted_border: Some(rgba(0xf6c6bdff).into()),
                         error: Some(rgba(0xd36151ff).into()),
+                        error_background: Some(rgba(0xfbdfd9ff).into()),
+                        error_border: Some(rgba(0xf6c6bdff).into()),
+                        hidden: Some(rgba(0xa1a1a3ff).into()),
+                        hidden_background: Some(rgba(0xdcdcddff).into()),
+                        hidden_border: Some(rgba(0xd3d3d4ff).into()),
                         hint: Some(rgba(0x9295beff).into()),
+                        hint_background: Some(rgba(0xe2e2faff).into()),
+                        hint_border: Some(rgba(0xcbcdf6ff).into()),
+                        ignored: Some(rgba(0x7f8188ff).into()),
+                        ignored_background: Some(rgba(0xdcdcddff).into()),
+                        ignored_border: Some(rgba(0xc9c9caff).into()),
+                        info: Some(rgba(0x5c79e2ff).into()),
+                        info_background: Some(rgba(0xe2e2faff).into()),
+                        info_border: Some(rgba(0xcbcdf6ff).into()),
                         modified: Some(rgba(0xdec184ff).into()),
-                        success: Some(rgba(0x383a41ff).into()),
+                        modified_background: Some(rgba(0xfaf2e6ff).into()),
+                        modified_border: Some(rgba(0xf5e8d2ff).into()),
+                        predictive: Some(rgba(0x669f59ff).into()),
+                        predictive_background: Some(rgba(0xe0ebdcff).into()),
+                        predictive_border: Some(rgba(0xc8dcc1ff).into()),
+                        renamed: Some(rgba(0x5c79e2ff).into()),
+                        renamed_background: Some(rgba(0xe2e2faff).into()),
+                        renamed_border: Some(rgba(0xcbcdf6ff).into()),
+                        success: Some(rgba(0x669f59ff).into()),
+                        success_background: Some(rgba(0xe0ebdcff).into()),
+                        success_border: Some(rgba(0xc8dcc1ff).into()),
+                        unreachable: Some(rgba(0x7f8188ff).into()),
+                        unreachable_background: Some(rgba(0xdcdcddff).into()),
+                        unreachable_border: Some(rgba(0xc9c9caff).into()),
                         warning: Some(rgba(0xdec184ff).into()),
+                        warning_background: Some(rgba(0xfaf2e6ff).into()),
+                        warning_border: Some(rgba(0xf5e8d2ff).into()),
                         ..Default::default()
                     },
                     player: Some(PlayerColors(vec![
@@ -410,36 +471,61 @@ pub fn one() -> UserThemeFamily {
                 appearance: Appearance::Dark,
                 styles: UserThemeStylesRefinement {
                     colors: ThemeColorsRefinement {
-                        border: Some(rgba(0x363c46ff).into()),
-                        border_variant: Some(rgba(0x2e333cff).into()),
+                        border: Some(rgba(0x464b57ff).into()),
+                        border_variant: Some(rgba(0x464b57ff).into()),
+                        border_focused: Some(rgba(0x293c5bff).into()),
+                        border_selected: Some(rgba(0x293c5bff).into()),
+                        border_transparent: Some(rgba(0x00000000).into()),
+                        border_disabled: Some(rgba(0x414754ff).into()),
                         elevated_surface_background: Some(rgba(0x2f343eff).into()),
+                        surface_background: Some(rgba(0x2f343eff).into()),
                         background: Some(rgba(0x3b414dff).into()),
                         panel_background: Some(rgba(0x2f343eff).into()),
-                        element_hover: Some(rgba(0x464b5780).into()),
-                        element_selected: Some(rgba(0x4f545e80).into()),
+                        element_background: Some(rgba(0x2f343eff).into()),
+                        element_hover: Some(rgba(0x363c46ff).into()),
+                        element_active: Some(rgba(0x454a56ff).into()),
+                        element_selected: Some(rgba(0x454a56ff).into()),
+                        element_disabled: Some(rgba(0x2f343eff).into()),
                         drop_target_background: Some(rgba(0x83899480).into()),
+                        ghost_element_background: Some(rgba(0x00000000).into()),
+                        ghost_element_hover: Some(rgba(0x363c46ff).into()),
+                        ghost_element_active: Some(rgba(0x454a56ff).into()),
+                        ghost_element_selected: Some(rgba(0x454a56ff).into()),
+                        ghost_element_disabled: Some(rgba(0x2f343eff).into()),
                         text: Some(rgba(0xc8ccd4ff).into()),
                         text_muted: Some(rgba(0x838994ff).into()),
-                        text_placeholder: Some(rgba(0x545862ff).into()),
-                        text_disabled: Some(rgba(0xc8ccd4ff).into()),
+                        text_placeholder: Some(rgba(0x555a63ff).into()),
+                        text_disabled: Some(rgba(0x555a63ff).into()),
                         text_accent: Some(rgba(0x74ade8ff).into()),
+                        icon: Some(rgba(0xc8ccd4ff).into()),
+                        icon_muted: Some(rgba(0x838994ff).into()),
+                        icon_disabled: Some(rgba(0x555a63ff).into()),
+                        icon_placeholder: Some(rgba(0x838994ff).into()),
+                        icon_accent: Some(rgba(0x74ade8ff).into()),
                         status_bar_background: Some(rgba(0x3b414dff).into()),
                         title_bar_background: Some(rgba(0x3b414dff).into()),
                         toolbar_background: Some(rgba(0x282c34ff).into()),
                         tab_bar_background: Some(rgba(0x2f343eff).into()),
                         tab_inactive_background: Some(rgba(0x2f343eff).into()),
                         tab_active_background: Some(rgba(0x282c34ff).into()),
-                        scrollbar_thumb_background: Some(rgba(0xc8ccd44d).into()),
-                        scrollbar_thumb_hover_background: Some(rgba(0xc8ccd44d).into()),
-                        scrollbar_thumb_border: Some(rgba(0x2e333cff).into()),
+                        scrollbar_thumb_background: Some(rgba(0xc8ccd44c).into()),
+                        scrollbar_thumb_hover_background: Some(rgba(0x363c46ff).into()),
+                        scrollbar_thumb_border: Some(rgba(0x363c46ff).into()),
+                        scrollbar_track_background: Some(rgba(0x282c34ff).into()),
                         scrollbar_track_border: Some(rgba(0x2e333cff).into()),
                         editor_foreground: Some(rgba(0xacb2beff).into()),
                         editor_background: Some(rgba(0x282c34ff).into()),
                         editor_gutter_background: Some(rgba(0x282c34ff).into()),
+                        editor_subheader_background: Some(rgba(0x2f343eff).into()),
+                        editor_active_line_background: Some(rgba(0x2f343ebf).into()),
+                        editor_highlighted_line_background: Some(rgba(0x2f343eff).into()),
                         editor_line_number: Some(rgba(0xc8ccd459).into()),
                         editor_active_line_number: Some(rgba(0xc8ccd4ff).into()),
+                        editor_invisible: Some(rgba(0x838994ff).into()),
                         editor_wrap_guide: Some(rgba(0xc8ccd40d).into()),
                         editor_active_wrap_guide: Some(rgba(0xc8ccd41a).into()),
+                        editor_document_highlight_read_background: Some(rgba(0x74ade81a).into()),
+                        editor_document_highlight_write_background: Some(rgba(0x555a6366).into()),
                         terminal_background: Some(rgba(0x282c34ff).into()),
                         terminal_ansi_bright_black: Some(rgba(0x525661ff).into()),
                         terminal_ansi_bright_red: Some(rgba(0x673a3cff).into()),
@@ -457,16 +543,52 @@ pub fn one() -> UserThemeFamily {
                         terminal_ansi_magenta: Some(rgba(0xbe5046ff).into()),
                         terminal_ansi_cyan: Some(rgba(0x6fb4c0ff).into()),
                         terminal_ansi_white: Some(rgba(0xc8ccd4ff).into()),
+                        link_text_hover: Some(rgba(0x74ade8ff).into()),
                         ..Default::default()
                     },
                     status: StatusColorsRefinement {
+                        conflict: Some(rgba(0xdec184ff).into()),
+                        conflict_background: Some(rgba(0x41331dff).into()),
+                        conflict_border: Some(rgba(0x5d4c2fff).into()),
                         created: Some(rgba(0xa1c181ff).into()),
-                        deleted: Some(rgba(0xa45a5eff).into()),
+                        created_background: Some(rgba(0x222e1dff).into()),
+                        created_border: Some(rgba(0x38482fff).into()),
+                        deleted: Some(rgba(0xd07277ff).into()),
+                        deleted_background: Some(rgba(0x301b1cff).into()),
+                        deleted_border: Some(rgba(0x4c2b2cff).into()),
                         error: Some(rgba(0xd07277ff).into()),
+                        error_background: Some(rgba(0x301b1cff).into()),
+                        error_border: Some(rgba(0x4c2b2cff).into()),
+                        hidden: Some(rgba(0x555a63ff).into()),
+                        hidden_background: Some(rgba(0x3b414dff).into()),
+                        hidden_border: Some(rgba(0x414754ff).into()),
                         hint: Some(rgba(0x5b708aff).into()),
+                        hint_background: Some(rgba(0x18243dff).into()),
+                        hint_border: Some(rgba(0x293c5bff).into()),
+                        ignored: Some(rgba(0x838994ff).into()),
+                        ignored_background: Some(rgba(0x3b414dff).into()),
+                        ignored_border: Some(rgba(0x464b57ff).into()),
+                        info: Some(rgba(0x74ade8ff).into()),
+                        info_background: Some(rgba(0x18243dff).into()),
+                        info_border: Some(rgba(0x293c5bff).into()),
                         modified: Some(rgba(0xdec184ff).into()),
-                        success: Some(rgba(0xc8ccd4ff).into()),
+                        modified_background: Some(rgba(0x41331dff).into()),
+                        modified_border: Some(rgba(0x5d4c2fff).into()),
+                        predictive: Some(rgba(0xa1c181ff).into()),
+                        predictive_background: Some(rgba(0x222e1dff).into()),
+                        predictive_border: Some(rgba(0x38482fff).into()),
+                        renamed: Some(rgba(0x74ade8ff).into()),
+                        renamed_background: Some(rgba(0x18243dff).into()),
+                        renamed_border: Some(rgba(0x293c5bff).into()),
+                        success: Some(rgba(0xa1c181ff).into()),
+                        success_background: Some(rgba(0x222e1dff).into()),
+                        success_border: Some(rgba(0x38482fff).into()),
+                        unreachable: Some(rgba(0x838994ff).into()),
+                        unreachable_background: Some(rgba(0x3b414dff).into()),
+                        unreachable_border: Some(rgba(0x464b57ff).into()),
                         warning: Some(rgba(0xdec184ff).into()),
+                        warning_background: Some(rgba(0x41331dff).into()),
+                        warning_border: Some(rgba(0x5d4c2fff).into()),
                         ..Default::default()
                     },
                     player: Some(PlayerColors(vec![

crates/theme2/src/themes/rose_pine.rs 🔗

@@ -20,36 +20,61 @@ pub fn rose_pine() -> UserThemeFamily {
                 appearance: Appearance::Light,
                 styles: UserThemeStylesRefinement {
                     colors: ThemeColorsRefinement {
-                        border: Some(rgba(0xe5e0dfff).into()),
-                        border_variant: Some(rgba(0xfdf8f1ff).into()),
+                        border: Some(rgba(0xdcd6d5ff).into()),
+                        border_variant: Some(rgba(0xdcd6d5ff).into()),
+                        border_focused: Some(rgba(0xc3d7dbff).into()),
+                        border_selected: Some(rgba(0xc3d7dbff).into()),
+                        border_transparent: Some(rgba(0x00000000).into()),
+                        border_disabled: Some(rgba(0xd0cccfff).into()),
                         elevated_surface_background: Some(rgba(0xfef9f2ff).into()),
+                        surface_background: Some(rgba(0xfef9f2ff).into()),
                         background: Some(rgba(0xdcd8d8ff).into()),
                         panel_background: Some(rgba(0xfef9f2ff).into()),
-                        element_hover: Some(rgba(0xdcd6d580).into()),
-                        element_selected: Some(rgba(0xc1bac180).into()),
+                        element_background: Some(rgba(0xfef9f2ff).into()),
+                        element_hover: Some(rgba(0xe5e0dfff).into()),
+                        element_active: Some(rgba(0xdbd5d4ff).into()),
+                        element_selected: Some(rgba(0xdbd5d4ff).into()),
+                        element_disabled: Some(rgba(0xfef9f2ff).into()),
                         drop_target_background: Some(rgba(0x706c8c80).into()),
+                        ghost_element_background: Some(rgba(0x00000000).into()),
+                        ghost_element_hover: Some(rgba(0xe5e0dfff).into()),
+                        ghost_element_active: Some(rgba(0xdbd5d4ff).into()),
+                        ghost_element_selected: Some(rgba(0xdbd5d4ff).into()),
+                        ghost_element_disabled: Some(rgba(0xfef9f2ff).into()),
                         text: Some(rgba(0x575279ff).into()),
                         text_muted: Some(rgba(0x706c8cff).into()),
-                        text_placeholder: Some(rgba(0xb1abb5ff).into()),
-                        text_disabled: Some(rgba(0x575279ff).into()),
+                        text_placeholder: Some(rgba(0x938fa3ff).into()),
+                        text_disabled: Some(rgba(0x938fa3ff).into()),
                         text_accent: Some(rgba(0x57949fff).into()),
+                        icon: Some(rgba(0x575279ff).into()),
+                        icon_muted: Some(rgba(0x706c8cff).into()),
+                        icon_disabled: Some(rgba(0x938fa3ff).into()),
+                        icon_placeholder: Some(rgba(0x706c8cff).into()),
+                        icon_accent: Some(rgba(0x57949fff).into()),
                         status_bar_background: Some(rgba(0xdcd8d8ff).into()),
                         title_bar_background: Some(rgba(0xdcd8d8ff).into()),
                         toolbar_background: Some(rgba(0xfaf4edff).into()),
                         tab_bar_background: Some(rgba(0xfef9f2ff).into()),
                         tab_inactive_background: Some(rgba(0xfef9f2ff).into()),
                         tab_active_background: Some(rgba(0xfaf4edff).into()),
-                        scrollbar_thumb_background: Some(rgba(0x5752794d).into()),
-                        scrollbar_thumb_hover_background: Some(rgba(0x5752794d).into()),
-                        scrollbar_thumb_border: Some(rgba(0xfdf8f1ff).into()),
+                        scrollbar_thumb_background: Some(rgba(0x5752794c).into()),
+                        scrollbar_thumb_hover_background: Some(rgba(0xe5e0dfff).into()),
+                        scrollbar_thumb_border: Some(rgba(0xe5e0dfff).into()),
+                        scrollbar_track_background: Some(rgba(0xfaf4edff).into()),
                         scrollbar_track_border: Some(rgba(0xfdf8f1ff).into()),
                         editor_foreground: Some(rgba(0x575279ff).into()),
                         editor_background: Some(rgba(0xfaf4edff).into()),
                         editor_gutter_background: Some(rgba(0xfaf4edff).into()),
+                        editor_subheader_background: Some(rgba(0xfef9f2ff).into()),
+                        editor_active_line_background: Some(rgba(0xfef9f2bf).into()),
+                        editor_highlighted_line_background: Some(rgba(0xfef9f2ff).into()),
                         editor_line_number: Some(rgba(0x57527959).into()),
                         editor_active_line_number: Some(rgba(0x575279ff).into()),
+                        editor_invisible: Some(rgba(0x706c8cff).into()),
                         editor_wrap_guide: Some(rgba(0x5752790d).into()),
                         editor_active_wrap_guide: Some(rgba(0x5752791a).into()),
+                        editor_document_highlight_read_background: Some(rgba(0x57949f1a).into()),
+                        editor_document_highlight_write_background: Some(rgba(0x9691a466).into()),
                         terminal_background: Some(rgba(0xfaf4edff).into()),
                         terminal_ansi_bright_black: Some(rgba(0xb8b2baff).into()),
                         terminal_ansi_bright_red: Some(rgba(0xdcb0bbff).into()),
@@ -67,16 +92,52 @@ pub fn rose_pine() -> UserThemeFamily {
                         terminal_ansi_magenta: Some(rgba(0x7c697fff).into()),
                         terminal_ansi_cyan: Some(rgba(0x2a6983ff).into()),
                         terminal_ansi_white: Some(rgba(0x575279ff).into()),
+                        link_text_hover: Some(rgba(0x57949fff).into()),
                         ..Default::default()
                     },
                     status: StatusColorsRefinement {
-                        created: Some(rgba(0x6bbca3ff).into()),
+                        conflict: Some(rgba(0xe99d35ff).into()),
+                        conflict_background: Some(rgba(0xffebd6ff).into()),
+                        conflict_border: Some(rgba(0xffdab7ff).into()),
+                        created: Some(rgba(0x3eaa8eff).into()),
+                        created_background: Some(rgba(0xdbeee7ff).into()),
+                        created_border: Some(rgba(0xbee0d5ff).into()),
                         deleted: Some(rgba(0xb4647aff).into()),
+                        deleted_background: Some(rgba(0xf1dfe3ff).into()),
+                        deleted_border: Some(rgba(0xe6c6cdff).into()),
                         error: Some(rgba(0xb4647aff).into()),
+                        error_background: Some(rgba(0xf1dfe3ff).into()),
+                        error_border: Some(rgba(0xe6c6cdff).into()),
+                        hidden: Some(rgba(0x938fa3ff).into()),
+                        hidden_background: Some(rgba(0xdcd8d8ff).into()),
+                        hidden_border: Some(rgba(0xd0cccfff).into()),
                         hint: Some(rgba(0x7a92aaff).into()),
+                        hint_background: Some(rgba(0xdde9ebff).into()),
+                        hint_border: Some(rgba(0xc3d7dbff).into()),
+                        ignored: Some(rgba(0x706c8cff).into()),
+                        ignored_background: Some(rgba(0xdcd8d8ff).into()),
+                        ignored_border: Some(rgba(0xdcd6d5ff).into()),
+                        info: Some(rgba(0x57949fff).into()),
+                        info_background: Some(rgba(0xdde9ebff).into()),
+                        info_border: Some(rgba(0xc3d7dbff).into()),
                         modified: Some(rgba(0xe99d35ff).into()),
-                        success: Some(rgba(0x575279ff).into()),
+                        modified_background: Some(rgba(0xffebd6ff).into()),
+                        modified_border: Some(rgba(0xffdab7ff).into()),
+                        predictive: Some(rgba(0x3eaa8eff).into()),
+                        predictive_background: Some(rgba(0xdbeee7ff).into()),
+                        predictive_border: Some(rgba(0xbee0d5ff).into()),
+                        renamed: Some(rgba(0x57949fff).into()),
+                        renamed_background: Some(rgba(0xdde9ebff).into()),
+                        renamed_border: Some(rgba(0xc3d7dbff).into()),
+                        success: Some(rgba(0x3eaa8eff).into()),
+                        success_background: Some(rgba(0xdbeee7ff).into()),
+                        success_border: Some(rgba(0xbee0d5ff).into()),
+                        unreachable: Some(rgba(0x706c8cff).into()),
+                        unreachable_background: Some(rgba(0xdcd8d8ff).into()),
+                        unreachable_border: Some(rgba(0xdcd6d5ff).into()),
                         warning: Some(rgba(0xe99d35ff).into()),
+                        warning_background: Some(rgba(0xffebd6ff).into()),
+                        warning_border: Some(rgba(0xffdab7ff).into()),
                         ..Default::default()
                     },
                     player: Some(PlayerColors(vec![
@@ -417,36 +478,61 @@ pub fn rose_pine() -> UserThemeFamily {
                 appearance: Appearance::Dark,
                 styles: UserThemeStylesRefinement {
                     colors: ThemeColorsRefinement {
-                        border: Some(rgba(0x322f48ff).into()),
-                        border_variant: Some(rgba(0x27243bff).into()),
+                        border: Some(rgba(0x504c68ff).into()),
+                        border_variant: Some(rgba(0x504c68ff).into()),
+                        border_focused: Some(rgba(0x435255ff).into()),
+                        border_selected: Some(rgba(0x435255ff).into()),
+                        border_transparent: Some(rgba(0x00000000).into()),
+                        border_disabled: Some(rgba(0x44415bff).into()),
                         elevated_surface_background: Some(rgba(0x28253cff).into()),
+                        surface_background: Some(rgba(0x28253cff).into()),
                         background: Some(rgba(0x38354eff).into()),
                         panel_background: Some(rgba(0x28253cff).into()),
-                        element_hover: Some(rgba(0x504c6880).into()),
-                        element_selected: Some(rgba(0x45415d80).into()),
+                        element_background: Some(rgba(0x28253cff).into()),
+                        element_hover: Some(rgba(0x322f48ff).into()),
+                        element_active: Some(rgba(0x4f4b66ff).into()),
+                        element_selected: Some(rgba(0x4f4b66ff).into()),
+                        element_disabled: Some(rgba(0x28253cff).into()),
                         drop_target_background: Some(rgba(0x85819e80).into()),
+                        ghost_element_background: Some(rgba(0x00000000).into()),
+                        ghost_element_hover: Some(rgba(0x322f48ff).into()),
+                        ghost_element_active: Some(rgba(0x4f4b66ff).into()),
+                        ghost_element_selected: Some(rgba(0x4f4b66ff).into()),
+                        ghost_element_disabled: Some(rgba(0x28253cff).into()),
                         text: Some(rgba(0xe0def4ff).into()),
                         text_muted: Some(rgba(0x85819eff).into()),
-                        text_placeholder: Some(rgba(0x3a3653ff).into()),
-                        text_disabled: Some(rgba(0xe0def4ff).into()),
+                        text_placeholder: Some(rgba(0x615d7aff).into()),
+                        text_disabled: Some(rgba(0x615d7aff).into()),
                         text_accent: Some(rgba(0x9cced7ff).into()),
+                        icon: Some(rgba(0xe0def4ff).into()),
+                        icon_muted: Some(rgba(0x85819eff).into()),
+                        icon_disabled: Some(rgba(0x615d7aff).into()),
+                        icon_placeholder: Some(rgba(0x85819eff).into()),
+                        icon_accent: Some(rgba(0x9cced7ff).into()),
                         status_bar_background: Some(rgba(0x38354eff).into()),
                         title_bar_background: Some(rgba(0x38354eff).into()),
                         toolbar_background: Some(rgba(0x232136ff).into()),
                         tab_bar_background: Some(rgba(0x28253cff).into()),
                         tab_inactive_background: Some(rgba(0x28253cff).into()),
                         tab_active_background: Some(rgba(0x232136ff).into()),
-                        scrollbar_thumb_background: Some(rgba(0xe0def44d).into()),
-                        scrollbar_thumb_hover_background: Some(rgba(0xe0def44d).into()),
-                        scrollbar_thumb_border: Some(rgba(0x27243bff).into()),
+                        scrollbar_thumb_background: Some(rgba(0xe0def44c).into()),
+                        scrollbar_thumb_hover_background: Some(rgba(0x322f48ff).into()),
+                        scrollbar_thumb_border: Some(rgba(0x322f48ff).into()),
+                        scrollbar_track_background: Some(rgba(0x232136ff).into()),
                         scrollbar_track_border: Some(rgba(0x27243bff).into()),
                         editor_foreground: Some(rgba(0xe0def4ff).into()),
                         editor_background: Some(rgba(0x232136ff).into()),
                         editor_gutter_background: Some(rgba(0x232136ff).into()),
+                        editor_subheader_background: Some(rgba(0x28253cff).into()),
+                        editor_active_line_background: Some(rgba(0x28253cbf).into()),
+                        editor_highlighted_line_background: Some(rgba(0x28253cff).into()),
                         editor_line_number: Some(rgba(0xe0def459).into()),
                         editor_active_line_number: Some(rgba(0xe0def4ff).into()),
+                        editor_invisible: Some(rgba(0x85819eff).into()),
                         editor_wrap_guide: Some(rgba(0xe0def40d).into()),
                         editor_active_wrap_guide: Some(rgba(0xe0def41a).into()),
+                        editor_document_highlight_read_background: Some(rgba(0x9cced71a).into()),
+                        editor_document_highlight_write_background: Some(rgba(0x59557166).into()),
                         terminal_background: Some(rgba(0x232136ff).into()),
                         terminal_ansi_bright_black: Some(rgba(0x3f3b58ff).into()),
                         terminal_ansi_bright_red: Some(rgba(0x7e3647ff).into()),
@@ -464,16 +550,52 @@ pub fn rose_pine() -> UserThemeFamily {
                         terminal_ansi_magenta: Some(rgba(0xa784a1ff).into()),
                         terminal_ansi_cyan: Some(rgba(0x3f8fb0ff).into()),
                         terminal_ansi_white: Some(rgba(0xe0def4ff).into()),
+                        link_text_hover: Some(rgba(0x9cced7ff).into()),
                         ..Default::default()
                     },
                     status: StatusColorsRefinement {
+                        conflict: Some(rgba(0xf5c177ff).into()),
+                        conflict_background: Some(rgba(0x50341aff).into()),
+                        conflict_border: Some(rgba(0x6d4d2bff).into()),
                         created: Some(rgba(0x5dc2a3ff).into()),
-                        deleted: Some(rgba(0xbe5773ff).into()),
+                        created_background: Some(rgba(0x182e23ff).into()),
+                        created_border: Some(rgba(0x254839ff).into()),
+                        deleted: Some(rgba(0xea6f92ff).into()),
+                        deleted_background: Some(rgba(0x431820ff).into()),
+                        deleted_border: Some(rgba(0x612834ff).into()),
                         error: Some(rgba(0xea6f92ff).into()),
+                        error_background: Some(rgba(0x431820ff).into()),
+                        error_border: Some(rgba(0x612834ff).into()),
+                        hidden: Some(rgba(0x615d7aff).into()),
+                        hidden_background: Some(rgba(0x38354eff).into()),
+                        hidden_border: Some(rgba(0x44415bff).into()),
                         hint: Some(rgba(0x728aa2ff).into()),
+                        hint_background: Some(rgba(0x2f3739ff).into()),
+                        hint_border: Some(rgba(0x435255ff).into()),
+                        ignored: Some(rgba(0x85819eff).into()),
+                        ignored_background: Some(rgba(0x38354eff).into()),
+                        ignored_border: Some(rgba(0x504c68ff).into()),
+                        info: Some(rgba(0x9cced7ff).into()),
+                        info_background: Some(rgba(0x2f3739ff).into()),
+                        info_border: Some(rgba(0x435255ff).into()),
                         modified: Some(rgba(0xf5c177ff).into()),
-                        success: Some(rgba(0xe0def4ff).into()),
+                        modified_background: Some(rgba(0x50341aff).into()),
+                        modified_border: Some(rgba(0x6d4d2bff).into()),
+                        predictive: Some(rgba(0x5dc2a3ff).into()),
+                        predictive_background: Some(rgba(0x182e23ff).into()),
+                        predictive_border: Some(rgba(0x254839ff).into()),
+                        renamed: Some(rgba(0x9cced7ff).into()),
+                        renamed_background: Some(rgba(0x2f3739ff).into()),
+                        renamed_border: Some(rgba(0x435255ff).into()),
+                        success: Some(rgba(0x5dc2a3ff).into()),
+                        success_background: Some(rgba(0x182e23ff).into()),
+                        success_border: Some(rgba(0x254839ff).into()),
+                        unreachable: Some(rgba(0x85819eff).into()),
+                        unreachable_background: Some(rgba(0x38354eff).into()),
+                        unreachable_border: Some(rgba(0x504c68ff).into()),
                         warning: Some(rgba(0xf5c177ff).into()),
+                        warning_background: Some(rgba(0x50341aff).into()),
+                        warning_border: Some(rgba(0x6d4d2bff).into()),
                         ..Default::default()
                     },
                     player: Some(PlayerColors(vec![
@@ -814,36 +936,61 @@ pub fn rose_pine() -> UserThemeFamily {
                 appearance: Appearance::Dark,
                 styles: UserThemeStylesRefinement {
                     colors: ThemeColorsRefinement {
-                        border: Some(rgba(0x232132ff).into()),
-                        border_variant: Some(rgba(0x1c1a29ff).into()),
+                        border: Some(rgba(0x423f55ff).into()),
+                        border_variant: Some(rgba(0x423f55ff).into()),
+                        border_focused: Some(rgba(0x435255ff).into()),
+                        border_selected: Some(rgba(0x435255ff).into()),
+                        border_transparent: Some(rgba(0x00000000).into()),
+                        border_disabled: Some(rgba(0x353347ff).into()),
                         elevated_surface_background: Some(rgba(0x1d1b2aff).into()),
+                        surface_background: Some(rgba(0x1d1b2aff).into()),
                         background: Some(rgba(0x292739ff).into()),
                         panel_background: Some(rgba(0x1d1b2aff).into()),
-                        element_hover: Some(rgba(0x423f5580).into()),
-                        element_selected: Some(rgba(0x47445b80).into()),
+                        element_background: Some(rgba(0x1d1b2aff).into()),
+                        element_hover: Some(rgba(0x232132ff).into()),
+                        element_active: Some(rgba(0x403e53ff).into()),
+                        element_selected: Some(rgba(0x403e53ff).into()),
+                        element_disabled: Some(rgba(0x1d1b2aff).into()),
                         drop_target_background: Some(rgba(0x75718e80).into()),
+                        ghost_element_background: Some(rgba(0x00000000).into()),
+                        ghost_element_hover: Some(rgba(0x232132ff).into()),
+                        ghost_element_active: Some(rgba(0x403e53ff).into()),
+                        ghost_element_selected: Some(rgba(0x403e53ff).into()),
+                        ghost_element_disabled: Some(rgba(0x1d1b2aff).into()),
                         text: Some(rgba(0xe0def4ff).into()),
                         text_muted: Some(rgba(0x75718eff).into()),
-                        text_placeholder: Some(rgba(0x3b384fff).into()),
-                        text_disabled: Some(rgba(0xe0def4ff).into()),
+                        text_placeholder: Some(rgba(0x2f2b43ff).into()),
+                        text_disabled: Some(rgba(0x2f2b43ff).into()),
                         text_accent: Some(rgba(0x9cced7ff).into()),
+                        icon: Some(rgba(0xe0def4ff).into()),
+                        icon_muted: Some(rgba(0x75718eff).into()),
+                        icon_disabled: Some(rgba(0x2f2b43ff).into()),
+                        icon_placeholder: Some(rgba(0x75718eff).into()),
+                        icon_accent: Some(rgba(0x9cced7ff).into()),
                         status_bar_background: Some(rgba(0x292739ff).into()),
                         title_bar_background: Some(rgba(0x292739ff).into()),
                         toolbar_background: Some(rgba(0x191724ff).into()),
                         tab_bar_background: Some(rgba(0x1d1b2aff).into()),
                         tab_inactive_background: Some(rgba(0x1d1b2aff).into()),
                         tab_active_background: Some(rgba(0x191724ff).into()),
-                        scrollbar_thumb_background: Some(rgba(0xe0def44d).into()),
-                        scrollbar_thumb_hover_background: Some(rgba(0xe0def44d).into()),
-                        scrollbar_thumb_border: Some(rgba(0x1c1a29ff).into()),
+                        scrollbar_thumb_background: Some(rgba(0xe0def44c).into()),
+                        scrollbar_thumb_hover_background: Some(rgba(0x232132ff).into()),
+                        scrollbar_thumb_border: Some(rgba(0x232132ff).into()),
+                        scrollbar_track_background: Some(rgba(0x191724ff).into()),
                         scrollbar_track_border: Some(rgba(0x1c1a29ff).into()),
                         editor_foreground: Some(rgba(0xe0def4ff).into()),
                         editor_background: Some(rgba(0x191724ff).into()),
                         editor_gutter_background: Some(rgba(0x191724ff).into()),
+                        editor_subheader_background: Some(rgba(0x1d1b2aff).into()),
+                        editor_active_line_background: Some(rgba(0x1d1b2abf).into()),
+                        editor_highlighted_line_background: Some(rgba(0x1d1b2aff).into()),
                         editor_line_number: Some(rgba(0xe0def459).into()),
                         editor_active_line_number: Some(rgba(0xe0def4ff).into()),
+                        editor_invisible: Some(rgba(0x75718eff).into()),
                         editor_wrap_guide: Some(rgba(0xe0def40d).into()),
                         editor_active_wrap_guide: Some(rgba(0xe0def41a).into()),
+                        editor_document_highlight_read_background: Some(rgba(0x9cced71a).into()),
+                        editor_document_highlight_write_background: Some(rgba(0x28253c66).into()),
                         terminal_background: Some(rgba(0x191724ff).into()),
                         terminal_ansi_bright_black: Some(rgba(0x403d55ff).into()),
                         terminal_ansi_bright_red: Some(rgba(0x7e3647ff).into()),
@@ -861,16 +1008,52 @@ pub fn rose_pine() -> UserThemeFamily {
                         terminal_ansi_magenta: Some(rgba(0x9d7691ff).into()),
                         terminal_ansi_cyan: Some(rgba(0x32748fff).into()),
                         terminal_ansi_white: Some(rgba(0xe0def4ff).into()),
+                        link_text_hover: Some(rgba(0x9cced7ff).into()),
                         ..Default::default()
                     },
                     status: StatusColorsRefinement {
+                        conflict: Some(rgba(0xf5c177ff).into()),
+                        conflict_background: Some(rgba(0x50341aff).into()),
+                        conflict_border: Some(rgba(0x6d4d2bff).into()),
                         created: Some(rgba(0x5dc2a3ff).into()),
-                        deleted: Some(rgba(0xbe5773ff).into()),
+                        created_background: Some(rgba(0x182e23ff).into()),
+                        created_border: Some(rgba(0x254839ff).into()),
+                        deleted: Some(rgba(0xea6f92ff).into()),
+                        deleted_background: Some(rgba(0x431820ff).into()),
+                        deleted_border: Some(rgba(0x612834ff).into()),
                         error: Some(rgba(0xea6f92ff).into()),
+                        error_background: Some(rgba(0x431820ff).into()),
+                        error_border: Some(rgba(0x612834ff).into()),
+                        hidden: Some(rgba(0x2f2b43ff).into()),
+                        hidden_background: Some(rgba(0x292739ff).into()),
+                        hidden_border: Some(rgba(0x353347ff).into()),
                         hint: Some(rgba(0x5e768cff).into()),
+                        hint_background: Some(rgba(0x2f3739ff).into()),
+                        hint_border: Some(rgba(0x435255ff).into()),
+                        ignored: Some(rgba(0x75718eff).into()),
+                        ignored_background: Some(rgba(0x292739ff).into()),
+                        ignored_border: Some(rgba(0x423f55ff).into()),
+                        info: Some(rgba(0x9cced7ff).into()),
+                        info_background: Some(rgba(0x2f3739ff).into()),
+                        info_border: Some(rgba(0x435255ff).into()),
                         modified: Some(rgba(0xf5c177ff).into()),
-                        success: Some(rgba(0xe0def4ff).into()),
+                        modified_background: Some(rgba(0x50341aff).into()),
+                        modified_border: Some(rgba(0x6d4d2bff).into()),
+                        predictive: Some(rgba(0x5dc2a3ff).into()),
+                        predictive_background: Some(rgba(0x182e23ff).into()),
+                        predictive_border: Some(rgba(0x254839ff).into()),
+                        renamed: Some(rgba(0x9cced7ff).into()),
+                        renamed_background: Some(rgba(0x2f3739ff).into()),
+                        renamed_border: Some(rgba(0x435255ff).into()),
+                        success: Some(rgba(0x5dc2a3ff).into()),
+                        success_background: Some(rgba(0x182e23ff).into()),
+                        success_border: Some(rgba(0x254839ff).into()),
+                        unreachable: Some(rgba(0x75718eff).into()),
+                        unreachable_background: Some(rgba(0x292739ff).into()),
+                        unreachable_border: Some(rgba(0x423f55ff).into()),
                         warning: Some(rgba(0xf5c177ff).into()),
+                        warning_background: Some(rgba(0x50341aff).into()),
+                        warning_border: Some(rgba(0x6d4d2bff).into()),
                         ..Default::default()
                     },
                     player: Some(PlayerColors(vec![

crates/theme2/src/themes/sandcastle.rs 🔗

@@ -19,36 +19,61 @@ pub fn sandcastle() -> UserThemeFamily {
             appearance: Appearance::Dark,
             styles: UserThemeStylesRefinement {
                 colors: ThemeColorsRefinement {
-                    border: Some(rgba(0x313741ff).into()),
-                    border_variant: Some(rgba(0x2a2f38ff).into()),
+                    border: Some(rgba(0x3d4350ff).into()),
+                    border_variant: Some(rgba(0x3d4350ff).into()),
+                    border_focused: Some(rgba(0x223232ff).into()),
+                    border_selected: Some(rgba(0x223232ff).into()),
+                    border_transparent: Some(rgba(0x00000000).into()),
+                    border_disabled: Some(rgba(0x393f4aff).into()),
                     elevated_surface_background: Some(rgba(0x2b3039ff).into()),
+                    surface_background: Some(rgba(0x2b3039ff).into()),
                     background: Some(rgba(0x333944ff).into()),
                     panel_background: Some(rgba(0x2b3039ff).into()),
-                    element_hover: Some(rgba(0x3d435080).into()),
-                    element_selected: Some(rgba(0x57535380).into()),
+                    element_background: Some(rgba(0x2b3039ff).into()),
+                    element_hover: Some(rgba(0x313741ff).into()),
+                    element_active: Some(rgba(0x3d4350ff).into()),
+                    element_selected: Some(rgba(0x3d4350ff).into()),
+                    element_disabled: Some(rgba(0x2b3039ff).into()),
                     drop_target_background: Some(rgba(0xa6978280).into()),
+                    ghost_element_background: Some(rgba(0x00000000).into()),
+                    ghost_element_hover: Some(rgba(0x313741ff).into()),
+                    ghost_element_active: Some(rgba(0x3d4350ff).into()),
+                    ghost_element_selected: Some(rgba(0x3d4350ff).into()),
+                    ghost_element_disabled: Some(rgba(0x2b3039ff).into()),
                     text: Some(rgba(0xfdf4c1ff).into()),
                     text_muted: Some(rgba(0xa69782ff).into()),
-                    text_placeholder: Some(rgba(0x645b54ff).into()),
-                    text_disabled: Some(rgba(0xfdf4c1ff).into()),
+                    text_placeholder: Some(rgba(0x827568ff).into()),
+                    text_disabled: Some(rgba(0x827568ff).into()),
                     text_accent: Some(rgba(0x528b8bff).into()),
+                    icon: Some(rgba(0xfdf4c1ff).into()),
+                    icon_muted: Some(rgba(0xa69782ff).into()),
+                    icon_disabled: Some(rgba(0x827568ff).into()),
+                    icon_placeholder: Some(rgba(0xa69782ff).into()),
+                    icon_accent: Some(rgba(0x528b8bff).into()),
                     status_bar_background: Some(rgba(0x333944ff).into()),
                     title_bar_background: Some(rgba(0x333944ff).into()),
                     toolbar_background: Some(rgba(0x282c34ff).into()),
                     tab_bar_background: Some(rgba(0x2b3039ff).into()),
                     tab_inactive_background: Some(rgba(0x2b3039ff).into()),
                     tab_active_background: Some(rgba(0x282c34ff).into()),
-                    scrollbar_thumb_background: Some(rgba(0xfdf4c14d).into()),
-                    scrollbar_thumb_hover_background: Some(rgba(0xfdf4c14d).into()),
-                    scrollbar_thumb_border: Some(rgba(0x2a2f38ff).into()),
+                    scrollbar_thumb_background: Some(rgba(0xfdf4c14c).into()),
+                    scrollbar_thumb_hover_background: Some(rgba(0x313741ff).into()),
+                    scrollbar_thumb_border: Some(rgba(0x313741ff).into()),
+                    scrollbar_track_background: Some(rgba(0x282c34ff).into()),
                     scrollbar_track_border: Some(rgba(0x2a2f38ff).into()),
                     editor_foreground: Some(rgba(0xfdf4c1ff).into()),
                     editor_background: Some(rgba(0x282c34ff).into()),
                     editor_gutter_background: Some(rgba(0x282c34ff).into()),
+                    editor_subheader_background: Some(rgba(0x2b3039ff).into()),
+                    editor_active_line_background: Some(rgba(0x2b3039bf).into()),
+                    editor_highlighted_line_background: Some(rgba(0x2b3039ff).into()),
                     editor_line_number: Some(rgba(0xfdf4c159).into()),
                     editor_active_line_number: Some(rgba(0xfdf4c1ff).into()),
+                    editor_invisible: Some(rgba(0xa69782ff).into()),
                     editor_wrap_guide: Some(rgba(0xfdf4c10d).into()),
                     editor_active_wrap_guide: Some(rgba(0xfdf4c11a).into()),
+                    editor_document_highlight_read_background: Some(rgba(0x528b8b1a).into()),
+                    editor_document_highlight_write_background: Some(rgba(0x7c6f6466).into()),
                     terminal_background: Some(rgba(0x282c34ff).into()),
                     terminal_ansi_bright_black: Some(rgba(0x5e5753ff).into()),
                     terminal_ansi_bright_red: Some(rgba(0x57333dff).into()),
@@ -66,16 +91,52 @@ pub fn sandcastle() -> UserThemeFamily {
                     terminal_ansi_magenta: Some(rgba(0xa87323ff).into()),
                     terminal_ansi_cyan: Some(rgba(0x83a598ff).into()),
                     terminal_ansi_white: Some(rgba(0xfdf4c1ff).into()),
+                    link_text_hover: Some(rgba(0x528b8bff).into()),
                     ..Default::default()
                 },
                 status: StatusColorsRefinement {
+                    conflict: Some(rgba(0xa07e3bff).into()),
+                    conflict_background: Some(rgba(0x231d12ff).into()),
+                    conflict_border: Some(rgba(0x392e1aff).into()),
                     created: Some(rgba(0x83a598ff).into()),
-                    deleted: Some(rgba(0x8d4f61ff).into()),
+                    created_background: Some(rgba(0x1e2321ff).into()),
+                    created_border: Some(rgba(0x303a36ff).into()),
+                    deleted: Some(rgba(0xb4637aff).into()),
+                    deleted_background: Some(rgba(0x26191cff).into()),
+                    deleted_border: Some(rgba(0x3f272dff).into()),
                     error: Some(rgba(0xb4637aff).into()),
+                    error_background: Some(rgba(0x26191cff).into()),
+                    error_border: Some(rgba(0x3f272dff).into()),
+                    hidden: Some(rgba(0x827568ff).into()),
+                    hidden_background: Some(rgba(0x333944ff).into()),
+                    hidden_border: Some(rgba(0x393f4aff).into()),
                     hint: Some(rgba(0x727d68ff).into()),
+                    hint_background: Some(rgba(0x171f1fff).into()),
+                    hint_border: Some(rgba(0x223232ff).into()),
+                    ignored: Some(rgba(0xa69782ff).into()),
+                    ignored_background: Some(rgba(0x333944ff).into()),
+                    ignored_border: Some(rgba(0x3d4350ff).into()),
+                    info: Some(rgba(0x528b8bff).into()),
+                    info_background: Some(rgba(0x171f1fff).into()),
+                    info_border: Some(rgba(0x223232ff).into()),
                     modified: Some(rgba(0xa07e3bff).into()),
-                    success: Some(rgba(0xfdf4c1ff).into()),
+                    modified_background: Some(rgba(0x231d12ff).into()),
+                    modified_border: Some(rgba(0x392e1aff).into()),
+                    predictive: Some(rgba(0x83a598ff).into()),
+                    predictive_background: Some(rgba(0x1e2321ff).into()),
+                    predictive_border: Some(rgba(0x303a36ff).into()),
+                    renamed: Some(rgba(0x528b8bff).into()),
+                    renamed_background: Some(rgba(0x171f1fff).into()),
+                    renamed_border: Some(rgba(0x223232ff).into()),
+                    success: Some(rgba(0x83a598ff).into()),
+                    success_background: Some(rgba(0x1e2321ff).into()),
+                    success_border: Some(rgba(0x303a36ff).into()),
+                    unreachable: Some(rgba(0xa69782ff).into()),
+                    unreachable_background: Some(rgba(0x333944ff).into()),
+                    unreachable_border: Some(rgba(0x3d4350ff).into()),
                     warning: Some(rgba(0xa07e3bff).into()),
+                    warning_background: Some(rgba(0x231d12ff).into()),
+                    warning_border: Some(rgba(0x392e1aff).into()),
                     ..Default::default()
                 },
                 player: Some(PlayerColors(vec![

crates/theme2/src/themes/solarized.rs 🔗

@@ -20,36 +20,61 @@ pub fn solarized() -> UserThemeFamily {
                 appearance: Appearance::Light,
                 styles: UserThemeStylesRefinement {
                     colors: ThemeColorsRefinement {
-                        border: Some(rgba(0xdcdacbff).into()),
-                        border_variant: Some(rgba(0xf5eedbff).into()),
+                        border: Some(rgba(0x9faaa8ff).into()),
+                        border_variant: Some(rgba(0x9faaa8ff).into()),
+                        border_focused: Some(rgba(0xbfd3efff).into()),
+                        border_selected: Some(rgba(0xbfd3efff).into()),
+                        border_transparent: Some(rgba(0x00000000).into()),
+                        border_disabled: Some(rgba(0xb7bdb6ff).into()),
                         elevated_surface_background: Some(rgba(0xf3eddaff).into()),
+                        surface_background: Some(rgba(0xf3eddaff).into()),
                         background: Some(rgba(0xcfd0c4ff).into()),
                         panel_background: Some(rgba(0xf3eddaff).into()),
-                        element_hover: Some(rgba(0x9faaa880).into()),
-                        element_selected: Some(rgba(0x7f919480).into()),
+                        element_background: Some(rgba(0xf3eddaff).into()),
+                        element_hover: Some(rgba(0xdcdacbff).into()),
+                        element_active: Some(rgba(0xa2aca9ff).into()),
+                        element_selected: Some(rgba(0xa2aca9ff).into()),
+                        element_disabled: Some(rgba(0xf3eddaff).into()),
                         drop_target_background: Some(rgba(0x34555e80).into()),
+                        ghost_element_background: Some(rgba(0x00000000).into()),
+                        ghost_element_hover: Some(rgba(0xdcdacbff).into()),
+                        ghost_element_active: Some(rgba(0xa2aca9ff).into()),
+                        ghost_element_selected: Some(rgba(0xa2aca9ff).into()),
+                        ghost_element_disabled: Some(rgba(0xf3eddaff).into()),
                         text: Some(rgba(0x002b36ff).into()),
                         text_muted: Some(rgba(0x34555eff).into()),
-                        text_placeholder: Some(rgba(0x788b8fff).into()),
-                        text_disabled: Some(rgba(0x002b36ff).into()),
+                        text_placeholder: Some(rgba(0x6a7f86ff).into()),
+                        text_disabled: Some(rgba(0x6a7f86ff).into()),
                         text_accent: Some(rgba(0x298bd1ff).into()),
+                        icon: Some(rgba(0x002b36ff).into()),
+                        icon_muted: Some(rgba(0x34555eff).into()),
+                        icon_disabled: Some(rgba(0x6a7f86ff).into()),
+                        icon_placeholder: Some(rgba(0x34555eff).into()),
+                        icon_accent: Some(rgba(0x298bd1ff).into()),
                         status_bar_background: Some(rgba(0xcfd0c4ff).into()),
                         title_bar_background: Some(rgba(0xcfd0c4ff).into()),
                         toolbar_background: Some(rgba(0xfdf6e3ff).into()),
                         tab_bar_background: Some(rgba(0xf3eddaff).into()),
                         tab_inactive_background: Some(rgba(0xf3eddaff).into()),
                         tab_active_background: Some(rgba(0xfdf6e3ff).into()),
-                        scrollbar_thumb_background: Some(rgba(0x002b364d).into()),
-                        scrollbar_thumb_hover_background: Some(rgba(0x002b364d).into()),
-                        scrollbar_thumb_border: Some(rgba(0xf5eedbff).into()),
+                        scrollbar_thumb_background: Some(rgba(0x002b364c).into()),
+                        scrollbar_thumb_hover_background: Some(rgba(0xdcdacbff).into()),
+                        scrollbar_thumb_border: Some(rgba(0xdcdacbff).into()),
+                        scrollbar_track_background: Some(rgba(0xfdf6e3ff).into()),
                         scrollbar_track_border: Some(rgba(0xf5eedbff).into()),
                         editor_foreground: Some(rgba(0x002b36ff).into()),
                         editor_background: Some(rgba(0xfdf6e3ff).into()),
                         editor_gutter_background: Some(rgba(0xfdf6e3ff).into()),
+                        editor_subheader_background: Some(rgba(0xf3eddaff).into()),
+                        editor_active_line_background: Some(rgba(0xf3eddabf).into()),
+                        editor_highlighted_line_background: Some(rgba(0xf3eddaff).into()),
                         editor_line_number: Some(rgba(0x002b3659).into()),
                         editor_active_line_number: Some(rgba(0x002b36ff).into()),
+                        editor_invisible: Some(rgba(0x34555eff).into()),
                         editor_wrap_guide: Some(rgba(0x002b360d).into()),
                         editor_active_wrap_guide: Some(rgba(0x002b361a).into()),
+                        editor_document_highlight_read_background: Some(rgba(0x298bd11a).into()),
+                        editor_document_highlight_write_background: Some(rgba(0x6d828866).into()),
                         terminal_background: Some(rgba(0xfdf6e3ff).into()),
                         terminal_ansi_bright_black: Some(rgba(0x7b8e91ff).into()),
                         terminal_ansi_bright_red: Some(rgba(0xfaa091ff).into()),
@@ -67,16 +92,52 @@ pub fn solarized() -> UserThemeFamily {
                         terminal_ansi_magenta: Some(rgba(0xd33882ff).into()),
                         terminal_ansi_cyan: Some(rgba(0x2ca198ff).into()),
                         terminal_ansi_white: Some(rgba(0x002b36ff).into()),
+                        link_text_hover: Some(rgba(0x298bd1ff).into()),
                         ..Default::default()
                     },
                     status: StatusColorsRefinement {
-                        created: Some(rgba(0xa0ad46ff).into()),
+                        conflict: Some(rgba(0xb58904ff).into()),
+                        conflict_background: Some(rgba(0xf5e6d0ff).into()),
+                        conflict_border: Some(rgba(0xebd3aaff).into()),
+                        created: Some(rgba(0x859904ff).into()),
+                        created_background: Some(rgba(0xe9ead0ff).into()),
+                        created_border: Some(rgba(0xd6d9abff).into()),
                         deleted: Some(rgba(0xdc3330ff).into()),
+                        deleted_background: Some(rgba(0xffd9d2ff).into()),
+                        deleted_border: Some(rgba(0xffbbafff).into()),
                         error: Some(rgba(0xdc3330ff).into()),
+                        error_background: Some(rgba(0xffd9d2ff).into()),
+                        error_border: Some(rgba(0xffbbafff).into()),
+                        hidden: Some(rgba(0x6a7f86ff).into()),
+                        hidden_background: Some(rgba(0xcfd0c4ff).into()),
+                        hidden_border: Some(rgba(0xb7bdb6ff).into()),
                         hint: Some(rgba(0x5889a3ff).into()),
+                        hint_background: Some(rgba(0xdbe6f6ff).into()),
+                        hint_border: Some(rgba(0xbfd3efff).into()),
+                        ignored: Some(rgba(0x34555eff).into()),
+                        ignored_background: Some(rgba(0xcfd0c4ff).into()),
+                        ignored_border: Some(rgba(0x9faaa8ff).into()),
+                        info: Some(rgba(0x298bd1ff).into()),
+                        info_background: Some(rgba(0xdbe6f6ff).into()),
+                        info_border: Some(rgba(0xbfd3efff).into()),
                         modified: Some(rgba(0xb58904ff).into()),
-                        success: Some(rgba(0x002b36ff).into()),
+                        modified_background: Some(rgba(0xf5e6d0ff).into()),
+                        modified_border: Some(rgba(0xebd3aaff).into()),
+                        predictive: Some(rgba(0x859904ff).into()),
+                        predictive_background: Some(rgba(0xe9ead0ff).into()),
+                        predictive_border: Some(rgba(0xd6d9abff).into()),
+                        renamed: Some(rgba(0x298bd1ff).into()),
+                        renamed_background: Some(rgba(0xdbe6f6ff).into()),
+                        renamed_border: Some(rgba(0xbfd3efff).into()),
+                        success: Some(rgba(0x859904ff).into()),
+                        success_background: Some(rgba(0xe9ead0ff).into()),
+                        success_border: Some(rgba(0xd6d9abff).into()),
+                        unreachable: Some(rgba(0x34555eff).into()),
+                        unreachable_background: Some(rgba(0xcfd0c4ff).into()),
+                        unreachable_border: Some(rgba(0x9faaa8ff).into()),
                         warning: Some(rgba(0xb58904ff).into()),
+                        warning_background: Some(rgba(0xf5e6d0ff).into()),
+                        warning_border: Some(rgba(0xebd3aaff).into()),
                         ..Default::default()
                     },
                     player: Some(PlayerColors(vec![
@@ -403,36 +464,61 @@ pub fn solarized() -> UserThemeFamily {
                 appearance: Appearance::Dark,
                 styles: UserThemeStylesRefinement {
                     colors: ThemeColorsRefinement {
-                        border: Some(rgba(0x063541ff).into()),
-                        border_variant: Some(rgba(0x032f3bff).into()),
+                        border: Some(rgba(0x2b4f58ff).into()),
+                        border_variant: Some(rgba(0x2b4f58ff).into()),
+                        border_focused: Some(rgba(0x1c3249ff).into()),
+                        border_selected: Some(rgba(0x1c3249ff).into()),
+                        border_transparent: Some(rgba(0x00000000).into()),
+                        border_disabled: Some(rgba(0x19424dff).into()),
                         elevated_surface_background: Some(rgba(0x04313cff).into()),
+                        surface_background: Some(rgba(0x04313cff).into()),
                         background: Some(rgba(0x083743ff).into()),
                         panel_background: Some(rgba(0x04313cff).into()),
-                        element_hover: Some(rgba(0x2b4f5880).into()),
-                        element_selected: Some(rgba(0x566d7480).into()),
+                        element_background: Some(rgba(0x04313cff).into()),
+                        element_hover: Some(rgba(0x063541ff).into()),
+                        element_active: Some(rgba(0x294e58ff).into()),
+                        element_selected: Some(rgba(0x294e58ff).into()),
+                        element_disabled: Some(rgba(0x04313cff).into()),
                         drop_target_background: Some(rgba(0x93a1a180).into()),
+                        ghost_element_background: Some(rgba(0x00000000).into()),
+                        ghost_element_hover: Some(rgba(0x063541ff).into()),
+                        ghost_element_active: Some(rgba(0x294e58ff).into()),
+                        ghost_element_selected: Some(rgba(0x294e58ff).into()),
+                        ghost_element_disabled: Some(rgba(0x04313cff).into()),
                         text: Some(rgba(0xfdf6e3ff).into()),
                         text_muted: Some(rgba(0x93a1a1ff).into()),
-                        text_placeholder: Some(rgba(0x5f757dff).into()),
-                        text_disabled: Some(rgba(0xfdf6e3ff).into()),
+                        text_placeholder: Some(rgba(0x6f8389ff).into()),
+                        text_disabled: Some(rgba(0x6f8389ff).into()),
                         text_accent: Some(rgba(0x288bd1ff).into()),
+                        icon: Some(rgba(0xfdf6e3ff).into()),
+                        icon_muted: Some(rgba(0x93a1a1ff).into()),
+                        icon_disabled: Some(rgba(0x6f8389ff).into()),
+                        icon_placeholder: Some(rgba(0x93a1a1ff).into()),
+                        icon_accent: Some(rgba(0x288bd1ff).into()),
                         status_bar_background: Some(rgba(0x083743ff).into()),
                         title_bar_background: Some(rgba(0x083743ff).into()),
                         toolbar_background: Some(rgba(0x002b36ff).into()),
                         tab_bar_background: Some(rgba(0x04313cff).into()),
                         tab_inactive_background: Some(rgba(0x04313cff).into()),
                         tab_active_background: Some(rgba(0x002b36ff).into()),
-                        scrollbar_thumb_background: Some(rgba(0xfdf6e34d).into()),
-                        scrollbar_thumb_hover_background: Some(rgba(0xfdf6e34d).into()),
-                        scrollbar_thumb_border: Some(rgba(0x032f3bff).into()),
+                        scrollbar_thumb_background: Some(rgba(0xfdf6e34c).into()),
+                        scrollbar_thumb_hover_background: Some(rgba(0x063541ff).into()),
+                        scrollbar_thumb_border: Some(rgba(0x063541ff).into()),
+                        scrollbar_track_background: Some(rgba(0x002b36ff).into()),
                         scrollbar_track_border: Some(rgba(0x032f3bff).into()),
                         editor_foreground: Some(rgba(0xfdf6e3ff).into()),
                         editor_background: Some(rgba(0x002b36ff).into()),
                         editor_gutter_background: Some(rgba(0x002b36ff).into()),
+                        editor_subheader_background: Some(rgba(0x04313cff).into()),
+                        editor_active_line_background: Some(rgba(0x04313cbf).into()),
+                        editor_highlighted_line_background: Some(rgba(0x04313cff).into()),
                         editor_line_number: Some(rgba(0xfdf6e359).into()),
                         editor_active_line_number: Some(rgba(0xfdf6e3ff).into()),
+                        editor_invisible: Some(rgba(0x93a1a1ff).into()),
                         editor_wrap_guide: Some(rgba(0xfdf6e30d).into()),
                         editor_active_wrap_guide: Some(rgba(0xfdf6e31a).into()),
+                        editor_document_highlight_read_background: Some(rgba(0x288bd11a).into()),
+                        editor_document_highlight_write_background: Some(rgba(0x6d828866).into()),
                         terminal_background: Some(rgba(0x002b36ff).into()),
                         terminal_ansi_bright_black: Some(rgba(0x5c7279ff).into()),
                         terminal_ansi_bright_red: Some(rgba(0x7d181cff).into()),
@@ -450,16 +536,52 @@ pub fn solarized() -> UserThemeFamily {
                         terminal_ansi_magenta: Some(rgba(0xd33782ff).into()),
                         terminal_ansi_cyan: Some(rgba(0x2ca198ff).into()),
                         terminal_ansi_white: Some(rgba(0xfdf6e3ff).into()),
+                        link_text_hover: Some(rgba(0x288bd1ff).into()),
                         ..Default::default()
                     },
                     status: StatusColorsRefinement {
+                        conflict: Some(rgba(0xb58903ff).into()),
+                        conflict_background: Some(rgba(0x2f1e0cff).into()),
+                        conflict_border: Some(rgba(0x473110ff).into()),
                         created: Some(rgba(0x859904ff).into()),
-                        deleted: Some(rgba(0xb52727ff).into()),
+                        created_background: Some(rgba(0x1f210cff).into()),
+                        created_border: Some(rgba(0x323610ff).into()),
+                        deleted: Some(rgba(0xdc3330ff).into()),
+                        deleted_background: Some(rgba(0x4a090fff).into()),
+                        deleted_border: Some(rgba(0x641116ff).into()),
                         error: Some(rgba(0xdc3330ff).into()),
+                        error_background: Some(rgba(0x4a090fff).into()),
+                        error_border: Some(rgba(0x641116ff).into()),
+                        hidden: Some(rgba(0x6f8389ff).into()),
+                        hidden_background: Some(rgba(0x083743ff).into()),
+                        hidden_border: Some(rgba(0x19424dff).into()),
                         hint: Some(rgba(0x4f8297ff).into()),
+                        hint_background: Some(rgba(0x141f2cff).into()),
+                        hint_border: Some(rgba(0x1c3249ff).into()),
+                        ignored: Some(rgba(0x93a1a1ff).into()),
+                        ignored_background: Some(rgba(0x083743ff).into()),
+                        ignored_border: Some(rgba(0x2b4f58ff).into()),
+                        info: Some(rgba(0x288bd1ff).into()),
+                        info_background: Some(rgba(0x141f2cff).into()),
+                        info_border: Some(rgba(0x1c3249ff).into()),
                         modified: Some(rgba(0xb58903ff).into()),
-                        success: Some(rgba(0xfdf6e3ff).into()),
+                        modified_background: Some(rgba(0x2f1e0cff).into()),
+                        modified_border: Some(rgba(0x473110ff).into()),
+                        predictive: Some(rgba(0x859904ff).into()),
+                        predictive_background: Some(rgba(0x1f210cff).into()),
+                        predictive_border: Some(rgba(0x323610ff).into()),
+                        renamed: Some(rgba(0x288bd1ff).into()),
+                        renamed_background: Some(rgba(0x141f2cff).into()),
+                        renamed_border: Some(rgba(0x1c3249ff).into()),
+                        success: Some(rgba(0x859904ff).into()),
+                        success_background: Some(rgba(0x1f210cff).into()),
+                        success_border: Some(rgba(0x323610ff).into()),
+                        unreachable: Some(rgba(0x93a1a1ff).into()),
+                        unreachable_background: Some(rgba(0x083743ff).into()),
+                        unreachable_border: Some(rgba(0x2b4f58ff).into()),
                         warning: Some(rgba(0xb58903ff).into()),
+                        warning_background: Some(rgba(0x2f1e0cff).into()),
+                        warning_border: Some(rgba(0x473110ff).into()),
                         ..Default::default()
                     },
                     player: Some(PlayerColors(vec![

crates/theme2/src/themes/summercamp.rs 🔗

@@ -19,36 +19,61 @@ pub fn summercamp() -> UserThemeFamily {
             appearance: Appearance::Dark,
             styles: UserThemeStylesRefinement {
                 colors: ThemeColorsRefinement {
-                    border: Some(rgba(0x29251bff).into()),
-                    border_variant: Some(rgba(0x221e15ff).into()),
+                    border: Some(rgba(0x312d21ff).into()),
+                    border_variant: Some(rgba(0x312d21ff).into()),
+                    border_focused: Some(rgba(0x193761ff).into()),
+                    border_selected: Some(rgba(0x193761ff).into()),
+                    border_transparent: Some(rgba(0x00000000).into()),
+                    border_disabled: Some(rgba(0x2e2a1fff).into()),
                     elevated_surface_background: Some(rgba(0x231f16ff).into()),
+                    surface_background: Some(rgba(0x231f16ff).into()),
                     background: Some(rgba(0x2a261cff).into()),
                     panel_background: Some(rgba(0x231f16ff).into()),
-                    element_hover: Some(rgba(0x312d2180).into()),
-                    element_selected: Some(rgba(0x39342780).into()),
+                    element_background: Some(rgba(0x231f16ff).into()),
+                    element_hover: Some(rgba(0x29251bff).into()),
+                    element_active: Some(rgba(0x302c20ff).into()),
+                    element_selected: Some(rgba(0x302c20ff).into()),
+                    element_disabled: Some(rgba(0x231f16ff).into()),
                     drop_target_background: Some(rgba(0x736e5580).into()),
+                    ghost_element_background: Some(rgba(0x00000000).into()),
+                    ghost_element_hover: Some(rgba(0x29251bff).into()),
+                    ghost_element_active: Some(rgba(0x302c20ff).into()),
+                    ghost_element_selected: Some(rgba(0x302c20ff).into()),
+                    ghost_element_disabled: Some(rgba(0x231f16ff).into()),
                     text: Some(rgba(0xf8f5deff).into()),
                     text_muted: Some(rgba(0x736e55ff).into()),
-                    text_placeholder: Some(rgba(0x3d382aff).into()),
-                    text_disabled: Some(rgba(0xf8f5deff).into()),
+                    text_placeholder: Some(rgba(0x4c4735ff).into()),
+                    text_disabled: Some(rgba(0x4c4735ff).into()),
                     text_accent: Some(rgba(0x499befff).into()),
+                    icon: Some(rgba(0xf8f5deff).into()),
+                    icon_muted: Some(rgba(0x736e55ff).into()),
+                    icon_disabled: Some(rgba(0x4c4735ff).into()),
+                    icon_placeholder: Some(rgba(0x736e55ff).into()),
+                    icon_accent: Some(rgba(0x499befff).into()),
                     status_bar_background: Some(rgba(0x2a261cff).into()),
                     title_bar_background: Some(rgba(0x2a261cff).into()),
                     toolbar_background: Some(rgba(0x1c1810ff).into()),
                     tab_bar_background: Some(rgba(0x231f16ff).into()),
                     tab_inactive_background: Some(rgba(0x231f16ff).into()),
                     tab_active_background: Some(rgba(0x1c1810ff).into()),
-                    scrollbar_thumb_background: Some(rgba(0xf8f5de4d).into()),
-                    scrollbar_thumb_hover_background: Some(rgba(0xf8f5de4d).into()),
-                    scrollbar_thumb_border: Some(rgba(0x221e15ff).into()),
+                    scrollbar_thumb_background: Some(rgba(0xf8f5de4c).into()),
+                    scrollbar_thumb_hover_background: Some(rgba(0x29251bff).into()),
+                    scrollbar_thumb_border: Some(rgba(0x29251bff).into()),
+                    scrollbar_track_background: Some(rgba(0x1c1810ff).into()),
                     scrollbar_track_border: Some(rgba(0x221e15ff).into()),
                     editor_foreground: Some(rgba(0xf8f5deff).into()),
                     editor_background: Some(rgba(0x1c1810ff).into()),
                     editor_gutter_background: Some(rgba(0x1c1810ff).into()),
+                    editor_subheader_background: Some(rgba(0x231f16ff).into()),
+                    editor_active_line_background: Some(rgba(0x231f16bf).into()),
+                    editor_highlighted_line_background: Some(rgba(0x231f16ff).into()),
                     editor_line_number: Some(rgba(0xf8f5de59).into()),
                     editor_active_line_number: Some(rgba(0xf8f5deff).into()),
+                    editor_invisible: Some(rgba(0x736e55ff).into()),
                     editor_wrap_guide: Some(rgba(0xf8f5de0d).into()),
                     editor_active_wrap_guide: Some(rgba(0xf8f5de1a).into()),
+                    editor_document_highlight_read_background: Some(rgba(0x499bef1a).into()),
+                    editor_document_highlight_write_background: Some(rgba(0x49443366).into()),
                     terminal_background: Some(rgba(0x1c1810ff).into()),
                     terminal_ansi_bright_black: Some(rgba(0x3b3627ff).into()),
                     terminal_ansi_bright_red: Some(rgba(0x7f2724ff).into()),
@@ -66,16 +91,52 @@ pub fn summercamp() -> UserThemeFamily {
                     terminal_ansi_magenta: Some(rgba(0xf59be6ff).into()),
                     terminal_ansi_cyan: Some(rgba(0x5beabcff).into()),
                     terminal_ansi_white: Some(rgba(0xf8f5deff).into()),
+                    link_text_hover: Some(rgba(0x499befff).into()),
                     ..Default::default()
                 },
                 status: StatusColorsRefinement {
+                    conflict: Some(rgba(0xf1fe29ff).into()),
+                    conflict_background: Some(rgba(0x556305ff).into()),
+                    conflict_border: Some(rgba(0x727f0aff).into()),
                     created: Some(rgba(0x5dea5aff).into()),
-                    deleted: Some(rgba(0xb93f36ff).into()),
+                    created_background: Some(rgba(0x0a4d13ff).into()),
+                    created_border: Some(rgba(0x1a6a20ff).into()),
+                    deleted: Some(rgba(0xe35142ff).into()),
+                    deleted_background: Some(rgba(0x491013ff).into()),
+                    deleted_border: Some(rgba(0x651c1cff).into()),
                     error: Some(rgba(0xe35142ff).into()),
+                    error_background: Some(rgba(0x491013ff).into()),
+                    error_border: Some(rgba(0x651c1cff).into()),
+                    hidden: Some(rgba(0x4c4735ff).into()),
+                    hidden_background: Some(rgba(0x2a261cff).into()),
+                    hidden_border: Some(rgba(0x2e2a1fff).into()),
                     hint: Some(rgba(0x246e61ff).into()),
+                    hint_background: Some(rgba(0x0e2242ff).into()),
+                    hint_border: Some(rgba(0x193761ff).into()),
+                    ignored: Some(rgba(0x736e55ff).into()),
+                    ignored_background: Some(rgba(0x2a261cff).into()),
+                    ignored_border: Some(rgba(0x312d21ff).into()),
+                    info: Some(rgba(0x499befff).into()),
+                    info_background: Some(rgba(0x0e2242ff).into()),
+                    info_border: Some(rgba(0x193761ff).into()),
                     modified: Some(rgba(0xf1fe29ff).into()),
-                    success: Some(rgba(0xf8f5deff).into()),
+                    modified_background: Some(rgba(0x556305ff).into()),
+                    modified_border: Some(rgba(0x727f0aff).into()),
+                    predictive: Some(rgba(0x5dea5aff).into()),
+                    predictive_background: Some(rgba(0x0a4d13ff).into()),
+                    predictive_border: Some(rgba(0x1a6a20ff).into()),
+                    renamed: Some(rgba(0x499befff).into()),
+                    renamed_background: Some(rgba(0x0e2242ff).into()),
+                    renamed_border: Some(rgba(0x193761ff).into()),
+                    success: Some(rgba(0x5dea5aff).into()),
+                    success_background: Some(rgba(0x0a4d13ff).into()),
+                    success_border: Some(rgba(0x1a6a20ff).into()),
+                    unreachable: Some(rgba(0x736e55ff).into()),
+                    unreachable_background: Some(rgba(0x2a261cff).into()),
+                    unreachable_border: Some(rgba(0x312d21ff).into()),
                     warning: Some(rgba(0xf1fe29ff).into()),
+                    warning_background: Some(rgba(0x556305ff).into()),
+                    warning_border: Some(rgba(0x727f0aff).into()),
                     ..Default::default()
                 },
                 player: Some(PlayerColors(vec![

crates/theme_importer/src/theme_printer.rs 🔗

@@ -281,16 +281,7 @@ impl<'a> Debug for ThemeColorsRefinementPrinter<'a> {
             ("terminal_ansi_magenta", self.0.terminal_ansi_magenta),
             ("terminal_ansi_cyan", self.0.terminal_ansi_cyan),
             ("terminal_ansi_white", self.0.terminal_ansi_white),
-            ("headline", self.0.headline),
-            ("paragraph", self.0.paragraph),
-            ("link_text", self.0.link_text),
             ("link_text_hover", self.0.link_text_hover),
-            ("link_uri", self.0.link_uri),
-            ("inline_code_background", self.0.inline_code_background),
-            ("inline_code_border", self.0.inline_code_border),
-            ("code_block_background", self.0.code_block_background),
-            ("code_block_border", self.0.code_block_border),
-            ("emphasis", self.0.emphasis),
         ];
 
         f.write_str("ThemeColorsRefinement {")?;
@@ -319,19 +310,47 @@ impl<'a> Debug for StatusColorsRefinementPrinter<'a> {
     fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
         let status_colors = vec![
             ("conflict", self.0.conflict),
+            ("conflict_background", self.0.conflict_background),
+            ("conflict_border", self.0.conflict_border),
             ("created", self.0.created),
+            ("created_background", self.0.created_background),
+            ("created_border", self.0.created_border),
             ("deleted", self.0.deleted),
+            ("deleted_background", self.0.deleted_background),
+            ("deleted_border", self.0.deleted_border),
             ("error", self.0.error),
+            ("error_background", self.0.error_background),
+            ("error_border", self.0.error_border),
             ("hidden", self.0.hidden),
+            ("hidden_background", self.0.hidden_background),
+            ("hidden_border", self.0.hidden_border),
             ("hint", self.0.hint),
+            ("hint_background", self.0.hint_background),
+            ("hint_border", self.0.hint_border),
             ("ignored", self.0.ignored),
+            ("ignored_background", self.0.ignored_background),
+            ("ignored_border", self.0.ignored_border),
             ("info", self.0.info),
+            ("info_background", self.0.info_background),
+            ("info_border", self.0.info_border),
             ("modified", self.0.modified),
+            ("modified_background", self.0.modified_background),
+            ("modified_border", self.0.modified_border),
             ("predictive", self.0.predictive),
+            ("predictive_background", self.0.predictive_background),
+            ("predictive_border", self.0.predictive_border),
             ("renamed", self.0.renamed),
+            ("renamed_background", self.0.renamed_background),
+            ("renamed_border", self.0.renamed_border),
             ("success", self.0.success),
+            ("success_background", self.0.success_background),
+            ("success_border", self.0.success_border),
             ("unreachable", self.0.unreachable),
+            ("unreachable_background", self.0.unreachable_background),
+            ("unreachable_border", self.0.unreachable_border),
             ("warning", self.0.warning),
+            ("warning_background", self.0.warning_background),
+            ("warning_border", self.0.warning_border),
         ];
 
         f.write_str("StatusColorsRefinement {")?;

crates/theme_importer/src/zed1/converter.rs 🔗

@@ -1,13 +1,13 @@
-use anyhow::Result;
-use gpui::{Hsla, Rgba};
+use anyhow::{Context, Result};
+use gpui::{serde_json, Hsla, Rgba};
 use gpui1::color::Color as Zed1Color;
 use gpui1::fonts::HighlightStyle as Zed1HighlightStyle;
 use theme::{
-    Appearance, PlayerColor, PlayerColors, StatusColorsRefinement, ThemeColorsRefinement,
-    UserFontStyle, UserFontWeight, UserHighlightStyle, UserSyntaxTheme, UserTheme,
-    UserThemeStylesRefinement,
+    color_alpha, Appearance, PlayerColor, PlayerColors, StatusColorsRefinement,
+    ThemeColorsRefinement, UserFontStyle, UserFontWeight, UserHighlightStyle, UserSyntaxTheme,
+    UserTheme, UserThemeStylesRefinement,
 };
-use theme1::Theme as Zed1Theme;
+use theme1::{ColorScheme, Theme as Zed1Theme};
 
 fn zed1_color_to_hsla(color: Zed1Color) -> Hsla {
     let r = color.r as f32 / 255.;
@@ -71,19 +71,61 @@ impl Zed1ThemeConverter {
             Some(zed1_color_to_hsla(color))
         }
 
+        let base_theme: ColorScheme = serde_json::from_value(self.theme.base_theme.clone())
+            .with_context(|| "failed to parse `theme.base_theme`")?;
+
+        let lowest = &base_theme.lowest;
+
         let editor = &self.theme.editor;
-        let diff_style = &self.theme.editor.diff;
-        let diagnostic_summary = &self.theme.workspace.status_bar.diagnostic_summary;
 
         Ok(StatusColorsRefinement {
-            created: convert(diff_style.inserted),
-            modified: convert(diff_style.modified),
-            deleted: convert(diff_style.deleted),
-            success: convert(diagnostic_summary.icon_color_ok),
-            warning: convert(diagnostic_summary.icon_color_warning),
-            error: convert(diagnostic_summary.icon_color_error),
-            hint: editor.hint.color.map(zed1_color_to_hsla),
-            ..Default::default()
+            created: convert(lowest.positive.default.foreground),
+            created_background: convert(lowest.positive.default.background),
+            created_border: convert(lowest.positive.default.border),
+            modified: convert(lowest.warning.default.foreground),
+            modified_background: convert(lowest.warning.default.background),
+            modified_border: convert(lowest.warning.default.border),
+            deleted: convert(lowest.negative.default.foreground),
+            deleted_background: convert(lowest.negative.default.background),
+            deleted_border: convert(lowest.negative.default.border),
+            success: convert(lowest.positive.default.foreground),
+            success_background: convert(lowest.positive.default.background),
+            success_border: convert(lowest.positive.default.border),
+            warning: convert(lowest.warning.default.foreground),
+            warning_background: convert(lowest.warning.default.background),
+            warning_border: convert(lowest.warning.default.border),
+            error: convert(lowest.negative.default.foreground),
+            error_background: convert(lowest.negative.default.background),
+            error_border: convert(lowest.negative.default.border),
+            // The `hint` color used in Zed1 is inlined from the syntax colors.
+            hint: editor
+                .hint
+                .color
+                .map(zed1_color_to_hsla)
+                .or(convert(lowest.accent.default.foreground)),
+            hint_background: convert(lowest.accent.default.background),
+            hint_border: convert(lowest.accent.default.border),
+            predictive: convert(lowest.positive.default.foreground),
+            predictive_background: convert(lowest.positive.default.background),
+            predictive_border: convert(lowest.positive.default.border),
+            conflict: convert(lowest.warning.default.foreground),
+            conflict_background: convert(lowest.warning.default.background),
+            conflict_border: convert(lowest.warning.default.border),
+            hidden: convert(lowest.base.disabled.foreground),
+            hidden_background: convert(lowest.base.disabled.background),
+            hidden_border: convert(lowest.base.disabled.border),
+            ignored: convert(lowest.variant.default.foreground),
+            ignored_background: convert(lowest.variant.default.background),
+            ignored_border: convert(lowest.variant.default.border),
+            info: convert(lowest.accent.default.foreground),
+            info_background: convert(lowest.accent.default.background),
+            info_border: convert(lowest.accent.default.border),
+            renamed: convert(lowest.accent.default.foreground),
+            renamed_background: convert(lowest.accent.default.background),
+            renamed_border: convert(lowest.accent.default.border),
+            unreachable: convert(lowest.variant.default.foreground), // TODO: Should this be transparent?
+            unreachable_background: convert(lowest.variant.default.background),
+            unreachable_border: convert(lowest.variant.default.border),
         })
     }
 
@@ -117,85 +159,80 @@ impl Zed1ThemeConverter {
             Some(zed1_color_to_hsla(color))
         }
 
-        let picker = &self.theme.picker;
-        let title_bar = &self.theme.titlebar;
-        let status_bar = &self.theme.workspace.status_bar;
-        let project_panel = &self.theme.project_panel;
-        let tab_bar = &self.theme.workspace.tab_bar;
-        let active_tab = &self.theme.workspace.tab_bar.tab_style(true, true);
-        let inactive_tab = &self.theme.workspace.tab_bar.tab_style(true, false);
-        let toolbar = &self.theme.workspace.toolbar;
+        let base_theme: ColorScheme = serde_json::from_value(self.theme.base_theme.clone())
+            .with_context(|| "failed to parse `theme.base_theme`")?;
+
+        let lowest = &base_theme.lowest;
+        let middle = &base_theme.middle;
+        let highest = &base_theme.highest;
+
         let editor = &self.theme.editor;
-        let scrollbar = &self.theme.editor.scrollbar;
         let terminal = &self.theme.terminal;
 
         Ok(ThemeColorsRefinement {
-            border: convert(active_tab.container.border.color),
-            border_variant: convert(toolbar.container.border.color),
-            background: convert(self.theme.workspace.background),
-            elevated_surface_background: editor
-                .hover_popover
-                .container
-                .background_color
-                .map(zed1_color_to_hsla),
-            title_bar_background: title_bar.container.background_color.map(zed1_color_to_hsla),
-            status_bar_background: status_bar
-                .container
-                .background_color
-                .map(zed1_color_to_hsla)
-                .or_else(|| title_bar.container.background_color.map(zed1_color_to_hsla)),
-            panel_background: project_panel
-                .container
-                .background_color
-                .map(zed1_color_to_hsla),
-            text: convert(self.theme.collab_panel.channel_name.text.color),
-            text_muted: convert(tab_bar.pane_button.default_style().color),
-            text_accent: convert(status_bar.panel_buttons.button.active_state().icon_color),
-            text_disabled: convert(status_bar.panel_buttons.button.disabled_style().icon_color),
-            text_placeholder: picker
-                .empty_input_editor
-                .placeholder_text
-                .as_ref()
-                .map(|placeholder_text| placeholder_text.color)
-                .map(zed1_color_to_hsla),
-            element_hover: picker
-                .item
-                .hovered
-                .as_ref()
-                .and_then(|hovered| hovered.container.background_color)
-                .map(zed1_color_to_hsla),
-            element_selected: picker
-                .item
-                .active_state()
-                .container
-                .background_color
-                .map(zed1_color_to_hsla),
-            tab_bar_background: tab_bar.container.background_color.map(zed1_color_to_hsla),
-            tab_active_background: active_tab
-                .container
-                .background_color
-                .map(zed1_color_to_hsla),
-            tab_inactive_background: inactive_tab
-                .container
-                .background_color
-                .map(zed1_color_to_hsla),
+            border: convert(lowest.base.default.border),
+            border_variant: convert(lowest.variant.default.border),
+            border_focused: convert(lowest.accent.hovered.border),
+            border_selected: convert(lowest.accent.default.border),
+            border_transparent: Some(gpui::transparent_black()),
+            border_disabled: convert(lowest.base.disabled.border),
+            elevated_surface_background: convert(middle.base.default.background),
+            surface_background: convert(middle.base.default.background),
+            background: convert(lowest.base.default.background),
+            element_background: convert(lowest.on.default.background),
+            element_hover: convert(lowest.on.hovered.background),
+            element_active: convert(lowest.on.active.background),
+            element_selected: convert(lowest.on.active.background), // TODO: Check what this should be
+            element_disabled: convert(lowest.on.disabled.background),
             drop_target_background: convert(self.theme.workspace.drop_target_overlay_color),
-            toolbar_background: toolbar.container.background_color.map(zed1_color_to_hsla),
+            ghost_element_background: Some(gpui::transparent_black()),
+            ghost_element_hover: convert(lowest.on.hovered.background),
+            ghost_element_active: convert(lowest.on.active.background),
+            ghost_element_selected: convert(lowest.on.active.background), // TODO: Check what this should be
+            ghost_element_disabled: convert(lowest.on.disabled.background),
+            text: convert(lowest.base.default.foreground),
+            text_muted: convert(lowest.variant.default.foreground),
+            text_placeholder: convert(lowest.base.disabled.foreground), // TODO: What should placeholder be?
+            text_disabled: convert(lowest.base.disabled.foreground),
+            text_accent: convert(lowest.accent.default.foreground),
+            icon: convert(lowest.base.default.foreground),
+            icon_muted: convert(lowest.variant.default.foreground),
+            icon_disabled: convert(lowest.base.disabled.foreground),
+            icon_placeholder: convert(lowest.variant.default.foreground),
+            icon_accent: convert(lowest.accent.default.foreground),
+            status_bar_background: convert(lowest.base.default.background),
+            title_bar_background: convert(lowest.base.default.background),
+            toolbar_background: convert(highest.base.default.background),
+            tab_bar_background: convert(middle.base.default.background),
+            tab_inactive_background: convert(middle.base.default.background),
+            tab_active_background: convert(highest.base.default.background),
+            search_match_background: convert(highest.accent.default.background),
+            panel_background: convert(middle.base.default.background),
+            panel_focused_border: convert(lowest.accent.hovered.border),
+            pane_focused_border: convert(lowest.accent.hovered.border),
+            scrollbar_thumb_background: convert(middle.base.inverted.background)
+                .map(|color| color_alpha(color, 0.3)),
+            scrollbar_thumb_hover_background: convert(middle.base.hovered.background),
+            scrollbar_thumb_border: convert(middle.base.default.border),
+            scrollbar_track_background: convert(highest.base.default.background),
+            scrollbar_track_border: convert(highest.variant.default.border),
             editor_foreground: convert(editor.text_color),
             editor_background: convert(editor.background),
             editor_gutter_background: convert(editor.gutter_background),
+            editor_subheader_background: convert(middle.base.default.background),
+            editor_active_line_background: convert(editor.active_line_background),
+            editor_highlighted_line_background: convert(editor.highlighted_line_background),
             editor_line_number: convert(editor.line_number),
             editor_active_line_number: convert(editor.line_number_active),
+            editor_invisible: convert(highest.variant.default.foreground), // TODO: Is this light enough?
             editor_wrap_guide: convert(editor.wrap_guide),
             editor_active_wrap_guide: convert(editor.active_wrap_guide),
-            scrollbar_track_background: scrollbar.track.background_color.map(zed1_color_to_hsla),
-            scrollbar_track_border: convert(scrollbar.track.border.color),
-            scrollbar_thumb_background: scrollbar.thumb.background_color.map(zed1_color_to_hsla),
-            scrollbar_thumb_border: convert(scrollbar.thumb.border.color),
-            scrollbar_thumb_hover_background: scrollbar
-                .thumb
-                .background_color
-                .map(zed1_color_to_hsla),
+            editor_document_highlight_read_background: convert(
+                editor.document_highlight_read_background,
+            ),
+            editor_document_highlight_write_background: convert(
+                editor.document_highlight_write_background,
+            ),
             terminal_background: convert(terminal.background),
             terminal_ansi_bright_black: convert(terminal.bright_black),
             terminal_ansi_bright_red: convert(terminal.bright_red),
@@ -213,7 +250,7 @@ impl Zed1ThemeConverter {
             terminal_ansi_magenta: convert(terminal.magenta),
             terminal_ansi_cyan: convert(terminal.cyan),
             terminal_ansi_white: convert(terminal.white),
-            ..Default::default()
+            link_text_hover: convert(highest.accent.default.foreground),
         })
     }
 

crates/theme_selector/Cargo.toml 🔗

@@ -9,6 +9,7 @@ path = "src/theme_selector.rs"
 doctest = false
 
 [dependencies]
+client = { path = "../client" }
 editor = { path = "../editor" }
 fuzzy = { path = "../fuzzy" }
 fs = { path = "../fs" }

crates/theme_selector/src/theme_selector.rs 🔗

@@ -1,3 +1,4 @@
+use client::{telemetry::Telemetry, TelemetrySettings};
 use feature_flags::FeatureFlagAppExt;
 use fs::Fs;
 use fuzzy::{match_strings, StringMatch, StringMatchCandidate};
@@ -19,7 +20,8 @@ pub fn init(cx: &mut AppContext) {
 pub fn toggle(workspace: &mut Workspace, _: &Toggle, cx: &mut ViewContext<Workspace>) {
     workspace.toggle_modal(cx, |workspace, cx| {
         let fs = workspace.app_state().fs.clone();
-        cx.add_view(|cx| ThemeSelector::new(ThemeSelectorDelegate::new(fs, cx), cx))
+        let telemetry = workspace.client().telemetry().clone();
+        cx.add_view(|cx| ThemeSelector::new(ThemeSelectorDelegate::new(fs, telemetry, cx), cx))
     });
 }
 
@@ -48,10 +50,15 @@ pub struct ThemeSelectorDelegate {
     original_theme: Arc<Theme>,
     selection_completed: bool,
     selected_index: usize,
+    telemetry: Arc<Telemetry>,
 }
 
 impl ThemeSelectorDelegate {
-    fn new(fs: Arc<dyn Fs>, cx: &mut ViewContext<ThemeSelector>) -> Self {
+    fn new(
+        fs: Arc<dyn Fs>,
+        telemetry: Arc<Telemetry>,
+        cx: &mut ViewContext<ThemeSelector>,
+    ) -> Self {
         let original_theme = theme::current(cx).clone();
 
         let staff_mode = cx.is_staff();
@@ -74,6 +81,7 @@ impl ThemeSelectorDelegate {
             original_theme: original_theme.clone(),
             selected_index: 0,
             selection_completed: false,
+            telemetry,
         };
         this.select_if_matching(&original_theme.meta.name);
         this
@@ -124,6 +132,11 @@ impl PickerDelegate for ThemeSelectorDelegate {
         self.selection_completed = true;
 
         let theme_name = theme::current(cx).meta.name.clone();
+
+        let telemetry_settings = *settings::get::<TelemetrySettings>(cx);
+        self.telemetry
+            .report_setting_event(telemetry_settings, "theme", theme_name.to_string());
+
         update_settings_file::<ThemeSettings>(self.fs.clone(), cx, |settings| {
             settings.theme = Some(theme_name);
         });

crates/theme_selector2/Cargo.toml 🔗

@@ -9,17 +9,18 @@ path = "src/theme_selector.rs"
 doctest = false
 
 [dependencies]
+client = { package = "client2", path = "../client2" }
 editor = { package = "editor2", path = "../editor2" }
-fuzzy = { package = "fuzzy2", path = "../fuzzy2" }
+feature_flags = { package = "feature_flags2", path = "../feature_flags2" }
 fs = { package = "fs2", path = "../fs2" }
+fuzzy = { package = "fuzzy2", path = "../fuzzy2" }
 gpui = { package = "gpui2", path = "../gpui2" }
-ui = { package = "ui2", path = "../ui2" }
 picker = { package = "picker2", path = "../picker2" }
-theme = { package = "theme2", path = "../theme2" }
 settings = { package = "settings2", path = "../settings2" }
-feature_flags = { package = "feature_flags2", path = "../feature_flags2" }
-workspace = { package = "workspace2", path = "../workspace2" }
+theme = { package = "theme2", path = "../theme2" }
+ui = { package = "ui2", path = "../ui2" }
 util = { path = "../util" }
+workspace = { package = "workspace2", path = "../workspace2" }
 log.workspace = true
 parking_lot.workspace = true
 postage.workspace = true

crates/theme_selector2/src/theme_selector.rs 🔗

@@ -1,3 +1,4 @@
+use client::{telemetry::Telemetry, TelemetrySettings};
 use feature_flags::FeatureFlagAppExt;
 use fs::Fs;
 use fuzzy::{match_strings, StringMatch, StringMatchCandidate};
@@ -6,7 +7,7 @@ use gpui::{
     VisualContext, WeakView,
 };
 use picker::{Picker, PickerDelegate};
-use settings::{update_settings_file, SettingsStore};
+use settings::{update_settings_file, Settings, SettingsStore};
 use std::sync::Arc;
 use theme::{Theme, ThemeMeta, ThemeRegistry, ThemeSettings};
 use ui::{prelude::*, v_stack, ListItem, ListItemSpacing};
@@ -26,9 +27,10 @@ pub fn init(cx: &mut AppContext) {
 
 pub fn toggle(workspace: &mut Workspace, _: &Toggle, cx: &mut ViewContext<Workspace>) {
     let fs = workspace.app_state().fs.clone();
+    let telemetry = workspace.client().telemetry().clone();
     workspace.toggle_modal(cx, |cx| {
         ThemeSelector::new(
-            ThemeSelectorDelegate::new(cx.view().downgrade(), fs, cx),
+            ThemeSelectorDelegate::new(cx.view().downgrade(), fs, telemetry, cx),
             cx,
         )
     });
@@ -86,6 +88,7 @@ pub struct ThemeSelectorDelegate {
     original_theme: Arc<Theme>,
     selection_completed: bool,
     selected_index: usize,
+    telemetry: Arc<Telemetry>,
     view: WeakView<ThemeSelector>,
 }
 
@@ -93,6 +96,7 @@ impl ThemeSelectorDelegate {
     fn new(
         weak_view: WeakView<ThemeSelector>,
         fs: Arc<dyn Fs>,
+        telemetry: Arc<Telemetry>,
         cx: &mut ViewContext<ThemeSelector>,
     ) -> Self {
         let original_theme = cx.theme().clone();
@@ -122,6 +126,7 @@ impl ThemeSelectorDelegate {
             original_theme: original_theme.clone(),
             selected_index: 0,
             selection_completed: false,
+            telemetry,
             view: weak_view,
         };
         this.select_if_matching(&original_theme.name);
@@ -175,6 +180,11 @@ impl PickerDelegate for ThemeSelectorDelegate {
         self.selection_completed = true;
 
         let theme_name = cx.theme().name.clone();
+
+        let telemetry_settings = TelemetrySettings::get_global(cx).clone();
+        self.telemetry
+            .report_setting_event(telemetry_settings, "theme", theme_name.to_string());
+
         update_settings_file::<ThemeSettings>(self.fs.clone(), cx, move |settings| {
             settings.theme = Some(theme_name.to_string());
         });

crates/util/src/paths.rs 🔗

@@ -67,8 +67,8 @@ impl<T: AsRef<Path>> PathExt for T {
     fn icon_suffix(&self) -> Option<&str> {
         let file_name = self.as_ref().file_name()?.to_str()?;
 
-        if file_name.starts_with(".") {
-            return file_name.strip_prefix(".");
+        if file_name.starts_with('.') {
+            return file_name.strip_prefix('.');
         }
 
         self.as_ref()
@@ -213,7 +213,7 @@ impl Eq for PathMatcher {}
 impl PathMatcher {
     pub fn new(maybe_glob: &str) -> Result<Self, globset::Error> {
         Ok(PathMatcher {
-            glob: Glob::new(&maybe_glob)?.compile_matcher(),
+            glob: Glob::new(maybe_glob)?.compile_matcher(),
             maybe_path: PathBuf::from(maybe_glob),
         })
     }

crates/workspace2/src/dock.rs 🔗

@@ -29,8 +29,8 @@ pub trait Panel: FocusableView + EventEmitter<PanelEvent> {
     fn set_position(&mut self, position: DockPosition, cx: &mut ViewContext<Self>);
     fn size(&self, cx: &WindowContext) -> Pixels;
     fn set_size(&mut self, size: Option<Pixels>, cx: &mut ViewContext<Self>);
-    // todo!("We should have a icon tooltip method, rather than using persistant_name")
     fn icon(&self, cx: &WindowContext) -> Option<ui::Icon>;
+    fn icon_tooltip(&self, cx: &WindowContext) -> Option<&'static str>;
     fn toggle_action(&self) -> Box<dyn Action>;
     fn icon_label(&self, _: &WindowContext) -> Option<String> {
         None
@@ -54,6 +54,7 @@ pub trait PanelHandle: Send + Sync {
     fn size(&self, cx: &WindowContext) -> Pixels;
     fn set_size(&self, size: Option<Pixels>, cx: &mut WindowContext);
     fn icon(&self, cx: &WindowContext) -> Option<ui::Icon>;
+    fn icon_tooltip(&self, cx: &WindowContext) -> Option<&'static str>;
     fn toggle_action(&self, cx: &WindowContext) -> Box<dyn Action>;
     fn icon_label(&self, cx: &WindowContext) -> Option<String>;
     fn focus_handle(&self, cx: &AppContext) -> FocusHandle;
@@ -108,6 +109,10 @@ where
         self.read(cx).icon(cx)
     }
 
+    fn icon_tooltip(&self, cx: &WindowContext) -> Option<&'static str> {
+        self.read(cx).icon_tooltip(cx)
+    }
+
     fn toggle_action(&self, cx: &WindowContext) -> Box<dyn Action> {
         self.read(cx).toggle_action()
     }
@@ -612,6 +617,7 @@ impl Render for PanelButtons {
             .enumerate()
             .filter_map(|(i, entry)| {
                 let icon = entry.panel.icon(cx)?;
+                let icon_tooltip = entry.panel.icon_tooltip(cx)?;
                 let name = entry.panel.persistent_name();
                 let panel = entry.panel.clone();
 
@@ -627,7 +633,7 @@ impl Render for PanelButtons {
                 } else {
                     let action = entry.panel.toggle_action(cx);
 
-                    (action, name.into())
+                    (action, icon_tooltip.into())
                 };
 
                 Some(
@@ -748,6 +754,10 @@ pub mod test {
             None
         }
 
+        fn icon_tooltip(&self, _cx: &WindowContext) -> Option<&'static str> {
+            None
+        }
+
         fn toggle_action(&self) -> Box<dyn Action> {
             ToggleTestPanel.boxed_clone()
         }

crates/zed/src/main.rs 🔗

@@ -168,6 +168,11 @@ fn main() {
 
         client.telemetry().start(installation_id, session_id, cx);
         let telemetry_settings = *settings::get::<TelemetrySettings>(cx);
+        client.telemetry().report_setting_event(
+            telemetry_settings,
+            "theme",
+            theme::current(cx).meta.name.to_string(),
+        );
         let event_operation = match existing_installation_id_found {
             Some(false) => "first open",
             _ => "open",

crates/zed2/src/main.rs 🔗

@@ -173,6 +173,11 @@ fn main() {
 
         client.telemetry().start(installation_id, session_id, cx);
         let telemetry_settings = *client::TelemetrySettings::get_global(cx);
+        client.telemetry().report_setting_event(
+            telemetry_settings,
+            "theme",
+            cx.theme().name.to_string(),
+        );
         let event_operation = match existing_installation_id_found {
             Some(false) => "first open",
             _ => "open",

script/deploy → script/deploy-collab 🔗

@@ -10,11 +10,6 @@ fi
 environment=$1
 version=$2
 
-if [[ ${environment} == "nightly" ]]; then
-  echo "nightly is not yet supported"
-  exit 1
-fi
-
 export_vars_for_environment ${environment}
 image_id=$(image_id_for_version ${version})
 
@@ -23,6 +18,6 @@ export ZED_KUBE_NAMESPACE=${environment}
 export ZED_IMAGE_ID=${image_id}
 
 target_zed_kube_cluster
-envsubst < crates/collab/k8s/manifest.template.yml | kubectl apply -f -
+envsubst < crates/collab/k8s/collab.template.yml | kubectl apply -f -
 
 echo "deployed collab v${version} to ${environment}"

script/deploy-postgrest 🔗

@@ -0,0 +1,25 @@
+#!/bin/bash
+
+set -eu
+source script/lib/deploy-helpers.sh
+
+if [[ $# < 1 ]]; then
+  echo "Usage: $0 <production|staging> (postgrest not needed on preview or nightly)"
+  exit 1
+fi
+environment=$1
+
+if [[ ${environment} == "preview" || ${environment} == "nightly" ]]; then
+  echo "website does not exist in preview or nightly"
+  exit 1
+fi
+
+export_vars_for_environment ${environment}
+
+export ZED_DO_CERTIFICATE_ID=$(doctl compute certificate list --format ID --no-header)
+export ZED_KUBE_NAMESPACE=${environment}
+
+target_zed_kube_cluster
+envsubst < crates/collab/k8s/postgrest.template.yml | kubectl apply -f -
+
+echo "deployed postgrest"

styles/src/style_tree/app.ts 🔗

@@ -60,5 +60,6 @@ export default function app(): any {
         chat_panel: chat_panel(),
         notification_panel: notification_panel(),
         component_test: component_test(),
+        base_theme: theme,
     }
 }