mirror of
https://github.com/l0ng-ai/openidea.git
synced 2026-11-08 08:52:12 +00:00
Background tasks often couldn't be cancelled, or cancelling didn't stop them: - A cancel that arrived before the backend registered the request was dropped (build while saving files, multi-repository fetch/pull between repositories). The host now remembers early cancels (bounded, 2 min), and request ids start at a random value per page. - There was no queue and no common cancel path: backend-reported tasks (LSP progress, deployment transfers) couldn't be cancelled, and tool installs, VCS operations and update checks had no cancel button in Background Tasks. - Only the direct child process was killed, and JDK / tool archives were extracted without checking for cancellation. Tool installs and JDK downloads now share a downloads queue; cancelling a queued task removes it without starting any work. Every task cancels through one path that shows "Cancelling…" and then removes it; tasks that can't be interrupted show a disabled cancel button with the reason. IdeEvent::Task carries `cancellable` with a cancel_task command, cancellable LSP progress sends window/workDoneProgress/cancel, installers, curl and tar run in their own process group and are killed as a group, and extraction checks for cancellation between entries. Claude-Session: https://claude.ai/code/session_01Dq6jQQn8ZhRfkkyj3PRutA
28 lines
665 B
TOML
28 lines
665 B
TOML
[package]
|
|
name = "ide-tools"
|
|
description = "Installer for language servers and debug adapters: registry, detection, download/extract, managed tools dir"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
|
|
[dependencies]
|
|
ide-core.workspace = true
|
|
ide-language.workspace = true
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|
|
specta.workspace = true
|
|
parking_lot.workspace = true
|
|
tracing.workspace = true
|
|
which = "8"
|
|
flate2 = "1"
|
|
tar = "0.4"
|
|
zip = { version = "=2.4.2", default-features = false, features = ["deflate"] }
|
|
sha2 = "0.10"
|
|
hex = "0.4"
|
|
|
|
[target.'cfg(unix)'.dependencies]
|
|
libc = "0.2"
|
|
|
|
[dev-dependencies]
|
|
tempfile.workspace = true
|