Releases: nutjob-laboratories/merk
Release list
0.052.250
Summary
MERK is a free, open source, multiple-document interface Internet relay chat for Windows, Linux, and macOS. It can be run with Python 3.9+ if PyQt5 and Twisted are installed; to connect to TLS/SSL enabled servers, install pyOpenSSL and service_identity. If you encounter problems running MERK with Python 3.9+ on Windows, you may need to install pywin32. All PyInstaller versions of MERK are built for 64-bit operating systems.
What's New
- Many dialogs have been made easier to use for users that are new to IRC.
- The options in the input options menu will only have an effect on the subwindow it was used on. This allows users to temporarily disable MERK markdown, emojis, ASCIImojis, IRC color input, or change the spellchecking language for a specific subwindow.
- The
QUITmessage bug has been fixed. When disconnecting from a server with the/quitcommand, the quit message was not always being sent to the server. - The "Windows" menu is much more useful. Currently active subwindows are shown in bold and hidden windows in italics. Shortcuts are displayed for every subwindow entry.
- Many, many bugfixes.
Files
- Python distribution
merk-0.052-250.zipcontains the Python code for MERK; unzip the source to any folder, navigate to that folder with your favorite console application, and typepython merk.pyto run MERK. Instructions for running the source on Windows, Linux, and macOS can be found in the repository.
- Windows PyInstaller distributions
merk-windows-0.052-250.zipcan be unzipped to any folder, and contains an executable and a directory with support files; unzip to any folder, and double click onmerk.exeto run MERK.merk-windows-setup-0.052-250.zipcontains an installer for MERK; unzip and double clicksetup.exe.
- Linux PyInstaller distribution
merk-linux-0.052-250.zipcan be unzipped to any folder, and contains an executable and a directory with support files; unzip to any folder, and double click onmerkto run MERK.merk-linux-0.052-250.flatpakcan be installed withflatpack install --user merk-linux-0.052-250.flatpak.
- Other files
MERK_User_Guide.pdfcontains a guide for using MERK, as well as writing scripts and plugins. It is available in the app, in the "help" menu.CHANGELOGcontains a list of changes in new release.
All downloads contain README.html, which contains usage information about the application and a list of all commands supported by MERK. Further information can be found in the MERK_User_Guide.pdf, available here or from the Help menu.
MERK has a plugin framework. For more information about how to write plugins, please see MERK_User_Guide.pdf. The official repository contains some example plugins right here.
Configuration files and logs are stored in a directory named .merk in the user's home directory.
CHANGELOG for 0.052.250
APPLICATION CHANGES
- Bugfix: changed the "create channel script" and "edit channel script" options
in the windowbar right click menu for channel windows to make a little more
sense. - Tweaked the right click menu for the server window chat display to show the
reported hostname for the server for disconnection, rather than just the
connecting server's IP/host and port. - A server's reported hostname is now used in the "IRC" menu for disconnection.
- The "Quit" entry in the "IRC" menu is now showed in bold, to match changes
in a lot of right click menus to show a "this will do something immediately"
vibe for the entry. - Tweaked the "Tools" menu. Now, if there are no logs to view, the "Logs" entry
will no longer be visible in the menu. Also, the "Logs" entry has been moved
to the bottom of the menu. - Tweaked the "Help" menu, and removed some duplicated entries.
- Moved the functionality for the "/window restart" command to the main
application window. - Added an option to the "/window restart" command to reconnect to all currently
connected servers on restart. - Added the "reconnect to all servers" option to the "dark mode" restart option
triggered from the "Settings" menu. - Added the "reconnect to all servers" option to the "apply & restart" option
in the "Settings" dialog. - Bugfix: the "apply & restart" button could be hidden in some circumstances
in the "Settings" dialog, even if it was needed. - Channel and private chat status bars now identify exactly what the window is
for (channels state the name, and private chats identify the user), as well
as how MERK is connected to the server (SSL or TCP/IP). - Added an option to toggle the window information display on channel and
private chat status bars. The option has been added to the "Subwindows"
section in the "Settings" dialog. - Tweaked the right click menu for channel chat displays.
- Reduced the amount of "spam" displayed in server windows during registration.
- Bugfix: when using the "/quit" command, quit messages weren't always being
sent to the server. - Bugfix: the URL "detector" function would recognize FTP as a valid schema.
- If a dialog is going to make a permanent change (delete or overwrite a file,
etc), the application will now set the default button to "cancel". - Resized the application icon in the resource file to match the size of all
other icons (48x48). - Cleaned up the layout of the text styler. Some of the elements are now smaller
to make the dialog a bit slimmer, and the "Apply" and "Cancel" buttons are now
"on their own", to make them a bit clearer. - Created a setting for the minimum font point size for the application in the
configuration file. This can only be changed by the editing the configuration
file or with the "/config" command. - Added a setting to show all channel status symbols in a user's right click
menu in the userlist. The setting has been added to the "Settings" dialog, on
the "Channels" page. - Added a messagebox to ask the user if they're sure they want to unban specific
users. - Rearranged the "Tools" menu.
- Cleaned up some of the icons. The "command" icon was removed, and instead the
"script" icon is used wherever it was used. - Rearranged the various subwindow right click menus.
- Re-worked the "Windows" menu. All subwindows now appear at the top, and the
server submenus are now under a "header" at the bottom of the subwindow list. - Added an option to toggle the "edit installed/connection scripts and plugins"
options in the "Tools" menu. The setting has been added to the config file
and the "Settings" dialog, on the "Menubar" page. - Moved alias interpolation/emoji/ASCIImoji/markdown injection to individual
subwindows, rather than from the "main" application module. - All of the options in the input options menu now ONLY affect the current
subwindow, rather than setting a global setting. This matches how the
spellcheck menu has worked for a few dozen versions. If all of the options
that can be en/disabled or executed in the input options menu are disabled,
the input options button will be hidden - Removed the ability to toggle input highlighting and autocomplete from the
input options menu. The only way to toggle these settings is from the
"Settings" dialog, from the "Settings" menu, or with the "/config" command. - Bugfix: the "Servers" option for autocomplete on the "Input" section of the
"Settings" dialog would be disabled even if "autocomplete" was enabled if
had ever been disabled. - The "active connections" section of the "Windows" menu will only be shown if
there is at least one REGISTERED connection to a server; after that, server
submenus for unregistered connections will be shown, but disabled. - Bugfix: disabling scripting could cause the connection dialog to crash the
application. - The "Run a script" entry in subwindow right click menus now launches a dialog
to get the script filename and any arguments to pass to the script, rather
than just getting a filename and executing it. This is the same dialog that
appears if "/script" is ran without any arguments. - Bugfix: disconnecting from a server could sometimes crash the client.
- Shortcuts for subwindows are now shown every place that subwindow appears in
the "Windows" menu. - Added channel list subwindows to the server submenu in the "Windows" menu.
- Re-added "run a script on this window" option to the windowbar right click
menus. - The currently active window is now shown in bold in the "Windows" menu.
- Bugfix: turning off IRC network links would not "refresh" subwindow status
bars. - Bugfix: right clicking on a channel list, editor, README, or log manager
entry in the windowbar could crash the client. - The buttons used in the windowbar can no longer accept focus.
- Added an optional option (heh) to restart the client to the "Settings" menu.
This option is turned off by default, but can be enabled on the "Menubar"
section of the dialog. - Server submenus are now hidden for connections that have not completed
registration in the "Windows" menu. - Removed some unneeded settings from the configuration file...
0.052.200
Summary
MERK is a free, open source, multiple-document interface Internet relay chat for Windows, Linux, and macOS. It can be run with Python 3.9+ if PyQt5 and Twisted are installed; to connect to TLS/SSL enabled servers, install pyOpenSSL and service_identity. If you encounter problems running MERK with Python 3.9+ on Windows, you may need to install pywin32. All PyInstaller versions of MERK are built for 64-bit operating systems.
What's New
- MERK is much more user friendly. Dialogs are much clearer about how exactly they work and what they do, as are various menus.
- The channel banlist is now useful. Users with channel privileges can now unban users directly from the banlist, or just copy the banlist entry to the clipboard. All entries in the banlist can be unbanned at once, or copied to the clipboard. For users without channel privileges, the banlist does not offer these options.
- The channel mode menu is now "prettier" for unprivileged users. Icons have been added to the different recognized modes to give hints to the user about what the mode does.
- Most menus have been "cleaned up". This includes main application menus, and all right click menus.
- Most dialogs have been "cleaned up". Most dialogs for asking the user a question or for a behavior choice have been made clearer and "prettier".
- Subwindows can now be navigated with shortcuts. The "Windows" menu contains specific shortcuts for IRC subwindows, and moving through the subwindow list can be done by pressing
Alt+]to move to the "next" subwindow andAlt+[to move to the "previous" subwindow. To cascade all subwindows, useAlt+C, and to tile them, useAlt+T. Shortcuts have also been added for the Log Manager subwindow (Alt+L), channel list subwindows (Ctrl+Alt+NUMBER), and the README subwindow (Alt+R). All of these shortcuts can be enabled (the default) or disabled from the "Settings" dialog or with the/configcommand. - Various server status controls have been added to the "Windows" menu. The ability to toggle "away/back" statuses, to change the user's nickname, to join a channel, and to run a script on the server window have been added to the "Windows" menu. Users can toggle all of these entries in the "Settings" dialog.
- Many, many bugfixes.
Files
- Python distribution
merk-0.052-200.zipcontains the Python code for MERK; unzip the source to any folder, navigate to that folder with your favorite console application, and typepython merk.pyto run MERK. Instructions for running the source on Windows, Linux, and macOS can be found in the repository.
- Windows PyInstaller distributions
merk-windows-0.052-200.zipcan be unzipped to any folder, and contains an executable and a directory with support files; unzip to any folder, and double click onmerk.exeto run MERK.merk-windows-setup-0.052-200.zipcontains an installer for MERK; unzip and double clicksetup.exe.
- Linux PyInstaller distribution
merk-linux-0.052-200.zipcan be unzipped to any folder, and contains an executable and a directory with support files; unzip to any folder, and double click onmerkto run MERK.merk-linux-0.052-200.flatpakcan be installed withflatpack install --user merk-linux-0.052-200.flatpak.
- Other files
MERK_User_Guide.pdfcontains a guide for using MERK, as well as writing scripts and plugins. It is available in the app, in the "help" menu.CHANGELOGcontains a list of changes in new release.
All downloads contain README.html, which contains usage information about the application and a list of all commands supported by MERK. Further information can be found on the MERK source code repository.
MERK has a plugin framework. For more information about how to write plugins, please see MERK_User_Guide.pdf. The official repository contains some example plugins right here.
Configuration files and logs are stored in a directory named .merk in the user's home directory.
CHANGELOG for 0.052.200
APPLICATION CHANGES
- Users can be unbanned from the "banned users" menu now, but only if they have
the proper channel status. If the user is not privileged, they will only see
a list of banned users. Each entry in the banlist gets a submenu that will
allow privileged users to either copy the banlist entry to the clipboard or
unban the user. The entire banlist can be copied to the clipboard, and if
the user is able, all entries in the banlist can be unbanned. - Changed the "kick & ban" menu entry icon in the userlist menu to the "close"
icon. - Added icons to the non-privileged user channel mode display.
- Modified the "server information menu" to use icons in the status display,
and be a bit easier to read. - Added the ability to en/disable KNOCK on channels to the channel mode right
click menu (for channel operators). - Bugfix: the server information menu is now disabled until server registration
is complete. - Bugfix: the "view network logs" and "view/refresh channel list" options in the
"Windows" menu are now no longer visible if a server connection has not
finished server registration. - Bugfix: the "view network logs" option in the "Windows" menu is only visible
if the client actually has logs for that network. - The menubar right click menu is now turned off by default.
- Removed the label from the "widowbar" and "menubar" context menus.
- Changed the configuration file setting names for the windowbar and menubar
context menu toggles. - Removed references to "context" menus from the "settings" dialog, and
replaced them with "right click menu". - Removed the reference to "context" menus from the windowbar settings menu.
- Moved the "show active window first" setting in the windowbar context menu to
the "sorting" submenu. - Consolidated the "appearance" settings in the windowbar context menu into its
own submenu. - Cleaned up the resource file, and removed some unused icons.
- Rearranged the right click chat display menus for server, channel, and
private chat subwindows. - The "unban all" option in the channel mode menu now asks users if they are
sure they want to unban all banned users before doing it. - Cleaned up the "Tools" menu entries.
- Cleaned up the "Windows" menu.
- Bugfix: opening up a connection script in the editor would not "activate" the
proper file save shortcut. - Various menus will now let the user know if they want to "edit" or "create"
channel and connection scripts; if the desired script exists, they will be
prompted to "edit" the script, and if the script does NOT exist, they will be
prompted the "create" the script. - Bugfix: the text style editor now shows the actual hostID of windows rather
than the reported hostname of the server. - Removed the "run script" option from server subwindow chat display right click
menus. - The text style editor now displays the network of the different active
subwindows, reflecting how text style files are actually saved and loaded. - Server windows are now displayed in bold in the "window selection" widget in
the text style editor. Server windows also will have their network name (if
the server is part of a network) shown in the title of the dialog; otherwise,
the title will just have "(SERVER)" appended to it. - The default "save style as" directory is now set to the current "styles"
directory. - Bugfix: the "default/unknown network name" from the configuration file was
not always being used properly in the source. - Bugfix: the connection dialog did not always obey the "do not save" option.
- Bugfix: the "next/previous/etc" subwindow controls still appeared in the
windowbar right click menu still appeared even if there were no subwindows
open. - Bugfix: channel lists did not appear in the "Windows" menu subwindow list.
- All subwindows are now displayed in the "Windows" menu. Hidden windows are
displayed in italics. This includes the individual server menus. - Stole an idea from GIMP, and assigned a shortcut to every IRC subwindow in
the "Windows" menu; now, you can navigate to a window with holding the "alt"
key and the number of the window displayed in the menu. - Added a shortcut (that actually works!) for moving to the "next" and
"previous" subwindow. Hitting "Alt+]" moves to the "next" subwindow, and
hittig "Alt+[" moves to the previous subwinndow. - Removed the "next", "previous", etc, menu options from the windowbar right
click menu. - Bugfix: entries in the userlist in the text style dialog are no longer
selectable. - Bugfix: text in the text display in the text style dialog is no longer
selectable. - Bugfix: fixed a bug in the "/private" command; outgoing messages were being
displayed twice. - Changed the name of the "/private" command to "/query".
- Bugfix: the "/query" command didn't check to make sure that the target was a
nickname and not a channel. - Added shortcuts for cascading and tiling subwindows.
- Made some of the "filters" on the channel list dialog slightly smaller.
*...
0.052.150
Summary
MERK is a free, open source, multiple-document interface Internet relay chat for Windows, Linux, and macOS. It can be run with Python 3.9+ if PyQt5 and Twisted are installed; to connect to TLS/SSL enabled servers, install pyOpenSSL and service_identity. If you encounter problems running MERK with Python 3.9+ on Windows, you may need to install pywin32. All PyInstaller versions of MERK are built for 64-bit operating systems.
What's New
/op,/deop,/voice, and/devoicecommands. These commands can take as many nicknames as input as the user wants to enter. For example, to "voice" every user in a channel, use a built-in alias and call/voice $_PRESENT.- New feature: view server log on disconnection. If a connection is lost, and "notify on lost/failed connection" is turned on, the user can view the total server log at the time of disconnection.
- New setting: show/hide channel modes in the channel information display.
- New
Windowclass methods for plugins. Send batches of raw IRC commands to the server (without triggering flood protection), re-render a subwindow's chat display, or scroll the subwindow's chat display to the top or the bottom. - The
Windowclass methodsprint()andprints()can now display "raw" Python variables. Values passed to these methods are rendered as f-strings, allowing for these methods to be used for debugging purposes. An optional argument to these methods can be used to print data without interpolating emoji and ASCIImoji shortcodes and aliases into the output. - New built-in alias:
$_SASL. This will be set to1if the client has successfully logged in via SASL, and set to0if not. - Aliases can now be escaped with
\. To display an alias name without interpolating it's value into output, place\before the alias symbol. For example, to display the new$_SASLbuilt-in alias's name, you would use\$_SASL. - More explanations of settings (and how they work) have been added to the Settings dialog.
Files
- Python distribution
merk-0.052-150.zipcontains the Python code for MERK; unzip the source to any folder, navigate to that folder with your favorite console application, and typepython merk.pyto run MERK. Instructions for running the source on Windows, Linux, and macOS can be found in the repository.
- Windows PyInstaller distributions
merk-windows-0.052-150.zipcan be unzipped to any folder, and contains an executable and a directory with support files; unzip to any folder, and double click onmerk.exeto run MERK.merk-windows-setup-0.052-150.zipcontains an installer for MERK; unzip and double clicksetup.exe.
- Linux PyInstaller distribution
merk-linux-0.052-150.zipcan be unzipped to any folder, and contains an executable and a directory with support files; unzip to any folder, and double click onmerkto run MERK.merk-linux-0.052-150.flatpakcan be installed withflatpack install --user merk-linux-0.052-150.flatpak.
- Other files
MERK_User_Guide.pdfcontains a guide for using MERK, as well as writing scripts and plugins. It is available in the app, in the "help" menu.CHANGELOGcontains a list of changes in new release.
All downloads contain README.html, which contains usage information about the application and a list of all commands supported by MERK. Further information can be found on the MERK source code repository.
MERK has a plugin framework. For more information about how to write plugins, please see MERK_User_Guide.pdf. The official repository contains some example plugins right here.
Configuration files and logs are stored in a directory named .merk in the user's home directory.
CHANGELOG for 0.052.150
APPLICATION CHANGES
- Tweaked how "large" logs are displayed in the Log Manager. Now, some text in
the status bar of the dialog are displayed in red, just like how the log name
is displayed in the red in the log list. - Bugfix: the log list in the Log Manager is now properly reloaded when a log
is exported. - Tweaked the "logs are too large" dialog that can appear on startup.
- Made the nickname color display in the right click userlist menu a bit
cleaner: it's a bit smaller, and has a border around it to hint to users that
you can't click on it. - Changed the "switch to dark/light mode" restart message box to make it
clearer to users that they will disconnect from all servers on restart. - Changed how restarting to switch into light/dark mode works. If triggered
from the checkbox in the "Settings" menu, this will restart and show the
initial connection dialog. - Changed how restarting from the "Settings" dialog works. If triggered, this
will restart the app and go straight to the interface, skipping the
connection dialog. - New commands: /op, /deop, /voice, and /devoice, which sets channel operator
status on a nick, removes channel operator status from a nick, sets voiced
status on a nick, and removes voiced status on a nick, respectively. Multiple
nicks can be passed to each command to perform the mode change on each nick.
These commands can be called from any server or chat subwindow, but if called
from any non-channel subwindow, the channel argument must be used. - Bugfix: calling some commands with "non-standard" arguments could
potentially crash the application. - The $_PRESENT built-in alias now separates all nicks with spaces, rather than
with commas. - Topic tool-tips are now "word-wrapped".
- Bugfix: if a channel topic contained HTML, this would be rendered as HTML
when the user was notified via system message. The HTML in channel topics is
now properly escaped. - The /op, /deop, /voice, and /devoice commands now send MODE commands in
batches, if the number of users being passed to it is very long (for example,
using any of these commands with $_PRESENT may result in a large number of
MODE commands; the MODE command can take 10 users maximum as arguments.
This splits the users passed into groups of 5, sends the first MODE command
immediately, and then sends the rest at a rate of 1 per second). - New feature: view server log on a lost connection. This feature was requested
by user "lostblur". The server log can only be viewed if the "notify on lost/
failed connection" option is enabled. This setting can be found in the
"Connectionn" section of the settings dialog. - Tweaked the "lost connection" message boxes.
- Added an optional argumet to the "/window layout" command to automatically
write the generated layout script to a file. - Added the connection time to the server information menu.
- Tweaked the order of entries in the server information menu.
- Bugfix: changing timestamp settings now refreshes the server information menu
properly. - Bugfix: timestamps in the Log Manager now follow the user's timestamp
preferences. - Timestamps in the Log Manager, WHOIS messages, and "Resumed on" messages now
show whether a given time is AM or PM for messages, etc, if 24-hour timestamps
are not turned on. - The "box" around the channel name/mode and user count in the channel
information display is now slightly "lighter", depending on whether the client
is running in dark or light mode. - Changed the internal setting name for the "show channel name in channel
information display" setting in the config file. This will result in the
setting "resetting" to the default (turned on) for users. - The "channel user count display" will now display if there's only 1 user in
the channel. - Added a setting to toggle whether channel modes are displayed inside the
"channel information display". The new setting has been added to both the
Settings dialog and the configuration file. - Setting search results with "/config TERM" are now sorted alphabetically.
- Setting dumps with "/config" are now sorted alphabetically.
- Added an "available server" count to the connection dialog.
- When calling "/window" with no arguments, the subwindow list is now sorted
alphabetically. - Bugfix: outgoing private messages (when displayed in a channel log, or in
a private chat that is NOT with the target) are now displayed correctly in
the log viewer. - White colored text in the log viewer is now colored grey instead of black.
The user should be able to see the text, yet still know that it was colored. - Bugfix: outgoing private messages suffered the same "bug" previously
mentioned when being exported to JSON or ASCII text with the log manager. - Bugfix: the "hyperlink" color in the dark palette file has been lightened.
Users, if they wish to use the new color, should delete "dark.palette" in the
"styles" directory; the application will recreate the file with the default
colors. - Added a new command-line flag: "--reset-style", which resets the dark mode
palette, the default dark mode text style, and the default light mode text
style to all default values. Using the "--reset-all" command-line flag will
also trigger this reset. - The current...
0.052.100
Summary
MERK is a free, open source, multiple-document interface Internet relay chat for Windows, Linux, and macOS. It can be run with Python 3.9+ if PyQt5 and Twisted are installed; to connect to TLS/SSL enabled servers, install pyOpenSSL and service_identity. If you encounter problems running MERK with Python 3.9+ on Windows, you may need to install pywin32. All PyInstaller versions of MERK are built for 64-bit operating systems.
What's New
- The log manager loads faster. The log manager no longer offers a full file preview of data to export. This speeds up the log manager a lot.
- New Window class method:
input(). This allows plugins to send a string to a subwindow, and treat it exactly as if that string was typed into the subwindow's text input widget and the return key was pressed. Optionally, this method can be used to set the value in the text input widget without "executing" it. - MERK automatically offers to backup large log files. Since very large log files can cause MERK to run slowly and consume an excessive amount of resources, large log files are now searched for on startup, and if any are found, an option to backup the large log files is offered. Complete logs will be exported to a human readable format; the in-application log will be trimmed.
- The full text of the GPL 3 license is now included in the User Guide.
- Many, many, many bugfixes. There are bugfixes for the application, plugin API, and the core IRC client networking code.
Files
- Python distribution
merk-0.052-100.zipcontains the Python code for MERK; unzip the source to any folder, navigate to that folder with your favorite console application, and typepython merk.pyto run MERK. Instructions for running the source on Windows, Linux, and macOS can be found in the repository.
- Windows PyInstaller distributions
merk-windows-0.052-100.zipcan be unzipped to any folder, and contains an executable and a directory with support files; unzip to any folder, and double click onmerk.exeto run MERK.merk-windows-setup-0.052-100.zipcontains an installer for MERK; unzip and double clicksetup.exe.
- Linux PyInstaller distribution
merk-linux-0.052-100.zipcan be unzipped to any folder, and contains an executable and a directory with support files; unzip to any folder, and double click onmerkto run MERK.merk-linux-0.052-100.flatpakcan be installed withflatpack install --user merk-linux-0.052-100.flatpak.
- Other files
MERK_User_Guide.pdfcontains a guide for using MERK, as well as writing scripts and plugins. It is available in the app, in the "help" menu.CHANGELOGcontains a list of changes in new release.
All downloads contain README.html, which contains usage information about the application and a list of all commands supported by MERK. Further information can be found on the MERK source code repository.
MERK has a plugin framework. For more information about how to write plugins, please see MERK_User_Guide.pdf. The official repository contains some example plugins right here.
Configuration files and logs are stored in a directory named .merk in the user's home directory.
CHANGELOG for 0.052.100
APPLICATION CHANGES
- Bugfix: occasionally, "blank" chat messages would be displayed in chat
displays. - Added an option to scroll the chat display to the top to chat display context
menus. - Tweaked the "input options" menu. Removed the text banner at the top of the
menu, and changed the spellcheck menu: now, spellchecking can be toggled
globally in the menu. - Bugfix: "blank" messages are now removed from log displays and exports.
- Bugfix: "blank" chat messages are now ignored.
- Bugfix: text that uses IRC colors to color the text white was effectively
invisible in the log viewer. The log viewer now changes white IRC colored
text to black IRC colored text. As colors are stripped from the "human
readable" export option, exports are unchanged, and nothing is stripped or
changed in any other export option. - Bugfix: some dialogs did not have their focus set properly.
- Tweaked the channel key display on channel windows.
- The "key" icon was removed from resources, and the "secure" icon is used in
its place. - Tweaked the status bar server displays.
- Double-clicking on a channel's channel key now allows users to "edit" the
channel key, if they have the permissions to. The dialog can also unlock the
channel (that is, remove the channel's key). - The "server information" button on the server window toolbar can no longer
have focus set on it. - Added an option to reset menu names to the default to the "set menu name"
dialog called from the "Settings" dialog. - Bugfix: channel list time displays are now shown in UTC if that option is
enabled. - Bugfix: "signed on" times in WHOIS responses are now shown in UTC if that
option is enabled. - Bugfix: when a channel mode change is set, multiple "NAMES" requests could
be sent at once. - The list of IRCv3 extensions that a server supports is no longer displayed
during the connection process. The extension list is still available in the
server information menu. - Bugfix: setting or changing a user's color now will trigger the chat
re-renderer if that option is turned on, and there isn't any upcoming
re-render. All chats that that user is in will be re-rendered. - Bugfix: setting or changing a word's highlighted color will trigger a chat
re-render, just like with user colors. - The log manager no longer displays a "preview" of the exported data.
- Tweaked the layout of the log manager's export tab.
- The /ignore and /unignore commands, as well as the ignore manager, now
refreshes chats and userlists only. - Tweaked the nickname display on chat windows. The channel status icon is now
a little smaller, and the whole display is more compact. - Bugfix: "live" toggling of the "show nick display on server windows" option
was broken. - Added a usermode display to the server window nickname display.
- Bugfix: CTCP notifications would not work properly if the window did not have
active focus. - Bugfix: private messages, if otherwise unseen, would not write to the active
window if the application did not have focus. Now, they will be written to
all chat windows associated with the client that received the private
message. - Removed the option to open the ignore manager from the /window command.
- Bugfix: an error message for the /macro command was worded poorly. It has
been changed to match the wording of similar error messages. - Tweaked some of the "list" displays for various commands to be more
consistant. - Changed "window" to "subwindow" in error messages and help text for all
commands (at least, the ones dealing with subwindows). - Added a "spacer" in between the topic editor and the user count widget (on
channel subwindows). - Removed the "users" text in the channel user count display; the display now
only shows how many users there are in a channel. - Bugfix: server profiles could not be edited (in the connection dialog) once
created. - The channel user count display is now hidden if there is only one person in
the channel. - Bugfix: enabling topic display in subwindow title bars would crash the
client. - Bugfix: toggling the "channel information display" wouldn't always completely
hide the channel information display (the user count, if enabled, would still
be visible). - The text input option menu's options have been re-written to make what each
option does more clear. - Bugfix: toggling options in the text input menu would not update the settings
menu, and vice-versa. - Added toggles for emoji and ASCIImoji shortcodes to the settings menu's
input submenu. - Made some menu entries in the settings menu clearer.
- Since large logs can cause MERK to run slowly and consume more resources,
MERK now looks for large logs on startup and offers to back them up. By
default, "large" is considered to be 30MB or larger, but this can be changed
in the configuration file or with the /config command (by changing the
"log_warning_size" setting). - Changed default button on the "back up large log" dialog to "do backup".
- Tweaked the "human readable" log export. Logs now display complete nick plus
hostmask for all "speakers" (except for messages by the client). - Added a setting ("scan_for_large_logs_on_startup") to toggle whether MERK
scans for large logs to the configuration file. - Added the new "scan for large logs" setting to the "Advanced" section of the
settings dialog. - Added the text of the GPL 3 to the User Guide.
- The default directory for log exports in the Log Manager has been changed to
the user's "home" directory. - Bugfix: using the log viewer in dark mode could make logs unreadable. Logs
are now shown, by default, with black text and a white background, no matter
what mode MERK is in. - Bugfix: private messages shown in channel logs now have the user name in
italics, ...
0.052.050
Summary
MERK is a free, open source, multiple-document interface Internet relay chat for Windows, Linux, and macOS. It can be run with Python 3.9+ if PyQt5 and Twisted are installed; to connect to TLS/SSL enabled servers, install pyOpenSSL and service_identity. If you encounter problems running MERK with Python 3.9+ on Windows, you may need to install pywin32. All PyInstaller versions of MERK are built for 64-bit operating systems.
What's New
- Chat messages that mention your nick now have underlined nicknames. This option can be disabled in the "settings" dialog or with the
/configcommand. - New plugin API methods. Plugins can now determine if the application is running in "dark mode" or not, or if the background of a window's current text style is "light" or not. The "rainbow text" example plugin has been updated to show the new functionality. Plugins can now also set text styles for subwindows, and query what text style file (if any) a subwindow is using.
- Timestamps can now be shown in UTC.
- Dates and times are now inserted into logs in the log manager. The day that chat occured on, and the time it was "said", is now "inserted" into the log view and the "human readable" output for export.
- Colors have been added to the log manager viewer. Message senders are now in blue, with messages sent by the client in the same color and underlined. CTCP ACTION messages are in blue with italics. System messages are in red.
- The log viewer's display size is now limited to 5000 lines. Overly large logs can cause MERK to lag and/or lock up. The size of the line limit (and whether it's used at all) can be changed in the "settings" dialog.
- Upgrades and bugfixes to context menus. New options have been added to context menus for the userlist and subwindow text displays.
- The settings dialog now features over 400 options for users to change and configure.
Files
- Python distribution
merk-0.052-050.zipcontains the Python code for MERK; unzip the source to any folder, navigate to that folder with your favorite console application, and typepython merk.pyto run MERK. Instructions for running the source on Windows, Linux, and macOS can be found in the repository.
- Windows PyInstaller distributions
merk-windows-0.052-050.zipcan be unzipped to any folder, and contains an executable and a directory with support files; unzip to any folder, and double click onmerk.exeto run MERK.merk-windows-setup-0.052-050.zipcontains an installer for MERK; unzip and double clicksetup.exe.
- Linux PyInstaller distribution
merk-linux-0.052-050.zipcan be unzipped to any folder, and contains an executable and a directory with support files; unzip to any folder, and double click onmerkto run MERK.merk-linux-0.052-050.flatpakcan be installed withflatpack install --user merk-linux-0.052-050.flatpak.
- Other files
MERK_User_Guide.pdfcontains a guide for using MERK, as well as writing scripts and plugins. It is available in the app, in the "help" menu.CHANGELOGcontains a list of changes in new release.
All downloads contain README.html, which contains usage information about the application and a list of all commands supported by MERK. Further information can be found on the MERK source code repository.
MERK has a plugin framework. For more information about how to write plugins, please see MERK_User_Guide.pdf. The official repository contains some example plugins right here.
Configuration files and logs are stored in a directory named .merk in the user's home directory.
CHANGELOG for 0.052.050
APPLICATION CHANGES
- Bugfix: long nicknames were being unneccesarily elided in CTCP action
messages. - Bugfix: using the /me command in server windows now writes to the current
window just like it does for regular private messages. - Rearranged the entries in the Python editor's "File" menu to closer match the
script editor's "File" menu. - The "Settings" dialog now makes reference to "subwindows" rather than
"windows" when the setting is for subwindows. - The nick display on subwindows for "away" status now matches the display in
channel userlists (that is, the nick is displayed in italics). An option has
been added to toggle this to the "settings" dialog and the config file. - Nickname mentions in chat now show the username that mentioned the nick
underlined. - Bugfix: audio notification triggers aren't as "sensitive", and now only
trigger on nickname mentions that are whole words (that is, if your nickname
is "stu", an audio notification won't trigger if someone says "stuff"). - Tweaks to the "about" dialog.
- Bugfix: bot status icons in userlists were not showing up in text styles with
light backgrounds. I've added an inverted color status icon, and a check to
see if the background is dark or light to make sure it shows up. - Bugfix: using the /delay command could cause the application to crash.
- Added an option to show the current "away" message as a tooltip in the
nickname display, if showing "away" status in the nickname display is turned
on. This option is turned on by default, and can be toggled in the "settings"
dialog or with the /config command. - Turning off the nickname display on chat or server windows now disables the
settings for the "away" status stuff on nickname displays in the "settings"
dialog. - Bugfix: fixed a race condition where logs could be saved multiple times at
the same time. - The banner on the "settings" dialog now matches the banner on the connection
dialog. - Calling the "/ignore" command with no arguments now opens the ignore manager.
- Reworked the "rainbow text" example plugin, and updated the documentation
with the changes. - If a script is passed no arguments, $_0 will now be set to '*' instead of
'none'. - The built-in aliases $_MODE and $_PRESENT are now also set the '*' instead of
'none' if the data for either alias is not found or is not present. - The log manager's status bar now shows what type the current log is, along
with the name of the log (channel or private user) and filename. - Tooltips in the plugin manager now show the size of a plugin's file on disk.
- Bugfix: a race condition with the "join" plugin event has been fixed.
- The "/unalias" command can now delete multiple aliases in one command.
- The icons in the "Settings" dialog's section selector are now slightly
bigger. - Removed the "highlight" icon, and replaced it with the "color" icon.
- Removed the "Normal User" tag from the user info in the userlist right click
menu. - Added the ability to scroll to the top of the text display for server
subwindows. - Removed the "run script" option from channel and private chat subwindow
text display context menus. - Bugfix: the "copy hostmask to clipboard" option in private chat subwindow
context menus works now. - Added the ability to copy miscellaneous data to the clipboard to channel
subwindow text display context menus. - The channel list subwindow now auto-scrolls to the top when searching and
setting user count filters. - Moved emoji and ASCIImoji autocomplete "higher" in the priority list, before
nicknames. - If away messages are elided in the userlist context menu, the full away
message will appear in a tooltip for the elided away message. - Added an option to ignore/unignore users to the private message subwindow
text display context menu. - New built-in alias: $_UTC will show the current time in UTC format.
- If the chat display context menu is shown, and something has been selected
via the cursor, the "extra" stuff in the menus will no longer be shown; the
only things that will be shown is the "copy", "copy link location", and
"select all" options. - Added the option to display timestamps in both chat and logs in UTC. This
option is turned off by default. - The style/palette file generator output has been tweaked.
- Dates are now "injected" into logs in the log manager viewer, and the human
readable output. - Times are also now "injected" into logs in the log manager viewer.
- The log manager viewer now uses color for display. Message senders are now in
blue, with the client's nickname underlined. CTCP ACTION messages are also in
blue and italics. - With especially large logs, the log viewer will only display the last 5000
lines, by default; this can be changed by changing the "maximum_log_view_size"
setting with the "/config" command or by editing the configuration file. This
prevents the log manager from locking up the client when trying to view very
large log files. The full log file is still loaded for export, and can be
viewed in the "export" tab in the log manager. The user is warned that only
the end of the log is being viewed. - Added an option to toggle whether the log viewer is limited to the maximum
log size. - Added new log viewer options to the "Settings" dialog, on the "Logs" page.
- If a user has a color set for their nickname, the color is now ...
0.052.000
Summary
MERK is a free, open source, multiple-document interface Internet relay chat for Windows, Linux, and macOS. It can be run with Python 3.9+ if PyQt5 and Twisted are installed; to connect to TLS/SSL enabled servers, install pyOpenSSL and service_identity. If you encounter problems running MERK with Python 3.9+ on Windows, you may need to install pywin32. All PyInstaller versions of MERK are built for 64-bit operating systems.
What's New
- User "bot" status can now be displayed to the user. If the server has the option to mark users as bots (user mode +B) turned on, MERK will display if a user is a bot or not. This can be shown in userlists and in the userlist right click menu.
- Double click nicknames in chat to open a private message subwindow. This behavior can be toggled in the "settings" dialog. In channel subwindows, only nicknames "present" in that channel can be double clicked; in server or private message subwindows, any "visible" nickname can be double clicked.
- More servers to connect to. MERK now features more than 200 servers to connect to in the connection dialog.
- Bugfixes, and cleaned up dialog layouts.
Files
- Python distribution
merk-0.052-000.zipcontains the Python code for MERK; unzip the source to any folder, navigate to that folder with your favorite console application, and typepython merk.pyto run MERK. Instructions for running the source on Windows, Linux, and macOS can be found in the repository.
- Windows PyInstaller distributions
merk-windows-0.052-000.zipcan be unzipped to any folder, and contains an executable and a directory with support files; unzip to any folder, and double click onmerk.exeto run MERK.merk-windows-setup-0.052-000.zipcontains an installer for MERK; unzip and double clicksetup.exe.
- Linux PyInstaller distribution
merk-linux-0.052-000.zipcan be unzipped to any folder, and contains an executable and a directory with support files; unzip to any folder, and double click onmerkto run MERK.merk-linux-0.052-000.flatpakcan be installed withflatpack install --user merk-linux-0.052-000.flatpak.
- Other files
MERK_User_Guide.pdfcontains a guide for using MERK, as well as writing scripts and plugins. It is available in the app, in the "help" menu.CHANGELOGcontains a list of changes in new release.
All downloads contain README.html, which contains usage information about the application and a list of all commands supported by MERK. Further information can be found on the MERK source code repository.
MERK has a plugin framework. For more information about how to write plugins, please see MERK_User_Guide.pdf. The official repository contains some example plugins right here.
Configuration files and logs are stored in a directory named .merk in the user's home directory.
CHANGELOG for 0.052.000
APPLICATION CHANGES
- Whois responses can now show if a given user is a bot, if that option is
turned on in the server. - Userlists can now display if a user is a bot or not, if that option is turned
on in the server. - MERK can now fetch the bot status of any user in a channel MERK is in. The
settings (which are "on" by default) work the same way as fetching hostmasks
from the server. - The "fetch hostmask frequency" setting has been changed to "fetch user data"
due to it also being used for bot status. - Bugfix: the "all visible nickname" list was being improperly built, if at
all. This has been fixed and works properly now. - Bugfix: the internal "channel nickname list" tracked in the client was also
being built improperly. - The "channel nickname" and "all visible nickname" lists are now sorted as
they were intended to be. - Bugfix: channel names are now detected easier, more efficiently, and more
accurately for highlighting in the text input widget. - The "too long message" indicator now takes into consideration if commands
(and their targets) are in the text input widget, and subtracts the length of
the command and target from the payload. - Bugfix: nickname autocomplete now works for "weird" names with punctuation in
them. - Bugfix: the widget for entering nickname now allows nicknames that previously
wouldn't be allowed to be entered, but are valid IRC nicks. - Bugfix: the nickname "validator" for commands was re-written to use the same
rules the nickname entry widget uses. - Added over 100 servers to the internal server list for use with the
connection dialog. - Tweaked the connection dialog due to the added width from the new built-in
server list. - New feature: double click nicknames in chat to open a private message
subwindow to that nickname. In channels, this only works for nicknames
inside that channel; for server and private chat subwindows, this works for
any "visible" nickname. - Added new options to the private subwindow chat context menu: request WHOIS,
send CTCP message, and copy miscellaneous information to the clipboard. - Re-wrote the repo README, thanks to Ivan!
- Bugfix: the logo graphic on the connection dialog now scales properly for new
font sizes. - Changed the example link in the text styler to "https://www.fsf.org/" from
"ebay.com". Seems more free-software friendly :-) - Cleaned up the layout of the connection dialog.
- Added the ability to toggle audio notifications to the "/toggle" command.
- Added the ability to toggle the system tray icon to the "/toggle" command.
- Cleaned up the layout of the settings dialog.
- Prevented some commands from being auto-suggested in the hotkey bind dialog.
- Bugfix: occasionally, the default QUIT message was not used when quitting
with /quit and /quitall. - Cleaned up the layout for the about dialog.
- Bugfix: SASL login is now supported on servers that do not necessarily support
IRCv3 3.0.2. SASL login now functions on MansionNET again. Apparently, MERK's
support was a bit too version specific. - The log display is now "trimmed" during runtime, to help lessen memory usage.
This uses the same value as the "length of loaded logs" value in settings. - Added an option to chat display context menus to scroll chat to the bottom.
- Cleaned up README.HTML, that is both embedded in and shipped with the
application. - Added "ack" and "nak" events to the Python editor's event generator.
WARNING! MERK may appear to be infected with something by your Windows antivirus. It is not infected with anything, it just seems to appear that way because some malware in the past was packed with PyInstaller (at least, this is my theory). I have uploaded all binaries to VirusTotal.
Released Wednesday June 17, 2026
0.051.950
Summary
MERK is a free, open source, multiple-document interface Internet relay chat for Windows, Linux, and macOS. It can be run with Python 3.9+ if PyQt5 and Twisted are installed; to connect to TLS/SSL enabled servers, install pyOpenSSL and service_identity. If you encounter problems running MERK with Python 3.9+ on Windows, you may need to install pywin32. All PyInstaller versions of MERK are built for 64-bit operating systems.
What's New
- ASCII art display has been fixed. Spaces are now preserved in text display. This is turned on by default, and can be turned off in settings.
- Custom word highlighting. Users can set colors for specific words in chat. Colors must be in the six digit "web color" format (#000000), also known as hex codes. Highlighted words can optionally be styled in italics, bold, or underlined. The new commands
/highlight(to add a highlighted word and color) and/unhighlight(to remove any or all highlighted words) have been added; if a color is not provided when using the/highlightcommand, the user is prompted with a dialog to select one. - Connection timeouts have been added. If connection takes too long, MERK can be configured to automatically disconnect and prompt for a new server. By default, this is turned on, and set to trigger if a given connection takes longer than 120 seconds. All the settings controlling this behavior have been added to the "settings" dialog.
- The
/error,/print,/prints, and/warncommands can now print to all windows simultaneously. - Special input features can now be toggled with commands. With the
/togglecommand, users can turn off/on ASCIImoji and emoji shortcode input, as well as MERK "markdown" and IRC color input, and accidental command input protection. This allows users to bind these features to a hotkey for ease of use. - The string decoding codecs used for incoming data can now be set by users. By default, MERK uses "utf-8" codec to decode incoming data, "iso-8859-1" as a fallback, and "CP1252" if both of those fail. Which codecs are used can now be set in the configuration file, with the
/configcommand, or with the "settings" dialog. All incoming data is re-encoded into UTF-8 for internal use. - Added the option to ignore users by nickname or hostmask to the userlist context menu. The option defaulted to ignoring by hostmask, if the target's hostmask was available. Users can now choose how they want to ignore someone.
- Userlists now show the highest status a user has attained. Previously, userlists only showed if a user was a channel operator or voiced.
- The "settings" dialog has been revamped. The "settings" dialog has been cleaned up, and more settings are described.
- The userlist right click menu has been revamped. The menu now features more options, and is cleaner.
Files
- Python distribution
merk-0.051-950.zipcontains the Python code for MERK; unzip the source to any folder, navigate to that folder with your favorite console application, and typepython merk.pyto run MERK. Instructions for running the source on Windows, Linux, and macOS can be found in the repository.
- Windows PyInstaller distributions
merk-windows-0.051-950.zipcan be unzipped to any folder, and contains an executable and a directory with support files; unzip to any folder, and double click onmerk.exeto run MERK.merk-windows-setup-0.051-950.zipcontains an installer for MERK; unzip and double clicksetup.exe.
- Linux PyInstaller distribution
merk-linux-0.051-950.zipcan be unzipped to any folder, and contains an executable and a directory with support files; unzip to any folder, and double click onmerkto run MERK.merk-linux-0.051-950.flatpakcan be installed withflatpack install --user merk-linux-0.051-950.flatpak.
- Other files
MERK_User_Guide.pdfcontains a guide for using MERK, as well as writing scripts and plugins. It is available in the app, in the "help" menu.CHANGELOGcontains a list of changes in new release.
All downloads contain README.html, which contains usage information about the application and a list of all commands supported by MERK. Further information can be found on the MERK source code repository.
MERK has a plugin framework. For more information about how to write plugins, please see MERK_User_Guide.pdf. The official repository contains some example plugins right here.
Configuration files and logs are stored in a directory named .merk in the user's home directory.
CHANGELOG for 0.051.950
APPLICATION CHANGES
- New feature: color highlighting for words. Users can set a word/color with
the "/highlight" command, and remove the highlight with the "/unhighlight"
command. - The "/highlight" command now allows users to select a highlighting color via
the GUI. Because the renderer highlights words case-insensitively, the
"/highlight" and "/unhighlight" commands also ignore case. - Autocomplete can now complete highlighted words with the "/highlight" and
"/unhighlight" commands. - Bugfix: autocomplete for various commands (with filenames, methods, etc) now
makes sure that the command is at the beginning of the text entry widget
rather than just being in the text. - The "/highlight" and "/unhighlight" commands are now disabled if highlighting
words in chat is disabled. - Moved all highlighting options to the "Highlighting" page in the "settings"
dialog. - Added options to bold, italicize, or underline highlighted words.
- Added an option to remove all highlighted words from the internal list with
"/unhighlight". - Added an option to the "/reload" command to force a re-render of all open
chat windows. - Added an option to "/error", "/warn", "/print", and "/prints" to print text
to all open server, channel, and private chat windows. - Added an option to toggle if the miscellaneous printing commands can print
to all windows or not. - Cleaned up the "settings" dialog.
- Bugfix: setting the Levenshtein distance to "3" in the "settings" dialog
could cause errors. - Changed the icon for the "Scripting" page in the "settings" dialog, and the
"Script" tag in the connection dialog. - Added some options and tweaked the "File" menu in the script editor.
- Bugfix: in some circumstances, having an empty "visible nickname" list could
cause a non-crashing bug. - Bugfix: the internal nickname last was not being sorted properly.
- Added an option to force disconnection if the connection process takes too
long. This option is turned on, and is set for 120 seconds. The settings that
control whether this is active or not, as well as the length of the
connection timeout, have been added to the "settings" dialog. - Changed the name of the "Scripting" section in the "settings" dialog to
"Commands", as a large chunk of the options also control commands and not
just scripting. - Cleaned up a lot of the "settings" dialog to make things clearer to the user,
and look "prettier". - New command: "/toggle", which toggles various input options. Supported
options are ASCIImoji and emoji shortcodes, MERK "markdown", IRC color
input, and accidental command input protection. - Rewrote the "run script" dialog to make is easier to use.
- Bugfix: many dialogs were re-sizeable, when they shouldn't have been.
- Re-arranged the layout of the dialog brought up by the script-only "msgbox"
command. The dialog is still re-sizeable, but the text is now aligned to the
top left of the dialog. - Bugfix: ASCII art is no longer broken in the chat/server displays. Spaces are
now preserved, allowing ASCII art to be displayed properly. Wordwrap in the
server/chat display is preserved. - Remove the "display MOTD as raw text" option as it is no longer needed.
- Added an option to toggle preserving spaces in text display to the "advanced"
section of the "settings" dialog. I'm not sure why someone would want to
turn it off, but the option is there. - Added an option to the config file to set the string decoding codec for
incoming data (by default, ""utf-8"). MERK expects most incoming data to be
UTF-8 encoded; this is how users can change this data decoding type to a
different one. If this one fails, the fallback string decoding codec will be
used. - Added an option to the config file to set the fallback string decoding
codec for incoming data (by default, "iso-8859-1"). MERK expects most
incoming data to be UTF-8 encoded, and this codec will be used if UTF-8
decoding fails. All incoming data is encoded into UTF-8 for internal use. - Bugfix: clicking the "reset" button on the channel list dialog now resets the
"user count" option to 1+ before refreshing the display. - Added options to set the default and fallback string decoding codec to the
"settings" dialog, in the "advanced" section. - Added the MERK logo and version number to the first section of the "settings"
dialog. - The "settings" dialog now checks for a codec change, and prompts the user to
disconnect from all s...
0.051.900
Summary
MERK is a free, open source, multiple-document interface Internet relay chat for Windows, Linux, and macOS. It can be run with Python 3.9+ if PyQt5 and Twisted are installed; to connect to TLS/SSL enabled servers, install pyOpenSSL and service_identity. If you encounter problems running MERK with Python 3.9+ on Windows, you may need to install pywin32. All PyInstaller versions of MERK are built for 64-bit operating systems.
What's New
- Server profiles for user data. Users can now set specific nicknames, alternates, usernames, and realnames for servers. Profiles are created (and edited) with the connection dialog. Once created, the user profile for a server will be used every time MERK connects to that server, no matter how MERK connects to that server (via the command-line, the connection dialog, or by a command). This behavior can be toggled in settings or with command-line options.
- Channel userlist widths can now be saved to the config. This option is turned on by default, and happens automatically.
- New option: open a server's channel list on connection. This is disabled by default. However, if turned on (and fetching the server's channel list on connection is turned on), this will show the channel list dialog as soon as the channel list is available.
- Added new options to delete user and application configuration data to the settings dialog.
- Tweaks to nickname autocomplete. In channel windows, only nicknames in that same channel will autocomplete; in other window types, all "visible" nicknames will autocomplete.
- Tweaks to nickname highlighting in the text input widget. In channel windows, only nicknames in the same channel will be highlighted; in other window types, all "visible" nicknames will be highlighted.
- Uptime displays will now display the number of days a client or channel has been connected.
- The connection dialog has been revamped. If there isn't enough information to connect to a server, the "connect" button and other functionality will be disabled. The GUI layout has been tweaked to look a little better.
- The settings dialog has been revamped. Applying settings is now more efficient, and faster.
- Many bugfixes. Thanks to the folks on MansionNET for the bug reports!
Files
- Python distribution
merk-0.051-900.zipcontains the Python code for MERK; unzip the source to any folder, navigate to that folder with your favorite console application, and typepython merk.pyto run MERK. Instructions for running the source on Windows, Linux, and macOS can be found in the repository.
- Windows PyInstaller distributions
merk-windows-0.051-900.zipcan be unzipped to any folder, and contains an executable and a directory with support files; unzip to any folder, and double click onmerk.exeto run MERK.merk-windows-setup-0.051-900.zipcontains an installer for MERK; unzip and double clicksetup.exe.
- Linux PyInstaller distribution
merk-linux-0.051-900.zipcan be unzipped to any folder, and contains an executable and a directory with support files; unzip to any folder, and double click onmerkto run MERK.merk-linux-0.051-900.flatpakcan be installed withflatpack install --user merk-linux-0.051-900.flatpak.
- Other files
MERK_User_Guide.pdfcontains a guide for using MERK, as well as writing scripts and plugins. It is available in the app, in the "help" menu.CHANGELOGcontains a list of changes in new release.
All downloads contain README.html, which contains usage information about the application and a list of all commands supported by MERK. Further information can be found on the MERK source code repository.
MERK has a plugin framework. For more information about how to write plugins, please see MERK_User_Guide.pdf. The official repository contains some example plugins right here.
Configuration files and logs are stored in a directory named .merk in the user's home directory.
CHANGELOG for 0.051.900
APPLICATION CHANGES
- Reworked how the renderer selects (and uses) colors to highlight nicknames,
if that option is turned on. - Bugfix: the nickname display (showing who is "saying" a line of chat) had its
color set to the custom color even if "highlight nicks in chat" option was
turned off. - Bugfix: the username input widget on the connect dialog was forbidding input
that includes the "/" character, which is needed for some bouncers. - Bugfix: server passwords were being saved "incorrectly" in the connection
history. - Bugfix: the SASL interface now updates correctly in the connection dialog.
- The "connect" button on the connection dialog is now disabled if the hostname,
port, nickname, username, or realname inputs are empty. The SASL checkbox and
"script" tab is also disabled. - The channel mode context menu is a little "prettier", easier to read, and
more informative. - Bugfix: the "show channel list" context menu option for server windows was
enabled before server registration was complete. - New option: show the "channel list" dialog window for a server when
connection completes. This is turned off by default, and can only be enabled
if "fetch server list on connection" is turned on. - Bugfix: the channel list could show channels with 0 (zero) users, if the
server reported them. This no longer occurs. - Added options to delete miscellaneous data from the user configuration file
to the "settings" dialog. The new options are on the "user" page. - Major bugfix: the userlist right-click context menu did not always trigger
events correctly on Linux, for reasons that still escape me. This has been
fixed. - Added the option to delete user nickname color and channel message filter
settings from the configuration file to the "settings" dialog. - Bugfix: the nickname, alternate, and username text entry widgets allowed
users to enter spaces as values. - New feature: server profiles. A specific nickname, alternate nickname,
username, and realname can be set for each server. Every time MERK tries to
connect to that server, the user information from the profile will be used,
no matter how MERK connects to the server (via the connection dialog, via a
command, or via the command-line). This behavior can be toggled in settings.
Server profiles can be created and edited with the connection dialog. - Bugfix: the userlist can no longer be resized so big that it covers the chat
display. The maximum size it can reach is 95% of the chat display. - New feature: MERK can now save channels' userlist widths. The width is saved
(and loaded) with the network and channel name. This option is turned on by
default, and will always be loaded if the value is in the config file. The
option to delete all userlist widths has also been added to the settings
dialog. - Bugfix: disabling and re-enabling spellcheck via the "settings" dialog could
cause MERK to crash in some circumstances. - Sped up how the "settings" dialog applies settings to the client. When the
"apply" button is clicked, the dialog is now more selective about which
things get refreshed/reloaded, rather than forcing a massive reload. - Bugfix: some elements in the "settings" dialog did not get their font size
set properly. - Bugfix: occasionally, the connection dialog would crash with a "floating
point exception" when editing the host. - Bugfix: the "port" entry on the connection dialog now only allows numeric
digits to be entered. - Bugfix: the "do not save to user config" option now works as intended.
- New command-line option: -N/--noprofile, which forces MERK to ignore the
server profile and use the default user information for a given connection. - Bugfix: command-line connections now use stored SASL logins.
- New command-line option: -A/--nosasl, which forces MERK to ignore the SASL
login for a given connection. - Bugfix: the topic editor would not work correctly if the user selected text
before trying to type anything or place a cursor. - Bugfix: an icon was missing from the resource file.
- Added an entry to open the User Guide to the systray menu.
- Added an option to the channel right click menu to hide or show all
"filterable" message types at once. - Bugfix: the "/window layout" command was including server port numbers in
calls to several commands. - New command: "/error". This command works exactly like "/warn", but it will
immediately exit a script if called from a script. - Bugfix: long nicknames were being elided even if text styles were not being
applied. - Changed the output of the "/window layout" command. Now, the command only
generates code to set the subwindow layout, and doesn't try to set the
location and size of the main window. - Bugfix: command subcommands are no longer highlighted in the text input
widget if the initial command is not being used. - Bugfix: the "all visible nickname" list is now being built properly; that
means that the "highlight all visible nicknames" option works properly, and
nic...
0.051.850
Summary
MERK is a free, open source, multiple-document interface Internet relay chat for Windows, Linux, and macOS. It can be run with Python 3.9+ if PyQt5 and Twisted are installed; to connect to TLS/SSL enabled servers, install pyOpenSSL and service_identity. If you encounter problems running MERK with Python 3.9+ on Windows, you may need to install pywin32. All PyInstaller versions of MERK are built for 64-bit operating systems.
What's New
- Channel specific message filters. In a channel chat's right click menu, users can now choose to hide/show JOIN, PART, QUIT, NICK, MODE, and TOPIC messages. The messages will still be logged, and the filter is persistent across sessions. The option to hide these messages application-wide is still in place.
- Highlighting nicknames in chat has been expanded to all channel nicknames. The user's nickname will still be highlighted in the current text style, but other user's nicks can now be colored with custom colors. Colors are stored via the user's hostmask, and will appear in chat and userlists. Nicknames that do not have a color will be colored with the default "nickname" text style color. To prevent very short nicknames (one or two characters) from being highlighted, an option to limit highlighting to nicknames over a certain size is in settings; by default, all nicknames will be highlighted.
- Windowbar sorting. Entries in the windowbar can now be sorted in order of subwindow creation (the default), reverse creation order, alphabetically, or reverse alphabetically.
- IRCv3 extension support for plugins. Plugins can now request specific IRCv3 extensions from servers, and get notified if the server does or doesn't support them. Along with the
line_in()andline_out()events, this allows plugins to handle IRCv3 extensions that MERK doesn't support natively. - New menu options and commands to reload (and re-render) window text displays.
- "Unsimplified text" has been removed from the log manager.
- Text rendering is now much faster.
- Lots of bugfixes.
Files
- Python distribution
merk-0.051-850.zipcontains the Python code for MERK; unzip the source to any folder, navigate to that folder with your favorite console application, and typepython merk.pyto run MERK. Instructions for running the source on Windows, Linux, and macOS can be found in the repository.
- Windows PyInstaller distributions
merk-windows-0.051-850.zipcan be unzipped to any folder, and contains an executable and a directory with support files; unzip to any folder, and double click onmerk.exeto run MERK.merk-windows-setup-0.051-850.zipcontains an installer for MERK; unzip and double clicksetup.exe.
- Linux PyInstaller distribution
merk-linux-0.051-850.zipcan be unzipped to any folder, and contains an executable and a directory with support files; unzip to any folder, and double click onmerkto run MERK.merk-linux-0.051-850.flatpakcan be installed withflatpack install --user merk-linux-0.051-850.flatpak.
- Other files
MERK_User_Guide.pdfcontains a guide for using MERK, as well as writing scripts and plugins. It is available in the app, in the "help" menu.CHANGELOGcontains a list of changes in new release.
All downloads contain README.html, which contains usage information about the application and a list of all commands supported by MERK. Further information can be found on the MERK source code repository.
MERK has a plugin framework. For more information about how to write plugins, please see MERK_User_Guide.pdf. The official repository contains some example plugins right here.
Configuration files and logs are stored in a directory named .merk in the user's home directory.
CHANGELOG for 0.051.850
APPLICATION CHANGES
- Bugfix: fixed a bug in automatic hostmask fetching.
- New feature: hide certain system messages from view in channels. Each channel
now has an option in the chat's right click menu to hide JOIN, PART, QUIT,
NICK, MODE, and TOPIC messages from view. The option is stored in the config
file, along with the channel's name and network. The option to hide all these
messages from view in ALL channels remains in the settings, but this gives
users fine control over specific channels. - Bugfix: sometimes, initial messages to the client could cause an error that
would cause them not to display. - The "highlight nick in chat" feature has been changed to allow users to set
custom colors for specific users. Colors are stored by network with
hostmasks, so the individual nickname is not as important. The MERK user's
nickname will be highlighted using the current text style settings. - Added an option to the chat right click menus to reload (rerender) the chat
display. - Added a new "color" icon, for the userlist right click menu to set colors.
- Added a "highlight nicks in chat" toggle to the "Display" submenu in the
"Settings" menu. - Changed how "away" and "back" statuses are shown in userlists. Users that are
"away" and now shown in the selected user color (if they have one); their
nick is shown in normal weight (not bold) and italics. - New option: show/hide user colors in userlists. If both "show colors in
userlists" and "use colors in chat" are turned off, the option to set or
remove colors is removed from the userlist context menu. The new settings has
been added to the "settings" dialog. - Bugfix: it was possible to "ignore" yourself from the userlist context menu.
This option has been removed. - The "/window layout" command no longer specifies a port in the hostID for
each window in the generated script. - Bugfix: the hotkey manager would occasionally throw an error and delete an
edited hotkey after editing. - Nicknames without a color assigned to them are now also highlighted in chat,
if that option is turned on. - If nickname highlighting in chat is turned on, chatlogs in channel windows
will rerender after a short period of time to show previously logged chat
with the chosen colors. This can be turned off with a settings in the config
file with the /config command or by editing the configuration file, or in the
"settings" dialog. - Added an option to sort the entries in the windowbar. Entries can be set in
order of subwindow creation (the default), reverse subwindow creation order,
alphabetically, or reverse alphabetically. - Windowbar entry sorting can now be changed via the "settings" dialog, the
windowbar's right click menu, or the /config command. - Bugfix: removed an unused icon from the resource file.
- Added a new icon (in both light and dark mode) for windowbar sorting.
- Bugfix: windowbar entry sorting could end up wrong in some rare instances.
If the number of window entries was very large, full window entries and icon
only window entries were sorted seperately. Now, the full list is sorted
properly. - New options: show the user's nickname in the set style color or underlined
(or both) in userlists. Both of these options are off by default. - New option: users can now set a minimum nickname length for highlighting in
channel chat (so that users with single or double character nicks consisting
of very common letters don't end up being highlighted constantly). The
minimum is set to 0 (zero) by default, so ALL nicknames will be highlighted. - Bugfix: the "unsimplified" text on the log manager rendered very oddly when
the log manager subwindow was maximized. The text has been removed from the
dialog. - Bugfix: automatic rerendering could fail on occasion. This has been fixed.
- The settings dialog now hides itself while applying settings.
- Added an option to hide the subwindow to the right click context menu of
channels and private message windows. - Bugfix: the "message filter" menu was shown in the right click menu of
private message windows. It no longer is. - Bugfix: logs would be saved on window close whether anything had been added
to or not. Now, logs are only saved if there's something new to save. - Bugfix: user colors are now properly loaded for chat rerendering.
- Bugfix: if the "always show active window first" option in the windowbar is
turned on, the active window will always be shown first, regardless of how
the windowbar is sorted. - Removed an unused icon from the resource file.
- Changed the "console" icon to something that looks a little better, and makes
more sense. - Bugfix: fixed a crashing bug with the renderer in the log manager.
- Added "View" to the log viewer tab title in the log manager.
- Re-arranged the userlist context menu.
- New command: "/reload", which forces a window to re-render their chat log.
- New subcommand for "/window": "reload", which forces ALL chat windows to
rerender their chat logs. - Bugfix: some plugin events related to SASL login could crash the client or
not execute if certain errors occured. - Removed the IRCv3 capability request (and handling) for account-notify.
- Added an option to notify the user when a CTC...
0.051.800
Summary
MERK is a free, open source, multiple-document interface Internet relay chat for Windows, Linux, and macOS. It can be run with Python 3.9+ if PyQt5 and Twisted are installed; to connect to TLS/SSL enabled servers, install pyOpenSSL and service_identity. If you encounter problems running MERK with Python 3.9+ on Windows, you may need to install pywin32. All PyInstaller versions of MERK are built for 64-bit operating systems.
What's New
- MERK has a new logo and icon.
- Subwindow snapping. By default, subwindows within 20px of each other will "snap" together. This can be turned off in the settings dialog, and the "snapping distance" can also be changed.
- Scripting now has full file I/O. Scripts can both read and write to files. The
read,write, andappendcommands can be disabled in settings. - New script-only file dialog commands. Get a filename from the user with the
getfileandsetfilecommands. - New option to prevent sending mistyped commands as chat.
contextcan now specify a server. This allows scripts to switch to contexts on other connections. Pass a hostID as the first argument to select a server.- New script-only command:
decimal. Requests a decimal number from the user, and stores it in an alias. - New option: set subwindow background image. Users can now apply a tiled image to the background of subwindows. The image can be set in settings or with the
/configcommand. - Revamped input options menu. The new menu is more useful, and has more options.
- Many bugfixes. Scripting has had a major overhaul, and many commands now work even better.
Files
- Python distribution
merk-0.051-800.zipcontains the Python code for MERK; unzip the source to any folder, navigate to that folder with your favorite console application, and typepython merk.pyto run MERK. Instructions for running the source on Windows, Linux, and macOS can be found in the repository.
- Windows PyInstaller distributions
merk-windows-0.051-800.zipcan be unzipped to any folder, and contains an executable and a directory with support files; unzip to any folder, and double click onmerk.exeto run MERK.merk-windows-setup-0.051-800.zipcontains an installer for MERK; unzip and double clicksetup.exe.
- Linux PyInstaller distribution
merk-linux-0.051-800.zipcan be unzipped to any folder, and contains an executable and a directory with support files; unzip to any folder, and double click onmerkto run MERK.merk-linux-0.051-800.flatpakcan be installed withflatpack install --user merk-linux-0.051-800.flatpak.
- Other files
MERK_User_Guide.pdfcontains a guide for using MERK, as well as writing scripts and plugins. It is available in the app, in the "help" menu.CHANGELOGcontains a list of changes in new release.
All downloads contain README.html, which contains usage information about the application and a list of all commands supported by MERK. Further information can be found on the MERK source code repository.
MERK has a plugin framework. For more information about how to write plugins, please see MERK_User_Guide.pdf. The official repository contains some example plugins right here.
Configuration files and logs are stored in a directory named .merk in the user's home directory.
CHANGELOG for 0.051.800
APPLICATION CHANGES
- Hotkey commenting in the script and Python editors now places the comment
symbol or command at the beginning of every selected line, no matter how much
of the line is selected. - Bugfix: the script editor now uses the command issue symbol ('/' by default)
and the alias interpolation symbol ('$' by default) set in the configuration
file, rather than the raw, default symbols, for comment generation and alias
insertion. - Added an option to the editors' context menu to insert the name of a
currently open private chat. - Added options to insert calls to "/script" and "insert" to the context menu
of the script editor. - Added subwindow snapping; when subwindows get close to each other, they will
"snap" together. This behavior can be toggled on and off, and the distance
that windows need to be in order to snap (within 20 pixels) can be changed.
By default, this behavior is turned on. - Added subwindow snapping to the settings dialog.
- Added a new "Subwindow" submenu to the "Settings" menu.
- Removed some connection dialog settings from the "Connections" subwindow in
the "Settings" menu. - Added subwindow order setting to the "Subwindow" submenu in the "Settings"
menu. - Bugfix: text pasted into a script or Python editor now strips any existing
formatting. - Removed the option to toggle line numbers in the connection dialog. Now, they
are always shown. - Bugfix: syntax highlighting for comments in the script editor no longer
leaves strings, aliases, etc, in their highlighting color when commented. - Trying (and failing) to read a file with the script-only "read" command will
now behave as if the file is empty, and return "*". - New script-only command: "write", which allows scripts to write text to
files. - New script-only command: "getfile", which shows an "open file" dialog, and
stores the result in an alias. - New script-only command: "setfile", which shows an "save file" dialog, and
stores the result in an alias. - Bugfix: macro command was being parsed incorrectly.
- Bugfix: unmacro command was being parsed incorrectly.
- Changed /folder command to only open one directory at a time.
- New option: chat input that starts with the "issue command" symbol, and isn't
followed by a valid command, will not be sent to the server as chat. If the
user wants to send a chat message that starts with the "issue command"
symbol, they have to add it twice, which "escapes" the "issue command"
symbol. - Bugfix: fixed a bug with subwindow snapping. Subwindows will no longer
attempt to "snap" to the parent window edges, and will explicitly ignore the
windowbar and menubar. - Bugfix: subwindows now check whether they're being dragged more efficiently.
- New script-only command: "append", which appends text to a file. "write" no
longer appends to a file, but overwrites it. - Re-wrote how blocking scripting commands work; now, almost all dialog events
are routed through a single qtsignal rather than 5 (or more) of them. - The "context" script-only command can now take a hostID as an argument to
specify why server a targeted window should be connected to. - The pre-command error check on scripts has been expanded to include the
context command. - New built-in alias: $_CONNECTED, which contains a list of all of the hostIDs
that MERK is connected to, seperated by spaces. - The "input" and "number" script only commands now use the Qt built-in dialog
functions instead of custom dialogs. - New script-only command: "decimal", which requests a decimal number from the
user, much like how "number" works. - Bugfix: closing the script/Python editor could occasionally crash the client.
- The "number" and "decimal" script-only commands have been changed to "return"
- (instead of 0) if the command's dialog is canceled.
- Removed the "/msgbox" command, and made it a script-only command named
"msgbox". The command can still be called from the "if" command. - Bugfix: the error checking for scripts, specifically with the "if" command,
is now checking for errors properly. - MERK has a new logo and icon! Thanks to the folks in #lobby on TheMansion
IRC network for all the help. - Bugfix: there coule be errors in tokenizing arguments to the "/call" command.
- Bugfix: there coule be errors in tokenizing arguments to the "/script"
command. - Bugfix: the script-only command "insert" could improperly tokenize arguments,
and didn't handle errors in inserted files properly. - Bugfix: the "context" command would error out if "*" was used as a window
name (to reference a server window). This argument is not needed (as using
"context" with a hostID or the name of the window will switch to the server
window), but since that's an option with many other commands, I wanted to
make sure that an error wasn't thrown. - New option: set an image as the background for subwindows. Just like with the
MDI area, only for the "texture" of the subwindow itself. - Removed non-input related options from the "three-dot" input menu button.
- Completely revamped the "three-dot" input menu button, and added new options
to toggle markdown, IRC color input, emojis, and ASCIImojis. - Revamped chat and server log right click menus.
WARNING! MERK may appear to be infected with something by your Windows antivirus. It is not infected with anything, it just seems to appear that way because some malware in the past was packed with PyInstaller (at least, this is my theory). I have uploaded all binaries to VirusTotal.
Released Thursday April 30, 2026