Commit Graph
100 Commits
Author SHA1 Message Date
Nathan Sobo f56707e076 Assign OPENAI_API_KEY from a k8s secret in the collab deployment (#9703)
Merging this eagerly because it's just a configuration change, and I want to test it on staging.
2024-03-22 08:36:52 -06:00
Nathan Sobo 6d5787cfdc Hard code max token counts for supported models (#9675) 2024-03-21 20:30:33 -06:00
8ae5a3b61a Allow AI interactions to be proxied through Zed's server so you don't need an API key (#7367)
Co-authored-by: Antonio <antonio@zed.dev>

Resurrected this from some assistant work I did in Spring of 2023.
- [x] Resurrect streaming responses
- [x] Use streaming responses to enable AI via Zed's servers by default
(but preserve API key option for now)
- [x] Simplify protobuf
- [x] Proxy to OpenAI on zed.dev
- [x] Proxy to Gemini on zed.dev
- [x] Improve UX for switching between openAI and google models
- We current disallow cycling when setting a custom model, but we need a
better solution to keep OpenAI models available while testing the google
ones
- [x] Show remaining tokens correctly for Google models
- [x] Remove semantic index
- [x] Delete `ai` crate
- [x] Cloud front so we can ban abuse
- [x] Rate-limiting
- [x] Fix panic when using inline assistant
- [x] Double check the upgraded `AssistantSettings` are
backwards-compatible
- [x] Add hosted LLM interaction behind a `language-models` feature
flag.

Release Notes:

- We are temporarily removing the semantic index in order to redesign it
from scratch.

---------

Co-authored-by: Antonio <antonio@zed.dev>
Co-authored-by: Antonio Scandurra <me@as-cii.com>
Co-authored-by: Thorsten <thorsten@zed.dev>
Co-authored-by: Max <max@zed.dev>
2024-03-19 19:22:26 +01:00
Nathan Sobo 7c9f680b1b Request more resources for collab pods on Kubernetes (#8890)
Worried that if we don't do this, they don't give us enough. We're
maxing out the pod's CPU but the node is barely sweating.

Release Notes:

- N/A
2024-03-05 09:15:08 -07:00
Nathan Sobo 4cc4f08a53 Remove ! from todo!() in comments (#8643)
This practice makes it difficult to locate todo!s in my code when I'm
working. Let's take out the bang if we want to keep doing this.

Release Notes:

- N/A
2024-02-29 18:19:05 -07:00
Nathan Sobo 1734403aa3 Add Zig support (#6690)
This PR adds support for Zig with the official LSP (ZLS) and the
treesitter grammar listed on the
[website](https://tree-sitter.github.io/tree-sitter/). I've tested this
on a few large codebases and go to definition, completion, and hover
overlays all seem to work fine with no error logs.

![Screenshot 2024-01-24 at 20 17
18](https://github.com/zed-industries/zed/assets/11731580/be7b4f1d-878e-4e3e-839b-a5f962df7555)

The highlights are adapted from the tree sitter repository which target
neovim I think, I've fixed a handful of issues and the highlighting is
looking pretty good but need to do more testing.

Release Notes:
- Added Zig support with zls
[#5300](https://github.com/zed-industries/zed/issues/5300).
2024-01-25 22:24:37 -07:00
Nathan Sobo 9fd0938eb1 Github => GitHub (#6727)
🔥 that this is open source now.

Release Notes:

- Changed instances of "Github" in user-facing UI to CamelCase "GitHub".
2024-01-25 12:29:51 -07:00
Nathan Sobo b98c935cde Revise contributing.md (#4223)
Some adjustments to be less bold in our pairing commitments and clearer
about the process for proposing an idea.

Release Notes:

- N/A
2024-01-23 11:52:12 -07:00
Nathan Sobo 38c3590266 Revise contributing.md 2024-01-23 11:42:40 -07:00
Nathan Sobo 006bc5a1fa Minor API adjustments to make my blog post clearer (#4122)
I don't want to clutter this post with the asset source, so I made it
optional. I'm also checking in an example which helps me ensure my code
examples are valid.

Release Notes:

- N/A
2024-01-18 07:25:31 -07:00
Nathan Sobo 9e37232a13 Merge remote-tracking branch 'origin/main' into ownership-post 2024-01-18 07:01:54 -07:00
Nathan Sobo f9165938b0 More adjustments for blog post 2024-01-18 07:01:46 -07:00
Nathan Sobo bef1b83265 Add ownership post example 2024-01-17 21:19:28 -07:00
Nathan Sobo 1d3ca8eb5d Adjust APIs for simpler examples in blog post 2024-01-17 21:19:28 -07:00
Nathan Sobo d2c436dcdc fix bounds checks (#4038)
Ensure we `panic()` instead of crash on graphics memory buffer overflow

Also bump the buffer size to 32Mb from 8Mb to make this rarer (but still
possible)

Release Notes: Fixes some crahes due to lack of graphics buffer spacae
2024-01-12 15:28:19 -08:00
Nathan Sobo 00c3afd330 Add documentation to GPUI (#3980)
🍐d with @conrad @mikayla-maki on covering some of the surface area.

Release Notes:

- N/A
2024-01-09 12:10:53 -07:00
Nathan SoboandConrad 42cbd103fb Even more docs
Co-authored-by: Conrad <conrad@zed.dev>
2024-01-09 12:02:12 -07:00
Nathan SoboandConrad 458c672a72 Add more API docs
Co-Authored-By: Conrad <conrad@zed.dev>
2024-01-09 11:16:56 -07:00
59f41acb82 Add a bunch of docs
Co-Authored-By: Conrad <conrad@zed.dev>
Co-Authored-By: Mikayla <mikayla@zed.dev>
2024-01-09 11:02:57 -07:00
Nathan Sobo 3d1f522566 Fix the alignment of the assistant (#3925)
![CleanShot 2024-01-05 at 17 30
11@2x](https://github.com/zed-industries/zed/assets/1789/b70226d0-bc07-4ce3-b45d-c25aace998c2)

Release Notes:

- Fixed the alignment of the assistant headers and text
- Increased the left padding on the assistant.
2024-01-05 17:51:44 -07:00
Nathan Sobo aaada7d508 Implement From<Rgba> for Fill 2024-01-05 17:33:22 -07:00
Nathan Sobo 436a281756 Align the assistant message headers with the editable message content
Since the message headers are buttons, we need to shift them relatively to
compensate for the fact that the background is only visible when hovered.
I'm ok with the background not being aligned so long as the unhovered text is.
2024-01-05 17:23:10 -07:00
Nathan Sobo 5f8417249c Return impl IntoElement in Render and RenderOnce traits (#3839)
- Returning `IntoElement` because it's more universal than `Element` and
allows us to easily return components.
- Using `impl IntoElement` in `RenderOnce` for consistency, which
requires `Component` to allocate an `AnyElement`. We use a bump
allocated arena anyway for these, and my benchmark doesn't show an
impact.


![frame-time-histogram](https://github.com/zed-industries/zed/assets/1789/d3889cca-9ebc-4d72-aa68-34a5be3bad3c)

In this histogram, frames-0 is this PR, frames-1 is main.

Release Notes:

- N/A
2024-01-03 10:37:26 -07:00
Nathan Sobo cb6652e7bf Clippy fixes for gpui2 (#3826)
It's not quite complete, but we gotta start somewhere.
Release Notes:

- N/A
2024-01-02 11:38:25 -07:00
Nathan Sobo c636731fd9 Add some docs 2024-01-02 11:30:58 -07:00
Nathan Sobo 30624b9899 Fix anti-aliasing artifacts in GPUI 2 borders (#3818)
Previously, we changed borders to be drawn after content, so they are no
longer part of the same quads as the background. In our change, we gave
the background quad a transparent black border and the border quads
transparent black backgrounds. However, this caused the other channels
to blend toward that black color before becoming fully transparent,
causing them to become darker.

In this PR, I source the "placeholder" color by duplicating the values
for the other channels and only adjust the alpha down to zero.

Release Notes:

- N/A
2024-01-02 10:32:23 -07:00
Nathan Sobo 68e7d99219 Return impl IntoElement from RenderOnce::render
This makes it a bit more approachable to implement.

This required converting the state of Component to AnyElement, which
costs an allocation. I'm hoping this will be ok performance-wise now
that AnyElements use bump allocation, but I need to benchmark still.
2024-01-02 10:27:09 -07:00
Nathan Sobo 1b5c8b2b4a Return impl IntoElement from Render::render trait 2024-01-02 10:09:05 -07:00
Nathan Sobo 6b14f2fd08 Rename build_view to new_view and build_model to new_model (#3823)
The word "new" is shorter and blends in with `new` constructors that are
common in Rust. Been meaning to do this for a while.

Release Notes:

- N/A
2024-01-02 08:11:53 -07:00
Nathan Sobo 47071605a1 Merge remote-tracking branch 'origin/main' into new-view-new-model-rename 2024-01-01 17:42:12 -07:00
Nathan Sobo db1cf8f6e1 Rename build_view to new_view and build_model to new_model
The word "new" is shorter and blends in with `new` constructors that are common
in Rust. Been meaning to do this for a while.
2024-01-01 17:42:01 -07:00
Nathan Sobo 789db30c42 Clean up Element API and start on docs (#3821)
Getting some scaffold docs in place and making some naming adjustments
to improve consistency with Rust APIs and clarity.

- Render::Element -> Render::Output, and Render::Output is now only
required to be IntoElement instead of Element so we can return
components.
- RenderOnce::Element -> RenderOnce::Output
- Element::layout -> Render::request_layout - Clarify that this doesn't
actually *perform* layout, but simply requests

Release Notes:

- N/A
2024-01-01 17:41:12 -07:00
Nathan Sobo f836873764 Fix merge 2024-01-01 12:23:42 -07:00
Nathan Sobo bcf0e3fb05 Merge branch 'pre-merge' into clean-up-doc-elements 2024-01-01 12:21:33 -07:00
Nathan Sobo 81b03d379e Rearrange to hopefully make merging easier 2024-01-01 12:21:17 -07:00
Nathan Sobo c6ae885c5d Add more docs 2024-01-01 11:35:40 -07:00
Nathan Sobo 51d1d92d66 Attempt to return impl Element from render. 3 errors. 2024-01-01 14:23:02 +01:00
Nathan Sobo 83923fd6d5 Clean up Element API and start on docs 2023-12-31 08:33:40 -07:00
Nathan Sobo 21f0409e3b Fix anti-aliasing artifacts in borders
Previously, we changed borders to be drawn after content, so they are no longer
part of the same quads as the background. In our change, we gave the background
quad a transparent black border and the border quads transparent black
backgrounds. However, this caused the other channels to blend toward that black
color before becoming fully transparent, causing them to become darker.

In this PR, I source the "placeholder" color by duplicating the values for
the other channels and only adjust the alpha down to zero.
2023-12-29 08:49:01 -07:00
Nathan Sobo 4e9fb26102 Adjust terminal and popover colors to better match original styling (#3816)
This may have made something else worse, but overall brings us more into
harmony.

Release Notes:

- N/A
2023-12-29 08:44:26 -07:00
Nathan Sobo 02f7e681a7 Import elevated surface color from hover popover 2023-12-27 11:58:26 -07:00
Nathan Sobo a2b0f14dc1 Rename size to dimensions for consistency 2023-12-27 11:23:12 -07:00
Nathan Sobo ddd6f0806b Render cursor text with the terminal's background color 2023-12-27 11:08:43 -07:00
Nathan Sobo 5cfd4b06b9 Use correct terminal background color 2023-12-27 10:46:25 -07:00
Nathan Sobo e5ce5e8692 Clear pending keystrokes when an action is dispatched (#3750)
This prevents the `cmd-k` keystroke, which clears the terminal, from
staying around as a pending keystroke on the parent workspace.

Release Notes:

- N/A
2023-12-20 20:50:59 -07:00
Nathan Sobo 4680aad885 Correctly compute placeholder text for buffer search query editor (#3749)
Rather than relying on the focused element, instead explicitly pass the
focus handle for the query editor when determining the prev/next
bindings. Only compute these values once.

Release Notes:

- N/A
2023-12-20 20:48:31 -07:00
Nathan Sobo 5747c9b7a1 Clear pending keystrokes when an action is dispatched 2023-12-20 20:41:36 -07:00
Nathan Sobo c56e7cd124 Remove unused import 2023-12-20 19:53:57 -07:00
Nathan Sobo 4f6bef5b63 Improve interaction between clicking and dragging (#3737)
Once a drag starts, we won't fire click listeners or style any elements
as active.

- Don't fire click listeners or show active state once a drag is in
progress
- Don't show hover style when a drag is in progress
- Draw borders above content
- If borders are opaque, apply them to the content mask. This prevents
hovers from firing on content underneath the border, which was creating
issues where the drag handle was inside the border, so we'd flicker the
hover when the mouse moved out of the drag handle and into the 1px
border on the left dock.
- Add a `block_mouse` helper which causes transparent elements to paint
an "opaque" layer to prevent mouse events from falling through. We use
this for the drag handle as well to disable hover, click, etc on items
in the panel.

Release Notes:

- N/A
2023-12-20 19:31:06 -07:00
Nathan Sobo 87ae21feb3 Merge remote-tracking branch 'origin/main' into cancel-clicks-on-drag 2023-12-20 15:01:10 -07:00
Nathan Sobo d499cccebb Only compute placeholder text once 2023-12-20 14:47:56 -07:00
Nathan Sobo 9acb5825e6 Compute the query editor placeholder text with a focus handle
So we're not beholden to the current focus.
2023-12-20 13:00:52 -07:00
15f16f08d9 Move application of content mask and z-index into Interactivity::paint
This allows the content mask to correctly apply to bounds used in event handlers,
which prevents content under opaque borders from being hovered in overflow hidden
containers.

Co-Authored-By: Antonio <antonio@zed.dev>
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2023-12-20 11:43:45 -07:00
fffb30ac6d Add InteractiveElement::block_mouse which renders an "opaque" layer
Co-Authored-By: Antonio <antonio@zed.dev>
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2023-12-20 11:02:47 -07:00
Nathan SoboandAntonio dc047437c6 Don't consider any element hovered when actively dragging
Co-Authored-By: Antonio <antonio@zed.dev>
2023-12-20 10:46:36 -07:00
Nathan SoboandAntonio 5b29c89e1c Clear pending click state when dragging
Once a drag starts, we won't fire click listeners or style any elements
as active.

Co-Authored-By: Antonio <antonio@zed.dev>
2023-12-20 08:55:18 -07:00
Nathan SoboandAntonio 12bb13b9fc Perform a bounds check when allocating in the arena
This ensures we don't invoke undefined behavior when overflowing.

Co-Authored-By: Antonio <antonio@zed.dev>
2023-12-20 08:20:00 -07:00
Nathan Sobo d058515b81 Use a different frame arena for each window (#3696)
This fixes a panic that was caused by sharing the same frame allocator
for different windows.

Release Notes:

- N/A
2023-12-18 11:49:59 -07:00
Nathan Sobo 3781626379 Merge branch 'main' into arena 2023-12-15 13:22:19 -07:00
Nathan Sobo ad8165ae79 Rename draw2 -> draw_and_update_state 2023-12-14 17:20:27 -07:00
Nathan Sobo f4a954db4f Merge remote-tracking branch 'origin/main' into perf-2 2023-12-14 17:15:44 -07:00
Nathan Sobo 02606d1fb9 Merge remote-tracking branch 'origin/main' into perf-2 2023-12-14 16:56:36 -07:00
Nathan Sobo d13a21c238 Don't move in paint 2023-12-14 15:15:18 -07:00
Nathan Sobo fb3382bcc5 Merge remote-tracking branch 'origin/main' into perf-2 2023-12-14 14:16:59 -07:00
Nathan Sobo 0dd6c50a20 Use FxHashMap for element state 2023-12-14 14:06:19 -07:00
Nathan Sobo 3d1dae9a06 Make z_indices bigger in StackingOrder 2023-12-14 11:37:48 -07:00
Nathan Sobo 0d30b698a4 Don't allocate interactive bounds 2023-12-14 11:28:52 -07:00
Nathan Sobo 1ae25f52a1 WIP 2023-12-14 10:31:45 -07:00
Nathan Sobo 6f17cf7337 WIP 2023-12-14 09:25:14 -07:00
Nathan Sobo c863227dc2 Log frame timings 2023-12-13 18:44:21 -07:00
Nathan Sobo 1e4a7e6ef1 Don't notify when drawing 2023-12-13 16:05:34 -07:00
Nathan Sobo 213ed2028c Get more of chat panel compiling, but lots of todos 2023-12-08 12:31:07 -08:00
Nathan Sobo d7473ad6e7 Document geometry module and replace zero method with default (#3515)
Nothing earth-shattering here, but all our geometry types are now fully
documented.

Release Notes:

- N/A
2023-12-06 12:52:41 -07:00
Nathan Sobo ac07e230fa Document geometry 2023-12-06 12:28:44 -07:00
Nathan Sobo d2fe9f8f9b Merge remote-tracking branch 'origin/main' into app-menus 2023-12-05 16:54:38 -07:00
Nathan Sobo c9dd6b879c Fix cmd-n in the project panel context menu and bind global workspace actions (#3491)
This PR binds the `workspace::NewFile` action only in the `Workspace`
context. It previously was bound globally, which caused us to hijack the
`cmd-n` binding when the context menu was visible in the project panel.
In the process, we also added some other global workspace actions and
move some other global bindings to be bound only on `Pane` and
`Workspace`.

Release Notes:

- N/A
2023-12-05 16:52:39 -07:00
Nathan SoboandMarshall 65bb05af4c Merge main
Co-Authored-By: Marshall <marshall@zed.dev>
2023-12-05 16:47:13 -07:00
Nathan SoboandMarshall 82534b6612 Get app menus basically working
- Everything is still disabled when there is no active window.

Co-Authored-By: Marshall <marshall@zed.dev>
2023-12-05 16:37:01 -07:00
79567d1c87 Add AppContext::dispatch_action and use it for app menu actions
Co-Authored-By: Marshall <marshall@zed.dev>
Co-Authored-By: Julia <julia@zed.dev>
2023-12-05 15:49:06 -07:00
Nathan Sobo 631e264e3c Start on app menus 2023-12-05 13:17:59 -07:00
Nathan Sobo dffe0ea058 Reintroduce menu-related platform callbacks 2023-12-05 09:23:24 -07:00
Nathan SoboandMax 0edd89a92f Bind CloseWindow and Open actions on workspace
Co-Authored-By: Max <max@zed.dev>
2023-12-01 16:17:48 -07:00
Nathan Sobo 6f7995c150 Enable workspace::Open global action 2023-12-01 16:08:57 -07:00
Nathan SoboandMax 379ba620b2 Move workspace bindings to workspace context
Without this, hitting cmd-n on the context menu in the project browser
invokes the workspace::NewFile action instead of the project::NewFile
action. We're considering changing the behavior so that bindings with no
context can only invoke global actions.

Co-Authored-By: Max <max@zed.dev>
2023-12-01 15:59:40 -07:00
Nathan Sobo c23f17ee0b Reorganize element-related traits 2023-11-22 11:19:43 -07:00
Nathan Sobo 33cd6f520a Clean compile with redesigned element traits 2023-11-18 21:51:47 -07:00
Nathan Sobo 0673606de8 WIP 2023-11-18 20:22:43 -07:00
Nathan Sobo adc355a1e6 Element refinement passing on ui2 2023-11-18 20:05:47 -07:00
Nathan Sobo be33f000e2 WIP: Lots of errors, starting on resurrecting derive Element 2023-11-18 00:27:40 -07:00
Nathan Sobo 23ffce9fbe WIP: Work toward eliminating Component trait
This refactor enhances the overall design by promoting reusable and composable UI component structures within the Zed project codebase.
2023-11-18 00:03:23 -07:00
Nathan Sobo 2515bbf990 Move self in Element::paint
Remove mutable state borrows in favor of state ownership in render processes to streamline element rendering.
2023-11-17 23:32:55 -07:00
Nathan Sobo 0069dd5ce6 WIP 2023-11-17 20:05:37 -07:00
Nathan Sobo c866c211b5 Make static str and SharedString implement Element 2023-11-17 13:48:01 -07:00
Nathan Sobo 2fb13cf1ca Separate WrappedLines from ShapedLines (#3350)
ShapedLines are never wrapped, whereas WrappedLines are optionally
wrapped if they are associated with a wrap width. Originally, when
rewriting GPUI, I tried to combine everything because wrapping is
inherently optional for the Text element, but we have a bunch of APIs
that don't make sense on a line that may wrap, so we need a distinct
type for that case.

This is a precursor to implementing clickable links in markdown. I
noticed multiple places where we were confused about whether or not the
line was wrapped so this felt important.

Release Notes:

- N/A
2023-11-16 23:20:35 -07:00
Nathan Sobo 9558da8681 Separate WrappedLines from ShapedLines
ShapedLines are never wrapped, whereas WrappedLines are optionally wrapped if
they are associated with a wrap width. I tried to combine everything because
wrapping is inherently optional for the Text element, but we have a bunch of
APIs that don't make sense on a line that may wrap, so we need a distinct type
for that case.
2023-11-16 23:10:51 -07:00
Nathan Sobo e5ada92b7b Remove initialize from the Element trait (#3338)
Initially, we imagined registering keyboard handlers in the initialize
phase so we would understand the relationships between focus handles
during the layout pass, which would allow us to assign assign `focus_in`
styles that impact layout.

However, we soon realized that many elements aren't created until paint
time anyway, such as within the uniform list. Since it's impossible to
know prior to paint whether an element contains the focused element, it
makes more sense to eliminate the `focus_in` styling helper.

Release Notes:

- N/A
2023-11-15 19:36:35 -07:00
Nathan Sobo 4f09633379 Remove focus_in styling helper 2023-11-15 14:17:49 -07:00
Nathan Sobo c6b374ebc9 Remove initialize method from Element trait 2023-11-15 14:11:19 -07:00
Nathan Sobo e37d7f5b0e Fix click events by notifying when we assign pending_mouse_down (#3329)
We need to notify when we set the pending mouse down so we attach the
mouse up event listener before the mouse button is released.

Release Notes:

- N/A
2023-11-14 19:55:23 -07:00
Nathan Sobo 32ad486a8e Document contexts 2023-11-14 19:52:51 -07:00