Commit Graph
40140 Commits
Author SHA1 Message Date
yenru0 74405573c9 gwen: Rebrand documentation to Gwen
Rewrite product prose and local path/command examples across the docs
to match the shipped application (gwen CLI, Gwen config paths, Gwen.app,
com.yrkaierx.Gwen). Upstream distribution channels, service URLs and
package identifiers stay factually intact.
2026-09-29 09:24:34 +09:00
yenru0 fe62a99bf5 gwen: Purge remaining Zed branding from user-facing surfaces
Sweep every user-visible product string to Gwen: app menus (Quit,
Hide, Gwen Repository), feedback links (repo/issues now point at
github.com/kk376/zed, email to yenru@yrkaierx.com), move-to-Applications
and update dialogs, provider and settings copy, CLI help, installer and
desktop/flatpak/snap/plist metadata.

Rename user-facing settings values with back-compat aliases: base_keymap
"Gwen" (accepts "Zed"), fonts ".GwenMono"/".GwenSans" (accept
".ZedMono"/".ZedSans"), icon theme "Gwen (Default)". Fix F10
app-menu keymap arguments to "Gwen" and align the Windows installer
AppMutex with release_channel::app_identifier(). Internal identifiers,
wire protocol names, upstream service URLs and legal attribution are
intentionally kept.
2026-09-29 09:24:34 +09:00
yenru0 faa11dea4c gwen: Add background image picker to onboarding
Add a Background section to the welcome page: a file picker writes
background.path into user settings, a Clear button removes it, and the
chosen image is previewed in place. No default background is set; fit,
position and opacity remain in the Settings page.
2026-09-29 08:19:52 +09:00
yenru0 4e15e1e0ed gwen: Point macOS bundle metadata at Gwen icons
The icon rename removed app-icon-*.png but left the cargo-bundle
metadata referencing them, so bundle-mac could not produce an app
bundle. Point every channel at app-icon-gwen*.png, align bundle
identifiers and names with release_channel (com.yrkaierx.Gwen*), and
rename the DMG artifact and volume to Gwen.
2026-09-29 08:09:05 +09:00
yenru0 b2d4f99845 gwen: Add Gwen theme family and make it the default
Bundle Gwen Dark (Hallowed Night) and Gwen Light in assets/themes/gwen,
derived from the champion's canon palette: hallowed mist cyan for
accents/functions, Gwen blue for types, violet for keywords, Camavor
gold for constants, pink-stitching rose for properties, mist mint for
strings over a Black Mist night base.

Set Gwen as the default theme pair in settings and the shipped settings
templates, surface it as the first tile in the onboarding theme picker
and the theme preview gallery, and guard the family with a bundled
theme regression test.
2026-09-29 08:08:44 +09:00
yenru0 38490b4554 image_viewer: Fix PDF annotation tooling feedback and blank-space drags
- Show the armed tool on the annotation palette via the button's
  selected state; the previous selected_label workaround never rendered
  because the selected state was never set
- Switch the page cursor to a crosshair while the pen tool is armed
- Let highlight and text drags start on blank space and form the
  selection when the drag reaches text instead of dying silently
- Cover the palette click, highlight, pen, and blank-space drag flows
  with a hermetic test
2026-09-25 04:33:25 +09:00
yenru0 de4affc638 image_viewer: Make the outline panel width adjustable
- Add a drag handle on the outline panel's right edge that resizes the
  panel between 120 and 480 pixels
- Track the drag on the surrounding row so the pointer can roam, and
  clamp the width to keep the panel usable
- Keep the chosen width while toggling the panel and inherit it when
  the view is split
2026-09-25 01:56:32 +09:00
yenru0 1b2685ac9b image_viewer: Preserve PDF state across page changes
- Add ImageItemEvent::PageChanged and emit it from ImageItem::set_page
  instead of Reloaded and MetadataUpdated, since turning a page does not
  change the document bytes
- Handle PageChanged in ImageView by only refreshing layout state,
  keeping the outline, page and thumbnail caches, form edits, undo
  history, and annotations intact
- Jumping via the outline no longer resets the outline panel to
  "No outline"
2026-09-25 01:30:39 +09:00
yenru0 ad13ed3b7d gwen: Embed Gwen icon and product metadata in Windows binaries
- Map the dev release channel to app-icon-gwen.ico and product name
  Gwen in the Windows version resource instead of the upstream Zed Dev
  icon and name
- Set CompanyName to yrkaierx to match the installer's AppPublisher
2026-09-24 22:28:03 +09:00
yenru0 8cbbb66e97 image_viewer: Undo and delete PDF annotations
- Every committed document edit (annotations and form entries) pushes the
  previous state onto a bounded history, so ctrl-z, the annotation
  palette's Undo button, and the context menu's "Undo Edit" walk back
  through them; undoing past the first edit returns to the file's bytes.
- Right clicking an annotation offers "Delete Annotation". The engine
  lists a page's markup annotations (links, widgets, and popups are
  excluded) and removes the one under the pointer by its annotation index.
- The palette's Undo button is disabled while the history is empty, and
  every edit clears the annotation cache that hit testing reads.
2026-09-24 12:36:13 +09:00
yenru0 37750c24e2 image_viewer: Highlight and draw on PDFs
- A toolbar toggle opens an annotation palette with select, highlight,
  and pen tools plus four highlight colours.
- The highlight tool turns a text drag into highlight annotations, one
  per page the selection spans, and clears the selection afterwards.
- The pen tool records a freehand stroke while dragging and commits it as
  an ink annotation on release; the live stroke paints over the page.
- Links and form fields only take clicks while the select tool is armed,
  and committed annotations share the edited-bytes path, so they travel
  into the saved copy and into the rasterized pages.
- The engine layer appends quad points through pdfium's attachment-point
  API and lets pdfium generate the highlight and ink appearances, which
  keeps them rendering correctly at any zoom.
2026-09-24 04:53:22 +09:00
yenru0 0fd48144f9 image_viewer: Fill PDF forms
- Form widgets appear as overlays over the rasterized field appearances:
  text fields take an inline editor (Enter commits, Escape leaves),
  checkboxes and radios toggle on click, and dropdowns open their options.
- Committed edits rewrite the document once and swap renders over to the
  rewritten bytes, so filled values are visible immediately and travel
  into the saved copy.
- The engine layer drives pdfium's form API through the public bindings
  trait, with RAII guards for the document, form environment, page, and
  annotation handles, and it reports unmatched field names instead of
  dropping edits silently.
2026-09-24 04:37:23 +09:00
yenru0 46d628e9c7 image_viewer: Select PDF text by character
- Selections are character ranges backed by pdfium character boxes,
  fetched per page on demand and cached, so a drag stops mid-word and
  copy yields the exact substring.
- Double clicks select the word under the pointer and right clicks
  outside the selection select the word before opening the context menu.
- Highlight runs merge neighbouring characters on a line, keeping the
  painted quad count low, and margins clicks resolve to the nearest glyph.
- Saving a copy of the document is available from the toolbar, the
  context menu, and ctrl-s; picking the opened file itself is a no-op.
2026-09-24 04:09:43 +09:00
yenru0 ebf342c60b image_viewer: Add properties panel, page rotation, and presentation mode
- Document properties render as a sidebar with everything pdfium reports:
  title, author, subject, keywords, creator, producer, dates, page count,
  and file size.
- Rotating pages turns all of them a quarter turn. Rendered bitmaps carry
  the rotation, overlay geometry (links, selection, find hits) is mapped
  into display space, and hit testing maps clicks back into page space.
- Presentation mode lays out a single fitted page with sidebars, find bar,
  and page labels hidden; Escape leaves it.
- Fit to view now also works for PDFs by fitting the current page into the
  viewport, which previously only applied to images.
2026-09-24 04:00:15 +09:00
yenru0 d6d891bd5c image_viewer: Add PDF thumbnails and outline sidebars
- Page thumbnails render at a small DPI into their own cache and only for
  the visible scroll window, mirroring the page viewport's lazy rendering.
- The document outline extracts on first open and renders as an indented
  tree; entries with destinations jump the viewport, unresolvable ones stay
  visible but inert.
- Both panels share the left sidebar and are mutually exclusive, and the
  page bitmap window helper is now shared with the main viewport.
2026-09-24 03:57:44 +09:00
yenru0 818b00d47e image_viewer: Add PDF find in document and internal link jumps
Chrome-parity navigation work for the PDF viewer:

- Find in document (ctrl-f): query editor, match counter, Enter/Shift+Enter
  and ctrl-g navigation, yellow highlights with a stronger tint on the
  active match, and a page jump per match.
- Internal link destinations: pdfium now reports dest_page for GoTo links,
  so clicking a link that points inside the document jumps to that page
  instead of being dropped.
- Space/Shift+Space scroll the viewport a screen at a time, unless the
  find bar has focus so the query stays typeable.
2026-09-24 03:45:02 +09:00
yenru0 c8b11be511 gwen: Ship pdfium license notices in bundles 2026-09-23 23:14:41 +09:00
yenru0 25703f24dd gwen: Disable sign in by default and show upstream baseline in About 2026-09-23 19:51:29 +09:00
yenru0 eb2c399f24 gwen: Sweep remaining user-visible Zed strings 2026-09-23 10:16:19 +09:00
yenru0 39abdad320 gwen: Escape AppId brace for Inno Setup 2026-09-23 05:04:19 +09:00
yenru0 1521cc7f3f gwen: Extract conpty nupkg with tar on Windows PowerShell 5.1 2026-09-23 04:35:29 +09:00
yenru0 aa69163256 gwen: Bundle pdfium runtime in Windows installer 2026-09-23 04:06:21 +09:00
yenru0 6a26f35739 gwen: Adapt Windows bundle pipeline for Gwen 2026-09-23 03:03:29 +09:00
yenru0 2ad867cd0b gwen: Embed Gwen icon in about window and test runner 2026-09-23 01:47:04 +09:00
yenru0 e5a89be25c gwen: Point build script icon path at Gwen asset 2026-09-23 01:41:13 +09:00
yenru0 b5f0951720 remote: Reuse pre-rename zed_server binaries on hosts 2026-09-23 01:37:58 +09:00
yenru0 9318ba692f gwen: Remove unused Zed app icons 2026-09-23 00:18:10 +09:00
yenru0 7d89a22c0c gwen: Drop channel prefix from version output 2026-09-22 23:19:16 +09:00
yenru0 3e046788b5 gwen: Rebrand to Gwen 1.0.0 with independent identity and environment 2026-09-22 22:46:11 +09:00
yenru0 e39622d51c bundle: Ship pdfium runtime library for native PDF viewing 2026-09-22 19:52:41 +09:00
yenru0 617a8d3814 Merge remote-tracking branch 'kk376/feat/pdf-viewer' into pdf-viewer
# Conflicts:
#	README.md
2026-09-22 19:48:31 +09:00
yenru0 fa7c57817c release: Bump custom version to 1.22.0-Y1 2026-09-22 13:50:30 +09:00
yenru0 2abcfff462 remote: Upload bundled remote server binary to hosts without one 2026-09-22 13:25:33 +09:00
yenru0 baf7acb0bc merge: Update Cargo.lock for 1.22.0-Y0 2026-09-22 13:22:09 +09:00
yenru0 f1ba3ea49f Merge remote-tracking branch 'origin/main'
# Conflicts:
#	Cargo.lock
#	crates/settings_content/src/settings_content.rs
#	crates/zed/Cargo.toml
#	script/bundle-linux
2026-09-22 13:17:50 +09:00
yenru0 06b53ae438 bundle: Ship install/uninstall scripts and enable remote server provisioning 2026-09-22 13:16:30 +09:00
linyisuandChristopher Biscardi 8e29ede557 editor: Paint block cursor text upon arrival during animation (#64521)
Follow-up to #63195.

# Objective
When `cursor_animation` is enabled, moving a block cursor (e.g. in Vim
mode) leaves the character underneath hidden until the spring animation
fully finishes, after which the letter pops in.
This happens because `CursorLayout::paint` returned early while
animating, skipping `block_text`.

## Solution
Paint `block_text` upon the animated cursor's arrival at the target
cell, rather than waiting for the entire spring settling phase to
complete:
- Check if any animated corner has reached the target bounds
(`bounds.dilate(...)`).
- If the cursor is still in mid-air, return early so we don't draw the
destination letter prematurely.
- Once it touches the target cell, fall through and paint `block_text`
over the cursor polygon.

## Self-Review Checklist:
- [x] I've reviewed my own diff for quality, security, and reliability
- [ ] Unsafe blocks (if any) have justifying comments
- [x] The content adheres to Zed's UI standards
([UX/UI](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
and
[icon](https://github.com/zed-industries/zed/blob/main/crates/icons/README.md)
guidelines)
- [ ] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

## Showcase
Left: before, Right: after


https://github.com/user-attachments/assets/7057f40a-64a7-4035-b8e2-7c0b7dc40069

---

Release Notes:
- Fixed an issue where the block cursor hid the character underneath
until cursor animation completed.

---------

Co-authored-by: Christopher Biscardi <chris@christopherbiscardi.com>
2026-09-22 03:48:24 +00:00
Agus Zubiaga 9d801eec7a gpui_linux: Force a full render on X11 Expose after GPU recovery (#64570)
# Objective

Zed on X11 could crash with `index out of bounds: the len is 0 but the
index is 0` in `WgpuAtlas::get_texture_info` right after recovering from
a lost GPU device (Sentry ZED-BVQ, Linear FR-488).

## Solution

When the device is lost, `X11Window::draw` recreates the renderer, which
clears the sprite atlas, and sets `force_render_after_recovery` so the
next frame rebuilds the scene instead of replaying the cached one. Only
the periodic refresh timer consumed that flag though. An `Expose` event
handled in the same event loop turn (a compositor repainting after the
same GPU reset, for example) requested a presentation-only frame with
`force_render: false`, so GPUI presented the previously rendered scene,
whose sprites still pointed at atlas textures that no longer exist.

We now consume the flag in `X11WindowStatePtr::refresh`, so every frame
request, Expose or timer, forces a full render after recovery. The field
is private now so a caller can't bypass it again.

## Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content adheres to Zed's UI standards
([UX/UI](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
and
[icon](https://github.com/zed-industries/zed/blob/main/crates/icons/README.md)
guidelines)
- [ ] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

---

Release Notes:

- Fixed a crash on Linux (X11) that could occur when a window was
redrawn immediately after recovering from a lost GPU device.
- [GPUI] Fixed a crash on Linux (X11) when an `Expose` event presented a
cached frame immediately after GPU device recovery.
2026-09-22 00:11:23 +00:00
Finn Evers 1df382558f xtask: Add more helpers for querying information on GPUI crates (#64333)
Primarily, add a 
- helper to easily get information on what pulls in a crate (hey Mr
Piotr we can consider moving this up in the namespace to also use this
elsewhere)
- helper to extract a list of GPUI crates in order which need publishing

Release Notes:

- N/A
2026-09-21 22:40:38 +00:00
Gautam Manchandanianddino c96197a34d diagnostics: Add back links to nearby related diagnostics (#64134)
# Objective

Fixes #63835.

Nearby related diagnostics omitted the link back to their primary
diagnostic.

## Solution

Always include the existing back link on related diagnostic blocks,
regardless of line distance. The primary diagnostic still suppresses
nearby related hints as before.

## Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content adheres to Zed's UI standards
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

---

Release Notes:

- Improved diagnostic navigation by showing back links to the primary
diagnostic even for nearby related diagnostics.

---------

Co-authored-by: dino <dinojoaocosta@gmail.com>
2026-09-21 22:05:47 +00:00
Cameron Mcloughlin 5795c06954 wgpu: Cache atlas bind groups (#64434)
Previously, we created texture atlas bind groups every frame (once per
sprite group). This showed up in delta web mobile profiling.

This PR reuses them across frames, which saved ~5% frame time on the
delta web thread view on a pixel 10 pro.

---

Release Notes:

- [GPUI]: Improved performance on wgpu by caching atlas bind groups
2026-09-21 19:24:38 +00:00
Tom Houlé 329142ebfc language_models: Remove Baseten provider (#64463)
Remove Baseten from the hosted language model provider protocol and
cloud model routing.

Release Notes:

- N/A
2026-09-21 17:57:36 +00:00
Piotr OsiewiczandAmp f2af4a2804 Reduce nightly build cadence (#64557)
Reduce the nightly release workflow from six runs per day to two runs
per day, at 02:00 and 14:00 UTC. Update both the workflow generator and
generated workflow.

Validated by regenerating workflows with `cargo xtask workflows`.

Release Notes:

- N/A

---------

Co-authored-by: Amp <amp@ampcode.com>
2026-09-21 17:23:07 +00:00
Kirill Bulatov 5a1c0e3da0 ci: Disable library backtrace capture in macOS test jobs (#64555)
Based on
https://github.com/zed-industries/zed/pull/64464#issuecomment-5763255028

With `RUST_BACKTRACE=1` set, `anyhow` captures a backtrace for every
error it constructs; on macOS this costs ~30ms per error, on Linux ~µs.
`Project::test` alone hits several such errors during setup
(`canonicalize`/`load` of the non-existent global `tasks.json` and
`debug.json`, worktree creation, buffer open), adding ~0.8s of fixed
cost per test on macOS.

`RUST_LIB_BACKTRACE=0` is checked by std before `RUST_BACKTRACE`, so
panics keep their backtraces while library error captures stop.
Set only on the macOS test jobs (`run_tests.yml`, `release.yml`), since
Linux and Windows pay nothing for the captures and keep the error-origin
backtraces in failure output.
Measured with `cargo nextest run -p editor --lib`: macOS 119s → 72s,
Linux 78s → 76s (noise).

Trade-off on macOS: a failing `.unwrap()` on an `anyhow::Error` in CI
output loses the backtrace of where the error was constructed; the panic
backtrace at the unwrap site is unaffected.

Release Notes:

- N/A
2026-09-21 16:23:34 +00:00
Dom Porada b015cdf8be Add support for the "..." entry in terminal.path_hyperlink_regexes (#64552)
## Objective

Allow custom terminal path regexes to extend inherited entries without
copying them. This PR also corrects the existing mismatch between the
documented and shipped default regexes.

This is the last submission in the #64399 series, following #62769,
#64222, #64440, #64484, and #64540.

## Solution

The `"..."` entry is intentionally supported at the top level only. A
`"..."` line inside a multiline entry remains regex text. Existing
configurations that use bare `...` as a three-character regex can
preserve that behavior by writing `["..."]` as an entry instead.

The shipped regexes and hyperlink matching behavior are unchanged.

## Testing

All focused tests and all hyperlink tests pass on macOS. The documented
default expressions were checked against the shipped values.

## Self-Review Checklist:

- [x] I’ve reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content adheres to Zed’s UI standards
([UX/UI](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
and
[icon](https://github.com/zed-industries/zed/blob/main/crates/icons/README.md)
guidelines)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

---

Release Notes:

- Added support for `"..."` in `terminal.path_hyperlink_regexes` to
extend inherited regexes without repeating them.
2026-09-21 16:10:07 +00:00
Kirill Bulatov a596e1b294 Speedup completions test (#64464)
Follow-up to https://github.com/zed-industries/zed/pull/64139 

Fixes CI flacks like
https://github.com/zed-industries/zed/actions/runs/35351932842/job/105623037967?pr=64405#step:15:7107

Halve the test runtime by avoiding the entire `MultiWorkspace` creation
and redraws.

Release Notes:

- N/A
2026-09-21 16:01:29 +00:00
Ben Brandt 50061c9cbd agent_ui: Make provider-owned terminals read-only (#64550)
Make provider-owned terminal cards read-only for user input while
preserving local inspection. This builds on the explicit terminal
ownership introduced in #64544.

- Add a construction-time `TerminalView::with_read_only` option,
selected from ACP process ownership rather than PTY presence. Existing
views remain interactive by default, including client-owned headless
terminals.
- Reject typing, send actions, paste, file/path drops, IME input,
clear/rerun actions, and focus reports in read-only views.
- Preserve selection, copying, links, scrolling, search, and local Vi
navigation. Leaving Vi mode does not enable terminal input.
- Pass an explicit mouse-routing policy to the existing lower terminal
handlers so provider-requested mouse and alternate-scroll modes cannot
consume inspection gestures. Real modifiers remain unchanged, and
Linux/FreeBSD middle-click paste is suppressed.

Release Notes:

- N/A
2026-09-21 15:37:37 +00:00
Josh Kent a18b1a1026 sidebar: Group threads sidebar settings (#64395)
## Objective

Group the threads sidebar settings together in JSON and the Settings
Editor, using consistent “Threads Sidebar” terminology.

This follows up on #63452 now that #62883 has added configurable default
width, and includes the auto-open setting added since then.

## Solution

- Group `position`, `default_width`, and `auto_open` under
`agent.threads_sidebar`, and display their controls together in
Settings.
- Automatically migrate `agent.sidebar_side`,
`agent.threads_sidebar_default_width`, and
`agent.threads_sidebar_auto_open` across supported settings scopes,
preserving existing nested values.
- Apply changes to the default width immediately, including when the
sidebar was manually resized, and clear the saved width override.
Unrelated settings changes preserve manual sizing.
- Document all three settings, including the previously missing position
entry.

## Testing

The following targeted checks passed on the local changes:

- `cargo test -p migrator nest_agent_threads_sidebar_settings` — 7 tests
passed.
- `cargo test -p sidebar -p workspace -p agent_settings -p gpui_platform
--features gpui_platform/runtime_shaders --lib -- width
threads_sidebar_settings test_open_directory_in_existing_window` — 9
tests passed.
- `cargo fmt --all` completed successfully.
- `git diff --check` passed.
- From `docs`: `npx prettier --check src/reference/all-settings.md
src/ai/parallel-agents.md` passed.

Coverage includes migration precedence and supported scopes, settings
defaults and width limits, manual sizing and resets, persisted widths,
and auto-open behavior.

Full application tests and manual UI testing were not run. Clippy was
not rerun after the final terminology changes.

## Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content adheres to Zed's UI standards
([UX/UI](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
and
[icon](https://github.com/zed-industries/zed/blob/main/crates/icons/README.md)
guidelines)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

Release Notes:

- Improved threads sidebar settings by grouping position, default width,
and auto-open together, and applying default-width changes even after
manual resizing.
2026-09-21 15:15:54 +00:00
180932e1d9 Prevent multibuffer items from switching active repository (#58795)
Fixes the git panel's active repository being silently overridden by the
cursor position in `ProjectDiff`.

Closes #58792
Closes #61530

## Summary

When a multi-buffer item (e.g. `ProjectDiff`) gains focus, the workspace
calls `set_active_repo_for_path` with the cursor's project path to
automatically switch the active git repository. This was safe when
multi-buffer items returned `None` from `active_project_path`, but PR
#57236 changed `ProjectDiff` to return the cursor-based path (for
project panel highlighting), inadvertently allowing the cursor position
to override the user's explicit repository selection.

Fix the issue by restoring the `Singleton` guard that was removed in PR
#57236: only call `set_active_repo_for_path` when the active item is
backed by a single buffer.

## Changes

- **`workspace.rs`**: Only call `set_active_repo_for_path` when the
active item's `buffer_kind` is `Singleton`. Multi-buffer items (e.g.
`ProjectDiff`, diagnostics, search results) span multiple repositories,
so their cursor position should not trigger an automatic repository
switch.

## Before


https://github.com/user-attachments/assets/6ca4fa61-b42a-447b-9de7-8b6ec1f1181a


## After


https://github.com/user-attachments/assets/9b045ad9-2bb5-4862-ac45-41e9fdd3dc96

Closes #58792

Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

Release Notes:

- Fixed the Git panel unexpectedly switching repositories when viewing
changes in multi-repository projects.

---------

Co-authored-by: Kirill Bulatov <kirill@zed.dev>
Co-authored-by: dino <dinojoaocosta@gmail.com>
2026-09-21 14:25:14 +00:00
Dom PoradaandKirill Bulatov fbd6cc5dcf Add support for "..." in edit_predictions_disabled_in (#64546)
## Objective

Let projects and language-specific settings add scopes where edit
predictions are disabled without repeating inherited scopes.

Part of #64399.

## Solution

Extend the `"..."` convention from #62769, #64222, #64440, #64484, and
#64540 to `edit_predictions_disabled_in`. For example, a global
`["comment"]` and a language override of `["string", "..."]` disable
predictions in both scopes.

Inherited scopes are inserted at `"..."`, and duplicates keep their
first occurrence. Omitting the marker replaces the list, `[]` clears it,
and omitting the setting preserves inheritance. The default remains
`[]`.

## Testing

Tested on macOS through settings loading, covering project and
language-specific overrides, inheritance, replacement, and clearing. The
language settings tests passed. Live editor behavior has not been
checked manually.

To check manually, configure global `["comment"]` and a language
override of `["string", "..."]`. Confirm predictions are disabled in
both scopes, then remove `"..."` and repeat with `[]` to check
replacement and clearing.

## Self-Review Checklist:

- [x] I’ve reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content adheres to Zed’s UI standards
([UX/UI](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
and
[icon](https://github.com/zed-industries/zed/blob/main/crates/icons/README.md)
guidelines)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

---

Release Notes:

- Added support for `"..."` in `edit_predictions_disabled_in` so project
and language-specific settings can extend inherited scopes.

---------

Co-authored-by: Kirill Bulatov <mail4score@gmail.com>
2026-09-21 14:24:18 +00:00