Added:
- Internal buffers (logs, highlights, etc) can be added to sidebar
- Improved legibility of the returned values of
MONITORlist (/monitor L) - Config option (
preview.card.description_decode_html) to decode html strings in preview card descriptions - Support displaying a larger version of the card images in-app
- IRCv3
no-implicit-namessupport - Keyboard shortcuts validation (e.g no duplicate key binds)
actions.buffer.notificationssettings to control how interacting with notifications is handledactions.buffer.click_nicknameandactions.nicklist.click_nicknamecan be used to specify whether a nickname will: open query and how the query is opened, insert nickname in the input box, or no action ("no-action"or"noop"); takes over functionality frombuffer.nickname.clickandbuffer.channel.nicklist.clickand adds the ability to perform no actionactions.buffer.click_channel_nameandactions.buffer.click_highlightcan be set to no action ("no-action"or"noop") to not open the channel when clicking on the channel name- Explicit portable mode
- Theme editor can be closed via Escape
Fixed:
- Nick highlight improvements
- Handle nick possessives
<nick>'s(<nick>should be parsed) - Skip parsing nicks inside abbreviations (
e.g.shouldn't have highlights)
- Handle nick possessives
- Notifications no longer immediately dismissed in some Wayland DE(s)
- Do not send duplicate
JOINmessage when using/join - Do not send
MARKREADfor non-PRIVMSG/NOTICEmessages when the server does not support echoes - Do not show unread/highlight indicators for ignored messages
- Do not copy empty selections to the primary clipboard (i.e. do not clear the primary clipboard when a non-selection action is performed, such as moving the cursor or focusing the text input on some systems)
- Prevent anti-flood rate limiting from refilling the token bucket beyond its configured capacity
- Show unread indicators for panes hidden by maximize
- Allow commands (e.g.
/join) to be used in the input box of not-joined channels - Disabled menu entries now block clicks from passing through
- Preserve own away state when leaving and rejoining a channel
- Do not panic when previewing an SVG with a very large filter
- Reject overlong lines from the server connection instead of buffering them without bound
- Do not panic when a server-supplied METADATA retry-after value would overflow the retry timer
- Stop busy-looping on CPU when a DCC file-transfer peer closes its connection early
Changed:
change_modeserver messages are categorized asactions(i.e.actions_dimmedcontrols whether they are dimmed by default)- Renamed
sidebar.server_icon→sidebar.primary_iconandsidebar.server_font_size→sidebar.primary_font_sizesince the settings now apply to both servers and internal buffers - Renamed
sidebar.font_size→sidebar.secondary_font_sizeto reflect its relationship tosidebar.primary_font_size - Renamed
actions.buffer.local→actions.buffer.open_internalto match naming convention used elsewhere - Renamed
actions.buffer.click_usernametoactions.buffer.click_nicknamefor more consistent terminology - Moved functionality from
buffer.nickname.click→actions.buffer.click_nicknameandbuffer.channel.nicklist.click→actions.nicklist.click_nickname - Windows release artifacts are signed using SignPath
- Set window icon also on Linux for X11
Thanks:
- Contributions: @englut, @luca020400, @classabbyamp, @KaiKorla, @TheDcoder, @City-busz
- Bug reports: @luca020400, agent314
Added:
- Add clear buffer shortcut to title bar
- Indicate in query if user is offline in its title bar
Fixed:
- Issue where large window size could cause Halloy to crash in certain scenarios
- Correctly support
RPL_METADATASYNCLATER - Issue where input box could lose focus after a filehost, reply, or reaction modal
- Issue where a buffer could jitter in certain particular scroll positions
- Minor issues where input tooltips could fail to reflect current caret position, highlight the correct active argument, show when first the input is first loaded, etc
- Show
DisplayinConfigurationdocs menu - Document that
servers.<name>.usernamesetting will fall back toservers.<name>.nicknameif not set - Nick completion tooltip no longer shows when there is only a single match
Changed:
buffer.reply.insert_nickno longer inserts nick when replying in query buffers or to yourself- Input tooltips are aligned with the input (i.e. inset when
text_input.nickname.enabled = true) servers.<name>.sasl.plain.usernamesetting will fall back toservers.<name>.nicknameif not set- Replace the Windows MSI package with a per-user Inno Setup installer
Thanks:
- Contributions: @luca020400, @englut, @furudean
- Feature requests: @g00s
- Bug reports: wwWraith, @skizzerz, @ncfavier, @account1009
Fixed:
- Panic when a reply contains a multibyte character near the start of message
- Ensure messages don't get formatted if channel has +c mode (colour filter)
- User highlighting incorrectly matching contraction suffixes
Thanks:
- Contributions: @luca020400, @aniketkotal
- Bug reports: @WinnerWind, @sco1, @classabbyamp, @aniketkotal
Added:
- Support for IRCv3
replyclient tag - Support for IRCv3
draft/message-redaction - Support for IRCv3 metadata
display-name,avatar,pronouns,homepage,color,statuskeys - IRCv3 bot mode support, with bot icon in buffers and nicklists
- Support for IRCv3 WebSockets
- Support for displaying SVGs
- Notification for reacts (
notifications.reaction) - Theme colors for horizontal rule text and buffer backlog/date separators
- Font size settings the sidebar (
sidebar.font_size) and server titles in the sidebar (sidebar.server_font_size) - The focused buffer is indicated in the sidebar by a thin border (can be configured with the optional theme color
buttons.primary.border_active, falls back tobuffer.border_selectedif no color is configured; set to"#00000000"to disable) - Two new optional theme colors,
buttons.primary.border_activeandbuttons.secondary.border_activethat define border color used to signal secondary state (set to"#00000000"to disable) - The config
buffer.server_messages.condense.maxmay be used to limit the number of user entries shown in condensed messages - Setting to close queries when closing query buffer panes (
buffer.close.query) - Configuration options for font stretch (
font.stretch) - The default font is not bundled if default feature
iosevka-fontis disabled. - Customize the character used to indicate a nickname was truncated with
display.truncation_character - Support for
draft/chathistory-endmessage tag - Setting to mark new messages as read for any open buffer when the buffer is scrolled to the bottom and Halloy is focused (
buffer.mark_as_read.on_message) - Setting to hide the text of messages that contain only a single URL, when the URL's preview is visible (
preview.hide_url) - Nick and channel completion picker
- Runtime graphics settings (graphic backend, vsync, and antialiasing)
Fixed:
- Issue where duplicate messages could appear for sent messages when connecting to a soju bouncer
- Issue where ZNC playback would produce duplicate messages
- Record
NICKandQUITmessages returned bydraft/event-playback(chathistory) - Allow multiple file uploads when pasting on macOS
- Preview inclusion conditions would require both channel and user/server_message be specified, when one or the other should be sufficient
- Matching against
usersfor some include/exclude conditions - Do not hide consecutive nicknames if the user's displayed access levels or bot mode changes
- Link matching:
- Channel link matching on single line only
- Fix link matching for both end of line delimiters & punctuations
- Handle URLs ending with paired delimiters chars when matching links
- Handle leading delimiters when parsing link fragments to match nicks after quotes
- Issue where a shorter highlight word would match instead of a longer one sharing the same prefix
- Issue where unread indicator could appear in sidebar for an open pane that does not have unread messages
- Issue where backlog divider in highlights or logs pane would not update when marking the pane as read
VERSIONandJOINcommands on connect are skipped if server is primary soju servertorenabled builds- Emoji pickers not finding newer emoji like 🙂
↕️ - Selection expansion will take precedence over input history navigation (i.e. shift + ↑ will expand the selection to include the top line of input, rather than navigate to the previous input history entry)
- Window title displays buffer name after closing previously last pane
Changed:
- On-join topic messages dropped by default (
buffer.server_messages.join_topic), instead the topic banner is enabled by default (buffer.channel.topic_banner) - Topic messages manually requested via
/topichave a distinct setting from topic messages received on join (buffer.server_messages.topic→buffer.server_messages.request_topic&buffer.server_messages.join_topic) - Badging on server icons used to indicate unread/highlight state (instead of the color of the server icon); unread indicators positioned to be aligned with server badge
- Default
sidebar.server_icon.sizechanged from12→20 - Default
sidebar.unread_indicator.highlight_icon_sizechanged from8→6 - Default
sidebar.spacing.serverchanged from6→2 - Default
sidebar.padding.bufferchanged from[4, 4]to[5, 4] - For filehosts, localhost is now treated as a secure transport when using
servers.<name>.filehost.override_url buffer.mark_as_read.on_message = trueis now equivalent tobuffer.mark_as_read.on_message = "open"(previously equivalent tobuffer.mark_as_read.on_message = "focused")- Tooltips have had their spacing tightened
- Reactions are listed in the order they were first added to the message
- Reaction tooltips:
- Display the reaction text in a larger font size (uses
font.only_emojis_sizeif set and the reaction is an emoji) - Lists nicks with a new layout, where nicks are now colored and are listed in order of when they reacted
- Display the reaction text in a larger font size (uses
Thanks:
- Contributions: @bb010g, @furudean, @englut, @luca020400, @4e554c4c, @stephenfin, @achille, @ncfavier
- Bug reports: @bb010g, daniiooo, @e00E, belthesar, @Fingel, @death916, @furudean, @ncfavier, @WinnerWind, @alexaandru, @kasper93, tranzystorekk
- Feature requests: @WinnerWind, Shyny, @classabbyamp, @4e554c4c, @furudean, @englut, @esden, @Erroneuz
Added:
- Files can be uploaded to server using
soju.im/FILEHOST(see the file uploads guide for details) typing- Per-server
typingsettings (servers.<name>.typing) - Animate typing dots
buffer.typing.stylesetting withpaddedandpoppedmodes for typing indicators
- Per-server
- Settings to reroute direct PRIVMSG and/or NOTICE messages to another buffer (
servers.<name>.reroute.queryandservers.<name>.reroute.notice) channel-contextsupport (messages with the tag will be automatically rerouted)- Theme & Display
buffer.nickname.colornow supports{ palette = ["#RRGGBB", ...] }for nickname colors from a fixed setbuffer.server_messages.awaysetting to control when automated away messages are shownbuffer.server_messages.awaytheme setting to control how automated away messages appear- Setting to control whether unread indicators are shown on open buffers (
sidebar.unread_indicator.show_on_open_buffers) - Unread indicators for queries can be hidden via
sidebar.unread_indicator.exclude - Ability to customize the arrows used for directional messages such as join, part, quit, kick, and CTCP messages.
- Expanded
tooltipssetting to allow hiding auto-complete tooltips
- Commands
- Ability to add optional arguments in custom aliases (
/msg ChanServ op $channel $1?-) /massmessagecommand to send Ergo/Solanum mass-messages/invitecommand tooltip and validation provided, and display ofINVITE-related messages improved//can be used to escape a leading/; in other words,//topic examplewill send the message/topic example(not execute the/topiccommand)
- Ability to add optional arguments in custom aliases (
- Controls
- Right-click context menu on messages now includes "Copy message" to copy the message text to the clipboard
- Message drafts are remembered across Halloy sessions (can be disabled with
buffer.text_input.persist) - ctrl + , now opens the config file (⌘ + , on macOs)
- emacs bindings for ctrl + u and ctrl + w
buffer.text_input.kill_to_clipboardto control key bindings moving killed text to clipboard
- Windows MSI installer does not automatically start Halloy during passive or quiet installations
Changed:
- Default typing style (
buffer.typing.style) is nowpopped(frompadded) - Moved
typingsettings frombuffer.channel.typingtobuffer.typingto clarify that they apply to queries as well as channels - Moved nicklist nickname settings from
buffer.channel.nicklisttobuffer.nickname(awayandcolor) - Colons, semicolons and double quotes are no longer considered part of channel names
- Backslash escapes are now only interpreted when escaping markdown formatting characters
- Tooltips will be shown for all commands, even those not available on the server, with an error tooltip shown if the server does not support the command
- Parsed URLs will be displayed with IDN encoded domains (to avoid domain spoofing) and percent-decoded path & later components (for legibility) by default (
display.decode_urls)
Fixed:
- Server notices with wildcard targets (for example
NOTICE *) are shown in the server buffer again typing- Settings for buffers could get in a stuck state without any way to control them (or see that the state is stuck)
- +typing=done should not be sent when the message is sent
chathistory- Support for multiline messages
- TARGETS pagination
- More conservative treatment of pagination on reconnect
- Greatly reduced the scope of deduplication to only messages that can be expected to possibly be duplicates
- Receive & apply reactions in queries
- IRC URIs now handle bracketed IPv6 hosts and percent-encoded channel targets correctly
- Fix URLs with non-ASCII characters getting percent-encoded when rendered in buffers
- Filtering for common trailing punctuation and delimiters when linking channel names (and nicks & urls)
/MOTDcommand will not trigger end-of-registration actions- Repeat lines in some MOTDs would be deduplicated
- Keyboard shortcuts now work in popped out buffer windows, including command bar shortcuts
sidebar.order_bysetting works when set to"config"
Removed:
buffer.channel.message.nickname_colorin favor ofbuffer.nickname.color
Thanks:
- Contributions: @furudean, @omentic, @KaiKorla, @achille, @classabbyamp, @ncfavier, @englut, @WinnerWind, @okdana, @luca020400, @mgdudas, @auronandace
- Bug reports: sebbu, @whitequark, @SnoopJ, @esden, @miyukoc, @ld-cd, @achille, @classabbyamp, vignoux, @ncfavier, @englut, @cyrneko, @jeffharrell1, @RoboDanjal, @internet-catte, @Lualttt, @c727, @cyrneko, @furudean, @lephe
- Feature requests: @omentic, @classabbyamp, @ncfavier, @ineeee, @4e554c4c, @RoboDanjal
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) - 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:
- Contributions: @KaiKorla, @englut, @mango766, @ncfavier, @classabbyamp, @melocene
- Bug reports: chmod222, @whitequark, @englut, sebbu, @ascarion, @4e554c4c, @BKVad1m, @mango766, @esden
- Feature requests: @gAlleb, @jtbx, @cyrneko, @englut, @ascarion
Added:
- Support for the IRCv3
reactclient tag. - Correctly record window size if window is maximized
- Optional settings to transform channel name casing:
sidebar.channel_name_casingfor channel entries in the sidebarbuffer.channel.channel_name_casingfor channel pane title bars
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) - Channel name casing can now be transformed (e.g. to lowercase) in sidebar entries and channel pane titles via
channel_name_casingsettings
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
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 (defaults to true)
- 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_levelsto allow all access levels (in addition to highest or no access levels) in buffer/nicklist/input - Setting to allow locale specification used when formatting timestamps
- Setting to include chantypes / prefixes when sorting channels in the sidebar
- Manual disconnection from a server will disable auto-reconnect
- Disconnected servers can be connected to via the
Connect to serverentry 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:
- When leaving a server (via context menu on sidebar entry or
/quit), the server will not be automatically removed from the sidebar - 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
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
Fixed:
- Version number reported in AppData file
Thanks:
- Bug reports: @englut
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
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
Thanks:
- Contributions: @kasperkronborg, @mistivia, @oooo-ps
- Bug reports: @Frikilinux, ThePendulum, @crabbedhaloablution, @findus, @Darksecond
- Feature requests: @cyrneko, ilya, abby, @clorteau, @RobertCraigie, @dei-layborer, @classabbyamp, @4e554c4c, @dmd, @ghost, @Erroneuz, @kasper93, @inphobia
Fixed:
- Regression when loading chat history in a channel
Thanks:
- Bug reports: @Erroneuz
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
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
Added:
- Clear buffers with
/clearcommand - Notification indicator on sidebar menu for application updates and file transfers
Fixed:
- Nicknames in query was always shown as offline
- macOS now properly prioritizes XDG config directory (
~/.config/halloy) over user config directory (~/Library/Application Support/halloy)
Added:
- Ability to ignore nicknames on server level or on a per-channel basis
- Ability to truncate nicknames in buffer
- New option to customize the appearance of offline nicknames
- Specify whether nicknames in buffers appear with the user's current status or status at time of sending the message
- Log level filtering for the log buffer (ctrl + l) and log file
- Per toast type setting for showing content in toasts
- Ability to hide
nickandmodechange server messages - Context menu item added to server-wide buffers to mark all messages as read
- Auto-accept file transfers, with support for nick and mask filtering
- Adjustable scrollbar sizing
Fixed:
- Sidebar menu is now drawn with the correct offset
- Prevent messages with previews from shifting position on hover
- Recognize registration completion on older servers without capability negotiation (i.e. send
on_connect,umodes, etc.)
Changed:
- Optimized message loading by implementing lazy loading: buffers now load only enough messages to fill the visible area instead of always loading 500+ messages.
- The
[buffer.away]section has been split into[buffer.channel.nicklist]and[buffer.nickname]for greater flexibility - Colorize the level text in log buffer based on theme
- Scrollbars now use a dedicated
scrollbarcolor instead ofhorizontal_rule - Tor is now an optional feature. Build with
--features torto enable Tor proxy support - Topic "set at" time is now shown with local timezone offset, instead of UTC's
Thanks:
- Contributions: @4e554c4c, @KE0VVT, @englut, @KaiKorla, @root-goblin
- Bug reports: @darienm, @mercster, @ChrisRenfrow, @glguy
- Feature requests: @rossburton, death916, @Celeo, @TehPeGaSuS, @gdluca, @darienm, @RealKindOne, @Tahomaru, @tribly
Added:
- New application icon
- Show channel mode in panel if available
- Configuration options for font weight and bold weight
/delay <seconds>command that can be used to control the timing of commands sent on connect- Configuration option for the ordering of servers in the sidebar
Fixed:
- Handling of RPL_NOWAWAY & RPL_UNAWAY to reflect user's own AWAY state
- Draft messages are saved while navigating message history (i.e. pressing ↑ then ↓ in the input box will restore an unsent message after displaying sent message history)
Thanks:
- Contributions: @englut, @KaiKorla, @kit-ty-kate, @mhegreberg, @ohhskar, Rune Seir
- Bug reports: @awbradle
- Feature requests: @darienm, @kasper93, @auronandace, @n-kalosha
Added:
- Ability to show a modal prompt before opening a URL
- WHOIS command now accepts optional server parameter
- CTCP requests through commands and user context
- Title bar button and keyboard shortcut to mark a buffer as read (will update the read marker as well, if the
read-markercapability is available) - Mark as Read settings to control when buffers are automatically marked as read
/hopcommand./hopparts the current channel and joins a new one- Settings to limit passwords read from a file to the first line of the file only (on by default)
- Receive
WALLOPSmessages in the server buffer (color configurable in themes)
Changed:
- Clicking to insert a username will now use same suffixes specified for autocomplete
- Emoji picker will only show once there are two characters after
:(by default, configurable) - Autocomplete will match users based on how recently they were seen in the channel (by default, configurable)
- Include & exclude settings for previews apply to queries as well as channels
Added:
- All toast notifications now display the server name
- Server messages (join, part, etc.) are now user-aware and will color nicknames accordingly
- Actions will be colored with the same features as regular messages (nicknames, urls, etc)
- Shortcuts for cycling buffers with unread message(s)
- Cycle to next buffer with unread message(s) ctrl + `
- Cycle to previous buffer with unread message(s) ctrl + ~
- Navigate commands & emoji picker with ↑ & ↓ (as well as Tab & Shift-Tab)
- Expanded command completion and error checking/reporting
- Various shortcuts for https://themes.halloy.chat/
- The Command Bar now includes a "Discover More Themes" action, which opens the website
- The Theme Editor now has a "Share Theme with Community" option that opens the submit page with the theme payload pre-filled
- Ability to adjust alpha value of away users
- New action settings section with settings to control how to open buffers in response to various user actions
Fixed:
- No longer freezes under Wayland when window(s) are not visible
- Emoji picker is no longer case sensitive (i.e. 🤔 and :THINKING: will both match 🤔)
- Full support for the
/noticecommand- Message text will no longer be truncated to the first word
- Sent notices appear in message history
/notice <targets>(without any message text) will open a pane for the target(s) without sending a message
/msg <targets>supports more than one target when opening pane(s) without sending a message
Changed:
- Improved font rendering on Windows for better readability
- Sidebar buffer action settings have been moved to the new action settings section
sidebar.buffer_action→actions.sidebar.buffersidebar.buffer_focused_action→actions.sidebar.focused_buffer
Added:
- Highlights by regex and words
- Time remaining is now displayed during file transfers
- Sidebar now automatically adjusts its width based on content
- Ability to customize default pane splitting direction (vertical or horizontal)
- Clicking a nickname is now configurable. The default behavior has changed to open a query.
- Ability to quit Halloy through command bar and keyboard shortcut
- New shortcuts for scrolling a buffer:
- Scroll buffer up a page pageup (Fn + ↑ on macOS)
- Scroll buffer down a page pagedown (Fn + ↓ on macOS)
- Scroll to top of buffer ctrl + ↑ (⌘ + ↑ on macOS)
- Scroll to bottom of buffer ctrl + ↓ (⌘ + ↓ on macOS)
Changed:
[file_transfer.save_directory]is now default download path for transfers. If set, files will be downloaded there by default. Otherwise, you'll be prompted to choose a location- Ability to dynamically select dark or light theme based on OS appearance.
/msg <target>(without any message text) will now open a pane for the target without sending a message- Text input of the active pane will remain focused after all actions
- Focus last known active pane on launch
- Changed maximize / restore buffer shortcuts to ctrl + shift + ↑ / ctrl + shift + ↓ (⌘ + shift + ↑ / ctrl + shift + ↓ on macOS) to prevent collision with new scroll shortcuts
Added:
- Emoji picker accessible via
:in text input - Automatically replace
:shortcode:with corresponding emoji - Added an option to show or hide images in preview cards by default
Fixed:
infinite_scrollwas defaulting tofalse, contrary to its documented default value. Now defaults totrue- A rare issue where the app opens smaller than when closed
- Closing the application while it is minimized (on Windows) causes it to open with the wrong size and position next time
- TLS connection issue on Windows (10+)
Added:
- Image and card previews for url links
- Ability to disable dimming of usernames when away
- Ability to customize autocomplete sorting direction and completion suffixes
- Ability to hide command descriptions
- Ability to set delay before triggering notifications
- Ability to toggle fullscreen
- Ability to exclude and include notifications.
- New IRCv3 extensions support
chathistorysetname- Standard Replies
- Case mapping support via
ISUPPORT - Restore last known window position and size at launch
- Date separators in buffers when day changes
- Show nickname in user-context menu
- Tor support as a proxy option
Fixed:
- Long username & password combinations could cause SASL authentication to fail
nick_password_commandis now working as intended- Don't add suffix (
:) to prompt if there is no valid nick to autocomplete - Append
.tomlfilename when saving themes on macOS - Highlight notifications are correctly triggered for
/meactions
Changed:
- Changed focus buffer shortcuts to include ctrl (⌘ on macOS) to avoid interfering with default text input shortcuts for word navigation (⌘ + ←, ⌘ + →)
Fixed:
- CPU spiking due to memory leak in upstream crate.
Added:
- Highlight buffer to view highlights across all servers. Can be opened via sidebar button or command bar.
- Logging buffer to view logs. Can be opened via sidebar button or command bar.
- New hotkeys
- Toggle channel topic (Ctrl + Alt + t (macOS: ⌘ + ⌥ + t))
- Toggle file_transfers buffer (Ctrl + j (macOS: ⌘ + j))
- Toggle logs buffer (Ctrl + l (macOS: ⌘ + l))
- Toggle theme editor window (Ctrl + t (macOS: ⌘ + t))
- New configuration options
- Dynamically select dark or light theme based on OS appearance. See configuration.
- Ability to define a shell command for loading a NICKSERV password. See configuration
- Ability to define a shell command for loading a SASL password. See configuration
- Show/hide sidebar button to view logs. See configuration
- Ability to align nicknames above messages. See configuration.
Fixed:
- Inverted scrolling direction.
- Only highlight if user nick isn't part of another word.
- Errors from password commands are now caught and displayed to the user.
Removed:
- Configuration options:
[sidebar.buttons]in favor for the new User Menu
Added:
- Multi-window support: Pop out panes into separate windows.
- In-app theme editor with ability to with share it via a halloy:// URL.
- Clickable users and channels in buffers.
- New configuration options
- Ability to include or exclude channels for server messages (join, part, etc.). See configuration.
- Ability to color nicknames within channel messages. See configuration
- Ability to define a shell command for loading a server password. See configuration
- Enable support for IRCv3
msgidandread-marker
Fixed:
- Regression where messages sent to ZNC virtual users were routed to the wrong buffer (e.g.
*statusrouted tostatus). - Timeouts that could occur while Halloy was running in the background.
Changed:
- Default Ghost sequence changed to
REGAIN.
Added:
- New configuration options
- Right aligning nicks in buffers. See configuration.
- Right aligning nicks in nicklist. See configuration.
- Hiding
chghostmessages. See configuration. - Overwrite nicklist
widthin channels. See configuration. - Show/hide user access levels in buffer and nicklist. See configuration
buffer_focused_actionadded tosidebarto enable actions a focused buffer. See configuration.- Notification for direct messages. See notification configuration.
- Enable support for IRCv3
Monitorandextended-monitor
Fixed:
- Expanded recognized login notifications (used to join channels that report themselves as requiring registration after logging in)
- Messages with multiple targets are correctly recorded into multiple buffers (and/or multiple times into the same buffer) client-side.
- Messages sent with a STATUSMSG prefix are recorded and indicated in the corresponding channel.
- Ability to position the sidebar at the top, bottom, right, or left. See configuration.
/moderequires too many parameters for certain commands.
Changed:
- Reworked themes to add better customization possibilities
- NOTE Old theme files are not compatible with the new format. However all the themes in the theme community has been updated to the new format.
- Unread indicator has changed from a boolean value to a enum. See configuration.
- Renamed
sidebar.default_actiontosidebar.buffer_action. - Auto-completing (with tab) a nickname at the beginning of the input line will append ': ' (colon space). Otherwise, a space is appended to the completion.
- SIGTERM and SIGINT are now intercepted and trigger the same exit path as a normal window close
Removed:
- Removed
hexconfiguration option for server messages and nicknames.hexwas previously used to overwrite a color value. This is now done through the new theme format.
Added:
- Small icon in sidemenu when a new release is available
- Enable support for IRCv3
chghost,account-notify, andextended-join
Removed:
- Persistent window position and size due to an upstream bug
Added:
- Rich formatted and clickable URLs
- Text formatting through
/formatcommand. For more details, see text formatting guide. - Support for CTCP queries CLIENTINFO, PING, SOURCE, and VERSION
- Custom notification sounds. Use your own sounds or select from a few new built-in options. For more details, see notification configuration.
- Support DCC Send requests with spaces in the filename
- Reload config button in Sidebar
Fixed:
- Text input missing key presses in certain instances
- Connection timeout when UI is suspended on an offscreen workspace due to channel back pressure
- Raw commands are passed through unmodified
- AWAY command cuts off the away message
Added:
- Ability to open
irc://andircs://URL schemes - Ability to overwrite nickname colors by providing a hex string (see buffer configuration).
- Ability to overwrite server & internal message colors by providing a hex string (see buffer configuration).
- Configurable shortcuts for "Leave Buffer" and "Toggle Sidebar" actions (see keyboard shortcuts configuration).
- Ability to remember window position and size when reopened.
- Ability to hide unread indicators in sidebar (see sidemenu configuration)
Fixed:
- UTF-8 channel name rendering in sidebar and in pane title bars.
Added:
- Reload configuration file from within the application (Ctrl + r (macOS: ⌘ + r))
- Allow configuration of internal messages in buffer (see buffer configuration)
- User information added to context menu
- Support for IRCv3
CAP NEWandCAP DELsubcommands - Enable support for IRCv3
multi-prefix,message-tags,WHOX, andUTF8ONLY - Dynamic commands and tooltips added to command auto-completion via
ISUPPORT - Added support for
socks5proxy configuration (see proxy configuration) - Added support for
httpproxy configuration (see proxy configuration)
Changed:
- Simplified onboarding experience for users without a
config.tomlfile - MacOS will now also look in
$HOME/.config/halloyforconfig.toml. - Context menus can be dismissed by pressing Escape
- Join channels that report themselves as requiring registration after logging in
Fixed:
- No longer automatically reconnects to a server after using the
/QUITcommand.
Added:
- File transfer support (see file transfer configuration)
- Adjust WHO polling for servers without
away-notify(see server configuration) - Tooltips on application buttons (see tooltips configuration).
- Sidebar menu buttons (see sidebar configuration).
- Display current version, and latest remote version in command bar
- Allow reading passwords from files in server configuration
- Allow configuration to specify a server's NickServ IDENTIFY command syntax
Fixed:
- Accept '@' in usernames to support bouncers that use the user@identifier/network convention
- Prevent rare scenario where broadcast messages' timestamp would not match time the messages are received
- Fix SASL on macos by using RUSTLS backend
Changed:
- MacOS icon to better follow Apple's Human Interface Guidelines
BREAKING Configuration file format has switched from YAML to TOML. Please visit the migration guide here: halloy.squidowl.org/guides/migrating-from-yaml.
Added:
- Added command bar entry to open wiki website.
Changed:
- Configuration file now uses TOML instead of YAML
- Renamed
[keys]section to[keyboard] - Renamed
[buffer.channel.users]section to[buffer.channel.nicklist] - Renamed
[buffer.input_visibility]section to[buffer.text_input] - Removed
[dashboard]section- Renamed
[dashboard.sidebar]section to[sidebar]
- Renamed
- Changed
excludefrom[buffer.server_messages]to two separate settingsenabled = boolsmart = number
- Renamed
- Use primary text color instead of accent color for
solidnicknames - Op and Voice context menu items hidden in channels where the user is not an Op
Fixed:
WHOISis now correctly formatted when printed in buffers.
Added:
- Configuration option to enable a topic banner in channels. This can be enabled under
buffer.channel.topic - Messages typed into the input will persist until sent. Typed messages are saved when switching a pane to another buffer, then are restored when that buffer is returned to.
- Added display of highest access level in front of nicks in chat, mirroring the format in the nick list
- Added ability to toggle Op and Voice from user context menu in channels
Fix:
- Context menus now shows buttons as expected
- Buttons on help screen is now correctly sized
- Text input is now disabled when not connected to a channel
- When someone is kicked, it is now correctly shown
- Query messages sent by another client will now correctly be displayed
- Prevent flooding server by grouping channels together in as few JOIN messages as possible
Changed:
- Various UI changes
- Ensured consistent padding in channel buffer
- Unified styling for dividers
Security:
chronoRUSTSEC-2020-0071
Added:
- Option to colorize nicks in the nick list (and an option to control it separately from in the buffer)
- Option to control application scale factor
Fixed:
- Input not visible on Server and Query (DM) buffers
- Clipped buttons in context menu
Changed:
- Improved user experience in text input when auto-completing a nickname.
- Configuration option
server_messageschangedexcludefrom a boolean value to [All,Noneor!Smart seconds].Allexcludes all messages for the specific server message.None[default] excludes no messages for the specific server message.!Smart secondsshows the server message if the user has sent a message in the given time interval (seconds) prior to the server message.
Added:
- Configuration option
servers.<name>.sasl.external.keyadded to support loading a separate PEM PKCS #8 encoded key for SASL authentication.
Changed:
- Focus an available pane on launch, so that launch behavior follows typical use (e.g. if
dashboard.sidebar.default_actionis set toreplacePane, then selecting a channel in the sidebar will replace the focused pane instead of opening a new pane) hidden_server_messageshas been changed toserver_messagesand additional customization has been added:- Exclude messages [join, part, quit].
- Adjust username format.
Fixed:
- Accept '*' as a legal special symbol for usernames
- Accept '/' in usernames, ensuring correct parsing for bouncers using the nick/server convention
- Create the configuration directory correctly, if it does not exist yet.
Added:
- IRCv3 capability
userhost-in-namessupport added - IRCv3 capability
invite-notifysupport added - Configuration option
dashboard.sidebar.widthto control sidebar width. - Configuration option
notificationto control and enable notifications
Changed:
- Limit messages to 512 bytes in length, including the trailing CR-LF characters.
- Configuration option
dashboard.sidebar_default_actionnow moved todashboard.sidebar.default_action
Added:
- Command bar (opened by pressing (Ctrl + k (macOS: ⌘ + k)))
- Configurable keyboard shortcuts for common actions, such as changing buffer focus, maximize / restoring buffer size,
cycling channels in the buffer and more! A new
keyssection has been added to the config file, reference the wiki for more details. - Single clicking on a user will insert nickname to input
- Configuration option
on_connectto execute commands once connected to a server, reference the wiki for more details.
Changed:
- Instead of using hostname as fallback, we now always derive the seed for unique user colors from their nickname
Fixed:
- Set the window application id on Linux to
org.squidowl.halloy - Correctly display all arguments when receiving MODE command
Message history and dashboard state will be reset due to a breaking change. We've switched to a more flexible storage format to ensure future breakages won't occur.
Added:
- Away-notify extension added for supported servers
- SASL support for PLAIN & EXTERNAL. The following per-server config keys have been added:
- PLAIN -
sasl.plain.username&sasl.plain.password - EXTERNAL -
sasl.external.certis a path to the PEM encoded X509 cert
- PLAIN -
- Configuration option
buffer.hidden_server_messagesto hide server messages from the provided array of sources: ["join", "part", "quit"] - Configuration option
buffer.input_visibilityto control input field visibility: always shown or following the focused buffer. - Portable mode - if a config file exists in the same directory as the executable, all Halloy data will be saved to that directory
- Upon joining a channel, display the channel mode in the buffer
- When querying an away user, you will see an away message
- Autocomplete on joined channels
Changed:
- Away users will be appear slightly transparent in nicklist
- Configuration option
new_bufferhas been renamed tobuffer.new_bufferkey will still work for backwards compatibility. - Migrated to our own internal IRC backend. This should allow for quicker development against extensions and bug fixes.
Fixed:
- Changes done in the config file are now properly applied to the old buffers
- Text and colors on light themes will no longer appear washed out
- All WHOIS responses are now properly routed to the buffer where the request was made (text input or via context menu)
- Accessing text input history will only populate the current buffer, not all of them
- Text from input box can be copied to clipboard
- Prevent text input cursor from blinking when window loses focus
Added:
- Nickname completions in text input with Tab
- Previously sent messages can be accessed per buffer in the text input with ↑ / ↓ arrows
- New configuration option
dashboard.sidebar_default_actionto control pane behavior when selecting buffers - Messages from other users containing your nickname are now highlighted
- Themes directory where users can add their own theme files
- Broadcast nickname changes to relevant channels and queries.
- Broadcast quit messages to relevant channels and queries.
- Better error descriptions on connection failures
- Support RAW command
- Drag & drop buffers to the edges for better customization of the grid
- Whois messages are printed in the currently focused buffer
Changed:
- Default channel in
config.yamlhas been changed to#halloy(from##rust) palettefield has been deprecated and replaced bythemeinconfig.yaml- Sorting channel nicknames
- Title headers has been changed to also display user count for channels
- Copy change: "Leave" has been changed to "Close query" for queries
Fixed:
- The last word of a message sometimes disappeared
- Persist partial text input content when switching away from buffer
- Correctly load image on welcome screen
Added:
- First release 🎉