Commit log

8947438 Update elevation

Nate Butler created

453aa5f `TextColor` -> `Color`

Nate Butler created

56d45e7 Add Shape enum to avatar component, refactor UITextSize to styles/typography.rs

Nate Butler created

205607a Clean out UI

Nate Butler created

b427500 Search2 (#3332)

Click to expand commit body
This is just a buffer search (without project search), as the latter
needs a multibuffer from `editor`
Release Notes:

- N/A

Piotr Osiewicz created

361801e WIP: Remove V parameter on elements (#3366)

Click to expand commit body
This is an exploration of what it would take to remove the `V` generic
from the element type. Answer: less than I expected.

I added a new struct to GPUI2: `CallbackHandle<Event>`, and reworked the
interactivity related APIs to take this type. I also added a
`.callback()` function to `ViewContext` that can construct a
`CallbackHandle` to wrap our current `|&mut View, &Evt, &mut
ViewContext| {...}` based APIs. With these two changes, we can now
capture the context of the callsite of a click handler, allowing us to
capture all relevant types and data _before_ sending them into GPUI.
This lets us achieve a similar programing style to the existing system,
while also letting us remove all of the generics from the entire element
system. For an example of what this looks like in practice, here's a
side by side diff of the test in `interactive.rs` (which compiles and
passes):

<img width="1310" alt="Screenshot 2023-11-19 at 7 32 08 PM"
src="https://github.com/zed-industries/zed/assets/2280405/596f2a9a-9c8e-4158-bf6d-0003cf973015">

Note how the new arrangement of types is more amenable to rust's type
inference, allowing the code to be just as terse as before despite the
extra function call in the middle.

This approach also allows components to provide well typed APIs to
views, without ever knowing that view's type. This PR includes an
example rewrite of the button component in `ui2`, here's what it's
struct could look like now:

<img width="1105" alt="Screenshot 2023-11-19 at 7 24 28 PM"
src="https://github.com/zed-industries/zed/assets/2280405/fc98d3c2-6831-4c0f-a324-ab0fae33b0bc">

However, I have not yet ported the derive macro for Component to this
new structure, as I know @nathansobo is currently reworking that code.

Once that macro has been rewritten, it should be relatively easy to
rewrite the rest of Zed2 with this approach, the only major difference
that I can foresee is that the editor element would need to wrap it's
operations in an update callback. Though I can think of a few ways to
fix this with a new `ViewElement` trait, that does the wrapping for you.

Mikayla Maki created

2138715 Merge remote-tracking branch 'origin/callback-handles' into search2

Piotr Osiewicz created

a844bf7 Fix stories

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

Mikayla and Piotrek created

3e32986 Brave new world awaits

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

Piotr Osiewicz and Mikayla created

54a3b56 Merge remote-tracking branch 'origin/callback-handles' into search2

Piotr Osiewicz created

8049ec6 Fix last thing

Conrad Irwin created

5c0f2e7 Remove all the settings

Conrad Irwin created

3e2dba3 Merge branch 'main' into callback-handles

Conrad Irwin created

3096222 Add `deploy-docs` script (#3373)

Click to expand commit body
[[PR Description]]

Adds `script/deploy-docs`:
- If you don't already have it, it will clone the `zed-docs` repo into
`../zed-docs`
    - It will build the docs and output them in `../zed-docs`
    - Then it will open the docs.
- By default this "dry runs" (doesn't push) but you can pass `-p` to
push the changes.
    - If you add `-c` it will clean out the old docs before running.
    
If you run the script with `p` it will push up the changes, and vercel
will automatically deploy them.

Release Notes:

- N/A

Nate Butler created

8b6b7e6 borrow less

Conrad Irwin created

a83d626 Make the script a bit more resilient

Nate Butler created

2c4d83c WIP

Click to expand commit body
co-authored-by: conrad <conrad@zed.dev>
co-authored-by: Nathan <nathan@zed.dev>

Mikayla , conrad , and Nathan created

a87ffa5 Add more crates

Nate Butler created

3210d36 Create deploy-docs

Nate Butler created

652e3b0 Rename `ListEntry` to `ListItem` (#3371)

Click to expand commit body
This PR renames the `ListEntry` component to `ListItem` to better
reflect its intent.

Release Notes:

- N/A

Marshall Bowers created

daddb03 Remove comments

Joseph T. Lyons created

a0dcc96 Mark app event as `open` if we fail to get installation_id

Click to expand commit body
If we find a previous installation_id, then we send `open`. If we don't find a previous installation_id, then we sent as `first open`. If we fail, we mark it as `open` so that we don't accidentally bloat our `first open` stats.

Joseph T. Lyons created

db3f487 Fix zed2 compile error

Joseph T. Lyons created

0926db9 Add app events

Joseph T. Lyons created

4f4ef4a More fixes for zed nightly (#3370)

Click to expand commit body
When running `script/bundle` with the new `-2` flag, we needed to adjust
the fat-binary creation step to look for the binary called `Zed2`.

We also fixed a source of intermittent build failures in `script/bundle`
due to running multiple `swift build` processes concurrently for the
`live_kit_client2` crate, building for the two architectures.

Release Notes:

NA

Max Brunsfeld created

2731855 Fix error when building live_kit_client2 for two architectures concurrently

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

Max Brunsfeld and Julia created

eb307b2 Rework `List` to use `children` (#3369)

Click to expand commit body
This PR reworks the `List` component to use `children` instead of
accepting a `Vec<ListItem>` in its constructor.

This is a step towards making the `List` component more open.

Release Notes:

- N/A

Marshall Bowers created

6985b70 fix gpui2

Mikayla created

25ed7c5 WIP

Conrad Irwin created

d0dd44f Merge branch 'main' into callback-handles

Conrad Irwin created

6e84f74 Set -e in bump-nightly script

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

Max Brunsfeld and Mikayla created

c571273 Allow bundling in debug mode with both architectures

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

Max Brunsfeld and Mikayla created

babd419 Remove gpui (1) dependencies from zed2

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

Max Brunsfeld and Mikayla created

acbad4c WIP

Mikayla created

fe0a8b4 Fix warnings in tests

Piotr Osiewicz created

d60855b Merge branch 'main' into search2

Piotr Osiewicz created

99ef8cc fixup dismissing of search bar

Piotr Osiewicz created

6f0cdc3 Refine element and component traits (#3367)

Click to expand commit body
This PR changes `Element::paint` to move self and introduces a new
`RenderOnce` trait, which renders into an element by moving self.
Elements are required to be `RenderOnce`, and `element_id` is now on
`RenderOnce` so we can get the id without moving self. The `child` and
`children` methods now expect `impl RenderOnce`.

```rust
pub trait Element<V: 'static>: 'static + RenderOnce<V> {
    type State: 'static;

    fn layout(
        &mut self,
        view_state: &mut V,
        element_state: Option<Self::State>,
        cx: &mut ViewContext<V>,
    ) -> (LayoutId, Self::State);

    fn paint(
        self,
        bounds: Bounds<Pixels>,
        view_state: &mut V,
        element_state: &mut Self::State,
        cx: &mut ViewContext<V>,
    );

    fn into_any(self) -> AnyElement<V> {
        AnyElement::new(self)
    }
}

pub trait RenderOnce<V: 'static>: Sized {
    type Element: Element<V> + 'static;

    fn element_id(&self) -> Option<ElementId>;

    fn render_once(self) -> Self::Element;

   // default helpers ...
}
```

To make a type a component, you can add `#[derive(RenderOnce)]`, which
will require your type to implement the `Component` trait:

```rust
pub trait Component<V: 'static>: 'static {
    type Rendered: RenderOnce<V>;

    fn render(self, view: &mut V, cx: &mut ViewContext<V>) -> Self::Rendered;
}
```

I'm satisfied with this being what we open source for elements, aside
from maybe adding a `StatefulComponent` trait that uses element state.
Things finally feel like they slot into a coherent and simple narrative.

Release Notes:

- N/A

Conrad Irwin created

3ddfc7f Remove unused import

Piotr Osiewicz created

fa8cd84 fixup! Merge branch 'main' into search2

Piotr Osiewicz created

07cc590 Merge branch 'main' into search2

Piotr Osiewicz created

3d28495 fixup! Remove dbg statements

Piotr Osiewicz created

ad38708 Remove dbg statements

Piotr Osiewicz created

c1f0ac3 Fix up tests once and for good

Piotr Osiewicz created

b19a6c0 Fix storybook2

Conrad Irwin created

5d16f76 fmt

Conrad Irwin created

8599ba5 Fix more import errors

Conrad Irwin created

f08426c shhhh

Conrad Irwin created

f86480b Merge followup mess

Conrad Irwin created

0798cfd Merge branch 'main' into derive-element-redux

Conrad Irwin created