Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
540 commits
Select commit Hold shift + click to select a range
d066a73
ep: Avoid service files as a split point (#57603)
osyvokon May 24, 2026
13e7c11
ep: Fix bugs in the `split-commit` command (#57604)
osyvokon May 24, 2026
d3a9fd9
Make project panel to auto reveal multi buffer excerpts with latest s…
SomeoneToIgnore May 25, 2026
bc41407
Duplicates bot: Stop skipping blank issues (#57643)
zelenenka May 25, 2026
001d94d
docs: Add more information for releasing extensions (#57261)
MrSubidubi May 25, 2026
8309bc4
markdown: Support shift+click to extend text selection (#57586)
cppcoffee May 25, 2026
453b020
Rename agent threads from the sidebar (#57521)
MartinYe1234 May 25, 2026
bb460d5
Duplicate Bot: Add more context for triagers (V3) (#57647)
zelenenka May 25, 2026
786eb24
git: Recover branch refs when metadata lookup fails (#57285)
GoldStrikeArch May 25, 2026
216980f
zed: Add `OpenStatusPage` action (#57316)
MrSubidubi May 25, 2026
a8cdf1d
Batch excerpt insertions per file when opening commit view (#57330)
cole-miller May 25, 2026
6a74798
Revert "Rename agent threads from the sidebar" (#57654)
MartinYe1234 May 25, 2026
bcfbf66
git: Degrade gracefully when refreshing git state (#57292)
cole-miller May 25, 2026
2e20860
Fix git hang caused by accidental inheritance of stdin FD (#57572)
maxbrunsfeld May 25, 2026
b72e57d
Duplicate Bot: Handle failure modes better (#57663)
zelenenka May 25, 2026
a6780a5
deepseek: Simplify error mapping in DeepSeek stream_completion (#57582)
cppcoffee May 25, 2026
b865afc
Merge remote-tracking branch 'upstream/main' into feature/002029-merg…
lukemarsden May 25, 2026
f226fe7
fix(agent_ui): add code_span_resolver to from_existing_thread
lukemarsden May 25, 2026
fb97e2c
docs(porting): add Merge 002029-extension entry (287 upstream commits…
lukemarsden May 25, 2026
7ef1fa1
agent_ui: Surface pending tool call permission when scrolled out of v…
smitbarmase May 26, 2026
2984faf
Add skill import from GitHub URL (#57458)
MartinYe1234 May 26, 2026
a545702
Add icons for Bitbucket, Codeberg, Forgejo, Gitea, and GitLab remotes…
albertbogusz May 26, 2026
3e77442
Support LSP document links (#56011)
SomeoneToIgnore May 26, 2026
707c00b
Support local devcontainer features (#55225)
KyleBarton May 26, 2026
281cfdd
Clarify Lamport ordering comment in remote edit (#52037)
oinoom May 26, 2026
49fe1fc
anthropic: Pass beta header for speed in BYOK (#57707)
tomhoule May 26, 2026
63ff997
agent: Make messages vec cheap to clone (#57712)
Veykril May 26, 2026
1dac14c
Remove CRLF line endings (#57680)
probably-neb May 26, 2026
5139a6b
agent: Fix clipping in fixed-width (#57726)
cameron1024 May 26, 2026
277b22f
go_to_line: Fix go to line in multibuffers (#57700)
Veykril May 26, 2026
a0ee9fb
project_panel: Color worktree-modified files as modified, not warning…
yeskunall May 26, 2026
1a0b546
git_ui: Fix commit modal buttons hidden at small `ui_font_size` (#56366)
yeskunall May 26, 2026
511d2c4
vim: Swap q/Q in Helix mode to match Helix macro semantics (#57622)
crazydude123 May 26, 2026
158fcac
vim: Fix Helix jump on selected lines (#57565)
terror May 26, 2026
16ae765
vim: Fix `g i` and `g a` in Helix mode to match Helix semantics (#57621)
crazydude123 May 26, 2026
a60cf56
agent: Show error message of edit tool call in UI (#57722)
bennetbo May 26, 2026
e7bbfd5
vim: Fix replace in helix select mode (#57553)
terror May 26, 2026
b1bfde9
git_ui: Create new worktree on latest origin main (#57704)
bennetbo May 26, 2026
b5b52ad
buffer_diff: Remove git2 dependency from `buffer_diff` (#56013)
Veykril May 26, 2026
eb944cf
gpui: Add support for inset shadow (#57685)
danilo-leal May 26, 2026
a896669
Fix flicker of pushed-off sticky project header in threads sidebar (#…
MartinYe1234 May 26, 2026
b20cd41
languages: Use rustup rust-analyzer when toolchain override is presen…
Veykril May 26, 2026
4bee412
agent_ui: Persist external agent selections as defaults (#57511)
benbrandt May 26, 2026
5618485
gpui: Make Window::paint_*_shadows pub (#57741)
agu-z May 26, 2026
533d3d5
Recognize HIP files as C++ (#57333)
Young-TW May 26, 2026
c551ec9
Rename agent threads from the sidebar (#57656)
MartinYe1234 May 26, 2026
efacf30
lsp: Handle dynamic registration of textDocument/documentLink (#57749)
aviatesk May 26, 2026
6e9f461
Fix agent_profile_switched telemetry event name (#57739)
macraig May 26, 2026
6df9ae9
Log filesystem watcher lost sync only once per event (#57675)
osyvokon May 26, 2026
1025b13
Cap and rotate remote logs (#57672)
osyvokon May 26, 2026
7103c8c
Allow agent tools to edit global skills (#57678)
MartinYe1234 May 26, 2026
53ed11b
Iterate on skill announcement copywriting (#57532)
danilo-leal May 26, 2026
4129fc8
Fix the filtering of index.lock + COMMIT_MESSAGE FS events to work in…
maxbrunsfeld May 27, 2026
867e511
agent_ui: Show global skill paths in edits summary (#57767)
MartinYe1234 May 27, 2026
e254582
node_runtime: Tolerate non-string values in npm time metadata (#57765)
controversial May 27, 2026
5e717a0
open_ai: Support fast mode in BYOK via the Responses API service_tier…
tomhoule May 27, 2026
88a54a2
open_ai: Fix error message not showing up when using ChatGPT subscrip…
bennetbo May 27, 2026
1965d69
Fall back to default text when no command is available for the resolv…
SomeoneToIgnore May 27, 2026
a1d019b
language_models: Support fast mode on ChatGPT subscription provider (…
tomhoule May 27, 2026
75c17a6
Bump `ctor` (#57728)
Veykril May 27, 2026
6555ac3
sidebar: Improve performance of `rebuild_contents` (#57717)
Veykril May 27, 2026
f839f8e
scheduler: Fix scheduler retention cycle (#57789)
Veykril May 27, 2026
c171bba
docs: Remove settings json snippet from agent-panel.md (#57807)
bennetbo May 27, 2026
fe48ef4
Fix outline panel hangs during massive project searches (#57814)
SomeoneToIgnore May 27, 2026
b328711
agent_ui: Put fast mode behind confirmation popover (#57482)
tomhoule May 27, 2026
a718a2b
skill_creator: Make window resizable and form scrollable (#57754)
MartinYe1234 May 27, 2026
a9296b9
docs: Update information regarding rules/skills (#57824)
danilo-leal May 27, 2026
a55e3e9
agent_skills: Read SKILL.md in one shot via fs.load (#57510)
rtfeldman May 27, 2026
d2cbf93
Allow path tools to operate on global agent skills (#57760)
MartinYe1234 May 27, 2026
ceff1b2
agent_ui: Improve menu items related to rules (#57828)
danilo-leal May 27, 2026
f838eb1
git_ui: Respect global `AGENTS.md` when generating commit message (#5…
bennetbo May 27, 2026
a65e677
ep: Make `tree-sitter` dependency optional in `edit_prediction_metri…
probably-neb May 27, 2026
0464de8
skills_creator: Improve header alignment (#57834)
danilo-leal May 27, 2026
80a4042
vim: Fix dot repeat after macro replay not capturing insertion text (…
Fanteria May 27, 2026
32d0737
Add cooldown when file watch limit is reached (#57720)
osyvokon May 27, 2026
bc6a483
Add Actions to open AGENTS.md (#57847)
rtfeldman May 27, 2026
aa6062e
Stop loading deprecated agent rules (#57844)
MartinYe1234 May 27, 2026
63f725e
markdown: Merman (#57644)
cameron1024 May 27, 2026
32f2593
client: Refresh cloud models on websocket reconnect (#57528)
tomhoule May 27, 2026
b49e5f1
Avoid duplicate migrated skills (#57853)
rtfeldman May 27, 2026
9a7a5d6
docs: Update tracking issue link to discussion in README (#57793)
thomasboom May 27, 2026
9b4737b
Introduce a skill for `#[gpui::test]` (#57806)
Veykril May 27, 2026
6afac23
Speed up StreamingDiff::push_new by 30-36% (#57772)
Anthony-Eid May 27, 2026
710228e
Bump Zed to v1.6.0 (#57858)
zed-zippy[bot] May 27, 2026
7ae2446
Fix multibuffer chunk splitting at UTF-8 boundaries (#57641)
osyvokon May 27, 2026
6472f01
skill_creator: Use the status toast for confirming creation (#57855)
danilo-leal May 27, 2026
bf4e559
feature_flags: Only respect feature flag overrides for Zed staff (#57…
maxdeviant May 27, 2026
1d029c5
gpui: Accesskit support (#56065)
cameron1024 May 27, 2026
c19c89a
opencode: Model updates (#57792)
Vlaaaaaaad May 27, 2026
cbaf8e4
Speed up StreamingDiff::push_new part two (#57849)
Anthony-Eid May 27, 2026
1226e28
Add zed-cherry-pick agent skill (#57833)
rtfeldman May 27, 2026
652f13c
Document Gemini caching behavior (#57864)
morgankrey May 27, 2026
887e378
Remove leftover test a11y label (#57868)
agu-z May 27, 2026
6e58a92
Fix typo in command palette reference (#57869)
mgaitan May 27, 2026
5ec1ce7
Add sandbox crate with macOS Seatbelt integration (#57429)
rtfeldman May 27, 2026
c3b9cac
Update git2 to 0.21.0 and add support for SHA-256 object formatted re…
albertbogusz May 27, 2026
ffbda20
Render terminal sandbox section in system prompt behind feature flag …
rtfeldman May 27, 2026
f0341c9
Wrap agent terminal commands in macOS Seatbelt sandbox (#57431)
rtfeldman May 27, 2026
777e16d
gpui: Fix panic with invalid focus IDs (#57885)
cameron1024 May 28, 2026
b141288
Persist terminal tempdirs by thread (#57878)
rtfeldman May 28, 2026
6037446
helix: Fix a cursor position in helix_select mode` (#57610)
Pulkit7070 May 28, 2026
58f84cf
agent_ui: Basic terminal agent telemetry (#57259)
benbrandt May 28, 2026
bedfe32
agent_ui: Clarify multi-root agent warning text (#57874)
benbrandt May 28, 2026
6726b15
terminal: Forward Shift navigation keys to alternate-screen programs …
smitbarmase May 28, 2026
6049cea
Auto-scroll hover popup while selecting text (#57518)
danielmartin May 28, 2026
518502e
Respect override command in devcontainer (#57204)
KyleBarton May 28, 2026
8042408
ep: Collect data for staff in Zed Industries repos (#57733)
probably-neb May 28, 2026
b8c853a
ep: Fix agent edits triggering edit predictions due to diagnostic ref…
probably-neb May 28, 2026
4d6a3c7
gpui: `Application::inaccessible()` (#57954)
cameron1024 May 28, 2026
92b0efe
Update dev-containers.md (#57901)
KyleBarton May 28, 2026
f0ed342
markdown: Add frontmatter metadata block rendering (#57845)
smitbarmase May 28, 2026
d74e47e
git_ui: Fix creating worktree not possible if default branch unavaila…
bennetbo May 28, 2026
bc64e1f
copilot: Fix auth db fallback (#57764)
Anthony-Eid May 28, 2026
8304140
settings: Apply VS Code minimap default when importing settings (#56483)
cppcoffee May 28, 2026
d139a87
copilot_chat: Fix error when using GPT models (#57958)
bennetbo May 28, 2026
5abe4bc
Merge `community_champion_auto_labeler` into `pr_labeler` (#57898)
JosephTLyons May 28, 2026
ef5606b
Improve ChatGPT subscription response resilience (#57891)
morgankrey May 28, 2026
24fd101
Sort guild members case insensitively (#57977)
JosephTLyons May 28, 2026
3bb2f2a
diagnostics: Prefer activating diagnostic under cursor (#52957)
nullstalgia May 28, 2026
a6b0ee9
Add Claude Opus 4.8 support (#57984)
rtfeldman May 28, 2026
b3d93d4
anthropic: Fix serialized representation of `Effort::XHigh` (#57985)
maxdeviant May 28, 2026
ec64ba3
time_format: Show compound "N years, M months ago" for blame entries …
notJoon May 28, 2026
2bba4e2
Make notebook cells follow global font and markdown styling (#57567)
JannikRosendahl May 28, 2026
27c566c
Relicense Zed source code under GPL (#57948)
morgankrey May 28, 2026
59d8766
Show progress when deleting worktrees (#57751)
MartinYe1234 May 28, 2026
b32570d
terminal: Move PTY spawning to the background thread and retain exit …
Anthony-Eid May 28, 2026
12aacf3
Add skill share linking (#58009)
mikayla-maki May 28, 2026
e5f5767
Preserve terminal spinners in thread titles (#57983)
rtfeldman May 29, 2026
d3070bb
dev_container: Respect runServices for Docker Compose (#56293)
YauhenVasileusky May 29, 2026
486e5f7
ci: Remove garnix substitutor (#58033)
kubkon May 29, 2026
aeb5d6d
ci: Reinstate run-nix label in addition to run-bundling (#58034)
kubkon May 29, 2026
e4b8118
component_preview: Clean up `Component` trait (#57731)
MrSubidubi May 29, 2026
46845bf
edit_prediction: Skip cloud Zeta requests when not signed in (#57615)
seth-wood May 29, 2026
3d9852a
lsp: Fix duplicate workspace/didChangeConfiguration notifications (#5…
aviatesk May 29, 2026
a3669a2
nix: Fix dev shell on Darwin (#58032)
kubkon May 29, 2026
ef5da3c
Remove unused --nc flag and nc crate (#55962)
agu-z May 29, 2026
6bca213
agent: Batch streaming edit operations (#58037)
Anthony-Eid May 29, 2026
da87558
Revert "Improve ChatGPT subscription response resilience" (#58035)
kubkon May 29, 2026
85f8bf7
editor: Extract `header` and `mouse` out of `element.rs` (#57472)
GoldStrikeArch May 29, 2026
3eab273
Remove rules library (#58067)
bennetbo May 29, 2026
f49be14
agent: Do not render diagnostics in diff (#58052)
bennetbo May 29, 2026
81f818a
nix: Go around a linker issue on Darwin (#58070)
kubkon May 29, 2026
a1d2ef6
gpui: Add item_is_above_viewport and item_is_below_viewport APIs to L…
smitbarmase May 29, 2026
b7b1d1a
Duplicate Bot: Reduce noise (#58074)
zelenenka May 29, 2026
0bafd19
Add handoff feature flag (#58024)
rtfeldman May 29, 2026
c029cc4
Bump `convert_case` to v0.11.0 (#58000)
agu-z May 29, 2026
906bff7
agent_ui: Show permission popover when inline prompt is above the vie…
smitbarmase May 29, 2026
5fba9b0
Enable gain normalization on collab (#58036)
ConradIrwin May 29, 2026
654a864
git_ui: Do not include git commit prompt twice (#58062)
bennetbo May 29, 2026
18051ab
agent_ui: Remove unused rule APIs (#58080)
bennetbo May 29, 2026
c30d18b
scheduler: Add spawn_dedicated for single-threaded actors with !Send …
nathansobo May 29, 2026
2ea99a8
Add new area labels to track mapping (#58083)
smitbarmase May 29, 2026
1226196
x_ai: Add support for specifying reasoning effort (#58078)
bennetbo May 29, 2026
7f4a99a
Fix task modal fallback when LSP tasks are empty (#58090)
Anthony-Eid May 29, 2026
06826ef
Bump urllib3 to v2.7.0 (#58092)
JosephTLyons May 29, 2026
5d3b9e4
git_ui: Open file diffs from git panel (#56152)
chirivelli May 29, 2026
e2e7a67
Update dependency requests to v2.33.0 [SECURITY] (#58093)
renovate[bot] May 29, 2026
09165c1
gpui: Support prompt_for_paths in TestPlatform (#58139)
nathansobo May 30, 2026
fd93a53
Limit editor rendering to visible clipped rows (#58132)
Veykril May 31, 2026
876ec5a
Improve performance of `create_highlight_endpoints` (#58119)
Veykril May 31, 2026
6f335c2
Do not play join sound in large meetings (#54337)
yara-blue May 31, 2026
f4f5270
Fix json! empty-string highlighting in Rust (#55126)
saberoueslati May 31, 2026
dedb2af
keymap_editor: Fix create keybinding button clipping out of editor (#…
felixschwamm May 31, 2026
0b43719
Remove stale SSH LSP log entries after server restarts (#55299)
chenmijiang May 31, 2026
dfda073
vim: Support matching bracket motion in multibuffers (#54634)
davidalecrim1 May 31, 2026
315d474
Honor anchored patterns in .git/info/exclude (#57779)
hferreiro May 31, 2026
8734d01
git_ui: Update section header checkboxes immediately on stage/unstage…
cppcoffee May 31, 2026
7f826e8
Fix grammatical errors throughout the documentation (#58183)
miguelraz May 31, 2026
5b948e5
git: Suppress blame errors outside Git repositories (#56348)
terror May 31, 2026
c31ff67
git_ui: Fix commit view avatar being squished when gutter line number…
hugh2slowmo Jun 1, 2026
83c52e3
git: Implement compare with branch action (#57886)
AlvaroParker Jun 1, 2026
6d605b3
git_ui: Add setting for custom commit message instructions (#58188)
rbstp Jun 1, 2026
950fd46
git: Prefer main over master when detecting default branch (#57398)
hferreiro Jun 1, 2026
eb424af
file_finder: Allow opening files without dismissing the finder (#57258)
init05 Jun 1, 2026
8982fb1
gpui: Allow chaining `flex_grow()` and `flex_shrink()` with custom fa…
bowenxuuu Jun 1, 2026
0711d9e
git_ui: Fix stale loading message in git history pane (#58133)
Veykril Jun 1, 2026
747c41f
Shorten explanation when edit predictions are disabled for a language…
injust Jun 1, 2026
9cc78ac
lsp: Register available LSP adapters locally when in remote developme…
lingyaochu Jun 1, 2026
3fde4e2
project: Treat replacement literally when dealing non-ASCII text sear…
lingyaochu Jun 1, 2026
0c82368
diagnostics: Show source and code on related diagnostics (#56147)
lingyaochu Jun 1, 2026
ee591c0
python: Sync built-in highlights with Python 3.15 (#57562)
lingyaochu Jun 1, 2026
7cb01e4
python: Stop falling back to `conda activate base` for nameless toolc…
rgbkrk Jun 1, 2026
507d043
gpui: Fix stuck tooltips after mouse leaves origin (#58134)
errmayank Jun 1, 2026
fcf45c6
project: Scope terminal toolchain lookup to the terminal's worktree (…
rgbkrk Jun 1, 2026
29dc988
editor: Fix missing background highlights in multibuffer find-all-ref…
lingyaochu Jun 1, 2026
954ee58
worktree: Fix linked worktree git dir event handling (#57782)
Veykril Jun 1, 2026
735980b
markdown: Fix text selection position in centered/right-aligned markd…
RemcoSmitsDev Jun 1, 2026
0bd41d6
editor: Add toggle breadcrumb action (#57970)
AlvaroParker Jun 1, 2026
5f038c2
git_graph: Exclude non-standard refs (#54291)
timvermeulen Jun 1, 2026
6a7b2bc
workspace: Treat remote roots as directories (#54733)
jknlsn Jun 1, 2026
137eeea
gpui: Allow repositioning macOS traffic lights at runtime (#58169)
errmayank Jun 1, 2026
46ac575
agent_ui: Add some more improvements to the draft UX (#57692)
danilo-leal Jun 1, 2026
195dca4
Notify on slack when new label is created (#58224)
zelenenka Jun 1, 2026
95d9cf1
agent_ui: Remove the staff-only gate on fast mode toggle (#57914)
tomhoule Jun 1, 2026
86e195b
terminal: Enable copy and paste in edit menu (#58111)
terror Jun 1, 2026
0045814
editor: Fix newline outdent when tab size is greater than current ind…
smitbarmase Jun 1, 2026
bc823db
git_store: Coalesce refresh pathspecs (#56406)
hferreiro Jun 1, 2026
988845d
project: Add fuzzy search in remote projects dialogue (#54143)
feitreim Jun 1, 2026
4fe71ff
Load project skills through worktree buffers (#58094)
MartinYe1234 Jun 1, 2026
b259b34
Add context compaction markers (#58089)
rtfeldman Jun 1, 2026
94f36f5
terminal: Add backend-neutral terminal types (#57483)
benbrandt Jun 1, 2026
7e6e731
python: Fix splat parameter highlighting (#58136)
allachance Jun 1, 2026
513e2b2
Gate sandboxed terminal tempdir to local projects (#58240)
rtfeldman Jun 1, 2026
b9892c5
agent: Respect compaction boundaries in request windows (#58241)
rtfeldman Jun 1, 2026
a921edb
acp: Handle reasoning effort shortcuts (#58223)
bennetbo Jun 1, 2026
a5fba1b
Allow symlinked global skill directories (#58095)
David3u Jun 1, 2026
2961f5a
docs: Document external agent thread imports (#58242)
benbrandt Jun 1, 2026
df4058e
Change .join("") to .concat() (#58200)
miguelraz Jun 1, 2026
d5fc4b7
Render the first character as the icon in a terminal thread (#58251)
mikayla-maki Jun 1, 2026
0cb2b61
languages: Respect `devEngines` package manager for package scripts (…
terror Jun 1, 2026
beedd3e
Support ex: in vim modelines (#58121)
scop Jun 1, 2026
6033f38
Recognize shell-script as shell in modelines (#58124)
scop Jun 1, 2026
799622d
ep: Jump example capture (#58236)
probably-neb Jun 1, 2026
c0db923
agent: Add terminal output head and tail options (#58257)
rtfeldman Jun 1, 2026
ee74df5
Align prefix parsing, smart-select characters (#58267)
mikayla-maki Jun 1, 2026
590aaaf
Symlink scan option (#53646)
auwi-nordic Jun 1, 2026
4fab859
agent: Enable terminal output controls for everyone (#58271)
rtfeldman Jun 1, 2026
b4ce020
collab: Use avatar URLs returned from Cloud (#58265)
maxdeviant Jun 1, 2026
b764e5e
git_ui: Render commit message as markdown (#58274)
danilo-leal Jun 1, 2026
aa6f03b
gpui: Add bare bones benchmark framework (#58191)
Anthony-Eid Jun 1, 2026
52956d9
git_ui: Add split controls to commit view (#58163)
chirivelli Jun 1, 2026
5b71570
recent_projects: Improve label truncation (#58279)
danilo-leal Jun 1, 2026
e4ddcc8
Fix rules-to-skills migration (#58278)
MartinYe1234 Jun 1, 2026
59f32d2
Add create_thread and list_agents_and_models agent tools (#57987)
eholk Jun 1, 2026
e07d9a4
git: Further extract gitlib2 dependencies (#58280)
Anthony-Eid Jun 1, 2026
8182440
Add granular per-path write permissions for the agent terminal sandbo…
MartinYe1234 Jun 2, 2026
06065c0
editor: Fix `DisplayMap::highlight_text` not always sorting its range…
Veykril Jun 2, 2026
c57de85
Remove git2 (libgit2) dependency (#53453)
kfreitag1 Jun 2, 2026
f65b6f6
agent_ui: Fix crash when filtering tools in the agent profile tool pi…
smitbarmase Jun 2, 2026
3c8fc25
docs: Update agent server extension documentation (#58306)
MrSubidubi Jun 2, 2026
4ef7e16
git_ui: Trim surrounding whitespace from new branch names (#58151)
toddlerer Jun 2, 2026
0d31b26
git_ui: Prepare review action with owned base ref directly (#58156)
cppcoffee Jun 2, 2026
8a432f8
acp: Indicate when agent is downloading (#57710)
bennetbo Jun 2, 2026
969a67f
Document Pro threshold billing behavior (#58320)
morgankrey Jun 2, 2026
39f7849
Log worst hanging tasks and actions (#57835)
yara-blue Jun 2, 2026
b077f41
agent_ui: Improve draft threads for worktrees (#58268)
danilo-leal Jun 2, 2026
4e949a1
mermaid: Fix stack overflow when laying out deeply nested subgraphs (…
smitbarmase Jun 2, 2026
bb5951b
language_models: Support custom HTTP headers for provider requests (#…
aurabindo Jun 2, 2026
6ac8385
file_finder: Fix path duplication when opening non-project files with…
saberoueslati Jun 2, 2026
6396a9b
language: Support emitting multiple runnables from a single tree-sitt…
smitbarmase Jun 2, 2026
b1025e8
language_models: Remove retired GPT-5.2 and GPT-5.3-Codex from ChatGP…
smitbarmase Jun 2, 2026
4eab069
mermaid_render: Remove spurious debug assert (#58341)
cameron1024 Jun 2, 2026
201ae99
agent: Implement compaction (experimental) (#58315)
bennetbo Jun 2, 2026
c413552
acp: Update agent-client-protocol sdk to 0.13.1 (#58308)
benbrandt Jun 2, 2026
4d32f41
Remove audio denoiser crate (#57923)
yara-blue Jun 2, 2026
381f2f4
fs: Avoid resolving symlinks when trashing (#58339)
dinocosta Jun 2, 2026
9d50bab
git_ui: Add total diff stats to git panel (#58018)
WaryaWayne Jun 2, 2026
1ebfaf5
Merge remote-tracking branch 'upstream/main' into feature/002029-merg…
lukemarsden Jun 2, 2026
dcd8622
fix(zed): build fixes for upstream signature drift (002029-extension r2)
lukemarsden Jun 2, 2026
454cdee
docs(porting): add Merge 002029-extension round 2 entry (242 upstream…
lukemarsden Jun 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
160 changes: 160 additions & 0 deletions .agents/skills/gpui-test/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
---
name: gpui-test
description: >-
Use when writing, debugging, or reproducing GPUI tests in Zed, including
gpui::test arguments, TestAppContext parameters, scheduler seeds,
ITERATIONS/SEED reproduction, parking failures, and pending task traces.
---

# GPUI Test Debugging

Use this skill when the user asks about `#[gpui::test]`, GPUI test seeds or iterations, deterministic scheduler failures, parking/pending task failures, or how to reproduce a flaky GPUI test.

## What `#[gpui::test]` does

`#[gpui::test]` expands to a normal Rust `#[test]`, so it runs under standard Rust test runners such as `cargo test` and `cargo nextest`.

It wraps the body in GPUI's deterministic test dispatcher/scheduler and can run the same test multiple times with different seeds. The seed controls scheduler task interleavings and any `StdRng` argument injected into the test.

The macro supports both synchronous and asynchronous tests.

### Supported function arguments

The macro recognizes arguments by type name:

| Test kind | Supported arguments |
| --- | --- |
| Sync and async | `&TestAppContext`, `&mut TestAppContext`, `StdRng` |
| Async only | `BackgroundExecutor` |
| Sync only | `&App`, `&mut App` |

`StdRng` is seeded from the current GPUI test seed, and `BackgroundExecutor` is backed by the same deterministic test dispatcher.

### Attribute arguments

Use these forms on `#[gpui::test(arguments)]`:

- No arguments: runs once with seed `0`, unless `SEED` is set.
- `seed = N`: adds a single explicit seed.
- `seeds(...)`: adds multiple explicit seeds.
- `iterations = N`: runs sequential seeds starting at `0` by default.
- `retries = N`: retries a failing run up to `N` times before surfacing the failure.
- `on_failure = "path::to::function"`: calls the function after final failure, before resuming the panic.
- `iterations` can be combined with explicit `seed` / `seeds`; explicit seeds are appended to the `0..iterations` range.
- If the `SEED` environment variable is set, it takes precedence over explicit seeds.
- With `SEED=N` and `ITERATIONS=M` or `iterations = M`, the harness runs seeds `N..N+M`.

## Environment variables

### GPUI test macro / scheduler execution

- `SEED=<u64>` — chooses the scheduler seed. Use this to reproduce a failure printed as `failing seed: N`. It also seeds injected `StdRng` arguments. For `#[gpui::property_test]`, it controls the scheduler seed and GPUI applies it to the proptest config for deterministic case generation.
- `ITERATIONS=<usize>` — overrides the `iterations = ...` value at runtime. Use to sweep many seeds without editing the test.
- `PENDING_TRACES=1` or `PENDING_TRACES=true` — captures and prints pending task traces when the test scheduler panics with `Parking forbidden`. Use this when `run_until_parked()` or teardown reports pending work.
- `GPUI_RUN_UNTIL_PARKED_LOG=1` — logs when `allow_parking()` is enabled. Use to find tests that explicitly permit parking/pending work.
- `DEBUG_SCHEDULER=1` — prints scheduler clock/timer debugging from `scheduler::TestScheduler`.

### Lower-level scheduler tests

- `SCHEDULER_NONINTERACTIVE=1` — suppresses interactive seed progress output in `scheduler::TestScheduler::many`. This does not affect the `#[gpui::test]` harness path.

### General Rust test debugging vars often useful with GPUI tests

- `RUST_BACKTRACE=1` or `RUST_BACKTRACE=full` — show panic backtraces.
- `RUST_LOG=<filter>` — enable logs when the test initializes logging.
- `ZED_HEADLESS=1` — forces GPUI platform guessing toward headless mode; useful for tests that otherwise interact with platform/window setup.

Prefer env vars over editing the test when narrowing a reproduction.

## Reproducing a specific GPUI test

1. Identify the crate/package and test name.

2. Run the narrowest test filter first, skip to 3. if a failing seed is known.

```sh
cargo -q test -p <crate-name> <test_name> -- --nocapture
```

3. If the failure mentions a seed, rerun exactly that seed.

```sh
SEED=<seed> cargo -q test -p <crate-name> <test_name> -- --nocapture
```

4. If the failure is flaky and no seed is known, sweep seeds.

```sh
ITERATIONS=100 cargo -q test -p <crate-name> <test_name> -- --nocapture
```

When the harness prints `failing seed: <seed>`, switch to `SEED=<seed>` for all future debugging.

5. If the failure is `Parking forbidden`, rerun with pending traces.

```sh
PENDING_TRACES=1 cargo -q test -p <crate-name> <test_name> -- --nocapture
```

If a failing seed was printed or is already known, include it too:

```sh
SEED=<seed> PENDING_TRACES=1 cargo -q test -p <crate-name> <test_name> -- --nocapture
```

Inspect the pending traces for a task that was spawned but not awaited, detached, completed, or intentionally allowed to park.

6. If timing or timer advancement is involved, prefer GPUI scheduler timers in tests:

```rust
cx.background_executor().timer(duration).await;
```

Avoid `smol::Timer::after(...)` in GPUI tests that rely on `run_until_parked()`, because GPUI's scheduler may not track it.

7. Minimize the reproduction.
- Keep the failing `SEED` fixed.
- Reduce `ITERATIONS` to `1` or remove it once a seed is known.
- Remove unrelated setup only after confirming the same seed still fails.
- Preserve scheduler-sensitive awaits/yields; removing them can mask the bug.
- If randomness is test-controlled via `StdRng`, log or assert the generated scenario after fixing the scheduler seed.

8. Validate the fix.
- Run the fixed seed.
- Run a modest seed sweep, e.g. `ITERATIONS=20`, if the failure was scheduler-sensitive.
- Run the relevant crate's test filter or broader suite if the touched code has shared behavior.

## Common diagnosis patterns

### Seed-dependent assertion failure

Likely caused by a scheduler interleaving or by `StdRng`-driven test data. Fix `SEED`, reproduce, and inspect which task or generated scenario differs.

### `Parking forbidden`

Usually means a foreground/background task is still pending when the scheduler expected the test to make progress or finish. Look for:

- A task that should be awaited but was dropped.
- A task that should be detached with error logging.
- A timer or receiver that is waiting forever.
- A missing `cx.run_until_parked()` after triggering async work in a test.
- A missing `cx.advance_clock(...)` to wait for debounced work in a test.
- Use of non-GPUI timers or executors that the test scheduler cannot drive.

Rerun with `PENDING_TRACES=1` before changing code.

### Non-determinism / wrong thread

The scheduler can report activity from an unexpected thread. Look for work escaping GPUI's foreground/background executors, direct thread spawns, or external async runtimes not controlled by the test dispatcher.

### Tests pass alone but fail in sweeps

Use the failing seed from sweep output. Avoid assuming test order unless the runner is explicitly serial. Check globals, leaked entities/tasks, and state not reset by test initialization.

## Writing GPUI tests

- Prefer `#[gpui::test]` for tests that need `TestAppContext`, deterministic executors, fake time, or scheduler interleaving coverage.
- Add `iterations = N` when the test is intentionally checking interleavings.
- Use `StdRng` as a test argument when randomized test data should follow the same seed as the scheduler.
- Use `cx.background_executor().timer(duration).await` for delays/timeouts in GPUI tests.
- Do not add or increase `retries` while fixing a test unless the user explicitly asks or the test already documents why probabilistic tolerance is intentional. Retries can mask the failure instead of fixing it.
175 changes: 175 additions & 0 deletions .agents/skills/zed-cherry-pick/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,175 @@
---
name: zed-cherry-pick
description: Cherry-pick one or more merged PRs and/or commits into Zed's `preview` or `stable` release branch. Use this whenever the user mentions cherry-picking to preview/stable, a failed cherry-pick run, or wants to manually port fix(es) into a release branch.
---

# Zed Cherry-Pick

Zed ships from two long-lived release branches that live on `origin`:

- `preview` channel → branch like `v1.4.x`
- `stable` channel → branch like `v1.3.x`

The version numbers change with each release. **Never hardcode them — always discover the current mapping** (see [Finding the target branch](#finding-the-target-branch)).

A merged PR on `main` gets ported to a release branch by `script/cherry-pick`, normally driven by the `cherry_pick` GitHub Actions workflow. When that workflow fails (almost always a merge conflict), use this skill to finish the job locally and open the cherry-pick PR by hand.

## When to use

Use this when the user asks to cherry-pick one or more commits and/or Pull Requests (by number or URL) to `preview` or `stable`.
Optionally, the user may specify whether to resolve merge conflicts; if unspecified, attempt the cherry-pick, and then if there are merge conflicts in practice, stop and inform the user that there are merge conflicts and offer to resolve them. (Users may prefer to resolve the merge conflicts themselves before continuing.)

## The script you're emulating

The canonical procedure lives in `script/cherry-pick` and the `cherry_pick` GitHub Actions workflow. Read the script first if anything looks off — your local steps must produce the same branch name, PR title, and PR body it would.

Signature: `script/cherry-pick <branch-name> <commit-sha> <channel>`

- `<branch-name>` is the release branch (e.g. `v1.4.x`), **not** the channel name.
- `<channel>` is `preview` or `stable`, used only for display text in the PR title/body.

It creates a local branch named `cherry-pick-<branch-name>-<short-sha>` (the short SHA is the first 8 chars of the commit), force-pushes it to `origin`, and opens a PR.

## Finding the target branch

The channel→branch mapping changes every release. Find the current one by inspecting the most recent `cherry_pick` workflow runs:

```
gh run list --workflow=cherry_pick.yml --limit 30 --json displayTitle,databaseId
# pick a recent run for the channel you want, then:
gh run view <id> --log 2>&1 | grep -E "BRANCH:|CHANNEL:"
```

A successful run prints both `BRANCH:` and `CHANNEL:` env vars; that's your mapping.

## Procedure

### 1. Gather context

You need three things: the **merge commit SHA**, the **target branch**, and the **channel name**.

If the user requested multiple PRs and/or commits, gather the metadata for all of them first and cherry-pick them in the order they landed on `main`, oldest to newest. For PRs, order by `mergedAt`; for raw commits, use their order on `main` when available, otherwise commit date. This tends to reduce avoidable conflicts because later changes may depend on earlier ones, but it does not guarantee a conflict-free cherry-pick when the release branch has diverged.

```
gh pr view <PR_NUMBER> --json title,number,mergeCommit,mergedAt,url
```

If the user said the workflow failed, fetch its log to see exactly which command failed and which file conflicted:

```
gh run list --workflow=cherry_pick.yml --limit 10 --json databaseId,displayTitle,status,conclusion
gh run view <failed_run_id> --log-failed
```

The failed-run log also confirms the `BRANCH` and `COMMIT` the workflow used — handy if there's any ambiguity.

### 2. Reproduce the script's setup locally

The repository may be a worktree (check `.git` — if it's a file, you're in a worktree pointing at a shared gitdir). That's fine; just operate normally.

```
git --no-pager fetch origin <branch-name> <commit-sha>
git checkout --force origin/<branch-name> -B cherry-pick-<branch-name>-<short-sha>
git cherry-pick <commit-sha>
```

The branch name **must** match `cherry-pick-<branch-name>-<short-sha>` exactly (script convention; reviewers and tooling expect it).

### 3. Check for missing prerequisite cherry-picks

If the cherry-pick conflicts, do not immediately resolve the conflicts manually.

First determine whether the conflict is likely caused by other PRs or commits that are already on `main` but missing from the release branch. If so, point out those candidate prerequisite PRs/commits to the user, including PR links, and offer to either resolve the conflicts manually or let the user run the GitHub cherry-pick workflow for those commits first.

If the user wants to run the workflow for the missing prerequisites, stop here. This often keeps cherry-picks clean and eligible for automatic approval.

Only resolve conflicts manually if:
- no likely missing prerequisites are found, or
- the user chooses manual conflict resolution instead of cherry-picking the prerequisites first.

### 4. Resolve the conflicts manually

Do this only after checking for missing prerequisite cherry-picks.

- Inspect every conflicted file with `grep -n '<<<<<<<\\|>>>>>>>\\|=======' <path>` to find the markers.
- Conflicts are usually `diff3` style with three sections: HEAD (release branch), `||||||| parent of <sha>` (merge base on `main`), and the incoming change.
- Read the **original commit** (`git --no-pager show <commit-sha> -- <path>`) to understand the author's intent, then pick the resolution that produces the equivalent end state on the release branch.
- Don't grab unrelated changes from `main` that happen to surround the conflict — keep the cherry-pick minimal.

### 5. Validate

Always build and (if reasonable) test the affected crate(s) before continuing the cherry-pick.

```
cargo check -p <affected_crate>
cargo test -p <affected_crate>
```

If validation fails, fix the resolution — do **not** continue with a broken build. If you can't reach a clean state, abort with `git cherry-pick --abort` and report back to the user.

### 6. Finish the cherry-pick

`git cherry-pick --continue` opens an editor by default. Prevent that:

```
git add <resolved_files>
GIT_EDITOR=true git cherry-pick --continue
```

This preserves the original commit message verbatim, which is what the script does.

### 7. Push and open the PR

```
git push origin -f cherry-pick-<branch-name>-<short-sha>
```

Then create the PR with the **exact** title and body format `script/cherry-pick` uses, so it's indistinguishable from an automated one.

**Title:**

```
<original commit subject> (cherry-pick to <channel>)
```

The original commit subject already ends in ` (#<original_pr_number>)`; keep it.

**Body** (when the original commit title ends in `(#<N>)`, which is the normal case):

```
Cherry-pick of #<original_pr_number> to <channel>

----
<original commit body, verbatim>
```

Create it with `gh pr create`, writing the body to a temp file to keep formatting intact:

```
git --no-pager log -1 --pretty=format:"%b" > /tmp/cp-body-tail.md
printf 'Cherry-pick of #%s to %s\n\n----\n' <PR_NUMBER> <channel> | cat - /tmp/cp-body-tail.md > /tmp/cp-body.md
gh pr create --base <branch-name> --head cherry-pick-<branch-name>-<short-sha> \\
--title "<commit subject> (cherry-pick to <channel>)" \\
--body-file /tmp/cp-body.md
```

Do **not** add a `Release Notes:` section — the original commit body already has one (or already says `N/A`), and you don't want it duplicated.

## Final report to the user

Tell the user:
- The new PR URL.
- A one-line summary of the conflict and how you resolved it.
- What validation you ran (commands + result).
- That their local branch is now `cherry-pick-<branch-name>-<short-sha>`, in case they want you to switch back.

## Gotchas

- **`--no-pager` and `GIT_EDITOR=true`**: required for non-interactive git in this environment. Forgetting `GIT_EDITOR=true` on `cherry-pick --continue` hangs the terminal.
- **Worktree index lock**: if a previous git command was interrupted, you may see `index.lock` errors. The lock lives at `<gitdir>/index.lock` where `<gitdir>` is what `cat .git` points to (for a worktree). Remove it only if you're sure no git process is running.
- **Don't expand the cherry-pick's scope**: when resolving conflicts, never pull in unrelated changes from `main` just because they sit next to the conflict region. The PR should be the smallest diff that reproduces the original commit's intent on the release branch.
- **Channel branches are not called `preview`/`stable`**: don't try to `git fetch origin preview`. Look up the actual `vX.Y.x` branch name first.

## When Finished

After everything is finished, the last thing to do is to provide a link to the opened pull request(s) for the cherry-pick(s).
2 changes: 0 additions & 2 deletions .github/CODEOWNERS.hold
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@
/crates/open_ai/ @zed-industries/ai-team
/crates/open_router/ @zed-industries/ai-team
/crates/prompt_store/ @zed-industries/ai-team
/crates/rules_library/ @zed-industries/ai-team
# SUGGESTED: Review needed - based on Richard Feldman (2 commits)
/crates/shell_command_parser/ @zed-industries/ai-team
/crates/vercel/ @zed-industries/ai-team
Expand Down Expand Up @@ -181,7 +180,6 @@
/crates/fs_benchmarks/ @zed-industries/infrastructure-team
/crates/http_client/ @zed-industries/infrastructure-team
/crates/http_client_tls/ @zed-industries/infrastructure-team
/crates/nc/ @zed-industries/infrastructure-team
/crates/net/ @zed-industries/infrastructure-team
/crates/paths/ @zed-industries/infrastructure-team
/crates/release_channel/ @zed-industries/infrastructure-team
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/after_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ jobs:
uses: zed-industries/zed/.github/workflows/deploy_docs.yml@main
secrets:
DOCS_AMPLITUDE_API_KEY: ${{ secrets.DOCS_AMPLITUDE_API_KEY }}
DOCS_CONSENT_IO_INSTANCE: ${{ secrets.DOCS_CONSENT_IO_INSTANCE }}
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
with:
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/autofix_pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,8 @@ jobs:
git diff > autofix.patch
echo "has_changes=true" >> "$GITHUB_OUTPUT"
fi
- name: upload artifact autofix-patch
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
- name: autofix_pr::upload_patch_artifact
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
with:
name: autofix-patch
path: autofix.patch
Expand Down Expand Up @@ -112,7 +112,7 @@ jobs:
PR_NUMBER: ${{ inputs.pr_number }}
GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }}
- name: autofix_pr::download_patch_artifact
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
with:
name: autofix-patch
- name: autofix_pr::commit_changes::apply_patch
Expand All @@ -122,10 +122,10 @@ jobs:
git commit -am "Autofix"
git push
env:
GIT_COMMITTER_NAME: Zed Zippy
GIT_COMMITTER_EMAIL: 234243425+zed-zippy[bot]@users.noreply.github.com
GIT_AUTHOR_NAME: Zed Zippy
GIT_AUTHOR_NAME: zed-zippy[bot]
GIT_AUTHOR_EMAIL: 234243425+zed-zippy[bot]@users.noreply.github.com
GIT_COMMITTER_NAME: zed-zippy[bot]
GIT_COMMITTER_EMAIL: 234243425+zed-zippy[bot]@users.noreply.github.com
GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }}
concurrency:
group: ${{ github.workflow }}-${{ inputs.pr_number }}
Expand Down
Loading
Loading