# Allow multiple docks to be visible at once and only let them contain panels \(\#2450\) · gitcafe/zed

[View on GitCafe](https://git.cafe/gitcafe/zed/commit/dcc4dd7eb8743dc170c723764f55ee4338036e37)

Repository: [gitcafe/zed](https://git.cafe/gitcafe/zed)

Visibility: public

Requested revision: dcc4dd7eb8743dc170c723764f55ee4338036e37

Requested commit: dcc4dd7eb8743dc170c723764f55ee4338036e37

Commit: dcc4dd7eb8743dc170c723764f55ee4338036e37

Tree: a9bec0b873c7c725fe05eb7b61519c7694ed7ff0

Author: Antonio Scandurra

Committer: GitHub

## Message

```
Allow multiple docks to be visible at once and only let them contain panels (#2450)

Closes
https://linear.app/zed-industries/issue/Z-1188/allow-docks-to-be-visible-on-left-bottom-right

To prepare the way for the AI assistant, we want to revamp the way docks
and panels work. In this PR, we replace the dock as it currently exists
with 3 independent docks at the left, bottom, and right edge of the
workspace. To replace the "expanded" dock, we will introduce a zoom
feature that works on any pane and some panels. When showing a dock with
an active panel that is zoomed, it will automatically appear zoomed.
This replicates the expanded dock experience. If you unzoom, the panel
will still be visible.

### Panels only

We want to simplify these docks to only allow them to contain *panels*.
By doing this, we don't need to give each dock a tab bar, minimizing
clutter in the workspace. Each panel will remember its size, and the
dock will adjust to that size when the panel is toggled. This will allow
each panel to take up the amount of space that makes sense for its use
case.

There will be 3 kinds of panels:

* Project panel: This currently lives in the left "sidebar", which this
PR renames to the left dock. Users will be able to left click the icon
and switch the project panel to the right dock.
* Terminal panel: This is the primary user of the previous dock. Now all
terminals will live in a terminal panel, which can be docked at the
left, bottom, or right. This dock will contain tabs, but only for
terminals. Terminals will still be able to be dragged into the
workspace, but by default, the first new terminal will live in the
terminal panel which lives in one of the 3 docks.
* Feedback: Instead of opening a pane, let's explore making this a panel
instead.

### Status bar icons

A nice feature of this change is that it simplifies our status bar by
eliminating the dock button. We will only show icons for specific
panels. Panel in the left dock will appear at the left side of the
status bar. Panels in the right dock on the far right, panels in the
bottom will appear on the right, to the immediate left of the buttons
for right panels. Left clicking any panel button will allow it to be
redocked to any valid location for that panel.

### Paving the way for the AI assistant

I'm envisioning the assistant living in the far right panel by default.
So in the stock config, you'll have the project panel on the left,
terminal on the bottom, assistant on the right, and code in the middle.
Let's fucking go!
```

## Parents

- [a5b5de565115cf57cb58a61b001a584d1e868373](https://git.cafe/gitcafe/zed/commit/a5b5de565115cf57cb58a61b001a584d1e868373?format=markdown)

- [19b817e48aa372329b0dde3597651d9a760ea3b0](https://git.cafe/gitcafe/zed/commit/19b817e48aa372329b0dde3597651d9a760ea3b0?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zed/tree/dcc4dd7eb8743dc170c723764f55ee4338036e37?format=markdown)
