Tweak the `ansi.*magenta` colours so they are not confused with
`ansi.*red`. This matches how "One Light" behaves, where `ansi.*magenta`
uses the same purple as for keyword.
This change helps distinguish anything that the terminal might use
magenta for from errors, and helps make more readable the output of
certain tools.
For maintainers: The color for `ansi.magenta` is the same as for
`syntax.keyword`. The others are modifications on that colour to taste.
If you have some specific shades that need to be used please tell me, or
feel free to take over the PR.
Before: `jj log` and `difftastic` output
<img width="863" height="592" alt="Screenshot 2025-07-31 at 19 32 11"
src="https://github.com/user-attachments/assets/994b1cbd-ff64-4620-bd51-a5073fd6eb2a"
/>
After:
<img width="862" height="558" alt="Screenshot 2025-07-31 at 19 35 33"
src="https://github.com/user-attachments/assets/49dfb856-6b63-4498-8779-b8624230d6a3"
/>
Release Notes:
- N/A
---------
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
- Improved colors
- Blank out diff hunk gutter highlights in conflict regions
- Paint conflict marker highlights all the way to the gutter
Release Notes:
- Improved the highlighting of merge conflict markers in editors.
---------
Co-authored-by: Marshall Bowers <git@maxdeviant.com>
Co-authored-by: Cole Miller <cole@zed.dev>
Here’s how it looks after the fix:
.
White is white and black is black, as intended.
In some cases, dimmed colors were poorly defined, so I took
`text.dimmed` values.
Note that white is defined exactly as the background color for light
themes. Similarly, black is the exact background color for dark themes.
I didn’t change this, but many themes intentionally make white and black
slightly different from the background color. This prevents issues where
programs assume, say, a dark background and set the foreground to white,
making text invisible. I'm not sure if we want to adjust these themes to
address this; just noting it here.
Closes#29379
Release Notes:
- Fixed ANSI black and ANSI white colors in built-in themes
While the `.{variants}` of the theme keys _were_ incorrect, they are
actually more consistent with our current theme keys (thanks AI!) So we
will keep theme, and fix the incorrect usages in the one themes and
elsewhere.
Old description:
>
> This PR fixes an issue where we specified the incorrect theme keys
(thanks AI!) > in the theme schema. The following keys have been changed
to their correct > versions:
>
> | Before | After |
> |-------------------------------|-------------------------|
> | version_control.added | version_control_added |
> | version_control.deleted | version_control_deleted |
> | version_control.modified | version_control_modified|
> | version_control.renamed | version_control_renamed |
> | version_control.conflict | version_control_conflict|
> | version_control.ignored | version_control_ignored |
>
> Please use the after versions in your themes, as they are correct!
>
> We won't be adding secondary keys to fix this automatically as git
only > officially launched today.
>
> Due to this change, we've also updated the version control keys in the
One > themes to keep the default diff hunks looks from changing.
Closes#26572
Release Notes:
- theme: Fixed an issue where version control colors weren't applying
correctly.
This PR changes the color used for `@variable` syntax highlights in the
Gruvbox themes to be less intense.
We now use the same color as `editor.foreground`.
| Language | Before | After |
| -------- |
-----------------------------------------------------------------------------------------------------------------------------------------------------
|
-----------------------------------------------------------------------------------------------------------------------------------------------------
|
| Rust | <img width="1410" alt="Screenshot 2025-02-24 at 10 08 41 AM"
src="https://github.com/user-attachments/assets/9a34964d-9fdc-4deb-ac30-4a1c9e6fb531"
/> | <img width="1410" alt="Screenshot 2025-02-24 at 10 55 18 AM"
src="https://github.com/user-attachments/assets/c245d0fd-28af-42b8-93f6-48cb14671d94"
/> |
| Python | <img width="1410" alt="Screenshot 2025-02-24 at 10 08 38 AM"
src="https://github.com/user-attachments/assets/8f8d111e-1d50-4229-a333-eb29b6ce9f4f"
/> | <img width="1410" alt="Screenshot 2025-02-24 at 10 55 20 AM"
src="https://github.com/user-attachments/assets/010b661e-dc9e-4ccb-8e52-ee10c8eb8342"
/> |
In #25333 and #25331 the highlight used for identifiers in Rust and
Python, respectively, was changed to `@variable`, which resulted in the
intense colors you see in the "Before" screenshots above.
We considered reverting the highlight query changes to those languages,
but after taking a look at our other languages, they already use similar
queries. Instead we're adjusting the theme to make these cases less
visually intense.
Release Notes:
- Gruvbox themes: Changed the color used for `@variable` syntax
highlights to be less intense.
This reverts commit 2f416aebbe.
We shouldn't have merged this yet, as it currently breaks syntax
highlighting for some languages that haven't had their requisite changes
merged yet.
We also need to be aware of the impact this will have on downstream
themes.
@chbk We should bundle any changes to the themes with the specific
language highlights that depend on those changes (and if there are
multiple languages that need the same change then pick one language to
come first and then stack the rest of the changes on top of that).
Release Notes:
- Community: This is a revert of
https://github.com/zed-industries/zed/pull/25323, so remove those notes
from the release notes.
We've decided to go in a different direction on indicating the staged
status of hunks, so go back for now to a world where we don't display
staged and unstaged hunks differently outside the (still gated) project
diff editor.
cc @iamnbutler
This reverts commit 8c202b3b09.
Release Notes:
- N/A
This PR removes Zed legacy themes – all themes except `One` and
`Gruvbox`.
These will likely be renamed in the future (to something like `Zed One`,
`Zed Gruvbox` to allow the original authors of those themes to provide
their own official versions.)
You can grab the
[`zed-legacy-themes`](https://github.com/zed-extensions/legacy-themes)
extension if you would like to continue using one of these themes.
## How to install the extension:
- Go to the extension store (`zed: extensions`, cmd+shift+x on macOS)
- Search for the `Zed Legacy Themes` extension and install it.
- Now the themes will be installed (with names like `Zed Legacy:
Andromeda`)
Release Notes:
- A number of themes are no longer installed in Zed by default:
`Andromeda`, `Atelier`, `Rosé Pine`, `Sandcastle`, `Solarized` &
`Summercamp`. If you would like to continue using one of these
extensions: 1. Open `zed: extensions`, 2. Install the
`zed-legacy-themes` extension. 3. Re-select your desired theme.
Co-authored-by: maxdeviant <elliott.codes@gmail.com>
This enables having a dedicated color for the line number hover state.
That's relevant because line numbers can now be clicked to jump to
cursor location in multibuffers.
Release Notes:
- N/A
---------
Co-authored-by: João Marcos <marcospb19@hotmail.com>
Follow up to https://github.com/zed-industries/zed/pull/21593
This PR updates all built-in themes `panel.focused_border` tokens using
the same HEX code used for `text_accent`.
There shouldn't be any visual change here given the project panel item,
when focused, was using `Color::Selected`, which maps to `text_accent`,
to color its border. In the linked PR above, the project panel item was
updated to use the dedicated token for that. This is good because now
theme markers will be able to customize them separately (e.g., having a
different `text_accent` color than `panel.focused_border`).
Release Notes:
- N/A
Lily over on discord noticed two of the colors in our Solarized themes
were off by a single point. The two colors are nearly indistinguishable,
so we might as well unify them.
This PR does exactly that.
Release Notes:
- N/A
Closes#5334Closes#15521
Improve contrast across the board in default One themes.
We are currently building out some theme tools to make improvements to
contrast and tweaking themes in general easier, so these should continue
to improve over time.
**Light**
Before | After

**Dark**
Before | After

**Note 1**: there are more improvements to be made, but this should deal
with the most egregious issues.
Release Notes:
- Improved contrast in default One themes
Builds on top of existing work from #2249, but here's a showcase:
https://github.com/zed-industries/zed/assets/53836821/4b346965-6654-496c-b379-75425d9b493f
TODO:
- [x] handle line wrapping
- [x] implement handling in multibuffer (crashes currently)
- [x] add configuration option
- [x] new theme properties? What colors to use?
- [x] Possibly support indents with different colors or background
colors
- [x] investigate edge cases (e.g. indent guides and folds continue on
empty lines even if the next indent is different)
- [x] add more tests (also test `find_active_indent_index`)
- [x] docs (will do in a follow up PR)
- [x] benchmark performance impact
Release Notes:
- Added indent guides
([#5373](https://github.com/zed-industries/zed/issues/5373))
---------
Co-authored-by: Nate Butler <1714999+iamnbutler@users.noreply.github.com>
Co-authored-by: Remco <djsmits12@gmail.com>
This PR updates the color of the label used for Git-aware items to use
the `ignored` color from the theme when the item is ignored by Git.
The built-in themes have had their `ignored` color updated to match
`text.disabled`, as the existing `ignored` color did not sufficiently
differentiate from non-ignored items.
Fixes#9976.
Release Notes:
- Updated items in the project panel to use the `ignored` color from the
theme when they are ignored by Git
([#9976](https://github.com/zed-industries/zed/issues/9976)).
I think bold is the least fitting font weight for inlay hints, which
should be subtle hints and not, well, bold.
If someone feels strongly about this, I can revert, but only if we add
the ability to change this per theme.
Until then: beautiful, thin, subtle inlay hints!
Release Notes:
- Improved styling of inlay hints by not making them bold in the editor.

This small inconsistency was mentioned on the discord. This fixes it.
Release Notes:
- Themes: Renamed `scrollbar_thumb.background` to
`scrollbar.thumb.background` to be consistent with other style
properties.
---------
Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>
This PR populates the `search.match_background` colors in the bundled
themes, using the values from the Zed1 themes.
Release Notes:
- Added theme-specific `search.match_background` colors to built-in
themes.
This PR changes the theme loading to use the JSON themes bundled with
the binary rather then the Rust theme definitions.
### Performance
I profiled this using `cargo run --release` to see what the speed
differences would be now that we're deserializing JSON:
**Before:** `ThemeRegistry::load_user_themes` took 16.656666ms
**After:** `ThemeRegistry::load_user_themes` took 18.784875ms
It's slightly slower, but not by much. There is probably some work we
could do here to bring down the theme loading time in general.
Release Notes:
- N/A
This PR adds serialized versions of each of the themes that currently
ship with Zed.
In a future PR we'll be looking to make these the canonical
representations of the built-in themes.
Note that we're intentionally repurposing the `theme_importer` to do
this, so that crate is a bit rough-and-ready at the moment.
Release Notes:
- N/A
This PR removes the VS Code themes from the `assets/` directory, as
we're not currently using them (and it's unlikely we will in their
current state).
Release Notes:
- N/A
This PR fixes the names of the Rosé Pine themes.
We want to keep the Unicode "é" in the theme name, both because this is
the actual name of the theme, and also to maintain parity with Zed1.
Release Notes:
- N/A
This PR adds support for adding a specific set of mappings from Zed
syntax tokens to VS Code scopes for a particular theme family.
We can use this as a fallback when we aren't otherwise able to rely on
the mappings in the theme importer, as sometimes it isn't possible to
make a specific enough matcher that works across all of the themes.
Release Notes:
- N/A