dcc4dd7eb8
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! |
||
---|---|---|
.github | ||
.vscode | ||
assets | ||
crates | ||
plugins | ||
script | ||
styles | ||
.dockerignore | ||
.gitignore | ||
.gitmodules | ||
Cargo.lock | ||
Cargo.toml | ||
Dockerfile | ||
Procfile | ||
README.md |
Zed
Welcome to Zed, a lightning-fast, collaborative code editor that makes your dreams come true.
Development tips
Dependencies
-
Install Postgres.app and start it.
-
Install the
LiveKit
server and theforeman
process supervisor:brew install livekit brew install foreman
-
Ensure the Zed.dev website is checked out in a sibling directory:
cd .. git clone https://github.com/zed-industries/zed.dev
-
Initialize submodules
git submodule update --init --recursive
-
Set up a local
zed
database and seed it with some initial users:Create a personal GitHub token to run
script/bootstrap
once successfully: the token needs to have an access to private repositories for the script to work (repo
OAuth scope). Then delete that token.GITHUB_TOKEN=<$token> script/bootstrap
Testing against locally-running servers
Start the web and collab servers:
foreman start
If you want to run Zed pointed at the local servers, you can run:
script/zed-with-local-servers
# or...
script/zed-with-local-servers --release
Dump element JSON
If you trigger cmd-alt-i
, Zed will copy a JSON representation of the current window contents to the clipboard. You can paste this in a tool like DJSON to navigate the state of on-screen elements in a structured way.
Licensing
We use cargo-about
to automatically comply with open source licenses. If CI is failing, check the following:
- Is it showing a
no license specified
error for a crate you've created? If so, addpublish = false
under[package]
in your crate's Cargo.toml. - Is the error
failed to satisfy license requirements
for a dependency? If so, first determine what license the project has and whether this system is sufficient to comply with this license's requirements. If you're unsure, ask a lawyer. Once you've verified that this system is acceptable add the license's SPDX identifier to theaccepted
array inscript/licenses/zed-licenses.toml
. - Is
cargo-about
unable to find the license for a dependency? If so, add a clarification field at the end ofscript/licenses/zed-licenses.toml
, as specified in the cargo-about book.
Wasm Plugins
Zed has a Wasm-based plugin runtime which it currently uses to embed plugins. To compile Zed, you'll need to have the wasm32-wasi
toolchain installed on your system. To install this toolchain, run:
rustup target add wasm32-wasi
Plugins can be found in the plugins
folder in the root. For more information about how plugins work, check the Plugin Guide in crates/plugin_runtime/README.md
.