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

Bug#1110062: marked as done (unblock: kclock/25.04.3-1)



Your message dated Tue, 29 Jul 2025 17:41:30 +0000
with message-id <E1ugoKQ-002GGp-2e@respighi.debian.org>
and subject line unblock kclock
has caused the Debian Bug report #1110062,
regarding unblock: kclock/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.)


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

Dear Release Team,

please unblock package kclock.

[ Reason ]
It contains the following changes:
* New upstream release (25.04.3).
  - Add X-Plasma-API-Minimum-Version to applet metadata. (kde#505837)
  - Use KPackageStructure instead of ServiceTypes in metadata.json.
  (#505837)
  - Timers: Fix preset creation and usage (25.04). (kde#505636)
  - Fix alarm form overflowing on larger screens. (kde#505695)
* Backport upstream commit:
  - Correctly honor configured sound theme for default alarm sound.
  [8c656dc4]

The complete debdiff is huge with translation fixes so I’m attaching a
simple diff trimmed of these for your convinience :
    diff -ur --exclude=po --exclude=*.desktop kclock-25.04.[03]

[ Tests ]
Tested stopwatch, timer, adding clock for another timezone.

[ Risks ]
Only contains the latest upstream point release for the 25.04 Gear
branch. 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 kclock/25.04.3-1

Attachment: kclock_25.04.0-1.dsc_kclock_25.04.3-1.dsc.debdiff.gz
Description: application/gzip

diff -ur '--exclude=po' '--exclude=*.desktop' kclock-25.04.0/CMakeLists.txt kclock-25.04.3/CMakeLists.txt
--- kclock-25.04.0/CMakeLists.txt	2025-04-11 05:12:02.000000000 +0200
+++ kclock-25.04.3/CMakeLists.txt	2025-06-30 18:54:48.000000000 +0200
@@ -11,7 +11,7 @@
 # KDE Applications 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(kclock VERSION ${RELEASE_SERVICE_VERSION})
diff -ur '--exclude=po' '--exclude=*.desktop' kclock-25.04.0/debian/changelog kclock-25.04.3/debian/changelog
--- kclock-25.04.0/debian/changelog	2025-04-17 18:59:13.000000000 +0200
+++ kclock-25.04.3/debian/changelog	2025-07-23 18:01:27.000000000 +0200
@@ -1,3 +1,20 @@
+kclock (25.04.3-1) unstable; urgency=medium
+
+  * Team upload.
+
+  [ Aurélien COUDERC ]
+  * New upstream release (25.04.3).
+    - Add X-Plasma-API-Minimum-Version to applet metadata. (kde#505837)
+    - Use KPackageStructure instead of ServiceTypes in metadata.json.
+    (#505837)
+    - Timers: Fix preset creation and usage (25.04). (kde#505636)
+    - Fix alarm form overflowing on larger screens. (kde#505695)
+  * Backport upstream commit:
+    - Correctly honor configured sound theme for default alarm sound.
+    [8c656dc4]
+
+ -- Aurélien COUDERC <coucouf@debian.org>  Wed, 23 Jul 2025 18:01:27 +0200
+
 kclock (25.04.0-1) unstable; urgency=medium
 
   * Team upload.
Seulement dans kclock-25.04.3/debian: patches
diff -ur '--exclude=po' '--exclude=*.desktop' kclock-25.04.0/org.kde.kclock.appdata.xml kclock-25.04.3/org.kde.kclock.appdata.xml
--- kclock-25.04.0/org.kde.kclock.appdata.xml	2025-04-11 05:12:02.000000000 +0200
+++ kclock-25.04.3/org.kde.kclock.appdata.xml	2025-06-30 18:54:48.000000000 +0200
@@ -77,6 +77,7 @@
   <summary xml:lang="lt">Sekti laiką ir nusistatyti žadintuvus</summary>
   <summary xml:lang="lv">Sekojiet laikam un lieciet modinātājus</summary>
   <summary xml:lang="nl">Tijd bijhouden en wekkers zetten</summary>
+  <summary xml:lang="nn">Vis klokka og still inn alarmar</summary>
   <summary xml:lang="pl">Pilnuj czasu i ustawiaj alarmy</summary>
   <summary xml:lang="pt-BR">Manter o horário e configurar os alarmes</summary>
   <summary xml:lang="ru">Просмотр времени и установка напоминаний</summary>
@@ -115,6 +116,7 @@
     <p xml:lang="lt">Universali laikrodžio programa, skirta kompiuteriams ir mobiliesiems įrenginiams. Laikrodis leidžia nustatyti daug žadintuvų bei laikmačių, be to, jame yra chronometras ir pasaulio laikrodžiai.</p>
     <p xml:lang="lv">Universāla pulksteņa lietotne datoram un viedierīcēm. Pulkstenis satur hronometru un pasaules pulksteni, kā arī ļauj uzlikt dažādus modinātājus un taimerus.</p>
     <p xml:lang="nl">Een universele kloktoepassing voor bureaublad en mobiel. Kclock omvat een stopwatch en een wereldklok en biedt u het zetten meerdere wekkers en timers.</p>
+    <p xml:lang="nn">Eit universelt klokkeprogram for skrivebord og mobil. Inneheld stoppeklokke og verdsklokke, og lèt deg stilla inn fleire alarmar og nedteljarar.</p>
     <p xml:lang="pl">Wszechstronny zegar na urządzenia przenośne i biurkowe. Zegar zawiera stoper oraz zegar światowy. Umożliwia ustawienie wielu alarmów i minutników.</p>
     <p xml:lang="pt-BR">Um aplicativo de relógio universal para desktop e celular. O relógio inclui um cronômetro e um relógio mundial, e permite que você defina vários alarmes e timers.</p>
     <p xml:lang="ru">Универсальные часы для стационарных компьютеров и мобильных устройств. В программе есть секундомер и мировые часы, поддерживается установка напоминаний и таймеров.</p>
@@ -457,6 +459,9 @@
   <url type="donation">https://www.kde.org/community/donations/?app=kclock&amp;source=appdata</url>
   <url type="vcs-browser">https://invent.kde.org/utilities/kclock</url>
   <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' '--exclude=*.desktop' kclock-25.04.0/.pc/applied-patches kclock-25.04.3/.pc/applied-patches
--- kclock-25.04.0/.pc/applied-patches	2025-07-27 13:27:32.636652284 +0200
+++ kclock-25.04.3/.pc/applied-patches	2025-07-27 13:27:32.780641035 +0200
@@ -0,0 +1 @@
+upstream_8c656dc4_Honor-configured-sound-theme-for-default-alarm-sound.patch
Seulement dans kclock-25.04.3/.pc: upstream_8c656dc4_Honor-configured-sound-theme-for-default-alarm-sound.patch
diff -ur '--exclude=po' '--exclude=*.desktop' kclock-25.04.0/src/kclock/qml/alarm/AlarmForm.qml kclock-25.04.3/src/kclock/qml/alarm/AlarmForm.qml
--- kclock-25.04.0/src/kclock/qml/alarm/AlarmForm.qml	2025-04-11 05:12:02.000000000 +0200
+++ kclock-25.04.3/src/kclock/qml/alarm/AlarmForm.qml	2025-06-30 18:54:48.000000000 +0200
@@ -82,6 +82,7 @@
     // repeat day picker
     DialogComboBox {
         implicitWidth: root.width
+        Layout.maximumWidth: 540
 
         Kirigami.FormData.label: i18n("Days to repeat:")
         text: FormatUtil.getRepeatFormat(root.formDaysOfWeek)
@@ -117,6 +118,7 @@
     DialogComboBox {
         id: ringDurationPicker
         implicitWidth: root.width
+        Layout.maximumWidth: 540
 
         Kirigami.FormData.label: i18n("Ring Duration:")
         text: {
@@ -160,6 +162,7 @@
     DialogComboBox {
         id: snoozeLengthPicker
         implicitWidth: root.width
+        Layout.maximumWidth: 540
 
         Kirigami.FormData.label: i18n("Snooze Length:")
         title: i18n("Select Snooze Length")
@@ -194,6 +197,7 @@
         id: audioPathField
         implicitWidth: root.width
         width: root.width
+        Layout.maximumWidth: 540
 
         Kirigami.FormData.label: i18n("Ring Sound:")
 
diff -ur '--exclude=po' '--exclude=*.desktop' kclock-25.04.0/src/kclock/qml/timer/TimerFormDialog.qml kclock-25.04.3/src/kclock/qml/timer/TimerFormDialog.qml
--- kclock-25.04.0/src/kclock/qml/timer/TimerFormDialog.qml	2025-04-11 05:12:02.000000000 +0200
+++ kclock-25.04.3/src/kclock/qml/timer/TimerFormDialog.qml	2025-06-30 18:54:48.000000000 +0200
@@ -16,10 +16,6 @@
 Kirigami.Dialog {
     id: root
 
-    function createTimer(duration, label, commandTimeout) {
-        TimerModel.addNew(duration, label, commandTimeout);
-    }
-
     property bool showPresets: false
     property bool showDelete: false
 
@@ -37,20 +33,6 @@
             id: timerForm
             Layout.fillWidth: true
         }
-        Flow {
-            spacing: Kirigami.Units.smallSpacing
-            visible: showPresets
-            Layout.fillWidth: true
-
-            Repeater {
-                model: TimerPresetModel
-
-                Button {
-                    text: showDelete ? "Delete" : preset.presetName
-                    onClicked: showDelete ? TimerPresetModel.deletePreset(index) : root.createTimer(timerForm.getDuration(), timerForm.name) & close();
-                }
-            }
-        }
     }
 
     customFooterActions: [
@@ -70,7 +52,7 @@
             icon.name: "dialog-ok"
             text: i18n("Done")
             onTriggered: {
-                root.createTimer(timerForm.getDuration(), timerForm.name, timerForm.commandTimeout);
+                TimerModel.addNew(timerForm.getDuration(), timerForm.name, timerForm.commandTimeout);
                 close();
             }
         }
diff -ur '--exclude=po' '--exclude=*.desktop' kclock-25.04.0/src/kclock/qml/timer/TimerForm.qml kclock-25.04.3/src/kclock/qml/timer/TimerForm.qml
--- kclock-25.04.0/src/kclock/qml/timer/TimerForm.qml	2025-04-11 05:12:02.000000000 +0200
+++ kclock-25.04.3/src/kclock/qml/timer/TimerForm.qml	2025-06-30 18:54:48.000000000 +0200
@@ -19,6 +19,8 @@
     property alias name: label.text
     property alias commandTimeout: commandTimeoutField.text
 
+    signal closeFormRequested()
+
     function setDuration(duration) {
         hours = duration / 60 / 60;
         minutes = duration % (60 * 60) / 60;
@@ -39,7 +41,7 @@
                 text: i18n("1 m")
                 hours: 0
                 minutes: 1
-                hoursSpinBox: spinBoxHours 
+                hoursSpinBox: spinBoxHours
                 minutesSpinBox: spinBoxMinutes
                 secondsSpinBox: spinBoxSeconds
             }
@@ -47,7 +49,7 @@
                 text: i18n("5 m")
                 hours: 0
                 minutes: 5
-                hoursSpinBox: spinBoxHours 
+                hoursSpinBox: spinBoxHours
                 minutesSpinBox: spinBoxMinutes
                 secondsSpinBox: spinBoxSeconds
             }
@@ -55,7 +57,7 @@
                 text: i18n("10 m")
                 hours: 0
                 minutes: 10
-                hoursSpinBox: spinBoxHours 
+                hoursSpinBox: spinBoxHours
                 minutesSpinBox: spinBoxMinutes
                 secondsSpinBox: spinBoxSeconds
             }
@@ -67,7 +69,7 @@
                 text: i18n("15 m")
                 hours: 0
                 minutes: 15
-                hoursSpinBox: spinBoxHours 
+                hoursSpinBox: spinBoxHours
                 minutesSpinBox: spinBoxMinutes
                 secondsSpinBox: spinBoxSeconds
             }
@@ -75,7 +77,7 @@
                 text: i18n("30 m")
                 hours: 0
                 minutes: 30
-                hoursSpinBox: spinBoxHours 
+                hoursSpinBox: spinBoxHours
                 minutesSpinBox: spinBoxMinutes
                 secondsSpinBox: spinBoxSeconds
             }
@@ -83,7 +85,7 @@
                 text: i18n("1 h")
                 hours: 1
                 minutes: 0
-                hoursSpinBox: spinBoxHours 
+                hoursSpinBox: spinBoxHours
                 minutesSpinBox: spinBoxMinutes
                 secondsSpinBox: spinBoxSeconds
             }
@@ -151,7 +153,7 @@
                 showPresets = true;
             }
         }
-        
+
         Button {
             id: presetButton
             text: showPresets ? i18n("Hide Presets") : i18n("Show Presets")
@@ -168,7 +170,7 @@
     }
     Flow {
         spacing: Kirigami.Units.smallSpacing
-        visible: showPresets && Kirigami.Settings.isMobile && repeater.count > 0
+        visible: showPresets && repeater.count > 0
         Layout.fillWidth: true
 
         Repeater {
@@ -177,8 +179,14 @@
 
             Button {
                 text: showDelete ? "Delete" : preset.presetName
-                onClicked: showDelete ? TimerPresetModel.deletePreset(index) : loader.createTimer(timerForm.getDuration(), timerForm.name, timerForm.commandTimeout) & close();
-
+                onClicked: {
+                    if (showDelete) {
+                        TimerPresetModel.deletePreset(index);
+                    } else {
+                        TimerModel.addNew(preset.presetDuration, preset.presetName, timerForm.commandTimeout);
+                        root.closeFormRequested();
+                    }
+                }
             }
         }
     }
diff -ur '--exclude=po' '--exclude=*.desktop' kclock-25.04.0/src/kclockd/alarm.cpp kclock-25.04.3/src/kclockd/alarm.cpp
--- kclock-25.04.0/src/kclockd/alarm.cpp	2025-04-11 05:12:02.000000000 +0200
+++ kclock-25.04.3/src/kclockd/alarm.cpp	2025-07-27 13:27:32.000000000 +0200
@@ -305,7 +305,8 @@
 
     // play sound (it will loop)
     qDebug() << "Alarm sound: " << m_audioPath;
-    AlarmPlayer::instance().setSource(m_audioPath);
+    // TODO clean up usage of audio path as URL.
+    AlarmPlayer::instance().setSource(m_audioPath.toLocalFile());
     AlarmPlayer::instance().play();
     setRinging(true);
 
diff -ur '--exclude=po' '--exclude=*.desktop' kclock-25.04.0/src/kclockd/alarmplayer.cpp kclock-25.04.3/src/kclockd/alarmplayer.cpp
--- kclock-25.04.0/src/kclockd/alarmplayer.cpp	2025-04-11 05:12:02.000000000 +0200
+++ kclock-25.04.3/src/kclockd/alarmplayer.cpp	2025-07-27 13:27:32.000000000 +0200
@@ -9,8 +9,14 @@
 
 #include <QDateTime>
 #include <QFile>
+#include <QFileInfo>
 #include <QStandardPaths>
 
+#include <KConfigGroup>
+#include <KSharedConfig>
+
+using namespace Qt::Literals::StringLiterals;
+
 AlarmPlayer &AlarmPlayer::instance()
 {
     static AlarmPlayer singleton;
@@ -21,6 +27,7 @@
     : QObject{parent}
     , m_player(new QMediaPlayer(this))
     , m_audio(new QAudioOutput)
+    , m_soundThemeWatcher(KConfigWatcher::create(KSharedConfig::openConfig(QStringLiteral("kdeglobals"))))
 {
     m_player->setAudioOutput(m_audio);
     connect(m_player, &QMediaPlayer::playbackStateChanged, this, &AlarmPlayer::loopAudio);
@@ -60,16 +67,37 @@
     Q_EMIT volumeChanged();
 }
 
-void AlarmPlayer::setSource(const QUrl &path)
+void AlarmPlayer::setSource(const QString &path)
 {
-    // if user set a invalid audio path or doesn't even specified a path, resort to default
-    if (!path.isValid() || !QFile::exists(path.toLocalFile())) {
-        const QUrl url = QUrl::fromLocalFile(
-            QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("sounds/freedesktop/stereo/alarm-clock-elapsed.oga")));
-        m_player->setSource(url);
+    if (path.isEmpty() || !QFileInfo::exists(path)) {
+        m_player->setSource(QUrl::fromLocalFile(defaultAlarmSoundPath()));
     } else {
-        m_player->setSource(path);
+        m_player->setSource(QUrl::fromLocalFile(path));
     }
 }
 
+QString AlarmPlayer::soundThemeName() const
+{
+    const KConfigGroup soundGroup = m_soundThemeWatcher->config()->group(QStringLiteral("Sounds"));
+    const QString themeName = soundGroup.readEntry(QStringLiteral("Theme"), QStringLiteral("ocean"));
+    return themeName;
+}
+
+QString AlarmPlayer::defaultAlarmSoundPath() const
+{
+    const QString soundPath = QStringLiteral("sounds/%1/stereo/alarm-clock-elapsed.%2");
+
+    for (const QString &theme : {soundThemeName(), u"freedesktop"_s}) {
+        for (const QLatin1String extension : {"wav"_L1, "oga"_L1, "ogg"_L1}) {
+            const QString path = QStandardPaths::locate(QStandardPaths::GenericDataLocation, soundPath.arg(theme, extension));
+            if (!path.isEmpty()) {
+                return path;
+            }
+        }
+    }
+
+    qCritical() << "Failed to find any alarm clock sound!";
+    return QString();
+}
+
 #include "moc_alarmplayer.cpp"
diff -ur '--exclude=po' '--exclude=*.desktop' kclock-25.04.0/src/kclockd/alarmplayer.h kclock-25.04.3/src/kclockd/alarmplayer.h
--- kclock-25.04.0/src/kclockd/alarmplayer.h	2025-04-11 05:12:02.000000000 +0200
+++ kclock-25.04.3/src/kclockd/alarmplayer.h	2025-07-27 13:27:32.000000000 +0200
@@ -12,6 +12,8 @@
 
 #include <QAudioOutput>
 
+#include <KConfigWatcher>
+
 class AlarmPlayer : public QObject
 {
     Q_OBJECT
@@ -22,10 +24,13 @@
 
     int volume();
     Q_INVOKABLE void setVolume(int volume);
-    Q_INVOKABLE void setSource(const QUrl &path);
+    Q_INVOKABLE void setSource(const QString &path);
     Q_INVOKABLE void play();
     Q_INVOKABLE void stop();
 
+    QString soundThemeName() const;
+    QString defaultAlarmSoundPath() const;
+
 Q_SIGNALS:
     void volumeChanged();
 
@@ -35,6 +40,7 @@
 private:
     QMediaPlayer *m_player;
     QAudioOutput *m_audio;
+    KConfigWatcher::Ptr m_soundThemeWatcher;
 
     bool m_userStop = false; // indicate if user asks to stop
 
diff -ur '--exclude=po' '--exclude=*.desktop' kclock-25.04.0/src/kclockd/timer.cpp kclock-25.04.3/src/kclockd/timer.cpp
--- kclock-25.04.0/src/kclockd/timer.cpp	2025-04-11 05:12:02.000000000 +0200
+++ kclock-25.04.3/src/kclockd/timer.cpp	2025-07-27 13:27:32.000000000 +0200
@@ -263,7 +263,7 @@
 
     Utilities::pauseMprisSources();
 
-    AlarmPlayer::instance().setSource(findRingSoundLocation());
+    AlarmPlayer::instance().setSource(QString()); // use default.
     AlarmPlayer::instance().play();
 
     m_ringing = true;
@@ -290,18 +290,4 @@
     }
 }
 
-QUrl Timer::findRingSoundLocation()
-{
-    const auto locations = QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation);
-    const QString path = QStringLiteral("/sounds/freedesktop/stereo/alarm-clock-elapsed.oga");
-    QString alarmSoundPath;
-
-    for (const auto &directory : locations) {
-        if (QFile(directory + path).exists()) {
-            return QUrl(directory + path);
-        }
-    }
-
-    return QUrl();
-}
 #include "moc_timer.cpp"
diff -ur '--exclude=po' '--exclude=*.desktop' kclock-25.04.0/src/kclockd/timer.h kclock-25.04.3/src/kclockd/timer.h
--- kclock-25.04.0/src/kclockd/timer.h	2025-04-11 05:12:02.000000000 +0200
+++ kclock-25.04.3/src/kclockd/timer.h	2025-07-27 13:27:32.000000000 +0200
@@ -81,7 +81,6 @@
     void reschedule();
 
 private:
-    QUrl findRingSoundLocation();
     void setRunning(bool running);
     void ring();
 
diff -ur '--exclude=po' '--exclude=*.desktop' kclock-25.04.0/src/plasmoid/KClock_1x2/package/metadata.json kclock-25.04.3/src/plasmoid/KClock_1x2/package/metadata.json
--- kclock-25.04.0/src/plasmoid/KClock_1x2/package/metadata.json	2025-04-11 05:12:02.000000000 +0200
+++ kclock-25.04.3/src/plasmoid/KClock_1x2/package/metadata.json	2025-06-30 18:54:48.000000000 +0200
@@ -1,4 +1,5 @@
 {
+    "KPackageStructure": "Plasma/Applet",
     "KPlugin": {
         "Authors": [
             {
@@ -26,6 +27,7 @@
                 "Name[lt]": "HanY",
                 "Name[lv]": "HanY",
                 "Name[nl]": "HanY",
+                "Name[nn]": "HanY",
                 "Name[pa]": "ਹਾਂਯੇ",
                 "Name[pl]": "HanY",
                 "Name[pt]": "HanY",
@@ -66,6 +68,7 @@
         "Description[lt]": "KClock valdiklis (1x2)",
         "Description[lv]": "„KClock“ logdaļa (1×2)",
         "Description[nl]": "KClock-widget (1x2)",
+        "Description[nn]": "KClock-element (1 × 2)",
         "Description[pa]": "ਕੇ-ਘੜੀ ਵਿਜੈਟ (1x2)",
         "Description[pl]": "Element interfejsu KClock (1x2)",
         "Description[pt]": "Elemento do KClock (1x2)",
@@ -112,6 +115,7 @@
         "Name[lt]": "KClock_1x2",
         "Name[lv]": "KClock_1x2",
         "Name[nl]": "KClock_1x2",
+        "Name[nn]": "KClock_1x2",
         "Name[pa]": "ਕੇ-ਘੜੀ_1x2",
         "Name[pl]": "KClock_1x2",
         "Name[pt]": "KClock_1x2",
@@ -126,13 +130,11 @@
         "Name[x-test]": "xxKClock_1x2xx",
         "Name[zh_CN]": "KClock_1x2",
         "Name[zh_TW]": "KClock_1x2",
-        "ServiceTypes": [
-            "Plasma/Applet"
-        ],
         "Version": "1.0",
         "Website": "https://apps.kde.org/kclock";
     },
     "X-Plasma-API": "declarativeappletscript",
+    "X-Plasma-API-Minimum-Version": "6.0",
     "X-Plasma-DBusActivationService": "org.kde.kclock.*",
     "X-Plasma-MainScript": "ui/main.qml",
     "X-Plasma-NotificationArea": "true",
diff -ur '--exclude=po' '--exclude=*.desktop' kclock-25.04.0/src/plasmoid/KClock_KWeather_3x3/package/metadata.json kclock-25.04.3/src/plasmoid/KClock_KWeather_3x3/package/metadata.json
--- kclock-25.04.0/src/plasmoid/KClock_KWeather_3x3/package/metadata.json	2025-04-11 05:12:02.000000000 +0200
+++ kclock-25.04.3/src/plasmoid/KClock_KWeather_3x3/package/metadata.json	2025-06-30 18:54:48.000000000 +0200
@@ -1,4 +1,5 @@
 {
+    "KPackageStructure": "Plasma/Applet",
     "KPlugin": {
         "Authors": [
             {
@@ -26,6 +27,7 @@
                 "Name[lt]": "HanY",
                 "Name[lv]": "HanY",
                 "Name[nl]": "HanY",
+                "Name[nn]": "HanY",
                 "Name[pa]": "ਹਾਂਯੇ",
                 "Name[pl]": "HanY",
                 "Name[pt]": "HanY",
@@ -66,6 +68,7 @@
         "Description[lt]": "KClock valdiklis (3x3 su informacija apie orus)",
         "Description[lv]": "„KCloc“k logdaļa (3×3 ar laikapstākļu informāciju)",
         "Description[nl]": "KClock-widget (3x3 met weerinformatie)",
+        "Description[nn]": "KClock-element (3 × 3 med vêrmelding)",
         "Description[pa]": "ਕੇ-ਘੜੀ ਵਿਜੈਟ (ਮੌਸਮੀ ਜਾਣਕਾਰੀ ਸਮੇਤ 3x3)",
         "Description[pl]": "Element interfejsu (3x3 z danymi pogodowymi)",
         "Description[pt]": "Elemento do KClock (3x3 com Dados Meteorológicos)",
@@ -107,6 +110,7 @@
         "Name[lt]": "KClock_KWeather_3x3",
         "Name[lv]": "KClock_KWeather_3x3",
         "Name[nl]": "KClock_KWeather_3x3",
+        "Name[nn]": "KClock_KWeather_3x3",
         "Name[pa]": "ਕੇ-ਘੜੀ_ਕੇ-ਮੌਸਮ_3x3",
         "Name[pl]": "KClock_KWeather_3x3",
         "Name[pt]": "KClock_KWeather_3x3",
@@ -121,9 +125,6 @@
         "Name[x-test]": "xxKClock_KWeather_3x3xx",
         "Name[zh_CN]": "KClock_KWeather_3x3",
         "Name[zh_TW]": "KClock_KWeather_3x3",
-        "ServiceTypes": [
-            "Plasma/Applet"
-        ],
         "Version": "1.0",
         "Website": "https://apps.kde.org/kclock";
     },

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

--- End Message ---

Reply to: