[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1109600: marked as done (unblock: ark/4:25.04.3-1)



Your message dated Mon, 21 Jul 2025 22:19:09 +0000
with message-id <E1udyqj-00APr6-1o@respighi.debian.org>
and subject line unblock ark
has caused the Debian Bug report #1109600,
regarding unblock: ark/4:25.04.3-1
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
1109600: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1109600
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
X-Debbugs-Cc: ark@packages.debian.org, Debian Qt/KDE Maintainers <debian-qt-kde@lists.debian.org>
Control: affects -1 + src:ark
User: release.debian.org@packages.debian.org
Usertags: unblock

Dear Release Team,

please unblock package ark.

[ Reason ]
It contains the following changes:
* New upstream release (25.04.3).
  - CompressFileItemAction: stat without progress info.
* Backport upstream commits:
  - Fix file sorting order not matching Dolphin’s. [55b6d6e6] (kde#387969)
  - Fix corner case of single-threaded CPU getting 0 thread. [1435ccd4]

The complete debdiff is a little bug due to translation fixes so I’m
attaching a simple diff stripped of these for your convenience :
    diff -ur --exclude=po ark-25.04.[03]

[ Tests ]
- Upstream test suite passes in sbuild.
- Tested opening and extracting several types of archives.

[ Risks ]
Contains only the upstream point release and backported patches. Further
fixes can easily be backported, or the changes reverted.

[ Checklist ]
  [x] all changes are documented in the d/changelog
  [x] I reviewed all changes and I approve them
  [x] attach debdiff against the package in testing


Thanks !


unblock ark/4:25.04.3-1
diff -Nru ark-25.04.0/app/compressfileitemaction.cpp ark-25.04.3/app/compressfileitemaction.cpp
--- ark-25.04.0/app/compressfileitemaction.cpp	2025-04-07 23:07:48.000000000 +0200
+++ ark-25.04.3/app/compressfileitemaction.cpp	2025-07-01 11:40:18.000000000 +0200
@@ -76,7 +76,7 @@
     if (compressMenuAction->isEnabled()) {
         const KFileItemList items = fileItemInfos.items();
         const KFileItem &first = items.first();
-        auto *job = KIO::stat(first.url().adjusted(QUrl::RemoveFilename | QUrl::StripTrailingSlash));
+        auto *job = KIO::stat(first.url().adjusted(QUrl::RemoveFilename | QUrl::StripTrailingSlash), KIO::HideProgressInfo);
         connect(job, &KJob::result, compressMenu, [actionsToBeDisabledInReadOnlyDir, job]() {
             if (!job->error() && !KFileItem(job->statResult(), job->url()).isWritable()) {
                 for (auto action : actionsToBeDisabledInReadOnlyDir) {
diff -Nru ark-25.04.0/app/org.kde.ark.appdata.xml ark-25.04.3/app/org.kde.ark.appdata.xml
--- ark-25.04.0/app/org.kde.ark.appdata.xml	2025-04-07 23:07:48.000000000 +0200
+++ ark-25.04.3/app/org.kde.ark.appdata.xml	2025-07-01 11:40:18.000000000 +0200
@@ -418,6 +418,9 @@
     <binary>ark</binary>
   </provides>
   <releases>
+    <release version="25.04.3" date="2025-07-03"/>
+    <release version="25.04.2" date="2025-06-05"/>
+    <release version="25.04.1" date="2025-05-08"/>
     <release version="25.04.0" date="2025-04-17"/>
     <release version="24.12.3" date="2025-03-06"/>
     <release version="24.12.2" date="2025-02-06"/>
diff -Nru ark-25.04.0/CMakeLists.txt ark-25.04.3/CMakeLists.txt
--- ark-25.04.0/CMakeLists.txt	2025-04-07 23:07:48.000000000 +0200
+++ ark-25.04.3/CMakeLists.txt	2025-07-01 11:40:18.000000000 +0200
@@ -3,7 +3,7 @@
 # KDE Application Version, managed by release script
 set (RELEASE_SERVICE_VERSION_MAJOR "25")
 set (RELEASE_SERVICE_VERSION_MINOR "04")
-set (RELEASE_SERVICE_VERSION_MICRO "0")
+set (RELEASE_SERVICE_VERSION_MICRO "3")
 set (RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
 project(ark VERSION ${RELEASE_SERVICE_VERSION})
 
diff -Nru ark-25.04.0/debian/changelog ark-25.04.3/debian/changelog
--- ark-25.04.0/debian/changelog	2025-04-17 18:40:17.000000000 +0200
+++ ark-25.04.3/debian/changelog	2025-07-18 15:34:31.000000000 +0200
@@ -1,3 +1,14 @@
+ark (4:25.04.3-1) unstable; urgency=medium
+
+  [ Aurélien COUDERC ]
+  * New upstream release (25.04.3).
+    - CompressFileItemAction: stat without progress info.
+  * Backport upstream commits:
+    - Fix file sorting order not matching Dolphin’s. [55b6d6e6] (kde#387969)
+    - Fix corner case of single-threaded CPU getting 0 thread. [1435ccd4]
+
+ -- Aurélien COUDERC <coucouf@debian.org>  Fri, 18 Jul 2025 15:34:31 +0200
+
 ark (4:25.04.0-1) unstable; urgency=medium
 
   [ Aurélien COUDERC ]
diff -Nru ark-25.04.0/debian/patches/series ark-25.04.3/debian/patches/series
--- ark-25.04.0/debian/patches/series	1970-01-01 01:00:00.000000000 +0100
+++ ark-25.04.3/debian/patches/series	2025-07-18 15:32:15.000000000 +0200
@@ -0,0 +1,2 @@
+upstream_55b6d6e6_Implement-Dolphin-style-natural-string-sorting.patch
+upstream_1435ccd4_Fix-corner-case-of-single-threaded-CPU-when-calculating-number-of-threads.patch
diff -Nru ark-25.04.0/debian/patches/upstream_1435ccd4_Fix-corner-case-of-single-threaded-CPU-when-calculating-number-of-threads.patch ark-25.04.3/debian/patches/upstream_1435ccd4_Fix-corner-case-of-single-threaded-CPU-when-calculating-number-of-threads.patch
--- ark-25.04.0/debian/patches/upstream_1435ccd4_Fix-corner-case-of-single-threaded-CPU-when-calculating-number-of-threads.patch	1970-01-01 01:00:00.000000000 +0100
+++ ark-25.04.3/debian/patches/upstream_1435ccd4_Fix-corner-case-of-single-threaded-CPU-when-calculating-number-of-threads.patch	2025-07-18 15:33:13.000000000 +0200
@@ -0,0 +1,28 @@
+From 1435ccd417f6ab533d511865846c263936dec6c6 Mon Sep 17 00:00:00 2001
+From: Zhangzhi Hu <integral@member.fsf.org>
+Date: Thu, 27 Mar 2025 18:56:24 +0000
+Subject: [PATCH] Fix corner case of single-threaded CPU when calculating
+ number of threads
+
+Currently, the number of threads will be 0 on single-threaded CPUs.
+Use `std::max` to fix this corner case.
+---
+ plugins/libarchive/readwritelibarchiveplugin.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/plugins/libarchive/readwritelibarchiveplugin.cpp b/plugins/libarchive/readwritelibarchiveplugin.cpp
+index 5f91385f9..b5c8e711c 100644
+--- a/plugins/libarchive/readwritelibarchiveplugin.cpp
++++ b/plugins/libarchive/readwritelibarchiveplugin.cpp
+@@ -302,7 +302,7 @@ bool ReadWriteLibarchivePlugin::initializeNewFileCompressionOptions(const Compre
+ {
+     int ret;
+     bool requiresExecutable = false;
+-    const auto threads = std::to_string(static_cast<unsigned>(std::thread::hardware_concurrency() * 0.8));
++    const auto threads = std::to_string(std::max(1u, static_cast<unsigned>(std::thread::hardware_concurrency() * 0.8)));
+     const bool is7zFile = filename().right(2).toUpper() == QLatin1String("7Z");
+ 
+     if (is7zFile) {
+-- 
+GitLab
+
diff -Nru ark-25.04.0/debian/patches/upstream_55b6d6e6_Implement-Dolphin-style-natural-string-sorting.patch ark-25.04.3/debian/patches/upstream_55b6d6e6_Implement-Dolphin-style-natural-string-sorting.patch
--- ark-25.04.0/debian/patches/upstream_55b6d6e6_Implement-Dolphin-style-natural-string-sorting.patch	1970-01-01 01:00:00.000000000 +0100
+++ ark-25.04.3/debian/patches/upstream_55b6d6e6_Implement-Dolphin-style-natural-string-sorting.patch	2025-07-18 15:28:22.000000000 +0200
@@ -0,0 +1,105 @@
+From 55b6d6e68616f2102fe3b7a4b4182ec6e403a3b1 Mon Sep 17 00:00:00 2001
+From: Vladislav Kachegov <vladkachegov@gmail.com>
+Date: Mon, 24 Feb 2025 15:02:49 +0300
+Subject: [PATCH] Implement Dolphin-style natural string sorting
+
+Enabled natural string sorting to match Dolphin's order, improving human-friendly
+string comparison. Updated the function comment for clarity and noted potential
+refactoring to a framework utility for maintainability.
+
+BUG: 387969
+---
+ part/archivesortfiltermodel.cpp | 42 +++++++++++++++++++++++++++++++++
+ part/archivesortfiltermodel.h   |  4 ++++
+ 2 files changed, 46 insertions(+)
+
+diff --git a/part/archivesortfiltermodel.cpp b/part/archivesortfiltermodel.cpp
+index dabac5ce6..b2fa8a489 100644
+--- a/part/archivesortfiltermodel.cpp
++++ b/part/archivesortfiltermodel.cpp
+@@ -10,11 +10,48 @@
+ 
+ using namespace Kerfuffle;
+ 
++namespace
++{
++/**
++ * Performs a natural string comparison.
++ * This function compares strings in a way that is similar to natural human sorting order.
++ * It is adapted from the Dolphin KFileItemModel::stringCompare implementation.
++ *
++ * @note Consider refactoring this logic to a framework-level utility
++ * for improved maintainability and reusability across multiple projects.
++ *
++ * @return Integer less than, equal to, or greater than zero if the first argument is
++ * found, respectively, to be less than, to match, or be greater than the second.
++ */
++int naturalStringCompare(const QString &a, const QString &b, const QCollator &collator)
++{
++    // Split extension, taking into account it can be empty
++    constexpr QString::SectionFlags flags = QString::SectionSkipEmpty | QString::SectionIncludeLeadingSep;
++
++    // Sort by baseName first
++    const QString aBaseName = a.section(QLatin1Char('.'), 0, 0, flags);
++    const QString bBaseName = b.section(QLatin1Char('.'), 0, 0, flags);
++
++    const int res = collator.compare(aBaseName, bBaseName);
++    if (res != 0 || (aBaseName.length() == a.length() && bBaseName.length() == b.length())) {
++        return res;
++    }
++
++    // sliced() has undefined behavior when pos < 0 or pos > size().
++    Q_ASSERT(aBaseName.length() <= a.length() && aBaseName.length() >= 0);
++    Q_ASSERT(bBaseName.length() <= b.length() && bBaseName.length() >= 0);
++
++    // baseNames were equal, sort by extension
++    return collator.compare(a.sliced(aBaseName.length()), b.sliced(bBaseName.length()));
++}
++}
++
+ ArchiveSortFilterModel::ArchiveSortFilterModel(QObject *parent)
+     : QSortFilterProxyModel(parent)
+ {
+     // always enable recursive fitlering
+     setRecursiveFilteringEnabled(true);
++    m_collator.setNumericMode(true);
+ }
+ 
+ ArchiveSortFilterModel::~ArchiveSortFilterModel()
+@@ -36,6 +73,11 @@ bool ArchiveSortFilterModel::lessThan(const QModelIndex &leftIndex, const QModel
+         return false;
+     } else {
+         switch (col) {
++        case DisplayName: {
++            const auto leftFullName = left->property(property.constData()).toString();
++            const auto rightFullName = right->property(property.constData()).toString();
++            return naturalStringCompare(leftFullName, rightFullName, m_collator) < 0;
++        }
+         case Size:
+         case CompressedSize:
+             if (left->property(property.constData()).toULongLong() < right->property(property.constData()).toULongLong()) {
+diff --git a/part/archivesortfiltermodel.h b/part/archivesortfiltermodel.h
+index 3fa392d1b..3cd30b3ff 100644
+--- a/part/archivesortfiltermodel.h
++++ b/part/archivesortfiltermodel.h
+@@ -6,6 +6,7 @@
+ #ifndef ARCHIVESORTFILTERMODEL_H
+ #define ARCHIVESORTFILTERMODEL_H
+ 
++#include <QCollator>
+ #include <QSortFilterProxyModel>
+ 
+ class ArchiveSortFilterModel : public QSortFilterProxyModel
+@@ -17,6 +18,9 @@ public:
+     ~ArchiveSortFilterModel() override;
+ 
+     bool lessThan(const QModelIndex &leftIndex, const QModelIndex &rightIndex) const override;
++
++private:
++    QCollator m_collator;
+ };
+ 
+ #endif // ARCHIVESORTFILTERMODEL_H
+-- 
+GitLab
+
diff -Nru ark-25.04.0/plugins/cliarjplugin/kerfuffle_cliarj.json.cmake ark-25.04.3/plugins/cliarjplugin/kerfuffle_cliarj.json.cmake
--- ark-25.04.0/plugins/cliarjplugin/kerfuffle_cliarj.json.cmake	2025-04-07 23:07:48.000000000 +0200
+++ ark-25.04.3/plugins/cliarjplugin/kerfuffle_cliarj.json.cmake	2025-07-01 11:40:18.000000000 +0200
@@ -39,6 +39,7 @@
         "Description[ro]": "Suport deplin pentru formatul de arhivă ARJ",
         "Description[ru]": "Полная поддержка архивов ARJ",
         "Description[sa]": "एआरजे संग्रहस्वरूपेषु पूर्णसमर्थनम्",
+        "Description[sk]": "Úplná podpora archívnych formátov ARJ",
         "Description[sl]": "Polna podpora za arhive vrste ARJ",
         "Description[sv]": "Fullt stöd för ARJ arkivformat",
         "Description[tr]": "ARJ arşiv biçimi için tam destek",
diff -Nru ark-25.04.0/po/ca@valencia/ark.po ark-25.04.3/po/ca@valencia/ark.po
--- ark-25.04.0/po/ca@valencia/ark.po	2025-04-07 23:07:48.000000000 +0200
+++ ark-25.04.3/po/ca@valencia/ark.po	2025-07-01 11:40:18.000000000 +0200
@@ -997,7 +997,8 @@
 #: kerfuffle/generalsettingspage.ui:17
 #, kde-format
 msgid "When clicking a file in an archive or pressing the Return key:"
-msgstr "Fent clic en un fitxer, un arxiu o prement la tecla «Retorn»:"
+msgstr ""
+"Quan es clique damunt d'un fitxer en un arxiu o prement la tecla «Retorn»:"
 
 #. i18n: ectx: property (text), widget (QRadioButton, radioButton)
 #: kerfuffle/generalsettingspage.ui:33
diff -Nru ark-25.04.0/po/es/ark.po ark-25.04.3/po/es/ark.po
--- ark-25.04.0/po/es/ark.po	2025-04-07 23:07:48.000000000 +0200
+++ ark-25.04.3/po/es/ark.po	2025-07-01 11:40:18.000000000 +0200
@@ -1,4 +1,6 @@
 # Spanish translations for ark.po package.
+# Copyright (C) 2000-2025 This file is copyright:
+# This file is distributed under the same license as the ark package.
 #
 # SPDX-FileCopyrightText: 2000-2002 Pablo de Vicente <vicente@oan.es>
 # SPDX-FileCopyrightText: 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025 Eloy Cuadra <ecuadra@eloihr.net>
@@ -8,7 +10,7 @@
 "Project-Id-Version: ark\n"
 "Report-Msgid-Bugs-To: https://bugs.kde.org\n";
 "POT-Creation-Date: 2025-03-06 00:44+0000\n"
-"PO-Revision-Date: 2025-03-19 14:19+0100\n"
+"PO-Revision-Date: 2025-05-04 01:26+0100\n"
 "Last-Translator: Eloy Cuadra <ecuadra@eloihr.net>\n"
 "Language-Team: Spanish <kde-l10n-es@kde.org>\n"
 "Language: es\n"
diff -Nru ark-25.04.0/po/es/docs/ark/index.docbook ark-25.04.3/po/es/docs/ark/index.docbook
--- ark-25.04.0/po/es/docs/ark/index.docbook	2025-04-07 23:07:48.000000000 +0200
+++ ark-25.04.3/po/es/docs/ark/index.docbook	2025-07-01 11:40:18.000000000 +0200
@@ -201,7 +201,7 @@
 
 <para
 >Para abrir un archivo comprimido en &ark;, seleccione <guimenuitem
->Abrir...</guimenuitem
+>Abrir…</guimenuitem
 > (<keycombo action="simul"
 >&Ctrl;<keycap
 >O</keycap
@@ -227,7 +227,7 @@
 >Puede realizar varias operaciones en un archivo comprimido abierto usando el menú <guimenu
 >Archivo comprimido</guimenu
 >. Por ejemplo, puede guardar el archivo comprimido con un nombre diferente usando <guimenuitem
->Guardar como...</guimenuitem
+>Guardar como…</guimenuitem
 >. Puede ver las propiedades del archivo comprimido (como su tipo, tamaño y suma de comprobación MD5) usando la opción <guimenuitem
 >Propiedades</guimenuitem
 >.</para>
@@ -331,7 +331,7 @@
 <listitem>
 <para
 ><guimenuitem
->Abrir con...</guimenuitem
+>Abrir con…</guimenuitem
 > le permite escoger una aplicación para abrir el archivo.</para>
 </listitem>
 <listitem>
@@ -409,7 +409,7 @@
 >Si edita y guarda un archivo que había abierto usando <guimenuitem
 >Abrir</guimenuitem
 > o <guimenuitem
->Abrir con...</guimenuitem
+>Abrir con…</guimenuitem
 >, &ark; le preguntará si desea actualizar dicho archivo dentro del archivo comprimido. Si responde afirmativamente, se actualizará dicho archivo dentro del archivo comprimido.</para>
 
 </sect2>
@@ -425,7 +425,7 @@
 > en el menú <guimenu
 >Archivo</guimenu
 >. Esto abre un submenú con las carpetas a las que ha accedido anteriormente, donde podrá seleccionar una para extraer archivos rápidamente en ella. También puede realizar la misma acción usando la opción del submenú <guisubmenu
->Extraer en...</guisubmenu
+>Extraer en…</guisubmenu
 > para abrir el diálogo <guilabel
 >Extraer</guilabel
 >, donde podrá ajustar diversas opciones que afectan a la extracción. Consulte más adelante la información sobre las opciones disponibles en el diálogo de extracción.</para>
@@ -538,7 +538,7 @@
 
 <para
 >Para añadir archivos o carpetas en el nuevo archivo comprimido, use <guimenuitem
->Añadir archivos...</guimenuitem
+>Añadir archivos…</guimenuitem
 > en el menú <guimenu
 >Archivo comprimido</guimenu
 >.</para>
@@ -670,7 +670,7 @@
 <listitem>
 <para
 ><guimenuitem
->Extraer en...</guimenuitem
+>Extraer en…</guimenuitem
 > abre un diálogo de extracción en el que podrá escoger la carpeta de destino y varias opciones de extracción.</para>
 </listitem>
 </itemizedlist>
@@ -692,7 +692,7 @@
 <listitem>
 <para
 ><guimenuitem
->Comprimir en...</guimenuitem
+>Comprimir en…</guimenuitem
 > abre un diálogo en el que podrá seleccionar la carpeta, el nombre y el tipo de archivo comprimido.</para>
 </listitem>
 </itemizedlist>
diff -Nru ark-25.04.0/po/eu/ark.po ark-25.04.3/po/eu/ark.po
--- ark-25.04.0/po/eu/ark.po	2025-04-07 23:07:48.000000000 +0200
+++ ark-25.04.3/po/eu/ark.po	2025-07-01 11:40:18.000000000 +0200
@@ -1,7 +1,7 @@
 # Translation for ark.po to Euskara/Basque (eu).
 # Copyright (C) 1999-2024 This file is copyright:
 # This file is distributed under the same license as the ark package.
-# SPDX-FileCopyrightText: 2023, 2024 KDE euskaratzeko proiektuko arduraduna <xalba@ni.eus>
+# SPDX-FileCopyrightText: 2023, 2024, 2025 KDE euskaratzeko proiektuko arduraduna <xalba@ni.eus>
 #
 # Translators:
 # Marcos  <marcosgoi@jazzfree.com>, 2000.
@@ -13,14 +13,14 @@
 "Project-Id-Version: ark\n"
 "Report-Msgid-Bugs-To: https://bugs.kde.org\n";
 "POT-Creation-Date: 2025-03-06 00:44+0000\n"
-"PO-Revision-Date: 2024-09-01 07:33+0200\n"
+"PO-Revision-Date: 2025-04-25 22:10+0200\n"
 "Last-Translator: Iñigo Salvador Azurmendi <xalba@ni.eus>\n"
 "Language-Team: Basque <kde-i18n-eu@kde.org>\n"
 "Language: eu\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Lokalize 24.08.0\n"
+"X-Generator: Lokalize 25.04.0\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #, kde-format
@@ -414,9 +414,9 @@
 "<interface>Hamburger Menu</interface> button. Both contain mostly the same "
 "commands and configuration options."
 msgstr ""
-"Honek <emphasis>Menu-barra</emphasis> bat edo <interface>Hanburgesa-menu</"
-"interface> botoi baten artean trukatzen du. Biek dituzte, oro har komando "
-"eta konfiguratzeko aukera berdinak."
+"Honek <emphasis>Menu-barra</emphasis> bat edo <interface>Hanburger menu</"
+"interface> botoi bat izatearen artean trukatzen du. Biek dituzte, oro har "
+"komando eta konfiguratzeko aukera berdinak."
 
 #: app/mainwindow.cpp:315
 #, kde-format
diff -Nru ark-25.04.0/po/sk/ark.po ark-25.04.3/po/sk/ark.po
--- ark-25.04.0/po/sk/ark.po	2025-04-07 23:07:48.000000000 +0200
+++ ark-25.04.3/po/sk/ark.po	2025-07-01 11:40:18.000000000 +0200
@@ -9,19 +9,20 @@
 # Mthw <jari_45@hotmail.com>, 2019.
 # Matej Mrenica <matejm98mthw@gmail.com>, 2019, 2020, 2021, 2022.
 # Dušan Kazik <prescott66@gmail.com>, 2020.
+# SPDX-FileCopyrightText: 2025 Lucia Mrenica <lucia.mrenica@gmail.com>
 msgid ""
 msgstr ""
 "Project-Id-Version: ark\n"
 "Report-Msgid-Bugs-To: https://bugs.kde.org\n";
 "POT-Creation-Date: 2025-03-06 00:44+0000\n"
-"PO-Revision-Date: 2023-12-06 19:15+0100\n"
-"Last-Translator: Roman Paholik <wizzardsk@gmail.com>\n"
-"Language-Team: Slovak <kde-sk@linux.sk>\n"
+"PO-Revision-Date: 2025-05-25 12:18+0200\n"
+"Last-Translator: Lucia Mrenica <lucia.mrenica@gmail.com>\n"
+"Language-Team: Slovak <kde-i18n-doc@kde.org>\n"
 "Language: sk\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Lokalize 23.08.3\n"
+"X-Generator: Lokalize 25.04.1\n"
 "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
 
 #, kde-format
@@ -124,20 +125,17 @@
 msgstr "Komprimovať do..."
 
 #: app/compressfileitemaction.cpp:105
-#, fuzzy, kde-format
-#| msgctxt "@action:inmenu Part of Compress submenu in Dolphin context menu"
-#| msgid "Compress to..."
+#, kde-format
 msgctxt ""
 "@action:inmenu Part of Compress submenu in Dolphin context menu, %1 filename"
 msgid "Compress to \"%1\""
-msgstr "Komprimovať do..."
+msgstr "Komprimovať do \"%1\""
 
 #: app/extractfileitemaction.cpp:66
-#, fuzzy, kde-format
-#| msgid "Extract"
+#, kde-format
 msgctxt "@action:inmenu Part of Extract submenu in Dolphin context menu"
 msgid "Extract to…"
-msgstr "Rozbaliť"
+msgstr "Rozbaliť do…"
 
 #: app/extractfileitemaction.cpp:78
 #, kde-format
@@ -146,11 +144,10 @@
 msgstr "Rozbaliť sem"
 
 #: app/extractfileitemaction.cpp:84
-#, fuzzy, kde-format
-#| msgid "Extract multiple archives"
+#, kde-format
 msgctxt "@action:inmenu Part of Extract submenu in Dolphin context menu"
 msgid "Extract here and delete archive"
-msgstr "Rozbaliť viacero archívov"
+msgstr "Rozbaliť sem a vymazať archív"
 
 #: app/extractfileitemaction.cpp:91
 #, kde-format
@@ -442,12 +439,9 @@
 msgstr "Vitajte v %1"
 
 #: app/welcomeview/welcomeview.cpp:55
-#, fuzzy, kde-format
-#| msgctxt "@title:window"
-#| msgid "Delete File"
-#| msgid_plural "Delete Files"
+#, kde-format
 msgid "No recent files"
-msgstr "Vymazať súbor"
+msgstr "Žiadne nedávne súbory"
 
 #: app/welcomeview/welcomeview.cpp:143
 #, kde-format
@@ -522,7 +516,7 @@
 #: app/welcomeview/welcomeview.ui:400
 #, kde-format
 msgid "Close Welcome Page"
-msgstr ""
+msgstr "Zatvoriť uvítaciu stránku"
 
 #: kerfuffle/adddialog.cpp:32 kerfuffle/adddialog.cpp:70
 #, kde-format
@@ -1677,7 +1671,7 @@
 #, kde-format
 msgctxt "open a file with external program"
 msgid "&Open in External Application"
-msgstr ""
+msgstr "Otvoriť v externej aplikácií"
 
 #: part/part.cpp:372
 #, kde-format
@@ -1745,11 +1739,10 @@
 msgstr "Kliknutím pridáte súbory do archívu"
 
 #: part/part.cpp:412
-#, fuzzy, kde-format
-#| msgid "Compress to Archive"
+#, kde-format
 msgctxt "@action"
 msgid "Remove from Archive"
-msgstr "Komprimovať do archívu"
+msgstr "Odstrániť z archívu"
 
 #: part/part.cpp:422
 #, kde-format
@@ -2083,7 +2076,7 @@
 #: plugins/cliarjplugin/cliplugin.cpp:321
 #, kde-format
 msgid "ARJ old"
-msgstr ""
+msgstr "ARJ starý"
 
 #: plugins/cliarjplugin/cliplugin.cpp:322
 #, kde-format
diff -Nru ark-25.04.0/po/zh_CN/ark.po ark-25.04.3/po/zh_CN/ark.po
--- ark-25.04.0/po/zh_CN/ark.po	2025-04-07 23:07:48.000000000 +0200
+++ ark-25.04.3/po/zh_CN/ark.po	2025-07-01 11:40:18.000000000 +0200
@@ -572,7 +572,7 @@
 #, kde-format
 msgid ""
 "Extract to a subfolder if the archive has more than one top-level entry."
-msgstr "如果压缩文件含多个顶层目录,将它们解压到子文件夹中。"
+msgstr "压缩文件有多个顶级目录时,解压到子文件夹中。"
 
 #. i18n: ectx: label, entry (splitterSizes), group (MainWindow)
 #: kerfuffle/ark.kcfg:41
@@ -954,25 +954,25 @@
 #: kerfuffle/extractionsettingspage.ui:44
 #, kde-format
 msgid "Extract to a subfolder if the archive has more than one top-level entry"
-msgstr "如果压缩文件含多个顶层目录,将它们解压到子文件夹中。"
+msgstr "压缩文件有多个顶级目录时,解压到子文件夹中。"
 
 #. i18n: ectx: property (text), widget (QLabel, label)
 #: kerfuffle/generalsettingspage.ui:17
 #, kde-format
 msgid "When clicking a file in an archive or pressing the Return key:"
-msgstr "点击压缩文件中的文件或按下回车键时:"
+msgstr "点击压缩文件中的文件、或按下回车键时:"
 
 #. i18n: ectx: property (text), widget (QRadioButton, radioButton)
 #: kerfuffle/generalsettingspage.ui:33
 #, kde-format
 msgid "Pre&view the file with internal previewer"
-msgstr "预览 - 使用 Ark 的内建查看程序预览文件(&V)"
+msgstr "预览(使用内建查看器)(&V)"
 
 #. i18n: ectx: property (text), widget (QRadioButton, radioButton_2)
 #: kerfuffle/generalsettingspage.ui:43
 #, kde-format
 msgid "Open the fi&le with associated application"
-msgstr "打开 - 使用关联的应用程序打开文件(&L)"
+msgstr "打开(使用关联的外部程序)(&L)"
 
 #. i18n: ectx: property (text), widget (QCheckBox, kcfg_showEncryptionWarning)
 #: kerfuffle/generalsettingspage.ui:60
@@ -1102,7 +1102,7 @@
 #: kerfuffle/previewsettingspage.ui:22
 #, kde-format
 msgid "Disable preview for files larger than:"
-msgstr "禁用预览 - 如果文件体积大于:"
+msgstr "允许预览的文件大小上限:"
 
 #: kerfuffle/propertiesdialog.cpp:41
 #, kde-format
@@ -1617,7 +1617,7 @@
 #, kde-format
 msgctxt "open a file with external program"
 msgid "&Open in External Application"
-msgstr "使用外部应用程序打开(&O)"
+msgstr "打开选中项目(使用外部程序)(&O)"
 
 #: part/part.cpp:372
 #, kde-format
@@ -1685,7 +1685,7 @@
 #, kde-format
 msgctxt "@action"
 msgid "Remove from Archive"
-msgstr "从压缩文件中移除"
+msgstr "移除选中项目"
 
 #: part/part.cpp:422
 #, kde-format
diff -Nru ark-25.04.0/snapcraft.yaml ark-25.04.3/snapcraft.yaml
--- ark-25.04.0/snapcraft.yaml	2025-04-07 23:07:48.000000000 +0200
+++ ark-25.04.3/snapcraft.yaml	2025-07-01 11:40:18.000000000 +0200
@@ -20,6 +20,12 @@
       - udisks2
       - raw-usb
       - mount-observe
+      - audio-playback
+    environment:
+      ALSA_CONFIG_PATH: "$SNAP/kf6/etc/asound.conf"
+layout:
+  /usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/alsa-lib:
+    bind: $SNAP/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/alsa-lib
 slots:
   session-dbus-interface:
     interface: dbus
@@ -37,6 +43,7 @@
       - libzip-dev
       - pkg-config
       - zlib1g-dev
+      - libpulse0
     stage-packages:
       - bzip2
       - p7zip-full
@@ -47,26 +54,18 @@
       - libarchive13
       - libzip4
       - zlib1g
+      - libpulse0
+      - libasound2
+      - libasound2-plugins
+      - libasound2-data
     source: .
     source-type: local
     cmake-parameters:
       - -DCMAKE_INSTALL_PREFIX=/usr
       - -DCMAKE_BUILD_TYPE=Release
       - -DQT_MAJOR_VERSION=6
-      - -DBUILD_WITH_QT6=ON
       - -DBUILD_TESTING=OFF
-      - -DCMAKE_INSTALL_SYSCONFDIR=/etc
-      - -DCMAKE_INSTALL_LOCALSTATEDIR=/var
-      - -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON
-      - -DCMAKE_FIND_USE_PACKAGE_REGISTRY=OFF
-      - -DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON
-      - -DCMAKE_INSTALL_RUNSTATEDIR=/run
-      - -DCMAKE_SKIP_INSTALL_ALL_DEPENDENCY=ON
-      - -DCMAKE_VERBOSE_MAKEFILE=ON
-      - -DCMAKE_INSTALL_LIBDIR=lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR
-      - --log-level=STATUS
-      - -DCMAKE_LIBRARY_PATH=lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR
-    build-environment: &build-environment
+    build-environment:
       - LD_LIBRARY_PATH: "/snap/mesa-2404/current/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR:$CRAFT_STAGE/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR:/snap/kde-qt6-core24-sdk/current/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libproxy:$LD_LIBRARY_PATH"
     prime:
       - -usr/lib/*/cmake/*
diff -ur '--exclude=po' ark-25.04.0/app/compressfileitemaction.cpp ark-25.04.3/app/compressfileitemaction.cpp
--- ark-25.04.0/app/compressfileitemaction.cpp	2025-04-07 23:07:48.000000000 +0200
+++ ark-25.04.3/app/compressfileitemaction.cpp	2025-07-01 11:40:18.000000000 +0200
@@ -76,7 +76,7 @@
     if (compressMenuAction->isEnabled()) {
         const KFileItemList items = fileItemInfos.items();
         const KFileItem &first = items.first();
-        auto *job = KIO::stat(first.url().adjusted(QUrl::RemoveFilename | QUrl::StripTrailingSlash));
+        auto *job = KIO::stat(first.url().adjusted(QUrl::RemoveFilename | QUrl::StripTrailingSlash), KIO::HideProgressInfo);
         connect(job, &KJob::result, compressMenu, [actionsToBeDisabledInReadOnlyDir, job]() {
             if (!job->error() && !KFileItem(job->statResult(), job->url()).isWritable()) {
                 for (auto action : actionsToBeDisabledInReadOnlyDir) {
diff -ur '--exclude=po' ark-25.04.0/app/org.kde.ark.appdata.xml ark-25.04.3/app/org.kde.ark.appdata.xml
--- ark-25.04.0/app/org.kde.ark.appdata.xml	2025-04-07 23:07:48.000000000 +0200
+++ ark-25.04.3/app/org.kde.ark.appdata.xml	2025-07-01 11:40:18.000000000 +0200
@@ -418,6 +418,9 @@
     <binary>ark</binary>
   </provides>
   <releases>
+    <release version="25.04.3" date="2025-07-03"/>
+    <release version="25.04.2" date="2025-06-05"/>
+    <release version="25.04.1" date="2025-05-08"/>
     <release version="25.04.0" date="2025-04-17"/>
     <release version="24.12.3" date="2025-03-06"/>
     <release version="24.12.2" date="2025-02-06"/>
diff -ur '--exclude=po' ark-25.04.0/CMakeLists.txt ark-25.04.3/CMakeLists.txt
--- ark-25.04.0/CMakeLists.txt	2025-04-07 23:07:48.000000000 +0200
+++ ark-25.04.3/CMakeLists.txt	2025-07-01 11:40:18.000000000 +0200
@@ -3,7 +3,7 @@
 # KDE Application Version, managed by release script
 set (RELEASE_SERVICE_VERSION_MAJOR "25")
 set (RELEASE_SERVICE_VERSION_MINOR "04")
-set (RELEASE_SERVICE_VERSION_MICRO "0")
+set (RELEASE_SERVICE_VERSION_MICRO "3")
 set (RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
 project(ark VERSION ${RELEASE_SERVICE_VERSION})
 
diff -ur '--exclude=po' ark-25.04.0/debian/changelog ark-25.04.3/debian/changelog
--- ark-25.04.0/debian/changelog	2025-04-17 18:40:17.000000000 +0200
+++ ark-25.04.3/debian/changelog	2025-07-18 15:34:31.000000000 +0200
@@ -1,3 +1,14 @@
+ark (4:25.04.3-1) unstable; urgency=medium
+
+  [ Aurélien COUDERC ]
+  * New upstream release (25.04.3).
+    - CompressFileItemAction: stat without progress info.
+  * Backport upstream commits:
+    - Fix file sorting order not matching Dolphin’s. [55b6d6e6] (kde#387969)
+    - Fix corner case of single-threaded CPU getting 0 thread. [1435ccd4]
+
+ -- Aurélien COUDERC <coucouf@debian.org>  Fri, 18 Jul 2025 15:34:31 +0200
+
 ark (4:25.04.0-1) unstable; urgency=medium
 
   [ Aurélien COUDERC ]
Seulement dans ark-25.04.3/debian: patches
diff -ur '--exclude=po' ark-25.04.0/part/archivesortfiltermodel.cpp ark-25.04.3/part/archivesortfiltermodel.cpp
--- ark-25.04.0/part/archivesortfiltermodel.cpp	2025-04-07 23:07:48.000000000 +0200
+++ ark-25.04.3/part/archivesortfiltermodel.cpp	2025-07-20 18:49:17.000000000 +0200
@@ -10,11 +10,48 @@
 
 using namespace Kerfuffle;
 
+namespace
+{
+/**
+ * Performs a natural string comparison.
+ * This function compares strings in a way that is similar to natural human sorting order.
+ * It is adapted from the Dolphin KFileItemModel::stringCompare implementation.
+ *
+ * @note Consider refactoring this logic to a framework-level utility
+ * for improved maintainability and reusability across multiple projects.
+ *
+ * @return Integer less than, equal to, or greater than zero if the first argument is
+ * found, respectively, to be less than, to match, or be greater than the second.
+ */
+int naturalStringCompare(const QString &a, const QString &b, const QCollator &collator)
+{
+    // Split extension, taking into account it can be empty
+    constexpr QString::SectionFlags flags = QString::SectionSkipEmpty | QString::SectionIncludeLeadingSep;
+
+    // Sort by baseName first
+    const QString aBaseName = a.section(QLatin1Char('.'), 0, 0, flags);
+    const QString bBaseName = b.section(QLatin1Char('.'), 0, 0, flags);
+
+    const int res = collator.compare(aBaseName, bBaseName);
+    if (res != 0 || (aBaseName.length() == a.length() && bBaseName.length() == b.length())) {
+        return res;
+    }
+
+    // sliced() has undefined behavior when pos < 0 or pos > size().
+    Q_ASSERT(aBaseName.length() <= a.length() && aBaseName.length() >= 0);
+    Q_ASSERT(bBaseName.length() <= b.length() && bBaseName.length() >= 0);
+
+    // baseNames were equal, sort by extension
+    return collator.compare(a.sliced(aBaseName.length()), b.sliced(bBaseName.length()));
+}
+}
+
 ArchiveSortFilterModel::ArchiveSortFilterModel(QObject *parent)
     : QSortFilterProxyModel(parent)
 {
     // always enable recursive fitlering
     setRecursiveFilteringEnabled(true);
+    m_collator.setNumericMode(true);
 }
 
 ArchiveSortFilterModel::~ArchiveSortFilterModel()
@@ -36,6 +73,11 @@
         return false;
     } else {
         switch (col) {
+        case DisplayName: {
+            const auto leftFullName = left->property(property.constData()).toString();
+            const auto rightFullName = right->property(property.constData()).toString();
+            return naturalStringCompare(leftFullName, rightFullName, m_collator) < 0;
+        }
         case Size:
         case CompressedSize:
             if (left->property(property.constData()).toULongLong() < right->property(property.constData()).toULongLong()) {
diff -ur '--exclude=po' ark-25.04.0/part/archivesortfiltermodel.h ark-25.04.3/part/archivesortfiltermodel.h
--- ark-25.04.0/part/archivesortfiltermodel.h	2025-04-07 23:07:48.000000000 +0200
+++ ark-25.04.3/part/archivesortfiltermodel.h	2025-07-20 18:49:17.000000000 +0200
@@ -6,6 +6,7 @@
 #ifndef ARCHIVESORTFILTERMODEL_H
 #define ARCHIVESORTFILTERMODEL_H
 
+#include <QCollator>
 #include <QSortFilterProxyModel>
 
 class ArchiveSortFilterModel : public QSortFilterProxyModel
@@ -17,6 +18,9 @@
     ~ArchiveSortFilterModel() override;
 
     bool lessThan(const QModelIndex &leftIndex, const QModelIndex &rightIndex) const override;
+
+private:
+    QCollator m_collator;
 };
 
 #endif // ARCHIVESORTFILTERMODEL_H
diff -ur '--exclude=po' ark-25.04.0/.pc/applied-patches ark-25.04.3/.pc/applied-patches
--- ark-25.04.0/.pc/applied-patches	2025-07-20 18:49:17.015831681 +0200
+++ ark-25.04.3/.pc/applied-patches	2025-07-20 18:49:17.359828335 +0200
@@ -0,0 +1,2 @@
+upstream_55b6d6e6_Implement-Dolphin-style-natural-string-sorting.patch
+upstream_1435ccd4_Fix-corner-case-of-single-threaded-CPU-when-calculating-number-of-threads.patch
Seulement dans ark-25.04.3/.pc: upstream_1435ccd4_Fix-corner-case-of-single-threaded-CPU-when-calculating-number-of-threads.patch
Seulement dans ark-25.04.3/.pc: upstream_55b6d6e6_Implement-Dolphin-style-natural-string-sorting.patch
diff -ur '--exclude=po' ark-25.04.0/plugins/cliarjplugin/kerfuffle_cliarj.json.cmake ark-25.04.3/plugins/cliarjplugin/kerfuffle_cliarj.json.cmake
--- ark-25.04.0/plugins/cliarjplugin/kerfuffle_cliarj.json.cmake	2025-04-07 23:07:48.000000000 +0200
+++ ark-25.04.3/plugins/cliarjplugin/kerfuffle_cliarj.json.cmake	2025-07-01 11:40:18.000000000 +0200
@@ -39,6 +39,7 @@
         "Description[ro]": "Suport deplin pentru formatul de arhivă ARJ",
         "Description[ru]": "Полная поддержка архивов ARJ",
         "Description[sa]": "एआरजे संग्रहस्वरूपेषु पूर्णसमर्थनम्",
+        "Description[sk]": "Úplná podpora archívnych formátov ARJ",
         "Description[sl]": "Polna podpora za arhive vrste ARJ",
         "Description[sv]": "Fullt stöd för ARJ arkivformat",
         "Description[tr]": "ARJ arşiv biçimi için tam destek",
diff -ur '--exclude=po' ark-25.04.0/plugins/libarchive/readwritelibarchiveplugin.cpp ark-25.04.3/plugins/libarchive/readwritelibarchiveplugin.cpp
--- ark-25.04.0/plugins/libarchive/readwritelibarchiveplugin.cpp	2025-04-07 23:07:48.000000000 +0200
+++ ark-25.04.3/plugins/libarchive/readwritelibarchiveplugin.cpp	2025-07-20 18:49:17.000000000 +0200
@@ -302,7 +302,7 @@
 {
     int ret;
     bool requiresExecutable = false;
-    const auto threads = std::to_string(static_cast<unsigned>(std::thread::hardware_concurrency() * 0.8));
+    const auto threads = std::to_string(std::max(1u, static_cast<unsigned>(std::thread::hardware_concurrency() * 0.8)));
     const bool is7zFile = filename().right(2).toUpper() == QLatin1String("7Z");
 
     if (is7zFile) {
diff -ur '--exclude=po' ark-25.04.0/snapcraft.yaml ark-25.04.3/snapcraft.yaml
--- ark-25.04.0/snapcraft.yaml	2025-04-07 23:07:48.000000000 +0200
+++ ark-25.04.3/snapcraft.yaml	2025-07-01 11:40:18.000000000 +0200
@@ -20,6 +20,12 @@
       - udisks2
       - raw-usb
       - mount-observe
+      - audio-playback
+    environment:
+      ALSA_CONFIG_PATH: "$SNAP/kf6/etc/asound.conf"
+layout:
+  /usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/alsa-lib:
+    bind: $SNAP/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/alsa-lib
 slots:
   session-dbus-interface:
     interface: dbus
@@ -37,6 +43,7 @@
       - libzip-dev
       - pkg-config
       - zlib1g-dev
+      - libpulse0
     stage-packages:
       - bzip2
       - p7zip-full
@@ -47,26 +54,18 @@
       - libarchive13
       - libzip4
       - zlib1g
+      - libpulse0
+      - libasound2
+      - libasound2-plugins
+      - libasound2-data
     source: .
     source-type: local
     cmake-parameters:
       - -DCMAKE_INSTALL_PREFIX=/usr
       - -DCMAKE_BUILD_TYPE=Release
       - -DQT_MAJOR_VERSION=6
-      - -DBUILD_WITH_QT6=ON
       - -DBUILD_TESTING=OFF
-      - -DCMAKE_INSTALL_SYSCONFDIR=/etc
-      - -DCMAKE_INSTALL_LOCALSTATEDIR=/var
-      - -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON
-      - -DCMAKE_FIND_USE_PACKAGE_REGISTRY=OFF
-      - -DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON
-      - -DCMAKE_INSTALL_RUNSTATEDIR=/run
-      - -DCMAKE_SKIP_INSTALL_ALL_DEPENDENCY=ON
-      - -DCMAKE_VERBOSE_MAKEFILE=ON
-      - -DCMAKE_INSTALL_LIBDIR=lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR
-      - --log-level=STATUS
-      - -DCMAKE_LIBRARY_PATH=lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR
-    build-environment: &build-environment
+    build-environment:
       - LD_LIBRARY_PATH: "/snap/mesa-2404/current/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR:$CRAFT_STAGE/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR:/snap/kde-qt6-core24-sdk/current/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libproxy:$LD_LIBRARY_PATH"
     prime:
       - -usr/lib/*/cmake/*

--- End Message ---
--- Begin Message ---
Unblocked ark.

--- End Message ---

Reply to: