Add separate notification setting for image messages #3060

Open
opened 2026-02-20 22:17:25 -05:00 by deekerman · 13 comments
Owner

Originally created by @GeneralUser01 on GitHub (Oct 25, 2025).

Context

No response

Description

In the settings for messages, notifications can be turned on or off for various types of messages but one type that is missing is the image message. This is especially noticible when posting several images at once where others would typically receive one notification per image to dismiss one by one. As for noticing a new image message, I would usually post a description first and that way only one notification is sent regardless of how many complementary images are sent, given that the setting for notifications on text messages is on while that for image messages is off.

To implement this I think image messages could use their own message type and the settings should then have this type added to the list. Note that this would be two types since there is not only "Text message" but also "Private text message" to make the image message equivalents for.

Mumble component

Client

OS-specific?

No

Additional information

No response

Originally created by @GeneralUser01 on GitHub (Oct 25, 2025). ### Context _No response_ ### Description In the settings for messages, notifications can be turned on or off for various types of messages but one type that is missing is the image message. This is especially noticible when posting several images at once where others would typically receive one notification per image to dismiss one by one. As for noticing a new image message, I would usually post a description first and that way only one notification is sent regardless of how many complementary images are sent, given that the setting for notifications on text messages is on while that for image messages is off. To implement this I think image messages could use their own message type and the settings should then have this type added to the list. Note that this would be two types since there is not only "Text message" but also "Private text message" to make the image message equivalents for. ### Mumble component Client ### OS-specific? No ### Additional information _No response_
Author
Owner

@Krzmbrzl commented on GitHub (Dec 23, 2025):

@shubhamkoti cool - for this particular issue, you will want to have a closer look at the Log class as well as fields qmMessages and?qmMessageSounds in Settings to see how existing event types are handled.

Let me know if you have questions

@Krzmbrzl commented on GitHub (Dec 23, 2025): @shubhamkoti cool - for this particular issue, you will want to have a closer look at the `Log` class as well as fields `qmMessages` and?`qmMessageSounds` in `Settings` to see how existing event types are handled. Let me know if you have questions
Author
Owner

@28arnab commented on GitHub (Jan 16, 2026):

Found this class

Added ImageMessage at the end of enum MsgType. Am i going in the right direction ?

class Log : public QObject {
	friend class LogConfig;

private:
	Q_OBJECT
	Q_DISABLE_COPY(Log)
public:
	enum MsgType {
		DebugInfo,
		CriticalError,
		Warning,
		Information,
		ServerConnected,
		ServerDisconnected,
		UserJoin,
		UserLeave,
		Recording,
		YouKicked,
		UserKicked,
		SelfMute,
		OtherSelfMute,
		YouMuted,
		YouMutedOther,
		OtherMutedOther,
		ChannelJoin,
		ChannelLeave,
		PermissionDenied,
		TextMessage,
		SelfUnmute,
		SelfDeaf,
		SelfUndeaf,
		UserRenamed,
		SelfChannelJoin,
		SelfChannelJoinOther,
		ChannelJoinConnect,
		ChannelLeaveDisconnect,
		PrivateTextMessage,
		ChannelListeningAdd,
		ChannelListeningRemove,
		PluginMessage,
		ImageMessage // here i added this
	};

	enum LogColorType { Time, Server, Privilege, Source, Target };
	static const MsgType firstMsgType = DebugInfo;
	static const MsgType lastMsgType  = ChannelListeningRemove;

	// Display order in settingsscreen, allows to insert new events without breaking config-compatibility with older
	// versions.
	static const MsgType msgOrder[];

protected:
	/// Mutex for qvDeferredLogs
	static QMutex qmDeferredLogs;
	/// A vector containing deferred log messages
	static QVector< LogMessage > qvDeferredLogs;

	QHash< MsgType, int > qmIgnore;
	static const char *msgNames[];
	static const char *colorClasses[];
#ifndef USE_NO_TTS
	TextToSpeech *tts;
#endif
	unsigned int uiLastId;
	QDate qdDate;
	static const QStringList allowedSchemes();

public:
	Log(QObject *p = nullptr);
	QString msgName(MsgType t) const;
	void setIgnore(MsgType t, int ignore = 1 << 30);
	void clearIgnore();
	static QString validHtml(const QString &html, QTextCursor *tc = nullptr);
	static QString imageToImg(const QByteArray &format, const QByteArray &image);
	static QString imageToImg(QImage img, int maxSize = 0);
	static QString msgColor(const QString &text, LogColorType t);
	static QString formatClientUser(ClientUser *cu, LogColorType t, const QString &displayName = QString());
	static QString formatChannel(::Channel *c);
	/// Either defers the LogMessage or defers it, depending on whether Global::l is created already
	/// (if it is, it is used to directly log the msg)
	static void logOrDefer(Log::MsgType mt, const QString &console, const QString &terse = QString(),
						   bool ownMessage = false, const QString &overrideTTS = QString(), bool ignoreTTS = false);
public slots:
	// We have to explicitly use Log::MsgType and not only MsgType in order to be able to use QMetaObject::invokeMethod
	// with this function.
	void log(Log::MsgType mt, const QString &console, const QString &terse = QString(), bool ownMessage = false,
			 const QString &overrideTTS = QString(), bool ignoreTTS = false);
	/// Logs LogMessages that have been deferred so far
	void processDeferredLogs();

signals:
	/// Signal emitted when there was a message received whose type was configured to spawn a notification
	void notificationSpawned(QString title, QString body, QSystemTrayIcon::MessageIcon icon);

	/// Signal emitted when there was a message received whose type was configured to highlight the application
	void highlightSpawned();
};
@28arnab commented on GitHub (Jan 16, 2026): ## Found this class Added ImageMessage at the end of enum MsgType. Am i going in the right direction ? ```cpp class Log : public QObject { friend class LogConfig; private: Q_OBJECT Q_DISABLE_COPY(Log) public: enum MsgType { DebugInfo, CriticalError, Warning, Information, ServerConnected, ServerDisconnected, UserJoin, UserLeave, Recording, YouKicked, UserKicked, SelfMute, OtherSelfMute, YouMuted, YouMutedOther, OtherMutedOther, ChannelJoin, ChannelLeave, PermissionDenied, TextMessage, SelfUnmute, SelfDeaf, SelfUndeaf, UserRenamed, SelfChannelJoin, SelfChannelJoinOther, ChannelJoinConnect, ChannelLeaveDisconnect, PrivateTextMessage, ChannelListeningAdd, ChannelListeningRemove, PluginMessage, ImageMessage // here i added this }; enum LogColorType { Time, Server, Privilege, Source, Target }; static const MsgType firstMsgType = DebugInfo; static const MsgType lastMsgType = ChannelListeningRemove; // Display order in settingsscreen, allows to insert new events without breaking config-compatibility with older // versions. static const MsgType msgOrder[]; protected: /// Mutex for qvDeferredLogs static QMutex qmDeferredLogs; /// A vector containing deferred log messages static QVector< LogMessage > qvDeferredLogs; QHash< MsgType, int > qmIgnore; static const char *msgNames[]; static const char *colorClasses[]; #ifndef USE_NO_TTS TextToSpeech *tts; #endif unsigned int uiLastId; QDate qdDate; static const QStringList allowedSchemes(); public: Log(QObject *p = nullptr); QString msgName(MsgType t) const; void setIgnore(MsgType t, int ignore = 1 << 30); void clearIgnore(); static QString validHtml(const QString &html, QTextCursor *tc = nullptr); static QString imageToImg(const QByteArray &format, const QByteArray &image); static QString imageToImg(QImage img, int maxSize = 0); static QString msgColor(const QString &text, LogColorType t); static QString formatClientUser(ClientUser *cu, LogColorType t, const QString &displayName = QString()); static QString formatChannel(::Channel *c); /// Either defers the LogMessage or defers it, depending on whether Global::l is created already /// (if it is, it is used to directly log the msg) static void logOrDefer(Log::MsgType mt, const QString &console, const QString &terse = QString(), bool ownMessage = false, const QString &overrideTTS = QString(), bool ignoreTTS = false); public slots: // We have to explicitly use Log::MsgType and not only MsgType in order to be able to use QMetaObject::invokeMethod // with this function. void log(Log::MsgType mt, const QString &console, const QString &terse = QString(), bool ownMessage = false, const QString &overrideTTS = QString(), bool ignoreTTS = false); /// Logs LogMessages that have been deferred so far void processDeferredLogs(); signals: /// Signal emitted when there was a message received whose type was configured to spawn a notification void notificationSpawned(QString title, QString body, QSystemTrayIcon::MessageIcon icon); /// Signal emitted when there was a message received whose type was configured to highlight the application void highlightSpawned(); }; ```
Author
Owner

@Hartmnt commented on GitHub (Jan 16, 2026):

@28arnab
Good first step. Now you need to find out where TextMessage is used and then change the code to use your new enum constant in case the message is an image. How exactly that is determined is the integral part of your solution.

@Hartmnt commented on GitHub (Jan 16, 2026): @28arnab Good first step. Now you need to find out where ``TextMessage`` is used and then change the code to use your new enum constant in case the message is an image. How exactly that is determined is the integral part of your solution.
Author
Owner

@28arnab commented on GitHub (Jan 16, 2026):

The person who raised the issue mentioned about private text message. So we need a private image message along with image message ?

@28arnab commented on GitHub (Jan 16, 2026): The person who raised the issue mentioned about private text message. So we need a private image message along with image message ?
Author
Owner

@Krzmbrzl commented on GitHub (Jan 16, 2026):

Yes

@Krzmbrzl commented on GitHub (Jan 16, 2026): Yes
Author
Owner

@28arnab commented on GitHub (Jan 19, 2026):

This works for ImageMessage ? found msgTextMessage in the file Messages.cpp. Based on that i thought this should work.

void MainWindow::msgImageMessage(const MumbleProto::TextMessage &msg) {
	ACTOR_INIT;
	QString target;

	// Silently drop the message if this user is set to "ignore"
	if (pSrc && pSrc->bLocalIgnore)
		return;

	const QString &plainName = pSrc ? pSrc->qsName : tr("Server", "message from");
	const QString &name      = pSrc ? Log::formatClientUser(pSrc, Log::Source) : tr("Server", "message from");
	bool privateMessage      = false;

	if (msg.tree_id_size() > 0) {
		target += tr("Tree");
	} else if (msg.channel_id_size() > 0) {
		target += tr("Channel");
	} else if (msg.session_size() > 0) {
		target += tr("Private");
		privateMessage = true;
	}

	// If NoScope or NoAuthor is selected generate a new string to pass to TTS
	const QString overrideTTS = [&]() {
		if (!Global::get().s.bTTSNoScope && !Global::get().s.bTTSNoAuthor) {
			return QString();
		}
		const QString plainMessage = QTextDocumentFragment::fromHtml(u8(msg.message())).toPlainText();
		if (Global::get().s.bTTSNoScope && Global::get().s.bTTSNoAuthor) {
			return plainMessage;
		}
		const QString prefixTTS = Global::get().s.bTTSNoScope ? plainName : target;
		return tr("%1: %2").arg(prefixTTS).arg(plainMessage);
	}();

	const QString prefixMessage = target.isEmpty() ? name : tr("(%1) %2").arg(target).arg(name);

	Global::get().l->log(privateMessage ? Log::PrivateImageMessage : Log::ImageMessage,
						 tr("%1: %2").arg(prefixMessage).arg(u8(msg.message())), tr("Message from %1").arg(plainName),
						 false, overrideTTS, pSrc ? pSrc->bLocalIgnoreTTS : false);
}
@28arnab commented on GitHub (Jan 19, 2026): This works for ImageMessage ? found msgTextMessage in the file Messages.cpp. Based on that i thought this should work. ```cpp void MainWindow::msgImageMessage(const MumbleProto::TextMessage &msg) { ACTOR_INIT; QString target; // Silently drop the message if this user is set to "ignore" if (pSrc && pSrc->bLocalIgnore) return; const QString &plainName = pSrc ? pSrc->qsName : tr("Server", "message from"); const QString &name = pSrc ? Log::formatClientUser(pSrc, Log::Source) : tr("Server", "message from"); bool privateMessage = false; if (msg.tree_id_size() > 0) { target += tr("Tree"); } else if (msg.channel_id_size() > 0) { target += tr("Channel"); } else if (msg.session_size() > 0) { target += tr("Private"); privateMessage = true; } // If NoScope or NoAuthor is selected generate a new string to pass to TTS const QString overrideTTS = [&]() { if (!Global::get().s.bTTSNoScope && !Global::get().s.bTTSNoAuthor) { return QString(); } const QString plainMessage = QTextDocumentFragment::fromHtml(u8(msg.message())).toPlainText(); if (Global::get().s.bTTSNoScope && Global::get().s.bTTSNoAuthor) { return plainMessage; } const QString prefixTTS = Global::get().s.bTTSNoScope ? plainName : target; return tr("%1: %2").arg(prefixTTS).arg(plainMessage); }(); const QString prefixMessage = target.isEmpty() ? name : tr("(%1) %2").arg(target).arg(name); Global::get().l->log(privateMessage ? Log::PrivateImageMessage : Log::ImageMessage, tr("%1: %2").arg(prefixMessage).arg(u8(msg.message())), tr("Message from %1").arg(plainName), false, overrideTTS, pSrc ? pSrc->bLocalIgnoreTTS : false); } ```
Author
Owner

@Krzmbrzl commented on GitHub (Jan 19, 2026):

Just try it out and see whether it works or not :)

@Krzmbrzl commented on GitHub (Jan 19, 2026): Just try it out and see whether it works or not :)
Author
Owner

@28arnab commented on GitHub (Jan 30, 2026):

Help building the project plz

Things i did

  1. cloned mumble and mumble-vcpkg
  2. boostraped vcpkg then executed build bat script then it built for ages
  3. then i was presented this
Files exported at: D:\repositories\community\vcpkg\mumble_env.x64-windows-static-md.929d669018
To use exported libraries in CMake projects, add -DCMAKE_TOOLCHAIN_FILE=D:/repositories/community/vcpkg/mumble_env.x64-windows-static-md.929d669018/scripts/buildsystems/vcpkg.cmake to your CMake command line.
  1. created CMakePresets.json file in the root of mumbile and added this

{
  "version": 3,
  "configurePresets": [
    {
      "name": "vcpkg-static",
      "generator": "Ninja",
      "binaryDir": "${sourceDir}/out/build/vcpkg-static",
      "cacheVariables": {
        "CMAKE_TOOLCHAIN_FILE": "D:/repositories/community/vcpkg/mumble_env.x64-windows-static-md.929d669018/scripts/buildsystems/vcpkg.cmake",
        "VCPKG_TARGET_TRIPLET": "x64-windows",
        "CMAKE_BUILD_TYPE": "Debug"
      }
    }
  ]
}
  1. output dialog
[CMake] -- Checking for module 'harfbuzz'
1> [CMake] --   Package 'harfbuzz' not found
1> [CMake] -- Using system Harfbuzz.
1> [CMake] -- Using system Freetype.
1> [CMake] -- Using system Jpeg.
1> [CMake] -- Qt6 component found: Widgets | Version: 6.9.1
1> [CMake] CMake Error at cmake/pkg-utils.cmake:87 (message):
1> [CMake]   Ice component not found: Ice
1> [CMake] Call Stack (most recent call first):
1> [CMake]   src/murmur/CMakeLists.txt:199 (find_pkg)
1> [CMake] -- Configuring incomplete, errors occurred!
1> 'C:\WINDOWS\system32\cmd.exe' '/c "%SYSTEMROOT%\System32\chcp.com 65001 >NUL && "C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\18\COMMUNITY\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\CMAKE\CMake\bin\cmake.exe"  -G "Ninja"  -DCMAKE_TOOLCHAIN_FILE:STRING="D:/repositories/community/vcpkg/mumble_env.x64-windows-static-md.929d669018/scripts/buildsystems/vcpkg.cmake" -DVCPKG_TARGET_TRIPLET:STRING="x64-windows" -DCMAKE_BUILD_TYPE:STRING="Debug"   -DCMAKE_MAKE_PROGRAM="C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\18\COMMUNITY\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\CMAKE\Ninja\ninja.exe" "D:\repositories\community\mumble" 2>&1"' execution failed with error: ''C:\WINDOWS\system32\cmd.exe' '/c "%SYSTEMROOT%\System32\chcp.com 65001 >NUL && "C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\18\COMMUNITY\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\CMAKE\CMake\bin\cmake.exe"  -G "Ninja"  -DCMAKE_TOOLCHAIN_FILE:STRING="D:/repositories/community/vcpkg/mumble_env.x64-windows-static-md.929d669018/scripts/buildsystems/vcpkg.cmake" -DVCPKG_TARGET_TRIPLET:STRING="x64-windows" -DCMAKE_BUILD_TYPE:STRING="Debug"   -DCMAKE_MAKE_PROGRAM="C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\18\COMMUNITY\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\CMAKE\Ninja\ninja.exe" "D:\repositories\community\mumble" 2>&1"' returned with exit code: 1'.

@28arnab commented on GitHub (Jan 30, 2026): # Help building the project plz ## Things i did 1. cloned mumble and mumble-vcpkg 2. boostraped vcpkg then executed build bat script then it built for ages 3. then i was presented this ``` Files exported at: D:\repositories\community\vcpkg\mumble_env.x64-windows-static-md.929d669018 To use exported libraries in CMake projects, add -DCMAKE_TOOLCHAIN_FILE=D:/repositories/community/vcpkg/mumble_env.x64-windows-static-md.929d669018/scripts/buildsystems/vcpkg.cmake to your CMake command line. ``` 4. created CMakePresets.json file in the root of mumbile and added this ```json { "version": 3, "configurePresets": [ { "name": "vcpkg-static", "generator": "Ninja", "binaryDir": "${sourceDir}/out/build/vcpkg-static", "cacheVariables": { "CMAKE_TOOLCHAIN_FILE": "D:/repositories/community/vcpkg/mumble_env.x64-windows-static-md.929d669018/scripts/buildsystems/vcpkg.cmake", "VCPKG_TARGET_TRIPLET": "x64-windows", "CMAKE_BUILD_TYPE": "Debug" } } ] } ``` 5. output dialog ``` [CMake] -- Checking for module 'harfbuzz' 1> [CMake] -- Package 'harfbuzz' not found 1> [CMake] -- Using system Harfbuzz. 1> [CMake] -- Using system Freetype. 1> [CMake] -- Using system Jpeg. 1> [CMake] -- Qt6 component found: Widgets | Version: 6.9.1 1> [CMake] CMake Error at cmake/pkg-utils.cmake:87 (message): 1> [CMake] Ice component not found: Ice 1> [CMake] Call Stack (most recent call first): 1> [CMake] src/murmur/CMakeLists.txt:199 (find_pkg) 1> [CMake] -- Configuring incomplete, errors occurred! 1> 'C:\WINDOWS\system32\cmd.exe' '/c "%SYSTEMROOT%\System32\chcp.com 65001 >NUL && "C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\18\COMMUNITY\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\CMAKE\CMake\bin\cmake.exe" -G "Ninja" -DCMAKE_TOOLCHAIN_FILE:STRING="D:/repositories/community/vcpkg/mumble_env.x64-windows-static-md.929d669018/scripts/buildsystems/vcpkg.cmake" -DVCPKG_TARGET_TRIPLET:STRING="x64-windows" -DCMAKE_BUILD_TYPE:STRING="Debug" -DCMAKE_MAKE_PROGRAM="C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\18\COMMUNITY\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\CMAKE\Ninja\ninja.exe" "D:\repositories\community\mumble" 2>&1"' execution failed with error: ''C:\WINDOWS\system32\cmd.exe' '/c "%SYSTEMROOT%\System32\chcp.com 65001 >NUL && "C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\18\COMMUNITY\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\CMAKE\CMake\bin\cmake.exe" -G "Ninja" -DCMAKE_TOOLCHAIN_FILE:STRING="D:/repositories/community/vcpkg/mumble_env.x64-windows-static-md.929d669018/scripts/buildsystems/vcpkg.cmake" -DVCPKG_TARGET_TRIPLET:STRING="x64-windows" -DCMAKE_BUILD_TYPE:STRING="Debug" -DCMAKE_MAKE_PROGRAM="C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\18\COMMUNITY\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\CMAKE\Ninja\ninja.exe" "D:\repositories\community\mumble" 2>&1"' returned with exit code: 1'. ```
Author
Owner

@28arnab commented on GitHub (Feb 1, 2026):

@Krzmbrzl to fix Ice component not found: Ice what should i do ?
i found a ice wrapper generater script

@28arnab commented on GitHub (Feb 1, 2026): @Krzmbrzl to fix Ice component not found: Ice what should i do ? i found a ice wrapper generater script
Author
Owner

@Krzmbrzl commented on GitHub (Feb 1, 2026):

@28arnab you need to use the triplet x64-windows-static-md. See the build instructions at https://github.com/mumble-voip/mumble/blob/master/docs/dev/build-instructions/build_static.md

Also, if you used our vcpkg fork with the build script, you'll have to create a Release build (the script doesn't build Debug versions of dependencies)

@Krzmbrzl commented on GitHub (Feb 1, 2026): @28arnab you need to use the triplet `x64-windows-static-md`. See the build instructions at https://github.com/mumble-voip/mumble/blob/master/docs/dev/build-instructions/build_static.md Also, if you used our vcpkg fork with the build script, you'll have to create a Release build (the script doesn't build Debug versions of dependencies)
Author
Owner

@28arnab commented on GitHub (Feb 1, 2026):

@Krzmbrzl

1> [CMake] -- Build files have been written to: D:/repositories/community/mumble/build/x64-windows-static-md
1> Extracted CMake variables.
1> Extracted source files and headers.
1> Extracted code model.
1> Extracted toolchain configurations.
1> Extracted includes paths.
1> CMake generation finished.

finally.. had to disable ice now i can generate the make files but then when i try to build

cmake --build .\build\x64-windows-static-md\

[116/569] Building C object src\mumble\rnnoise\CMakeFiles\rnnoise.dir__\rnnoise-src\src\celt_lpc.c.obj
cl : Command line warning D9025 : overriding '/W4' with '/w'
[143/569] Linking C shared library speexdsp.dll
FAILED: speexdsp.dll src/mumble/speexdsp/speexdsp.lib

@28arnab commented on GitHub (Feb 1, 2026): @Krzmbrzl 1> [CMake] -- Build files have been written to: D:/repositories/community/mumble/build/x64-windows-static-md 1> Extracted CMake variables. 1> Extracted source files and headers. 1> Extracted code model. 1> Extracted toolchain configurations. 1> Extracted includes paths. 1> CMake generation finished. finally.. had to disable ice now i can generate the make files but then when i try to build cmake --build .\build\x64-windows-static-md\ [116/569] Building C object src\mumble\rnnoise\CMakeFiles\rnnoise.dir\__\rnnoise-src\src\celt_lpc.c.obj cl : Command line warning D9025 : overriding '/W4' with '/w' [143/569] Linking C shared library speexdsp.dll FAILED: speexdsp.dll src/mumble/speexdsp/speexdsp.lib
Author
Owner

@Krzmbrzl commented on GitHub (Feb 1, 2026):

had to disable ice

then you're still doing something differently from the build instructions. Ice compiles and works on Windows as well.

From what you have written, it is impossible to guess what might be the issue. There is not enough information…

For further help with getting Mumble to build properly, please switch to Matrix (at https://matrix.to/#/#mumble-dev:matrix.org) so we don't derail this issue further with debugging your build setup).

@Krzmbrzl commented on GitHub (Feb 1, 2026): > had to disable ice then you're still doing something differently from the build instructions. Ice compiles and works on Windows as well. From what you have written, it is impossible to guess what might be the issue. There is not enough information… For further help with getting Mumble to build properly, please switch to Matrix (at https://matrix.to/#/#mumble-dev:matrix.org) so we don't derail this issue further with debugging your build setup).
Author
Owner

@28arnab commented on GitHub (Feb 11, 2026):

My program compiles after changes but crashes when i try to execute mumble.exe. what should i do ? how to debug this ?

@28arnab commented on GitHub (Feb 11, 2026): My program compiles after changes but crashes when i try to execute mumble.exe. what should i do ? how to debug this ?
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/mumble-mumble-voip#3060
No description provided.