From: Aurélien COUDERC Date: Thu, 24 Jul 2025 16:34:20 +0000 (+0200) Subject: Import tokodon_25.04.3-1.debian.tar.xz X-Git-Tag: archive/raspbian/25.04.3-1+rpi1^2~10^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=64a86bddca470715cf7d7a6e3aaedd00a45c75ab;p=tokodon.git Import tokodon_25.04.3-1.debian.tar.xz [dgit import tarball tokodon 25.04.3-1 tokodon_25.04.3-1.debian.tar.xz] --- 64a86bddca470715cf7d7a6e3aaedd00a45c75ab diff --git a/changelog b/changelog new file mode 100644 index 0000000..781e0d2 --- /dev/null +++ b/changelog @@ -0,0 +1,121 @@ +tokodon (25.04.3-1) unstable; urgency=medium + + [ Aurélien COUDERC ] + * New upstream release (25.04.3). + - Backport upstream commit: + - Fix a crash when trying to block an account through the post menu. + [128cdaa7] + - Add missing mute/block management on the safety page. [4f09a6e8, + 5587bbb9] (kde#506374) + - Fix broken audio in video attachments playback. [fc886374] + (kde#505303) + - Fix crash when trying to save less than the max number of fields. + [9eb657e1] + - Add missing toggle for search indexing in account settings. [b319e681] + - Make sure that toggling account options affects the correct account. + [4643870b] + - Fix possible erroneous trailing space in OAuth scope parameter. + [df89658d] + * Revert upstream commit 357ef28c which silently requires kirigami + addons 1.9+ and breaks the account page. + + -- Aurélien COUDERC Thu, 24 Jul 2025 18:34:20 +0200 + +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 Mon, 09 Jun 2025 23:37:39 +0200 + +tokodon (25.04.0-1) unstable; urgency=medium + + [ Aurélien COUDERC ] + * New upstream release (25.04.0). + * Update build-deps and deps with the info from cmake. + * Refresh copyright information. + * Bump Standards-Version to 4.7.2, no change required. + + -- Aurélien COUDERC Thu, 17 Apr 2025 22:24:22 +0200 + +tokodon (24.12.0-2) unstable; urgency=medium + + [ Aurélien COUDERC ] + * Limit qt6-webview-dev build dependency to amd64 arm64 armhf and i386 + where it’s available, make QtWebView optional for dh_qmldepends. + + -- Aurélien COUDERC Thu, 23 Jan 2025 14:31:50 +0100 + +tokodon (24.12.0-1) unstable; urgency=medium + + [ Aurélien COUDERC ] + * New upstream release (24.12.0). + * Update build-deps and deps with the info from cmake. + * Refresh copyright information. + * Release to unstable. + + -- Aurélien COUDERC Sat, 21 Dec 2024 17:00:58 +0100 + +tokodon (24.08.2-1) experimental; urgency=medium + + [ Scarlett Moore ] + * Add myself to uploaders. + + [ Aurélien COUDERC ] + * New upstream release (24.08.2). + * Update build-deps and deps with the info from cmake. + * Switch to kf6 debhelper build sequence. + * Replace manual QML runtime dependencies management with dh-sequence- + qmldeps. + * Review copyright information. + * Bump Standards-Version to 4.7.0, no change required. + * Update project homepage. + * Add myself to the uploaders. + * Drop obsolete lintian overrides. + + -- Aurélien COUDERC Fri, 25 Oct 2024 00:46:28 +0200 + +tokodon (23.04.2-2) unstable; urgency=medium + + [ Patrick Franz ] + * Switch kirigami-addons-dev B-D to kirigami-addons5-dev. + + -- Patrick Franz Fri, 23 Aug 2024 17:55:48 +0200 + +tokodon (23.04.2-1) unstable; urgency=medium + + * New upstream release. + * tokodon is now part of the KDE release service, so: + - switch watch file to release-service locations + - import release-service GPG signing key + * Set Maintainer to the canonical form. + * Update Vcs-* fields. + * Update the build dependencies according to the upstream build system: + - bump kirigami-addons-dev to 0.7.2 + - add libkf5configwidgets-dev + * Bump the kirigami-addons packages dependencies to 0.7.2. + * Update copyright. + + -- Pino Toscano Wed, 21 Jun 2023 07:32:08 +0200 + +tokodon (23.02.0-2) unstable; urgency=medium + + * Add lintian overrides for copyright/license files to not list in + debian/copyright. + + -- Pino Toscano Thu, 15 Jun 2023 21:51:04 +0200 + +tokodon (23.02.0-1) unstable; urgency=medium + + * Initial release. + + -- Pino Toscano Wed, 01 Mar 2023 09:04:53 +0100 diff --git a/control b/control new file mode 100644 index 0000000..be3f349 --- /dev/null +++ b/control @@ -0,0 +1,60 @@ +Source: tokodon +Section: net +Priority: optional +Maintainer: Debian Qt/KDE Maintainers +Uploaders: Aurélien COUDERC , + Pino Toscano , + Scarlett Moore , +Build-Depends: debhelper-compat (= 13), + dh-sequence-kf6, + dh-sequence-qmldeps, + cmake (>= 3.16~), + extra-cmake-modules (>= 6.11.0~), + gettext, + kirigami-addons-dev (>= 1.1.0~), + libkf6colorscheme-dev (>= 6.11.0~), + libkf6config-dev (>= 6.11.0~), + libkf6coreaddons-dev (>= 6.11.0~), + libkf6crash-dev (>= 6.11.0~), + libkf6dbusaddons-dev (>= 6.11.0~), + libkf6i18n-dev (>= 6.11.0~), + libkf6iconthemes-dev (>= 6.11.0~), + libkf6kio-dev (>= 6.11.0~), + libkf6notifications-dev (>= 6.11.0~), + libkf6purpose-dev (>= 6.11.0~), + libkf6qqc2desktopstyle-dev, + libkf6windowsystem-dev (>= 6.11.0~), + libkirigami-dev (>= 6.11.0~), + libmpvqt-dev, + libqqc2breezestyle-dev (>= 6.0.0~), + libssl-dev, + qml6-module-org-kde-kquickcontrolsaddons, + qml6-module-org-kde-notifications, + qml6-module-org-kde-purpose, + qml6-module-qtcore, + qml6-module-qtquick-dialogs, + qml6-module-qtquick-effects, + qt6-base-dev (>= 6.8.0~), + qt6-declarative-dev (>= 6.8.0~), + qt6-declarative-private-dev, + qt6-multimedia-dev (>= 6.8.0~), + qt6-svg-dev (>= 6.8.0~), + qt6-websockets-dev (>= 6.8.0~), + qt6-webview-dev (>= 6.6~) [amd64 arm64 armhf i386], + qtkeychain-qt6-dev, + xauth , + xvfb , +Standards-Version: 4.7.2 +Homepage: https://apps.kde.org/tokodon +Vcs-Browser: https://salsa.debian.org/qt-kde-team/kde/tokodon +Vcs-Git: https://salsa.debian.org/qt-kde-team/kde/tokodon.git +Rules-Requires-Root: no + +Package: tokodon +Architecture: any +Depends: ${misc:Depends}, ${qml6:Depends}, ${shlibs:Depends}, +Description: modern Mastodon client + Tokodon is a modern client for Mastodon, Pleroma, and Nextcloud Social, built + using the Kirigami technology. + . + Tokodon allows you to interact with the Fediverse community. diff --git a/copyright b/copyright new file mode 100644 index 0000000..b00c486 --- /dev/null +++ b/copyright @@ -0,0 +1,1793 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: tokodon +Source: https://invent.kde.org/network/tokodon/ + +Files: * +Copyright: 2024, Arran Ubels + 2021-2023, Carl Schwan + 2021, Carl Schwan + 2023-2024, Joshua Goins + 2022-2025, Joshua Goins + 2017, Konstantinos Sideris + 2023, Rishi Kumar + 2023, Shubham Arora +License: GPL-3.0-or-later + +Files: po/* +Copyright: 2023-2024, A S Alam + 2023-2024, Adrián Chaves (Gallaecio) + 2023-2024, Alexander Yavorsky + 2023, Antoni Bella Pérez + 2021-2024, Eloy Cuadra + 2022-2024, Emir SARI + 2023, Enol P. + 2022-2024, Frank Steinmetzger + 2021-2024, Freek de Kruijf + 2023-2024, giovanni + 2003-2024, Iñigo Salvador Azurmendi + 2021-2024, Josep M. Ferrer + 2024, Jure Repinc + 2023-2024, KDE euskaratzeko proiektuko arduraduna + 2024, Kimmo Kujansuu + 2023-2024, Kisaragi Hiu + 2022-2024, Kristof Kiszel + 2023, Marcin Mikołajczak + 2021-2024, Matjaž Jeran + 2024, Olesya Gerasimenko + 2021-2024, Shinjo Park + 2021-2024, Stefan Asserhäll + 2021-2024, Steve Allewell + 2021-2024, Tommi Nieminen + 2023-2024, Toms TrasÅ«ns + 2021-2024, Vincenzo Reale + 2021-2024, Vit Pelcak + 2021-2024, Xavier Besnard + 2024, Yaron Shahrabani + 2024, Zayed Al-Saidi + 2021-2024, Łukasz Wojniłowicz +License: GPL-3.0-or-later + +Files: CMakeLists.txt + src/autotests/CMakeLists.txt + src/CMakeLists.txt + src/purpose/CMakeLists.txt + tools/update-emojis.py +Copyright: 2021, Carl Schwan + 2022, Gary Wang + 2023, Joshua Goins + 2022, Tobias Fella +License: BSD-2-Clause + +Files: android/build.gradle + android/version.gradle.in + CMakePresets.json + src/autotests/appiumtests/CMakeLists.txt + src/autotests/appiumtests/SearchboxTest.py + src/autotests/appiumtests/TimelineTest.py +Copyright: 2020, Gabriel Souza Franco + 2022-2023, Harald Sitter + 2021-2022, Laurent Montel + 2019, Nicolas Fella + 2023, Rishi Kumar + 2018-2021, Volker Krause +License: BSD-3-Clause + +Files: android/AndroidManifest.xml + .clang-tidy + .craft.ini + .gitignore + .gitlab-ci.yml + .kde-ci.yml + org.kde.tokodon.appdata.xml + org.kde.tokodon.desktop + snapcraft.yaml + src/accountconfig.kcfg + src/config.kcfg + src/Messages.sh + src/notifyrc.qrc + src/org.kde.tokodon.service.in +Copyright: Carl Schwan + 2020-2021, Carl Schwan + 2020, Gabriel Souza Franco + 2023, Joshua Goins + 2019, Nicolas Fella + None + none + 2024, Scarlett Moore + 2020, Tobias Fella + 2018-2020, Volker Krause +License: CC0-1.0 + +Files: android/src/OpenUriActivity.java + android/src/TokodonService.java + src/account/relationship.cpp + src/account/relationship.h + src/admin/accounttoolmodel.cpp + src/admin/accounttoolmodel.h + src/admin/adminaccountinfo.h + src/admin/emailblocktoolmodel.cpp + src/admin/emailblocktoolmodel.h + src/admin/emailinfo.cpp + src/admin/emailinfo.h + src/admin/federationinfo.cpp + src/admin/federationinfo.h + src/admin/federationtoolmodel.cpp + src/admin/federationtoolmodel.h + src/admin/ipinfo.cpp + src/admin/ipinfo.h + src/admin/iprulestoolmodel.cpp + src/admin/iprulestoolmodel.h + src/admin/reportinfo.cpp + src/admin/reportinfo.h + src/admin/reporttoolmodel.cpp + src/admin/reporttoolmodel.h + src/autotests/emailblocktooltest.cpp + src/autotests/federationtooltest.cpp + src/autotests/iprulestooltest.cpp + src/content/ui/AccountHeader.qml + src/content/ui/AccountInfo.qml + src/content/ui/Components/PopupShadow.qml + src/content/ui/Components/QrCodeMaximizeComponent.qml + src/content/ui/Debug/DebugPage.qml + src/content/ui/EditListPage.qml + src/content/ui/InitialSetup/SetupNotifications.qml + src/content/ui/InitialSetup/SetupPassword.qml + src/content/ui/InitialSetup/SetupWelcome.qml + src/content/ui/LanguageSelector.qml + src/content/ui/ListsPage.qml + src/content/ui/LoginFlow/BaseAuthorization.qml + src/content/ui/LoginFlow/BrowserAuthorization.qml + src/content/ui/LoginFlow/CodeAuthorization.qml + src/content/ui/LoginFlow/LoginIssuePage.qml + src/content/ui/LoginFlow/LoginPage.qml + src/content/ui/LoginFlow/RegistrationPage.qml + src/content/ui/LoginFlow/RulesPage.qml + src/content/ui/LoginFlow/WebViewAuthorization.qml + src/content/ui/LoginFlow/WelcomePage.qml + src/content/ui/MastoPage.qml + src/content/ui/ModerationTools/AccountToolPage.qml + src/content/ui/ModerationTools/EmailBlockToolPage.qml + src/content/ui/ModerationTools/FederationToolPage.qml + src/content/ui/ModerationTools/IpRulePage.qml + src/content/ui/ModerationTools/MainAccountToolPage.qml + src/content/ui/ModerationTools/MainFederationToolPage.qml + src/content/ui/ModerationTools/MainIpRulePage.qml + src/content/ui/ModerationTools/MainReportToolPage.qml + src/content/ui/ModerationTools/ModerationToolsView.qml + src/content/ui/ModerationTools/ReportToolPage.qml + src/content/ui/Notifications/GroupInteractionLabel.qml + src/content/ui/Notifications/UserInteractionLabel.qml + src/content/ui/PostDelegate/PostInteractionLabel.qml + src/content/ui/ReportDialog.qml + src/content/ui/SearchField.qml + src/content/ui/Settings/EditFilterPage.qml + src/content/ui/Settings/ErrorLogPage.qml + src/content/ui/Settings/NetworkProxyPage.qml + src/content/ui/Settings/TokodonConfigurationView.qml + src/content/ui/SocialGraphPage.qml + src/content/ui/StandaloneComposer.qml + src/content/ui/StatusComposer/StatusComposer.qml + src/content/ui/TimelinePage.qml + src/main.cpp + src/network/networkcontroller.cpp + src/network/networkcontroller.h + src/timeline/tag.cpp + src/timeline/tag.h + src/timeline/tagsmodel.cpp + src/timeline/tagsmodel.h + src/utils/androidutils.cpp + src/utils/androidutils.h + src/utils/ecdh.cpp + src/utils/ecdh.h + src/utils/initialsetupflow.cpp + src/utils/initialsetupflow.h + src/utils/limitermodel.cpp + src/utils/limitermodel.h +Copyright: 2021-2023, Carl Schwan + 2023, Carl Schwan + 2022, Gary Wang + 2022, Jeremy Winter + 2021, Jonah Brüchert + 2022-2025, Joshua Goins + 2023, Joshua goins + 2023, Mathis Brüchert + 2023, Rishi Kumar + 2023, Shubham Arora + 2023, Shubham Arora +License: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + +Files: src/autotests/mockaccount.cpp + src/content/ui/Components/Emoji/EmojiDelegate.qml + src/content/ui/Components/Emoji/EmojiGrid.qml + src/content/ui/Components/Emoji/EmojiPicker.qml + src/content/ui/Components/Emoji/EmojiTonesPicker.qml + src/content/ui/PrivacyPolicyPage.qml + src/content/ui/ServerInformationPage.qml + src/content/ui/Settings/AccountsPage.qml + src/content/ui/Settings/BlockedDomainsPage.qml + src/content/ui/Settings/FiltersPage.qml + src/content/ui/UserInfo.qml + src/tokodonapplication.h + src/tokodon.notifyrc + src/utils/messagefiltercontainer.cpp + src/utils/messagefiltercontainer.h +Copyright: 2021-2024, Carl Schwan + 2019, Harald Sitter + 2024-2025, Joshua Goins + 2022, Tobias Fella + 2020-2022, Tobias Fella + 2022, Tobias Fella +License: GPL-2.0-or-later + +Files: src/account/abstractaccount.cpp + src/account/account.cpp + src/account/account.h + src/account/accountmanager.cpp + src/account/accountmanager.h + src/account/featuredtagsmodel.cpp + src/account/featuredtagsmodel.h + src/content/ui/AnnouncementsPage.qml + src/content/ui/Components/Sidebar.qml + src/content/ui/FollowingPage.qml + src/content/ui/FullScreenImage.qml + src/content/ui/Main.qml + src/editor/attachmenteditormodel.cpp + src/editor/attachmenteditormodel.h + src/notification/notificationmodel.h + src/timeline/abstractlistmodel.cpp + src/timeline/abstractlistmodel.h + src/timeline/accountmediatimelinemodel.cpp + src/timeline/accountmediatimelinemodel.h + src/timeline/accountmodel.cpp + src/timeline/accountmodel.h + src/timeline/attachment.cpp + src/timeline/attachment.h + src/timeline/notification.cpp + src/timeline/notification.h + src/timeline/post.cpp + src/timeline/post.h + src/timeline/threadmodel.cpp + src/timeline/threadmodel.h + src/timeline/timelinemodel.cpp + src/timeline/timelinemodel.h + src/utils/emojimodel.h +Copyright: 2018-2019, Black Hat + 2021, Carl Schwan + 2021, Carl Schwan + 2020, Devin Lin + 2020, Han Young + 2023-2024, Joshua Goins + 2021, kaniini + 2023, Shubham Arora +License: GPL-3.0-only + +Files: fastlane/metadata/org.kde.tokodon/en-US/images/featureGraphic.svg + src/autotests/conversationmodeltest.cpp + src/autotests/helperreply.h + src/content/ui/Components/ClickableIdentityInfo.qml + src/content/ui/Components/FocusedImage.qml + src/content/ui/Components/InlineIdentityInfo.qml + src/content/ui/ListTimelinePage.qml + src/content/ui/PostDelegate/LinkPreview.qml + src/content/ui/PostDelegate/PostPoll.qml + src/content/ui/PostDelegate/QuotePost.qml + src/content/ui/ReadMarker.qml + src/content/ui/StatusComposer/AttachmentInfoDialog.qml + src/content/ui/StatusComposer/ComposerPoll.qml + src/content/ui/StatusComposer/EditorAttachmentGrid.qml + src/content/ui/StatusComposer/ScheduledPostsPage.qml + src/content/ui/ThreadPage.qml + src/conversation/conversationmodel.cpp + src/conversation/conversationmodel.h + src/network/networkaccessmanagerfactory.cpp + src/network/networkaccessmanagerfactory.h + src/search/searchmodel.cpp + src/search/searchmodel.h + src/timeline/maintimelinemodel.cpp + src/timeline/maintimelinemodel.h + src/timeline/poll.cpp + src/timeline/poll.h + src/utils/emojis.h + src/utils/emojitones.cpp + src/utils/emojitones_data.h + src/utils/emojitones.h + src/utils/filehelper.cpp + src/utils/filehelper.h + src/utils/filetransferjob.cpp + src/utils/filetransferjob.h + src/utils/navigation.cpp + src/utils/navigation.h + src/utils/texthandler.cpp + src/utils/texthandler.h +Copyright: Alois Spitzbart + 2021-2023, Carl Schwan + 2022, Carl Schwan + 2023, Janet Black + 2023-2024, Joshua Goins + None + 2022, Volker Krause +License: LGPL-2.0-or-later + +Files: src/content/ui/Android/ShareAction.qml + src/content/ui/ShareAction.qml + src/content/ui/ShareDialog.qml + src/notification/notificationgroupingmodel.cpp + src/notification/notificationgroupingmodel.h +Copyright: 2017, Atul Sharma + 2021, Carl Schwan + 2016, Eike Hein + 2023, Joshua Goins + 2018-2019, Kai Uwe Broulik +License: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL + +Files: po/ca/tokodon.po + po/ca@valencia/tokodon.po +Copyright: 2021-2023, Josep M. Ferrer +License: LGPL-2.1-only or LGPL-3.0-only or LicenseRef-KDE-Accepted-LGPL + +Files: src/account/annualreport.cpp + src/account/annualreport.h + src/account/notificationfilteringpolicy.cpp + src/account/notificationfilteringpolicy.h + src/account/preferences.cpp + src/account/preferences.h + src/account/privacypolicy.cpp + src/account/privacypolicy.h + src/account/profileeditor.cpp + src/account/profileeditor.h + src/account/scheduledstatusesmodel.cpp + src/account/scheduledstatusesmodel.h + src/account/suggestionsmodel.cpp + src/account/suggestionsmodel.h + src/autotests/posteditortest.cpp + src/autotests/profileeditortest.cpp + src/content/ui/ConversationDelegate.qml + src/content/ui/ConversationPage.qml + src/content/ui/Notifications/AnnualReportDelegate.qml + src/content/ui/Settings/AccountPage.qml + src/content/ui/Settings/AppearancePage.qml + src/content/ui/Settings/EditProfilePage.qml + src/content/ui/Settings/NotificationsPage.qml + src/content/ui/Settings/ProfileEditor.qml + src/content/ui/Settings/SafetyPage.qml + src/content/ui/StatusComposer/EmojiDialog.qml + src/editor/filtereditorbackend.cpp + src/editor/filtereditorbackend.h + src/editor/listeditorbackend.cpp + src/editor/listeditorbackend.h + src/editor/polleditorbackend.cpp + src/editor/polleditorbackend.h + src/editor/posteditorbackend.cpp + src/editor/posteditorbackend.h + src/editor/reporteditorbackend.cpp + src/editor/reporteditorbackend.h + src/network/networkrequestprogress.cpp + src/network/networkrequestprogress.h + src/purpose/purposeplugin.cpp + src/timeline/tagstimelinemodel.cpp + src/timeline/tagstimelinemodel.h + src/timeline/trendingnewsmodel.cpp + src/timeline/trendingnewsmodel.h + src/tokodonapplication.cpp + src/utils/colorschemer.cpp + src/utils/colorschemer.h +Copyright: 2020-2024, Carl Schwan + 2021-2023, Carl Schwan + 2023-2025, Joshua Goins +License: LGPL-2.1-or-later + +Files: src/autotests/blurhashtest.cpp + src/utils/blurhash.cpp + src/utils/blurhash.h + src/utils/blurhashimageprovider.cpp + src/utils/blurhashimageprovider.h +Copyright: 2024, Joshua Goins +License: MIT + +Files: README.md + src/autotests/data/* +Copyright: Carl Schwan +License: CC0-1.0 +Comment: Copied from .reuse/dep5 + +Files: CONTRIBUTING.md + src/purpose/purposeplugin.json +Copyright: Joshua Goins +License: CC0-1.0 +Comment: Copied from .reuse/dep5 + +Files: org.kde.tokodon.svg + logo.png + android/res/drawable/tokodon.png +Copyright: Bugsbane +License: CC-BY-SA-4.0 +Comment: Copied from .reuse/dep5 + +Files: src/content/elephant.svg + src/content/mastodon-logo.svg +Copyright: Mastodon contributors +License: AGPL-3.0-or-later +Comment: Copied from .reuse/dep5 + +Files: .flatpak-manifest.json +Copyright: Nicolas Fella <> +License: GPL-3.0-or-later +Comment: Copied from .reuse/dep5 + +Files: android/ic_launcher-playstore.png + android/res/drawable/ic_launcher_background.xml + android/res/drawable/ic_launcher_foreground.xml + android/res/mipmap-anydpi-v26/ic_launcher.xml + android/res/mipmap-anydpi-v26/ic_launcher_round.xml + android/res/mipmap-hdpi/ic_launcher.png + android/res/mipmap-mdpi/ic_launcher.png + android/res/mipmap-xhdpi/ic_launcher.png + android/res/mipmap-xxhdpi/ic_launcher.png + android/res/mipmap-xxxhdpi/ic_launcher.png + fastlane/metadata/org.kde.tokodon/en-US/images/featureGraphic.png +Copyright: Alois Spitzbart +License: CC-BY-SA-4.0 +Comment: Copied from .reuse/dep5 + +Files: debian/* +Copyright: 2024, Debian Qt/KDE Maintainers + 2023, Pino Toscano +License: GPL-3.0-or-later + +License: AGPL-3.0-or-later + GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 + . + Copyright (C) 2007 Free Software Foundation, Inc. + . + Everyone is permitted to copy and distribute verbatim copies of this + license document, but changing it is not allowed. + . + Preamble + . + The GNU Affero General Public License is a free, copyleft license + for software and other kinds of works, specifically designed to + ensure cooperation with the community in the case of network server + software. + . + The licenses for most software and other practical works are + designed to take away your freedom to share and change the works. + By contrast, our General Public Licenses are intended to guarantee + your freedom to share and change all versions of a program--to make + sure it remains free software for all its users. + . + When we speak of free software, we are referring to freedom, not + price. Our General Public Licenses are designed to make sure that + you have the freedom to distribute copies of free software (and + charge for them if you wish), that you receive source code or can + get it if you want it, that you can change the software or use + pieces of it in new free programs, and that you know you can do + these things. + . + Developers that use our General Public Licenses protect your rights + with two steps: (1) assert copyright on the software, and (2) offer + you this License which gives you legal permission to copy, + distribute and/or modify the software. + . + A secondary benefit of defending all users' freedom is that + improvements made in alternate versions of the program, if they + receive widespread use, become available for other developers to + incorporate. Many developers of free software are heartened and + encouraged by the resulting cooperation. However, in the case of + software used on network servers, this result may fail to come + about. The GNU General Public License permits making a modified + version and letting the public access it on a server without ever + releasing its source code to the public. + . + The GNU Affero General Public License is designed specifically to + ensure that, in such cases, the modified source code becomes + available to the community. It requires the operator of a network + server to provide the source code of the modified version running + there to the users of that server. Therefore, public use of a + modified version, on a publicly accessible server, gives the public + access to the source code of the modified version. + . + An older license, called the Affero General Public License and + published by Affero, was designed to accomplish similar goals. This + is a different license, not a version of the Affero GPL, but Affero + has released a new version of the Affero GPL which permits + relicensing under this license. + . + The precise terms and conditions for copying, distribution and + modification follow. + . + TERMS AND CONDITIONS + . + 0. Definitions. + . + "This License" refers to version 3 of the GNU Affero General Public + License. + . + "Copyright" also means copyright-like laws that apply to other kinds + of works, such as semiconductor masks. + . + "The Program" refers to any copyrightable work licensed under this + License. Each licensee is addressed as "you". "Licensees" and + "recipients" may be individuals or organizations. + . + To "modify" a work means to copy from or adapt all or part of the + work in a fashion requiring copyright permission, other than the + making of an exact copy. The resulting work is called a "modified + version" of the earlier work or a work "based on" the earlier work. + . + A "covered work" means either the unmodified Program or a work based + on the Program. + . + To "propagate" a work means to do anything with it that, without + permission, would make you directly or secondarily liable for + infringement under applicable copyright law, except executing it on + a computer or modifying a private copy. Propagation includes + copying, distribution (with or without modification), making + available to the public, and in some countries other activities as + well. + . + To "convey" a work means any kind of propagation that enables other + parties to make or receive copies. Mere interaction with a user + through a computer network, with no transfer of a copy, is not + conveying. + . + An interactive user interface displays "Appropriate Legal Notices" + to the extent that it includes a convenient and prominently visible + feature that (1) displays an appropriate copyright notice, and (2) + tells the user that there is no warranty for the work (except to the + extent that warranties are provided), that licensees may convey the + work under this License, and how to view a copy of this License. If + the interface presents a list of user commands or options, such as a + menu, a prominent item in the list meets this criterion. + . + 1. Source Code. The "source code" for a work means the preferred + form of the work for making modifications to it. "Object code" + means any non-source form of a work. + . + A "Standard Interface" means an interface that either is an official + standard defined by a recognized standards body, or, in the case of + interfaces specified for a particular programming language, one that + is widely used among developers working in that language. + . + The "System Libraries" of an executable work include anything, other + than the work as a whole, that (a) is included in the normal form of + packaging a Major Component, but which is not part of that Major + Component, and (b) serves only to enable use of the work with that + Major Component, or to implement a Standard Interface for which an + implementation is available to the public in source code form. A + "Major Component", in this context, means a major essential + component (kernel, window system, and so on) of the specific + operating system (if any) on which the executable work runs, or a + compiler used to produce the work, or an object code interpreter + used to run it. + . + The "Corresponding Source" for a work in object code form means all + the source code needed to generate, install, and (for an executable + work) run the object code and to modify the work, including scripts + to control those activities. However, it does not include the + work's System Libraries, or general-purpose tools or generally + available free programs which are used unmodified in performing + those activities but which are not part of the work. For example, + Corresponding Source includes interface definition files associated + with source files for the work, and the source code for shared + libraries and dynamically linked subprograms that the work is + specifically designed to require, such as by intimate data + communication or control flow between those subprograms and other + parts of the work. + . + The Corresponding Source need not include anything that users can + regenerate automatically from other parts of the Corresponding + Source. + . + The Corresponding Source for a work in source code form is that same + work. + . + 2. Basic Permissions. All rights granted under this License are + granted for the term of copyright on the Program, and are + irrevocable provided the stated conditions are met. This License + explicitly affirms your unlimited permission to run the unmodified + Program. The output from running a covered work is covered by this + License only if the output, given its content, constitutes a covered + work. This License acknowledges your rights of fair use or other + equivalent, as provided by copyright law. + . + You may make, run and propagate covered works that you do not + convey, without conditions so long as your license otherwise remains + in force. You may convey covered works to others for the sole + purpose of having them make modifications exclusively for you, or + provide you with facilities for running those works, provided that + you comply with the terms of this License in conveying all material + for which you do not control copyright. Those thus making or + running the covered works for you must do so exclusively on your + behalf, under your direction and control, on terms that prohibit + them from making any copies of your copyrighted material outside + their relationship with you. + . + Conveying under any other circumstances is permitted solely under + the conditions stated below. Sublicensing is not allowed; section + 10 makes it unnecessary. + . + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No + covered work shall be deemed part of an effective technological + measure under any applicable law fulfilling obligations under + article 11 of the WIPO copyright treaty adopted on 20 December 1996, + or similar laws prohibiting or restricting circumvention of such + measures. + . + When you convey a covered work, you waive any legal power to forbid + circumvention of technological measures to the extent such + circumvention is effected by exercising rights under this License + with respect to the covered work, and you disclaim any intention to + limit operation or modification of the work as a means of enforcing, + against the work's users, your or third parties' legal rights to + forbid circumvention of technological measures. + . + 4. Conveying Verbatim Copies. You may convey verbatim copies of the + Program's source code as you receive it, in any medium, provided + that you conspicuously and appropriately publish on each copy an + appropriate copyright notice; keep intact all notices stating that + this License and any non-permissive terms added in accord with + section 7 apply to the code; keep intact all notices of the absence + of any warranty; and give all recipients a copy of this License + along with the Program. + . + You may charge any price or no price for each copy that you convey, + and you may offer support or warranty protection for a fee. + . + 5. Conveying Modified Source Versions. You may convey a work based + on the Program, or the modifications to produce it from the Program, + in the form of source code under the terms of section 4, provided + that you also meet all of these conditions: + . + a) The work must carry prominent notices stating that you + modified it, and giving a relevant date. + . + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under + section 7. This requirement modifies the requirement in section + 4 to "keep intact all notices". + . + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section + 7 additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + . + d) If the work has interactive user interfaces, each must + display Appropriate Legal Notices; however, if the Program has + interactive interfaces that do not display Appropriate Legal + Notices, your work need not make them do so. + . + A compilation of a covered work with other separate and independent + works, which are not by their nature extensions of the covered work, + and which are not combined with it such as to form a larger program, + in or on a volume of a storage or distribution medium, is called an + "aggregate" if the compilation and its resulting copyright are not + used to limit the access or legal rights of the compilation's users + beyond what the individual works permit. Inclusion of a covered + work in an aggregate does not cause this License to apply to the + other parts of the aggregate. + . + 6. Conveying Non-Source Forms. You may convey a covered work in + object code form under the terms of sections 4 and 5, provided that + you also convey the machine-readable Corresponding Source under the + terms of this License, in one of these ways: + . + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + . + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that + product model, to give anyone who possesses the object code + either (1) a copy of the Corresponding Source for all the + software in the product that is covered by this License, on a + durable physical medium customarily used for software + interchange, for a price no more than your reasonable cost of + physically performing this conveying of source, or (2) access to + copy the Corresponding Source from a network server at no + charge. + . + c) Convey individual copies of the object code with a copy of + the written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, + and only if you received the object code with such an offer, in + accord with subsection 6b. + . + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to + the Corresponding Source in the same way through the same place + at no further charge. You need not require recipients to copy + the Corresponding Source along with the object code. If the + place to copy the object code is a network server, the + Corresponding Source may be on a different server (operated by + you or a third party) that supports equivalent copying + facilities, provided you maintain clear directions next to the + object code saying where to find the Corresponding Source. + Regardless of what server hosts the Corresponding Source, you + remain obligated to ensure that it is available for as long as + needed to satisfy these requirements. + . + e) Convey the object code using peer-to-peer transmission, + provided you inform other peers where the object code and + Corresponding Source of the work are being offered to the + general public at no charge under subsection 6d. + . + A separable portion of the object code, whose source code is + excluded from the Corresponding Source as a System Library, need not + be included in conveying the object code work. + . + A "User Product" is either (1) a "consumer product", which means any + tangible personal property which is normally used for personal, + family, or household purposes, or (2) anything designed or sold for + incorporation into a dwelling. In determining whether a product is + a consumer product, doubtful cases shall be resolved in favor of + coverage. For a particular product received by a particular user, + "normally used" refers to a typical or common use of that class of + product, regardless of the status of the particular user or of the + way in which the particular user actually uses, or expects or is + expected to use, the product. A product is a consumer product + regardless of whether the product has substantial commercial, + industrial or non-consumer uses, unless such uses represent the only + significant mode of use of the product. + . + "Installation Information" for a User Product means any methods, + procedures, authorization keys, or other information required to + install and execute modified versions of a covered work in that User + Product from a modified version of its Corresponding Source. The + information must suffice to ensure that the continued functioning of + the modified object code is in no case prevented or interfered with + solely because modification has been made. + . + If you convey an object code work under this section in, or with, or + specifically for use in, a User Product, and the conveying occurs as + part of a transaction in which the right of possession and use of + the User Product is transferred to the recipient in perpetuity or + for a fixed term (regardless of how the transaction is + characterized), the Corresponding Source conveyed under this section + must be accompanied by the Installation Information. But this + requirement does not apply if neither you nor any third party + retains the ability to install modified object code on the User + Product (for example, the work has been installed in ROM). + . + The requirement to provide Installation Information does not include + a requirement to continue to provide support service, warranty, or + updates for a work that has been modified or installed by the + recipient, or for the User Product in which it has been modified or + installed. Access to a network may be denied when the modification + itself materially and adversely affects the operation of the network + or violates the rules and protocols for communication across the + network. + . + Corresponding Source conveyed, and Installation Information + provided, in accord with this section must be in a format that is + publicly documented (and with an implementation available to the + public in source code form), and must require no special password or + key for unpacking, reading or copying. + . + 7. Additional Terms. "Additional permissions" are terms that + supplement the terms of this License by making exceptions from one + or more of its conditions. Additional permissions that are + applicable to the entire Program shall be treated as though they + were included in this License, to the extent that they are valid + under applicable law. If additional permissions apply only to part + of the Program, that part may be used separately under those + permissions, but the entire Program remains governed by this License + without regard to the additional permissions. + . + When you convey a copy of a covered work, you may at your option + remove any additional permissions from that copy, or from any part + of it. (Additional permissions may be written to require their own + removal in certain cases when you modify the work.) You may place + additional permissions on material, added by you to a covered work, + for which you have or can give appropriate copyright permission. + . + Notwithstanding any other provision of this License, for material + you add to a covered work, you may (if authorized by the copyright + holders of that material) supplement the terms of this License with + terms: + . + a) Disclaiming warranty or limiting liability differently from + the terms of sections 15 and 16 of this License; or + . + b) Requiring preservation of specified reasonable legal notices + or author attributions in that material or in the Appropriate + Legal Notices displayed by works containing it; or + . + c) Prohibiting misrepresentation of the origin of that material, + or requiring that modified versions of such material be marked + in reasonable ways as different from the original version; or + . + d) Limiting the use for publicity purposes of names of licensors + or authors of the material; or + . + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + . + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified + versions of it) with contractual assumptions of liability to the + recipient, for any liability that these contractual assumptions + directly impose on those licensors and authors. + . + All other non-permissive additional terms are considered "further + restrictions" within the meaning of section 10. If the Program as + you received it, or any part of it, contains a notice stating that + it is governed by this License along with a term that is a further + restriction, you may remove that term. If a license document + contains a further restriction but permits relicensing or conveying + under this License, you may add to a covered work material governed + by the terms of that license document, provided that the further + restriction does not survive such relicensing or conveying. + . + If you add terms to a covered work in accord with this section, you + must place, in the relevant source files, a statement of the + additional terms that apply to those files, or a notice indicating + where to find the applicable terms. + . + Additional terms, permissive or non-permissive, may be stated in the + form of a separately written license, or stated as exceptions; the + above requirements apply either way. + . + 8. Termination. + . + You may not propagate or modify a covered work except as expressly + provided under this License. Any attempt otherwise to propagate or + modify it is void, and will automatically terminate your rights + under this License (including any patent licenses granted under the + third paragraph of section 11). + . + However, if you cease all violation of this License, then your + license from a particular copyright holder is reinstated (a) + provisionally, unless and until the copyright holder explicitly and + finally terminates your license, and (b) permanently, if the + copyright holder fails to notify you of the violation by some + reasonable means prior to 60 days after the cessation. + . + Moreover, your license from a particular copyright holder is + reinstated permanently if the copyright holder notifies you of the + violation by some reasonable means, this is the first time you have + received notice of violation of this License (for any work) from + that copyright holder, and you cure the violation prior to 30 days + after your receipt of the notice. + . + Termination of your rights under this section does not terminate the + licenses of parties who have received copies or rights from you + under this License. If your rights have been terminated and not + permanently reinstated, you do not qualify to receive new licenses + for the same material under section 10. + . + 9. Acceptance Not Required for Having Copies. + . + You are not required to accept this License in order to receive or + run a copy of the Program. Ancillary propagation of a covered work + occurring solely as a consequence of using peer-to-peer transmission + to receive a copy likewise does not require acceptance. However, + nothing other than this License grants you permission to propagate + or modify any covered work. These actions infringe copyright if you + do not accept this License. Therefore, by modifying or propagating + a covered work, you indicate your acceptance of this License to do + so. + . + 10. Automatic Licensing of Downstream Recipients. + . + Each time you convey a covered work, the recipient automatically + receives a license from the original licensors, to run, modify and + propagate that work, subject to this License. You are not + responsible for enforcing compliance by third parties with this + License. + . + An "entity transaction" is a transaction transferring control of an + organization, or substantially all assets of one, or subdividing an + organization, or merging organizations. If propagation of a covered + work results from an entity transaction, each party to that + transaction who receives a copy of the work also receives whatever + licenses to the work the party's predecessor in interest had or + could give under the previous paragraph, plus a right to possession + of the Corresponding Source of the work from the predecessor in + interest, if the predecessor has it or can get it with reasonable + efforts. + . + You may not impose any further restrictions on the exercise of the + rights granted or affirmed under this License. For example, you may + not impose a license fee, royalty, or other charge for exercise of + rights granted under this License, and you may not initiate + litigation (including a cross-claim or counterclaim in a lawsuit) + alleging that any patent claim is infringed by making, using, + selling, offering for sale, or importing the Program or any portion + of it. + . + 11. Patents. + . + A "contributor" is a copyright holder who authorizes use under this + License of the Program or a work on which the Program is based. The + work thus licensed is called the contributor's "contributor + version". + . + A contributor's "essential patent claims" are all patent claims + owned or controlled by the contributor, whether already acquired or + hereafter acquired, that would be infringed by some manner, + permitted by this License, of making, using, or selling its + contributor version, but do not include claims that would be + infringed only as a consequence of further modification of the + contributor version. For purposes of this definition, "control" + includes the right to grant patent sublicenses in a manner + consistent with the requirements of this License. + . + Each contributor grants you a non-exclusive, worldwide, royalty-free + patent license under the contributor's essential patent claims, to + make, use, sell, offer for sale, import and otherwise run, modify + and propagate the contents of its contributor version. + . + In the following three paragraphs, a "patent license" is any express + agreement or commitment, however denominated, not to enforce a + patent (such as an express permission to practice a patent or + covenant not to sue for patent infringement). To "grant" such a + patent license to a party means to make such an agreement or + commitment not to enforce a patent against the party. + . + If you convey a covered work, knowingly relying on a patent license, + and the Corresponding Source of the work is not available for anyone + to copy, free of charge and under the terms of this License, through + a publicly available network server or other readily accessible + means, then you must either (1) cause the Corresponding Source to be + so available, or (2) arrange to deprive yourself of the benefit of + the patent license for this particular work, or (3) arrange, in a + manner consistent with the requirements of this License, to extend + the patent license to downstream recipients. "Knowingly relying" + means you have actual knowledge that, but for the patent license, + your conveying the covered work in a country, or your recipient's + use of the covered work in a country, would infringe one or more + identifiable patents in that country that you have reason to believe + are valid. + . + If, pursuant to or in connection with a single transaction or + arrangement, you convey, or propagate by procuring conveyance of, a + covered work, and grant a patent license to some of the parties + receiving the covered work authorizing them to use, propagate, + modify or convey a specific copy of the covered work, then the + patent license you grant is automatically extended to all recipients + of the covered work and works based on it. + . + A patent license is "discriminatory" if it does not include within + the scope of its coverage, prohibits the exercise of, or is + conditioned on the non-exercise of one or more of the rights that + are specifically granted under this License. You may not convey a + covered work if you are a party to an arrangement with a third party + that is in the business of distributing software, under which you + make payment to the third party based on the extent of your activity + of conveying the work, and under which the third party grants, to + any of the parties who would receive the covered work from you, a + discriminatory patent license (a) in connection with copies of the + covered work conveyed by you (or copies made from those copies), or + (b) primarily for and in connection with specific products or + compilations that contain the covered work, unless you entered into + that arrangement, or that patent license was granted, prior to 28 + March 2007. + . + Nothing in this License shall be construed as excluding or limiting + any implied license or other defenses to infringement that may + otherwise be available to you under applicable patent law. + . + 12. No Surrender of Others' Freedom. + . + If conditions are imposed on you (whether by court order, agreement + or otherwise) that contradict the conditions of this License, they + do not excuse you from the conditions of this License. If you + cannot convey a covered work so as to satisfy simultaneously your + obligations under this License and any other pertinent obligations, + then as a consequence you may not convey it at all. For example, if + you agree to terms that obligate you to collect a royalty for + further conveying from those to whom you convey the Program, the + only way you could satisfy both those terms and this License would + be to refrain entirely from conveying the Program. + . + 13. Remote Network Interaction; Use with the GNU General Public + License. + . + Notwithstanding any other provision of this License, if you modify + the Program, your modified version must prominently offer all users + interacting with it remotely through a computer network (if your + version supports such interaction) an opportunity to receive the + Corresponding Source of your version by providing access to the + Corresponding Source from a network server at no charge, through + some standard or customary means of facilitating copying of + software. This Corresponding Source shall include the Corresponding + Source for any work covered by version 3 of the GNU General Public + License that is incorporated pursuant to the following paragraph. + . + Notwithstanding any other provision of this License, you have + permission to link or combine any covered work with a work licensed + under version 3 of the GNU General Public License into a single + combined work, and to convey the resulting work. The terms of this + License will continue to apply to the part which is the covered + work, but the work with which it is combined will remain governed by + version 3 of the GNU General Public License. + . + 14. Revised Versions of this License. + . + The Free Software Foundation may publish revised and/or new versions + of the GNU Affero General Public License from time to time. Such + new versions will be similar in spirit to the present version, but + may differ in detail to address new problems or concerns. + . + Each version is given a distinguishing version number. If the + Program specifies that a certain numbered version of the GNU Affero + General Public License "or any later version" applies to it, you + have the option of following the terms and conditions either of that + numbered version or of any later version published by the Free + Software Foundation. If the Program does not specify a version + number of the GNU Affero General Public License, you may choose any + version ever published by the Free Software Foundation. + . + If the Program specifies that a proxy can decide which future + versions of the GNU Affero General Public License can be used, that + proxy's public statement of acceptance of a version permanently + authorizes you to choose that version for the Program. + . + Later license versions may give you additional or different + permissions. However, no additional obligations are imposed on any + author or copyright holder as a result of your choosing to follow a + later version. + . + 15. Disclaimer of Warranty. + . + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY + APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE + COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" + WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE + RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. + SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL + NECESSARY SERVICING, REPAIR OR CORRECTION. + . + 16. Limitation of Liability. + . + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN + WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES + AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR + DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL + DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM + (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED + INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE + OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH + HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + DAMAGES. + . + 17. Interpretation of Sections 15 and 16. + . + If the disclaimer of warranty and limitation of liability provided + above cannot be given local legal effect according to their terms, + reviewing courts shall apply local law that most closely + approximates an absolute waiver of all civil liability in connection + with the Program, unless a warranty or assumption of liability + accompanies a copy of the Program in return for a fee. + . + END OF TERMS AND CONDITIONS + . + How to Apply These Terms to Your New Programs + . + If you develop a new program, and you want it to be of the greatest + possible use to the public, the best way to achieve this is to make + it free software which everyone can redistribute and change under + these terms. + . + To do so, attach the following notices to the program. It is safest + to attach them to the start of each source file to most effectively + state the exclusion of warranty; and each file should have at least + the "copyright" line and a pointer to where the full notice is + found. + . + Copyright (C) + . + This program is free software: you can redistribute it and/or + modify it under the terms of the GNU Affero General Public + License as published by the Free Software Foundation, either + version 3 of the License, or (at your option) any later + version. + . + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + . + You should have received a copy of the GNU Affero General + Public License along with this program. If not, see + . + . + Also add information on how to contact you by electronic and paper + mail. + . + If your software can interact with users remotely through a computer + network, you should also make sure that it provides a way for users + to get its source. For example, if your program is a web + application, its interface could display a "Source" link that leads + users to an archive of the code. There are many ways you could + offer source, and different solutions will be better for different + programs; see section 13 for the specific requirements. + . + You should also get your employer (if you work as a programmer) or + school, if any, to sign a "copyright disclaimer" for the program, if + necessary. For more information on this, and how to apply and follow + the GNU AGPL, see . + +License: BSD-2-Clause + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + . + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + . + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +License: BSD-3-Clause + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + . + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + . + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + . + 3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +License: CC-BY-SA-4.0 + Creative Commons Attribution-ShareAlike 4.0 International Creative + Commons Corporation ("Creative Commons") is not a law firm and does + not provide legal services or legal advice. Distribution of Creative + Commons public licenses does not create a lawyer-client or other + relationship. Creative Commons makes its licenses and related + information available on an "as-is" basis. Creative Commons gives no + warranties regarding its licenses, any material licensed under their + terms and conditions, or any related information. Creative Commons + disclaims all liability for damages resulting from their use to the + fullest extent possible. + . + Using Creative Commons Public Licenses + . + Creative Commons public licenses provide a standard set of terms and + conditions that creators and other rights holders may use to share + original works of authorship and other material subject to copyright + and certain other rights specified in the public license below. The + following considerations are for informational purposes only, are + not exhaustive, and do not form part of our licenses. + . + Considerations for licensors: Our public licenses are intended for + use by those authorized to give the public permission to use + material in ways otherwise restricted by copyright and certain other + rights. Our licenses are irrevocable. Licensors should read and + understand the terms and conditions of the license they choose + before applying it. Licensors should also secure all rights + necessary before applying our licenses so that the public can reuse + the material as expected. Licensors should clearly mark any material + not subject to the license. This includes other CC-licensed + material, or material used under an exception or limitation to + copyright. More considerations for licensors : + wiki.creativecommons.org/Considerations_for_licensors + . + Considerations for the public: By using one of our public licenses, + a licensor grants the public permission to use the licensed material + under specified terms and conditions. If the licensor's permission + is not necessary for any reason–for example, because of any + applicable exception or limitation to copyright–then that use is not + regulated by the license. Our licenses grant only permissions under + copyright and certain other rights that a licensor has authority to + grant. Use of the licensed material may still be restricted for + other reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, such + as asking that all changes be marked or described. + . + Although not required by our licenses, you are encouraged to respect + those requests where reasonable. More considerations for the public + : wiki.creativecommons.org/Considerations_for_licensees + . + Creative Commons Attribution-ShareAlike 4.0 International Public + License + . + By exercising the Licensed Rights (defined below), You accept and + agree to be bound by the terms and conditions of this Creative + Commons Attribution-ShareAlike 4.0 International Public License + ("Public License"). To the extent this Public License may be + interpreted as a contract, You are granted the Licensed Rights in + consideration of Your acceptance of these terms and conditions, and + the Licensor grants You such rights in consideration of benefits the + Licensor receives from making the Licensed Material available under + these terms and conditions. + . + Section 1 – Definitions. + . + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material and + in which the Licensed Material is translated, altered, arranged, + transformed, or otherwise modified in a manner requiring permission + under the Copyright and Similar Rights held by the Licensor. For + purposes of this Public License, where the Licensed Material is a + musical work, performance, or sound recording, Adapted Material is + always produced where the Licensed Material is synched in timed + relation with a moving image. + . + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + . + c. BY-SA Compatible License means a license listed at + creativecommons.org/compatiblelicenses, approved by Creative Commons + as essentially the equivalent of this Public License. + . + d. Copyright and Similar Rights means copyright and/or similar + rights closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or categorized. + For purposes of this Public License, the rights specified in Section + 2(b)(1)-(2) are not Copyright and Similar Rights. + . + e. Effective Technological Measures means those measures that, in + the absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright Treaty + adopted on December 20, 1996, and/or similar international + agreements. + . + f. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + . + g. License Elements means the license attributes listed in the name + of a Creative Commons Public License. The License Elements of this + Public License are Attribution and ShareAlike. + . + h. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public License. + . + i. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + . + j. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + . + k. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such as + reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the public + may access the material from a place and at a time individually + chosen by them. + . + l. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially equivalent + rights anywhere in the world. + . + m. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + . + Section 2 – Scope. + . + a. License grant. + . + 1. Subject to the terms and conditions of this Public License, the + Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to exercise + the Licensed Rights in the Licensed Material to: + . + A. reproduce and Share the Licensed Material, in whole or + in part; and + . + B. produce, reproduce, and Share Adapted Material. + . + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public License + does not apply, and You do not need to comply with its terms and + conditions. + . + 3. Term. The term of this Public License is specified in + Section 6(a). + . + 4. Media and formats; technical modifications allowed. The Licensor + authorizes You to exercise the Licensed Rights in all media and + formats whether now known or hereafter created, and to make + technical modifications necessary to do so. The Licensor waives + and/or agrees not to assert any right or authority to forbid You + from making technical modifications necessary to exercise the + Licensed Rights, including technical modifications necessary to + circumvent Effective Technological Measures. For purposes of this + Public License, simply making modifications authorized by this + Section 2(a)(4) never produces Adapted Material. + . + 5. Downstream recipients. + . + A. Offer from the Licensor – Licensed Material. Every recipient of + the Licensed Material automatically receives an offer from the + Licensor to exercise the Licensed Rights under the terms and + conditions of this Public License. + . + B. Additional offer from the Licensor – Adapted Material. Every + recipient of Adapted Material from You automatically receives an + offer from the Licensor to exercise the Licensed Rights in the + Adapted Material under the conditions of the Adapter's License You + apply. + . + C. No downstream restrictions. You may not offer or impose any + additional or different terms or conditions on, or apply any + Effective Technological Measures to, the Licensed Material if doing + so restricts exercise of the Licensed Rights by any recipient of the + Licensed Material. + . + 6. No endorsement. Nothing in this Public License constitutes or may + be construed as permission to assert or imply that You are, or that + Your use of the Licensed Material is, connected with, or sponsored, + endorsed, or granted official status by, the Licensor or others + designated to receive attribution as provided in Section + 3(a)(1)(A)(i). + . + b. Other rights. + . + 1. Moral rights, such as the right of integrity, are not licensed + under this Public License, nor are publicity, privacy, and/or other + similar personality rights; however, to the extent possible, the + Licensor waives and/or agrees not to assert any such rights held by + the Licensor to the limited extent necessary to allow You to + exercise the Licensed Rights, but not otherwise. + . + 2. Patent and trademark rights are not licensed under this Public + License. + . + 3. To the extent possible, the Licensor waives any right to collect + royalties from You for the exercise of the Licensed Rights, whether + directly or through a collecting society under any voluntary or + waivable statutory or compulsory licensing scheme. In all other + cases the Licensor expressly reserves any right to collect such + royalties. + . + Section 3 – License Conditions. + . + Your exercise of the Licensed Rights is expressly made subject to + the following conditions. + . + a. Attribution. + . + 1. If You Share the Licensed Material (including in modified form), + You must: + . + A. retain the following if it is supplied by the Licensor with the + Licensed Material: + . + i. identification of the creator(s) of the Licensed Material and any + others designated to receive attribution, in any reasonable manner + requested by the Licensor (including by pseudonym if designated); + . + ii. a copyright notice; + . + iii. a notice that refers to this Public License; + . + iv. a notice that refers to the disclaimer of + warranties; + . + v. a URI or hyperlink to the Licensed Material to the extent + reasonably practicable; + . + B. indicate if You modified the Licensed Material and retain an + indication of any previous modifications; and + . + C. indicate the Licensed Material is licensed under this Public + License, and include the text of, or the URI or hyperlink to, this + Public License. + . + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in which + You Share the Licensed Material. For example, it may be reasonable + to satisfy the conditions by providing a URI or hyperlink to a + resource that includes the required information. + . + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent reasonably + practicable. + . + b. ShareAlike.In addition to the conditions in Section 3(a), if You + Share Adapted Material You produce, the following conditions also + apply. + . + 1. The Adapter's License You apply must be a Creative Commons + license with the same License Elements, this version or later, or a + BY-SA Compatible License. + . + 2. You must include the text of, or the URI or hyperlink to, the + Adapter's License You apply. You may satisfy this condition in any + reasonable manner based on the medium, means, and context in which + You Share Adapted Material. + . + 3. You may not offer or impose any additional or different terms or + conditions on, or apply any Effective Technological Measures to, + Adapted Material that restrict exercise of the rights granted under + the Adapter's License You apply. + . + Section 4 – Sui Generis Database Rights. + . + Where the Licensed Rights include Sui Generis Database Rights that + apply to Your use of the Licensed Material: + . + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial portion + of the contents of the database; + . + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material, + including for purposes of Section 3(b); and + . + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + . + For the avoidance of doubt, this Section 4 supplements and does not + replace Your obligations under this Public License where the + Licensed Rights include other Copyright and Similar Rights. + . + Section 5 – Disclaimer of Warranties and Limitation of Liability. + . + a. Unless otherwise separately undertaken by the Licensor, to the + extent possible, the Licensor offers the Licensed Material as-is and + as-available, and makes no representations or warranties of any kind + concerning the Licensed Material, whether express, implied, + statutory, or other. This includes, without limitation, warranties + of title, merchantability, fitness for a particular purpose, + non-infringement, absence of latent or other defects, accuracy, or + the presence or absence of errors, whether or not known or + discoverable. Where disclaimers of warranties are not allowed in + full or in part, this disclaimer may not apply to You. + . + b. To the extent possible, in no event will the Licensor be liable + to You on any legal theory (including, without limitation, + negligence) or otherwise for any direct, special, indirect, + incidental, consequential, punitive, exemplary, or other losses, + costs, expenses, or damages arising out of this Public License or + use of the Licensed Material, even if the Licensor has been advised + of the possibility of such losses, costs, expenses, or damages. + Where a limitation of liability is not allowed in full or in part, + this limitation may not apply to You. + . + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent possible, + most closely approximates an absolute disclaimer and waiver of all + liability. + . + Section 6 – Term and Termination. + . + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + . + b. Where Your right to use the Licensed Material has terminated + under Section 6(a), it reinstates: + . + 1. automatically as of the date the violation is cured, provided it + is cured within 30 days of Your discovery of the violation; or + . + 2. upon express reinstatement by the Licensor. + . + c. For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations of + this Public License. + . + d. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + . + e. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + . + Section 7 – Other Terms and Conditions. + . + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + . + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + . + Section 8 – Interpretation. + . + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + . + b. To the extent possible, if any provision of this Public License + is deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + . + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + . + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + . + Creative Commons is not a party to its public licenses. + Notwithstanding, Creative Commons may elect to apply one of its + public licenses to material it publishes and in those instances will + be considered the "Licensor." The text of the Creative Commons + public licenses is dedicated to the public domain under the CC0 + Public Domain Dedication. Except for the limited purpose of + indicating that material is shared under a Creative Commons public + license or as otherwise permitted by the Creative Commons policies + published at creativecommons.org/policies, Creative Commons does not + authorize the use of the trademark "Creative Commons" or any other + trademark or logo of Creative Commons without its prior written + consent including, without limitation, in connection with any + unauthorized modifications to any of its public licenses or any + other arrangements, understandings, or agreements concerning use of + licensed material. For the avoidance of doubt, this paragraph does + not form part of the public licenses. + . + Creative Commons may be contacted at creativecommons.org. + +License: CC0-1.0 + To the extent possible under law, the author(s) have dedicated all + copyright and related and neighboring rights to this software to the + public domain worldwide. This software is distributed without any + warranty. + . + You should have received a copy of the CC0 Public Domain Dedication + along with this software. If not, see + . + . + On Debian systems, the complete text of the CC0 Public Domain + Dedication can be found in `/usr/share/common-licenses/CC0-1.0’. + +License: GPL-2.0-only + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2. + . + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. Also add information on how to contact you by + electronic and paper mail. + . + On Debian systems, the complete text of the GNU General Public + License version 2 can be found in + `/usr/share/common-licenses/GPL-2’. + +License: GPL-2.0-or-later + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + . + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. Also add information on how to contact you by + electronic and paper mail. + . + On Debian systems, the complete text of the GNU General Public + License version 2 can be found in + `/usr/share/common-licenses/GPL-2’. + +License: GPL-3.0-only + This program is free software: you can redistribute it and/or modify + it under the terms of the GPL License as published by the Free + Software Foundation, version 3. + . + This package is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see . + . + On Debian systems, the complete text of the GNU General Public + License version 3 can be found in + `/usr/share/common-licenses/GPL-3’. + +License: GPL-3.0-or-later + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + . + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see + . + . + On Debian systems, the complete text of the GNU General Public + License version 3 can be found in + `/usr/share/common-licenses/GPL-3’. + +License: LGPL-2.0-or-later + This library is free software; you can redistribute it and/or modify + it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + . + This library is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + . + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + 02110-1301, USA. + . + On Debian systems, the complete text of the GNU Library General + Public License version 2 can be found in + `/usr/share/common-licenses/LGPL-2’. + +License: LGPL-2.1-only + This library is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version + 2.1 as published by the Free Software Foundation. + . + This library is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + . + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA Also add information on how to contact you by + electronic and paper mail. + . + On Debian systems, the complete text of the GNU Lesser General + Public License version 2.1 can be found in + `/usr/share/common-licenses/LGPL-2.1’. + +License: LGPL-2.1-or-later + This library is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + . + This library is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + . + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA Also add information on how to contact you by + electronic and paper mail. + . + On Debian systems, the complete text of the GNU Lesser General + Public License version 2.1 can be found in + `/usr/share/common-licenses/LGPL-2.1’. + +License: LGPL-3.0-only + This library is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version + 3 as published by the Free Software Foundation. + . + This library is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + . + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see + . + . + On Debian systems, the complete text of the GNU Lesser General + Public License version 3 can be found in + `/usr/share/common-licenses/LGPL-3’. + +License: LicenseRef-KDE-Accepted-GPL + This library is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the license or (at + your option) at any later version that is accepted by the membership + of KDE e.V. (or its successor approved by the membership of KDE + e.V.), which shall act as a proxy as defined in Section 14 of + version 3 of the license. + . + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + +License: LicenseRef-KDE-Accepted-LGPL + This library is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 3 of the + license or (at your option) any later version that is accepted by + the membership of KDE e.V. (or its successor approved by the + membership of KDE e.V.), which shall act as a proxy as defined in + Section 6 of version 3 of the license. + . + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + +License: MIT + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation files + (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, + publish, distribute, sublicense, and/or sell copies of the Software, + and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + . + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. diff --git a/patches/series b/patches/series new file mode 100644 index 0000000..8e9e995 --- /dev/null +++ b/patches/series @@ -0,0 +1,9 @@ +upstream_revert_357ef28c_accountpage-use-formlinkdelegate-for-open-ser.patch +upstream_128cdaa7_Fix-a-crash-when-trying-to-block-an-account-through-the-post-menu.patch +upstream_4f09a6e8_Add-mute-block-management-on-the-safety-page.patch +upstream_5587bbb9_Use-QLatin1String-in-SocialGraphModel.patch +upstream_fc886374_Playback-audio-in-video-attachments.patch +upstream_9eb657e1_Fix-crash-when-trying-to-save-less-than-the-max-number-of-fields.patch +upstream_b319e681_Add-a-toggle-in-account-settings-for-search-indexing.patch +upstream_4643870b_Make-sure-that-toggling-account-options-affects-the-correct-account.patch +upstream_df89658d_Fix-possible-erroneous-trailing-space-in-OAuth-scope-parameter.patch diff --git a/patches/upstream_128cdaa7_Fix-a-crash-when-trying-to-block-an-account-through-the-post-menu.patch b/patches/upstream_128cdaa7_Fix-a-crash-when-trying-to-block-an-account-through-the-post-menu.patch new file mode 100644 index 0000000..c24be89 --- /dev/null +++ b/patches/upstream_128cdaa7_Fix-a-crash-when-trying-to-block-an-account-through-the-post-menu.patch @@ -0,0 +1,31 @@ +From 128cdaa75e4b18989248a0f293111918adcdcf51 Mon Sep 17 00:00:00 2001 +From: Joshua Goins +Date: Mon, 30 Jun 2025 16:19:09 -0400 +Subject: [PATCH] Fix a crash when trying to block an account through the post + menu + +Not sure why I try to access a non-existent identity property here, +but it's fixed now. +--- + src/content/ui/PostDelegate/PostMenu.qml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/content/ui/PostDelegate/PostMenu.qml b/src/content/ui/PostDelegate/PostMenu.qml +index bf27c4ed7..2c7b4f770 100644 +--- a/src/content/ui/PostDelegate/PostMenu.qml ++++ b/src/content/ui/PostDelegate/PostMenu.qml +@@ -181,9 +181,9 @@ Components.ConvergentContextMenu { + } + onTriggered: { + if (root.authorIdentity.relationship && root.authorIdentity.relationship.blocking) { +- AccountManager.selectedAccount.unblockAccount(root.authorIdentity.identity); ++ AccountManager.selectedAccount.unblockAccount(root.authorIdentity); + } else { +- AccountManager.selectedAccount.blockAccount(root.authorIdentity.identity); ++ AccountManager.selectedAccount.blockAccount(root.authorIdentity); + } + } + } +-- +GitLab + diff --git a/patches/upstream_4643870b_Make-sure-that-toggling-account-options-affects-the-correct-account.patch b/patches/upstream_4643870b_Make-sure-that-toggling-account-options-affects-the-correct-account.patch new file mode 100644 index 0000000..634e5e3 --- /dev/null +++ b/patches/upstream_4643870b_Make-sure-that-toggling-account-options-affects-the-correct-account.patch @@ -0,0 +1,94 @@ +From 4643870ba9b330c9069a77b3ec79e843ca112bcf Mon Sep 17 00:00:00 2001 +From: Joshua Goins +Date: Sun, 6 Jul 2025 21:53:13 -0400 +Subject: [PATCH] Make sure that toggling account options affects the correct + account + +(cherry picked from commit 8c8a0519a82fea6aaaf49f6022b4b497e66d07ae) +--- +From: Aurélien COUDERC +Adapted to apply on top of the 357ef28c revert +--- + src/content/ui/Settings/AccountPage.qml | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +diff --git a/src/content/ui/Settings/AccountPage.qml b/src/content/ui/Settings/AccountPage.qml +index 2345672d0..46d9b0df1 100644 +--- a/src/content/ui/Settings/AccountPage.qml ++++ b/src/content/ui/Settings/AccountPage.qml +@@ -14,7 +14,7 @@ import ".." + Kirigami.Page { + id: root + +- property var account ++ property AbstractAccount account + + readonly property ProfileEditorBackend backend : ProfileEditorBackend { + account: root.account +@@ -167,8 +167,8 @@ Kirigami.Page { + + FormCard.FormSwitchDelegate { + text: i18nc("@label Account preferences", "Mark uploaded media as sensitive by default") +- checked: AccountManager.selectedAccount.preferences.defaultSensitive +- onToggled: AccountManager.selectedAccount.preferences.defaultSensitive = checked ++ checked: root.account.preferences.defaultSensitive ++ onToggled: root.account.preferences.defaultSensitive = checked + } + + FormCard.FormDelegateSeparator { +@@ -176,8 +176,8 @@ Kirigami.Page { + + FormCard.FormSwitchDelegate { + text: i18nc("@label Account preferences", "Include public posts in search results") +- checked: AccountManager.selectedAccount.preferences.indexable +- onToggled: AccountManager.selectedAccount.preferences.indexable = checked ++ checked: root.account.preferences.indexable ++ onToggled: root.account.preferences.indexable = checked + } + + FormCard.FormDelegateSeparator { +@@ -185,7 +185,7 @@ Kirigami.Page { + + FormCard.FormButtonDelegate { + text: i18nc("@label Account preferences", "Default post language") +- description: Qt.locale(AccountManager.selectedAccount.preferences.defaultLanguage).nativeLanguageName ++ description: Qt.locale(root.account.preferences.defaultLanguage).nativeLanguageName + + onClicked: languageSelect.createObject().open() + +@@ -195,10 +195,10 @@ Kirigami.Page { + LanguageSelector { + parent: root.QQC2.Overlay.overlay + onAboutToShow: { +- const sourceIndex = listView.model.sourceModel.indexOfValue(AccountManager.selectedAccount.preferences.defaultLanguage); ++ const sourceIndex = listView.model.sourceModel.indexOfValue(root.account.preferences.defaultLanguage); + listView.currentIndex = listView.model.mapFromSource(sourceIndex).row; + } +- onCodeSelected: code => AccountManager.selectedAccount.preferences.defaultLanguage = code ++ onCodeSelected: code => root.account.preferences.defaultLanguage = code + onClosed: destroyed() + } + } +@@ -216,8 +216,8 @@ Kirigami.Page { + i18nc("@item:inlistbox Default post visibility rule", "Unlisted"), + i18nc("@item:inlistbox Default post visibility rule", "Private") + ] +- Component.onCompleted: currentIndex = AccountManager.selectedAccount.preferences.defaultVisibility +- onCurrentValueChanged: AccountManager.selectedAccount.preferences.defaultVisibility = currentIndex ++ Component.onCompleted: currentIndex = root.account.preferences.defaultVisibility ++ onCurrentValueChanged: root.account.preferences.defaultVisibility = currentIndex + } + + FormCard.FormDelegateSeparator { +@@ -229,7 +229,7 @@ Kirigami.Page { + id: websiteDelegate + text: i18nc("@abel Account preferences", "Open Server in Browser") + description: i18n("Some settings can only be configured on your server's website.") +- onClicked: Qt.openUrlExternally(AccountManager.selectedAccount.instanceUri) ++ onClicked: Qt.openUrlExternally(root.account.instanceUri) + } + } + } +-- +GitLab + diff --git a/patches/upstream_4f09a6e8_Add-mute-block-management-on-the-safety-page.patch b/patches/upstream_4f09a6e8_Add-mute-block-management-on-the-safety-page.patch new file mode 100644 index 0000000..06dd435 --- /dev/null +++ b/patches/upstream_4f09a6e8_Add-mute-block-management-on-the-safety-page.patch @@ -0,0 +1,130 @@ +From 4f09a6e861c0ce1d2f629654047b026bc0167a9e Mon Sep 17 00:00:00 2001 +From: Joshua Goins +Date: Mon, 30 Jun 2025 16:19:34 -0400 +Subject: [PATCH] Add mute/block management on the safety page + +This allows you to manage your muted/blocked users without having to +navigate to their profile first. + +CCBUG: 506374 +--- + src/account/socialgraphmodel.cpp | 40 ++++++++++++++++++++++++++++++ + src/account/socialgraphmodel.h | 6 +++++ + src/content/ui/SocialGraphPage.qml | 12 +++++++++ + 3 files changed, 58 insertions(+) + +diff --git a/src/account/socialgraphmodel.cpp b/src/account/socialgraphmodel.cpp +index 6eb2443c2..afc54b701 100644 +--- a/src/account/socialgraphmodel.cpp ++++ b/src/account/socialgraphmodel.cpp +@@ -251,6 +251,16 @@ bool SocialGraphModel::isList() const + return m_followListName == QStringLiteral("list"); + } + ++bool SocialGraphModel::isBlockList() const ++{ ++ return m_followListName == QStringLiteral("blocks"); ++} ++ ++bool SocialGraphModel::isMuteList() const ++{ ++ return m_followListName == QStringLiteral("mutes"); ++} ++ + void SocialGraphModel::actionAllow(const QModelIndex &index) + { + auto account = AccountManager::instance().selectedAccount(); +@@ -371,6 +381,36 @@ void SocialGraphModel::actionAddToList(const QString &accountId) + }); + } + ++void SocialGraphModel::actionUnblock(const QModelIndex &index) ++{ ++ auto account = AccountManager::instance().selectedAccount(); ++ ++ if (!checkIndex(index, QAbstractItemModel::CheckIndexOption::IndexIsValid)) ++ return; ++ ++ auto requestIdentity = m_accounts[index.row()].get(); ++ account->unblockAccount(requestIdentity); ++ ++ beginRemoveRows({}, index.row(), index.row()); ++ m_accounts.removeAt(index.row()); ++ endRemoveRows(); ++} ++ ++void SocialGraphModel::actionUnmute(const QModelIndex &index) ++{ ++ auto account = AccountManager::instance().selectedAccount(); ++ ++ if (!checkIndex(index, QAbstractItemModel::CheckIndexOption::IndexIsValid)) ++ return; ++ ++ auto requestIdentity = m_accounts[index.row()].get(); ++ account->unmuteAccount(requestIdentity); ++ ++ beginRemoveRows({}, index.row(), index.row()); ++ m_accounts.removeAt(index.row()); ++ endRemoveRows(); ++} ++ + bool SocialGraphModel::canFetchMore(const QModelIndex &parent) const + { + Q_UNUSED(parent); +diff --git a/src/account/socialgraphmodel.h b/src/account/socialgraphmodel.h +index 4bf6fceb7..918041923 100644 +--- a/src/account/socialgraphmodel.h ++++ b/src/account/socialgraphmodel.h +@@ -23,6 +23,8 @@ class SocialGraphModel : public QAbstractListModel + Q_PROPERTY(bool isFollowing READ isFollowing CONSTANT) + Q_PROPERTY(bool isFollower READ isFollower CONSTANT) + Q_PROPERTY(bool isList READ isList CONSTANT) ++ Q_PROPERTY(bool isMuteList READ isMuteList CONSTANT) ++ Q_PROPERTY(bool isBlockList READ isBlockList CONSTANT) + + /** + * @brief The account id of the account we want to display +@@ -56,6 +58,8 @@ public: + [[nodiscard]] bool isFollowing() const; + [[nodiscard]] bool isFollower() const; + [[nodiscard]] bool isList() const; ++ [[nodiscard]] bool isMuteList() const; ++ [[nodiscard]] bool isBlockList() const; + [[nodiscard]] QString statusId() const; + void setStatusId(const QString &statusId); + [[nodiscard]] int count() const; +@@ -70,6 +74,8 @@ public Q_SLOTS: + void actionRemoveFollower(const QModelIndex &index); + void actionRemoveFromList(const QModelIndex &index); + void actionAddToList(const QString &accountId); ++ void actionUnblock(const QModelIndex &index); ++ void actionUnmute(const QModelIndex &index); + + Q_SIGNALS: + void loadingChanged(); +diff --git a/src/content/ui/SocialGraphPage.qml b/src/content/ui/SocialGraphPage.qml +index 2bc6db9b4..9133cb305 100644 +--- a/src/content/ui/SocialGraphPage.qml ++++ b/src/content/ui/SocialGraphPage.qml +@@ -94,6 +94,18 @@ Kirigami.ScrollablePage { + onClicked: model.actionRemoveFromList(model.index(delegate.index, 0)) + visible: model.isList && model.accountId === AccountManager.selectedAccount.identity.id + } ++ ++ QQC2.Button { ++ text: i18nc("@action:button Unblock this user", "Unblock") ++ onClicked: model.actionUnblock(model.index(delegate.index, 0)) ++ visible: model.isBlockList ++ } ++ ++ QQC2.Button { ++ text: i18nc("@action:button Unmute this user", "Unmute") ++ onClicked: model.actionUnmute(model.index(delegate.index, 0)) ++ visible: model.isMuteList ++ } + } + + QQC2.ProgressBar { +-- +GitLab + diff --git a/patches/upstream_5587bbb9_Use-QLatin1String-in-SocialGraphModel.patch b/patches/upstream_5587bbb9_Use-QLatin1String-in-SocialGraphModel.patch new file mode 100644 index 0000000..3805040 --- /dev/null +++ b/patches/upstream_5587bbb9_Use-QLatin1String-in-SocialGraphModel.patch @@ -0,0 +1,55 @@ +From 5587bbb9b5f17d54e7f2044218662d3693f5f77a Mon Sep 17 00:00:00 2001 +From: Joshua Goins +Date: Mon, 30 Jun 2025 18:17:15 -0400 +Subject: [PATCH] Use QLatin1String in SocialGraphModel + +--- + src/account/socialgraphmodel.cpp | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/src/account/socialgraphmodel.cpp b/src/account/socialgraphmodel.cpp +index afc54b701..92a228fbe 100644 +--- a/src/account/socialgraphmodel.cpp ++++ b/src/account/socialgraphmodel.cpp +@@ -233,32 +233,32 @@ void SocialGraphModel::setLoading(bool loading) + + bool SocialGraphModel::isFollowRequest() const + { +- return m_followListName == QStringLiteral("request"); ++ return m_followListName == "request"_L1; + } + + bool SocialGraphModel::isFollowing() const + { +- return m_followListName == QStringLiteral("following"); ++ return m_followListName == "following"_L1; + } + + bool SocialGraphModel::isFollower() const + { +- return m_followListName == QStringLiteral("followers"); ++ return m_followListName == "followers"_L1; + } + + bool SocialGraphModel::isList() const + { +- return m_followListName == QStringLiteral("list"); ++ return m_followListName == "list"_L1; + } + + bool SocialGraphModel::isBlockList() const + { +- return m_followListName == QStringLiteral("blocks"); ++ return m_followListName == "blocks"_L1; + } + + bool SocialGraphModel::isMuteList() const + { +- return m_followListName == QStringLiteral("mutes"); ++ return m_followListName == "mutes"_L1; + } + + void SocialGraphModel::actionAllow(const QModelIndex &index) +-- +GitLab + diff --git a/patches/upstream_9eb657e1_Fix-crash-when-trying-to-save-less-than-the-max-number-of-fields.patch b/patches/upstream_9eb657e1_Fix-crash-when-trying-to-save-less-than-the-max-number-of-fields.patch new file mode 100644 index 0000000..ad0e7d8 --- /dev/null +++ b/patches/upstream_9eb657e1_Fix-crash-when-trying-to-save-less-than-the-max-number-of-fields.patch @@ -0,0 +1,27 @@ +From 9eb657e17e6596e007cfaf3524d11d37c5a9148b Mon Sep 17 00:00:00 2001 +From: Joshua Goins +Date: Sun, 6 Jul 2025 21:50:54 -0400 +Subject: [PATCH] Fix crash when trying to save less than the max number of + fields + +(cherry picked from commit 049ce8700af96134a0fcfc575016514b4ae0e912) +--- + src/account/profileeditor.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/account/profileeditor.cpp b/src/account/profileeditor.cpp +index ea402f11f..0ab785e62 100644 +--- a/src/account/profileeditor.cpp ++++ b/src/account/profileeditor.cpp +@@ -292,7 +292,7 @@ void ProfileEditorBackend::save() + discoverablePart.setBody(discoverable() ? "1" : "0"); + multiPart->append(discoverablePart); + +- for (int i = 0; i < maxFields(); i++) { ++ for (int i = 0; i < m_fields.size(); i++) { + QHttpPart fieldNamePart; + fieldNamePart.setHeader(QNetworkRequest::ContentDispositionHeader, QStringLiteral("form-data; name=\"fields_attributes[%1][name]\"").arg(i)); + fieldNamePart.setBody(m_fields[i]["name"_L1].toString().toUtf8()); +-- +GitLab + diff --git a/patches/upstream_b319e681_Add-a-toggle-in-account-settings-for-search-indexing.patch b/patches/upstream_b319e681_Add-a-toggle-in-account-settings-for-search-indexing.patch new file mode 100644 index 0000000..3bc4d55 --- /dev/null +++ b/patches/upstream_b319e681_Add-a-toggle-in-account-settings-for-search-indexing.patch @@ -0,0 +1,129 @@ +From b319e6816101d0a997603983c402fc2c87726d89 Mon Sep 17 00:00:00 2001 +From: Joshua Goins +Date: Sun, 6 Jul 2025 21:52:01 -0400 +Subject: [PATCH] Add a toggle in account settings for search indexing + +This was added in Mastodon 4.3.0 but I missed it. + +(cherry picked from commit 39622f624be636fd0ca8d478ef27632eb37ad428) +--- + src/account/preferences.cpp | 19 +++++++++++++++++++ + src/account/preferences.h | 20 ++++++++++++++++++++ + src/content/ui/Settings/AccountPage.qml | 9 +++++++++ + 3 files changed, 48 insertions(+) + +diff --git a/src/account/preferences.cpp b/src/account/preferences.cpp +index 2b3feeca8..0d35a7632 100644 +--- a/src/account/preferences.cpp ++++ b/src/account/preferences.cpp +@@ -26,11 +26,13 @@ Preferences::Preferences(AbstractAccount *account) + m_defaultVisibility = Post::stringToVisibility(obj[QStringLiteral("posting:default:visibility")].toString()); + m_extendSpoiler = obj[QStringLiteral("reading:expand:spoilers")].toBool(); + m_extendMedia = obj[QStringLiteral("reading:expand:media")].toString(); ++ m_indexable = obj[QStringLiteral("indexable")].toBool(); + Q_EMIT defaultVisibilityChanged(); + Q_EMIT defaultSensitiveChanged(); + Q_EMIT defaultLanguageChanged(); + Q_EMIT extendMediaChanged(); + Q_EMIT extendSpoilerChanged(); ++ Q_EMIT indexableChanged(); + }); + }); + } +@@ -100,6 +102,23 @@ bool Preferences::extendSpoiler() const + return m_extendSpoiler; + } + ++bool Preferences::indexable() const ++{ ++ return m_indexable; ++} ++ ++void Preferences::setIndexable(bool indexable) ++{ ++ if (indexable == m_indexable) { ++ return; ++ } ++ ++ m_indexable = indexable; ++ Q_EMIT indexableChanged(); ++ ++ setPreferencesField(QStringLiteral("indexable"), indexable ? QStringLiteral("true") : QStringLiteral("false")); ++} ++ + void Preferences::setPreferencesField(const QString &name, const QString &value) + { + const auto multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); +diff --git a/src/account/preferences.h b/src/account/preferences.h +index 31463a5e1..ec1f917a5 100644 +--- a/src/account/preferences.h ++++ b/src/account/preferences.h +@@ -17,6 +17,7 @@ class Preferences final : public QObject + Q_PROPERTY(QString defaultLanguage READ defaultLanguage WRITE setDefaultLanguage NOTIFY defaultLanguageChanged) + Q_PROPERTY(QString extendMedia READ extendMedia NOTIFY extendMediaChanged) + Q_PROPERTY(bool extendSpoiler READ extendSpoiler NOTIFY extendSpoilerChanged) ++ Q_PROPERTY(bool indexable READ indexable WRITE setIndexable NOTIFY indexableChanged) + + public: + explicit Preferences(AbstractAccount *account); +@@ -72,6 +73,19 @@ public: + */ + [[nodiscard]] bool extendSpoiler() const; + ++ /** ++ * @return Whether public posts should be indexed. ++ * @see setIndexable() ++ */ ++ [[nodiscard]] bool indexable() const; ++ ++ /** ++ * @brief Set whether public posts should be indexed. ++ * @param indexable Whether or not public posts are indexed. ++ * @see indexable() ++ */ ++ void setIndexable(bool indexable); ++ + Q_SIGNALS: + /** + * @brief Emitted when the default status visibility preference has been changed. +@@ -101,6 +115,11 @@ Q_SIGNALS: + */ + void extendSpoilerChanged(); + ++ /** ++ * @brief Emitted when the indexable preference has been changed. ++ */ ++ void indexableChanged(); ++ + private: + void setPreferencesField(const QString &name, const QString &value); + +@@ -111,4 +130,5 @@ private: + QString m_defaultLanguage; + QString m_extendMedia; + bool m_extendSpoiler; ++ bool m_indexable; + }; +diff --git a/src/content/ui/Settings/AccountPage.qml b/src/content/ui/Settings/AccountPage.qml +index 255f6c00c..2345672d0 100644 +--- a/src/content/ui/Settings/AccountPage.qml ++++ b/src/content/ui/Settings/AccountPage.qml +@@ -174,6 +174,15 @@ Kirigami.Page { + FormCard.FormDelegateSeparator { + } + ++ FormCard.FormSwitchDelegate { ++ text: i18nc("@label Account preferences", "Include public posts in search results") ++ checked: AccountManager.selectedAccount.preferences.indexable ++ onToggled: AccountManager.selectedAccount.preferences.indexable = checked ++ } ++ ++ FormCard.FormDelegateSeparator { ++ } ++ + FormCard.FormButtonDelegate { + text: i18nc("@label Account preferences", "Default post language") + description: Qt.locale(AccountManager.selectedAccount.preferences.defaultLanguage).nativeLanguageName +-- +GitLab + diff --git a/patches/upstream_df89658d_Fix-possible-erroneous-trailing-space-in-OAuth-scope-parameter.patch b/patches/upstream_df89658d_Fix-possible-erroneous-trailing-space-in-OAuth-scope-parameter.patch new file mode 100644 index 0000000..1fcc844 --- /dev/null +++ b/patches/upstream_df89658d_Fix-possible-erroneous-trailing-space-in-OAuth-scope-parameter.patch @@ -0,0 +1,29 @@ +From df89658d6fb62136b3c28a2122862d33b0320098 Mon Sep 17 00:00:00 2001 +From: Joshua Goins +Date: Mon, 14 Jul 2025 20:11:56 -0400 +Subject: [PATCH] Fix possible erroneous trailing space in OAuth scope + parameter + +(cherry picked from commit f17762668e9c9f27b4b338dbed6ec4cb3824772d) + +Co-authored-by: Laura Hausmann +--- + src/account/abstractaccount.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/account/abstractaccount.cpp b/src/account/abstractaccount.cpp +index a4a0a1fe8..2f6865f46 100644 +--- a/src/account/abstractaccount.cpp ++++ b/src/account/abstractaccount.cpp +@@ -156,7 +156,7 @@ void AbstractAccount::registerApplication(const QString &appName, const QString + const QJsonObject obj{ + {QStringLiteral("client_name"), appName}, + {QStringLiteral("redirect_uris"), m_redirectUri}, +- {QStringLiteral("scopes"), QStringLiteral("read write follow %1").arg(m_additionalScopes)}, ++ {QStringLiteral("scopes"), QStringLiteral("read write follow %1").arg(m_additionalScopes).trimmed()}, + {QStringLiteral("website"), website}, + }; + const QJsonDocument doc(obj); +-- +GitLab + diff --git a/patches/upstream_fc886374_Playback-audio-in-video-attachments.patch b/patches/upstream_fc886374_Playback-audio-in-video-attachments.patch new file mode 100644 index 0000000..d89e6ce --- /dev/null +++ b/patches/upstream_fc886374_Playback-audio-in-video-attachments.patch @@ -0,0 +1,177 @@ +From fc8863740c26cb2c2a2aa3ba87cf199a98968048 Mon Sep 17 00:00:00 2001 +From: Joshua Goins +Date: Mon, 30 Jun 2025 19:38:05 -0400 +Subject: [PATCH] Playback audio in video attachments + +When porting to QtMultimedia fully, I forgot that we needed to manually +add a VideoOutput too. + +CCBUG: 505303 + +TODO: +* Fix the volume control hiding when it shouldn't, and test on mobile +--- + src/content/ui/Components/VideoPlayer.qml | 4 + + .../ui/PostDelegate/VideoAttachment.qml | 90 ++++++++++++++++++- + 2 files changed, 93 insertions(+), 1 deletion(-) + +diff --git a/src/content/ui/Components/VideoPlayer.qml b/src/content/ui/Components/VideoPlayer.qml +index f5e2a6a07..c8dc704c8 100644 +--- a/src/content/ui/Components/VideoPlayer.qml ++++ b/src/content/ui/Components/VideoPlayer.qml +@@ -17,6 +17,7 @@ Item { + property alias source: player.source + property alias position: player.position + property bool looping ++ property alias volume: audioOutput.volume + + signal errorOccurred(error: int, errorString: string) + +@@ -35,6 +36,9 @@ Item { + MediaPlayer { + id: player + videoOutput: videoOutput ++ audioOutput: AudioOutput { ++ id: audioOutput ++ } + loops: root.looping ? MediaPlayer.Infinite : 0 + + onMediaStatusChanged: { +diff --git a/src/content/ui/PostDelegate/VideoAttachment.qml b/src/content/ui/PostDelegate/VideoAttachment.qml +index 91f78047c..58a19936b 100644 +--- a/src/content/ui/PostDelegate/VideoAttachment.qml ++++ b/src/content/ui/PostDelegate/VideoAttachment.qml +@@ -21,6 +21,7 @@ MediaContainer { + property alias showControls: mediaControls.visible + property bool looping: false + property alias loading: busyIndicator.visible ++ property real volume: 1.0 + + signal errorOccurred(error: int, errorString: string) + +@@ -56,6 +57,7 @@ MediaContainer { + source: root.videoUrl + looping: root.looping + onErrorOccurred: (error, errorString) => root.errorOccurred(error, errorString) ++ volume: root.volume + } + } + +@@ -78,6 +80,13 @@ MediaContainer { + + HoverHandler { + id: hoverHandler ++ ++ acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad ++ onHoveredChanged: { ++ if (hovered) { ++ mediaControlsHideTimer.restart(); ++ } ++ } + } + + QQC2.BusyIndicator { +@@ -132,13 +141,18 @@ MediaContainer { + + radius: Kirigami.Units.cornerRadius + color: Kirigami.Theme.backgroundColor +- opacity: hoverHandler.hovered && !root.isSensitive && !(player.item?.paused ?? true) && !(player.item?.stopped ?? true) ? 0.7 : 0.0 ++ opacity: (mediaControlsHideTimer.running || volumePopupTimer || hoverHandler.hovered) && !root.isSensitive && !(player.item?.paused ?? true) && !(player.item?.stopped ?? true) ? 0.7 : 0.0 + Behavior on opacity { + OpacityAnimator { + duration: Kirigami.Units.longDuration + } + } + ++ Timer { ++ id: mediaControlsHideTimer ++ interval: 5000 ++ } ++ + RowLayout { + id: mediaControlsLayout + anchors.fill: parent +@@ -173,6 +187,80 @@ MediaContainer { + + onMoved: player.item?.setPosition(value) + } ++ ++ QQC2.ToolButton { ++ id: volumeButton ++ ++ property var unmuteVolume: root.volume ++ ++ icon.name: root.volume <= 0 ? "player-volume-muted-symbolic" : "player-volume-symbolic" ++ ++ QQC2.ToolTip.visible: hovered ++ QQC2.ToolTip.delay: Kirigami.Units.toolTipDelay ++ QQC2.ToolTip.timeout: Kirigami.Units.toolTipDelay ++ QQC2.ToolTip.text: i18nc("@action:button", "Volume") ++ ++ onClicked: { ++ if (root.volume > 0) { ++ root.volume = 0; ++ } else if (unmuteVolume === 0) { ++ root.volume = 1; ++ } else { ++ root.volume = unmuteVolume; ++ } ++ } ++ ++ QQC2.Popup { ++ id: volumePopup ++ y: -height ++ width: volumeButton.width ++ visible: (volumeButton.hovered || volumePopupHoverHandler.hovered || volumeSlider.hovered || volumePopupTimer.running) ++ ++ focus: true ++ padding: Kirigami.Units.smallSpacing ++ closePolicy: QQC2.Popup.NoAutoClose ++ ++ QQC2.Slider { ++ id: volumeSlider ++ anchors.centerIn: parent ++ implicitHeight: Kirigami.Units.gridUnit * 7 ++ orientation: Qt.Vertical ++ padding: 0 ++ from: 0 ++ to: 1 ++ value: root.volume ++ onMoved: { ++ root.volume = value; ++ volumeButton.unmuteVolume = value; ++ } ++ } ++ Timer { ++ id: volumePopupTimer ++ interval: 1000 ++ } ++ HoverHandler { ++ id: volumePopupHoverHandler ++ ++ onHoveredChanged: { ++ if (hovered) { ++ volumePopupTimer.restart(); ++ } ++ } ++ } ++ background: Kirigami.ShadowedRectangle { ++ radius: Kirigami.Units.cornerRadius ++ color: Kirigami.Theme.backgroundColor ++ opacity: 0.8 ++ ++ shadow { ++ xOffset: 0 ++ yOffset: 4 ++ color: Qt.rgba(0, 0, 0, 0.3) ++ size: Kirigami.Units.largeSpacing ++ } ++ } ++ } ++ } + } + } + } +-- +GitLab + diff --git a/patches/upstream_revert_357ef28c_accountpage-use-formlinkdelegate-for-open-ser.patch b/patches/upstream_revert_357ef28c_accountpage-use-formlinkdelegate-for-open-ser.patch new file mode 100644 index 0000000..bcd40b7 --- /dev/null +++ b/patches/upstream_revert_357ef28c_accountpage-use-formlinkdelegate-for-open-ser.patch @@ -0,0 +1,34 @@ +From 9f072ecdff448bd7448267271aa7ef7a55445c39 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Aur=C3=A9lien=20COUDERC?= +Date: Thu, 24 Jul 2025 18:48:58 +0200 +Subject: [PATCH] Revert "AccountPage: Use FormLinkDelegate for "Open Server in + Browser" button" + +This reverts commit 357ef28c2b91b724874797514b5bdffd86b727c5. +--- + src/content/ui/Settings/AccountPage.qml | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/src/content/ui/Settings/AccountPage.qml b/src/content/ui/Settings/AccountPage.qml +index 04e1b050..c8612bb5 100644 +--- a/src/content/ui/Settings/AccountPage.qml ++++ b/src/content/ui/Settings/AccountPage.qml +@@ -213,13 +213,12 @@ Kirigami.Page { + FormCard.FormDelegateSeparator { + } + +- FormCard.FormLinkDelegate { ++ FormCard.FormButtonDelegate { + Layout.fillWidth: true + id: websiteDelegate +- icon.name: "globe-symbolic" + text: i18nc("@abel Account preferences", "Open Server in Browser") + description: i18n("Some settings can only be configured on your server's website.") +- url: AccountManager.selectedAccount.instanceUri ++ onClicked: Qt.openUrlExternally(AccountManager.selectedAccount.instanceUri) + } + } + } +-- +2.50.0 + diff --git a/qmldeps.optional b/qmldeps.optional new file mode 100644 index 0000000..4d54729 --- /dev/null +++ b/qmldeps.optional @@ -0,0 +1 @@ +QtWebView diff --git a/qmldeps.overrides b/qmldeps.overrides new file mode 100644 index 0000000..e960857 --- /dev/null +++ b/qmldeps.overrides @@ -0,0 +1,2 @@ +org.kde.tokodon tokodon +org.kde.tokodon.private tokodon diff --git a/rules b/rules new file mode 100755 index 0000000..72e6621 --- /dev/null +++ b/rules @@ -0,0 +1,9 @@ +#!/usr/bin/make -f + +export DEB_BUILD_MAINT_OPTIONS = hardening=+all + +%: + dh $@ + +override_dh_auto_test: + xvfb-run -a dh_auto_test diff --git a/salsa-ci.yml b/salsa-ci.yml new file mode 100644 index 0000000..31e31c9 --- /dev/null +++ b/salsa-ci.yml @@ -0,0 +1,6 @@ +include: + - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml + - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml +variables: + SALSA_CI_DISABLE_MISSING_BREAKS: 'no' + SALSA_CI_DISABLE_RC_BUGS: 'no' diff --git a/source/format b/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/upstream/metadata b/upstream/metadata new file mode 100644 index 0000000..d1e77c2 --- /dev/null +++ b/upstream/metadata @@ -0,0 +1,7 @@ +Bug-Database: https://bugs.kde.org/buglist.cgi?product=tokodon&resolution=--- +Bug-Submit: https://bugs.kde.org/enter_bug.cgi?format=guided&product=tokodon +Changelog: https://invent.kde.org/network/tokodon/-/commits/ +Donation: https://www.kde.org/community/donations/ +Repository: https://invent.kde.org/network/tokodon.git +Repository-Browse: https://invent.kde.org/network/tokodon +Security-Contact: security@kde.org diff --git a/upstream/signing-key.asc b/upstream/signing-key.asc new file mode 100644 index 0000000..a9bed94 --- /dev/null +++ b/upstream/signing-key.asc @@ -0,0 +1,158 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +xFvzcCS8ghlF +=NTMM +-----END PGP PUBLIC KEY BLOCK----- +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQENBFlRpEYBCACecX3F5xzF6wzeXiuBAuHq74bVHON7I89U+ROloEWYUYMRNTz2 +l1BkNHWRTTqfmPO7LhMY6g4gOPeQVCwgTGVjI8bn6sJd3SFdeiRvvaFBpmn7SjBd +s1rkKKJIjeMUl1w8dFnmf22V0PnhSSepmNwmd8RQnl1umCTSihDJydGxixw6ZNhr +4tzbn+Rfadybli61H2hc6/JJHe91i+V1ltgkHwGcs6MUCqXgSL0dUIJs49gSrla0 +gkrcJYF5MWyGxKlajbCjkMCJtN+8bhEmpc4Oe8NZ33arEWnlyh1RVgi5p3RTNApY +Pxctcg57ExczbKn9R8VLYmPJ7Di3gX0cmotrABEBAAG0HkNocmlzdG9waCBGZWNr +IDxjZmVja0BrZGUub3JnPokBTgQTAQgAOBYhBPIydeS/EK/B32kUptvSzok+LRyH +BQJZUaRGAhsDBQsJCAcCBhUICQoLAgQWAgMBAh4BAheAAAoJENvSzok+LRyHeWcH +/A1E2d5UL2oHsrLIolIiWMmheRorcac+0Hgll1mMUQ5tfPH+LVzgrlMMG7g1Amky +Hk1qZ5oszrXUg2H/28/cOF/WVlHgQcSGr7aQbHieUivPtZMua+lHUdILC3UV2l1V +22Zz8HIDl4kxmK6EpoNIOK5Mo550S3e3AKYq5pa/FlckCV9/JoK9+thRCsoAAj3g +oWwTx9RY5pmLPtklqyC5961Je7KHSIVqapJ/G5DX+yfOC1Psc+vIfyQVqnaefZPW +dIxXQQhn46i6IRRimw94Gkwca+wslkimt/L/Z7ByZqBsXMyixSQPq+dtSO9CMgr0 +WxTX78wATkTGzh5oSwKCMga5AQ0EWVGkRgEIAMuUnfNfrdx8xn7Jjcm6MGkB/Yep +XVysrlHxUUS6q7629JdSlVWnQo9GFO927GZClWI9rCGLQMfZZk/jfgKV/nkpLod3 +I51remOg7ohSkwRLAdwJ7xCuNrafhKntFh5/NxuaXxaVIY1muvZbTAsIRyks2jCE +pUoK43Z8dr4/QPhBstssB8czDME1Tw4r7X+RwjFrQqDItFv6f0BIdEwR462khLEw +vbXRN1nzs+6Y0foJbJCS3VDZC9scsrrMVMV+OEBF3DXp9ypSWsLnkuBPPIus6Y8G +j7JvYUBtrUhKL5a7o5G3Te9YhwGgOKVqWlncs6ZLiOV6HnG0BO3xdPcn09cAEQEA +AYkBNgQYAQgAIBYhBPIydeS/EK/B32kUptvSzok+LRyHBQJZUaRGAhsMAAoJENvS +zok+LRyHaRMIAI5YaTfGeQDmR08I2LvztOEH/3YF63cNCP/Vp+WAtF/Kr8mMFpFS +oTHJNMi7p964lHYTTPzPeQzLzV3ayiQjq+DHs6HFmYl73ukzlGGc7KDlyhugQjm6 +AqNtqqXAVykaixnFj8jf2WtQGl1hqpm8GhDRBmZycqMqne4tZokujhtpdC6suRvc +AB0S+lRZUwrY05k6Nc1A8J8k/lxXXa9KzXNaqKsqppgBZoqKN3zS4146uEjvuLsh +CarZ/6uUidvP0LBTR7HKye5A9Qdbjlg9qvtR7YF3hqy4g1PRNZWRlsQ1pkCdCTfN +TA+HYUzK0ESVpY72lWvH49lNg+ufZ1bKvKI= +=MZJ5 +-----END PGP PUBLIC KEY BLOCK----- +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +=PVLg +-----END PGP PUBLIC KEY BLOCK----- diff --git a/watch b/watch new file mode 100644 index 0000000..2c4d4e7 --- /dev/null +++ b/watch @@ -0,0 +1,2 @@ +version=4 +opts=pgpsigurlmangle=s/$/.sig/ https://download.kde.org/stable/release-service/([\d.]+)/src/@PACKAGE@-([\d.]+)\.tar\.xz