Joseph T Lyons
383334633f
Fix duplicate key error that occurs when a user joins that is already in the db
...
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2022-10-25 16:09:36 -04:00
Max Brunsfeld
c96c8fd782
collab 0.2.0
2022-10-24 17:06:54 -07:00
Max Brunsfeld
c80395fc18
Merge branch 'main' into auto-deploy-collab
2022-10-24 12:01:32 -07:00
Antonio Scandurra
484c8f7cbe
Provide LiveKit environment variables on Kubernetes
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-10-24 17:03:18 +02:00
Antonio Scandurra
50c4783333
Add test for screen-sharing
2022-10-24 15:17:25 +02:00
Antonio Scandurra
9860dbbbea
Set location on ActiveCall
even before there's a room
...
We will automatically call `Room::set_location` once a room has been
assigned.
2022-10-24 15:07:25 +02:00
Antonio Scandurra
a8bd234aa4
Simplify room events
2022-10-24 10:53:44 +02:00
Antonio Scandurra
476020ae84
Show shared screen as a pane item
2022-10-24 10:04:08 +02:00
Max Brunsfeld
2f1ddc0d0f
Improve deploy scripts
2022-10-21 15:50:14 -07:00
Max Brunsfeld
cedc0f64d5
Run migrations via a collab subcommand
2022-10-21 14:28:55 -07:00
Max Brunsfeld
9952f08cce
Publish collab docker images on CI, deploy pre-built images
2022-10-21 14:24:43 -07:00
Antonio Scandurra
7e411ae098
Merge branch 'main' into screen-sharing
...
# Conflicts:
# crates/collab/src/integration_tests.rs
# crates/collab/src/main.rs
# styles/src/styleTree/workspace.ts
2022-10-21 14:29:45 +02:00
Antonio Scandurra
1bbb7dd126
Leave Zed room when LiveKit room disconnects
2022-10-21 14:21:45 +02:00
Nathan Sobo
9858906463
Return an optional response when creating users via invites
...
If the user already exists, we return none. This will allow the web frontend
to avoid reporting a "join alpha" user event but also not error.
Co-Authored-By: Max Brunsfeld <max@zed.dev>
Co-Authored-By: Joseph Lyons <joseph@zed.dev>
2022-10-20 10:52:34 -06:00
Antonio Scandurra
5dc82d3df8
Delete all live-kit rooms when server is shut down
2022-10-20 14:34:05 +02:00
Nathan Sobo
69472f7823
Ensure we can send a second frame
2022-10-19 19:21:09 -06:00
Nathan Sobo
723fa83909
Use fake LiveKit server to test we can send frames when screen sharing
2022-10-19 19:14:55 -06:00
Max Brunsfeld
83e4e26989
Allow setting ZED_SERVER_URL to URL of a collab server
2022-10-19 13:27:14 -07:00
Antonio Scandurra
b6e5aa3bb0
Use live_kit_client::TestServer
in integration tests
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-10-19 16:35:34 +02:00
Antonio Scandurra
219793afcc
Merge remote-tracking branch 'origin/main' into screen-sharing
2022-10-19 10:04:56 +02:00
Max Brunsfeld
c410935c9c
Allow impersonating users via the api token, bypassing oauth
2022-10-18 17:36:54 -07:00
Max Brunsfeld
5e57a33df7
Store entire Config struct on collab AppState
2022-10-18 13:58:03 -07:00
Max Brunsfeld
38bdf7ad92
Remove unused env vars from collab k8s manifest
2022-10-18 13:58:03 -07:00
Antonio Scandurra
6c322dc835
Clear out incoming call when removing last connection for a user
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-10-18 19:15:14 +02:00
Antonio Scandurra
0c0e8688ed
Use PeerId
in TestServer::disconnect_client
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-10-18 19:05:37 +02:00
Antonio Scandurra
6146923dbb
WIP: Start on test to ensure incoming calls cancel upon recipient disconnection
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-10-18 18:45:50 +02:00
Antonio Scandurra
2c4f003897
Tell clients their peer id on connection in Hello message
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-10-18 18:42:55 +02:00
Antonio Scandurra
0491747eed
Only leave room on connections that are associated with the active call
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-10-18 17:42:10 +02:00
Antonio Scandurra
48a1dd1588
Delete room when no participants are left
2022-10-18 14:59:12 +02:00
Mikayla Maki
5bb2edca8b
Added absolute path info to remote worktrees (updated protocol version)
2022-10-17 15:27:46 -07:00
Mikayla Maki
1789dfb8b1
Fixed tests
2022-10-17 14:53:52 -07:00
Antonio Scandurra
499b8f5f55
WIP
2022-10-17 18:00:54 +02:00
Antonio Scandurra
81d83841ab
WIP: Start integrating screen-sharing
2022-10-17 14:50:05 +02:00
Antonio Scandurra
cce00526b9
Remove participants from live-kit rooms when they leave zed rooms
2022-10-17 14:03:44 +02:00
Antonio Scandurra
c9225bb87c
WIP: Start integrating with LiveKit when creating/joining rooms
2022-10-17 12:20:55 +02:00
Max Brunsfeld
b541ac313c
Revert unnecessary logic for fetching invites' platform_unknown flag
2022-10-14 16:13:38 -07:00
Max Brunsfeld
3a4e802093
Include waitlist entries w/ unknown platform when summarizing and sending invites
2022-10-14 15:20:23 -07:00
Max Brunsfeld
2d3d07d4d7
Clear project's shared state upon every disconnection
...
Co-authored-by: Nathan Sobo <nathan@zed.dev>
Co-authored-by: Antonio Scandurra <as-cii@zed.dev>
2022-10-14 10:17:59 -07:00
Antonio Scandurra
b8bc5a282e
Allow inviting users to a project that was shared by someone else
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2022-10-13 18:48:14 +02:00
Antonio Scandurra
a5a60eb854
Log view name alongside error in ChildView
2022-10-13 15:44:01 +02:00
Max Brunsfeld
6cdf4e98fc
Re-export basic text types from text and language crates
...
Also avoid production dependencies on fs and rope in collab
2022-10-12 15:48:19 -07:00
Max Brunsfeld
69dcfbb423
Send guests DiskBasedDiagnosticsFinished messages when they join a project
...
Co-authored-by: Antonio Scandurra <antonio@zed.dev>
2022-10-12 13:49:09 -07:00
Max Brunsfeld
3c3671a193
Avoid sending stale diagnostics after sharing a worktree
...
Co-authored-by: Antonio Scandurra <antonio@zed.dev>
2022-10-12 11:33:19 -07:00
Antonio Scandurra
ec19f0f8e9
Remove unnecessary async from Peer::add_connection
2022-10-12 15:32:39 +02:00
Antonio Scandurra
9adbab5d99
Fix opening a buffer after leaving and joining the same project
...
This bug existed prior to #1700 and was caused by not clearing the
buffers that were already shared with a peer that left and opened
a project using the same connection. When such peer would re-join
the project and open a buffer that it had opened previously, the
host assumed the peer had already seen that buffer and wouldn't bother
sending it again.
2022-10-12 10:31:06 +02:00
Mikayla Maki
41590ef64b
Merge branch 'main' into test-branch
2022-10-11 19:55:32 -07:00
Kay Simmons
81a3a22379
Merge pull request #1685 from zed-industries/vim-text-objects
...
Vim Text Objects and Numeric Repitions
2022-10-11 16:36:19 -07:00
Mikayla Maki
0beb97547e
Finished refactoring out fs and rope
2022-10-11 15:25:54 -07:00
Max Brunsfeld
0e695eaae8
Wait for project sharing to complete in LSP status integration test
2022-10-11 12:15:54 -07:00
Antonio Scandurra
ee2587d3e5
Fix integration tests
2022-10-11 17:09:54 +02:00
Antonio Scandurra
4504b36c8f
Show a different message when participant is active on unshared project
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-10-11 15:24:31 +02:00
Antonio Scandurra
8e7f96cebc
Update contacts when automatically canceling calls
2022-10-11 11:55:15 +02:00
Antonio Scandurra
1d4bdfc4a1
Cancel calls automatically when caller hangs up or disconnects
2022-10-11 11:28:27 +02:00
Antonio Scandurra
bf488f2027
Show project root names when displaying incoming call notification
2022-10-11 10:59:36 +02:00
Nathan Sobo
b8c2acf0f2
Show worktree root names when sharing additional projects on a call
...
Co-Authored-By: Antonio Scandurra <antonio@zed.dev>
2022-10-10 17:56:03 -06:00
Antonio Scandurra
d9d99e5e04
Fix seed script
2022-10-10 16:05:22 +02:00
Antonio Scandurra
afaacba41f
Merge remote-tracking branch 'origin/main' into room
2022-10-10 15:43:38 +02:00
K Simmons
515c1ea123
Fixed some neovim test context issues, added repeated commands in vim mode, and ported some tests to use the neovim testing strategy
2022-10-08 21:52:07 -07:00
Antonio Scandurra
f9fb3f78b2
WIP: Render active call in contacts popover
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-10-07 17:01:48 +02:00
Antonio Scandurra
6fb5901d69
Ensure sharing the same project twice is idempotent
2022-10-07 14:47:06 +02:00
Antonio Scandurra
386de03f46
Fix room disconnection problems when creating room and sharing project
2022-10-07 14:39:11 +02:00
Antonio Scandurra
d7cea646fc
Include a busy
field in proto::Contact
2022-10-07 12:21:56 +02:00
Antonio Scandurra
669406d5af
Leave room when client is the only participant
2022-10-07 11:58:49 +02:00
Antonio Scandurra
b479c8c8ba
Move project sharing into Room
2022-10-07 10:14:17 +02:00
Antonio Scandurra
3d467a9491
Unset room on active call when disconnecting
2022-10-07 09:23:25 +02:00
Julia
d67fad8dca
Extend a test to cover repos not at worktree root
2022-10-06 22:20:10 -04:00
Antonio Scandurra
95e08edbb8
Always include room id in protos
...
This is redundant, but it futures-proof the ability to talk about
multiple rooms at any given time and feels safer in terms of race
conditions.
2022-10-06 15:20:49 +02:00
Antonio Scandurra
4cb306fbf3
Implement call cancellation
2022-10-06 15:12:27 +02:00
Antonio Scandurra
2e84fc6737
Delete rooms without pending users or participants
2022-10-06 14:20:40 +02:00
Antonio Scandurra
55cc142319
Move incoming calls into ActiveCall
2022-10-06 09:50:26 +02:00
Antonio Scandurra
fa31c9659b
Check room invariants in Store::check_invariants
2022-10-05 16:29:22 +02:00
Antonio Scandurra
5ef342f8c4
Enhance integration test to verify creating rooms while busy
2022-10-05 16:20:01 +02:00
Antonio Scandurra
5b811e4304
Add integration test verifying calls to busy users
2022-10-05 16:14:40 +02:00
Julia
836b536a90
Merge pull request #1632 from zed-industries/git-gutter
...
Tracking PR: Git gutter
2022-10-04 15:12:28 -04:00
Antonio Scandurra
fceba6814f
Automatically share project when creating the room
...
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2022-10-04 19:25:48 +02:00
Antonio Scandurra
41240351d3
Simplify Collaborator
to stop including the user
...
It can be retrieved from the `Room` and we're guaranteed to have
a room in order to have collaborators in a project.
2022-10-04 18:00:54 +02:00
Antonio Scandurra
456dde200c
Implement Room::set_location
2022-10-04 11:46:01 +02:00
Julia
e6487de069
Rename head text to indicate that it's not always going to be from head
...
Co-Authored-By: Mikayla Maki <mikayla@zed.dev>
2022-10-03 15:11:06 -04:00
Julia
a5c2f22bf7
Move git gutter settings out of editor settings
...
Co-Authored-By: Mikayla Maki <mikayla@zed.dev>
2022-10-03 14:53:33 -04:00
Max Brunsfeld
4477f95ee6
Set staff
user property in telemetry
...
Co-authored-by: Joseph Lyons <joseph@zed.dev>
2022-10-03 10:52:57 -07:00
Antonio Scandurra
1e45198b9f
Emit event on Room
when a user shares a new project
2022-10-03 17:12:07 +02:00
Antonio Scandurra
ad323d6e3b
Automatically fetch remote participant users in Room
2022-10-03 16:09:49 +02:00
Antonio Scandurra
da6106db8e
Prevent calls from users who aren't contacts
2022-10-03 15:54:20 +02:00
Antonio Scandurra
bec6b41448
Fix randomized integration test failure
2022-10-03 15:50:47 +02:00
Antonio Scandurra
6426037653
Adapt integration tests to always pass a room id to Project::share
...
Randomized test is failing, so we'll look into that next.
2022-10-03 15:44:11 +02:00
Mikayla Maki
0f1d71c38f
Merge branch 'main' into git-gutter
2022-10-02 18:03:50 -07:00
Mikayla Maki
56b4162023
Fix stray merge failure
2022-10-02 18:02:25 -07:00
Mikayla Maki
52dbf2f9b8
add proto stuff
2022-10-02 18:01:37 -07:00
Mikayla Maki
512f817e2f
Added proto messages for updating the head text
2022-10-01 18:18:35 -07:00
Mikayla Maki
a1299d9b68
Fixed 1 test
2022-09-30 17:34:14 -07:00
Mikayla Maki
af0974264c
Refactored git repository code to seperate out repository entry tracking data and git2 mocking code.
...
Co-authored-by: Max <max@zed.dev>
Co-authored-by: Julia <julia@zed.dev>
2022-09-30 17:33:34 -07:00
Julia
c95646a298
WIP Start refactoring separation of concerns for repo metadata
...
Co-Authored-By: Max Brunsfeld <max@zed.dev>
Co-Authored-By: Mikayla Maki <mikayla@zed.dev>
2022-09-30 18:25:25 -04:00
Julia
ce7f6dd082
Start a test for remote git data updating
...
Co-Authored-By: Mikayla Maki <mikayla@zed.dev>
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2022-09-30 15:51:32 -04:00
Antonio Scandurra
964a5d2db7
WIP: require sharing projects on a given Room
2022-09-30 18:21:47 +02:00
Antonio Scandurra
074b8f18d1
Rip out project registration and use sharing/unsharing instead
2022-09-30 12:23:57 +02:00
Antonio Scandurra
be8990ea78
Remove project join requests
2022-09-30 11:35:50 +02:00
Max Brunsfeld
5d09083a7d
Identify users in amplitude via a separate 'metrics_id' UUID
2022-09-29 13:15:21 -07:00
Antonio Scandurra
b35e8f0164
Remove projects from contact updates
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-09-29 19:40:36 +02:00
Antonio Scandurra
e0db62173a
Rename room
crate to call
...
Also, rename `client::Call` to `client::IncomingCall`.
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-09-29 17:24:31 +02:00
Nathan Sobo
8ff4f044b7
Start a call when clicking on a contact in the contacts popover
...
Co-Authored-By: Antonio Scandurra <antonio@zed.dev>
2022-09-28 11:02:26 -06:00
Antonio Scandurra
1d1bd3975a
Remove current user from contacts
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Co-Authored-By: Mikayla Maki <mikayla@zed.dev>
2022-09-28 11:33:38 +02:00
Antonio Scandurra
80ab144bf3
Ring users upon connection if somebody was calling them before connecting
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-09-28 11:33:38 +02:00
Antonio Scandurra
6aa0f0b200
Leave room automatically on disconnection
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-09-28 11:33:38 +02:00
Antonio Scandurra
f0c45cbceb
Remove projects from basic calls test for now
2022-09-28 11:33:38 +02:00
Antonio Scandurra
e55e7e4844
Leave room when Room
entity is dropped
2022-09-28 11:33:38 +02:00
Antonio Scandurra
573086eed2
Always rely on the server to cancel the incoming call
2022-09-28 11:33:38 +02:00
Antonio Scandurra
df285def59
💄
2022-09-28 11:33:38 +02:00
Antonio Scandurra
bb9ce86a29
Introduce the ability of declining calls
2022-09-28 11:33:38 +02:00
Antonio Scandurra
f4697ff4d1
Prevent the same user from being called more than once
2022-09-28 11:33:38 +02:00
Antonio Scandurra
55b095cbd3
Implement joining a room and sending updates after people join/leave
2022-09-28 11:33:38 +02:00
Antonio Scandurra
4a9bf8f4fe
Introduce call infrastructure
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-09-28 11:33:38 +02:00
Antonio Scandurra
ebb5ffcedc
Introduce the ability of creating rooms on the server
2022-09-28 11:33:38 +02:00
Antonio Scandurra
0b1e372d11
Start sketching out an integration test for calls
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-09-28 11:33:38 +02:00
Antonio Scandurra
8fec7da799
WIP
2022-09-28 11:33:38 +02:00
Max Brunsfeld
f2ebb094a2
Remove unnecessary index drop in down migration
2022-09-27 16:58:03 -07:00
Max Brunsfeld
1db75ca2cf
Make device_id optional on signups table
...
This way, signup won't fail if for some reason, the
user's client-side JS doesn't provide an amplitude
device id.
Co-authored-by: Joseph Lyons <joseph@zed.dev>
2022-09-27 16:04:01 -07:00
Max Brunsfeld
5d0b6a3da7
Merge branch 'main' into new-signup-flow
2022-09-27 15:35:05 -07:00
Max Brunsfeld
4784dbe498
Link signups to users in telemetry via a stored device_id
...
Co-authored-by: Joseph Lyons <joseph@zed.dev>
2022-09-26 12:49:04 -07:00
Max Brunsfeld
04baccbea6
Start work on a client-side telemetry system
2022-09-23 12:23:12 -07:00
Julia
f3395cf4fd
Add editor action to manually invoke buffer format
2022-09-22 18:21:05 -04:00
Max Brunsfeld
dac0ce10e5
Return the metrics id from the signup-creation API
...
Co-authored-by: Nathan Sobo <nathan@zed.dev>
2022-09-22 14:37:25 -07:00
Max Brunsfeld
7a049f1404
Fix error when loading users without github user ids from the db
2022-09-21 14:27:06 -07:00
Max Brunsfeld
20ec933e23
Proceed gracefully when someone signs up repeatedly
2022-09-21 14:27:06 -07:00
Max Brunsfeld
758875305b
Add on delete cascade to signups user_id column
2022-09-20 16:12:27 -07:00
Max Brunsfeld
1877fc234b
Update user retrieval API to take both github user id and github login
2022-09-20 15:41:00 -07:00
Max Brunsfeld
9886259b3a
Start storing users' github user id
2022-09-20 09:44:56 -07:00
Max Brunsfeld
e77263a3c7
Remove bulk user creation admin API
2022-09-19 14:34:37 -07:00
Max Brunsfeld
963ced1dd8
Preserve metrics_id from signup to user record
2022-09-19 14:19:00 -07:00
Max Brunsfeld
3dd8845bd8
Add waitlist summary API
2022-09-19 14:19:00 -07:00
Max Brunsfeld
f8c7c925af
Update APIs and DB interactions to reflect email confirmation step
2022-09-19 14:19:00 -07:00
Max Brunsfeld
d85ecc8302
Add collab APIs for new signup flow
...
Co-authored-by: Nathan Sobo <nathan@zed.dev>
2022-09-19 14:19:00 -07:00
K Simmons
b88abcacac
WIP dock split button and default item
2022-09-11 15:31:44 -07:00
Antonio Scandurra
9c9bf07e40
Create buffers for remote collaborators out of band
...
Previously, we would use `Project::serialize_buffer_for_peer` and
`Project::deserialize_buffer` respectively in the host and in the
guest to create a new buffer or just send its ID if the host thought
the buffer had already been sent.
These methods would be called as part of other methods, such as
`Project::open_buffer_by_id` or `Project::open_buffer_for_symbol`.
However, if any of the tasks driving the futures that eventually
called `Project::deserialize_buffer` were dropped after the host
responded with the buffer state but (crucially) before the guest
deserialized it and registered it, there could be a situation where
the host thought the guest had the buffer (thus sending them just the
buffer id) and the guest would wait indefinitely.
Given how crucial this interaction is, this commit switches to creating
remote buffers for peers out of band. The host will push buffers to guests,
who will always refer to buffers via IDs and wait for the host to send them,
as opposed to including the buffer's payload as part of some other operation.
2022-08-17 11:55:36 +02:00
Antonio Scandurra
75c9b90c76
Add failing unit test for buffer opening cancellation
2022-08-17 11:55:34 +02:00
Max Brunsfeld
51b98d548b
Ensure a deterministic order to project activity summaries
2022-08-15 15:23:12 -07:00
Max Brunsfeld
776095caf0
Add bootstrap script, avoid hard-coding zed team members
2022-08-15 13:25:31 -07:00
K Simmons
9aa3f2d777
clippy fixes for focus change
2022-08-10 16:51:01 -07:00
ForLoveOfCats
8ba2f77148
One big cleanup pass of clippy lints
...
Co-authored-by: Mikayla <mikayla@zed.dev>
2022-08-10 16:51:01 -07:00
Keith Simmons
ec015d4607
Merge pull request #1422 from zed-industries/workspace-child-focus-pane-activation
...
Add on_child_focus and on_child_blur to View trait
2022-08-10 16:42:01 -07:00
K Simmons
d68f227ec4
Fix failing tests
2022-08-10 16:26:53 -07:00
Mikayla Maki
ee0e6a0109
Added env toml so readme db instructions are correct
2022-08-10 15:07:02 -07:00
K Simmons
4271eb3624
Event dispatch moved to MutableAppContext. No longer dispatches from presenter. Not currently handling key presses properly
2022-08-09 17:09:16 -07:00
Max Brunsfeld
7527850546
Handle RPC requests for type definitions on server and host
2022-08-04 15:10:46 -07:00
Antonio Scandurra
bc8bec8261
Assign 5 invites to users who redeem an invite code
2022-08-01 14:58:28 +02:00
Max Brunsfeld
fa5af4383d
Introduce AutoindentMode parameter to Buffer::edit
...
This controls whether or not we preserve the relative indentation
of inserted text blocks.
Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>
2022-07-28 14:03:31 -07:00
Antonio Scandurra
8552ba15dc
Show symbols located in visible paths before ones located externally
2022-07-26 14:48:18 +02:00
Max Brunsfeld
f985515141
Start work on new text input handling in Editor
2022-07-20 16:45:27 -07:00
Antonio Scandurra
316a534a16
Allow querying active user counts for people that have collaborated
2022-07-18 10:29:10 +02:00
Antonio Scandurra
2cbb0ae843
Expose max number of project collaborators in Db::get_top_user_activity
2022-07-18 08:58:09 +02:00
Max Brunsfeld
69146fb318
Allow the web client to specify activity bucket durations
2022-07-15 16:46:44 -07:00
Max Brunsfeld
1363d2c502
Add admin API for counting users with a given amount of activity
2022-07-15 16:46:44 -07:00
Max Brunsfeld
ec8a493700
Move all default settings from source code into the JSON file
2022-07-12 11:35:19 -07:00
Antonio Scandurra
afc8e9050c
Merge pull request #1252 from zed-industries/plugin
...
Language Server WebAssembly Plugin Integration (Part 2)
2022-07-12 11:04:20 +02:00
Antonio Scandurra
b1e3b38cb3
Don't prompt guest to save when closing window after disconnection
2022-07-12 09:05:39 +02:00
Isaac Clayton
ec327a30c3
Fix minor issues pointed out in the review
2022-07-11 15:54:03 +02:00
Isaac Clayton
895747476f
Done! Finish transition to async, very close to merging
2022-07-07 16:21:20 +02:00
Isaac Clayton
6585daccf9
Further unpropogate async
2022-07-07 16:16:58 +02:00
Antonio Scandurra
52b8efca1b
Add integration test to exercise formatting via external command
2022-07-07 11:53:32 +02:00
Antonio Scandurra
f1ffcb626a
Fix panics in database tests
2022-07-05 17:59:40 +02:00
Antonio Scandurra
eac76df0ac
Transmit new line ending when buffer is reloaded
2022-07-05 08:01:14 +02:00
Max Brunsfeld
9804c683c0
Rename NewlineStyle -> LineEnding
2022-07-04 12:47:40 -07:00
Antonio Scandurra
3480b50920
Detect buffer newline style and honor it when saving
2022-07-04 17:40:26 +02:00
Antonio Scandurra
d3b9eca791
Merge branch 'main' into user-timeline
2022-07-04 09:23:16 +02:00
Antonio Scandurra
4d3c708387
Add simulate_random_delay
to every implemented method in FakeDb
2022-07-01 12:05:29 +02:00
Antonio Scandurra
d36a4888db
Ensure worktrees have been sent before responding with definitions
...
Changing the frequency at which we update worktrees highlighted a
problem in the randomized tests that was causing clients to receive
a definition to a worktree *before* observing the registration of
the worktree itself. This was most likely caused by #1224 because
the scenario that pull request enabled was the following:
- Guest requests a definition pointing to a non-existant worktree
- Server forwards the request to the host
- Host sends an `UpdateProject` message
- Host sends a response to the definition request
- Server observes the `UpdateProject` message and tries to acquire
the store
- Given that we're waiting, the server goes ahead to process the
response for the definition request, responding *before*
`UpdateProject` is forwarded
- Server finally forwards `UpdateProject` to the guest
This commit ensures that, after forwarding a project request and getting a
response, we acquire a lock to the store again to ensure the project still
exists. This has the effect of ordering the forwarded request *after* any
message that was received prior to the response and for which we are still
waiting to acquire a lock to the store.
2022-07-01 11:45:30 +02:00
Max Brunsfeld
c5351a1276
Ensure that usernames, user ids, and client ids match in random collaboration test
...
This makes the logs easier to interpret
2022-06-30 14:51:22 -07:00
Antonio Scandurra
484af8c7c4
Split worktree updates when a peer joins an already-shared project
2022-06-30 16:49:56 +02:00
Antonio Scandurra
09bb3ddeb8
Split worktree updates and only send 256 entries at a time
2022-06-30 14:06:41 +02:00
Antonio Scandurra
5eaa45363d
Order by total duration in Db::get_top_users_activity_summary
...
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2022-06-29 18:28:43 +02:00
Antonio Scandurra
639cd71a3b
Record worktree extensions every 5 minutes
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-06-29 16:58:19 +02:00
Antonio Scandurra
09f4262fd4
Don't share a project unless it's online and we're allowing a request
2022-06-29 15:16:55 +02:00
Antonio Scandurra
e3cfc7b3ce
Register project activity for offline projects as well
2022-06-29 14:55:04 +02:00
Antonio Scandurra
a52de770b1
Increase coalesce threshold in Db::get_user_activity_timeline
2022-06-29 14:26:02 +02:00
Max Brunsfeld
14d7375149
Add rest API for user activity timeline
2022-06-28 15:40:48 -07:00
Max Brunsfeld
1d10e45282
🎨 Tweak some names dealing with user activity
...
* Rename `project_activity_summary` to `top_users_activity_summary`
to make clearer the distinction between it and the per-user summary.
* Rename `user_activity_summary` to `user_activity_timeline`, since
its output is structured a bit differently than the courser-grained
"summary" returned by the top-user query.
* Rename `ActivityDuration` -> `ActivityPeriod`
2022-06-28 15:37:56 -07:00
Antonio Scandurra
5cc5e15f4d
Implement Db::summarize_user_activity
...
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2022-06-28 15:11:34 -07:00
Antonio Scandurra
ca1d0a6e59
Ignore tokens that were not created via WorkDoneProgressCreate
...
With the new version of rust-analyzer, we were seeing stray `WorkDoneProgress::End`
messages that create an imbalance in the `pending_diagnostic_updates` that never
resolves. This was causing the diagnostic status bar item to never update because
we wouldn't emit `DiskBasedDiagnosticsStarted` nor `DiskBasedDiagnosticsFinished`.
This commit fixes the above situation by only acknowledging progress report for tokens
that have explicitly been created via the `WorkDoneProgressCreate` request, as stated
by the protocol.
In addition to that, we are replacing the `pending_diagnostic_updates: isize` with
a `has_pending_diagnostic_updates: bool`. We added it at some point to prevent a similar
issue where we would observe begin/end reports in a seemingly random order, which would cause
us to permanently display a `checking...` message in the status bar. I believe this commit
fixes that as well because the `isize` was just a less general solution for the same
underlying issue. As the protocol states: "the token provided in the create request should
only be used once (e.g. only one begin, many report and one end notification should be sent
to it)."
2022-06-28 10:08:43 +02:00
Keith Simmons
bc82d98ae5
Merge pull request #1237 from zed-industries/jump-to-definition
...
Mouse jump to definition
2022-06-27 15:20:07 -07:00
Keith Simmons
848445455d
Working underline based on symbol origin
2022-06-24 15:05:35 -07:00
Nathan Sobo
4da3005b5c
Allow users with no invites to be fetched from the API
2022-06-24 09:57:52 -06:00
Antonio Scandurra
b0eb692760
WIP
2022-06-24 17:21:58 +02:00
Antonio Scandurra
fc5517b6be
Gather metrics only when /metrics
endpoint is retrieved
2022-06-24 09:28:52 +02:00
Antonio Scandurra
a04adbcac1
Don't trace message payload
2022-06-24 09:27:22 +02:00
Antonio Scandurra
555847449b
Use BTreeMap
in Server
so we release memory when maps are cleared
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-06-23 18:02:17 +02:00
Antonio Scandurra
f2d134917e
Remove non-determinism from Peer
caused by smol's timeout
helper
2022-06-22 18:39:12 +02:00
Antonio Scandurra
071d940a88
Ensure receive timeout is triggered before waiting on disconnection
2022-06-22 18:02:42 +02:00
Antonio Scandurra
9b521d6097
Use Arc<Deterministic>
to understand which await points are parking
2022-06-22 17:39:34 +02:00
Antonio Scandurra
62521531a6
💄
2022-06-22 15:06:22 +02:00
Antonio Scandurra
fb2590d913
Use a FuturesUnordered
to process foreground messages
...
This prevents deadlocks when e.g., client A performs a request to client B and
client B performs a request to client A. If both clients stop processing further
messages until their respective request completes, they won't have a chance to
respond to the other client's request and cause a deadlock.
This arrangement ensures we will attempt to process earlier messages first, but fall
back to processing messages arrived later in the spirit of making progress.
2022-06-22 15:04:17 +02:00
Antonio Scandurra
6eb3e72c36
Add test demonstrating hang when peers wait on each other's response
2022-06-22 14:41:14 +02:00
Antonio Scandurra
69aa3d848e
Report running language servers when sharing project for the first time
...
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2022-06-21 20:39:54 +02:00
Max Brunsfeld
e9d19457d6
Add failing test for replication of lsp statuses
...
Co-authored-by: Antonio Scandurra <me@as-cii.com>
2022-06-21 11:27:08 -07:00
Max Brunsfeld
30d75620f1
Fix error when worktree has no file extensions
...
Co-authored-by: Antonio Scandurra <me@as-cii.com>
2022-06-21 11:02:13 -07:00
Antonio Scandurra
db77601aa2
Expose project metadata via GET /project_metadata
2022-06-21 18:06:31 +02:00
Antonio Scandurra
ebaf3224fd
Exclude staff from activity recording
2022-06-21 16:07:59 +02:00
Antonio Scandurra
c90e8c08a6
Accept a datetime range when querying project activity
2022-06-21 14:03:10 +02:00
Antonio Scandurra
95a629d200
Unregister project from db when user disconnects or manually does so
2022-06-21 10:37:34 +02:00
Antonio Scandurra
7acebc4eb8
Register projects in the database and record worktree extensions
2022-06-21 10:29:26 +02:00
Max Brunsfeld
44160869eb
Add an API that returns the most active users and the projects where they've been active
2022-06-20 19:46:37 -07:00
Antonio Scandurra
6f7a893ec9
Determine Buffer::is_dirty
based on the rope's fingerprint
2022-06-17 12:38:25 +02:00
Antonio Scandurra
197a4342d0
Fix tests
2022-06-15 11:16:26 +02:00
Antonio Scandurra
a85f9e74b1
Harvest the latest metrics when /metrics
is requested
...
Now that we track active projects, if nothing happens to the store
during the activity timeout we would still serve some old metrics
that may not account for the staleness of a project.
This commit changes it so that we grab a mutable reference to the store
before serving the metrics, which has the side effect of updating
all the metrics.
2022-06-15 10:54:51 +02:00
Antonio Scandurra
e373e05d27
🎨
2022-06-15 10:42:37 +02:00
Antonio Scandurra
3a1d0dd692
Track active projects in metrics
...
An active project is defined as a project where there has been at
least a buffer edit, a join request/response, or a follow update
in the last minute.
2022-06-15 10:33:20 +02:00
Antonio Scandurra
6d93a41f40
Exclude admins from collected metrics
2022-06-14 16:26:00 +02:00
Antonio Scandurra
68093342e7
Broadcast only visible worktree root names
2022-06-14 15:15:23 +02:00
Antonio Scandurra
76da93d260
Merge branch 'main' into users-api
2022-06-14 11:14:16 +02:00
Antonio Scandurra
49d7b4bc12
Allow specifying query
, limit
and page
when hitting /api/users
...
This is needed to introduce pagination and search in our admin panel.
2022-06-13 17:30:01 +02:00
Antonio Scandurra
fe1a861bf3
Expose a new POST /api/bulk_users
API to create many users at once
...
This API will accept a vector of JSON entries containing the GitHub login,
the email address and the invite count. If that user already exist, the
invite count will be updated to the new one.
2022-06-13 15:18:18 +02:00
Antonio Scandurra
b1e8e81513
Merge pull request #1172 from zed-industries/more-logs
...
Add more logging to `collab` to better understand user behavior
2022-06-13 09:22:37 +02:00
Antonio Scandurra
502625c570
Exclude ignored files from the logged extension count
2022-06-13 09:16:16 +02:00
Antonio Scandurra
dcdc6311df
Don't retain message payloads in span, just log the payload instead
2022-06-13 09:06:58 +02:00
Antonio Scandurra
3b8388dcdd
Log extension counts when worktree is updated
2022-06-13 08:57:21 +02:00
Max Brunsfeld
e2935100db
Move prometheus annotations from deployment to pod spec
2022-06-10 14:32:36 -07:00
Max Brunsfeld
2311534c3c
Add DataDog OpenMetrics annotations to collab k8s deployment
...
Co-authored-by: Antonio Scandurra <me@as-cii.com>
2022-06-10 13:35:52 -07:00
Max Brunsfeld
2e6fa889ea
Add OpenMetrics endpoint exposing the basic RPC store metrics as guages
...
Co-authored-by: Antonio Scandurra <me@as-cii.com>
2022-06-10 13:32:56 -07:00
Antonio Scandurra
63fdf1398a
WIP: Start adding more logs
2022-06-10 18:17:02 +02:00
Antonio Scandurra
494a1b332f
Reduce log level on collab
...
This is generating way too much data and doesn't seem very cost-effective
to investigate the issues we've had with the stale contacts panel.
2022-06-08 09:06:13 +02:00
Keith Simmons
1b66e1e185
Add integration test and fix hovering over the wire
2022-06-07 14:22:02 -07:00
Max Brunsfeld
ce080e9520
Update connected users' invite info when they are granted invite codes
2022-06-06 11:14:01 -07:00
Max Brunsfeld
ed14fd6e0d
Add setting to make projects online/offline by default
2022-06-03 17:01:15 -07:00
Max Brunsfeld
24aafde1e8
Avoid persisting project's state before it has been initialized
2022-06-03 16:40:16 -07:00
Max Brunsfeld
e18bc24989
Rename project's 'public'/'private' flag to 'online'/'offline'
2022-06-03 14:39:06 -07:00
Max Brunsfeld
b2aa831017
Store a FakeFs on TestClient
2022-06-03 13:49:47 -07:00
Max Brunsfeld
8bd4a0ab81
Don't store Project on TestClient in integration tests
2022-06-03 13:00:56 -07:00
Max Brunsfeld
db97dcd76f
Don't update contacts when a project is first registered
...
Until the host has sent an UpdateProject message to populate the project's
metadata, there is no reason to update contacts.
2022-06-02 17:41:21 -07:00
Max Brunsfeld
f7e7a7c6a7
Use rocksdb to store project paths' public/private state
2022-06-02 17:38:33 -07:00
Max Brunsfeld
724affc442
Upgrade deps to avoid multiple versions of transitive deps
...
* env_logger
* prost-build
* bindgen
2022-06-02 17:38:33 -07:00
Max Brunsfeld
d11beb3c02
Change project registration RPC APIs to smooth out UI updates
...
* Make `UnregisterProject` a request. This way the client-side project can wait
to clear out its remote id until the request has completed, so that the
contacts panel can avoid showing duplicate private/public projects in the
brief time after unregistering a project, before the next UpdateCollaborators
message is received.
* Remove the `RegisterWorktree` and `UnregisterWorktree` methods and replace
them with a single `UpdateProject` method that idempotently updates the
Project's list of worktrees.
2022-06-02 17:32:43 -07:00
Max Brunsfeld
4d4ec793e2
Remove stray println
2022-06-02 17:32:43 -07:00
Max Brunsfeld
3ea061a11e
Allow making projects private
2022-06-02 17:32:42 -07:00
Max Brunsfeld
8f676e76b3
Fix mismatched client/context in integration test
2022-06-02 17:29:11 -07:00
Max Brunsfeld
7ef9de32b1
Show private projects in the contacts panel
...
Introduce a ProjectStore that lets you iterate through all open projects.
Allow projects to be made public by clicking the lock.
2022-06-02 17:29:11 -07:00
Max Brunsfeld
a60fef52c4
Start work on private projects
2022-06-02 17:29:11 -07:00
Antonio Scandurra
6baf8b033b
Don't reuse the same diagnostic group id across buffers
...
This lets us use the group id as the key for an `ElementState`, which
fixes a panic that would occur in project diagnostics when opening it
while there were multiple diagnostic groups with the same id.
2022-06-02 12:05:28 +02:00
Antonio Scandurra
1ce8682b94
Clear language server and worktree statuses when unsharing on server
2022-05-31 11:22:41 +02:00
Antonio Scandurra
339069b1d3
Cap MessageStream
buffer size to 1MB
...
We temporarily let it grow when the message size exceed the limit,
but restore the buffer's capacity shortly after. This ensures that,
for each connection in its entire lifetime, we only ever use 1MB.
2022-05-31 11:16:32 +02:00
Antonio Scandurra
da46d78ea5
Merge pull request #1081 from zed-industries/project-panel-with-new-mouse-events
...
Introduce context menu to project panel
2022-05-31 10:40:42 +02:00
Antonio Scandurra
354488ebdf
Don't eagerly populate copied subdirectory
...
This can race anyway with snapshot updates, so we just eagerly refresh
the root entry and wait for updates to come in to populate it.
2022-05-31 08:11:07 +02:00
Max Brunsfeld
365cda0fab
Remove opentelemetry tracing subscriber
...
We'll see if this stops the server from leaking memory. We still
have spans in our logs.
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2022-05-30 09:58:25 -07:00
Antonio Scandurra
20e1044d49
Merge branch 'main' into project-panel-with-new-mouse-events
2022-05-30 18:29:46 +02:00
Antonio Scandurra
51adc6517e
WIP: start on an integration test for copy_entry
2022-05-30 14:53:10 +02:00
Antonio Scandurra
3336bc6ab3
Implement copy paste for ProjectPanel
2022-05-30 14:52:34 +02:00
Max Brunsfeld
bc6f8da029
Move integration tests into their own file
2022-05-27 17:20:05 -07:00
Max Brunsfeld
8393ae88b7
Clean up integration tests
...
* Use 'build_local_project' helper to reduce boilerplate
* Peform the setup steps in a consistent order
2022-05-27 17:10:45 -07:00
Max Brunsfeld
b2adff63e7
Merge pull request #1073 from zed-industries/window-menu
...
Add a Window application menu
2022-05-27 11:22:13 -07:00
Max Brunsfeld
23cd948b5f
Adjust test to flush effects between splitting pane and following
...
Panes now emit an event when adding the first item, so we need to flush
effects between splitting and following in order to avoid accidentally
cancelling the follow.
2022-05-27 10:53:14 -07:00
Max Brunsfeld
a1a4c70845
Emit an event when adding a worktree to a project
2022-05-27 10:48:47 -07:00
Keith Simmons
125d83b3ec
Fix failing seed bin build and add bin builds to ci pipeline
2022-05-26 15:41:24 -07:00
Antonio Scandurra
f403d87eff
WIP
2022-05-26 09:59:25 +02:00