Commit log

442ec60 collab 0.17.0

Max Brunsfeld created

4ea8b82 Introduce channels and move collab popover contents to a collaboration panel (#2828)

Click to expand commit body
### 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.

![Screen Shot 2023-08-15 at 9 25 37
AM](https://github.com/zed-industries/zed/assets/326587/0f989dea-7fb7-4d50-9acd-25c8f1c30cd1)


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)

Max Brunsfeld created

925e09e Update collab panel empty state to match project panel

Click to expand commit body
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>

Nate Butler and Max Brunsfeld created

4312738 Update modal icon styles

Click to expand commit body
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>

Nate Butler and Max Brunsfeld created

6c15636 Style cleanup for channels panel

Nate Butler created

1601892 Focus terminal view on mouse click in terminal (#2852)

Click to expand commit body
Before, terminal view focused the parent (pane) instead and, if
terminal's search bar was open and focused, pane transferred the focus
back

Release Notes:

- Fixed terminal search focus not switching to terminal on mouse click
inside

Kirill Bulatov created

80c779b Focus terminal view on mouse click in terminal

Click to expand commit body
Before, terminal view focused the parent (pane) instead and, if
terminal's search bar was open and focused, pane transferred the focus
back

Kirill Bulatov created

139cbbf Move gpui derives tests into gpui crate to avoid dependency cycles (#2851)

Click to expand commit body
`cargo run` on Zed project leads to rust-analyzer evantually emitting

`[ERROR project_model::workspace] cyclic deps:
gpui_macros(Idx::<CrateData>(269)) -> gpui(Idx::<CrateData>(264)),
alternative path: gpui(Idx::<CrateData>(264)) ->
gpui_macros(Idx::<CrateData>(269))`

error after loading the project.

The PR fixes this by moving away the test to the "root" project.

Release Notes:

- N/A

Kirill Bulatov created

1c4be24 Move gpui derives tests into gpui crate to avoid dependency cycles

Click to expand commit body
`cargo run` on Zed project leads to rust-analyzer evantually emitting

`[ERROR project_model::workspace] cyclic deps:
gpui_macros(Idx::<CrateData>(269)) -> gpui(Idx::<CrateData>(264)),
alternative path: gpui(Idx::<CrateData>(264)) ->
gpui_macros(Idx::<CrateData>(269))`

error after loading the project.

The PR fixes this by moving away the test to the "root" project.

Kirill Bulatov created

0524abf Lazily initialize and destroy the audio handle state on call initiation and end

Mikayla created

7062277 Keep collab panel focused after deleting a channel

Max Brunsfeld created

facb942 Add component traits to GPUI (#2850)

Click to expand commit body
Release Notes:

- N/A

Mikayla Maki created

7d3ffae move component into gpui

Mikayla created

a56747a Update assistant status bar icon

Nate Butler created

28649fb Update channel context menu

Nate Butler created

3623a9c Simplify Component implementation

Click to expand commit body
Co-authored-by: Mikayla <mikayla@zed.dev>

Max Brunsfeld and Mikayla created

1ffde7b Implement calling contacts into your current channel

Click to expand commit body
Co-authored-by: Mikayla <mikayla@zed.dev>

Max Brunsfeld and Mikayla created

2670e2c Support `editor::SelectAll` in Terminal (#2848)

Click to expand commit body
![image](https://github.com/zed-industries/zed/assets/2690773/3aae1e6a-9993-4e65-8ed1-20f2f4b452df)

Allows to use `editor::SelectAll`(`cmd-a` by default) in Terminal to
select all text in it, for future copying.
Currently, does not try to be smart and trim the selected whitespaces
after the last prompt, and copies them too.

Release Notes:

- Support `editor::SelectAll` in Terminal

Kirill Bulatov created

88e094c Associate additional file extensions with known languages (#2847)

Click to expand commit body
Going to do these in batches.  Here is the first one.

Release Notes:

- Associated additional file extensions with known languages
(([#633](https://github.com/zed-industries/community/issues/633)),
([#1822](https://github.com/zed-industries/community/issues/1822))).
    - C++: `cxx`, `hxx`, `inl`
    - JavaScript: `cjs`
    - Python: `mpy`
    - TypeScript: `cts`, `d.cts`, `d.mts`, `mts`

Joseph T. Lyons created

de69f08 Support editor::SelectAll in Terminal

Kirill Bulatov created

943aeb8 Run until parked when setting editor's state via EditorTestContext

Click to expand commit body
Co-authored-by: Mikayla <mikayla@zed.dev>

Max Brunsfeld and Mikayla created

d6ca0a1 Associate extensions with language

Joseph T. Lyons created

13cf3ad Update checked icon

Nate Butler created

ddf3642 Avoid flicker when moving between channels

Max Brunsfeld created

46928fa Reword channel-creation tooltips

Max Brunsfeld created

9d60e55 Additional status bar styles

Nate Butler created

d13cedb seperate out channel styles in theme

Mikayla created

d05e885 Add dismiss on escape

Mikayla created

d95b036 Fix cursor style

Click to expand commit body
co-authored-by: Nate <nate@zed.dev>

Mikayla and Nate created

e36dfa0 Add active styling

Mikayla created

9e99b74 Add the channel name into the current call

Mikayla created

fafc10d Merge branch 'main' into collab-panel

Max Brunsfeld created

404b1aa Fix vim selection to include entire range (#2787)

Click to expand commit body
Update vim mode to have vim selection and editor selections match.
Before this we had to adjust between vim selections and real selections
when making changes; now we have to adjust when making selections.

Release Notes:

- vim: Ensure editor selection matches the vim selection
([#1796](https://github.com/zed-industries/community/issues/1796)).
- vim: Fix `s` in visual line mode
- vim: Add `o` and `shift-o` to toggle direction of visual selection
- vim: Fix `v` and `shift-v` to toggle back to normal mode
- vim: Fix block selections like `vi}` to contain correct whitespace

Conrad Irwin created

1e3f468 Fix vim escape in normal mode (#2844)

Click to expand commit body
Fixes: zed-industries/community#1857

- vim: Fix escape in normal mode
([#1857](https://github.com/zed-industries/community/issues/1857)).

Conrad Irwin created

111e17b Merge branch 'main' into collab-panel

Mikayla created

22da42f Add components example (#2846)

Click to expand commit body
This PR is a continuation of the components UI exploration I've been
doing. It adds an example to the GPUI examples page and totally
restructures the generics on our MouseEventHandler.

Release Note:
- N/A

Mikayla Maki created

e5eed29 Add components example

Click to expand commit body
Re-arrange generics on mouse event handler
Add TypeTag struct for dynamically tagged components

Mikayla created

cbf497b Fix race condition when UpdateChannel message is received while fetching participants for previous update

Click to expand commit body
Co-authored-by: Mikayla <mikayla@zed.dev>

Max Brunsfeld and Mikayla created

71454ba Limit number of participants shown in channel face piles

Click to expand commit body
Co-authored-by: Mikayla <mikayla@zed.dev>

Max Brunsfeld and Mikayla created

13982fe Display intended mute status while still connecting to a room

Click to expand commit body
Co-authored-by: Mikayla <mikayla@zed.dev>

Max Brunsfeld and Mikayla created

5af8ee7 Fix clicking outside of modals to dismiss them

Click to expand commit body
Co-authored-by: Mikayla <mikayla@zed.dev>

Max Brunsfeld and Mikayla created

d7f21a9 Ensure channels are sorted alphabetically

Click to expand commit body
Co-authored-by: Mikayla <mikayla@zed.dev>

Max Brunsfeld and Mikayla created

1af7425 Fix vim escape in normal mode

Click to expand commit body
Fixes: zed-industries/community#1857

Conrad Irwin created

fb90ead Merge branch 'main' into vim-visual-selection

Conrad Irwin created

ef73e77 Update some status bar icons and states

Nate Butler created

5b37cdc Better tests

Conrad Irwin created

b4b044c Initial modal styles

Nate Butler created

e0d7384 Continue panel styles

Nate Butler created

64c2043 Query less inlay hints (#2842)

Click to expand commit body
Part of
https://linear.app/zed-industries/issue/Z-2750/investigate-performance-of-collaborating-on-large-files-with-inlay

Instead of querying the entire file for hints, query visible editor(s)
range + the areas above and below, of the same height.
Non-invalidating future queries (e.g. scrolling) query only missing
parts of the ranges.

Release Notes:

- Improved LSP resource usage by querying less hints for big files

Kirill Bulatov created

54bcef9 Strip off inlay hint data that should be resolved (#2843)

Click to expand commit body
Part of
https://linear.app/zed-industries/issue/Z-2750/investigate-performance-of-collaborating-on-large-files-with-inlay

* Declares client capabilities for hint resolution, marking both fields
available for resolution (`textEdits` and `tooltop`) as resolvable.
We do not use these fields anymore, hence can omit resolving them for
now, but LSP servers can omit them during general hint requests.

* Removes `tooltip` and replaces complex `label` with its simple string
counterpart for clients' hint responses from host: both should be
resolved through host later

Release Notes:

- Reduces collab mode clients' inlay hint footprint by enabling hint
data resolution

Kirill Bulatov created