Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package openidea for openSUSE:Factory checked in at 2026-11-07 23:34:07 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openidea (Old) and /work/SRC/openSUSE:Factory/.openidea.new.3759290 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openidea" Sat Nov 7 23:34:07 2026 rev:4 rq:1396053 version:0.1.38 Changes: -------- --- /work/SRC/openSUSE:Factory/openidea/openidea.changes 2026-11-06 20:04:01.702461853 +0100 +++ /work/SRC/openSUSE:Factory/.openidea.new.3759290/openidea.changes 2026-11-07 23:35:15.165091301 +0100 @@ -1,0 +2,26 @@ +Sat Nov 7 13:48:57 UTC 2026 - Martin Pluskal <[email protected]> + +- Update to 0.1.38: + * Plugins: Plugin API 1.2 (user prompts, selected files, + context keys, file clauses, item menus, custom icons); + background document indexer; API 1.0 and 1.1 keep loading + * Run/debug: Docker and Compose run targets; PHP Remote Debug + (Xdebug) with php-debug and Bash Debug install offers; + debug console search; Ruby test tree with gutter actions + and SimpleCov coverage; rerun uses the edited configuration + * Languages: Astro support; PHPStan on save, PHP-CS-Fixer + reformat, composer.json namespaces and install offer; + Python semantic highlighting and Ruff with config dirs; + log highlighting + * Database: Oracle data sources; one-row extractor; keyboard + table edits + * Version control: added/removed lines in the Git log; diff + marks; preview diff; delete from Changes view + * Desktop: update-source choice (CNB mirror); restored + terminal tabs; trusted folders; middle-click close; + Wayland on NVIDIA + * Rebase distro patches (Lombok agent 1.18.48-openidea.3, + java-usages 1.7.0); node modules unchanged; skip the new + ruby-lsp installer test + +------------------------------------------------------------------- Old: ---- openidea-0.1.37.tar.zst New: ---- openidea-0.1.38.tar.zst ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openidea.spec ++++++ --- /var/tmp/diff_new_pack.Om2ISm/_old 2026-11-07 23:35:19.874285879 +0100 +++ /var/tmp/diff_new_pack.Om2ISm/_new 2026-11-07 23:35:19.876285961 +0100 @@ -20,13 +20,15 @@ # Full DWARF pushed upstream's fat-LTO link past 37 GB: line tables only, as zed %global build_rustflags -Clink-arg=-Wl,-z,relro,-z,now -C debuginfo=1 -C strip=none Name: openidea -Version: 0.1.37 +Version: 0.1.38 Release: 0 Summary: IntelliJ IDEA-style IDE with a Rust core # Legal-Review-Notice: upstream is Apache-2.0; the rest is derived from what the # binary carries, not from upstream's THIRD_PARTY_LICENSES.md. -# * Rust: 657 crates linked on Linux (no proc-macros), MIT or Apache-2.0 arm taken +# * Rust: 697 crates linked on Linux (no proc-macros), MIT or Apache-2.0 arm taken # * Wasmtime, Cranelift: Apache-2.0 WITH LLVM-exception +# * odpic-sys, oracle (Oracle data sources): UPL-1.0 OR Apache-2.0, +# distributed under the Apache-2.0 arm # * spellbook, nucleo-matcher, option-ext, cssparser 0.37.0 and # macros, dtoa-short, selectors 0.38.0: MPL-2.0 # * webpki-roots: CDLA-Permissive-2.0; notify: CC0-1.0; ICU crates: Unicode-3.0 @@ -147,7 +149,7 @@ %package server Summary: Remote development server for OpenIDEA -# Legal-Review-Notice: derived as above, over the 481 crates linked into openidea-server. +# Legal-Review-Notice: derived as above, over the 548 crates linked into openidea-server. # * No GUI, Wasmtime or frontend: no Apache-2.0 WITH LLVM-exception, EPL-2.0, OFL-1.1 # * MPL-2.0, CDLA-Permissive-2.0, CC0-1.0, Unicode-3.0, Zlib, ISC, BSD-3-Clause: # from the same crates as above @@ -223,7 +225,8 @@ everything_missing_on_an_empty_system gem_install_wraps_stubs_with_gem_home \ npm_install_uses_tools_prefix npm_typescript_is_pinned_and_shared \ python_servers_name_uv_when_it_makes_the_virtualenv \ - release_install_end_to_end_without_network rust_analyzer_prefers_rustup_and_installs_component \ + release_install_end_to_end_without_network ruby_lsp_installs_into_the_project_ruby_not_a_private_gem_home \ + rust_analyzer_prefers_rustup_and_installs_component \ rust_analyzer_selects_openvsx_without_rustup rustup_proxy_without_component_is_missing; do skip="$skip --skip tests::$t" done ++++++ openidea-0.1.37.tar.zst -> openidea-0.1.38.tar.zst ++++++ /work/SRC/openSUSE:Factory/openidea/openidea-0.1.37.tar.zst /work/SRC/openSUSE:Factory/.openidea.new.3759290/openidea-0.1.38.tar.zst differ: char 5, line 1 ++++++ openidea-no-agent-installs.patch ++++++ --- /var/tmp/diff_new_pack.Om2ISm/_old 2026-11-07 23:35:20.086294639 +0100 +++ /var/tmp/diff_new_pack.Om2ISm/_new 2026-11-07 23:35:20.091294845 +0100 @@ -34,7 +34,7 @@ "Run `codex login` in a terminal.", ), ("gemini", "Gemini CLI", Driver::Acp, &["gemini", "--experimental-acp"], "Run `gemini` in a terminal and sign in."), -@@ -318,10 +319,14 @@ +@@ -329,10 +330,14 @@ for p in &defaults { assert_eq!(p.source, AgentSource::Builtin); assert!(p.default_program.is_some()); @@ -62,7 +62,7 @@ /// [`maintain`] refreshes a saved index older than this, so updates show without opening /// the registry. const REFRESH_AFTER: Duration = Duration::from_secs(24 * 60 * 60); -@@ -248,7 +250,10 @@ +@@ -250,7 +252,10 @@ } fn is_builtin(id: &str) -> bool { @@ -74,7 +74,7 @@ } fn on_path(command: &str) -> bool { -@@ -376,6 +381,11 @@ +@@ -379,6 +384,11 @@ } fn fetch(paths: &RegistryPaths, cancel: &CancellationToken) -> IdeResult<String> { @@ -86,7 +86,7 @@ let http = http()?; let text = http.get_text_limited(REGISTRY_URL, Some(MAX_REGISTRY_BYTES), cancel)?; parse(&text)?; -@@ -410,6 +420,13 @@ +@@ -413,6 +423,13 @@ .iter() .find(|e| e.id == id) .ok_or_else(|| IdeError::not_found(format!("{id} is not in the ACP Registry")))?; ++++++ openidea-no-coverage-installs.patch ++++++ --- /var/tmp/diff_new_pack.Om2ISm/_old 2026-11-07 23:35:20.107295507 +0100 +++ /var/tmp/diff_new_pack.Om2ISm/_new 2026-11-07 23:35:20.111295672 +0100 @@ -37,7 +37,7 @@ } fn ready( -@@ -252,7 +247,8 @@ +@@ -312,7 +307,8 @@ }; return missing( "coverage", @@ -47,7 +47,7 @@ Some((install, dir)), ); } -@@ -341,11 +337,9 @@ +@@ -401,11 +397,9 @@ let root = dir.path(); std::fs::write(root.join("package.json"), r#"{"scripts":{"test":"vitest run","t2":"tsc && jest"}}"#).unwrap(); let config = cfg("npm", "pnpm", &["run", "test", "--", "a.test.ts"]); @@ -61,7 +61,7 @@ other => panic!("{other:?}"), } // ... pinned to the installed vitest. -@@ -353,9 +347,7 @@ +@@ -413,9 +407,7 @@ std::fs::create_dir_all(&vitest).unwrap(); std::fs::write(vitest.join("package.json"), r#"{"version":"2.1.9"}"#).unwrap(); match prepare(root, &config, root) { @@ -72,7 +72,7 @@ other => panic!("{other:?}"), } let pkg = root.join("node_modules/@vitest/coverage-v8"); -@@ -386,10 +378,7 @@ +@@ -446,10 +438,7 @@ config.env.insert("PATH".into(), dir.path().to_string_lossy().into_owned()); config.command = dir.path().join("cargo").to_string_lossy().into_owned(); match prepare(dir.path(), &config, dir.path()) { @@ -84,6 +84,21 @@ other => panic!("{other:?}"), } assert!(matches!( +@@ -488,11 +477,11 @@ + std::fs::create_dir_all(&out).unwrap(); + std::fs::write(root.join("Gemfile"), "source 'https://rubygems.org'\n").unwrap(); + let config = cfg("rspec", "bundle", &["exec", "rspec"]); +- // Bundler project without the gem: install hint. ++ // Bundler project without the gem: missing, with no install command ++ // in a distribution build. + match prepare(root, &config, &out) { +- CoveragePrepared::MissingTool { tool, install: Some(i), .. } => { ++ CoveragePrepared::MissingTool { tool, install: None, .. } => { + assert_eq!(tool, "simplecov"); +- assert_eq!(i.args, ["add", "simplecov", "--group", "test"]); + } + other => panic!("{other:?}"), + } --- a/crates/ide-profiler/src/plan.rs +++ b/crates/ide-profiler/src/plan.rs @@ -1,6 +1,6 @@ ++++++ openidea-no-jdk-downloads.patch ++++++ --- /var/tmp/diff_new_pack.Om2ISm/_old 2026-11-07 23:35:20.127296333 +0100 +++ /var/tmp/diff_new_pack.Om2ISm/_new 2026-11-07 23:35:20.132296539 +0100 @@ -34,7 +34,7 @@ pub fn adoptium_releases_url() -> String { format!("{ADOPTIUM_API}/info/available_releases") } -@@ -266,7 +284,12 @@ +@@ -247,7 +265,12 @@ /// Java versions `vendor` publishes. pub fn jdk_releases(&self, vendor: &str, cancel: &CancellationToken) -> IdeResult<JdkReleases> { vendor_or_err(vendor)?; @@ -48,7 +48,7 @@ } /// Downloads the latest `vendor` JDK of Java `feature` into -@@ -306,6 +329,7 @@ +@@ -287,6 +310,7 @@ emit: Emit, ) -> IdeResult<DownloadedJdk> { vendor_or_err(vendor)?; @@ -58,7 +58,7 @@ let location = location.map(Path::to_path_buf).unwrap_or_else(|| self.root.join("jdks")); --- a/crates/ide-sdk/src/java.rs +++ b/crates/ide-sdk/src/java.rs -@@ -91,6 +91,8 @@ +@@ -95,6 +95,8 @@ let mut roots: Vec<PathBuf> = vec![ PathBuf::from("/Library/Java/JavaVirtualMachines"), PathBuf::from("/usr/lib/jvm"), ++++++ openidea-no-prebuilt-jars.patch ++++++ --- /var/tmp/diff_new_pack.Om2ISm/_old 2026-11-07 23:35:20.147297159 +0100 +++ /var/tmp/diff_new_pack.Om2ISm/_new 2026-11-07 23:35:20.151297325 +0100 @@ -13,7 +13,7 @@ --- a/crates/ide-sdk/src/java.rs +++ b/crates/ide-sdk/src/java.rs -@@ -1130,137 +1130,16 @@ +@@ -1153,137 +1155,16 @@ /// The same jar supplies the JDT command and the private Maven output redirector. pub fn kotlin_bridge_bundle(data_dir: &Path) -> Option<PathBuf> { @@ -64,7 +64,7 @@ /// Installs the app-owned JDT LS command bundle, falling back to ordinary LSP on IO failure. pub fn usages_bundle(data_dir: &Path) -> Option<PathBuf> { -- let extension = data_dir.join("java-usages-1.3.0.jar"); +- let extension = data_dir.join("java-usages-1.7.0.jar"); - let bytes = include_bytes!("../../../java/java-usages/openidea-java-usages.jar"); - if std::fs::read(&extension).is_ok_and(|old| old == bytes) { - clean_usages_bundles(data_dir, &extension); @@ -161,19 +161,20 @@ } --- a/crates/ide-tools/src/registry.rs +++ b/crates/ide-tools/src/registry.rs -@@ -637,15 +637,16 @@ +@@ -643,16 +643,16 @@ display: "Lombok (jdtls agent)", kind: Plugin, commands: &["lombok.jar"], - // Equinox removed getModuleClassLoader(boolean), breaking lombok.config lookup (lombok#4059); - // ECJ 3.46.200 keeps the constructor call in a constructor's statements, which - // @SneakyThrows / @NonNull must not wrap or precede (lombok#4089). -- // Return to Maven Central once an official release includes both. +- // Builders on compact record constructors need the patch in java/lombok/patches. +- // Return to Maven Central once an official release includes all of these fixes. - // Source commit, build instructions and checksum: java/lombok/README.md. - method: Method::Bundled { -- filename: "lombok-1.18.48-openidea.2.jar", -- version: "1.18.48-openidea.2", -- bytes: include_bytes!("../../../java/lombok/lombok-1.18.48-openidea.2.jar"), +- filename: "lombok-1.18.48-openidea.3.jar", +- version: "1.18.48-openidea.3", +- bytes: include_bytes!("../../../java/lombok/lombok-1.18.48-openidea.3.jar"), + // Distribution build: the prebuilt patched agent is not shipped; jdtls + // takes Lombok from the Maven or Gradle cache or a -javaagent option. + method: Method::Release { @@ -189,7 +190,7 @@ version: V, --- a/crates/ide-tools/src/tests.rs +++ b/crates/ide-tools/src/tests.rs -@@ -44,61 +44,6 @@ +@@ -50,65 +50,6 @@ } #[test] @@ -201,16 +202,20 @@ - fs::create_dir_all(legacy.parent().unwrap()).unwrap(); - fs::write(&legacy, b"old official agent").unwrap(); - fs::write(env.root.join("lombok").join(MANIFEST), r#"{"version":"1.18.48"}"#).unwrap(); +- let previous = env.root.join("lombok/bin/lombok-1.18.48-openidea.2.jar"); +- fs::write(&previous, b"previous bundled agent").unwrap(); - let tools = Tools::with_paths(env.root.clone(), OsString::new(), Platform { os, arch }); - let info = tools.info("lombok", &[]).unwrap(); - let path = managed_bundle(env.root.parent().unwrap(), "lombok").unwrap(); - assert_eq!(info.status, ToolStatus::Installed); -- assert_eq!(info.version.as_deref(), Some("1.18.48-openidea.2")); +- assert_eq!(info.version.as_deref(), Some("1.18.48-openidea.3")); - assert_eq!(info.path, Some(path.clone().into())); -- assert_eq!(path.file_name().unwrap(), "lombok-1.18.48-openidea.2.jar"); +- assert_eq!(path.file_name().unwrap(), "lombok-1.18.48-openidea.3.jar"); - assert!(!info.can_install && !info.can_uninstall); - assert_eq!(tools.unavailable_reason(registry::find("lombok").unwrap()), None); - assert_eq!(fs::read(&legacy).unwrap(), b"old official agent", "other windows may still use it"); +- assert_ne!(path, previous, "new agent path must invalidate the JDT LS workspace"); +- assert_eq!(fs::read(&previous).unwrap(), b"previous bundled agent", "other windows may still use it"); - } - } -} ++++++ openidea-no-self-update.patch ++++++ --- /var/tmp/diff_new_pack.Om2ISm/_old 2026-11-07 23:35:20.167297986 +0100 +++ /var/tmp/diff_new_pack.Om2ISm/_new 2026-11-07 23:35:20.172298192 +0100 @@ -1,33 +1,26 @@ From: Martin Pluskal <[email protected]> Subject: [PATCH] Disable the in-app self-updater -Upstream configures the Tauri updater with its GitHub release feed, checks -it once per start and offers to download a release over the installed -files. Updates come from the package manager in a distribution build, so +Upstream configures the Tauri updater with its release feed (GitHub, or the +CNB mirror), checks it once per start and offers to download a release over +the installed files. Updates come from the package manager in a distribution +build, so report the updater as unconfigured: no startup check, no request, and the Check for Updates actions are hidden. --- a/src-tauri/src/commands/window.rs +++ b/src-tauri/src/commands/window.rs -@@ -304,16 +304,10 @@ +@@ -332,8 +332,10 @@ /// Whether an update endpoint is configured: `plugins.updater.endpoints` in /// tauri.conf.json, or the `OPENIDEA_UPDATE_ENDPOINT` environment variable. Empty by /// default, and "Check for Updates…" is hidden then. -pub fn updates_configured<R: tauri::Runtime>(app: &AppHandle<R>) -> bool { -- let in_config = app -- .config() -- .plugins -- .0 -- .get("updater") -- .and_then(|u| u.get("endpoints")) -- .and_then(|e| e.as_array()) -- .is_some_and(|e| !e.is_empty()); -- in_config || update_endpoint_env().is_some() +- !config_endpoints(app).is_empty() || update_endpoint_env().is_some() +pub fn updates_configured<R: tauri::Runtime>(_app: &AppHandle<R>) -> bool { + // Distribution build: the package manager owns updates, so never query + // the release feed or write a downloaded release over the installed files. + false } - fn updater(app: &AppHandle) -> IdeResult<Option<tauri_plugin_updater::Updater>> { + /// Where updates are downloaded from (System Settings › Updates). ++++++ openidea-no-server-download.patch ++++++ --- /var/tmp/diff_new_pack.Om2ISm/_old 2026-11-07 23:35:20.191298977 +0100 +++ /var/tmp/diff_new_pack.Om2ISm/_new 2026-11-07 23:35:20.197299225 +0100 @@ -11,7 +11,7 @@ --- a/src-tauri/src/remote_dev.rs +++ b/src-tauri/src/remote_dev.rs -@@ -205,15 +205,14 @@ +@@ -254,15 +254,14 @@ arch: &str, progress: Arc<Progress>, ) -> IdeResult<std::path::PathBuf> { ++++++ openidea-no-tool-installs.patch ++++++ --- /var/tmp/diff_new_pack.Om2ISm/_old 2026-11-07 23:35:20.213299887 +0100 +++ /var/tmp/diff_new_pack.Om2ISm/_new 2026-11-07 23:35:20.220300176 +0100 @@ -13,7 +13,7 @@ --- a/crates/ide-tools/src/lib.rs +++ b/crates/ide-tools/src/lib.rs -@@ -542,8 +542,32 @@ +@@ -622,8 +622,32 @@ /// Requirement check for installing `spec` right now. fn unavailable_reason(&self, spec: &ToolSpec) -> Option<String> { @@ -50,7 +50,7 @@ /// What the install method itself lacks (npm, a build for this platform, …). --- a/crates/ide-tools/src/tests.rs +++ b/crates/ide-tools/src/tests.rs -@@ -119,9 +119,11 @@ +@@ -146,9 +146,11 @@ assert_eq!(gopls.path.as_deref(), Some(env.sys.join("gopls").as_path())); assert!(!gopls.can_uninstall); assert_eq!(find(&list, "solargraph").status, ToolStatus::OnPath); @@ -66,7 +66,7 @@ #[cfg(unix)] --- a/src/features/tools/missing.ts +++ b/src/features/tools/missing.ts -@@ -24,7 +24,8 @@ export async function promptInstall( +@@ -25,7 +25,8 @@ ): Promise<boolean> { if (!useTools.getState().loaded) await refreshTools(); const tool = toolByName(name); @@ -75,18 +75,19 @@ + if (!tool || tool.status !== "missing" || (!tool.canInstall && !tool.unavailableReason)) return false; const position = tool.alternatives.indexOf(name); if (position > 0 && tool.alternatives.slice(0, position).some((n) => offered.has(n))) return false; - // An installed alternative (typescript-language-server for vtsls) already serves these files. -@@ -33,14 +34,15 @@ + formatter ||= tool.kind === "formatter"; +@@ -46,13 +47,15 @@ group: "tools", level: "warning", title: tx`${tool.displayName} is not installed`, -- body: -- tool.kind === "formatter" +- body: formatter +- ? tx`Reformat Code needs ${tool.displayName}. Install it via ${tool.installMethod}?` +- : tx`Code insight for ${langs} needs ${tool.command}. Install it via ${tool.installMethod}?`, + body: !tool.canInstall + ? tool.unavailableReason -+ : tool.kind === "formatter" - ? tx`Reformat Code needs ${tool.displayName}. Install it via ${tool.installMethod}?` - : tx`Code insight for ${langs} needs ${tool.command}. Install it via ${tool.installMethod}?`, ++ : formatter ++ ? tx`Reformat Code needs ${tool.displayName}. Install it via ${tool.installMethod}?` ++ : tx`Code insight for ${langs} needs ${tool.command}. Install it via ${tool.installMethod}?`, key, sticky, actions: [ ++++++ openidea-npm-build-deps.patch ++++++ --- /var/tmp/diff_new_pack.Om2ISm/_old 2026-11-07 23:35:20.247301291 +0100 +++ /var/tmp/diff_new_pack.Om2ISm/_new 2026-11-07 23:35:20.251301457 +0100 @@ -8,7 +8,7 @@ --- a/package.json +++ b/package.json -@@ -76,22 +76,11 @@ +@@ -82,22 +82,11 @@ }, "devDependencies": { "@lezer/generator": "^1.8.1", ++++++ vendor.tar.zst ++++++ /work/SRC/openSUSE:Factory/openidea/vendor.tar.zst /work/SRC/openSUSE:Factory/.openidea.new.3759290/vendor.tar.zst differ: char 5, line 1
