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

Bug#1107945: marked as done (unblock: tokodon/25.04.2-1)



Your message dated Tue, 17 Jun 2025 20:27:01 +0000
with message-id <E1uRctZ-004dCx-19@respighi.debian.org>
and subject line unblock tokodon
has caused the Debian Bug report #1107945,
regarding unblock: tokodon/25.04.2-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.)


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

Dear Release Team,

please unblock package tokodon.

[ Reason ]
It contains the following changes:
* New upstream release (25.04.1).
  - Clamp contentY when using the PageUp key. (kde#501936)
  - Stop registering for push notifications despite them being disabled.
  - Print out what the old endpoint was in the warning message.
  - Don't spam network error log with push subscription checks.
  - Don't bother updating push subscriptions if there is none.
  - Remove annual_report from push notification rules.
  - Call updatePushNotifications when toggling the notifications checkbox.
* New upstream release (25.04.2).
  - ModerationTools: Fix opening some subpages.

The complete debdiff contains a huge amount of translation fixes so I’m
attaching a simple diff trimmed from these for your convenience:
    diff -ur --exclude=po tokodon-25.04.[02]

[ Tests ]
- Tested connecting to mastodon with an existing account and browsing
  through the various pages of the app.
- Upstream test suite passes in sbuild.

[ Risks ]
Upstream point releases only contain targetted commits. 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 tokodon/25.04.2-1

Attachment: tokodon_25.04.0-1.dsc_tokodon_25.04.2-1.dsc.debdiff.gz
Description: application/gzip

diff -ur '--exclude=po' tokodon-25.04.0/CMakeLists.txt tokodon-25.04.2/CMakeLists.txt
--- tokodon-25.04.0/CMakeLists.txt	2025-04-10 05:11:52.000000000 +0200
+++ tokodon-25.04.2/CMakeLists.txt	2025-06-03 05:21:40.000000000 +0200
@@ -6,7 +6,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 "2")
 set(RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
 
 project(tokodon VERSION ${RELEASE_SERVICE_VERSION})
diff -ur '--exclude=po' tokodon-25.04.0/debian/changelog tokodon-25.04.2/debian/changelog
--- tokodon-25.04.0/debian/changelog	2025-04-17 22:24:22.000000000 +0200
+++ tokodon-25.04.2/debian/changelog	2025-06-09 23:37:39.000000000 +0200
@@ -1,3 +1,19 @@
+tokodon (25.04.2-1) unstable; urgency=medium
+
+  [ Aurélien COUDERC ]
+  * New upstream release (25.04.1).
+    - Clamp contentY when using the PageUp key. (kde#501936)
+    - Stop registering for push notifications despite them being disabled.
+    - Print out what the old endpoint was in the warning message.
+    - Don't spam network error log with push subscription checks.
+    - Don't bother updating push subscriptions if there is none.
+    - Remove annual_report from push notification rules.
+    - Call updatePushNotifications when toggling the notifications checkbox.
+  * New upstream release (25.04.2).
+    - ModerationTools: Fix opening some subpages.
+
+ -- Aurélien COUDERC <coucouf@debian.org>  Mon, 09 Jun 2025 23:37:39 +0200
+
 tokodon (25.04.0-1) unstable; urgency=medium
 
   [ Aurélien COUDERC ]
diff -ur '--exclude=po' tokodon-25.04.0/.gitlab-ci.yml tokodon-25.04.2/.gitlab-ci.yml
--- tokodon-25.04.0/.gitlab-ci.yml	2025-04-10 05:11:52.000000000 +0200
+++ tokodon-25.04.2/.gitlab-ci.yml	2025-06-03 05:21:40.000000000 +0200
@@ -6,7 +6,6 @@
     file:
       - /gitlab-templates/reuse-lint.yml
       - /gitlab-templates/linux-qt6.yml
-      - /gitlab-templates/linux-qt6-next.yml
       - /gitlab-templates/freebsd-qt6.yml
       - /gitlab-templates/android-qt6.yml
       - /gitlab-templates/craft-android-qt6-apks.yml
diff -ur '--exclude=po' tokodon-25.04.0/org.kde.tokodon.appdata.xml tokodon-25.04.2/org.kde.tokodon.appdata.xml
--- tokodon-25.04.0/org.kde.tokodon.appdata.xml	2025-04-10 05:11:52.000000000 +0200
+++ tokodon-25.04.2/org.kde.tokodon.appdata.xml	2025-06-03 05:21:40.000000000 +0200
@@ -151,6 +151,8 @@
     </screenshot>
   </screenshots>
   <releases>
+    <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' tokodon-25.04.0/org.kde.tokodon.desktop tokodon-25.04.2/org.kde.tokodon.desktop
--- tokodon-25.04.0/org.kde.tokodon.desktop	2025-04-10 05:11:52.000000000 +0200
+++ tokodon-25.04.2/org.kde.tokodon.desktop	2025-06-03 05:21:40.000000000 +0200
@@ -61,6 +61,7 @@
 GenericName[ko]=연합우주 탐색하기
 GenericName[lv]=Pārlūkojiet fediversu
 GenericName[nl]=In de Fediverse bladeren
+GenericName[nn]=Bla gjennom Allheimen
 GenericName[pl]=Przejrzyj Fediverse
 GenericName[ru]=Просмотр Fediverse
 GenericName[sa]=Fediverse ब्राउज् कुर्वन्तु
diff -ur '--exclude=po' tokodon-25.04.0/snapcraft.yaml tokodon-25.04.2/snapcraft.yaml
--- tokodon-25.04.0/snapcraft.yaml	2025-04-10 05:11:52.000000000 +0200
+++ tokodon-25.04.2/snapcraft.yaml	2025-06-03 05:21:40.000000000 +0200
@@ -18,26 +18,39 @@
       - audio-record
       - home
       - password-manager-service
-environment:
-  ALSA_CONFIG_PATH: "$SNAP/kf6/etc/asound.conf"
+    environment:
+      LD_LIBRARY_PATH: "$SNAP/ffmpeg-platform/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR:$SNAP/kf6/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR:$LD_LIBRARY_PATH"
+      PATH: $SNAP/ffmpeg-platform/usr/bin:$SNAP/usr/bin${PATH}
+      ALSA_CONFIG_PATH: "$SNAP/kf6/etc/asound.conf"
+      QT_MEDIA_BACKEND: "ffmpeg"
+      QT_PLUGIN_PATH: "$SNAP/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/marble/plugins:/snap/kf6-core24/current/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/plugins"
 layout:
   /usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/alsa-lib:
     bind: $SNAP/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/alsa-lib
+plugs:
+  ffmpeg-2404:
+    interface: content
+    target: ffmpeg-platform # the folder where this content snap will be mounted
+    default-provider: ffmpeg-2404
 slots:
   session-dbus-interface:
     interface: dbus
     name: org.kde.tokodon
     bus: session
-package-repositories:
-  - type: apt
-    components:
-      - main
-    suites:
-      - noble
-    key-id: 444DABCF3667D0283F894EDDE6D4736255751E5D
-    url: http://origin.archive.neon.kde.org/user
-    key-server: keyserver.ubuntu.com
 parts:
+  kunifiedpush:
+    source: https://invent.kde.org/libraries/kunifiedpush.git
+    plugin: cmake
+    build-packages:
+      - libssl-dev
+    build-environment:
+      - PATH: /snap/bin:${PATH}
+      - PYTHONPATH: ${CRAFT_STAGE}/lib/python3.12/site-packages:${CRAFT_STAGE}/usr/lib/python3/dist-packages
+      - 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"
+    cmake-parameters:
+      - -DCMAKE_INSTALL_PREFIX=/usr
+      - -DCMAKE_BUILD_TYPE=Release
+      - -DBUILD_TESTING=OFF
   mpvqt:
     plugin: cmake
     source: https://invent.kde.org/libraries/mpvqt.git
@@ -64,6 +77,7 @@
   tokodon:
     after:
       - mpvqt
+      - kunifiedpush
     parse-info:
       - usr/share/metainfo/org.kde.tokodon.appdata.xml
     plugin: cmake
@@ -71,6 +85,9 @@
     source-type: local
     build-packages:
       - libmpv-dev
+      - libfreetype-dev
+    build-snaps:
+      - ffmpeg-2404-sdk
     stage-packages:
       - libasound2
       - libasound2-data
@@ -83,6 +100,8 @@
       - gstreamer1.0-plugins-ugly
       - libblas3
       - libsecret-1-0
+      - libfreetype6
+      - libssl3t64
     cmake-parameters:
       - -DCMAKE_INSTALL_PREFIX=/usr
       - -DCMAKE_BUILD_TYPE=Release
@@ -102,12 +121,9 @@
       - -DCMAKE_LIBRARY_PATH=lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR
       - "-DCMAKE_FIND_ROOT_PATH=$CRAFT_STAGE\\;/snap/kde-qt6-core24-sdk/current\\;/snap/kf6-core24-sdk/current/usr"
       - "-DCMAKE_PREFIX_PATH=$CRAFT_STAGE\\;/snap/kde-qt6-core24-sdk/current\\;/snap/kf6-core24-sdk/current/usr"
-    build-environment: &buildenvironment
-      - PATH: /snap/kde-qt6-core24-sdk/current/usr/bin${PATH:+:$PATH}
-      - PKG_CONFIG_PATH: /snap/kde-qt6-core24-sdk/current/usr/lib/${CRAFT_ARCH_TRIPLET_BUILD_FOR}/pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}
-      - XDG_DATA_DIRS: $CRAFT_STAGE/usr/share:/snap/kde-qt6-core24-sdk/current/usr/share:/usr/share${XDG_DATA_DIRS:+:$XDG_DATA_DIRS}
-      - XDG_CONFIG_HOME: $CRAFT_STAGE/etc/xdg:/snap/kde-qt6-core24-sdk/current/etc/xdg:/etc/xdg${XDG_CONFIG_HOME:+:$XDG_CONFIG_HOME}
-      - LD_LIBRARY_PATH: "/snap/kde-qt6-core24-sdk/current/usr/lib/${CRAFT_ARCH_TRIPLET_BUILD_FOR}:/snap/kde-qt6-core24-sdk/current/usr/lib/${CRAFT_ARCH_TRIPLET_BUILD_FOR}/libproxy:/snap/kde-qt6-core24-sdk/current/usr/lib:/snap/kf6-core24-sdk/current/usr/lib/${CRAFT_ARCH_TRIPLET_BUILD_FOR}:/snap/kf6-core24-sdk/current/usr/lib:$CRAFT_STAGE/usr/lib:$CRAFT_STAGE/lib/:$CRAFT_STAGE/usr/lib/${CRAFT_ARCH_TRIPLET_BUILD_FOR}${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
+    build-environment: &build-environment
+      - PKG_CONFIG_PATH: "$CRAFT_STAGE/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/pkgconfig:/snap/ffmpeg-2404-sdk/current/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/pkgconfig"
+      - LD_LIBRARY_PATH: "/snap/mesa-2404/current/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR:$CRAFT_STAGE/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR:/snap/ffmpeg-2404-sdk/current/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/*
       - -usr/include/*
@@ -135,7 +151,7 @@
       - kf6-core24
     override-prime: |
       set -eux
-      for snap in "core24" "kf6-core24"; do
+      for snap in "core24" "kf6-core24" "ffmpeg-2404"; do
           cd "/snap/$snap/current" && find . -type f,l -exec rm -rf "${CRAFT_PRIME}/{}" \;
       done
 
diff -ur '--exclude=po' tokodon-25.04.0/src/account/abstractaccount.h tokodon-25.04.2/src/account/abstractaccount.h
--- tokodon-25.04.0/src/account/abstractaccount.h	2025-04-10 05:11:52.000000000 +0200
+++ tokodon-25.04.2/src/account/abstractaccount.h	2025-06-03 05:21:40.000000000 +0200
@@ -301,12 +301,14 @@
      * @param parent The parent object that calls get() or the callback belongs to.
      * @param callback The callback that should be executed if the request is successful.
      * @param errorCallback The callback that should be executed if the request is not successful.
+     * @param fallible Whether the request is okay with failing. If true, also reported in the error log.
      */
     virtual void get(const QUrl &url,
                      bool authenticated,
                      QObject *parent,
                      std::function<void(QNetworkReply *)> callback,
-                     std::function<void(QNetworkReply *)> errorCallback = nullptr) = 0;
+                     std::function<void(QNetworkReply *)> errorCallback = nullptr,
+                     bool fallible = false) = 0;
 
     /**
      * @brief Make an HTTP POST request to the server.
diff -ur '--exclude=po' tokodon-25.04.0/src/account/account.cpp tokodon-25.04.2/src/account/account.cpp
--- tokodon-25.04.0/src/account/account.cpp	2025-04-10 05:11:52.000000000 +0200
+++ tokodon-25.04.2/src/account/account.cpp	2025-06-03 05:21:40.000000000 +0200
@@ -49,9 +49,11 @@
                   bool authenticated,
                   QObject *parent,
                   std::function<void(QNetworkReply *)> reply_cb,
-                  std::function<void(QNetworkReply *)> errorCallback)
+                  std::function<void(QNetworkReply *)> errorCallback,
+                  bool fallible)
 {
     QNetworkRequest request = makeRequest(url, authenticated);
+    request.setAttribute(QNetworkRequest::Attribute::User, fallible);
     qCDebug(TOKODON_HTTP) << "GET" << url;
 
     QNetworkReply *reply = m_qnam->get(request);
@@ -178,7 +180,9 @@
 {
     connect(reply, &QNetworkReply::finished, [reply, reply_cb, errorCallback]() {
         reply->deleteLater();
-        if (200 != reply->attribute(QNetworkRequest::HttpStatusCodeAttribute) && !reply->url().toString().contains("nodeinfo"_L1)) {
+        // these are usually (sometimes meant to be) fallible and end up spamming user logs with these errors
+        const auto fallible = reply->request().attribute(QNetworkRequest::Attribute::User).toBool();
+        if (200 != reply->attribute(QNetworkRequest::HttpStatusCodeAttribute) && !fallible) {
             NetworkController::instance().logError(reply->url().toString(), reply->errorString());
             if (errorCallback) {
                 errorCallback(reply);
@@ -318,17 +322,26 @@
             Q_EMIT authenticated(true, {});
 
 #ifdef HAVE_KUNIFIEDPUSH
+            // Query whether or not we have a valid push subscription from the server.
             get(
                 apiUrl(QStringLiteral("/api/v1/push/subscription")),
                 true,
                 this,
                 [this](QNetworkReply *reply) {
+                    // If the error code is success, then we *do* have a subscription.
                     m_hasPushSubscription = true;
 
                     const QJsonDocument doc = QJsonDocument::fromJson(reply->readAll());
 
+                    // Sometimes - for some reason - we get a successful HTTP code but it's actually an error. Skip!
+                    if (doc.object().contains("error"_L1)) {
+                        m_hasPushSubscription = false;
+                        return;
+                    }
+
                     if (!NetworkController::instance().endpoint.isEmpty() && doc["endpoint"_L1] != NetworkController::instance().endpoint) {
-                        qWarning(TOKODON_LOG) << "KUnifiedPush endpoint has changed to" << NetworkController::instance().endpoint << ", resubscribing!";
+                        qWarning(TOKODON_LOG) << "KUnifiedPush endpoint is now" << NetworkController::instance().endpoint << "and the old one was"
+                                              << doc["endpoint"_L1] << "resubscribing!";
 
                         deleteResource(apiUrl(QStringLiteral("/api/v1/push/subscription")), true, this, [this](QNetworkReply *reply) {
                             Q_UNUSED(reply)
@@ -341,9 +354,11 @@
                 },
                 [this](QNetworkReply *reply) {
                     Q_UNUSED(reply);
+                    // Otherwise, no subscription.
                     m_hasPushSubscription = false;
-                    updatePushNotifications();
-                });
+                },
+                true // otherwise it tends to spam your error log
+            );
 #endif
         },
         [this](QNetworkReply *reply) {
@@ -536,7 +551,6 @@
     addQuery(QStringLiteral("update"), cfg->notifyUpdate());
     addQuery(QStringLiteral("admin.sign_up"), cfg->notifySignup());
     addQuery(QStringLiteral("admin.report"), cfg->notifyReport());
-    addQuery(QStringLiteral("annual_report"), cfg->notifyAnnualReport());
 
     return formdata;
 }
diff -ur '--exclude=po' tokodon-25.04.0/src/account/account.h tokodon-25.04.2/src/account/account.h
--- tokodon-25.04.0/src/account/account.h	2025-04-10 05:11:52.000000000 +0200
+++ tokodon-25.04.2/src/account/account.h	2025-06-03 05:21:40.000000000 +0200
@@ -25,7 +25,8 @@
              bool authenticated,
              QObject *parent,
              std::function<void(QNetworkReply *)> callback,
-             std::function<void(QNetworkReply *)> errorCallback = nullptr) override;
+             std::function<void(QNetworkReply *)> errorCallback = nullptr,
+             bool fallible = false) override;
     void post(const QUrl &url,
               const QJsonDocument &doc,
               bool authenticated,
diff -ur '--exclude=po' tokodon-25.04.0/src/autotests/mockaccount.cpp tokodon-25.04.2/src/autotests/mockaccount.cpp
--- tokodon-25.04.0/src/autotests/mockaccount.cpp	2025-04-10 05:11:52.000000000 +0200
+++ tokodon-25.04.2/src/autotests/mockaccount.cpp	2025-06-03 05:21:40.000000000 +0200
@@ -34,11 +34,13 @@
                       bool authenticated,
                       QObject *parent,
                       std::function<void(QNetworkReply *)> callback,
-                      std::function<void(QNetworkReply *)> errorCallback)
+                      std::function<void(QNetworkReply *)> errorCallback,
+                      bool fallible)
 {
     Q_UNUSED(authenticated)
     Q_UNUSED(parent)
     Q_UNUSED(errorCallback)
+    Q_UNUSED(fallible)
 
     if (m_getReplies.contains(url)) {
         auto reply = m_getReplies[url];
diff -ur '--exclude=po' tokodon-25.04.0/src/autotests/mockaccount.h tokodon-25.04.2/src/autotests/mockaccount.h
--- tokodon-25.04.0/src/autotests/mockaccount.h	2025-04-10 05:11:52.000000000 +0200
+++ tokodon-25.04.2/src/autotests/mockaccount.h	2025-06-03 05:21:40.000000000 +0200
@@ -16,7 +16,8 @@
              bool authenticated,
              QObject *parent,
              std::function<void(QNetworkReply *)> callback,
-             std::function<void(QNetworkReply *)> errorCallback = nullptr) override;
+             std::function<void(QNetworkReply *)> errorCallback = nullptr,
+             bool fallible = false) override;
 
     void post(const QUrl &url,
               const QJsonDocument &doc,
diff -ur '--exclude=po' tokodon-25.04.0/src/content/ui/Components/TimelineView.qml tokodon-25.04.2/src/content/ui/Components/TimelineView.qml
--- tokodon-25.04.0/src/content/ui/Components/TimelineView.qml	2025-04-10 05:11:52.000000000 +0200
+++ tokodon-25.04.2/src/content/ui/Components/TimelineView.qml	2025-06-03 05:21:40.000000000 +0200
@@ -30,6 +30,9 @@
         if (event.key === Qt.Key_PageUp && !root.atYBeginning) {
             event.accepted = true;
             root.contentY -= height;
+            if (root.contentY < 0) {
+                root.contentY = 0;
+            }
         } else if (event.key === Qt.Key_PageDown && !root.atYEnd) {
             event.accepted = true;
             root.contentY += height;
diff -ur '--exclude=po' tokodon-25.04.0/src/content/ui/ModerationTools/AccountToolPage.qml tokodon-25.04.2/src/content/ui/ModerationTools/AccountToolPage.qml
--- tokodon-25.04.0/src/content/ui/ModerationTools/AccountToolPage.qml	2025-04-10 05:11:52.000000000 +0200
+++ tokodon-25.04.2/src/content/ui/ModerationTools/AccountToolPage.qml	2025-06-03 05:21:40.000000000 +0200
@@ -233,7 +233,7 @@
             implicitWidth: ListView.view.width
             Layout.fillWidth: true
 
-            onClicked: applicationWindow().pageStack.layers.push(Qt.createComponent("org.kde.tokodon", "MainAccountToolPage"), {
+            onClicked: root.QQC2.ApplicationWindow.window.pageStack.layers.push(Qt.createComponent("org.kde.tokodon", "MainAccountToolPage"), {
                 identity: delegate.identity,
                 index: delegate.index,
                 model: accountView.model
diff -ur '--exclude=po' tokodon-25.04.0/src/content/ui/ModerationTools/FederationToolPage.qml tokodon-25.04.2/src/content/ui/ModerationTools/FederationToolPage.qml
--- tokodon-25.04.0/src/content/ui/ModerationTools/FederationToolPage.qml	2025-04-10 05:11:52.000000000 +0200
+++ tokodon-25.04.2/src/content/ui/ModerationTools/FederationToolPage.qml	2025-06-03 05:21:40.000000000 +0200
@@ -258,7 +258,7 @@
             width: ListView.view.width
 
             onClicked: if (root.isDomainBlock) {
-               applicationWindow().pageStack.layers.push(Qt.createComponent("org.kde.tokodon", "MainFederationToolPage"), {
+               root.QQC2.ApplicationWindow.window.pageStack.layers.push(Qt.createComponent("org.kde.tokodon", "MainFederationToolPage"), {
                     index: delegate.index,
                     model: federationView.model,
                     id: delegate.id,
diff -ur '--exclude=po' tokodon-25.04.0/src/content/ui/ModerationTools/IpRulePage.qml tokodon-25.04.2/src/content/ui/ModerationTools/IpRulePage.qml
--- tokodon-25.04.0/src/content/ui/ModerationTools/IpRulePage.qml	2025-04-10 05:11:52.000000000 +0200
+++ tokodon-25.04.2/src/content/ui/ModerationTools/IpRulePage.qml	2025-06-03 05:21:40.000000000 +0200
@@ -163,7 +163,7 @@
 
             width: ListView.view.width
 
-            onClicked: applicationWindow().pageStack.layers.push(Qt.createComponent("org.kde.tokodon", "MainIpRulePage"),
+            onClicked: root.QQC2.ApplicationWindow.window.pageStack.layers.push(Qt.createComponent("org.kde.tokodon", "MainIpRulePage"),
                     {
                         index: delegate.index,
                         model: ipRuleView.model,
diff -ur '--exclude=po' tokodon-25.04.0/src/content/ui/Settings/NotificationsPage.qml tokodon-25.04.2/src/content/ui/Settings/NotificationsPage.qml
--- tokodon-25.04.0/src/content/ui/Settings/NotificationsPage.qml	2025-04-10 05:11:52.000000000 +0200
+++ tokodon-25.04.2/src/content/ui/Settings/NotificationsPage.qml	2025-06-03 05:21:40.000000000 +0200
@@ -41,6 +41,7 @@
             onToggled: {
                 root.config.enableNotifications = checked;
                 root.saveConfig();
+                root.account.updatePushNotifications();
             }
         }
     }
diff -ur '--exclude=po' tokodon-25.04.0/src/tokodon.notifyrc tokodon-25.04.2/src/tokodon.notifyrc
--- tokodon-25.04.0/src/tokodon.notifyrc	2025-04-10 05:11:52.000000000 +0200
+++ tokodon-25.04.2/src/tokodon.notifyrc	2025-06-03 05:21:40.000000000 +0200
@@ -649,11 +649,13 @@
 Name[fr]=Rapport annuel
 Name[gl]=Informe anual
 Name[he]=דוח שנתי
+Name[hu]=Éves jelentés
 Name[it]=Resoconto annuale
 Name[ka]=წლიური ანგარიში
 Name[ko]=연간 보고
 Name[lv]=Ikgadējais ziņojums
 Name[nl]=Jaarlijks rapport
+Name[nn]=Årsrapport
 Name[pl]=Roczne sprawozdanie
 Name[ru]=Годовой отчёт
 Name[sa]=वार्षिक प्रतिवेदन
@@ -675,20 +677,23 @@
 Comment[fr]=Dévoilez les moments forts et mémorables de l'année dans le Fediverse !
 Comment[gl]=Revele o salientábel e memorábel do seu último ano no Fediverso!
 Comment[he]=חשיפת הרגעים הבלתי נשכחים מהשנה שחלפה בפדיברס!
+Comment[hu]=Mutassa be az év fénypontjait és emlékezetes pillanatait a Fediverse-en!
 Comment[it]=Scopri i momenti più belli e memorabili del tuo anno sul Fediverso!
 Comment[ka]=გამოაქვეყნეთ თქვენი წლის მაჩვენებლები და დასამახსოვრებელი მომენტები Fediverse-ზე!
 Comment[ko]=연합우주에서의 올해의 하이라이트와 기억에 남는 순간을 발견하세요!
 Comment[lv]=Apskati savus gada Fediversa spilgtākos un atmiņā paliekošākos brīžus!
 Comment[nl]=Onthul de hoogtepunten en memorabele momenten van uw jaar op Fediverse!
+Comment[nn]=Vis årets høgdepunkt og minneverdige augneblink på Allheimen!
 Comment[pl]=Udostępnij swoje wyróżnione wydarzenia i pamiętne chwile na Fediverse!
 Comment[ru]=Ваши самые яркие события и незабываемые моменты в Fediverse за год
 Comment[sa]=Fediverse इत्यत्र स्वस्य वर्षस्य मुख्यविषयाणां स्मरणीयक्षणानाञ्च अनावरणं कुर्वन्तु!
 Comment[sl]=Razkrijte vrhunce svojega leta in nepozabne trenutke na Fediverse!
-Comment[sq]=Zbuloni gjërat në pah dhe çastet e paharrueshme të vitit në Fedivers!
+Comment[sq]=Zbuloni kulmet tuaja për vitin dhe çaste të paharrueshme në Fedivers!
 Comment[sv]=Avslöja årets höjdpunkter och minnesvärda ögonblick på Fediverse.
 Comment[tr]=Mastodon’da geçtiğimiz yılın önemli noktalarını ve unutulmaz anlarını ortaya çıkarın!
 Comment[uk]=Ознайомтеся із акцентами року та незабутніми моментами у Fediverse!
 Comment[x-test]=xxUnveil your year's highlights and memorable moments on the Fediverse!xx
+Comment[zh_TW]=發現您今年在聯邦宇宙上的精選與回憶時光吧!
 Action=Popup
 
 [Event/other]
@@ -704,16 +709,18 @@
 Name[fr]=Autre
 Name[gl]=Outras
 Name[he]=אחר
+Name[hu]=Egyéb
 Name[it]=Altro
 Name[ka]=სხვა
 Name[ko]=기타
 Name[lv]=Citi
 Name[nl]=Overige
+Name[nn]=Andre
 Name[pl]=Inne
 Name[ru]=Прочее
 Name[sa]=अन्ये
 Name[sl]=Druge
-Name[sq]=Të tjera
+Name[sq]=Tjetër
 Name[sv]=Övriga
 Name[tr]=Diğer
 Name[uk]=Інше
@@ -730,11 +737,13 @@
 Comment[fr]=Notifications ne correspondant à aucune autre catégorie
 Comment[gl]=Notificacións que non casan noutras categorías.
 Comment[he]=התראות שלא מתאימות לקטגוריות אחרות
+Comment[hu]=Más kategóriákba nem illő értesítések
 Comment[it]=Notifiche che non rientrano in altre categorie
 Comment[ka]=შეტყობინებები, რომლებიც არ ჯდება სხვა კატეგორიებში
 Comment[ko]=다른 모든 분류에 포함되지 않는 알림
 Comment[lv]=Paziņojumi, kas neietilpst citā kategorijās.
 Comment[nl]=Meldingen die niet passen in andere categorieën
+Comment[nn]=Varslingar som ikkje passar i andre kategoriar
 Comment[pl]=Powiadomienia, które nie pasują do żadnej z pozostałych kategorii
 Comment[ru]=Уведомления, которые не попадают в другие категории
 Comment[sa]=अन्येषु वर्गेषु न उपयुज्यन्ते ये सूचनाः

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

--- End Message ---

Reply to: