Add a setting for the Threads Sidebar width (#62883)
## Objective
The Threads Sidebar opens at a hard-coded 300px and can be resized only
by dragging. `agent.default_width` controls the Agent Panel rather than
the sidebar, leaving no way to configure the sidebar’s preferred width.
## Solution
Add `agent.threads_sidebar_default_width` for the width used when no
user-chosen sidebar width is stored. The value is clamped to the
existing 200–800px drag range. Existing, unresized sidebars follow
settings changes immediately. Double-clicking the divider resets the
sidebar to the configured width and resumes following subsequent
settings changes.
The sidebar previously saved its width whenever any sidebar state
changed, not only when the divider was dragged. `SerializedSidebar` now
records `width_set_by_user`, so settings-driven widths are no longer
persisted. Manually resized widths take precedence until the divider is
reset.
## Testing
- `test_threads_sidebar_default_width` in
`crates/agent_settings/src/agent_settings.rs` covers the default, a user
override, fallback for `null` and an unset field, and preservation of
the Agent Panel width and sidebar position.
- Five width-focused tests in `crates/sidebar/src/sidebar_tests.rs`
cover reset behavior, live settings updates, clamping, legacy-width
restoration, and persistence. They also check that manually resized
widths resist settings changes and that resetting resumes following the
setting.
- To check by hand: set `"agent": { "threads_sidebar_default_width": 360
}`, reset the divider, and confirm the sidebar is 360px wide. Change the
setting and confirm the width updates immediately. Drag it wider,
restart, and confirm the dragged width is kept. Double-click the divider
and confirm it returns to the configured width. Set the value to `5000`
and confirm the untouched sidebar clamps to 800px.
## Self-Review Checklist:
- [x] I’ve reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content adheres to Zed’s UI standards
([UX/UI](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
and
[icon](https://github.com/zed-industries/zed/blob/main/crates/icons/README.md)
guidelines)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
---
Release Notes:
- Added `agent.threads_sidebar_default_width` for setting the width of
the Threads Sidebar.
This commit is contained in:
1 parent
616ac232d4
commit
3c779a6df0
10 files changed
+410
-17
No files matched your search
@@ -19,6 +19,10 @@ Terminal Threads also appear as entries in the sidebar alongside agent threads,
|
||||
|
||||
To focus the sidebar without toggling it, use {#kb multi_workspace::FocusWorkspaceSidebar}. To search your threads, press {#kb agents_sidebar::FocusSidebarFilter} while the sidebar is focused.
|
||||
|
||||
To change the sidebar’s default width, open the Settings Editor and search for “Threads Sidebar Default Width”. See [`agent.threads_sidebar_default_width`](../reference/all-settings.md#agent-threads-sidebar-default-width) for values and a configuration example.
|
||||
|
||||
Drag the divider to override the configured width. Double-click it to return to the setting and follow subsequent settings changes.
|
||||
|
||||
### Switching Threads {#switching-threads}
|
||||
|
||||
Click any thread in the sidebar to switch to it. The Agent Panel updates to show that thread's conversation.
|
||||
|
||||
@@ -121,6 +121,30 @@ To use a fixed reset width, disable flexible sizing in the Settings Editor. Or a
|
||||
|
||||
See [Agent Panel visual customization](../visual-customization.md#agent-panel) for other panel appearance settings.
|
||||
|
||||
### Threads Sidebar Default Width {#agent-threads-sidebar-default-width}
|
||||
|
||||
- Description: Default width in pixels of the [Threads Sidebar](../ai/parallel-agents.md#threads-sidebar).
|
||||
- Setting: `agent.threads_sidebar_default_width`
|
||||
- Default: `300`
|
||||
|
||||
**Options**
|
||||
|
||||
Numbers from `200` to `800` pixels (inclusive). Values outside this range are clamped to the nearest limit.
|
||||
|
||||
Open the Settings Editor and search for “Threads Sidebar Default Width”. Or add this to your `settings.json`:
|
||||
|
||||
```json [settings]
|
||||
{
|
||||
"agent": {
|
||||
"threads_sidebar_default_width": 360
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
If you haven’t manually resized the sidebar, its width follows changes to this setting immediately. A manually resized width takes precedence until you double-click the divider to reset it. After resetting, the sidebar follows this setting again.
|
||||
|
||||
Widths saved by older versions of Zed are preserved if they differ from the previous default of 300 pixels. A saved width of 300 pixels uses this setting instead.
|
||||
|
||||
## Agent UI Font Size
|
||||
|
||||
- Description: The font size for text in the agent panel. Inherits the UI font size if unset.
|
||||
|
||||
Reference in new issue
Block a user