This PR cleans up some TODOs we had in the themes.
We won't be addressing these in the immediate term, so no need to have
them show up when folks are looking for TODOs to burn down before
launch.
I added some general notes as signposts until we're ready to revisit
this.
Release Notes:
- N/A
This release call was added during the conversion to gpui2. I think it
is probably valid, but want to remove it on the off chance that it is
causing the crash that we're seeing in the `livekit.multicast` thread
when leaving a room.
Most likely, this is not going to fix anything, and is just introducing
a small memory leak, but it is a step back to how the app worked with
gpui 1.
This release call was added during the conversion to gpui2. I think
it is probably valid, but want to remove it on the off chance that
it is causing the crash that we're seeing in the `livekit.multicast`
thread when leaving a room.
During layout of EditorElement we use 'm' character from current font to calculate sizes, panicking with fonts that do not have that character (e.g. Arabic fonts). It's not really EditorElement's fault, as it assumes that the font it's dealing with is gonna have that character available.
To prevent a crash, I added validation while loading a family that a given font contains the glyphs we're gonna use down the line.
An old fix was ported over from gpui1, and the two fixes could not exist
side-by-side. Delete this code and let the keymap handle it
Release Notes:
- (Added|Fixed|Improved) ...
([#<public_issue_number_if_exists>](https://github.com/zed-industries/community/issues/<public_issue_number_if_exists>)).
Before this change the views would continue to update in the background
of the "disconnected" dialogue, which was disconcerting.
[[PR Description]]
Release Notes:
- Fixed an edge-case where following didn't handle unshare correctly
Editors WrapMap could become desynchronised if user had an invalid font
specified in their config. Compared to Zed1, WrapMap ignored the
resolution failure instead of panicking. Now, if there's an invalid font
in the user config, we just fall back to an arbitrary default.
Release Notes:
- Fixed the editor panic in presence of invalid font name in the config
(fixes https://github.com/zed-industries/community/issues/2397)
---------
Co-authored-by: Conrad <conrad@zed.dev>
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
When logging the edit environment, we were logging the newest environment being sent into the EventCoalescer on the latest activity log, when we should've been logging the environment that was associated with the ended period within the EventCoalescer.
The goal of this PR is to send up events that contain the duration of
keyboard activity within Zed. I built the `EventCoalescer`, which gets
called called each time a key is pressed, within any environment (in the
case of this PR, within "editor" and "terminal). The" `EventCoalescer`
holds a start and end DateTime and adjusts the end instant as events
come in, until a timeout from the last event is hit.
I did my best to keep this mechanism efficient (avoiding vectors to
store moments in time, avoiding spawning timers threads, etc.), because
I know this is going to be per keystroke, but its behind a lock on the
telemetry struck, since it has to know when the environment changes, in
which point, it will automatically end the activity period, even if
there is no timeout. Because we have to have access to it from different
parts of the system, we have to go through the lock, which worried me a
bit (@mikayla-maki's intuition is that it should be fine).
As for the event, I take the time between the durations reported by the
event coalescer and send that up to zed - the indention is to
reconstruct the start and end times on zed.dev, in the same way we use
the event offset times and the time on zed.dev to get the official event
timestamp, and avoid the issue of the user having their system clocks
set wrong.
I'd really appreciate it if @nathansobo or @maxbrunsfeld could check
this out.
Release Notes:
- N/A
Those were not installing Rust but configuring it via rustup, and
those configurations were done on `stable` toolchain which is not what we use (see rust-toolchain.toml)
co-authored-by: Piotr <piotr@zed.dev>
Release notes:
* Fixed a bug where network interruptions could cause audio and screen
sharing to stop working without indicating that they were stopped, and
there was no way to restart the audio stream.
Although it's not super clear why this fails; in zed1 we used to have a
bounds
check. Restoring the bounds check for now, but leaving a debug_assert!
in case
a local reproduction happens.
Release Notes:
- Fix a panic that happened sometimes when rendering folds
As part of debugging the port of following tests we added an assertion
that the project was dropped. Now that we initialize the editor and
handle focus correctly in tests, the project is retained by
`refresh_document_highlights`. That doesn't affect the meaning of the
tests
The culprit was in display map which was resolving next valid point for
the editor, without regard for whether that point belongs to the same excerpt. We now make an end point a minimum of the end point passed in and the start of excerpt header, if there are any.
This bug existed in Zed1 as well.
Fixes: Diff markers in multibuffer search overlap with dividers between
excepts (shouldn't extend all the way into the divider region)
Release Notes:
- Fixed diff markers being drawn incorrectly near headers in multibuffer
views.
Also:
- Rename cx.on_blur to cx.on_focus_lost
- Fix a bug where notify calls in focus handlers were ignored
- Fix a bug where vim would get stuck in the wrong mode when switching
windows
Release Notes:
- (preview only) vim: fix switching between multiple windows
This PR updates the `IconButton`s used to control the buffer search
options to use the `.selected` state to denote when they are active.
This matches what we are doing in the project search.
This should improve the contrast in certain themes.
Release Notes:
- Improved the active style for the search options in buffer search.
This reduces size of release binary by ~20% from 134MB to 107MB without noticeable slowdown on startup. Assets are decompressed granularly, on first access
Also:
- Rename cx.on_blur to cx.on_focus_lost
- Fix a bug where notify calls in focus handlers were ignored
- Fix a bug where vim would get stuck in the wrong mode when switching
windows
This PR changes the approach we're using to render the channel buttons
to use a more straightforward (and less hacky) approach.
### Motivation
Even with the variety of hacks that were employed to make the current
approach work, there are still a number of issues with the current
solution:
- Hovering in the empty space to the left of a channel doesn't correctly
apply the hover background to the container for the channel buttons
- Hovering to the very right of the collab panel (right on top of the
drag handle) causes the channel button container to apply its hover
background without applying it to the rest of the row
- The buttons would still get pushed off to the right by the indent
space in the channel tree, resulting in jagged indicators at small sizes
Additionally, the rectangular background placed behind the channel
buttons still didn't look great when it overlapped with the channel
names.
### Explanation
For these reasons, I decided to explore a simpler approach that
addresses these issues, albeit with some tradeoffs that I think are
acceptable.
We now render the absolutely-positioned button container as a sibling
element of the `ListItem`. This is to avoid issues with the container
getting pushed around based on the contents of the `ListItem` rather
than staying absolutely positioned at the end of the row.
We also have gotten rid of the background for the button container, and
now rely on the background of the individual `IconButton`s to occlude
the channel name behind them when the two are overlapping.
Here are some examples of the new UI in various configurations:
#### When the channel entry is hovered
<img width="270" alt="Screenshot 2024-01-09 at 6 15 24 PM"
src="https://github.com/zed-industries/zed/assets/1486634/0207a129-30eb-4067-8490-3b6c9cbf75ea">
#### Overlapping with the channel name
<img width="229" alt="Screenshot 2024-01-09 at 6 15 43 PM"
src="https://github.com/zed-industries/zed/assets/1486634/0a67507e-45c8-4325-a71e-d416edc3a115">
#### Narrow collab panel
<img width="116" alt="Screenshot 2024-01-09 at 6 16 07 PM"
src="https://github.com/zed-industries/zed/assets/1486634/887ebaa3-e4d6-4497-9141-afcc8b7cd356">
### Tradeoffs
The new approach comes with the following tradeoffs that I am currently
aware of:
The occlusion can look a little weird when the icons are in the middle
of a channel name (as opposed to fully occluding the end of the channel
name):
<img width="190" alt="Screenshot 2024-01-09 at 6 24 32 PM"
src="https://github.com/zed-industries/zed/assets/1486634/0062b806-1b8f-47eb-af8d-f061d9829366">
Hovering one of the icons causes the icon to be hovered instead of the
row:
<img width="232" alt="Screenshot 2024-01-09 at 6 31 38 PM"
src="https://github.com/zed-industries/zed/assets/1486634/cbcc1a45-64d2-4890-8ad6-c5a5ee961b86">
Release Notes:
- Improved the way channel buttons are displayed.
We had introduced these mutexes at a time when `gpui2` required app
entities to be `Sync`, but they are no longer needed. Removing them now
because we're trying to find out why we're sometimes getting crashes and
deadlocks in livekit, and we didn't before.
This PR cleans up a number of references in doc comments in the `ui` and
`theme` crates so that `rustdoc` will link and display them correctly.
Release Notes:
- N/A
This PR removes the `Default` impl for `StatusColors`.
Since we need default light and dark variants for `StatusColors`, we
can't use a single `Default` impl.
Release Notes:
- N/A
This PR renames the `IconElement` component to just `Icon`.
This better matches the rest of our components, as `IconElement` was the
only one using this naming convention.
The `Icon` enum has been renamed to `IconName` to free up the name.
I was trying to come up with a way that would allow rendering an
`Icon::Zed` directly (and thus make the `IconElement` a hidden part of
the API), but I couldn't come up with a way to do this cleanly.
Release Notes:
- N/A
This PR adds some basic stories for collab notifications to make them
easier to work on:
<img width="1076" alt="Screenshot 2024-01-08 at 9 43 39 PM"
src="https://github.com/zed-industries/zed/assets/1486634/4a0adcfa-1134-49c2-b589-74ac1d52af4c">
I factored out a `CollabNotification` component that defines the general
structure for one of these notifications, and this is the component that
we use in the stories, with representative values passed to it to
simulate the different instances of the notification.
We can't use the actual notification components in the stories due to
their data dependencies.
Release Notes:
- N/A
This PR fixes an issue where right-click on any project panel entry
would cause the context menu on the root of the project panel
(introduced in #3954) to deploy.
We need to stop propagation in the handler on the inner project panel
list items so that the click event doesn't bubble up the tree.
Release Notes:
- Fixed an issue where the project panel was always deploying the root
context menu rather than on the clicked item.
This PR fixes the border color used when the email input in the feedback
dialog is invalid.
Previously this was hardcoded just to `red` instead of using the
appropriate color from the theme.
<img width="653" alt="Screenshot 2024-01-08 at 5 40 07 PM"
src="https://github.com/zed-industries/zed/assets/1486634/ea01cd76-d661-4512-b668-c82b8d00d84e">
Release Notes:
- Fixed the border color used for the email input in the feedback dialog
when an invalid email is entered.
- First pass of real access control
- Check user is host for host-broadcasted project messages
- Only allow read-write users to update buffers
[[PR Description]]
Release Notes:
- (Added|Fixed|Improved) ...
([#<public_issue_number_if_exists>](https://github.com/zed-industries/community/issues/<public_issue_number_if_exists>)).
This essentially shaves off about 10% off of an incremental build after
project change and potentially more if you're changing stuff like
`welcome` that's very close to the `zed` crate in the dep graph. That's
because macro expansion takes place even in incremental builds it seems?
And zed (lib) + zed (bin) could take up to 4 seconds out of an
incremental build, which is a *lot* in a 10s build. In reality though it
shaves 1 second off of 5 seconds incremental 'welcome'/ 1s off of 10s
'project' builds.
Note that we had `assets` crate in the past (removed in #2575 /cc
@maxbrunsfeld), but this is a bit different, because `assets` is a
dependency of *just* zed and nothing else. We essentially cache macro
expansion results ourselves.
Release Notes:
- N/A
This PR improves the empty states for the chat panel:
- The signed-out state has been updated to match our other signed-out
panel states.
- A new state has been added to account for the case where a user is
signed in but doesn't have an active chat.
Release Notes:
- Improved the design of empty states in the chat panel.
Currently when one runs `cargo build` twice without changing anything,
zed lib and binary are gonna get rebuilt every time. I checked out cargo
logs and it turns out we were querying wrong path to `.git/logs/HEAD` in
our build.rs, causing it to rerun on every build and thus marking zed
lib as dirty.
See logs (`CARGO_LOG=cargo::core::compiler::fingerprint=trace cargo
build`):
```
0.501173792s INFO cargo::core::compiler::fingerprint: fingerprint dirty for zed v0.120.0 (/Users/hiro/Projects/zed/crates/zed)/RunCustomBuild/TargetInner { ..: custom_build_target("build-script-build", "/Users/hiro/Projects/zed/crates/zed/build.rs", Edition2021) }
0.501180417s INFO cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleItem(MissingFile("/Users/hiro/Projects/zed/crates/zed/.git/logs/HEAD")))
```
The path to .git directory is relative to crates/zed and not to the
workspace's root.
/cc @maxbrunsfeld
Release Notes:
- N/A
This PR fixes the inconsistent sizing between the buffer search and the
project search when both elements have both a primary and secondary item
shown in the toolbar.
Release Notes:
- Fixed some inconsistent sizing in the buffer search and project search
when both have two rows of tools in the toolbar.
This PR removes a commented-out implementation for the `ActiveTheme`
trait on the `WindowContext`.
We don't need this implementation as we can go through the
`AppContext`'s implementation.
Release Notes:
- N/A
This PR fixes the layout shift that would occur in the channel list when
opening a rename editor for a channel.
Release Notes:
- Fixed layout shift when opening a rename editor for a channel.
This PR adjusts the spacing of the indicator showing the number of extra
call participants that appears after the facepile:
<img width="242" alt="Screenshot 2024-01-08 at 1 09 39 PM"
src="https://github.com/zed-industries/zed/assets/1486634/6d9cbefa-3b4e-4501-ab11-51026dfb5b6c">
Release Notes:
- Added more space between the call participant facepile and the number
indicating additional call participants.