Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package vermouth for openSUSE:Factory checked in at 2026-07-18 22:24:47 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/vermouth (Old) and /work/SRC/openSUSE:Factory/.vermouth.new.24530 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "vermouth" Sat Jul 18 22:24:47 2026 rev:20 rq:1366465 version:1.9.7 Changes: -------- --- /work/SRC/openSUSE:Factory/vermouth/vermouth.changes 2026-07-09 22:20:19.064039354 +0200 +++ /work/SRC/openSUSE:Factory/.vermouth.new.24530/vermouth.changes 2026-07-18 22:26:00.896156202 +0200 @@ -1,0 +2,9 @@ +Sat Jul 18 01:57:56 UTC 2026 - Jehu Marcos Herrera Puentes <[email protected]> + +- Bump to version 1.9.7: + * feat: Made the deletion behind one more step + * fix: Shuffle the labels of show/hide + * feat: Add the ability to hide games + * Update sums and commits + +------------------------------------------------------------------- Old: ---- vermouth-1.9.6.tar.xz New: ---- vermouth-1.9.7.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ vermouth.spec ++++++ --- /var/tmp/diff_new_pack.QUpIhA/_old 2026-07-18 22:26:01.472175655 +0200 +++ /var/tmp/diff_new_pack.QUpIhA/_new 2026-07-18 22:26:01.476175790 +0200 @@ -17,7 +17,7 @@ Name: vermouth -Version: 1.9.6 +Version: 1.9.7 Release: 0 Summary: A Wine/Proton game launcher for KDE License: MIT ++++++ _service ++++++ --- /var/tmp/diff_new_pack.QUpIhA/_old 2026-07-18 22:26:01.512177006 +0200 +++ /var/tmp/diff_new_pack.QUpIhA/_new 2026-07-18 22:26:01.516177141 +0200 @@ -3,7 +3,7 @@ <service name="tar_scm" mode="manual"> <param name="scm">git</param> <param name="url">https://github.com/dekomote/vermouth.git</param> - <param name="revision">v1.9.6</param> + <param name="revision">v1.9.7</param> <param name="match-tag">v[0-9]*</param> <param name="filename">vermouth</param> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.QUpIhA/_old 2026-07-18 22:26:01.544178087 +0200 +++ /var/tmp/diff_new_pack.QUpIhA/_new 2026-07-18 22:26:01.548178222 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/dekomote/vermouth.git</param> - <param name="changesrevision">a0cc7c81070af456ab8c18e53ae630a18280df21</param></service></servicedata> + <param name="changesrevision">90b29349531f4294a18659b11c95d49cdfe421fb</param></service></servicedata> (No newline at EOF) ++++++ vermouth-1.9.6.tar.xz -> vermouth-1.9.7.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vermouth-1.9.6/CMakeLists.txt new/vermouth-1.9.7/CMakeLists.txt --- old/vermouth-1.9.6/CMakeLists.txt 2026-07-08 08:23:24.000000000 +0200 +++ new/vermouth-1.9.7/CMakeLists.txt 2026-07-15 14:56:02.000000000 +0200 @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.20) -project(vermouth VERSION 1.9.6 LANGUAGES CXX) +project(vermouth VERSION 1.9.7 LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vermouth-1.9.6/assets/com.dekomote.vermouth.metainfo.xml.in new/vermouth-1.9.7/assets/com.dekomote.vermouth.metainfo.xml.in --- old/vermouth-1.9.6/assets/com.dekomote.vermouth.metainfo.xml.in 2026-07-08 08:23:24.000000000 +0200 +++ new/vermouth-1.9.7/assets/com.dekomote.vermouth.metainfo.xml.in 2026-07-15 14:56:02.000000000 +0200 @@ -40,6 +40,11 @@ </screenshots> <content_rating type="oars-1.1" /> <releases> + <release version="1.9.7" date="2026-07-15"> + <description> + <p>This release adds the Hide feature - the ability to hide games and toggle visibility. It also changes the deletion workflow.</p> + </description> + </release> <release version="1.9.6" date="2026-07-08"> <description> <p>This release fixes few UI issues - icon consistencies across desktop environments and button alignments.</p> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vermouth-1.9.6/com.dekomote.vermouth.flathub.yml new/vermouth-1.9.7/com.dekomote.vermouth.flathub.yml --- old/vermouth-1.9.6/com.dekomote.vermouth.flathub.yml 2026-07-08 08:23:24.000000000 +0200 +++ new/vermouth-1.9.7/com.dekomote.vermouth.flathub.yml 2026-07-15 14:56:02.000000000 +0200 @@ -98,5 +98,5 @@ sources: - type: git url: https://github.com/dekomote/vermouth.git - tag: v1.9.6 - commit: c7d36ff6aa504e2fa4836922604ca98f5c9e4bc3 + tag: v1.9.7 + commit: a0cc7c81070af456ab8c18e53ae630a18280df21 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vermouth-1.9.6/packaging/.SRCINFO new/vermouth-1.9.7/packaging/.SRCINFO --- old/vermouth-1.9.6/packaging/.SRCINFO 2026-07-08 08:23:24.000000000 +0200 +++ new/vermouth-1.9.7/packaging/.SRCINFO 2026-07-15 14:56:02.000000000 +0200 @@ -1,6 +1,6 @@ pkgbase = vermouth pkgdesc = A game and app launcher for Linux - native, Windows, and retro - pkgver = 1.9.6 + pkgver = 1.9.7 pkgrel = 1 url = https://github.com/dekomote/vermouth arch = x86_64 @@ -19,7 +19,7 @@ optdepends = sdl2: gamepad support provides = vermouth conflicts = vermouth - source = vermouth-1.9.6.tar.gz::https://github.com/dekomote/vermouth/archive/refs/tags/v1.9.6.tar.gz - sha256sums = 6e88eb438d45e1ae5ec54fce521c451775887a935d4a0e905902f1cb50d58eff + source = vermouth-1.9.7.tar.gz::https://github.com/dekomote/vermouth/archive/refs/tags/v1.9.7.tar.gz + sha256sums = d8c50c2c1f6452568c48c13c1b8f055d2a9d56b8f5dbfb1946db788c47a8efeb pkgname = vermouth diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vermouth-1.9.6/packaging/PKGBUILD new/vermouth-1.9.7/packaging/PKGBUILD --- old/vermouth-1.9.6/packaging/PKGBUILD 2026-07-08 08:23:24.000000000 +0200 +++ new/vermouth-1.9.7/packaging/PKGBUILD 2026-07-15 14:56:02.000000000 +0200 @@ -1,6 +1,6 @@ # Maintainer: Dejan Noveski <[email protected]> pkgname=vermouth -pkgver=1.9.6 +pkgver=1.9.7 pkgrel=1 pkgdesc="A game and app launcher for Linux - native, Windows, and retro" arch=('x86_64') @@ -27,7 +27,7 @@ 'sdl2: gamepad support' ) source=("${pkgname}-${pkgver}.tar.gz::https://github.com/dekomote/vermouth/archive/refs/tags/v${pkgver}.tar.gz") -sha256sums=('6e88eb438d45e1ae5ec54fce521c451775887a935d4a0e905902f1cb50d58eff') +sha256sums=('d8c50c2c1f6452568c48c13c1b8f055d2a9d56b8f5dbfb1946db788c47a8efeb') build() { cd "${pkgname}-${pkgver}" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vermouth-1.9.6/packaging/vermouth.spec new/vermouth-1.9.7/packaging/vermouth.spec --- old/vermouth-1.9.6/packaging/vermouth.spec 2026-07-08 08:23:24.000000000 +0200 +++ new/vermouth-1.9.7/packaging/vermouth.spec 2026-07-15 14:56:02.000000000 +0200 @@ -1,5 +1,5 @@ Name: vermouth -Version: 1.9.6 +Version: 1.9.7 Release: 1%{?dist} Summary: A no-frills Wine/Proton game launcher for KDE License: MIT @@ -74,6 +74,8 @@ %{_datadir}/locale/*/LC_MESSAGES/vermouth.mo %changelog +* Wed Jul 15 2026 Dejan Noveski <[email protected]> - 1.9.7-1 +- Hide/Visibility UI, Deletion workflow changes * Wed Jul 8 2026 Dejan Noveski <[email protected]> - 1.9.6-1 - UI fixes * Mon Jun 29 2026 Dejan Noveski <[email protected]> - 1.9.5-1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vermouth-1.9.6/qml/AppGridView.qml new/vermouth-1.9.7/qml/AppGridView.qml --- old/vermouth-1.9.6/qml/AppGridView.qml 2026-07-08 08:23:24.000000000 +0200 +++ new/vermouth-1.9.7/qml/AppGridView.qml 2026-07-15 14:56:02.000000000 +0200 @@ -9,6 +9,9 @@ property bool searchActive: false + onShowHiddenChanged: appModel.showHidden = showHidden + Component.onCompleted: appModel.showHidden = showHidden + Connections { target: launcher function onRomCoreMissing(platformSlug, rom) { @@ -81,8 +84,10 @@ required property int steamAppId required property string platformSlug required property string customCorePath + required property bool hidden readonly property bool hasPrefix: runtimeType === "proton" || runtimeType === "wine" + opacity: cardFrame.hidden ? 0.6 : 1 QQC2.Menu { id: contextMenu @@ -259,27 +264,26 @@ } QQC2.MenuSeparator {} QQC2.MenuItem { + text: cardFrame.hidden ? i18n("Unhide") : i18n("Hide") + icon.name: cardFrame.hidden ? "view-visible-symbolic" : "view-hidden-symbolic" + onTriggered: { + var app = appModel.getApp(cardFrame.index); + app.hidden = !app.hidden; + appModel.editApp(cardFrame.index, app); + } + } + QQC2.MenuItem { text: i18n("Edit") icon.name: "document-edit-symbolic" onTriggered: addDialog.openForEdit(cardFrame.index) } QQC2.MenuItem { - text: i18n("Remove") - icon.name: "edit-delete-symbolic" - onTriggered: { - confirmDeleteAppDialog.runtimeType = cardFrame.runtimeType; - confirmDeleteAppDialog.payload = cardFrame.index; - confirmDeleteAppDialog.open(); - } - } - QQC2.MenuItem { - visible: cardFrame.hasPrefix - height: visible ? implicitHeight : 0 - text: i18n("Remove and Delete Prefix") + text: i18n("Delete") icon.name: "edit-delete-symbolic" onTriggered: { - confirmDeleteDialog.payload = cardFrame.index; - confirmDeleteDialog.open(); + deleteChoiceDialog.runtimeType = cardFrame.runtimeType; + deleteChoiceDialog.payload = cardFrame.index; + deleteChoiceDialog.open(); } } } @@ -356,6 +360,43 @@ } ] } + + Kirigami.PromptDialog { + id: deleteChoiceDialog + property var payload + property string runtimeType: "" + title: i18n("Delete app?") + subtitle: i18n("Choose what to delete.") + standardButtons: Kirigami.Dialog.NoButton + + customFooterActions: [ + Kirigami.Action { + text: i18n("Delete App") + icon.name: "edit-delete-symbolic" + onTriggered: { + confirmDeleteAppDialog.payload = deleteChoiceDialog.payload; + confirmDeleteAppDialog.runtimeType = deleteChoiceDialog.runtimeType; + deleteChoiceDialog.close(); + confirmDeleteAppDialog.open(); + } + }, + Kirigami.Action { + text: i18n("Delete App and Prefix") + icon.name: "edit-delete-symbolic" + visible: deleteChoiceDialog.runtimeType === "proton" || deleteChoiceDialog.runtimeType === "wine" + onTriggered: { + confirmDeleteDialog.payload = deleteChoiceDialog.payload; + deleteChoiceDialog.close(); + confirmDeleteDialog.open(); + } + }, + Kirigami.Action { + text: i18n("Cancel") + icon.name: "dialog-cancel" + onTriggered: deleteChoiceDialog.close() + } + ] + } Kirigami.PromptDialog { id: confirmDeleteAppDialog diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vermouth-1.9.6/qml/GameGridView.qml new/vermouth-1.9.7/qml/GameGridView.qml --- old/vermouth-1.9.6/qml/GameGridView.qml 2026-07-08 08:23:24.000000000 +0200 +++ new/vermouth-1.9.7/qml/GameGridView.qml 2026-07-15 14:56:02.000000000 +0200 @@ -10,6 +10,7 @@ property bool showNames: true property bool active: true property bool lightsOut: false + property bool showHidden: true topMargin: Kirigami.Units.mediumSpacing bottomMargin: Kirigami.Units.mediumSpacing leftMargin: Kirigami.Units.mediumSpacing @@ -21,6 +22,7 @@ property alias scaleFactor: gridView.scaleFactor property alias viewType: gridView.viewType property alias showNames: gridView.showNames + property alias showHidden: gridView.showHidden } cellWidth: { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vermouth-1.9.6/qml/Main.qml new/vermouth-1.9.7/qml/Main.qml --- old/vermouth-1.9.6/qml/Main.qml 2026-07-08 08:23:24.000000000 +0200 +++ new/vermouth-1.9.7/qml/Main.qml 2026-07-15 14:56:02.000000000 +0200 @@ -391,6 +391,14 @@ } }, Kirigami.Action { + text: gridView.showHidden ? i18n("Hide") : i18n("Show Hidden") + icon.name: gridView.showHidden ? "view-hidden-symbolic" : "view-visible-symbolic" + onTriggered: { + gridView.showHidden = !gridView.showHidden; + } + shortcut: "Ctrl+H" + }, + Kirigami.Action { text: i18n("&Settings") icon.name: "preferences-system-symbolic" onTriggered: { @@ -697,6 +705,16 @@ Layout.fillWidth: true } QQC2.ToolButton { + icon.name: gridView.showHidden ? "view-hidden-symbolic" : "view-visible-symbolic" + focusPolicy: Qt.NoFocus + onClicked: gridView.showHidden = !gridView.showHidden + // Unfortunately, appimage won't respect the color scheme so I have to improvise: + icon.color: root.lightsOut ? root.loText : (highlighted ? Kirigami.Theme.highlightColor : Kirigami.Theme.textColor) + QQC2.ToolTip.text: gridView.showHidden ? i18n("Hide") : i18n("Show Hidden") + QQC2.ToolTip.visible: hovered + QQC2.ToolTip.delay: Kirigami.Units.toolTipDelay + } + QQC2.ToolButton { icon.name: "changes-allow-symbolic" focusPolicy: Qt.NoFocus checkable: true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vermouth-1.9.6/src/appentry.cpp new/vermouth-1.9.7/src/appentry.cpp --- old/vermouth-1.9.6/src/appentry.cpp 2026-07-08 08:23:24.000000000 +0200 +++ new/vermouth-1.9.7/src/appentry.cpp 2026-07-15 14:56:02.000000000 +0200 @@ -47,6 +47,7 @@ obj[QStringLiteral("customCorePath")] = customCorePath; obj[QStringLiteral("launchOptions")] = launchOptions; obj[QStringLiteral("enableLogging")] = enableLogging; + obj[QStringLiteral("hidden")] = hidden; return obj; } @@ -71,6 +72,7 @@ {QStringLiteral("customCorePath"), customCorePath}, {QStringLiteral("launchOptions"), launchOptions}, {QStringLiteral("enableLogging"), enableLogging}, + {QStringLiteral("hidden"), hidden}, }; } @@ -98,6 +100,7 @@ e.customCorePath = obj[QStringLiteral("customCorePath")].toString(); e.launchOptions = obj[QStringLiteral("launchOptions")].toString(); e.enableLogging = obj[QStringLiteral("enableLogging")].toBool(false); + e.hidden = obj[QStringLiteral("hidden")].toBool(false); return e; } @@ -123,4 +126,5 @@ customCorePath = app[QStringLiteral("customCorePath")].toString(); launchOptions = app[QStringLiteral("launchOptions")].toString(); enableLogging = app.value(QStringLiteral("enableLogging"), false).toBool(); + hidden = app.value(QStringLiteral("hidden"), false).toBool(); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vermouth-1.9.6/src/appentry.h new/vermouth-1.9.7/src/appentry.h --- old/vermouth-1.9.6/src/appentry.h 2026-07-08 08:23:24.000000000 +0200 +++ new/vermouth-1.9.7/src/appentry.h 2026-07-15 14:56:02.000000000 +0200 @@ -52,6 +52,7 @@ QString customCorePath; QString launchOptions; bool enableLogging = false; + bool hidden = false; QJsonObject toJson() const; QVariantMap toVariantMap() const; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vermouth-1.9.6/src/appmodel.cpp new/vermouth-1.9.7/src/appmodel.cpp --- old/vermouth-1.9.6/src/appmodel.cpp 2026-07-08 08:23:24.000000000 +0200 +++ new/vermouth-1.9.7/src/appmodel.cpp 2026-07-15 14:56:02.000000000 +0200 @@ -23,7 +23,7 @@ { m_filtered.clear(); for (int i = 0; i < m_entries.size(); ++i) { - if (m_filter.isEmpty() || m_entries[i].name.contains(m_filter, Qt::CaseInsensitive)) + if ((m_showHidden || !m_entries[i].hidden) && (m_filter.isEmpty() || m_entries[i].name.contains(m_filter, Qt::CaseInsensitive))) m_filtered.append(i); } std::sort(m_filtered.begin(), m_filtered.end(), [this](int a, int b) { @@ -31,6 +31,18 @@ }); } +void AppModel::setShowHidden(bool showHidden) +{ + if (m_showHidden == showHidden) + return; + m_showHidden = showHidden; + beginResetModel(); + rebuildFilter(); + endResetModel(); + Q_EMIT showHiddenChanged(); + Q_EMIT countChanged(); +} + void AppModel::setFilterString(const QString &filter) { if (m_filter == filter) @@ -91,6 +103,8 @@ return e.launchOptions; case EnableLoggingRole: return e.enableLogging; + case HiddenRole: + return e.hidden; } return {}; } @@ -116,6 +130,7 @@ {CustomCorePathRole, "customCorePath"}, {LaunchOptionsRole, "launchOptions"}, {EnableLoggingRole, "enableLogging"}, + {HiddenRole, "hidden"}, }; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vermouth-1.9.6/src/appmodel.h new/vermouth-1.9.7/src/appmodel.h --- old/vermouth-1.9.6/src/appmodel.h 2026-07-08 08:23:24.000000000 +0200 +++ new/vermouth-1.9.7/src/appmodel.h 2026-07-15 14:56:02.000000000 +0200 @@ -8,6 +8,7 @@ { Q_OBJECT Q_PROPERTY(int count READ count NOTIFY countChanged) + Q_PROPERTY(bool showHidden READ showHidden WRITE setShowHidden NOTIFY showHiddenChanged) public: enum Roles { @@ -29,6 +30,7 @@ CustomCorePathRole, LaunchOptionsRole, EnableLoggingRole, + HiddenRole, }; explicit AppModel(QObject *parent = nullptr); @@ -55,11 +57,18 @@ Q_INVOKABLE void updateAppArt(const QString &id, const QString &iconPath, const QString &gridPath, const QString &heroPath, const QString &logoPath, int steamGridDbId = 0); + bool showHidden() const + { + return m_showHidden; + } + void setShowHidden(bool showHidden); + void load(); void save() const; Q_SIGNALS: void countChanged(); + void showHiddenChanged(); private: int sourceIndex(int filteredIndex) const; @@ -69,4 +78,5 @@ QVector<AppEntry> m_entries; QVector<int> m_filtered; // indices into m_entries QString m_filter; + bool m_showHidden = false; };
