Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package kf6-purpose for openSUSE:Factory checked in at 2026-07-15 16:32:26 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kf6-purpose (Old) and /work/SRC/openSUSE:Factory/.kf6-purpose.new.1991 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kf6-purpose" Wed Jul 15 16:32:26 2026 rev:29 rq:1365144 version:6.28.0 Changes: -------- --- /work/SRC/openSUSE:Factory/kf6-purpose/kf6-purpose.changes 2026-06-16 13:57:53.464429956 +0200 +++ /work/SRC/openSUSE:Factory/.kf6-purpose.new.1991/kf6-purpose.changes 2026-07-15 16:43:00.425345147 +0200 @@ -1,0 +2,12 @@ +Fri Jul 10 12:16:10 UTC 2026 - Christophe Marin <[email protected]> + +- Update to 6.28.0 + * New feature release + * For more details please see: + * https://kde.org/announcements/frameworks/6/6.28.0 +- Changes since 6.27.0: + * Update dependency version to 6.28.0 + * Fix constraints not being evaluated correctly (kde#521138) + * Update version to 6.28.0 + +------------------------------------------------------------------- Old: ---- purpose-6.27.0.tar.xz purpose-6.27.0.tar.xz.sig New: ---- purpose-6.28.0.tar.xz purpose-6.28.0.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kf6-purpose.spec ++++++ --- /var/tmp/diff_new_pack.wZ0378/_old 2026-07-15 16:43:04.169472450 +0200 +++ /var/tmp/diff_new_pack.wZ0378/_new 2026-07-15 16:43:04.173472587 +0200 @@ -22,11 +22,11 @@ %define qt6_version 6.9.0 %define rname purpose -# Full KF6 version (e.g. 6.27.0) +# Full KF6 version (e.g. 6.28.0) %{!?_kf6_version: %global _kf6_version %{version}} %bcond_without released Name: kf6-purpose -Version: 6.27.0 +Version: 6.28.0 Release: 0 Summary: Framework to integrate services and actions in applications License: LGPL-2.1-or-later ++++++ purpose-6.27.0.tar.xz -> purpose-6.28.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/CMakeLists.txt new/purpose-6.28.0/CMakeLists.txt --- old/purpose-6.27.0/CMakeLists.txt 2026-06-05 17:52:07.000000000 +0200 +++ new/purpose-6.28.0/CMakeLists.txt 2026-07-03 13:04:43.000000000 +0200 @@ -2,7 +2,7 @@ project(Purpose) -find_package(ECM 6.27.0 REQUIRED NO_MODULE) +find_package(ECM 6.28.0 REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) @@ -40,8 +40,8 @@ set(HAVE_DBUS ON) endif() -set(KF_VERSION "6.27.0") # handled by release scripts -set(KF_DEP_VERSION "6.27.0") # handled by release scripts +set(KF_VERSION "6.28.0") # handled by release scripts +set(KF_DEP_VERSION "6.28.0") # handled by release scripts find_package(KF6 ${KF_DEP_VERSION} REQUIRED COMPONENTS CoreAddons I18n Config Kirigami Notifications KIO Service) @@ -63,7 +63,7 @@ ecm_set_disabled_deprecation_versions( QT 6.11.0 - KF 6.26.0 + KF 6.27.0 ) add_subdirectory( src ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/autotests/CMakeLists.txt new/purpose-6.28.0/autotests/CMakeLists.txt --- old/purpose-6.27.0/autotests/CMakeLists.txt 2026-06-05 17:52:07.000000000 +0200 +++ new/purpose-6.28.0/autotests/CMakeLists.txt 2026-07-03 13:04:43.000000000 +0200 @@ -1,6 +1,26 @@ -ecm_add_test(alternativesmodeltest.cpp +if (HAVE_DBUS) + set(MAYBE_DBUS "Qt6::DBus") +endif () + +ecm_qt_declare_logging_category(external_process_debug_SRCS + HEADER purpose_external_process_debug.h + IDENTIFIER PURPOSE_EXTERNAL_PROCESS_LOG + CATEGORY_NAME kf.purpose.externalprocess + OLD_CATEGORY_NAMES kf5.purpose.externalprocess + DESCRIPTION "purpose external process" + EXPORT PURPOSE +) + +ecm_add_test(alternativesmodeltest.cpp ../src/constrainthelpers.cpp ${external_process_debug_SRCS} TEST_NAME alternativesmodeltest - LINK_LIBRARIES Qt6::Test KF6::Purpose KF6::ConfigCore) + LINK_LIBRARIES Qt6::Test ${MAYBE_DBUS} KF6::Purpose KF6::ConfigCore) + +if (HAVE_DBUS) + target_compile_definitions(alternativesmodeltest PRIVATE -DHAVE_QTDBUS=1) +else() + target_compile_definitions(alternativesmodeltest PRIVATE -DHAVE_QTDBUS=0) +endif() + ecm_add_test(menutest.cpp TEST_NAME menutest LINK_LIBRARIES Qt6::Test KF6::PurposeWidgets) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/autotests/alternativesmodeltest.cpp new/purpose-6.28.0/autotests/alternativesmodeltest.cpp --- old/purpose-6.27.0/autotests/alternativesmodeltest.cpp 2026-06-05 17:52:07.000000000 +0200 +++ new/purpose-6.28.0/autotests/alternativesmodeltest.cpp 2026-07-03 13:04:43.000000000 +0200 @@ -15,10 +15,13 @@ #include <KSharedConfig> #include "alternativesmodeltest.h" +#include "constrainthelpers.h" #include <purpose/alternativesmodel.h> #include <purpose/configuration.h> #include <purpose/job.h> +using namespace Qt::StringLiterals; + QTEST_GUILESS_MAIN(AlternativesModelTest) static int saveAsRow(Purpose::AlternativesModel *model) @@ -209,4 +212,15 @@ QCOMPARE(modelResetSpy.count(), 1); } +void AlternativesModelTest::constraintsTest() +{ +#ifdef Q_OS_UNIX + QVERIFY(Purpose::constraintMatches({}, QJsonValue(u"exec:ls"_s), {})); +#endif + QVERIFY(!Purpose::constraintMatches({}, QJsonValue(u"exec:binarythatdefinitelydoesnotexist"_s), {})); + QVERIFY(!Purpose::constraintMatches({}, QJsonValue(u"mime:text/foo"_s), {})); + QVERIFY(Purpose::constraintMatches({}, QJsonValue(u"mimeType:text/html"_s), {{u"mimeType"_s, u"text/html"_s}})); + QVERIFY(!Purpose::constraintMatches({}, QJsonValue(u"mimeType:image/png"_s), {{u"mimeType"_s, u"text/html"_s}})); +} + #include "moc_alternativesmodeltest.cpp" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/autotests/alternativesmodeltest.h new/purpose-6.28.0/autotests/alternativesmodeltest.h --- old/purpose-6.27.0/autotests/alternativesmodeltest.h 2026-06-05 17:52:07.000000000 +0200 +++ new/purpose-6.28.0/autotests/alternativesmodeltest.h 2026-07-03 13:04:43.000000000 +0200 @@ -20,6 +20,7 @@ void disablePluginTest(); void blacklistTest(); void bogusInputDataClearsModel(); + void constraintsTest(); private: QTemporaryDir m_tempDir; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/po/bg/libpurpose6_widgets.po new/purpose-6.28.0/po/bg/libpurpose6_widgets.po --- old/purpose-6.27.0/po/bg/libpurpose6_widgets.po 2026-06-05 17:52:07.000000000 +0200 +++ new/purpose-6.28.0/po/bg/libpurpose6_widgets.po 2026-07-03 13:04:43.000000000 +0200 @@ -22,6 +22,3 @@ #, kde-format msgid "Send File" msgstr "Изпращане на файл" - -#~ msgid "Configuration cancelled" -#~ msgstr "Конфигурацията е отменена" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/po/bg/purpose6_kdeconnectsms.po new/purpose-6.28.0/po/bg/purpose6_kdeconnectsms.po --- old/purpose-6.27.0/po/bg/purpose6_kdeconnectsms.po 2026-06-05 17:52:07.000000000 +0200 +++ new/purpose-6.28.0/po/bg/purpose6_kdeconnectsms.po 2026-07-03 13:04:43.000000000 +0200 @@ -21,6 +21,3 @@ #, kde-format msgid "%1 – %2" msgstr "%1 – %2" - -#~ msgid "%1 - %2" -#~ msgstr "%1 - %2" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/po/bg/purpose6_nextcloud.po new/purpose-6.28.0/po/bg/purpose6_nextcloud.po --- old/purpose-6.27.0/po/bg/purpose6_nextcloud.po 2026-06-05 17:52:07.000000000 +0200 +++ new/purpose-6.28.0/po/bg/purpose6_nextcloud.po 2026-07-03 13:04:43.000000000 +0200 @@ -36,6 +36,3 @@ #, kde-format msgid "Upload to folder:" msgstr "Качване в папка:" - -#~ msgid "Configure Accounts" -#~ msgstr "Конфигуриране на профил" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/po/ca@valencia/purpose6_phabricator.po new/purpose-6.28.0/po/ca@valencia/purpose6_phabricator.po --- old/purpose-6.27.0/po/ca@valencia/purpose6_phabricator.po 2026-06-05 17:52:07.000000000 +0200 +++ new/purpose-6.28.0/po/ca@valencia/purpose6_phabricator.po 2026-07-03 13:04:43.000000000 +0200 @@ -104,7 +104,7 @@ "select one from the list below." msgstr "" "marqueu açò per a actualitzar una revisió existent,\n" -"seleccioneu-ne una des en la llista a continuació." +"seleccioneu-ne una des de la llista a continuació." #: phabricatorplugin_config.qml:107 #, kde-format diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/po/ca@valencia/purpose6_saveas.po new/purpose-6.28.0/po/ca@valencia/purpose6_saveas.po --- old/purpose-6.27.0/po/ca@valencia/purpose6_saveas.po 2026-06-05 17:52:07.000000000 +0200 +++ new/purpose-6.28.0/po/ca@valencia/purpose6_saveas.po 2026-07-03 13:04:43.000000000 +0200 @@ -35,4 +35,4 @@ #: saveasplugin_config.qml:32 #, kde-format msgid "Select a directory where to save your pictures and videos" -msgstr "Trieu un directori on guardar les fotografies i vídeos" +msgstr "Trieu una carpeta on guardar les fotografies i vídeos" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/po/hu/purpose6_kdeconnectsms.po new/purpose-6.28.0/po/hu/purpose6_kdeconnectsms.po --- old/purpose-6.27.0/po/hu/purpose6_kdeconnectsms.po 2026-06-05 17:52:07.000000000 +0200 +++ new/purpose-6.28.0/po/hu/purpose6_kdeconnectsms.po 2026-07-03 13:04:43.000000000 +0200 @@ -1,26 +1,27 @@ -# Copyright (C) YEAR This file is copyright: +# Copyright (C) 2026 This file is copyright: # This file is distributed under the same license as the purpose package. # # Kristóf Kiszel <[email protected]>, 2019. +# SPDX-FileCopyrightText: 2026 Kristof Kiszel <[email protected]> msgid "" msgstr "" "Project-Id-Version: purpose\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2026-01-28 00:41+0000\n" -"PO-Revision-Date: 2019-11-12 19:41+0100\n" -"Last-Translator: Kristóf Kiszel <[email protected]>\n" +"PO-Revision-Date: 2026-06-28 22:11+0200\n" +"Last-Translator: Kristof Kiszel <[email protected]>\n" "Language-Team: Hungarian <[email protected]>\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Lokalize 20.03.70\n" +"X-Generator: Lokalize 26.04.2\n" #: kdeconnectsmsplugin.cpp:39 #, kde-format msgid "%1 – %2" -msgstr "" +msgstr "%1 – %2" #~ msgid "%1 - %2" #~ msgstr "%1 - %2" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/po/hu/purpose6_nextcloud.po new/purpose-6.28.0/po/hu/purpose6_nextcloud.po --- old/purpose-6.27.0/po/hu/purpose6_nextcloud.po 2026-06-05 17:52:07.000000000 +0200 +++ new/purpose-6.28.0/po/hu/purpose6_nextcloud.po 2026-07-03 13:04:43.000000000 +0200 @@ -1,21 +1,21 @@ -# Copyright (C) YEAR This file is copyright: +# Copyright (C) 2026 This file is copyright: # This file is distributed under the same license as the purpose package. # -# Kristof Kiszel <[email protected]>, 2018, 2021. +# SPDX-FileCopyrightText: 2018, 2021, 2026 Kristof Kiszel <[email protected]> msgid "" msgstr "" "Project-Id-Version: purpose\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2026-04-22 00:41+0000\n" -"PO-Revision-Date: 2021-01-13 20:23+0100\n" -"Last-Translator: Kristóf Kiszel <[email protected]>\n" +"PO-Revision-Date: 2026-06-28 22:11+0200\n" +"Last-Translator: Kristof Kiszel <[email protected]>\n" "Language-Team: Hungarian <[email protected]>\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Lokalize 21.03.70\n" +"X-Generator: Lokalize 26.04.2\n" #: nextcloudplugin_config.qml:24 #, kde-format @@ -28,10 +28,9 @@ msgstr "Nincs beállítva fiók" #: nextcloudplugin_config.qml:80 -#, fuzzy, kde-format -#| msgid "Account:" +#, kde-format msgid "Add New Account" -msgstr "Fiók:" +msgstr "Új fiók hozzáadása" #: nextcloudplugin_config.qml:87 #, kde-format diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/po/nb/purpose6_reviewboard.po new/purpose-6.28.0/po/nb/purpose6_reviewboard.po --- old/purpose-6.27.0/po/nb/purpose6_reviewboard.po 2026-06-05 17:52:07.000000000 +0200 +++ new/purpose-6.28.0/po/nb/purpose6_reviewboard.po 2026-07-03 13:04:43.000000000 +0200 @@ -8,7 +8,7 @@ "POT-Creation-Date: 2025-11-17 11:49+0000\n" "PO-Revision-Date: 2011-12-08 17:59+0100\n" "Last-Translator: Bjørn Steensrud <[email protected]>\n" -"Language-Team: Norwegian Bokmål <[email protected]>\n" +"Language-Team: Norwegian Bokmål <[email protected]>\n" "Language: nb\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/po/nn/libpurpose6_quick.po new/purpose-6.28.0/po/nn/libpurpose6_quick.po --- old/purpose-6.27.0/po/nn/libpurpose6_quick.po 2026-06-05 17:52:07.000000000 +0200 +++ new/purpose-6.28.0/po/nn/libpurpose6_quick.po 2026-07-03 13:04:43.000000000 +0200 @@ -8,7 +8,7 @@ "POT-Creation-Date: 2026-05-08 00:40+0000\n" "PO-Revision-Date: 2023-03-04 17:11+0100\n" "Last-Translator: Karl Ove Hufthammer <[email protected]>\n" -"Language-Team: Norwegian Nynorsk <[email protected]>\n" +"Language-Team: Norwegian Nynorsk <[email protected]>\n" "Language: nn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/po/nn/libpurpose6_widgets.po new/purpose-6.28.0/po/nn/libpurpose6_widgets.po --- old/purpose-6.27.0/po/nn/libpurpose6_widgets.po 2026-06-05 17:52:07.000000000 +0200 +++ new/purpose-6.28.0/po/nn/libpurpose6_widgets.po 2026-07-03 13:04:43.000000000 +0200 @@ -8,7 +8,7 @@ "POT-Creation-Date: 2026-05-08 00:40+0000\n" "PO-Revision-Date: 2023-03-04 17:11+0100\n" "Last-Translator: Karl Ove Hufthammer <[email protected]>\n" -"Language-Team: Norwegian Nynorsk <[email protected]>\n" +"Language-Team: Norwegian Nynorsk <[email protected]>\n" "Language: nn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/po/nn/purpose6_barcode.po new/purpose-6.28.0/po/nn/purpose6_barcode.po --- old/purpose-6.27.0/po/nn/purpose6_barcode.po 2026-06-05 17:52:07.000000000 +0200 +++ new/purpose-6.28.0/po/nn/purpose6_barcode.po 2026-07-03 13:04:43.000000000 +0200 @@ -7,7 +7,7 @@ "POT-Creation-Date: 2025-11-17 11:49+0000\n" "PO-Revision-Date: 2024-08-26 22:08+0200\n" "Last-Translator: Karl Ove Hufthammer <[email protected]>\n" -"Language-Team: Norwegian Nynorsk <[email protected]>\n" +"Language-Team: Norwegian Nynorsk <[email protected]>\n" "Language: nn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/po/nn/purpose6_bluetooth.po new/purpose-6.28.0/po/nn/purpose6_bluetooth.po --- old/purpose-6.27.0/po/nn/purpose6_bluetooth.po 2026-06-05 17:52:07.000000000 +0200 +++ new/purpose-6.28.0/po/nn/purpose6_bluetooth.po 2026-07-03 13:04:43.000000000 +0200 @@ -8,7 +8,7 @@ "POT-Creation-Date: 2025-11-17 11:49+0000\n" "PO-Revision-Date: 2019-07-19 10:31+0200\n" "Last-Translator: Karl Ove Hufthammer <[email protected]>\n" -"Language-Team: Norwegian Nynorsk <[email protected]>\n" +"Language-Team: Norwegian Nynorsk <[email protected]>\n" "Language: nn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/po/nn/purpose6_fileitemaction.po new/purpose-6.28.0/po/nn/purpose6_fileitemaction.po --- old/purpose-6.27.0/po/nn/purpose6_fileitemaction.po 2026-06-05 17:52:07.000000000 +0200 +++ new/purpose-6.28.0/po/nn/purpose6_fileitemaction.po 2026-07-03 13:04:43.000000000 +0200 @@ -8,7 +8,7 @@ "POT-Creation-Date: 2025-11-17 11:49+0000\n" "PO-Revision-Date: 2019-03-09 23:08+0100\n" "Last-Translator: Karl Ove Hufthammer <[email protected]>\n" -"Language-Team: Norwegian Nynorsk <[email protected]>\n" +"Language-Team: Norwegian Nynorsk <[email protected]>\n" "Language: nn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/po/nn/purpose6_imgur.po new/purpose-6.28.0/po/nn/purpose6_imgur.po --- old/purpose-6.27.0/po/nn/purpose6_imgur.po 2026-06-05 17:52:07.000000000 +0200 +++ new/purpose-6.28.0/po/nn/purpose6_imgur.po 2026-07-03 13:04:43.000000000 +0200 @@ -7,7 +7,7 @@ "POT-Creation-Date: 2025-11-17 11:49+0000\n" "PO-Revision-Date: 2026-04-18 16:09+0200\n" "Last-Translator: Karl Ove Hufthammer <[email protected]>\n" -"Language-Team: Norwegian Nynorsk <[email protected]>\n" +"Language-Team: Norwegian Nynorsk <[email protected]>\n" "Language: nn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/po/nn/purpose6_kdeconnect.po new/purpose-6.28.0/po/nn/purpose6_kdeconnect.po --- old/purpose-6.27.0/po/nn/purpose6_kdeconnect.po 2026-06-05 17:52:07.000000000 +0200 +++ new/purpose-6.28.0/po/nn/purpose6_kdeconnect.po 2026-07-03 13:04:43.000000000 +0200 @@ -8,7 +8,7 @@ "POT-Creation-Date: 2025-11-17 11:49+0000\n" "PO-Revision-Date: 2018-05-28 22:24+0100\n" "Last-Translator: Karl Ove Hufthammer <[email protected]>\n" -"Language-Team: Norwegian Nynorsk <[email protected]>\n" +"Language-Team: Norwegian Nynorsk <[email protected]>\n" "Language: nn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/po/nn/purpose6_kdeconnectsms.po new/purpose-6.28.0/po/nn/purpose6_kdeconnectsms.po --- old/purpose-6.27.0/po/nn/purpose6_kdeconnectsms.po 2026-06-05 17:52:07.000000000 +0200 +++ new/purpose-6.28.0/po/nn/purpose6_kdeconnectsms.po 2026-07-03 13:04:43.000000000 +0200 @@ -7,7 +7,7 @@ "POT-Creation-Date: 2026-01-28 00:41+0000\n" "PO-Revision-Date: 2026-04-18 16:09+0200\n" "Last-Translator: Karl Ove Hufthammer <[email protected]>\n" -"Language-Team: Norwegian Nynorsk <[email protected]>\n" +"Language-Team: Norwegian Nynorsk <[email protected]>\n" "Language: nn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/po/nn/purpose6_nextcloud.po new/purpose-6.28.0/po/nn/purpose6_nextcloud.po --- old/purpose-6.27.0/po/nn/purpose6_nextcloud.po 2026-06-05 17:52:07.000000000 +0200 +++ new/purpose-6.28.0/po/nn/purpose6_nextcloud.po 2026-07-03 13:04:43.000000000 +0200 @@ -7,7 +7,7 @@ "POT-Creation-Date: 2026-04-22 00:41+0000\n" "PO-Revision-Date: 2026-04-26 13:14+0200\n" "Last-Translator: Karl Ove Hufthammer <[email protected]>\n" -"Language-Team: Norwegian Nynorsk <[email protected]>\n" +"Language-Team: Norwegian Nynorsk <[email protected]>\n" "Language: nn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/po/nn/purpose6_pastebin.po new/purpose-6.28.0/po/nn/purpose6_pastebin.po --- old/purpose-6.27.0/po/nn/purpose6_pastebin.po 2026-06-05 17:52:07.000000000 +0200 +++ new/purpose-6.28.0/po/nn/purpose6_pastebin.po 2026-07-03 13:04:43.000000000 +0200 @@ -8,7 +8,7 @@ "POT-Creation-Date: 2025-11-17 11:49+0000\n" "PO-Revision-Date: 2018-02-12 20:37+0100\n" "Last-Translator: Karl Ove Hufthammer <[email protected]>\n" -"Language-Team: Norwegian Nynorsk <[email protected]>\n" +"Language-Team: Norwegian Nynorsk <[email protected]>\n" "Language: nn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/po/nn/purpose6_phabricator.po new/purpose-6.28.0/po/nn/purpose6_phabricator.po --- old/purpose-6.27.0/po/nn/purpose6_phabricator.po 2026-06-05 17:52:07.000000000 +0200 +++ new/purpose-6.28.0/po/nn/purpose6_phabricator.po 2026-07-03 13:04:43.000000000 +0200 @@ -8,7 +8,7 @@ "POT-Creation-Date: 2025-11-17 11:49+0000\n" "PO-Revision-Date: 2018-05-30 20:30+0100\n" "Last-Translator: Karl Ove Hufthammer <[email protected]>\n" -"Language-Team: Norwegian Nynorsk <[email protected]>\n" +"Language-Team: Norwegian Nynorsk <[email protected]>\n" "Language: nn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/po/nn/purpose6_reviewboard.po new/purpose-6.28.0/po/nn/purpose6_reviewboard.po --- old/purpose-6.27.0/po/nn/purpose6_reviewboard.po 2026-06-05 17:52:07.000000000 +0200 +++ new/purpose-6.28.0/po/nn/purpose6_reviewboard.po 2026-07-03 13:04:43.000000000 +0200 @@ -8,7 +8,7 @@ "POT-Creation-Date: 2025-11-17 11:49+0000\n" "PO-Revision-Date: 2018-03-12 19:11+0100\n" "Last-Translator: Karl Ove Hufthammer <[email protected]>\n" -"Language-Team: Norwegian Nynorsk <[email protected]>\n" +"Language-Team: Norwegian Nynorsk <[email protected]>\n" "Language: nn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/po/nn/purpose6_saveas.po new/purpose-6.28.0/po/nn/purpose6_saveas.po --- old/purpose-6.27.0/po/nn/purpose6_saveas.po 2026-06-05 17:52:07.000000000 +0200 +++ new/purpose-6.28.0/po/nn/purpose6_saveas.po 2026-07-03 13:04:43.000000000 +0200 @@ -8,7 +8,7 @@ "POT-Creation-Date: 2025-11-17 11:49+0000\n" "PO-Revision-Date: 2018-05-28 22:23+0100\n" "Last-Translator: Karl Ove Hufthammer <[email protected]>\n" -"Language-Team: Norwegian Nynorsk <[email protected]>\n" +"Language-Team: Norwegian Nynorsk <[email protected]>\n" "Language: nn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/po/nn/purpose6_youtube.po new/purpose-6.28.0/po/nn/purpose6_youtube.po --- old/purpose-6.27.0/po/nn/purpose6_youtube.po 2026-06-05 17:52:07.000000000 +0200 +++ new/purpose-6.28.0/po/nn/purpose6_youtube.po 2026-07-03 13:04:43.000000000 +0200 @@ -8,7 +8,7 @@ "POT-Creation-Date: 2026-05-09 00:40+0000\n" "PO-Revision-Date: 2018-05-28 22:23+0100\n" "Last-Translator: Karl Ove Hufthammer <[email protected]>\n" -"Language-Team: Norwegian Nynorsk <[email protected]>\n" +"Language-Team: Norwegian Nynorsk <[email protected]>\n" "Language: nn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/po/ru/purpose6_nextcloud.po new/purpose-6.28.0/po/ru/purpose6_nextcloud.po --- old/purpose-6.27.0/po/ru/purpose6_nextcloud.po 2026-06-05 17:52:07.000000000 +0200 +++ new/purpose-6.28.0/po/ru/purpose6_nextcloud.po 2026-07-03 13:04:43.000000000 +0200 @@ -3,21 +3,22 @@ # # Alexander Potashev <[email protected]>, 2017. # Alexander Yavorsky <[email protected]>, 2018, 2021. +# SPDX-FileCopyrightText: 2026 Olesya Gerasimenko <[email protected]> msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2026-04-22 00:41+0000\n" -"PO-Revision-Date: 2021-01-17 12:23+0300\n" -"Last-Translator: Alexander Yavorsky <[email protected]>\n" -"Language-Team: Russian <[email protected]>\n" +"PO-Revision-Date: 2026-06-22 15:59+0300\n" +"Last-Translator: Olesya Gerasimenko <[email protected]>\n" +"Language-Team: Basealt Translation Team\n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Lokalize 20.12.1\n" +"X-Generator: Lokalize 23.08.5\n" #: nextcloudplugin_config.qml:24 #, kde-format @@ -30,10 +31,9 @@ msgstr "Отсутствуют настроенные учётные записи" #: nextcloudplugin_config.qml:80 -#, fuzzy, kde-format -#| msgid "Account:" +#, kde-format msgid "Add New Account" -msgstr "Учётная запись:" +msgstr "Добавить новую учётную запись" #: nextcloudplugin_config.qml:87 #, kde-format diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/src/CMakeLists.txt new/purpose-6.28.0/src/CMakeLists.txt --- old/purpose-6.27.0/src/CMakeLists.txt 2026-06-05 17:52:07.000000000 +0200 +++ new/purpose-6.28.0/src/CMakeLists.txt 2026-07-03 13:04:43.000000000 +0200 @@ -30,6 +30,7 @@ job.cpp alternativesmodel.cpp configuration.cpp + constrainthelpers.cpp helper.cpp externalprocess/processjob.cpp jobcontroller.cpp diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/src/alternativesmodel.cpp new/purpose-6.28.0/src/alternativesmodel.cpp --- old/purpose-6.27.0/src/alternativesmodel.cpp 2026-06-05 17:52:07.000000000 +0200 +++ new/purpose-6.28.0/src/alternativesmodel.cpp 2026-07-03 13:04:43.000000000 +0200 @@ -6,19 +6,10 @@ #include "alternativesmodel.h" -#if HAVE_QTDBUS -#include <QDBusConnection> -#include <QDBusConnectionInterface> -#endif - #include <QDebug> #include <QDirIterator> #include <QIcon> #include <QJsonArray> -#include <QMimeDatabase> -#include <QMimeType> -#include <QRegularExpression> -#include <QStandardPaths> #include <KConfigGroup> #include <KJsonUtils> @@ -26,77 +17,15 @@ #include <KSharedConfig> #include "configuration.h" +#include "constrainthelpers.h" #include "helper.h" #include "purpose_external_process_debug.h" using namespace Purpose; +using namespace Qt::StringLiterals; static const QStringList s_defaultDisabledPlugins = {QStringLiteral("saveasplugin")}; -typedef bool (*matchFunction)(const QString &constraint, const QJsonValue &value); - -static bool defaultMatch(const QString &constraint, const QJsonValue &value) -{ - return value == QJsonValue(constraint); -} - -static bool mimeTypeMatch(const QString &constraint, const QJsonValue &value) -{ - if (value.isArray()) { - const auto array = value.toArray(); - for (const QJsonValue &val : array) { - if (mimeTypeMatch(constraint, val)) { - return true; - } - } - return false; - } else if (value.isObject()) { - for (const QJsonValue &val : value.toObject()) { - if (mimeTypeMatch(constraint, val)) { - return true; - } - } - return false; - } else if (constraint.contains(QLatin1Char('*'))) { - const QRegularExpression re(QRegularExpression::wildcardToRegularExpression(constraint), QRegularExpression::CaseInsensitiveOption); - return re.match(value.toString()).hasMatch(); - } else { - QMimeDatabase db; - QMimeType mime = db.mimeTypeForName(value.toString()); - return mime.inherits(constraint); - } -} - -static bool dbusMatch(const QString &constraint, const QJsonValue &value) -{ - Q_UNUSED(value) -#if HAVE_QTDBUS - return QDBusConnection::sessionBus().interface()->isServiceRegistered(constraint); -#else - Q_UNUSED(constraint) - return false; -#endif -} - -static bool executablePresent(const QString &constraint, const QJsonValue &value) -{ - Q_UNUSED(value) - return !QStandardPaths::findExecutable(constraint).isEmpty(); -} - -static bool desktopFilePresent(const QString &constraint, const QJsonValue &value) -{ - Q_UNUSED(value) - return !QStandardPaths::locate(QStandardPaths::ApplicationsLocation, constraint).isEmpty(); -} - -static QMap<QString, matchFunction> s_matchFunctions = { - {QStringLiteral("mimeType"), mimeTypeMatch}, - {QStringLiteral("dbus"), dbusMatch}, - {QStringLiteral("application"), desktopFilePresent}, - {QStringLiteral("exec"), executablePresent}, -}; - class Purpose::AlternativesModelPrivate { public: @@ -105,7 +34,6 @@ QString m_pluginType; QStringList m_disabledPlugins = s_defaultDisabledPlugins; QJsonObject m_pluginTypeData; - const QRegularExpression constraintRx{QStringLiteral("(\\w+):(.*)")}; bool isPluginAcceptable(const KPluginMetaData &meta, const QStringList &disabledPlugins) const { @@ -124,46 +52,12 @@ // All constraints must match const QJsonArray constraints = obj.value(QLatin1String("X-Purpose-Constraints")).toArray(); for (const QJsonValue &constraint : constraints) { - if (!constraintMatches(meta, constraint)) { + if (!constraintMatches(meta, constraint, m_inputData)) { return false; } } return true; } - - bool constraintMatches(const KPluginMetaData &meta, const QJsonValue &constraint) const - { - // Treat an array as an OR - if (constraint.isArray()) { - const QJsonArray options = constraint.toArray(); - for (const auto &option : options) { - if (constraintMatches(meta, option)) { - return true; - } - } - return false; - } - Q_ASSERT(constraintRx.isValid()); - QRegularExpressionMatch match = constraintRx.match(constraint.toString()); - if (!match.isValid() || !match.hasMatch()) { - qCWarning(PURPOSE_EXTERNAL_PROCESS_LOG) << "wrong constraint" << constraint.toString(); - return false; - } - const QString propertyName = match.captured(1); - const QString constrainedValue = match.captured(2); - - const auto it = m_inputData.constFind(propertyName); - if (it == m_inputData.end()) { - // The constraint doesn't pertain to this data type - return true; - } - - const bool acceptable = s_matchFunctions.value(propertyName, defaultMatch)(constrainedValue, *it); - if (!acceptable) { - // qCDebug(PURPOSE_EXTERNAL_PROCESS_LOG) << "not accepted" << meta.name() << propertyName << constrainedValue << *it; - } - return acceptable; - } }; AlternativesModel::AlternativesModel(QObject *parent) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/src/constrainthelpers.cpp new/purpose-6.28.0/src/constrainthelpers.cpp --- old/purpose-6.27.0/src/constrainthelpers.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/purpose-6.28.0/src/constrainthelpers.cpp 2026-07-03 13:04:43.000000000 +0200 @@ -0,0 +1,121 @@ +/* + * SPDX-FileCopyrightText: 2014 Aleix Pol Gonzalez <[email protected]> + * + * SPDX-License-Identifier: LGPL-2.1-or-later + */ + +#include "constrainthelpers.h" + +#include <QJsonArray> +#include <QJsonObject> +#include <QJsonValue> +#include <QMimeDatabase> +#include <QStandardPaths> + +#if HAVE_QTDBUS +#include <QDBusConnection> +#include <QDBusConnectionInterface> +#endif + +#include "purpose_external_process_debug.h" + +using namespace Qt::StringLiterals; + +typedef bool (*matchFunction)(const QString &constraint, const QJsonValue &value); + +static bool defaultMatch(const QString &constraint, const QJsonValue &value) +{ + return value == QJsonValue(constraint); +} + +static bool mimeTypeMatch(const QString &constraint, const QJsonValue &value) +{ + if (value.isArray()) { + const auto array = value.toArray(); + for (const QJsonValue &val : array) { + if (mimeTypeMatch(constraint, val)) { + return true; + } + } + return false; + } else if (value.isObject()) { + for (const QJsonValue &val : value.toObject()) { + if (mimeTypeMatch(constraint, val)) { + return true; + } + } + return false; + } else if (constraint.contains(QLatin1Char('*'))) { + const QRegularExpression re(QRegularExpression::wildcardToRegularExpression(constraint), QRegularExpression::CaseInsensitiveOption); + return re.match(value.toString()).hasMatch(); + } else { + QMimeDatabase db; + QMimeType mime = db.mimeTypeForName(value.toString()); + return mime.inherits(constraint); + } +} + +static bool dbusMatch(const QString &constraint, const QJsonValue &value) +{ + Q_UNUSED(value) +#if HAVE_QTDBUS + return QDBusConnection::sessionBus().interface()->isServiceRegistered(constraint); +#else + Q_UNUSED(constraint) + return false; +#endif +} + +static bool executablePresent(const QString &constraint, const QJsonValue &value) +{ + Q_UNUSED(value) + return !QStandardPaths::findExecutable(constraint).isEmpty(); +} + +static bool desktopFilePresent(const QString &constraint, const QJsonValue &value) +{ + Q_UNUSED(value) + return !QStandardPaths::locate(QStandardPaths::ApplicationsLocation, constraint).isEmpty(); +} + +static QMap<QString, matchFunction> s_matchFunctions = { + {QStringLiteral("mimeType"), mimeTypeMatch}, + {QStringLiteral("dbus"), dbusMatch}, + {QStringLiteral("application"), desktopFilePresent}, + {QStringLiteral("exec"), executablePresent}, +}; + +const QRegularExpression constraintRx{QStringLiteral("(\\w+):(.*)")}; + +bool Purpose::constraintMatches(const KPluginMetaData &meta, const QJsonValue &constraint, const QJsonObject &inputData) +{ + // Treat an array as an OR + if (constraint.isArray()) { + const QJsonArray options = constraint.toArray(); + for (const auto &option : options) { + if (constraintMatches(meta, option, inputData)) { + return true; + } + } + return false; + } + Q_ASSERT(constraintRx.isValid()); + QRegularExpressionMatch match = constraintRx.match(constraint.toString()); + if (!match.isValid() || !match.hasMatch()) { + qCWarning(PURPOSE_EXTERNAL_PROCESS_LOG) << "wrong constraint" << constraint.toString(); + return false; + } + const QString propertyName = match.captured(1); + const QString constrainedValue = match.captured(2); + + if (propertyName == u"mimeType"_s && !inputData.contains(propertyName)) { + // The constraint doesn't pertain to this data type + return true; + } + + const bool acceptable = s_matchFunctions.value(propertyName, defaultMatch)(constrainedValue, inputData.value(propertyName)); + if (!acceptable) { + // qCDebug(PURPOSE_EXTERNAL_PROCESS_LOG) << "not accepted" << meta.name() << propertyName << constrainedValue << *it; + } + return acceptable; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/src/constrainthelpers.h new/purpose-6.28.0/src/constrainthelpers.h --- old/purpose-6.27.0/src/constrainthelpers.h 1970-01-01 01:00:00.000000000 +0100 +++ new/purpose-6.28.0/src/constrainthelpers.h 2026-07-03 13:04:43.000000000 +0200 @@ -0,0 +1,12 @@ +/* + * SPDX-FileCopyrightText: 2014 Aleix Pol Gonzalez <[email protected]> + * + * SPDX-License-Identifier: LGPL-2.1-or-later + */ + +#include <KPluginMetaData> + +namespace Purpose +{ +bool constraintMatches(const KPluginMetaData &meta, const QJsonValue &constraint, const QJsonObject &inputData); +}; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/src/plugins/pastebin/pastebinplugin.json new/purpose-6.28.0/src/plugins/pastebin/pastebinplugin.json --- old/purpose-6.27.0/src/plugins/pastebin/pastebinplugin.json 2026-06-05 17:52:07.000000000 +0200 +++ new/purpose-6.28.0/src/plugins/pastebin/pastebinplugin.json 2026-07-03 13:04:43.000000000 +0200 @@ -54,65 +54,80 @@ ], "Category": "Utilities", "Description": "Upload text to Pastebin.com", + "Description[ar]": "ارفع النص على Pastebin.com", "Description[bg]": "Качване на текст в Pastebin.com", "Description[ca@valencia]": "Puja el text a Pastebin.com", "Description[ca]": "Puja el text a Pastebin.com", "Description[es]": "Enviar texto a Pastebin.com", "Description[fr]": "Envoyer du texte vers Pastebin", "Description[he]": "העלאת טקסט ל־Pastebin.com", + "Description[hu]": "Szöveg feltöltése a Pastebin.com-ra", "Description[ia]": "Incarga texto a Pastebin.com", "Description[it]": "Carica il testo su Pastebin.com", "Description[ka]": "ტექსტის ატვირთვა Pastebin.com-ზე", "Description[ko]": "Pastebin.com에 텍스트 업로드", "Description[lt]": "Išsiųsti tekstą į „Pastebin.com“", "Description[nl]": "Tekst uploaden naar Pastebin.com", + "Description[nn]": "Last opp tekst til Pastebin.com", "Description[pt_BR]": "Enviar o texto para o Pastebin.com", + "Description[ru]": "Отправка текста на Pastebin.com", "Description[sk]": "Nahrať text na Pastebin.com", "Description[sl]": "Prenesi besedilo na Pastebin.com", "Description[tr]": "Metni Pastebin.com’a yükle", "Description[uk]": "Вивантажити текст на Pastebin.com", "Description[zh_CN]": "上传文本到 Pastebin.com", + "Description[zh_TW]": "上傳文字到 Pastebin.com", "Icon": "edit-paste", "License": "GPL", "Name": "Upload Publicly to Pastebin.com", + "Name[ar]": "ارفع بشكل علني على Pastebin.com", "Name[bg]": "Публично качване в Pastebin.com", "Name[ca@valencia]": "Puja públicament a Pastebin.com", "Name[ca]": "Puja públicament a Pastebin.com", "Name[es]": "Enviar públicamente a Pastebin.com", "Name[fr]": "Envoyer de façon publique à Pastebin", "Name[he]": "העלאה ציבורית ל־Pastebin.com", + "Name[hu]": "Nyilvános feltöltés a Pastebin.com-ra", "Name[ia]": "Incarga publicamente a Pastebin.com", "Name[it]": "Carica pubblicamente su Pastebin.com", "Name[ka]": "საჯაროდ ატვირთვა Pastebin.com-ზე", "Name[ko]": "Pastebin.com에 공개 업로드", "Name[lt]": "Išsiųsti viešai į „Pastebin.com“", "Name[nl]": "Publiek uploaden naar Pastebin.com", + "Name[nn]": "Last opp offentleg til Pastebin.com", "Name[pt_BR]": "Enviar publicamente para o Pastebin.com", + "Name[ru]": "Публикация на Pastebin.com", "Name[sk]": "Verejne nahrať na Pastebin.com", "Name[sl]": "Prenesi Javno na Pastebin.com", "Name[tr]": "Herkese Açık Olarak Pastebin.com’a Yükle", "Name[uk]": "Вивантажити відкрито на Pastebin.com", - "Name[zh_CN]": "上传到 Pastebin.com (公开)" + "Name[zh_CN]": "上传到 Pastebin.com (公开)", + "Name[zh_TW]": "公開上傳到 Pastebin.com" }, "X-Purpose-ActionDisplay": "Upload Publicly to Pastebin.com", + "X-Purpose-ActionDisplay[ar]": "ارفع بشكل علني على Pastebin.com", "X-Purpose-ActionDisplay[bg]": "Публично качване в Pastebin,com", "X-Purpose-ActionDisplay[ca@valencia]": "Puja públicament a Pastebin.com", "X-Purpose-ActionDisplay[ca]": "Puja públicament a Pastebin.com", "X-Purpose-ActionDisplay[es]": "Enviar públicamente a Pastebin.com", "X-Purpose-ActionDisplay[fr]": "Envoyer publiquement vers Pastebin", "X-Purpose-ActionDisplay[he]": "העלאה ציבורית ל־Pastebin.com", + "X-Purpose-ActionDisplay[hu]": "Nyilvános feltöltés a Pastebin.com-ra", "X-Purpose-ActionDisplay[ia]": "Incarga publicamente a Pastebin.com", "X-Purpose-ActionDisplay[it]": "Carica pubblicamente su Pastebin.com", "X-Purpose-ActionDisplay[ka]": "საჯაროდ ატვირთვა Pastebin.com-ზე", "X-Purpose-ActionDisplay[ko]": "Pastebin.com에 공개 업로드", "X-Purpose-ActionDisplay[lt]": "Išsiųsti viešai į „Pastebin.com“", "X-Purpose-ActionDisplay[nl]": "Publiek uploaden naar Pastebin.com", + "X-Purpose-ActionDisplay[nn]": "Last opp offentleg til Pastebin.com", "X-Purpose-ActionDisplay[pt_BR]": "Enviar publicamente para o Pastebin.com", + "X-Purpose-ActionDisplay[ru]": "Опубликовать на Pastebin.com", "X-Purpose-ActionDisplay[sk]": "Verejne nahrať na Pastebin.com", "X-Purpose-ActionDisplay[sl]": "Prenesi Javno na Pastebin.com", "X-Purpose-ActionDisplay[tr]": "Metni Herkes için Pastebin.com’a Yükle", "X-Purpose-ActionDisplay[uk]": "Вивантажити відкрито на Pastebin.com", "X-Purpose-ActionDisplay[zh_CN]": "上传到 Pastebin.com (公开)", + "X-Purpose-ActionDisplay[zh_TW]": "公開上傳到 Pastebin.com", "X-Purpose-Configuration": [], "X-Purpose-Constraints": [ "mimeType:text/plain" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purpose-6.27.0/src/plugins/youtube/youtubeplugin.json new/purpose-6.28.0/src/plugins/youtube/youtubeplugin.json --- old/purpose-6.27.0/src/plugins/youtube/youtubeplugin.json 2026-06-05 17:52:07.000000000 +0200 +++ new/purpose-6.28.0/src/plugins/youtube/youtubeplugin.json 2026-07-03 13:04:43.000000000 +0200 @@ -148,6 +148,7 @@ "X-Purpose-ActionDisplay[eu]": "Zama-igo YouTubera…", "X-Purpose-ActionDisplay[fr]": "Envoyer vers YouTube...", "X-Purpose-ActionDisplay[he]": "העלאה ל־YouTube…", + "X-Purpose-ActionDisplay[hu]": "Feltöltés a YouTube-ra…", "X-Purpose-ActionDisplay[ia]": "Incarga a YouTube…", "X-Purpose-ActionDisplay[is]": "Senda inn á YouTube…", "X-Purpose-ActionDisplay[it]": "Carica su YouTube…",
