ZIm/crates/collab_ui/src
Kirill Bulatov 0199eca289
Allow filling co-authors in the git panel's commit input (#23329)
https://github.com/user-attachments/assets/78db908e-cfe5-4803-b0dc-4f33bc457840


* starts to extract usernames out of `users/` GitHub API responses, and
pass those along with e-mails in the collab sessions as part of the
`User` data

* adjusts various prefill and seed test methods so that the new data can
be retrieved from GitHub properly

* if there's an active call, where guests have write permissions and
e-mails, allow to trigger `FillCoAuthors` action in the context of the
git panel, that will fill in `co-authored-by:` lines, using e-mail and
names (or GitHub handle names if name is absent)

* the action tries to not duplicate such entries, if any are present
already, and adds those below the rest of the commit input's text

Concerns:

* users with write permissions and no e-mails will be silently omitted
— adding odd entries that try to indicate this or raising pop-ups is
very intrusive (maybe, we can add `#`-prefixed comments?), logging seems
pointless

* it's not clear whether the data prefill will run properly on the
existing users — seems tolerable now, as it seems that we get e-mails
properly already, so we'll see GitHub handles instead of names in the
worst case. This can be prefilled better later.

* e-mails and names for a particular project may be not what the user
wants.
E.g. my `.gitconfig` has
```
[user]
    email = mail4score@gmail.com

# .....snip

[includeif "gitdir:**/work/zed/**/.git"]
    path = ~/.gitconfig.work
```

and that one has

```
[user]
    email = kirill@zed.dev
```

while my GitHub profile is configured so, that `mail4score@gmail.com` is
the public, commit e-mail.

So, when I'm a participant in a Zed session, wrong e-mail will be
picked.
The problem is, it's impossible for a host to get remote's collaborator
git metadata for a particular project, as that might not even exist on
disk for the client.

Seems that we might want to add some "project git URL <-> user name and
email" mapping in the settings(?).
The design of this is not very clear, so the PR concentrates on the
basics for now.

When https://github.com/zed-industries/zed/pull/23308 lands, most of the
issues can be solved by collaborators manually, before committing.

Release Notes:

- N/A
2025-01-18 22:57:17 +02:00
..
chat_panel Resolve completion items once exactly (#22448) 2024-12-27 16:43:01 +00:00
collab_panel Add Corner to geometry and make names of corner methods consistent (#22119) 2024-12-16 22:57:15 -07:00
notifications chore: Fix several style lints (#17488) 2024-09-06 11:58:39 +02:00
channel_view.rs More telemetry events (#22171) 2024-12-17 22:16:59 -07:00
chat_panel.rs Allow filling co-authors in the git panel's commit input (#23329) 2025-01-18 22:57:17 +02:00
collab_panel.rs Decide which panel should be active for a dock based on ordering panels (#22346) 2024-12-30 14:43:17 +00:00
collab_ui.rs Hide chat panel button when not in a call (#22200) 2024-12-19 19:32:45 +00:00
notification_panel.rs Decide which panel should be active for a dock based on ordering panels (#22346) 2024-12-30 14:43:17 +00:00
notifications.rs Add stories for collab notifications (#3967) 2024-01-08 21:54:59 -05:00
panel_settings.rs Hide chat panel button when not in a call (#22200) 2024-12-19 19:32:45 +00:00