69ab1c0
Make toolbar horizontal padding more consistent (#2944)
Click to expand commit body
* increase horizontal padding of toolbar itself, remove padding that was
added to individual toolbar items like feedback button.
* make feedback info text and breadcrumbs have the same additional
padding as quick action buttons.
Release Notes:
- Fixed some inconsistencies in the layout of toolbars.
Max Brunsfeld
created
fd37351
update semantic search to show no results if search query is blank (#2942)
Click to expand commit body
Update semantic search to show no search results if search query is
blank
eb8cf7c
Start indexing right away when project was already indexed before (#2941)
Click to expand commit body
Release notes:
- Improved semantic search indexing to start in the background if the
project was already indexed before.
Antonio Scandurra
created
fedec2d
Rework how we track projects and worktrees in semantic index (#2938)
Click to expand commit body
This pull request introduces several improvements to the semantic search
experience. We're still missing collaboration and searching modified
buffers, which we'll tackle after we take a detour into reducing the
number of tokens used to generate embeddings.
Release Notes:
- Fixed a bug that could prevent semantic search from working when
deploying right after opening a project.
- Fixed a panic that could sometimes occur when using semantic search
while simultaneously changing a file.
- Fixed a bug that prevented semantic search from including new
worktrees when adding them to a project.
Fix token count for OpenAIEmbeddings
Release Notes (Preview Only)
- update token count calculation for truncated OpenAIEmbeddings
- increased request timeout for OpenAI
Kyle Caverly
created
3b173b6
Allow call events to be logged without a room id (#2937)
Click to expand commit body
Prior to this PR, we assumed that all call events needed a room_id, but
we now have call-based actions that don't need a room_id - for instance,
you can right click a channel and view the notes while not in a call. In
this case, there is no room_id. We want to be able to track these
events, which requires removing the restriction that requires a room_id.
Release Notes:
- N/A
a2e91e4
Use preview server when not on stable (#2909)
Click to expand commit body
This PR updates our client code to connect to preview whenever we're not
on stable. This will make it more likely that we'll be able to
collaborate on a dev build, but obviously won't work if there's a
protocol change on main that hasn't made its way to preview yet.
This PR ships a series of optimizations for the semantic search engine.
Mostly focused on removing invalid states, optimizing requests to
OpenAI, and reducing token usage.
Release Notes (Preview-Only):
- Added eager incremental indexing in the background on a debounce.
- Added a local embeddings cache for reducing redundant calls to OpenAI.
- Moved to an Embeddings Queue model which ensures optimal batch sizes
at the token level, and atomic file & document writes.
- Adjusted OpenAI Embedding API requests to use provided backoff delays
during Rate Limiting.
- Removed flush races between parsing files step and embedding queue
steps.
- Moved truncation to parsing step reducing the probability that OpenAI
encounters bad data.
This should have no user-visible impact.
For vim `.` to repeat it's important that actions are replayable.
Currently editor::MoveDown *sometimes* moves the cursor down, and
*sometimes* selects the next completion.
For replay we need to be able to separate the two.
Because of the way we set up tools that add rows inside the toolbar it
is complicated to tighten up the spacing inside the toolbar.
This PR just reverts the changes I made previously. We'll need to
properly add rows below the toolbar instead of rendering search inside
of it to have non-equal height tools be able to descend from it.
Release Notes:
- Preview – Fixed an issue where search filters were partially cut off
in the UI.
This should have no user-visible impact.
For vim `.` to repeat it's important that actions are replayable.
Currently editor::MoveDown *sometimes* moves the cursor down, and
*sometimes* selects the next completion.
For replay we need to be able to separate the two.
8dbc0fe
update pragma settings for improved database performance
KCaverly
created
da16167
Fix find_{,preceding}boundary to work on buffer text (#2912)
Click to expand commit body
Fixes movement::find_boundary to work on the buffer, not on display
points.
The user-visible impact is that the "until end of word" commands now
correctly go to the end of a soft-wrapped word (instead of to the first
character of the wrapped line).
It also fixes a bug where the callback passed to these methods was
called with the content of inlay hints.
[[PR Description]]
Release Notes:
- fix finding end of word on soft-wrapped lines
524533c
flush embeddings queue when no files are parsed for 250 milliseconds
Click to expand commit body
Co-authored-by: Antonio <antonio@zed.dev>
KCaverly
and
Antonio
created
c4db914
move embeddings queue to use single hashmap for all changed paths
Click to expand commit body
Co-authored-by: Antonio <me@as-cii.com>
KCaverly
and
Antonio
created
2bf417f
Avoid duplicate entries in inline assistant's prompt history (#2926)
Click to expand commit body
Release Notes:
- Improved the inline assistant's prompt history to avoid including the
same entry multiple times. (preview-only)
Antonio Scandurra
created
d868ec9
Avoid duplicate entries in inline assistant's prompt history
Antonio Scandurra
created
7bcc59c
Remove the concept of a local clock; use lamport clocks for all per-replica versioning (#2924)
Click to expand commit body
### Background
Currently, our CRDT uses three different types of timestamps:
| clock type | representation | purpose |
|-----|----------------|----------|
| `Local` | replica id + u32 | uniquely identifies operations |
| `Lamport` | replica id + u32 | provides a consistent total ordering
for all operations |
| `Global` | N local clocks | fully defines the partial ordering between
all concurrent operations |
All text operations include *each* type of timestamp. And every
`Fragment` in a buffer's fragment tree contains both a local and a
lamport timestamp.
### Change
An operation can be uniquely identified by its lamport timestamp, so we
don't really need a concept of a local timestamp. In this PR, I've
removed the concept of a local timestamp. Version vectors
(`clock::Global`) now store vectors of *lamport* timestamps.
Eliminating local timestamps reduces the memory footprint of a buffer by
four bytes per fragment, reduces the size of our `UpdateBuffer` RPC
messages, and reduces the amount of data we need to store in our
database for channel buffers. It also makes our CRDT a bit easier to
understand, IMO, because there is now only one scalar value that we
increment per replica.
It's possible I'm missing something here though. @as-cii, @nathansobo
it'd be good to get your 👀
Max Brunsfeld
created
1e60454
Renumber protobuf fields, bump protocol version
Max Brunsfeld
created
03f0365
Remove local timestamps from CRDT operations
Click to expand commit body
Use lamport timestamps for everything.
Max Brunsfeld
created
afa59ab
WIP: work towards wiring up a embeddings_for_digest hashmap that is stored for all indexed files
KCaverly
created
00aae5a
Assistant: propagate cancel action if there is no pending inline assist (#2923)
Click to expand commit body
Release Notes:
- Fixed a bug where modals could not be dismissed with `escape` when
certain views were active in the workspace (preview only).
Max Brunsfeld
created
eecd4e3
Propagate Cancel action if there is no pending inline assist
Max Brunsfeld
created
50cfb06
fill embeddings with database values and skip during embeddings queue