Skip to content

Releases: squidowl/halloy

2026.5

21 Mar 20:27
a12a031

Choose a tag to compare

Added:

  • Setting to limit reaction display length (buffer.channel.message.max_reaction_display) and maximum length (buffer.channel.message.max_reaction_chars)
  • Emoji and command picker entries are now clickable and insert the selected completion directly into the input.
  • Multi-line send support (uses IRCv3 multiline when available; note: incompatible with the current release of soju [v0.10.1], expected to be resolved in a future version)
  • Typing indicator support (uses IRCv3 typing)
  • Add emoji reactions for supported servers (uses IRCv3 react)
  • New "config" option to sidebar.order_channels_by. Uses server.<server_name>.channels to determine order.
  • Case insensitive sort of query names in sidebar
  • Copied order_channels_by from sidebar to server.<name>, defaults to sidebar.order_channels_by if empty.
  • Alias commands (see buffer.commands.aliases)
  • Exec command support for generating input from shell command output (see buffer.commands.exec)
  • The titlebar now displays the current buffer for each window.
  • /plain-me, /format-me, /plain-msg, /format-msg, /plain-notice, and /format-notice commands were added to provide /plain//format functionality to the /me, /msg, and /notice commands

Fixed:

  • Improved message length calculation (when known the bytes required to relay a message are included in the calculation, when unknown an estimate is used)
  • Prevent interaction leakage behind open modals: clicks, cursor changes, and hover states no longer affect underlying UI while preserving outside-click and Esc to close
  • Prevent clicks from passing through completion picker overlays to content behind them (for example nicknames in the buffer).
  • Regression that could make the application slow to close
  • Apply locale to context menu, copy, and date separator timestamps
  • Fixed direct message notifications when excludes are present
  • Fixed reloading config for channel sorting.
  • Fixed handling of URLs ending with ).
  • Auto-format rules are applied to the content of /me, /msg, and /notice commands

Changed:

  • Spoilers (/f ||hello world||) now reveal on click instead of hover

Security:

  • Fixed file transfer path traversal vulnerability when using DCC
  • Config directories and config.toml are now created with owner-only permissions

Thanks:

2026.4

03 Mar 10:24
5cc0677

Choose a tag to compare

Added:

  • Support for the IRCv3 react client tag.
  • Correctly record window size if window is maximized

Changed:

  • Notification toasts can now use a subtitle on supported operating systems
  • New about screen accessible from the user menu in the sidebar
  • Added setting to mark focused buffers as read on incoming messages
  • Formatting inside code spans is now ignored in order to prevent breaks in code span styling
  • Links inside code spans are not detected in order to prevent breaks in code span styling
  • Setting to hide consecutive timestamps (buffer.timestamp.hide_consecutive)

Fixed:

  • High CPU usage when opening very large buffers
  • Window state is saved even if altered shortly before quitting
  • Default dimmed value for server messages no longer overrides dimmed = false set for individual server message kinds
  • Issue where context menu items would not respond to clicks
  • Filters are loaded on first connection to server via bouncer-networks and updated on config file reload
  • Compatibility with ZNC's backlog service
  • Markdown formatting inside code spans is properly ignored

Security:

  • Improve link preview management to mitigate spam-driven resource abuse

Thanks:

2026.3

24 Feb 23:27
1dcae00

Choose a tag to compare

Added:

  • Support requesting window attention (setting urgency) for notifications (notifications.<type>.request_attention)
  • Default server message pseudo-type, allowing the default values for server message types to be user-specified
  • Default internal message pseudo-type, allowing the default values for internal message types to be user-specified
  • Add setting to specify queries to be added to the sidebar after connecting to a server
  • Added ability to disconnect on SASL authentication failure
  • Setting to configure font line height (font.line_height)
  • Ability to add multiple keybinds for a single shortcut
  • Sidebar actions can now be configured separately for channel and query buffers (actions.sidebar.channel, actions.sidebar.query)
  • URL context menu now supports Hide Preview / Show Preview
  • New shortcuts:
    • new_horizontal_buffer (not bound by default)
    • new_vertical_buffer (not bound by default)
    • quit_application (defaults to Ctrl+Q on linux, not bound on Windows/MacOS)
  • Expand show_access_levels to allow all access levels (in addition to highest or no access levels) in buffer/nicklist/input
  • Configuration setting to allow locale specification used when formatting timestamps
  • Configuration setting to include chantypes / prefixes when sorting channels in the sidebar
  • When leaving a server (via context menu on sidebar entry or /quit), the server will not be automatically removed from the sidebar
  • Manual disconnection from a server will disable auto-reconnect
  • Disconnected servers can be connected to via the "Connect to server" entry in the context menu for its sidebar entry
  • Servers can be prevented from connecting on launch (or configuration reload) with the servers.<name>.autoconnect setting
  • /connect (without an argument) and /reconnect can be used in open buffers for disconnected servers to (re-)connect to the server
  • /join (without an argument) can be used in channel buffers where the channel is not joined in order to (re-)join the channel

Fixed:

  • Channel mode in pane headers not updating immediately after mode changes
  • Cycle next/previous (unread) buffer shortcuts work from an empty pane
  • Virtualize message rendering to improve buffer performance
  • Default proxy used when checking for an update
  • Detect system locale when formatting timestamps with locale-specific stftime formats
  • When changing connection details for server (e.g. address, port, SASL authentication, etc) the connection details will be properly updated and the connection re-initiated
  • Server configurations are properly updated when reloading configuration file

Changed:

  • Condensed server messages are now enabled by default for nick changes, joins, parts, and quits
  • The default condensed server message icon is now "none"
  • sidebar.user_menu.show_new_version_indicator setting has been changed to check_for_update_on_launch to clarify that it prevents the check for an update
  • Default settings:
    • buffer.server_messages.condense.messages: [] β†’ ["change-host", "change-nick", "join", "part", "quit"]
    • sidebar.padding.buffer: [5,5] β†’ [4,4]
    • sidebar.spacing.server: 12 β†’ 6

Fixed:

  • When joining a channel fails (for example, invite-only or channel full), we now show the
    failure reason

Thanks:

2026.2

02 Feb 08:35
2ba4f2f

Choose a tag to compare

Added:

  • Settings to disable (selectively, or for the entire server) confirmation of delivery for sent messages
  • Setting to adjust inner spacing and outer padding for panes (pane.gap.inner, pane.gap.outer)
  • Setting to style unread query buffers as highlights in the sidebar (sidebar.unread_indicator.query_as_highlight)
  • Settings to configure card and image preview dimensions
  • Support for transparent background.

Fixed:

  • Buffer not showing history until resize
  • Previews are fetched through the same proxy as the server (or default proxy) for HTTP/SOCKS5 proxies
  • No longer highlight nickname mentions in sent messages in certain scenarios
  • Filters applied to one server will no longer hide query panes for other servers
  • Card preview description text is now limited in height to prevent excessive text display

Changed:

  • No longer highlight matches in sent messages
  • No longer show notifications for messages where the relevant buffer is open and Halloy is focused

Thanks:

2026.1.1

21 Jan 19:16
ebc52d3

Choose a tag to compare

Note: Windows

Windows build didn't like our extra version number here, so please use 2026.1 until we release 2026.2.

Changelog

Fixed:

  • Version number reported in AppData file

Thanks:

2026.1

21 Jan 07:34
d8975df

Choose a tag to compare

Added:

  • Added Open URL entry to URL context menus
  • Setting to not hide consecutive if previous message was a image preview
  • Channel discovery buffer to view all channels on a server (using LIST). Can be opened via sidebar button or command bar.
  • Setting to hide server icons in sidemenu
  • Setting to adjust buffer padding and server spacing in sidemenu
  • Setting to adjust entry padding in context menus
  • Support for configuring a regex-based allowlist of URL patterns for Preview
  • Setting to open a new pane, replace current pane, or open a new window after /join
  • Emoji, channel, and user completion can be used with commands
  • Auto-completion (emoji/channel/user) will auto-complete at the text cursor (instead of the end of the current input)
  • Insert-nickname will place the nickname at the text cursor (instead of end of the current input)
  • Backlog separator can be customized with a custom color and text (with the ability to remove text from it)
  • Setting to disable unread indicators for specified channels/servers
  • Users and messages can be filtered using regular expressions
  • Added ability to set default QUIT and PART reason
  • /connect command to temporarily connect to a server
  • Setting for the font size of messages that contain only emojis

Fixed:

  • No longer any delay in showing a tooltip after hovering
  • Ignored users will not be suggested by user auto-completion
  • Channel auto-completion works with all channel prefixes specified by the server
  • Number pad enter now sends messages instead of adding a new line
  • Join & monitor commands sent automatically on connection respect TARGMAX limits specified by the server
  • /sysinfo is cleared from input when sent, and is recorded to the buffer even if the server doesn't support echoes
  • Channel and user links in messages in the highlight buffer
  • Remember fullscreen state across sessions

Changed:

  • Keybindings for macOS default to Emacs-like by default, to match native text-input behavior

Thanks:

2025.12

29 Nov 06:46
c560a00

Choose a tag to compare

Added:

  • Ability to exclude previews from specific server messages (e.g. topic, part, quit)
  • Ability to expand & contract condensed messages via left-click
  • Ability to hide nickname for consecutive messages from the same user
  • Ability to hide the indicator when a new version of Halloy is available
  • Ability to set Emacs-like keybindings for text input
  • Ability to specify a distinct sound for each match highlight set
  • Border radius on both image previews and cards displaying images through meta tags (configurable)
  • Change-host and kick server messages messages can be condensed
  • Context menu added to text input when right clicking
  • Context menu item added to server-wide buffers to close all queries
  • Exit application from user menu
  • Fuzzy matching when searching in command bar
  • Keyboard shortcuts can now be unset
  • Messages that fail to send are dimmed and marked, and can be deleted or re-sent (for servers that support the echo-message capability)
  • Per server custom proxy configuration option
  • Reload Halloy by sending SIGUSR1 on Unix system
  • Setting to disable file transfers (DCC), removing it from the UI
  • Setting to notify for every message in a channel
  • /plain command to send text with automatic formatting disabled
  • Whowas instead of Whois action in context menu for offline nicknames

Fixed:

  • Channels with the same name as servers now appear before servers when searching in command bar
  • Flickering logo on Welcome screen
  • Hide jitter in backlog divider caused by read marker updates when marking read on send
  • Larger fonts (and font sizes) can be used without blanking out the input box
  • NumLock status respected in input box & shortcuts
  • Server messages reporting an inability to send to a nick/channel are routed to the relevant buffer
  • Standard Exif rotation data is used when displaying images

Changed:

  • Buffer context menu items in sidebar are sorted alphabetically
  • By default the backlog separator is hidden when all messages in a pane have been marked as read (buffer.backlog_separator.hide_when_all_read)
  • Unicode nicknames are now supported
  • User menu configuration moved to [sidebar.user_menu] section

2025.11

28 Oct 22:39
295cba0

Choose a tag to compare

Fixed:

  • Regression when loading chat history in a channel

Thanks:

2025.10

28 Oct 17:51
dd7d600

Choose a tag to compare

Added:

  • /sysinfo command to send system information to current buffer
  • Copy URLs from context menu by right-clicking on links
  • Settings to condense multiple consecutive server messages into a single abbreviated message
  • /detach command to detach from channels (soju feature)
  • Support for USERINFO CTCP query
  • Configurable anti-flood protection for servers that do not advertise SAFERATE
  • Channel modes will be retrieved on joining a channel (to be shown in the pane title bar)
  • Display own nickname next to text input field
  • Server messages can be dimmed (enabled by default), to lessen their visual impact relative to user messages
  • Context menu to timestamps that shows the message date, and will copy the timestamp to the clipboard when clicked
  • Setting to open new buffers scrolled to the bottom (rather than scrolled to the last unread message, the default and current behavior)
  • macOS: Ability to adjust content rendering to account for titlebar
  • Setting to remove all window decorations
  • New sounds: Zone, Bloop, Drop, Tweep.

Fixed:

  • Enforce delay between notifications
  • Larger fonts (and font sizes) can be used without blanking out the sidebar or pane title bar(s)
  • The primary clipboard (with copy on selection & paste with middle click) is supported on Linux
  • Sound effects are now properly reloaded when config file is refreshed from within the application
  • Filters are applied only to the server they are specified for
  • Filters are renormalized properly when ISUPPORT is updated
  • Crash when typing /bouncer into the message box
  • Scroll state no longer changes rapidly when long previews for URL(s) are present in history
  • Sidebar menu always takes one click to open (would sometimes require two clicks)

Changed:

  • The logs pane will only contain log messages since the last of launch of Halloy (i.e. for the current session only)
  • Always show version number in user menu

Thanks:

2025.9

17 Sep 14:25

Choose a tag to compare

Added:

  • Added different unread icons for highlights vs regular unread messages
  • Setting to change icons for unread messages and unread highlight messages
  • Setting to change server icon size
  • Setting to control spacing between messages in buffers
  • Ability to specific multiple themes which then gets picked randomly at launch
  • Notification indicator on sidebar menu for warning & error log messages
  • Ability to mark as read on buffer close only if scrolled to the bottom of the buffer (new default behavior)
  • /part, /topic, /mode, /kick, and /ctcp commands can have their target(s) argument skipped when it can be inferred from context (e.g. /topic will target the current channel by default when used in a channel buffer)
  • /cleartopic command to remove a channel's topic (will target the current channel by default when used in a channel buffer)
  • Ability to hide and theme kick server messages
  • Setting to control whether or not to restore on launch the panes that were open when Halloy last closed
  • Setting for split axis chosen as the shorter dimension of the focused pane (new default behavior)
  • Setting for split axis chosen as the shorter dimension of the largest splittable pane
  • soju.im/bouncer-networks support
  • Setting to hide the backlog divider when all messages in the buffer have been read
  • Setting to specify whether nickname highlighting is case sensitive
  • Setting to hide topic changes

Fixed:

  • Receiving files over DCC will no longer stall when sender stops accepting received receipts
  • Attempting to navigate to the next/previous unread buffer, when there is no such buffer, will no longer clear the buffer
  • Window position is now validated, preventing windows from opening on disconnected monitors
  • When kicked from a channel the kick message will be broadcast in the server buffer (which remains open) as well as in the channel history (which is closed on kick)
  • Preview images with large dimensions will not be displayed if larger than the allowed buffer size
  • Do not activate the mark as read buffer when blocked/hidden messages are unread in the buffer
  • Nickname highlighting is case insensitive by default (and uses the server's specified casemapping)
  • Nickname changes properly broadcast in all channels user is in
  • Page up/down behavior moves by consistent page length, and will no longer get stuck at the top of a buffer
  • file_transfer.save_directory is now affected by path substitutions (tilde expansion & relative path prefixing)

Changed:

  • Relative paths in configuration files are now prefixed with config dir

Thanks: