ZIm/crates/server
Nathan Sobo 17c9aa1819 Remove ShareWorktree message
Instead, create an empty worktree on guests when a worktree is first *registered*, then update it via an initial UpdateWorktree message.

This prevents the host from referencing a worktree in definition RPC responses that hasn't yet been observed by the guest. We could have waited until the entire worktree was shared, but this could take a long time, so instead we create an empty one on guests and proceed from there.

We still have randomized test failures as of this commit:

SEED=9519 MAX_PEERS=2 ITERATIONS=10000 OPERATIONS=7 ct -p zed-server test_random_collaboration

Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2022-02-23 11:56:09 -07:00
..
k8s Add placeholder environment variables to our deploy 2022-01-12 16:33:41 -07:00
migrations Move all crates to a top-level crates folder 2021-10-04 13:22:21 -06:00
src Remove ShareWorktree message 2022-02-23 11:56:09 -07:00
static Fix paths to server crate in scripts and gitignore 2021-11-03 19:22:00 -07:00
templates Add job post to Zed.dev 2021-12-23 23:22:57 -05:00
.env.template.toml Move all crates to a top-level crates folder 2021-10-04 13:22:21 -06:00
.env.toml Add the fetching of user JSON by github login with a token header 2021-12-19 09:43:13 -07:00
basic.conf Move all crates to a top-level crates folder 2021-10-04 13:22:21 -06:00
Cargo.toml Replace Inconsolata with Zed Mono and Zed Sans 2022-02-18 14:55:11 +01:00
favicon.ico Move all crates to a top-level crates folder 2021-10-04 13:22:21 -06:00
Procfile Move all crates to a top-level crates folder 2021-10-04 13:22:21 -06:00
README.md Move all crates to a top-level crates folder 2021-10-04 13:22:21 -06:00
styles.css Move all crates to a top-level crates folder 2021-10-04 13:22:21 -06:00

Zed Server

This crate is what we run at https://zed.dev.

It contains our web presence as well as the backend logic for collaboration, to which we connect from the Zed client via a websocket.

Templates

We use handlebars templates that are interpreted at runtime. When running in debug mode, you can change templates and see the latest content without restarting the server. This is enabled by the rust-embed crate, which we use to access the contents of the /templates folder at runtime. In debug mode it reads contents from the file system, but in release the templates will be embedded in the server binary.

Static assets

We also use rust-embed to access the contents of the /static folder via the /static/* route. The app will pick up changes to the contents of this folder when running in debug mode.

CSS

This site uses Tailwind CSS, which means our stylesheets don't need to change very frequently. We check static/styles.css into the repository, but it's actually compiled from /styles.css via script/build-css. This script runs the Tailwind compilation flow to regenerate static/styles.css via PostCSS.