Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package lightcraft for openSUSE:Factory checked in at 2026-10-30 18:11:55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/lightcraft (Old) and /work/SRC/openSUSE:Factory/.lightcraft.new.1255 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "lightcraft" Fri Oct 30 18:11:55 2026 rev:2 rq:1393742 version:0.15.0 Changes: -------- --- /work/SRC/openSUSE:Factory/lightcraft/lightcraft.changes 2026-10-28 21:10:33.976149325 +0100 +++ /work/SRC/openSUSE:Factory/.lightcraft.new.1255/lightcraft.changes 2026-10-30 18:19:39.046729653 +0100 @@ -1,0 +2,31 @@ +Thu Oct 29 14:46:37 UTC 2026 - Martin Pluskal <[email protected]> + +- Update to 0.15.0 (upstream tags v0.14.0, 2026-10-25 and + v0.15.0, 2026-10-28): + * Startup update prompt with self-update; UI migrated to egui + 0.37 with dockable side panels, dropdown and Flatpak fixes. + * Faster full-size exports (fewer copies and serial passes); + Highlights/Shadows median about 2x faster on the CPU. + * Library: Find Missing Photos by file name, smarter smart + albums, keyword list marks applied keywords, catalog import + asks merge or new library, PSD/PSB embedded metadata, month + names in date templates, manual slideshow, print templates + export and import. + * Develop: HDR merge preview zoom and pan, colour-grading wheel + holds the pointer, draggable tone curve from the renderer + model, histogram zones adjust Basic tones, Dehaze no longer + crushes dark pixels, Sony A7R V camera profile. + * Hardening: hostile-file bounds in HEIF handling, raw + decoders, codecs and keyword/repair/journal recovery; + quick-xml 0.38 -> 0.41 fixes two DoS advisories + (RUSTSEC-2026-0194, RUSTSEC-2026-0195). + * Workspace rust-version is now 1.95 (matches BuildRequires). + * Re-vendored (update=false kept for --locked, respect-lockfile + true); all new crates permissive, no License tag change. +- Disable upstream self-update: no check at startup and no install + prompt (lightcraft-no-self-update.patch); the package manager + owns updates, manual Help check stays +- Add lightcraft-drop-unused-egui-patches.patch: + drop unused [patch.crates-io] pins the vendor omits + +------------------------------------------------------------------- Old: ---- lightcraft-0.13.0.tar.zst New: ---- lightcraft-0.15.0.tar.zst lightcraft-drop-unused-egui-patches.patch lightcraft-no-self-update.patch ----------(New B)---------- New: owns updates, manual Help check stays - Add lightcraft-drop-unused-egui-patches.patch: drop unused [patch.crates-io] pins the vendor omits New:- Disable upstream self-update: no check at startup and no install prompt (lightcraft-no-self-update.patch); the package manager owns updates, manual Help check stays ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ lightcraft.spec ++++++ --- /var/tmp/diff_new_pack.lwBleI/_old 2026-10-30 18:19:47.151068916 +0100 +++ /var/tmp/diff_new_pack.lwBleI/_new 2026-10-30 18:19:47.157069167 +0100 @@ -17,7 +17,7 @@ Name: lightcraft -Version: 0.13.0 +Version: 0.15.0 Release: 0 Summary: Photo library and raw developer # Legal-Review-Notice: scope is the two shipped targets (lightcraft, lightcraft-cli) @@ -31,7 +31,8 @@ # CDLA-Permissive-2.0 (model downloads over HTTPS); plus MIT/BSD-2-Clause/ # BSD-3-Clause/ISC/Zlib permissive crates. self_cell 1.3.0 declares # Apache-2.0 OR GPL-2.0-only; the build takes the Apache-2.0 option, so no GPL -# obligation is incurred. docs/brand (trademarked, not open source) is excluded +# obligation is incurred. dunce 1.0.5 (via craft-update) declares CC0-1.0 OR +# MIT-0 OR Apache-2.0; the build likewise takes Apache-2.0. docs/brand (trademarked, not open source) is excluded # from the tarball via the tar_scm exclude and is never installed. The heif # feature pulls in only the pure-Rust heic-rs 0.1.4 crate (no C, no system # library); HEVC patent comfort is still open -- this discloses the feature, it @@ -43,9 +44,21 @@ URL: https://github.com/storytold/lightcraft Source0: %{name}-%{version}.tar.zst Source1: vendor.tar.zst +# PATCH-FIX-OPENSUSE lightcraft-no-self-update.patch -- distro builds +# must not phone home at startup nor offer to install an upstream release +# over RPM-owned files (the package manager owns updates); the manual +# Help check outcome window stays. Upstream behaviour as of 0.15.0, not +# upstreamable (upstream ships self-updating intentionally). +Patch0: lightcraft-no-self-update.patch +# PATCH-FIX-OPENSUSE lightcraft-drop-unused-egui-patches.patch -- drop four +# [patch.crates-io] pins (egui_demo_lib, egui_extras, egui_inspection, +# egui_system_font_provider) that nothing uses (Cargo.lock [[patch.unused]]): +# cargo_vendor omits them from vendor.tar.zst, so any offline resolve +# fails; upstreamable as cleanup once upstream drops the pins. +Patch1: lightcraft-drop-unused-egui-patches.patch BuildRequires: appstream-glib BuildRequires: c_compiler -BuildRequires: cargo >= 1.90 +BuildRequires: cargo >= 1.95 BuildRequires: cargo-packaging BuildRequires: desktop-file-utils BuildRequires: hicolor-icon-theme @@ -92,6 +105,12 @@ # members by hand. heif matches the official builds (pure-Rust heic-rs, no # system library). CRAFT_FONTS_DIR stays unset: the build then uses the # bundled Inter plus the system CJK fallback. +# NOTE: keep the cargo build and test macros in this spec in braced form. +# The bare form misparses the leading dashes of the locked and feature +# arguments in the Factory build root (staging adi:5 died at the build +# macro with "Unknown option - in cargo_build()"); the sibling filmcraft +# package passes the identical argument set braced and is green in the +# same root. spec-cleaner wants to unbrace these; keep the braces anyway. %{cargo_build} --locked -p lightcraft -p lightcraft-cli --features heif %install @@ -100,10 +119,10 @@ install -Dm0644 packaging/linux/ai.storyteller.lightcraft.desktop %{buildroot}%{_datadir}/applications/ai.storyteller.lightcraft.desktop install -Dm0644 packaging/linux/ai.storyteller.lightcraft.mime.xml %{buildroot}%{_datadir}/mime/packages/ai.storyteller.lightcraft.xml install -d -m 0755 %{buildroot}%{_datadir}/metainfo -# Fixed upstream release date (v0.13.0, 2026-10-23): a build-time date would +# Fixed upstream release date (v0.15.0, 2026-10-28): a build-time date would # make the metainfo differ on every rebuild, and spec-cleaner macro-expands # the %-sequences of any date format string, so keep this a plain string. -sed -e "s/@VERSION@/%{version}/g" -e "s/@DATE@/2026-10-23/g" packaging/linux/ai.storyteller.lightcraft.metainfo.xml.in > %{buildroot}%{_datadir}/metainfo/ai.storyteller.lightcraft.metainfo.xml +sed -e "s/@VERSION@/%{version}/g" -e "s/@DATE@/2026-10-28/g" packaging/linux/ai.storyteller.lightcraft.metainfo.xml.in > %{buildroot}%{_datadir}/metainfo/ai.storyteller.lightcraft.metainfo.xml # Upstream declares the app icon as type="stock" but it is a custom hicolor # icon, so declare it as cached for appstream validation. sed -i 's|<icon type="stock">ai.storyteller.lightcraft</icon>|<icon type="cached" width="64" height="64">ai.storyteller.lightcraft.png</icon>|' %{buildroot}%{_datadir}/metainfo/ai.storyteller.lightcraft.metainfo.xml ++++++ _service ++++++ --- /var/tmp/diff_new_pack.lwBleI/_old 2026-10-30 18:19:47.334076577 +0100 +++ /var/tmp/diff_new_pack.lwBleI/_new 2026-10-30 18:19:47.339076786 +0100 @@ -2,7 +2,7 @@ <service mode="manual" name="tar_scm"> <param name="url">https://github.com/storytold/lightcraft.git</param> <param name="scm">git</param> - <param name="revision">v0.13.0</param> + <param name="revision">v0.15.0</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="versionrewrite-replacement">\1</param> ++++++ lightcraft-0.13.0.tar.zst -> lightcraft-0.15.0.tar.zst ++++++ /work/SRC/openSUSE:Factory/lightcraft/lightcraft-0.13.0.tar.zst /work/SRC/openSUSE:Factory/.lightcraft.new.1255/lightcraft-0.15.0.tar.zst differ: char 7, line 1 ++++++ lightcraft-drop-unused-egui-patches.patch ++++++ From: openSUSE Publishing <[email protected]> Subject: [PATCH] Drop unused egui patch pins so the offline vendor build resolves Bug: none (downstream build fix, upstreamable as cleanup) Upstream pins four egui crates (egui_demo_lib, egui_extras, egui_inspection, egui_system_font_provider) in [patch.crates-io] that nothing in the workspace uses (Cargo.lock lists all four under [[patch.unused]]). cargo_vendor therefore omits them from vendor.tar.zst, and any --offline/--locked resolve against the vendor directory fails with "patch location ... does not contain packages matching ...". Drop the four unused pins (plus their [[patch.unused]] lock stanzas, so --locked stays satisfied); the [[package]] set is unchanged. --- a/Cargo.toml +++ b/Cargo.toml @@ -188,10 +188,6 @@ egui-winit = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" } egui-wgpu = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" } egui_glow = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" } -egui_extras = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" } egui_kittest = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" } -egui_system_font_provider = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" } eframe = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" } -egui_demo_lib = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" } -egui_inspection = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" } winit = { git = "https://github.com/storytold/winit.git", rev = "a517b3846ee8457d84ee4975110bfda6797c44dc" } --- a/Cargo.lock +++ b/Cargo.lock @@ -8201,23 +8201,3 @@ "syn 3.0.6", "winnow", ] - -[[patch.unused]] -name = "egui_demo_lib" -version = "0.37.0" -source = "git+https://github.com/storytold/egui.git?rev=6d518fc799681571963842f95b55a6b68431b15a#6d518fc799681571963842f95b55a6b68431b15a" - -[[patch.unused]] -name = "egui_extras" -version = "0.37.0" -source = "git+https://github.com/storytold/egui.git?rev=6d518fc799681571963842f95b55a6b68431b15a#6d518fc799681571963842f95b55a6b68431b15a" - -[[patch.unused]] -name = "egui_inspection" -version = "0.37.0" -source = "git+https://github.com/storytold/egui.git?rev=6d518fc799681571963842f95b55a6b68431b15a#6d518fc799681571963842f95b55a6b68431b15a" - -[[patch.unused]] -name = "egui_system_font_provider" -version = "0.37.0" -source = "git+https://github.com/storytold/egui.git?rev=6d518fc799681571963842f95b55a6b68431b15a#6d518fc799681571963842f95b55a6b68431b15a" ++++++ lightcraft-no-self-update.patch ++++++ From: openSUSE Publishing <[email protected]> Subject: [PATCH] No self-update in distro builds: no startup check, no install prompt Bug: none (downstream distribution policy, not upstreamable) The package manager owns updates on a distro install: do not phone home to the releases page on every GUI launch, and never offer to install an upstream release (UPDATE-AND-RESTART) over RPM-owned files. Upstream ships this machinery intentionally for its own builds. Help ▸ Check for Updates stays as an explicit manual action reporting through its outcome window; only the automatic startup check and the self-update install prompt are turned off. diff --git a/apps/lightcraft/src/main.rs b/apps/lightcraft/src/main.rs @@ -267,7 +267,10 @@ // HDR display: SDR unless the surface, platform and display all allow HDR hdr_display::report(cc.wgpu_render_state.as_ref().map(|r| r.target_format)); let mut app = LightcraftApp::new(session, services(cc, app_log_file.as_deref())); - app.set_startup_update_check(true); + // Downstream (openSUSE): the package manager owns updates, so the + // desktop app must not check for (and offer to install) upstream + // releases on its own at startup. Manual Help ▸ Check stays. + app.set_startup_update_check(false); if let Some(ui) = prefs { app.ui = ui; } diff --git a/crates/ui-egui/src/dialogs/updates_ui.rs b/crates/ui-egui/src/dialogs/updates_ui.rs @@ -5,7 +5,7 @@ use crate::LightcraftApp; #[cfg(not(target_arch = "wasm32"))] -use craft_update::updater::{Action, Status, Updater}; +use craft_update::updater::{Status, Updater}; pub(crate) struct Runtime { #[cfg(not(target_arch = "wasm32"))] @@ -96,13 +96,10 @@ pub(crate) fn show(app: &mut LightcraftApp, ctx: &egui::Context) { #[cfg(not(target_arch = "wasm32"))] { - // The restart helper is scheduled before the app closes, so no update starts over unsaved work. - let clean = app.session.unsaved().is_none(); - match app.updates_rt.updater.show_if(ctx, clean) { - Action::OpenUrl(url) => ctx.open_url(egui::OpenUrl::new_tab(url)), - Action::Close => ctx.send_viewport_cmd(egui::ViewportCommand::Close), - Action::None => {} - } + // Downstream (openSUSE): never draw the self-update prompt, so no + // upstream release is ever installed over RPM-owned files (neither + // at startup nor after a manual check). The manual Check for Updates + // outcome window below stays. // The window answers Help ▸ Check for Updates, so it follows the updater's status. let rt = &mut app.updates_rt; (rt.manual_window_open, rt.status_message) = match rt.updater.status() { ++++++ vendor.tar.zst ++++++ /work/SRC/openSUSE:Factory/lightcraft/vendor.tar.zst /work/SRC/openSUSE:Factory/.lightcraft.new.1255/vendor.tar.zst differ: char 7, line 1
