### Summary This PR introduces channels: a new way of starting collaboration sessions. You can create channels and invite others to join them. You can then hold a call in a channel, where any member of the channel is free to join the call without needing to be invited. Channels are displayed in a new panel called the collaboration panel, which now also contains the contacts list, and the current call. The collaboration popover has been removed from the titlebar.  For now, the channels functionality will only be revealed to staff, so the public-facing change is just the move from the popover to the panel. ### To-do * User-facing UI * [x] signed-out state for collab panel * [x] new icon for collab panel * [x] for now, channels section only appears for zed staff * [x] current call section styling (https://zed-industries.slack.com/archives/C05CJUNF2BU/p1691189389988239?thread_ts=1691189120.403009&cid=C05CJUNF2BU) * [x] Channel members * Channels * [x] style channel name editor * [x] decide on a special "empty state" for the panel, when user has no contacts * [x] ensure channels are sorted in a consistent way (expose channel id paths to client) * [x] Figure out layered panels UX * [x] Change add contacts to be the same kind of tabbed modal * [x] race condition between channel updates and user fetches (`ChannelStore::handle_update_contacts`) * [x] race condition between joining channels and channel update messages `collab::rpc::channel_updated`) * [x] don't display mic as muted when microphone share is pending upon first joining call Release Notes: - Moved the collaboration dropdown into its own panel. - Added settings for disabling the AI assistant panel button. - Switch to lazily initializing audio output sources (https://github.com/zed-industries/community/issues/1840, https://github.com/zed-industries/community/issues/1919)
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
LiveKitserver and theforemanprocess supervisor:brew install livekit brew install foreman -
Ensure the Zed.dev website is checked out in a sibling directory and install it's dependencies:
cd .. git clone https://github.com/zed-industries/zed.dev cd zed.dev && npm install npm install -g vercel -
Return to Zed project directory and Initialize submodules
cd zed git submodule update --init --recursive -
Set up a local
zeddatabase and seed it with some initial users:Create a personal GitHub token to run
script/bootstraponce successfully: the token needs to have an access to private repositories for the script to work (repoOAuth 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 specifiederror for a crate you've created? If so, addpublish = falseunder[package]in your crate's Cargo.toml. - Is the error
failed to satisfy license requirementsfor 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 theacceptedarray inscript/licenses/zed-licenses.toml. - Is
cargo-aboutunable 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.