Commit Graph
717 Commits
Author SHA1 Message Date
Max Brunsfeld 332a63b96a collab 0.6.1 2023-02-24 09:44:23 -08:00
Julia aae083923c Differentiate between follow state on a per-project basis 2023-02-24 00:07:17 -05:00
Antonio Scandurra bbbd79a3a2 Fix error when deleting rooms containing projects on refresh
A foreign key violation was causing the server to never delete stale
rooms during `Database::refresh_room` due to having one or more project
records referencing the room.
2023-02-23 15:54:35 +01:00
Antonio Scandurra 10881ed0a1 Fix compilation errors after restructuring room_transaction 2023-02-23 15:17:22 +01:00
Antonio Scandurra 088d3901e9 Merge branch 'main' into call-ui-follow-up 2023-02-23 15:15:46 +01:00
Antonio Scandurra 38a12ff77e Tear down peer when signing out 2023-02-23 14:47:02 +01:00
Antonio Scandurra 42bf6ae38b Merge pull request #2200 from zed-industries/fix-slow-project-join
Hold room lock through the entirety of a `room_transaction`
2023-02-23 09:11:58 +01:00
Max Brunsfeld de2051a89b collab 0.6.0 2023-02-22 12:35:15 -08:00
JuliaandMax Brunsfeld f9f5fc38d1 Be more specific about clearing (leader, follower) row
Previously anyone unfollowing someone would clear all other rows for
other followers leading to an incorrect state, fix and test

Co-Authored-By: Max Brunsfeld <max@zed.dev>
2023-02-22 15:29:20 -05:00
Max Brunsfeld 9032b8297a Retrieve room id from the project when following/unfollowing
Previously, we were accidentally using the project id as the room id.
2023-02-22 11:34:55 -05:00
JuliaandAntonio Scandurra 84e1237d45 Add followers table to sqlite scheme for tests
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2023-02-22 11:22:37 -05:00
Julia fa56590cd7 Following face piles finally take their first breath 2023-02-22 11:21:23 -05:00
JuliaandMax Brunsfeld 62ea8909c1 Fix deadlock in db get_room
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2023-02-22 11:21:23 -05:00
Julia bd88f47816 Initial tracking of unfollows on collab server 2023-02-22 11:21:23 -05:00
JuliaandAntonio Scandurra a3d474af23 Begin tracking follow states on collab server
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2023-02-22 11:21:23 -05:00
Antonio Scandurra ea07c26aac Hold room lock through the entirety of a room_transaction
Previously, when the host repeatedly sent `UpdateWorktree` messages,
new guests attempting to join a project would observe a severe slowdown
caused by a database serialization error (e.g., the coherence of the data
would get violated midway through `Database::join_project` due to worktree
entries being mutated as the user joined). Writing entries is pretty fast,
whereas reading all of them for a project can take more than 100ms.
Transactions that failed due to a serialization error are retried, but the guest
would keep retrying until the host finished writing because the guest's read
was slow.

This commit changes the semantics of `room_transaction` to acquire a room
lock before even starting the transaction and holding it all the way after
commit (storing it, as before, in the `RoomGuard`). This ensures that a fast
writer (the host) can't starve a slow reader (the guest), allowing the latter
to make progress by temporarily pausing writes by the former.
2023-02-22 16:04:29 +01:00
Julia 5082654241 Enforce rustfmt on CI & clean up some let-else format errors 2023-02-20 13:27:35 -05:00
Max Brunsfeld 0a4662923b Make Project::save_buffer and ::save_buffers into methods 2023-02-20 09:42:44 -08:00
Max Brunsfeld 2b92a8f06d Unify save and save_as for local worktrees
This fixes state propagation bugs due to missing RPC calls in save_as.
2023-02-17 17:21:48 -08:00
Max Brunsfeld 05e8e2f835 Move the save and save_as code paths close together 2023-02-17 17:21:48 -08:00
Max BrunsfeldandNathan Sobo 8656190d0b Respect UpdateBufferFile messages on guest buffers without file
Co-authored-by: Nathan Sobo <nathan@zed.dev>
2023-02-17 12:38:04 -08:00
Antonio Scandurra c656fa9e61 Avoid creating more than one room when inviting multiple people at once
Previously, when initiating a call by calling multiple people, only
the first person would get the call while all the others would briefly
show a "pending" status but never get the call.

This would happen because `ActiveCall` was trying to a create a different
room for each person called, because the original room creation hadn't finished
and so a `ModelHandle<Room>` wasn't being store in the active call.

With this commit, only one room can be created at any given time and further
invites have to wait until that room creation is done.
2023-02-14 12:03:30 +01:00
Antonio Scandurra d18709d6fc Fix test that wasn't properly verifying disconnection from livekit 2023-02-14 10:46:29 +01:00
Mikayla Maki edb2d2cd3f Removed old experiments settings and staff mode flag, added new StaffMode global that is set based on the webserver's staff bit 2023-01-27 15:43:12 -08:00
Kay Simmons cf0966d8ea Merge pull request #2090 from zed-industries/workspace-window-position-persistence
Workspace window position persistence
2023-01-27 15:24:01 -08:00
Kay Simmons 05498336cc Merge pull request #2105 from zed-industries/fix-focus-stealing-when-collaborating
Limit focus grabbing in followed pane
2023-01-27 15:23:43 -08:00
Kay Simmons 7aa8466cb9 Add run until parked to test_fs_operations to ensure both update chunks are completed before asserting the changes 2023-01-27 15:07:51 -08:00
Kay Simmons 4c381f8087 removed invalid focus assertion 2023-01-27 13:43:36 -08:00
Antonio Scandurra af06090c45 collab 0.5.4 2023-01-27 11:07:12 +01:00
Antonio Scandurra a31b7ebb27 Merge pull request #2103 from zed-industries/connection-staleness
Fix connection staleness issues
2023-01-27 11:01:24 +01:00
Max Brunsfeld e598324a5b Omit hidden worktrees when showing projects in collaboration UI 2023-01-26 14:47:37 -08:00
Petros AmoiridisandAntonio Scandurra e790849cd2 Refactor Database::remove_contact
Refactor it to avoid sending irrelevant messages to update the UI.

Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2023-01-26 19:01:51 +02:00
Antonio Scandurra 5ce03d76e3 Cancel pending call when participant leaves room after a reconnection
Previously, if a user temporarily disconnected while there was a pending
call, we would fail to cancel such pending call when the caller left the
room. This was due to the caller reconnecting and having a different connection
id than the one originally used to initiate the call.
2023-01-26 16:44:55 +01:00
Kay Simmons f6d76da812 mostly working now 2023-01-25 11:36:38 -08:00
Kay Simmons 56396af37b wip 2023-01-25 11:32:19 -08:00
Petros AmoiridisandAntonio Scandurra 0989cd5d10 Test removing a contact
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2023-01-25 17:31:42 +02:00
Petros AmoiridisandAntonio Scandurra a9d8833ed3 Push responder and requester to remove_contacts
When we ask the server to remove a contact we need to push the requester and responder ids to `remove_contacts` so that when the UI updates, the correct contacts will disappear from the list.

Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2023-01-25 13:10:29 +02:00
Mikayla Maki fc7532d74d Added complete scripts for generating third party license files 2023-01-23 12:47:12 -08:00
Max Brunsfeld 2d2a21d2a8 Add confirm_quit setting 2023-01-20 13:02:38 -08:00
Antonio Scandurra 89ccd53f33 Merge branch 'main' into optimize-large-multi-buffers 2023-01-19 16:18:21 +01:00
Max Brunsfeld d7ecc78a26 Merge pull request #2045 from zed-industries/fewer-unsaved-prompts
Avoid prompting to save when closing an untitled buffer that is still open elsewhere
2023-01-18 15:10:19 -08:00
Mikayla Maki f2791e2713 collab 0.5.3 2023-01-18 12:52:58 -08:00
Antonio Scandurra 06e86cbc3f Fix compile errors 2023-01-18 13:58:01 +01:00
Max Brunsfeld cd50f04dee Make workspace items expose their underlying models, remove file-related methods 2023-01-17 17:21:06 -08:00
Joseph T. Lyons af2da0f2f3 Add users to mailing list when using an invite link 2023-01-17 16:46:01 -05:00
Antonio Scandurra 3610b5a9f0 Fix assertions 2023-01-17 18:09:45 +01:00
Antonio Scandurra eea91cb8bb Verify saved_version, saved_version_fingerprint and saved_mtime 2023-01-17 16:46:06 +01:00
Antonio Scandurra f0e5ce7b2c Ensure Buffer::{is_dirty,has_conflict} converge in randomized test 2023-01-17 16:32:51 +01:00
Max Brunsfeld 6e552d1948 collab 0.5.2 2023-01-11 14:00:44 -08:00
Max Brunsfeld b7385151a7 collab 0.5.1 2023-01-11 13:25:28 -08:00