From ca3f1d624ae3f1e397bdf9b51f61654785601344 Mon Sep 17 00:00:00 2001 From: Finn Evers Date: Thu, 19 Jun 2025 22:35:19 +0200 Subject: [PATCH] Ensure compiled extensions work with older Zed versions (#33051) Closes #33039 This PR fixes a bug which causes the newest versions of the Biome and Tombi extensions to not work with older Zed versions. The bug occurs because in #32822, the type of the debug adapter and debug locators was changed from a Vec to a BTreeMap. However, these fields were already introduced much earlier in Zed, which now causes the de-serialization of the `extension.toml` to fail for older Zed versions. Any extension compiled with the newest extension CLI bumped in https://github.com/zed-industries/extensions/pull/2866 will not work with older Zed versions prior to v0.191. By adding this change and bumping the extension CLI again, this could be prevented. On de-serialization, we would just fallback to either a Vec for versions prior to v0.190 or a BTreeMap after. Feel free to let me know what you think here. Release Notes: - N/A --- crates/extension/src/extension_manifest.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/extension/src/extension_manifest.rs b/crates/extension/src/extension_manifest.rs index 3c20fb4e56..9439f0c290 100644 --- a/crates/extension/src/extension_manifest.rs +++ b/crates/extension/src/extension_manifest.rs @@ -87,9 +87,9 @@ pub struct ExtensionManifest { pub snippets: Option, #[serde(default)] pub capabilities: Vec, - #[serde(default)] + #[serde(default, skip_serializing_if = "BTreeMap::is_empty")] pub debug_adapters: BTreeMap, DebugAdapterManifestEntry>, - #[serde(default)] + #[serde(default, skip_serializing_if = "BTreeMap::is_empty")] pub debug_locators: BTreeMap, DebugLocatorManifestEntry>, }