@@ -24,18 +24,6 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
                     metadata: None,
                     files: USER,
                 }),
-                SettingsPageItem::SettingItem(SettingItem {
-                    title: "Restore On Startup",
-                    description: "Restore previous session when opening Zed",
-                    field: Box::new(SettingField {
-                        pick: |settings_content| &settings_content.workspace.restore_on_startup,
-                        pick_mut: |settings_content| {
-                            &mut settings_content.workspace.restore_on_startup
-                        },
-                    }),
-                    metadata: None,
-                    files: USER,
-                }),
                 SettingsPageItem::SettingItem(SettingItem {
                     title: "When Closing With No Tabs",
                     description: "What to do when using the 'close active item' action with no tabs",
@@ -100,6 +88,54 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
                     metadata: None,
                     files: USER,
                 }),
+                SettingsPageItem::SettingItem(SettingItem {
+                    title: "Private Files",
+                    description: "Globs to match against file paths to determine if a file is private",
+                    field: Box::new(
+                        SettingField {
+                            pick: |settings_content| {
+                                &settings_content.project.worktree.private_files
+                            },
+                            pick_mut: |settings_content| {
+                                &mut settings_content.project.worktree.private_files
+                            },
+                        }
+                        .unimplemented(),
+                    ),
+                    metadata: None,
+                    files: USER,
+                }),
+                SettingsPageItem::SectionHeader("Workspace Restoration"),
+                SettingsPageItem::SettingItem(SettingItem {
+                    title: "Restore Unsaved Buffers",
+                    description: "Whether or not to restore unsaved buffers on restart",
+                    field: Box::new(SettingField {
+                        pick: |settings_content| match settings_content.session.as_ref() {
+                            Some(session) => &session.restore_unsaved_buffers,
+                            None => &None,
+                        },
+                        pick_mut: |settings_content| {
+                            &mut settings_content
+                                .session
+                                .get_or_insert_default()
+                                .restore_unsaved_buffers
+                        },
+                    }),
+                    metadata: None,
+                    files: USER,
+                }),
+                SettingsPageItem::SettingItem(SettingItem {
+                    title: "Restore On Startup",
+                    description: "What to restore from the previous session when opening Zed",
+                    field: Box::new(SettingField {
+                        pick: |settings_content| &settings_content.workspace.restore_on_startup,
+                        pick_mut: |settings_content| {
+                            &mut settings_content.workspace.restore_on_startup
+                        },
+                    }),
+                    metadata: None,
+                    files: USER,
+                }),
                 SettingsPageItem::SectionHeader("Scoped Settings"),
                 SettingsPageItem::SettingItem(SettingItem {
                     // todo(settings_ui): Implement another setting item type that just shows an edit in settings.json
@@ -172,10 +208,21 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
                     metadata: None,
                     files: USER,
                 }),
+                SettingsPageItem::SectionHeader("Auto Update"),
+                SettingsPageItem::SettingItem(SettingItem {
+                    title: "Auto Update",
+                    description: "Whether or not to automatically check for updates",
+                    field: Box::new(SettingField {
+                        pick: |settings_content| &settings_content.auto_update,
+                        pick_mut: |settings_content| &mut settings_content.auto_update,
+                    }),
+                    metadata: None,
+                    files: USER,
+                }),
             ],
         },
         SettingsPage {
-            title: "Appearance & Behavior",
+            title: "Appearance",
             items: vec![
                 SettingsPageItem::SectionHeader("Theme"),
                 // todo(settings_ui): Figure out how we want to add these
@@ -254,6 +301,36 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
                     ),
                     metadata: None,
                 }),
+                SettingsPageItem::SettingItem(SettingItem {
+                    files: USER,
+                    title: "Buffer Font Features",
+                    description: "The OpenType features to enable for rendering in text buffers.",
+                    field: Box::new(
+                        SettingField {
+                            pick: |settings_content| &settings_content.theme.buffer_font_features,
+                            pick_mut: |settings_content| {
+                                &mut settings_content.theme.buffer_font_features
+                            },
+                        }
+                        .unimplemented(),
+                    ),
+                    metadata: None,
+                }),
+                SettingsPageItem::SettingItem(SettingItem {
+                    files: USER,
+                    title: "Buffer Font Fallbacks",
+                    description: "The font fallbacks to use for rendering in text buffers.",
+                    field: Box::new(
+                        SettingField {
+                            pick: |settings_content| &settings_content.theme.buffer_font_fallbacks,
+                            pick_mut: |settings_content| {
+                                &mut settings_content.theme.buffer_font_fallbacks
+                            },
+                        }
+                        .unimplemented(),
+                    ),
+                    metadata: None,
+                }),
                 SettingsPageItem::SettingItem(SettingItem {
                     title: "UI Font Family",
                     description: "Font family for UI elements",
@@ -284,6 +361,36 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
                     metadata: None,
                     files: USER,
                 }),
+                SettingsPageItem::SettingItem(SettingItem {
+                    files: USER,
+                    title: "UI Font Features",
+                    description: "The OpenType features to enable for rendering in UI elements.",
+                    field: Box::new(
+                        SettingField {
+                            pick: |settings_content| &settings_content.theme.ui_font_features,
+                            pick_mut: |settings_content| {
+                                &mut settings_content.theme.ui_font_features
+                            },
+                        }
+                        .unimplemented(),
+                    ),
+                    metadata: None,
+                }),
+                SettingsPageItem::SettingItem(SettingItem {
+                    files: USER,
+                    title: "UI Font Fallbacks",
+                    description: "The font fallbacks to use for rendering in the UI.",
+                    field: Box::new(
+                        SettingField {
+                            pick: |settings_content| &settings_content.theme.ui_font_fallbacks,
+                            pick_mut: |settings_content| {
+                                &mut settings_content.theme.ui_font_fallbacks
+                            },
+                        }
+                        .unimplemented(),
+                    ),
+                    metadata: None,
+                }),
                 SettingsPageItem::SettingItem(SettingItem {
                     title: "Agent Panel UI Font Size",
                     description: "Font size for agent response text in the agent panel. Falls back to the regular UI font size.",
@@ -312,39 +419,6 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
                     metadata: None,
                     files: USER,
                 }),
-                SettingsPageItem::SectionHeader("Keymap"),
-                SettingsPageItem::SettingItem(SettingItem {
-                    title: "Base Keymap",
-                    description: "The name of a base set of key bindings to use",
-                    field: Box::new(SettingField {
-                        pick: |settings_content| &settings_content.base_keymap,
-                        pick_mut: |settings_content| &mut settings_content.base_keymap,
-                    }),
-                    metadata: None,
-                    files: USER,
-                }),
-                // todo(settings_ui): Vim/Helix Mode should be apart of one type because it's undefined
-                // behavior to have them both enabled at the same time
-                SettingsPageItem::SettingItem(SettingItem {
-                    title: "Vim Mode",
-                    description: "Enable vim modes and key bindings",
-                    field: Box::new(SettingField {
-                        pick: |settings_content| &settings_content.vim_mode,
-                        pick_mut: |settings_content| &mut settings_content.vim_mode,
-                    }),
-                    metadata: None,
-                    files: USER,
-                }),
-                SettingsPageItem::SettingItem(SettingItem {
-                    title: "Helix Mode",
-                    description: "Enable helix modes and key bindings",
-                    field: Box::new(SettingField {
-                        pick: |settings_content| &settings_content.helix_mode,
-                        pick_mut: |settings_content| &mut settings_content.helix_mode,
-                    }),
-                    metadata: None,
-                    files: USER,
-                }),
                 SettingsPageItem::SettingItem(SettingItem {
                     title: "Multi Cursor Modifier",
                     description: "Modifier key for adding multiple cursors",
@@ -490,87 +564,44 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
                     metadata: None,
                     files: USER | LOCAL,
                 }),
-                SettingsPageItem::SectionHeader("Layout"),
-                SettingsPageItem::SettingItem(SettingItem {
-                    title: "Bottom Dock Layout",
-                    description: "Layout mode for the bottom dock",
-                    field: Box::new(SettingField {
-                        pick: |settings_content| &settings_content.workspace.bottom_dock_layout,
-                        pick_mut: |settings_content| {
-                            &mut settings_content.workspace.bottom_dock_layout
-                        },
-                    }),
-                    metadata: None,
-                    files: USER,
-                }),
+            ],
+        },
+        SettingsPage {
+            title: "Keymap",
+            items: vec![
+                SettingsPageItem::SectionHeader("Base Keymap"),
                 SettingsPageItem::SettingItem(SettingItem {
-                    files: USER,
-                    title: "Centered Layout Left Padding",
-                    description: "Left padding for centered layout",
+                    title: "Base Keymap",
+                    description: "The name of a base set of key bindings to use",
                     field: Box::new(SettingField {
-                        pick: |settings_content| {
-                            if let Some(centered_layout) =
-                                &settings_content.workspace.centered_layout
-                            {
-                                ¢ered_layout.left_padding
-                            } else {
-                                &None
-                            }
-                        },
-                        pick_mut: |settings_content| {
-                            &mut settings_content
-                                .workspace
-                                .centered_layout
-                                .get_or_insert_default()
-                                .left_padding
-                        },
+                        pick: |settings_content| &settings_content.base_keymap,
+                        pick_mut: |settings_content| &mut settings_content.base_keymap,
                     }),
-                    metadata: None,
-                }),
-                SettingsPageItem::SettingItem(SettingItem {
+                    metadata: Some(Box::new(SettingsFieldMetadata {
+                        should_do_titlecase: Some(false),
+                        ..Default::default()
+                    })),
                     files: USER,
-                    title: "Centered Layout Right Padding",
-                    description: "Right padding for centered layout",
-                    field: Box::new(SettingField {
-                        pick: |settings_content| {
-                            if let Some(centered_layout) =
-                                &settings_content.workspace.centered_layout
-                            {
-                                ¢ered_layout.right_padding
-                            } else {
-                                &None
-                            }
-                        },
-                        pick_mut: |settings_content| {
-                            &mut settings_content
-                                .workspace
-                                .centered_layout
-                                .get_or_insert_default()
-                                .right_padding
-                        },
-                    }),
-                    metadata: None,
                 }),
+                SettingsPageItem::SectionHeader("Modal Editing"),
+                // todo(settings_ui): Vim/Helix Mode should be apart of one type because it's undefined
+                // behavior to have them both enabled at the same time
                 SettingsPageItem::SettingItem(SettingItem {
-                    title: "Zoomed Padding",
-                    description: "Show padding for zoomed panels",
+                    title: "Vim Mode",
+                    description: "Enable vim modes and key bindings",
                     field: Box::new(SettingField {
-                        pick: |settings_content| &settings_content.workspace.zoomed_padding,
-                        pick_mut: |settings_content| &mut settings_content.workspace.zoomed_padding,
+                        pick: |settings_content| &settings_content.vim_mode,
+                        pick_mut: |settings_content| &mut settings_content.vim_mode,
                     }),
                     metadata: None,
                     files: USER,
                 }),
-                SettingsPageItem::SectionHeader("Window"),
-                // todo(settings_ui): Should we filter by platform?
                 SettingsPageItem::SettingItem(SettingItem {
-                    title: "Use System Window Tabs",
-                    description: "(macOS only) Whether to allow windows to tab together",
+                    title: "Helix Mode",
+                    description: "Enable helix modes and key bindings",
                     field: Box::new(SettingField {
-                        pick: |settings_content| &settings_content.workspace.use_system_window_tabs,
-                        pick_mut: |settings_content| {
-                            &mut settings_content.workspace.use_system_window_tabs
-                        },
+                        pick: |settings_content| &settings_content.helix_mode,
+                        pick_mut: |settings_content| &mut settings_content.helix_mode,
                     }),
                     metadata: None,
                     files: USER,
@@ -581,6 +612,22 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
             title: "Editor",
             items: {
                 let mut items = vec![
+                    SettingsPageItem::SectionHeader("Auto Save"),
+                    SettingsPageItem::SettingItem(SettingItem {
+                        title: "Auto Save Mode",
+                        description: "When to Auto Save Buffer Changes",
+                        field: Box::new(
+                            SettingField {
+                                pick: |settings_content| &settings_content.workspace.autosave,
+                                pick_mut: |settings_content| {
+                                    &mut settings_content.workspace.autosave
+                                },
+                            }
+                            .unimplemented(),
+                        ),
+                        metadata: None,
+                        files: USER,
+                    }),
                     SettingsPageItem::SectionHeader("Multibuffer"),
                     SettingsPageItem::SettingItem(SettingItem {
                         title: "Double Click In Multibuffer",
@@ -620,6 +667,27 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
                         metadata: None,
                         files: USER,
                     }),
+                    SettingsPageItem::SettingItem(SettingItem {
+                        title: "Expand Outlines With Depth",
+                        description: "Default depth to expand outline items in the current file",
+                        field: Box::new(SettingField {
+                            pick: |settings_content| {
+                                if let Some(outline_panel) = &settings_content.outline_panel {
+                                    &outline_panel.expand_outlines_with_depth
+                                } else {
+                                    &None
+                                }
+                            },
+                            pick_mut: |settings_content| {
+                                &mut settings_content
+                                    .outline_panel
+                                    .get_or_insert_default()
+                                    .expand_outlines_with_depth
+                            },
+                        }),
+                        metadata: None,
+                        files: USER,
+                    }),
                     SettingsPageItem::SectionHeader("Scrolling"),
                     SettingsPageItem::SettingItem(SettingItem {
                         title: "Scroll Beyond Last Line",
@@ -1409,6 +1477,242 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
             items: {
                 let mut items = vec![];
                 items.extend(non_editor_language_settings_data());
+                items.extend([
+                    SettingsPageItem::SectionHeader("File Types"),
+                    SettingsPageItem::SettingItem(SettingItem {
+                        title: "File Type Associations",
+                        description: "A Mapping from Languages to files and file extensions that should be treated as that language",
+                        field: Box::new(
+                            SettingField {
+                                pick: |settings_content| {
+                                    &settings_content.project.all_languages.file_types
+                                },
+                                pick_mut: |settings_content| {
+                                    &mut settings_content.project.all_languages.file_types
+                                },
+                            }
+                            .unimplemented(),
+                        ),
+                        metadata: None,
+                        files: USER | LOCAL,
+                    }),
+                ]);
+
+                items.extend([
+                    SettingsPageItem::SectionHeader("Diagnostics"),
+                                    SettingsPageItem::SettingItem(SettingItem {
+                                        title: "Max Severity",
+                                        description: "Which level to use to filter out diagnostics displayed in the editor",
+                                        field: Box::new(SettingField {
+                                            pick: |settings_content| &settings_content.editor.diagnostics_max_severity,
+                                            pick_mut: |settings_content| {
+                                                &mut settings_content.editor.diagnostics_max_severity
+                                            },
+                                        }),
+                                        metadata: None,
+                                        files: USER,
+                                    }),
+                                    SettingsPageItem::SettingItem(SettingItem {
+                                        title: "Include Warnings",
+                                        description: "Whether to show warnings or not by default",
+                                        field: Box::new(SettingField {
+                                            pick: |settings_content| {
+                                                if let Some(diagnostics) = &settings_content.diagnostics {
+                                                    &diagnostics.include_warnings
+                                                } else {
+                                                    &None
+                                                }
+                                            },
+                                            pick_mut: |settings_content| {
+                                                &mut settings_content
+                                                    .diagnostics
+                                                    .get_or_insert_default()
+                                                    .include_warnings
+                                            },
+                                        }),
+                                        metadata: None,
+                                        files: USER,
+                                    }),
+                                    SettingsPageItem::SectionHeader("Inline Diagnostics"),
+                                    SettingsPageItem::SettingItem(SettingItem {
+                                        title: "Enabled",
+                                        description: "Whether to show diagnostics inline or not",
+                                        field: Box::new(SettingField {
+                                            pick: |settings_content| {
+                                                if let Some(diagnostics) = &settings_content.diagnostics {
+                                                    if let Some(inline) = &diagnostics.inline {
+                                                        &inline.enabled
+                                                    } else {
+                                                        &None
+                                                    }
+                                                } else {
+                                                    &None
+                                                }
+                                            },
+                                            pick_mut: |settings_content| {
+                                                &mut settings_content
+                                                    .diagnostics
+                                                    .get_or_insert_default()
+                                                    .inline
+                                                    .get_or_insert_default()
+                                                    .enabled
+                                            },
+                                        }),
+                                        metadata: None,
+                                        files: USER,
+                                    }),
+                                    SettingsPageItem::SettingItem(SettingItem {
+                                        title: "Update Debounce",
+                                        description: "The delay in milliseconds to show inline diagnostics after the last diagnostic update",
+                                        field: Box::new(SettingField {
+                                            pick: |settings_content| {
+                                                if let Some(diagnostics) = &settings_content.diagnostics {
+                                                    if let Some(inline) = &diagnostics.inline {
+                                                        &inline.update_debounce_ms
+                                                    } else {
+                                                        &None
+                                                    }
+                                                } else {
+                                                    &None
+                                                }
+                                            },
+                                            pick_mut: |settings_content| {
+                                                &mut settings_content
+                                                    .diagnostics
+                                                    .get_or_insert_default()
+                                                    .inline
+                                                    .get_or_insert_default()
+                                                    .update_debounce_ms
+                                            },
+                                        }),
+                                        metadata: None,
+                                        files: USER,
+                                    }),
+                                    SettingsPageItem::SettingItem(SettingItem {
+                                        title: "Padding",
+                                        description: "The amount of padding between the end of the source line and the start of the inline diagnostic",
+                                        field: Box::new(SettingField {
+                                            pick: |settings_content| {
+                                                if let Some(diagnostics) = &settings_content.diagnostics {
+                                                    if let Some(inline) = &diagnostics.inline {
+                                                        &inline.padding
+                                                    } else {
+                                                        &None
+                                                    }
+                                                } else {
+                                                    &None
+                                                }
+                                            },
+                                            pick_mut: |settings_content| {
+                                                &mut settings_content
+                                                    .diagnostics
+                                                    .get_or_insert_default()
+                                                    .inline
+                                                    .get_or_insert_default()
+                                                    .padding
+                                            },
+                                        }),
+                                        metadata: None,
+                                        files: USER,
+                                    }),
+                                    SettingsPageItem::SettingItem(SettingItem {
+                                        title: "Minimum Column",
+                                        description: "The minimum column at which to display inline diagnostics",
+                                        field: Box::new(SettingField {
+                                            pick: |settings_content| {
+                                                if let Some(diagnostics) = &settings_content.diagnostics {
+                                                    if let Some(inline) = &diagnostics.inline {
+                                                        &inline.min_column
+                                                    } else {
+                                                        &None
+                                                    }
+                                                } else {
+                                                    &None
+                                                }
+                                            },
+                                            pick_mut: |settings_content| {
+                                                &mut settings_content
+                                                    .diagnostics
+                                                    .get_or_insert_default()
+                                                    .inline
+                                                    .get_or_insert_default()
+                                                    .min_column
+                                            },
+                                        }),
+                                        metadata: None,
+                                        files: USER,
+                                    }),
+                                    SettingsPageItem::SectionHeader("LSP Pull Diagnostics"),
+                                    SettingsPageItem::SettingItem(SettingItem {
+                                        title: "Enabled",
+                                        description: "Whether to pull for language server-powered diagnostics or not",
+                                        field: Box::new(SettingField {
+                                            pick: |settings_content| {
+                                                if let Some(diagnostics) = &settings_content.diagnostics {
+                                                    if let Some(lsp_pull) = &diagnostics.lsp_pull_diagnostics {
+                                                        &lsp_pull.enabled
+                                                    } else {
+                                                        &None
+                                                    }
+                                                } else {
+                                                    &None
+                                                }
+                                            },
+                                            pick_mut: |settings_content| {
+                                                &mut settings_content
+                                                    .diagnostics
+                                                    .get_or_insert_default()
+                                                    .lsp_pull_diagnostics
+                                                    .get_or_insert_default()
+                                                    .enabled
+                                            },
+                                        }),
+                                        metadata: None,
+                                        files: USER,
+                                    }),
+                                    // todo(settings_ui): Needs unit
+                                    SettingsPageItem::SettingItem(SettingItem {
+                                        title: "Debounce",
+                                        description: "Minimum time to wait before pulling diagnostics from the language server(s)",
+                                        field: Box::new(SettingField {
+                                            pick: |settings_content| {
+                                                if let Some(diagnostics) = &settings_content.diagnostics {
+                                                    if let Some(lsp_pull) = &diagnostics.lsp_pull_diagnostics {
+                                                        &lsp_pull.debounce_ms
+                                                    } else {
+                                                        &None
+                                                    }
+                                                } else {
+                                                    &None
+                                                }
+                                            },
+                                            pick_mut: |settings_content| {
+                                                &mut settings_content
+                                                    .diagnostics
+                                                    .get_or_insert_default()
+                                                    .lsp_pull_diagnostics
+                                                    .get_or_insert_default()
+                                                    .debounce_ms
+                                            },
+                                        }),
+                                        metadata: None,
+                                        files: USER,
+                                    }),
+                                    SettingsPageItem::SectionHeader("LSP Highlights"),
+                                    SettingsPageItem::SettingItem(SettingItem {
+                                        title: "Debounce",
+                                        description: "The debounce delay before querying highlights from the language",
+                                        field: Box::new(SettingField {
+                                            pick: |settings_content| &settings_content.editor.lsp_highlight_debounce,
+                                            pick_mut: |settings_content| {
+                                                &mut settings_content.editor.lsp_highlight_debounce
+                                            },
+                                        }),
+                                        metadata: None,
+                                        files: USER,
+                                    }),
+                ]);
+
                 // todo(settings_ui): Refresh on extension (un)/installed
                 // Note that `crates/json_schema_store` solves the same problem, there is probably a way to unify the two
                 items.push(SettingsPageItem::SectionHeader(LANGUAGES_SECTION_HEADER));
@@ -1482,15 +1786,27 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
                     files: USER,
                 }),
                 SettingsPageItem::SettingItem(SettingItem {
-                    title: "Include Ignored",
-                    description: "Include ignored files in search results by default",
+                    title: "Use Smartcase Search",
+                    description: "Whether to automatically enable case-sensitive search based on the search query",
                     field: Box::new(SettingField {
-                        pick: |settings_content| {
-                            if let Some(search) = &settings_content.editor.search {
-                                &search.include_ignored
-                            } else {
-                                &None
-                            }
+                        pick: |settings_content| &settings_content.editor.use_smartcase_search,
+                        pick_mut: |settings_content| {
+                            &mut settings_content.editor.use_smartcase_search
+                        },
+                    }),
+                    metadata: None,
+                    files: USER,
+                }),
+                SettingsPageItem::SettingItem(SettingItem {
+                    title: "Include Ignored",
+                    description: "Include ignored files in search results by default",
+                    field: Box::new(SettingField {
+                        pick: |settings_content| {
+                            if let Some(search) = &settings_content.editor.search {
+                                &search.include_ignored
+                            } else {
+                                &None
+                            }
                         },
                         pick_mut: |settings_content| {
                             &mut settings_content
@@ -1521,31 +1837,6 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
                     metadata: None,
                     files: USER,
                 }),
-                // todo: null by default
-                SettingsPageItem::SettingItem(SettingItem {
-                    title: "Include Ignored in Search",
-                    description: "Use gitignored files when searching",
-                    field: Box::new(
-                        SettingField {
-                            pick: |settings_content| {
-                                if let Some(file_finder) = &settings_content.file_finder {
-                                    &file_finder.include_ignored
-                                } else {
-                                    &None
-                                }
-                            },
-                            pick_mut: |settings_content| {
-                                &mut settings_content
-                                    .file_finder
-                                    .get_or_insert_default()
-                                    .include_ignored
-                            },
-                        }
-                        .unimplemented(),
-                    ),
-                    metadata: None,
-                    files: USER,
-                }),
                 SettingsPageItem::SettingItem(SettingItem {
                     title: "Search Wrap",
                     description: "Whether the editor search results will loop",
@@ -1570,19 +1861,32 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
                     metadata: None,
                     files: USER,
                 }),
+                SettingsPageItem::SectionHeader("File Finder"),
+                // todo: null by default
                 SettingsPageItem::SettingItem(SettingItem {
-                    title: "Use Smartcase Search",
-                    description: "Use smartcase (i.e., case-sensitive) search",
-                    field: Box::new(SettingField {
-                        pick: |settings_content| &settings_content.editor.use_smartcase_search,
-                        pick_mut: |settings_content| {
-                            &mut settings_content.editor.use_smartcase_search
-                        },
-                    }),
+                    title: "Include Ignored in Search",
+                    description: "Use gitignored files when searching",
+                    field: Box::new(
+                        SettingField {
+                            pick: |settings_content| {
+                                if let Some(file_finder) = &settings_content.file_finder {
+                                    &file_finder.include_ignored
+                                } else {
+                                    &None
+                                }
+                            },
+                            pick_mut: |settings_content| {
+                                &mut settings_content
+                                    .file_finder
+                                    .get_or_insert_default()
+                                    .include_ignored
+                            },
+                        }
+                        .unimplemented(),
+                    ),
                     metadata: None,
                     files: USER,
                 }),
-                SettingsPageItem::SectionHeader("File Management"),
                 SettingsPageItem::SettingItem(SettingItem {
                     title: "File Icons",
                     description: "Show file icons in the file finder",
@@ -1625,30 +1929,6 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
                     metadata: None,
                     files: USER,
                 }),
-                SettingsPageItem::SettingItem(SettingItem {
-                    title: "Restore File State",
-                    description: "Restore previous file state when reopening",
-                    field: Box::new(SettingField {
-                        pick: |settings_content| &settings_content.workspace.restore_on_file_reopen,
-                        pick_mut: |settings_content| {
-                            &mut settings_content.workspace.restore_on_file_reopen
-                        },
-                    }),
-                    metadata: None,
-                    files: USER,
-                }),
-                SettingsPageItem::SettingItem(SettingItem {
-                    title: "Close on File Delete",
-                    description: "Automatically close files that have been deleted",
-                    field: Box::new(SettingField {
-                        pick: |settings_content| &settings_content.workspace.close_on_file_delete,
-                        pick_mut: |settings_content| {
-                            &mut settings_content.workspace.close_on_file_delete
-                        },
-                    }),
-                    metadata: None,
-                    files: USER,
-                }),
                 SettingsPageItem::SettingItem(SettingItem {
                     title: "Skip Focus For Active In Search",
                     description: "Whether the file finder should skip focus for the active file in search results",
@@ -1692,10 +1972,68 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
                     files: USER,
                 }),
                 SettingsPageItem::SectionHeader("File Scan"),
+                SettingsPageItem::SettingItem(SettingItem {
+                    title: "File Scan Exclusions",
+                    description: "Files or globs of files that will be excluded by Zed entirely. They will be skipped during file scans, file searches, and not be displayed in the project file tree. Takes precedence over \"File Scan Inclusions\"",
+                    field: Box::new(
+                        SettingField {
+                            pick: |settings_content| {
+                                &settings_content.project.worktree.file_scan_exclusions
+                            },
+                            pick_mut: |settings_content| {
+                                &mut settings_content.project.worktree.file_scan_exclusions
+                            },
+                        }
+                        .unimplemented(),
+                    ),
+                    metadata: None,
+                    files: USER,
+                }),
+                SettingsPageItem::SettingItem(SettingItem {
+                    title: "File Scan Inclusions",
+                    description: "Files or globs of files that will be included by Zed, even when ignored by git. This is useful for files that are not tracked by git, but are still important to your project. Note that globs that are overly broad can slow down Zed's file scanning. \"File Scan Exclusions\" takes precedence over these inclusions",
+                    field: Box::new(
+                        SettingField {
+                            pick: |settings_content| {
+                                &settings_content.project.worktree.file_scan_exclusions
+                            },
+                            pick_mut: |settings_content| {
+                                &mut settings_content.project.worktree.file_scan_exclusions
+                            },
+                        }
+                        .unimplemented(),
+                    ),
+                    metadata: None,
+                    files: USER,
+                }),
+                SettingsPageItem::SettingItem(SettingItem {
+                    title: "Restore File State",
+                    description: "Restore previous file state when reopening",
+                    field: Box::new(SettingField {
+                        pick: |settings_content| &settings_content.workspace.restore_on_file_reopen,
+                        pick_mut: |settings_content| {
+                            &mut settings_content.workspace.restore_on_file_reopen
+                        },
+                    }),
+                    metadata: None,
+                    files: USER,
+                }),
+                SettingsPageItem::SettingItem(SettingItem {
+                    title: "Close on File Delete",
+                    description: "Automatically close files that have been deleted",
+                    field: Box::new(SettingField {
+                        pick: |settings_content| &settings_content.workspace.close_on_file_delete,
+                        pick_mut: |settings_content| {
+                            &mut settings_content.workspace.close_on_file_delete
+                        },
+                    }),
+                    metadata: None,
+                    files: USER,
+                }),
             ],
         },
         SettingsPage {
-            title: "Workbench & Window",
+            title: "Window & Layout",
             items: vec![
                 SettingsPageItem::SectionHeader("Status Bar"),
                 SettingsPageItem::SettingItem(SettingItem {
@@ -2004,24 +2342,6 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
                     metadata: None,
                     files: USER,
                 }),
-                SettingsPageItem::SettingItem(SettingItem {
-                    title: "Editor Tabs",
-                    description: "Show the tab bar in the editor",
-                    field: Box::new(SettingField {
-                        pick: |settings_content| {
-                            if let Some(tab_bar) = &settings_content.tab_bar {
-                                &tab_bar.show
-                            } else {
-                                &None
-                            }
-                        },
-                        pick_mut: |settings_content| {
-                            &mut settings_content.tab_bar.get_or_insert_default().show
-                        },
-                    }),
-                    metadata: None,
-                    files: USER,
-                }),
                 SettingsPageItem::SettingItem(SettingItem {
                     title: "Show Git Status In Tabs",
                     description: "Show the Git file status on a tab item",
@@ -2240,6 +2560,167 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
                     metadata: None,
                     files: USER,
                 }),
+                SettingsPageItem::SectionHeader("Layout"),
+                SettingsPageItem::SettingItem(SettingItem {
+                    title: "Bottom Dock Layout",
+                    description: "Layout mode for the bottom dock",
+                    field: Box::new(SettingField {
+                        pick: |settings_content| &settings_content.workspace.bottom_dock_layout,
+                        pick_mut: |settings_content| {
+                            &mut settings_content.workspace.bottom_dock_layout
+                        },
+                    }),
+                    metadata: None,
+                    files: USER,
+                }),
+                SettingsPageItem::SettingItem(SettingItem {
+                    files: USER,
+                    title: "Centered Layout Left Padding",
+                    description: "Left padding for centered layout",
+                    field: Box::new(SettingField {
+                        pick: |settings_content| {
+                            if let Some(centered_layout) =
+                                &settings_content.workspace.centered_layout
+                            {
+                                ¢ered_layout.left_padding
+                            } else {
+                                &None
+                            }
+                        },
+                        pick_mut: |settings_content| {
+                            &mut settings_content
+                                .workspace
+                                .centered_layout
+                                .get_or_insert_default()
+                                .left_padding
+                        },
+                    }),
+                    metadata: None,
+                }),
+                SettingsPageItem::SettingItem(SettingItem {
+                    files: USER,
+                    title: "Centered Layout Right Padding",
+                    description: "Right padding for centered layout",
+                    field: Box::new(SettingField {
+                        pick: |settings_content| {
+                            if let Some(centered_layout) =
+                                &settings_content.workspace.centered_layout
+                            {
+                                ¢ered_layout.right_padding
+                            } else {
+                                &None
+                            }
+                        },
+                        pick_mut: |settings_content| {
+                            &mut settings_content
+                                .workspace
+                                .centered_layout
+                                .get_or_insert_default()
+                                .right_padding
+                        },
+                    }),
+                    metadata: None,
+                }),
+                SettingsPageItem::SectionHeader("Window"),
+                // todo(settings_ui): Should we filter by platform?
+                SettingsPageItem::SettingItem(SettingItem {
+                    title: "Use System Window Tabs",
+                    description: "(macOS only) Whether to allow windows to tab together",
+                    field: Box::new(SettingField {
+                        pick: |settings_content| &settings_content.workspace.use_system_window_tabs,
+                        pick_mut: |settings_content| {
+                            &mut settings_content.workspace.use_system_window_tabs
+                        },
+                    }),
+                    metadata: None,
+                    files: USER,
+                }),
+                SettingsPageItem::SectionHeader("Pane Modifiers"),
+                SettingsPageItem::SettingItem(SettingItem {
+                    title: "Inactive Opacity",
+                    description: "Opacity of inactive panels (0.0 - 1.0)",
+                    field: Box::new(SettingField {
+                        pick: |settings_content| match settings_content
+                            .workspace
+                            .active_pane_modifiers
+                            .as_ref()
+                        {
+                            Some(modifiers) => &modifiers.inactive_opacity,
+                            None => &None,
+                        },
+                        pick_mut: |settings_content| {
+                            &mut settings_content
+                                .workspace
+                                .active_pane_modifiers
+                                .get_or_insert_default()
+                                .inactive_opacity
+                        },
+                    }),
+                    metadata: None,
+                    files: USER,
+                }),
+                SettingsPageItem::SettingItem(SettingItem {
+                    title: "Border Size",
+                    description: "Size of the border surrounding the active pane",
+                    field: Box::new(SettingField {
+                        pick: |settings_content| match settings_content
+                            .workspace
+                            .active_pane_modifiers
+                            .as_ref()
+                        {
+                            Some(modifiers) => &modifiers.border_size,
+                            None => &None,
+                        },
+                        pick_mut: |settings_content| {
+                            &mut settings_content
+                                .workspace
+                                .active_pane_modifiers
+                                .get_or_insert_default()
+                                .border_size
+                        },
+                    }),
+                    metadata: None,
+                    files: USER,
+                }),
+                SettingsPageItem::SettingItem(SettingItem {
+                    title: "Zoomed Padding",
+                    description: "Show padding for zoomed panes",
+                    field: Box::new(SettingField {
+                        pick: |settings_content| &settings_content.workspace.zoomed_padding,
+                        pick_mut: |settings_content| &mut settings_content.workspace.zoomed_padding,
+                    }),
+                    metadata: None,
+                    files: USER,
+                }),
+                SettingsPageItem::SectionHeader("Pane Split Direction"),
+                SettingsPageItem::SettingItem(SettingItem {
+                    title: "Vertical Split Direction",
+                    description: "Direction to split vertically",
+                    field: Box::new(SettingField {
+                        pick: |settings_content| {
+                            &settings_content.workspace.pane_split_direction_vertical
+                        },
+                        pick_mut: |settings_content| {
+                            &mut settings_content.workspace.pane_split_direction_vertical
+                        },
+                    }),
+                    metadata: None,
+                    files: USER,
+                }),
+                SettingsPageItem::SettingItem(SettingItem {
+                    title: "Horizontal Split Direction",
+                    description: "Direction to split horizontally",
+                    field: Box::new(SettingField {
+                        pick: |settings_content| {
+                            &settings_content.workspace.pane_split_direction_horizontal
+                        },
+                        pick_mut: |settings_content| {
+                            &mut settings_content.workspace.pane_split_direction_horizontal
+                        },
+                    }),
+                    metadata: None,
+                    files: USER,
+                }),
             ],
         },
         SettingsPage {