Now, when you open a local worktree, we immediately send an `OpenWorktree` message
to the server, telling it the name of the folder that you've opened, and the names of all the
collaborators (based on a `.zed.toml` file). The server responds with a unique id for the
worktree.
When starting share this local worktree, you now include this previously-assigned id
in the `ShareWorktree` message.
When joining a worktree, there is no longer a need to provide an access token. The access
is controlled by the set of "collaborator logins" that were provided when the worktree
was initially opened by the host.
Even before sharing, we now want to advertise that the user is working
on a certain worktree, to make that visible to all of the worktree's
collaborators.
* Set up UserStore to have the current user, so that
channel messages can be sent. This is needed now that
pending messages are represented more similarly to
regular messages.
* Drop buffer inside of an `AppContext.update` block, so that
the Buffer's release hook is called in time.
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Still need to actually handle an HTTP response from the server indicating there was an invalid token.
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
This prevents us from re-prompting for keychain access when we retry connections after the connection is lost.
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
This is mostly to set us up to test the rpc::Client's reconnect
logic.
There are multiple ways that the `rpc::Client` may establish
its websocket connection: (SSL in production, plain TCP during
local development, and using an in-memory connection for tests).
Now we can represent all of those connections using a common type.
Also, several long methods no longer need to be generic, which
is good for compile time.
There's a newer version of the font available but ligatures seem
broken googlefonts/Inconsolata#58 and googlefonts/Inconsolata#52.
As part of this commit I also upgraded rust-embed to use the new
exclusion feature, which allows us to skip embedding OS files like
`.DS_Store`.