Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package pika-backup for openSUSE:Factory checked in at 2026-08-05 17:49:47 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/pika-backup (Old) and /work/SRC/openSUSE:Factory/.pika-backup.new.16738 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pika-backup" Wed Aug 5 17:49:47 2026 rev:8 rq:1369617 version:0.8.4 Changes: -------- --- /work/SRC/openSUSE:Factory/pika-backup/pika-backup.changes 2026-06-25 10:57:24.269785878 +0200 +++ /work/SRC/openSUSE:Factory/.pika-backup.new.16738/pika-backup.changes 2026-08-05 17:50:43.506742279 +0200 @@ -1,0 +2,11 @@ +Wed Aug 5 03:13:23 UTC 2026 - Dead Mozay <[email protected]> + +- Update to version 0.8.4: + * Fix one dialog for unmounting repositories opens per quit action. + * Fix orphaned browsing states are ignored instead of deleted. + * Fix questions being suppressed when running from UI. + * Fix repository configurations can be deleted while browsing + or active operations. + * Change to no longer using deprecated CSS features. + +------------------------------------------------------------------- Old: ---- pika-backup-0.8.3.obscpio New: ---- pika-backup-0.8.4.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ pika-backup.spec ++++++ --- /var/tmp/diff_new_pack.MYSp1J/_old 2026-08-05 17:50:44.486776562 +0200 +++ /var/tmp/diff_new_pack.MYSp1J/_new 2026-08-05 17:50:44.490776702 +0200 @@ -18,7 +18,7 @@ %define appname org.gnome.World.PikaBackup Name: pika-backup -Version: 0.8.3 +Version: 0.8.4 Release: 0 Summary: Simple backups based on borg License: GPL-3.0-or-later @@ -27,6 +27,7 @@ Source1: vendor.tar.zst BuildRequires: borgbackup BuildRequires: cargo-packaging +BuildRequires: clang BuildRequires: git-core BuildRequires: hicolor-icon-theme BuildRequires: itstool ++++++ _service ++++++ --- /var/tmp/diff_new_pack.MYSp1J/_old 2026-08-05 17:50:44.530778101 +0200 +++ /var/tmp/diff_new_pack.MYSp1J/_new 2026-08-05 17:50:44.534778241 +0200 @@ -3,7 +3,7 @@ <service name="obs_scm" mode="manual"> <param name="url">https://gitlab.gnome.org/World/pika-backup.git</param> <param name="scm">git</param> - <param name="revision">refs/tags/0.8.3</param> + <param name="revision">refs/tags/0.8.4</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> </service> ++++++ pika-backup-0.8.3.obscpio -> pika-backup-0.8.4.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-backup-0.8.3/CHANGELOG.md new/pika-backup-0.8.4/CHANGELOG.md --- old/pika-backup-0.8.3/CHANGELOG.md 2026-06-22 21:44:54.000000000 +0200 +++ new/pika-backup-0.8.4/CHANGELOG.md 2026-08-04 22:41:22.000000000 +0200 @@ -1,5 +1,13 @@ # Changelog +## 0.8.4 (2026-08-04) + +- Fix one dialog for unmounting repositories opens per quit action +- Fix orphaned browsing states are ignored instead of deleted +- Fix questions being suppressed when running from UI +- Fix repository configurations can be deleted while browsing or active operations +- Change to no longer using deprecated CSS features + ## 0.8.3 (2026-06-22) - Add Ctrl+W shortcut to close window #667 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-backup-0.8.3/Cargo.lock new/pika-backup-0.8.4/Cargo.lock --- old/pika-backup-0.8.3/Cargo.lock 2026-06-22 21:44:54.000000000 +0200 +++ new/pika-backup-0.8.4/Cargo.lock 2026-08-04 22:41:22.000000000 +0200 @@ -1865,7 +1865,7 @@ [[package]] name = "pika-backup" -version = "0.8.3" +version = "0.8.4" dependencies = [ "arc-swap", "ashpd", @@ -1912,7 +1912,7 @@ [[package]] name = "pika-backup-common" -version = "0.8.3" +version = "0.8.4" dependencies = [ "arc-swap", "ashpd", @@ -1952,7 +1952,7 @@ [[package]] name = "pika-backup-monitor" -version = "0.8.3" +version = "0.8.4" dependencies = [ "arc-swap", "ashpd", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-backup-0.8.3/Cargo.toml new/pika-backup-0.8.4/Cargo.toml --- old/pika-backup-0.8.3/Cargo.toml 2026-06-22 21:44:54.000000000 +0200 +++ new/pika-backup-0.8.4/Cargo.toml 2026-08-04 22:41:22.000000000 +0200 @@ -4,7 +4,7 @@ [workspace.package] description = "Keep your data safe" -version = "0.8.3" +version = "0.8.4" authors = [ "Sophie Herold <[email protected]>", "Fina Wilke <[email protected]>", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-backup-0.8.3/build-aux/org.gnome.World.PikaBackup.Devel.json new/pika-backup-0.8.4/build-aux/org.gnome.World.PikaBackup.Devel.json --- old/pika-backup-0.8.3/build-aux/org.gnome.World.PikaBackup.Devel.json 2026-06-22 21:44:54.000000000 +0200 +++ new/pika-backup-0.8.4/build-aux/org.gnome.World.PikaBackup.Devel.json 2026-08-04 22:41:22.000000000 +0200 @@ -38,26 +38,6 @@ ], "modules": [ { - "name": "libxxhash", - "buildsystem": "cmake", - "subdir": "cmake_unofficial", - "sources": [ - { - "type": "archive", - "url": "https://github.com/Cyan4973/xxHash/archive/refs/tags/v0.8.3.tar.gz", - "sha256": "aae608dfe8213dfd05d909a57718ef82f30722c392344583d3f39050c7f29a80", - "x-checker-data": { - "type": "git", - "tag-pattern": "^v([\\d.]+)$" - } - } - ], - "config-opts": [ - "-DBUILD_SHARED_LIBS=ON", - "-DCMAKE_BUILD_TYPE=Release" - ] - }, - { "name": "libfuse", "buildsystem": "meson", "config-opts": [ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-backup-0.8.3/build-aux/org.gnome.World.PikaBackup.yml new/pika-backup-0.8.4/build-aux/org.gnome.World.PikaBackup.yml --- old/pika-backup-0.8.3/build-aux/org.gnome.World.PikaBackup.yml 2026-06-22 21:44:54.000000000 +0200 +++ new/pika-backup-0.8.4/build-aux/org.gnome.World.PikaBackup.yml 2026-08-04 22:41:22.000000000 +0200 @@ -45,19 +45,6 @@ # see https://gitlab.gnome.org/World/pika-backup/-/issues/342 - --unset-env=GTK_THEME modules: - - name: libxxhash - buildsystem: cmake - subdir: cmake_unofficial - sources: - - type: archive - url: https://github.com/Cyan4973/xxHash/archive/refs/tags/v0.8.3.tar.gz - sha256: aae608dfe8213dfd05d909a57718ef82f30722c392344583d3f39050c7f29a80 - x-checker-data: - type: git - tag-pattern: ^v([\d.]+)$ - config-opts: - - -DBUILD_SHARED_LIBS=ON - - -DCMAKE_BUILD_TYPE=Release - name: libfuse buildsystem: meson config-opts: @@ -102,9 +89,6 @@ - type: git url: https://gitlab.gnome.org/World/pika-backup.git commit: 2372744703b06e9f5bc4c9d89fe83dd2802c37f7 - x-checker-data: - type: git - tag-pattern: ^([\d]+\.[\d]+\.[\d]+)$ # generated via flatpak-builder-tools - generated-sources.json # copy generated cargo config diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-backup-0.8.3/data/app.metainfo.xml.in new/pika-backup-0.8.4/data/app.metainfo.xml.in --- old/pika-backup-0.8.3/data/app.metainfo.xml.in 2026-06-22 21:44:54.000000000 +0200 +++ new/pika-backup-0.8.4/data/app.metainfo.xml.in 2026-08-04 22:41:22.000000000 +0200 @@ -79,9 +79,14 @@ </provides> <releases> + <release version="0.8.4" date="2026-08-04"> + <description> + <p>Fix an issue where a dialog was not shown when an operation needed user input. Also fix issues around deleting backup configurations with ongoing operations.</p> + </description> + </release> <release version="0.8.3" date="2026-06-22"> <description> - <p>Fix an issue where now information was shown initially when opening Pika Backup.</p> + <p>Fix an issue where no information was shown initially when opening Pika Backup.</p> </description> </release> <release version="0.8.2" date="2026-04-13"> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-backup-0.8.3/data/resources/style-dark.css new/pika-backup-0.8.4/data/resources/style-dark.css --- old/pika-backup-0.8.3/data/resources/style-dark.css 2026-06-22 21:44:54.000000000 +0200 +++ new/pika-backup-0.8.4/data/resources/style-dark.css 1970-01-01 01:00:00.000000000 +0100 @@ -1,18 +0,0 @@ -.ok-icon { - color: @green_1; - background-color: alpha(@green_4, .25); -} - -.warning-icon { - color: @yellow_2; - background: alpha(#cd9309, .25); -} - -.error-icon { - color: #ff7b63; -} - -.accent-icon { - padding: 9px; - color: @blue_1; -} \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-backup-0.8.3/data/resources/style-hc.css new/pika-backup-0.8.4/data/resources/style-hc.css --- old/pika-backup-0.8.3/data/resources/style-hc.css 2026-06-22 21:44:54.000000000 +0200 +++ new/pika-backup-0.8.4/data/resources/style-hc.css 1970-01-01 01:00:00.000000000 +0100 @@ -1,3 +0,0 @@ -.status-icon { - box-shadow: inset 0 0 0 2px currentColor; -} \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-backup-0.8.3/data/resources/style.css new/pika-backup-0.8.4/data/resources/style.css --- old/pika-backup-0.8.3/data/resources/style.css 2026-06-22 21:44:54.000000000 +0200 +++ new/pika-backup-0.8.4/data/resources/style.css 2026-08-04 22:41:22.000000000 +0200 @@ -115,6 +115,12 @@ border-radius: 9999px; } +@media (prefers-contrast: more) { + .status-icon { + box-shadow: inset 0 0 0 2px currentColor; + } +} + .ok-icon { color: var(--success-color); background-color: color-mix(in srgb, var(--success-bg-color), transparent 75%); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-backup-0.8.3/pika-backup/src/app.rs new/pika-backup-0.8.4/pika-backup/src/app.rs --- old/pika-backup-0.8.3/pika-backup/src/app.rs 2026-06-22 21:44:54.000000000 +0200 +++ new/pika-backup-0.8.4/pika-backup/src/app.rs 2026-08-04 22:41:22.000000000 +0200 @@ -25,6 +25,9 @@ /// Is the app currently shutting down #[property(get)] in_shutdown: Cell<bool>, + /// Is a quit attempt (e.g. the "Closing Archives" dialog) already + /// running. + pub(super) quit_in_progress: Cell<bool>, } #[glib::object_subclass] @@ -222,6 +225,22 @@ } pub async fn try_quit(&self) -> Result<()> { + // Ignore overlapping quit requests, while a quit attempt is already running. + if self.imp().quit_in_progress.replace(true) { + tracing::debug!("App::try_quit: quit already in progress, ignoring"); + return Ok(()); + } + + let result = self.try_quit_inner().await; + + // Allow future quit attempts if this one did not actually quit + // (e.g. cancelled by the user). + self.imp().quit_in_progress.set(false); + + result + } + + async fn try_quit_inner(&self) -> Result<()> { tracing::debug!("App::try_quit"); let dialog = UnmountArchives::new(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-backup-0.8.3/pika-backup/src/operation.rs new/pika-backup-0.8.4/pika-backup/src/operation.rs --- old/pika-backup-0.8.3/pika-backup/src/operation.rs 2026-06-22 21:44:54.000000000 +0200 +++ new/pika-backup-0.8.4/pika-backup/src/operation.rs 2026-08-04 22:41:22.000000000 +0200 @@ -113,7 +113,7 @@ if let log_json::Output::Progress(log_json::Progress::Question(question)) = &*output { - // A question was asked + tracing::debug!("A question was asked"); self.handle_borg_question(question); } } @@ -212,13 +212,13 @@ fn handle_borg_question(&self, question: &log_json::QuestionPrompt) { let communication = self.communication().clone(); - if !self.command.is_scheduled() { + if self.command.is_scheduled() { // Abort backup if question is asked during schedule communication.set_instruction(borg::Instruction::Abort( borg::Abort::QuestionDuringSchedule(question.clone()), )); } else { - // Show dialog if question is asked during schedule + // Show dialog if question is not asked during schedule glib::MainContext::default().spawn_local(glib::clone!( #[strong] question, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-backup-0.8.3/pika-backup/src/widget/dialog/unmount_archives.rs new/pika-backup-0.8.4/pika-backup/src/widget/dialog/unmount_archives.rs --- old/pika-backup-0.8.3/pika-backup/src/widget/dialog/unmount_archives.rs 2026-06-22 21:44:54.000000000 +0200 +++ new/pika-backup-0.8.4/pika-backup/src/widget/dialog/unmount_archives.rs 2026-08-04 22:41:22.000000000 +0200 @@ -102,7 +102,19 @@ { match BACKUP_CONFIG.load().try_get(config_id) { Err(err) => { - tracing::error!("Can't unmount: {err:?}"); + // The config was removed while its archives were still + // open for browsing. There is nothing left to unmount, + // so drop the orphaned browsing state. This avoids looping + // on "Closing Archives" screen forever. + tracing::warn!( + "Dropping orphaned browsing state for {config_id:?}: {err:?}" + ); + let _ = BACKUP_HISTORY + .try_update(|histories| { + histories.remove_browsing(config_id.clone()); + Ok(()) + }) + .await; } Ok(config) => match borg::functions::umount(&config.repo_id).await { Err(err) => { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-backup-0.8.3/pika-backup/src/widget/overview.rs new/pika-backup-0.8.4/pika-backup/src/widget/overview.rs --- old/pika-backup-0.8.3/pika-backup/src/widget/overview.rs 2026-06-22 21:44:54.000000000 +0200 +++ new/pika-backup-0.8.4/pika-backup/src/widget/overview.rs 2026-08-04 22:41:22.000000000 +0200 @@ -168,6 +168,37 @@ } async fn on_remove_backup(&self) -> Result<()> { + let config = BACKUP_CONFIG.load().active()?.clone(); + + BORG_OPERATION.with(|operations| { + if let Some(operation) = operations.load().get(&config.id) { + Err(Message::new( + gettext("Repository in Use"), + gettextf( + "Repository configurations cannot be deleted while operation “{}” is in progress.", + [&operation.name()], + ), + )) + } else { + Ok(()) + } + })?; + + // If archives are still open for browsing, unmount them before removing + // the setup. If unmounting fails, abort and show the error, + // so the user can close it and try again. + let is_browsing = BACKUP_HISTORY + .load() + .try_get(&config.id) + .map(|history| history.is_browsing()) + .unwrap_or(false); + + if is_browsing { + return Err( + Message::new(gettext("Repository Open for Browsing"), gettext("Repository configurations cannot be deleted while the repository is open for browsing.")).into(), + ); + } + crate::utils::confirmation_dialog( self, &gettext("Remove Backup Setup?"), @@ -177,13 +208,9 @@ ) .await?; - let config = BACKUP_CONFIG.load().active()?.clone(); - - let config_id = config.id.clone(); - BACKUP_CONFIG .try_update(|s| { - s.remove(&config_id)?; + s.remove(&config.id)?; Ok(()) }) .await?; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-backup-0.8.3/pika-backup-common/src/borg/process.rs new/pika-backup-0.8.4/pika-backup-common/src/borg/process.rs --- old/pika-backup-0.8.3/pika-backup-common/src/borg/process.rs 2026-06-22 21:44:54.000000000 +0200 +++ new/pika-backup-0.8.4/pika-backup-common/src/borg/process.rs 2026-08-04 22:41:22.000000000 +0200 @@ -6,8 +6,7 @@ use std::os::unix::net::UnixStream; use std::time::Duration; -use async_process; -use async_process::{ChildStderr, ChildStdin}; +use async_process::{self, ChildStderr, ChildStdin}; use futures_util::FutureExt; use serde::{Deserialize, Serialize}; use smol::io::BufReader; @@ -584,7 +583,7 @@ Instruction::Abort(reason) => { self.communication.set_status(RunStatus::Stopping); - tracing::debug!("Sending SIGINT to borg process"); + tracing::debug!("Sending SIGINT to borg process. Reason: {reason}"); nix::sys::signal::kill( nix::unistd::Pid::from_raw(pid.try_into().unwrap()), nix::sys::signal::Signal::SIGINT, ++++++ pika-backup.obsinfo ++++++ --- /var/tmp/diff_new_pack.MYSp1J/_old 2026-08-05 17:50:45.406808745 +0200 +++ /var/tmp/diff_new_pack.MYSp1J/_new 2026-08-05 17:50:45.414809025 +0200 @@ -1,5 +1,5 @@ name: pika-backup -version: 0.8.3 -mtime: 1782157494 -commit: a1131c6863299b614778366aea4fdf318e794447 +version: 0.8.4 +mtime: 1785876082 +commit: a528dec8d579797ba6f18079e9fabf8b16062fb0 ++++++ vendor.tar.zst ++++++ /work/SRC/openSUSE:Factory/pika-backup/vendor.tar.zst /work/SRC/openSUSE:Factory/.pika-backup.new.16738/vendor.tar.zst differ: char 7, line 1
