Releases: squidowl/halloy
Releases Β· squidowl/halloy
2026.5
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
multilinewhen 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 tosidebar.order_channels_by. Usesserver.<server_name>.channelsto determine order. - Case insensitive sort of query names in sidebar
- Copied
order_channels_byfromsidebartoserver.<name>, defaults tosidebar.order_channels_byif 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-noticecommands were added to provide/plain//formatfunctionality to the/me,/msg, and/noticecommands
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
Escto 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/noticecommands
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.tomlare now created with owner-only permissions
Thanks:
2026.4
Added:
- Support for the IRCv3
reactclient 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 = falseset 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:
- Contributions: @melocene, @4e554c4c, @TheOneric, @bmndc, @RealKindOne, @englut
- Feature requests: @deepspaceaxolotl, @RoboDanjal
- Bug reports: @barretgoat, @TheOneric, @Erroneuz, @BKVad1m. @englut, @whitequark, petteri, xtracked
2026.3
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 toCtrl+Qon 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>.autoconnectsetting /connect(without an argument) and/reconnectcan 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_indicatorsetting has been changed tocheck_for_update_on_launchto 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:
- Contributions: @Hummer12007, @chamlis, @englut
- Feature requests: @megumintyan, @4e554c4c, @RoboDanjal, @stacyharper, @zZzUP3RzZz, @Porkepix, @vidje
- Bug reports: @someone2037492034, @deepspaceaxolotl, @whitequark, @sebbu2, @esden, @Porkepix, @someone2037492034, @Hexorg, @sulrich, @Erroneuz
2026.2
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:
- Contributions: @Hummer12007
- Bug reports: @e00E, @oooo-ps, @csmith, @bw1, @deepspaceaxolotl
2026.1.1
2026.1
Added:
- Added
Open URLentry 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
/connectcommand 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
/sysinfois 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:
- Contributions: @csmith
- Bug reports: halloy3002, g00s, Eagle-1
- Feature requests: @tribly, @deepspaceaxolotl, @dieperdev, @Erroneuz, @lorenzosu, @Summertime, @WinnerWind, @vidje
2025.12
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-messagecapability) - Per server custom proxy configuration option
- Reload Halloy by sending
SIGUSR1on Unix system - Setting to disable file transfers (DCC), removing it from the UI
- Setting to notify for every message in a channel
/plaincommand to send text with automatic formatting disabledWhowasinstead ofWhoisaction 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
2025.10
Added:
/sysinfocommand 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
/detachcommand 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
/bouncerinto 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:
- Contributions: @Toby222, @Frikilinux, @4e554c4c, @apollo7321, @Bartkk0, @seraxis
- Bug reports: @Toby222, @deepspaceaxolotl, @zhelezov, @Erroneuz, @dgz0, @csmith, @otonoton, @mefistoso
- Feature requests: @j0lol, @xcfrg, ThePendulum, i_like_halloy
2025.9
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/ctcpcommands can have their target(s) argument skipped when it can be inferred from context (e.g./topicwill target the current channel by default when used in a channel buffer)/cleartopiccommand to remove a channel's topic (will target the current channel by default when used in a channel buffer)- Ability to hide and theme
kickserver 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-networkssupport- 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_directoryis now affected by path substitutions (tilde expansion & relative path prefixing)
Changed:
- Relative paths in configuration files are now prefixed with config dir
Thanks:
- Contributions: @Death916, @4e554c4c, @freakyy85, @hashcatHitman, @5GameMaker
- Bug reports: @privacyadmin, @rlndd, @wingedonezero, @Seishiin, @Erroneuz, @andar1an, freakyy85, ThinkT510, alexia, @darienm, quaff, @zhelezov
- Feature requests: @deepspaceaxolotl, @4e554c4c, @seraxis, RebeLLz, @cvengler, @barretgoat, @remexre, @dmd