copilot: Fix Copilot fails to sign in (#36138)

Closes #36093

Pin copilot version to 1.354 for now until further investigation.

Release Notes:

- Fixes issue where Copilot failed to sign in.

Co-authored-by: MrSubidubi <dev@bahn.sh>
This commit is contained in:
smit 2025-08-14 00:19:37 +05:30 committed by GitHub
parent e52f148304
commit 4a35498829
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 52 additions and 11 deletions

View file

@ -21,7 +21,7 @@ use language::{
point_from_lsp, point_to_lsp, point_from_lsp, point_to_lsp,
}; };
use lsp::{LanguageServer, LanguageServerBinary, LanguageServerId, LanguageServerName}; use lsp::{LanguageServer, LanguageServerBinary, LanguageServerId, LanguageServerName};
use node_runtime::NodeRuntime; use node_runtime::{NodeRuntime, VersionCheck};
use parking_lot::Mutex; use parking_lot::Mutex;
use project::DisableAiSettings; use project::DisableAiSettings;
use request::StatusNotification; use request::StatusNotification;
@ -1169,9 +1169,8 @@ async fn get_copilot_lsp(fs: Arc<dyn Fs>, node_runtime: NodeRuntime) -> anyhow::
const SERVER_PATH: &str = const SERVER_PATH: &str =
"node_modules/@github/copilot-language-server/dist/language-server.js"; "node_modules/@github/copilot-language-server/dist/language-server.js";
let latest_version = node_runtime // pinning it: https://github.com/zed-industries/zed/issues/36093
.npm_package_latest_version(PACKAGE_NAME) const PINNED_VERSION: &str = "1.354";
.await?;
let server_path = paths::copilot_dir().join(SERVER_PATH); let server_path = paths::copilot_dir().join(SERVER_PATH);
fs.create_dir(paths::copilot_dir()).await?; fs.create_dir(paths::copilot_dir()).await?;
@ -1181,12 +1180,13 @@ async fn get_copilot_lsp(fs: Arc<dyn Fs>, node_runtime: NodeRuntime) -> anyhow::
PACKAGE_NAME, PACKAGE_NAME,
&server_path, &server_path,
paths::copilot_dir(), paths::copilot_dir(),
&latest_version, &PINNED_VERSION,
VersionCheck::VersionMismatch,
) )
.await; .await;
if should_install { if should_install {
node_runtime node_runtime
.npm_install_packages(paths::copilot_dir(), &[(PACKAGE_NAME, &latest_version)]) .npm_install_packages(paths::copilot_dir(), &[(PACKAGE_NAME, &PINNED_VERSION)])
.await?; .await?;
} }

View file

@ -103,7 +103,13 @@ impl LspAdapter for CssLspAdapter {
let should_install_language_server = self let should_install_language_server = self
.node .node
.should_install_npm_package(Self::PACKAGE_NAME, &server_path, &container_dir, &version) .should_install_npm_package(
Self::PACKAGE_NAME,
&server_path,
&container_dir,
&version,
Default::default(),
)
.await; .await;
if should_install_language_server { if should_install_language_server {

View file

@ -340,7 +340,13 @@ impl LspAdapter for JsonLspAdapter {
let should_install_language_server = self let should_install_language_server = self
.node .node
.should_install_npm_package(Self::PACKAGE_NAME, &server_path, &container_dir, &version) .should_install_npm_package(
Self::PACKAGE_NAME,
&server_path,
&container_dir,
&version,
Default::default(),
)
.await; .await;
if should_install_language_server { if should_install_language_server {

View file

@ -206,6 +206,7 @@ impl LspAdapter for PythonLspAdapter {
&server_path, &server_path,
&container_dir, &container_dir,
&version, &version,
Default::default(),
) )
.await; .await;

View file

@ -108,7 +108,13 @@ impl LspAdapter for TailwindLspAdapter {
let should_install_language_server = self let should_install_language_server = self
.node .node
.should_install_npm_package(Self::PACKAGE_NAME, &server_path, &container_dir, &version) .should_install_npm_package(
Self::PACKAGE_NAME,
&server_path,
&container_dir,
&version,
Default::default(),
)
.await; .await;
if should_install_language_server { if should_install_language_server {

View file

@ -589,6 +589,7 @@ impl LspAdapter for TypeScriptLspAdapter {
&server_path, &server_path,
&container_dir, &container_dir,
version.typescript_version.as_str(), version.typescript_version.as_str(),
Default::default(),
) )
.await; .await;

View file

@ -116,6 +116,7 @@ impl LspAdapter for VtslsLspAdapter {
&server_path, &server_path,
&container_dir, &container_dir,
&latest_version.server_version, &latest_version.server_version,
Default::default(),
) )
.await .await
{ {
@ -129,6 +130,7 @@ impl LspAdapter for VtslsLspAdapter {
&container_dir.join(Self::TYPESCRIPT_TSDK_PATH), &container_dir.join(Self::TYPESCRIPT_TSDK_PATH),
&container_dir, &container_dir,
&latest_version.typescript_version, &latest_version.typescript_version,
Default::default(),
) )
.await .await
{ {

View file

@ -104,7 +104,13 @@ impl LspAdapter for YamlLspAdapter {
let should_install_language_server = self let should_install_language_server = self
.node .node
.should_install_npm_package(Self::PACKAGE_NAME, &server_path, &container_dir, &version) .should_install_npm_package(
Self::PACKAGE_NAME,
&server_path,
&container_dir,
&version,
Default::default(),
)
.await; .await;
if should_install_language_server { if should_install_language_server {

View file

@ -29,6 +29,15 @@ pub struct NodeBinaryOptions {
pub use_paths: Option<(PathBuf, PathBuf)>, pub use_paths: Option<(PathBuf, PathBuf)>,
} }
#[derive(Default)]
pub enum VersionCheck {
/// Check whether the installed and requested version have a mismatch
VersionMismatch,
/// Only check whether the currently installed version is older than the newest one
#[default]
OlderVersion,
}
#[derive(Clone)] #[derive(Clone)]
pub struct NodeRuntime(Arc<Mutex<NodeRuntimeState>>); pub struct NodeRuntime(Arc<Mutex<NodeRuntimeState>>);
@ -287,6 +296,7 @@ impl NodeRuntime {
local_executable_path: &Path, local_executable_path: &Path,
local_package_directory: &Path, local_package_directory: &Path,
latest_version: &str, latest_version: &str,
version_check: VersionCheck,
) -> bool { ) -> bool {
// In the case of the local system not having the package installed, // In the case of the local system not having the package installed,
// or in the instances where we fail to parse package.json data, // or in the instances where we fail to parse package.json data,
@ -311,7 +321,10 @@ impl NodeRuntime {
return true; return true;
}; };
installed_version < latest_version match version_check {
VersionCheck::VersionMismatch => installed_version != latest_version,
VersionCheck::OlderVersion => installed_version < latest_version,
}
} }
} }