[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"package:cask:halloy:en":3,"releases:stats:cask:halloy:en":493,"releases:cask:halloy:1:false:false:en":494,"releases-count:cask:halloy:true:en":613},{"accentColor":4,"artifacts":5,"autoUpdates":28,"categories":29,"conflictsWith":35,"dependsOn":38,"deprecated":28,"description":46,"descriptionEn":47,"developer":48,"disabled":28,"displayName":49,"downloadSha256":50,"downloadSize":51,"downloadUrl":52,"editorChoice":28,"formulaeUrl":53,"homepage":54,"iconUrl":55,"installCommand":56,"installs":57,"installs30d":58,"isFont":28,"isLibrary":28,"kegOnly":28,"kind":61,"latestRelease":62,"machineTranslated":28,"name":49,"names":88,"platforms":90,"primaryCategory":462,"rank30d":463,"releaseCount":464,"releaseStats":465,"repoUrl":472,"screenshots":473,"sourceLocale":82,"sourceUrl":481,"summary":482,"summaryTranslation":483,"supports":484,"tags":486,"tap":491,"token":89,"version":87,"versionChangedAt":492},"#EC9878",{"apps":6,"binaries":8,"entries":9,"pkgs":27},[7],"Halloy.app",[],[10,17],{"declaration":11,"phase":14,"sources":15,"target":13,"type":16},{"app":12,"target":13},[7],"\u002FApplications\u002FHalloy.app","install",[7],"app",{"declaration":18,"phase":24,"sources":25,"type":26},{"zap":19},[20],{"trash":21},[22,23],"~\u002FLibrary\u002FApplication Support\u002Fhalloy","~\u002FLibrary\u002FSaved Application State\u002Forg.squidowl.halloy.savedState","cleanup",[],"zap",[],false,[30],{"icon":31,"machineTranslated":28,"name":32,"slug":33,"sourceLocale":34},"lucide:message-circle","Communication","communication","zh-CN",{"casks":36,"formulae":37},[],[],{"arch":39,"casks":42,"formulae":43,"requirements":44},[40,41],"arm64","x86_64",[],[],{"macos":45},{},"Halloy is an open-source IRC client for macOS, Windows and Linux, designed to be simple and fast. The Homebrew cask installs the macOS application; it is an IRC client rather than a hosted messaging service. Connect to IRC networks and participate in channels or private conversations using the client interface.\n\n## Conversation workspace\nHalloy provides a sidebar for servers and conversations, configurable panes, channel nicklists, unread and highlight indicators, and internal buffers. Recent releases add a Channel Monitor for messages from joined channels and an in-app configuration editor. Server and internal buffer actions, nickname interactions and keyboard shortcuts can be configured for your preferred workflow.\n\n## IRCv3 and network features\nThe official project lists support for SASL, message tags, server-time, echo-message, chathistory, read markers, replies, reactions, typing, account notifications and other IRCv3 capabilities. Availability depends on the server. Bouncer network configuration, connection retry limits and protocol logging are documented release features. Halloy also supports file transfers, link previews and configurable appearance.\n\n## Configuration and recent features\nConfiguration includes server definitions, authentication, buffer behavior, fonts and themes. The 2026.8 release introduced system-keyring support for several password types, undo\u002Fredo in editors and explicit portable mode. The 2026.9 release adds animated GIF support, keyboard-driven message focus and smooth scrolling. Consult the version notes and documentation for exact settings and migration changes instead of assuming old configuration keys remain unchanged.\n\n## Project and macOS distribution\nHalloy is developed in the squidowl\u002Fhalloy repository and distributed under GPL-3.0. Its community support channel is #halloy on libera.chat. The recorded macOS 2026.9 artifact is halloy.dmg; its HTTP Content-Length was measured as 41,044,413 bytes. The release publishes a single macOS DMG rather than separate architecture-named DMGs.\n\n## Official sources\n- https:\u002F\u002Fhalloy.chat\u002F\n- https:\u002F\u002Fhalloy.chat\u002Finstallation.html\n- https:\u002F\u002Fgithub.com\u002Fsquidowl\u002Fhalloy\n- https:\u002F\u002Fgithub.com\u002Fsquidowl\u002Fhalloy\u002Freleases\u002Ftag\u002F2026.9\n- https:\u002F\u002Fgithub.com\u002Fsquidowl\u002Fhalloy\u002Freleases\u002Ftag\u002F2026.8\n- https:\u002F\u002Fgithub.com\u002Fsquidowl\u002Fhalloy\u002Freleases\u002Ftag\u002F2026.7.2\n","IRC client","Halloy contributors","Halloy","52f889a9225ba515aa74f1eb5f9a4f139360634a1712db4eb911a968a4855a0e",41044413,"https:\u002F\u002Fgithub.com\u002Fsquidowl\u002Fhalloy\u002Freleases\u002Fdownload\u002F2026.9\u002Fhalloy.dmg","https:\u002F\u002Fformulae.brew.sh\u002Fcask\u002Fhalloy","https:\u002F\u002Fhalloy.chat\u002F","https:\u002F\u002Fcdn.opennavo.com\u002Ficons\u002Fuploads\u002F3e0e3f23c176\u002F0636204d5fe9-256.png","brew install --cask halloy",{"d30":58,"d365":59,"d90":60},158,3152,748,"cask",{"bodyMarkdown":63,"brewCommittedAt":64,"hasNotes":65,"id":66,"isLatest":65,"isPrerelease":28,"machineTranslated":28,"publishedAt":67,"sections":68,"source":81,"sourceLocale":82,"summary":83,"title":84,"translation":85,"version":87},"Added:\r\n\r\n- Animated GIFs support\r\n- Keyboard-driven message focus: navigate and act on messages without mouse\r\n  - Links and channel mentions within a message can be focused and opened\r\n  - New `buffer.focus` theme color for the focused message border\r\n- Smooth scrolling\r\n- Support link delimiters (`\u003C` & `>`) with markdown formatting\r\n- Ability to configure individual bouncer networks with `servers.\u003Cname>.networks.\u003Cnetwork>`\r\n- `buffer.server_messages.condense.timestamp` setting to control whether a condensed message shows a time range, its start timestamp, its end timestamp, or no timestamp\r\n- Optional `font.code` setting for code-formatted text\r\n- `buffer.nickname.offline` supports `\"dimmed\"` \u002F `{ dimmed = float }`, and `{ color = \"theme\"|\"nickname\", alpha = ...}` so theme offline color and dimming can be combined\r\n- `buffer.nickname.color_override` rules for assigning colors to specific nicknames\r\n- Optional `buffer.self_message` theme style for messages sent by yourself\r\n- Config options `buffer.channel.nicklist.scrollbar.hidden`, `sidebar.scrollbar.hidden`, and `pane.scrollbar.hidden` that control whether the nicklist, sidebar, and in-pane scrollbars respectively are enabled or not\r\n- Additional setting for controlling anti-flood burst parameter (`servers.\u003Cname>.anti_flood.burst`); default value has been reduced from `10` to `8`\r\n- Expanded `servers.\u003Cname>.max_connection_attempts` to allow unlimited attempts\r\n- Server context menu action to open Channel Discovery with that server selected\r\n- Server messages can be configured to trigger unread in a buffer or not (`buffer.server_messages.\u003Cserver_message>.triggers_unread`)\r\n- Sidebar visibility is remembered across application launches\r\n- Settings to control how internal and server buffers are opened from the sidebar (`actions.sidebar.internal` and `actions.sidebar.server`)\r\n- Config file path is now shown in config editor\r\n- CTCP actions in private message context menus\r\n- Config option to include ignored nicknames in autocomplete (`buffer.text_input.autocomplete.include_ignored`)\r\n- `file_transfer.send_completion_message` setting to control whether a PRIVMSG is sent to the remote user when a file transfer completes.\r\n\r\nFixed:\r\n\r\n- Scroll-to-reply when clicking a reply preview\r\n- Allow listing modes by not providing \u003C+|->\r\n- Selection on mutliline messages\r\n- Display RELAYMSG senders correctly\r\n- Receiving an invite will reveal the query with the inviter in the sidebar\r\n- Config editor now properly out-scrolls the cursor\r\n- Anti-flood rate-limiting applied to post-authentication JOINs (and similar on-connect messages)\r\n- Display messages from legacy ISO-8859-1 clients instead of replacing invalid UTF-8 bytes\r\n- Reconnect WebSocket connections when ping writes fail or exceed `servers.\u003Cname>.ping_timeout`\r\n- Avoid bursts of IRC pings after delays\r\n- Text in input box being scrolled\u002Fclipped 2px on the left on pane load or when navigating history\r\n- Show registration-required join errors in the channel buffer instead of the server buffer\r\n- Remove blank space above the input after marking a buffer as read\r\n- Don't show another preview from the same message after hiding one\r\n- User avatars are only shown when `avatar` is included in `metadata.preferred_keys`\r\n- Expand `$HOME` or `%AppData%` when first component in a path setting\r\n- Include\u002Fexclude conditions are properly accounted for when highlighting nicknames\r\n- Restrict commonly used (`()\u003C>\"`) chars from being used to highlight nicks\r\n- \"Apply Colors & Font Styles\" button in Theme Editor persists modifications made via the theme editor\r\n- Better support for larger font sizes in modals\r\n- Sanitize incoming DCC filenames against Windows reserved device names, illegal characters, and trailing dots\u002Fspaces\r\n- Reject server icons whose decoded dimensions would exceed the maximum GPU buffer size, matching the existing link-preview guard\r\n- Cap the number of concurrently open IRCv3 batches a server can hold open, so a single connection cannot grow memory without bound\r\n- User-specified log levels are applied to all log sources (including non-Halloy log sources, which were previously exempt)\r\n\r\nChanged:\r\n\r\n- Right-aligned nickname columns now size to nearby messages instead of the entire loaded history\r\n- Offline nicknames are styled only by `buffer.nickname.offline`; `buffer.nickname.away` no longer applies to them\r\n- `esc` in the input box now scrolls the buffer to the bottom\r\n- \"Changed mode\" messages reverted to not trigger unread (but remain not-dimmed by default)\r\n- Removed active and passive categories for server message types; control of dimming and triggering unread can be controlled specifically for each server message type instead\r\n- User avatars are configurable with `metadata.avatar.size`\r\n- Link preview requests now use `Halloy\u002F\u003Cversion>` as their default User-Agent\r\n- Anti-flood rate parameter has been moved `servers.\u003Cname>.anti_flood` to `servers.\u003Cname>.anti_flood.rate`\r\n- IRC protocol logs for bouncer networks have their logs directory nested under the bouncer name\r\n- Rename `servers.\u003Cname>.websocket_ping_interval` to `servers.\u003Cname>.websocket_ping_time`\r\n- When reloading the config file, if the config file editor pane is opened with unsaved changes then those changes will be saved before reloading\r\n- The XDG data directory `~\u002F.local\u002Fshare\u002Fhalloy` can be used for storing history\u002Flogs\u002Fetc macOS, instead of `~\u002FLibrary\u002FApplication Support\u002Fhalloy\u002F` (move entire directory to migrate)\r\n- `+draft\u002Funreact` and `+draft\u002Freact` capabilities can be enabled separately (when either is available for the server)\r\n- The Theme Editor appends a `.toml` extension when saving a theme without the extension specified\r\n\r\nThanks:\r\n\r\n- Contributions: @rollecode, @luca020400, @rtmongold, @tranzystorekk, @englut, @furudean, @ncfavier, @edwardloveall\r\n- Bug reports: @sebbu2, @dpedu, kurwavidae, @ncfavier, wwWraith, kurwavidae, @SRAZKVT, @WinnerWind, @lojinks, @edwardloveall, CGML, @TheDcoder, @ToyKeeper, @BKVad1m, @gigioneggiando, @dei-layborer, @goyusia, @ncfavier\r\n- Feature requests: @daniiooo, @fabricionaweb, @RoboDanjal, @AbandonedCranium, tbo, ivocavalcante, @sebbu2, @coraxioU9, @ncfavier, @darienm, @Anonymous1157, gkoebel, @BigOjisan, garoto, @classabbyamp, @WinnerWind, @NoHandlebars87, @cyrneko, @Victorious3\r\n\n\nOfficial source: https:\u002F\u002Fgithub.com\u002Fsquidowl\u002Fhalloy\u002Freleases\u002Ftag\u002F2026.9","2026-10-01T13:24:58Z",true,2539,"2026-10-01T10:34:10Z",[69,75],{"area":70,"items":71},"Added",[72,73,74],"Animated GIF support and smooth scrolling.","Keyboard-driven message focus and link navigation.","Per-network bouncer configuration and code-font settings.",{"area":76,"items":77},"Fixed",[78,79,80],"Reconnects WebSockets when ping writes fail or time out.","Caps concurrent IRCv3 batches to bound memory usage.","Sanitizes incoming DCC filenames for Windows.","editorial","en-US","Adds animated GIFs, keyboard-driven message focus and smooth scrolling; fixes reconnect, input, rate-limiting and security-related edge cases.","Halloy 2026.9",{"locale":82,"machineTranslated":28,"sourceLocale":82,"status":86},"source","2026.9",[49,89],"halloy",[91,118,144,171,197,224,250,277,303,330,356,383,409,436],{"arch":41,"artifacts":92,"conflictsWith":107,"dependsOn":110,"downloadSha256":50,"downloadUrl":52,"macos":116,"requiresRosetta":28,"tag":117,"version":87},{"apps":93,"binaries":94,"entries":95,"pkgs":106},[7],[],[96,100],{"declaration":97,"phase":14,"sources":99,"target":13,"type":16},{"app":98,"target":13},[7],[7],{"declaration":101,"phase":24,"sources":105,"type":26},{"zap":102},[103],{"trash":104},[22,23],[],[],{"casks":108,"formulae":109},[],[],{"arch":111,"casks":112,"formulae":113,"requirements":114},[41],[],[],{"macos":115},{},"27","golden_gate",{"arch":40,"artifacts":119,"conflictsWith":134,"dependsOn":137,"downloadSha256":50,"downloadUrl":52,"macos":116,"requiresRosetta":28,"tag":143,"version":87},{"apps":120,"binaries":121,"entries":122,"pkgs":133},[7],[],[123,127],{"declaration":124,"phase":14,"sources":126,"target":13,"type":16},{"app":125,"target":13},[7],[7],{"declaration":128,"phase":24,"sources":132,"type":26},{"zap":129},[130],{"trash":131},[22,23],[],[],{"casks":135,"formulae":136},[],[],{"arch":138,"casks":139,"formulae":140,"requirements":141},[40],[],[],{"macos":142},{},"arm64_golden_gate",{"arch":41,"artifacts":145,"conflictsWith":160,"dependsOn":163,"downloadSha256":50,"downloadUrl":52,"macos":169,"requiresRosetta":28,"tag":170,"version":87},{"apps":146,"binaries":147,"entries":148,"pkgs":159},[7],[],[149,153],{"declaration":150,"phase":14,"sources":152,"target":13,"type":16},{"app":151,"target":13},[7],[7],{"declaration":154,"phase":24,"sources":158,"type":26},{"zap":155},[156],{"trash":157},[22,23],[],[],{"casks":161,"formulae":162},[],[],{"arch":164,"casks":165,"formulae":166,"requirements":167},[41],[],[],{"macos":168},{},"26","tahoe",{"arch":40,"artifacts":172,"conflictsWith":187,"dependsOn":190,"downloadSha256":50,"downloadUrl":52,"macos":169,"requiresRosetta":28,"tag":196,"version":87},{"apps":173,"binaries":174,"entries":175,"pkgs":186},[7],[],[176,180],{"declaration":177,"phase":14,"sources":179,"target":13,"type":16},{"app":178,"target":13},[7],[7],{"declaration":181,"phase":24,"sources":185,"type":26},{"zap":182},[183],{"trash":184},[22,23],[],[],{"casks":188,"formulae":189},[],[],{"arch":191,"casks":192,"formulae":193,"requirements":194},[40],[],[],{"macos":195},{},"arm64_tahoe",{"arch":41,"artifacts":198,"conflictsWith":213,"dependsOn":216,"downloadSha256":50,"downloadUrl":52,"macos":222,"requiresRosetta":28,"tag":223,"version":87},{"apps":199,"binaries":200,"entries":201,"pkgs":212},[7],[],[202,206],{"declaration":203,"phase":14,"sources":205,"target":13,"type":16},{"app":204,"target":13},[7],[7],{"declaration":207,"phase":24,"sources":211,"type":26},{"zap":208},[209],{"trash":210},[22,23],[],[],{"casks":214,"formulae":215},[],[],{"arch":217,"casks":218,"formulae":219,"requirements":220},[41],[],[],{"macos":221},{},"15","sequoia",{"arch":40,"artifacts":225,"conflictsWith":240,"dependsOn":243,"downloadSha256":50,"downloadUrl":52,"macos":222,"requiresRosetta":28,"tag":249,"version":87},{"apps":226,"binaries":227,"entries":228,"pkgs":239},[7],[],[229,233],{"declaration":230,"phase":14,"sources":232,"target":13,"type":16},{"app":231,"target":13},[7],[7],{"declaration":234,"phase":24,"sources":238,"type":26},{"zap":235},[236],{"trash":237},[22,23],[],[],{"casks":241,"formulae":242},[],[],{"arch":244,"casks":245,"formulae":246,"requirements":247},[40],[],[],{"macos":248},{},"arm64_sequoia",{"arch":41,"artifacts":251,"conflictsWith":266,"dependsOn":269,"downloadSha256":50,"downloadUrl":52,"macos":275,"requiresRosetta":28,"tag":276,"version":87},{"apps":252,"binaries":253,"entries":254,"pkgs":265},[7],[],[255,259],{"declaration":256,"phase":14,"sources":258,"target":13,"type":16},{"app":257,"target":13},[7],[7],{"declaration":260,"phase":24,"sources":264,"type":26},{"zap":261},[262],{"trash":263},[22,23],[],[],{"casks":267,"formulae":268},[],[],{"arch":270,"casks":271,"formulae":272,"requirements":273},[41],[],[],{"macos":274},{},"14","sonoma",{"arch":40,"artifacts":278,"conflictsWith":293,"dependsOn":296,"downloadSha256":50,"downloadUrl":52,"macos":275,"requiresRosetta":28,"tag":302,"version":87},{"apps":279,"binaries":280,"entries":281,"pkgs":292},[7],[],[282,286],{"declaration":283,"phase":14,"sources":285,"target":13,"type":16},{"app":284,"target":13},[7],[7],{"declaration":287,"phase":24,"sources":291,"type":26},{"zap":288},[289],{"trash":290},[22,23],[],[],{"casks":294,"formulae":295},[],[],{"arch":297,"casks":298,"formulae":299,"requirements":300},[40],[],[],{"macos":301},{},"arm64_sonoma",{"arch":41,"artifacts":304,"conflictsWith":319,"dependsOn":322,"downloadSha256":50,"downloadUrl":52,"macos":328,"requiresRosetta":28,"tag":329,"version":87},{"apps":305,"binaries":306,"entries":307,"pkgs":318},[7],[],[308,312],{"declaration":309,"phase":14,"sources":311,"target":13,"type":16},{"app":310,"target":13},[7],[7],{"declaration":313,"phase":24,"sources":317,"type":26},{"zap":314},[315],{"trash":316},[22,23],[],[],{"casks":320,"formulae":321},[],[],{"arch":323,"casks":324,"formulae":325,"requirements":326},[41],[],[],{"macos":327},{},"13","ventura",{"arch":40,"artifacts":331,"conflictsWith":346,"dependsOn":349,"downloadSha256":50,"downloadUrl":52,"macos":328,"requiresRosetta":28,"tag":355,"version":87},{"apps":332,"binaries":333,"entries":334,"pkgs":345},[7],[],[335,339],{"declaration":336,"phase":14,"sources":338,"target":13,"type":16},{"app":337,"target":13},[7],[7],{"declaration":340,"phase":24,"sources":344,"type":26},{"zap":341},[342],{"trash":343},[22,23],[],[],{"casks":347,"formulae":348},[],[],{"arch":350,"casks":351,"formulae":352,"requirements":353},[40],[],[],{"macos":354},{},"arm64_ventura",{"arch":41,"artifacts":357,"conflictsWith":372,"dependsOn":375,"downloadSha256":50,"downloadUrl":52,"macos":381,"requiresRosetta":28,"tag":382,"version":87},{"apps":358,"binaries":359,"entries":360,"pkgs":371},[7],[],[361,365],{"declaration":362,"phase":14,"sources":364,"target":13,"type":16},{"app":363,"target":13},[7],[7],{"declaration":366,"phase":24,"sources":370,"type":26},{"zap":367},[368],{"trash":369},[22,23],[],[],{"casks":373,"formulae":374},[],[],{"arch":376,"casks":377,"formulae":378,"requirements":379},[41],[],[],{"macos":380},{},"12","monterey",{"arch":40,"artifacts":384,"conflictsWith":399,"dependsOn":402,"downloadSha256":50,"downloadUrl":52,"macos":381,"requiresRosetta":28,"tag":408,"version":87},{"apps":385,"binaries":386,"entries":387,"pkgs":398},[7],[],[388,392],{"declaration":389,"phase":14,"sources":391,"target":13,"type":16},{"app":390,"target":13},[7],[7],{"declaration":393,"phase":24,"sources":397,"type":26},{"zap":394},[395],{"trash":396},[22,23],[],[],{"casks":400,"formulae":401},[],[],{"arch":403,"casks":404,"formulae":405,"requirements":406},[40],[],[],{"macos":407},{},"arm64_monterey",{"arch":41,"artifacts":410,"conflictsWith":425,"dependsOn":428,"downloadSha256":50,"downloadUrl":52,"macos":434,"requiresRosetta":28,"tag":435,"version":87},{"apps":411,"binaries":412,"entries":413,"pkgs":424},[7],[],[414,418],{"declaration":415,"phase":14,"sources":417,"target":13,"type":16},{"app":416,"target":13},[7],[7],{"declaration":419,"phase":24,"sources":423,"type":26},{"zap":420},[421],{"trash":422},[22,23],[],[],{"casks":426,"formulae":427},[],[],{"arch":429,"casks":430,"formulae":431,"requirements":432},[41],[],[],{"macos":433},{},"11","big_sur",{"arch":40,"artifacts":437,"conflictsWith":452,"dependsOn":455,"downloadSha256":50,"downloadUrl":52,"macos":434,"requiresRosetta":28,"tag":461,"version":87},{"apps":438,"binaries":439,"entries":440,"pkgs":451},[7],[],[441,445],{"declaration":442,"phase":14,"sources":444,"target":13,"type":16},{"app":443,"target":13},[7],[7],{"declaration":446,"phase":24,"sources":450,"type":26},{"zap":447},[448],{"trash":449},[22,23],[],[],{"casks":453,"formulae":454},[],[],{"arch":456,"casks":457,"formulae":458,"requirements":459},[40],[],[],{"macos":460},{},"arm64_big_sur",{"icon":31,"machineTranslated":28,"name":32,"slug":33,"sourceLocale":34},598,16,{"brewLag":466,"cadence":470,"count30d":471},{"compared":467,"earlierCount":468,"medianMinutes":469},3,0,149,"monthly",1,"https:\u002F\u002Fgithub.com\u002Fsquidowl\u002Fhalloy",[474],{"caption":475,"height":476,"machineTranslated":28,"sourceLocale":82,"theme":477,"thumbUrl":478,"url":479,"width":480},"Official Halloy repository screenshot showing multi-pane IRC chat; operating system is not identified.",787,"dark","https:\u002F\u002Fcdn.opennavo.com\u002Fscreenshots\u002Fuploads\u002Fscreenshot\u002F8f2782344d36\u002Fc4581b3705b0-640.png","https:\u002F\u002Fcdn.opennavo.com\u002Fscreenshots\u002Fuploads\u002Fscreenshot\u002F8f2782344d36\u002Fc4581b3705b0-1280.png",1280,"https:\u002F\u002Fgithub.com\u002Fhomebrew\u002Fhomebrew-cask\u002Fblob\u002FHEAD\u002FCasks\u002Fh\u002Fhalloy.rb","Open-source IRC client for macOS, Windows and Linux with multi-server chat, configurable panes, IRCv3 support and an in-app configuration editor.",{"locale":82,"machineTranslated":28,"sourceLocale":82,"status":86},{"arm64":65,"requiresRosetta":28,"status":485,"x86_64":65},"known",[487,488,489,490,32],"IRC","Chat","IRCv3","Open Source","homebrew\u002Fcask","2026-10-07T09:38:36.653349Z",null,{"current":471,"records":495,"size":610,"stats":611,"total":464},[496,503,523,543,550,555,560,565,570,575,580,585,590,595,600,605],{"bodyMarkdown":63,"brewCommittedAt":64,"hasNotes":65,"id":66,"isLatest":65,"isPrerelease":28,"machineTranslated":28,"publishedAt":67,"sections":497,"source":81,"sourceLocale":82,"summary":83,"title":84,"translation":502,"version":87},[498,500],{"area":70,"items":499},[72,73,74],{"area":76,"items":501},[78,79,80],{"locale":82,"machineTranslated":28,"sourceLocale":82,"status":86},{"bodyMarkdown":504,"brewCommittedAt":505,"hasNotes":65,"id":506,"isLatest":28,"isPrerelease":28,"machineTranslated":28,"publishedAt":507,"sections":508,"source":81,"sourceLocale":82,"summary":519,"title":520,"translation":521,"version":522},"Added:\r\n\r\n- Channel Monitor internal buffer for viewing messages from all joined channels\r\n- Config editor internal buffer for editing the config file in-app\r\n- Sidebar\r\n  - Collapse & expand servers in sidebar\r\n  - Internal buffers (logs, highlights, etc) can be added to sidebar\r\n  - Channel, query, and internal buffers can be muted (only shown if an unread\u002Fhighlight indicator should be shown) via `servers.\u003Cname>.channels`, `servers.\u003Cname>.queries`, and `sidebar.internal_buffers.mute`\r\n  - `sidebar.unread_indicator.exclude` & `sidebar.unread_indicator.include` no longer controls highlight indicators\r\n  - New `sidebar.highlight_indicator.title`, `sidebar.highlight_indicator.show_on_open_buffers`, `sidebar.highlight_indicator.exclude`, and `sidebar.highlight_indicator.include` settings for independent highlight control\r\n- Undo\u002Fredo in the message input and config editor (`ctrl`\u002F`cmd` + `z`, `ctrl`\u002F`cmd` + `shift` + `z`)\r\n- Link interactions\r\n  - Context menu on channel links\r\n  - `actions.buffer.click_nickname` and `actions.nicklist.click_nickname` can 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 from `buffer.nickname.click` and `buffer.channel.nicklist.click` and adds the ability to perform no action\r\n  - `actions.buffer.click_channel_name` and `actions.buffer.click_highlight` can be set to no action (`\"no-action\"` or `\"noop\"`) to not open the channel when clicking on the channel name\r\n  - `actions.buffer.click_channel_discovery` to configure click behavior for channel names in the channel discovery pane (default: `\"new-pane\"`)\r\n  - Allow image preview on URL click (`actions.buffer.click_image_url`)\r\n- `actions.buffer.notifications` settings to control how interacting with notifications is handled\r\n- Support displaying a larger version of the card images in-app\r\n- `pane.always_show_title_bar_buttons` setting to prevent pane title bar buttons from being hidden when the pane is not hovered\r\n- Shortcuts displayed in pane button tooltips (where available\u002Fconfigured)\r\n- `follow` option for reroute rules (`servers.\u003Cname>.reroute`) to reroute messages to the focused buffer\r\n- Add system keyring support for server, NickServ, channel, SASL, filehost credential, and proxy passwords\r\n- IRCv3\r\n  - IRCv3 `no-implicit-names` support\r\n  - `servers.\u003Cname>.do_not_request` can be specified to prevent IRCv3 capability requests (e.g. `servers.\u003Cname>.do_not_request = [ \"labeled-response\" ]` will prevent [labeled-response](https:\u002F\u002Fircv3.net\u002Fspecs\u002Fextensions\u002Flabeled-response) from being requested from the server)\r\n- `servers.\u003Cname>.max_connection_attempts` setting to control the number of connection of attempts made before autoconnect is automatically disabled (defaults to 10)\r\n- Improved legibility of the returned values of `MONITOR` list (`\u002Fmonitor L`)\r\n- Config option (`preview.card.description_decode_html`) to decode html strings in preview card descriptions\r\n- `runtime.metrics_hinting` setting to control whether widgets are rendered using metrics hinting\r\n- Keyboard shortcuts validation (e.g no duplicate key binds)\r\n- `servers.\u003Cname>.irc_protocol_log` settings to enable logging of the IRC protocol messages sent-to \u002F received-from the server\r\n- `logs.max_file_count` setting to control the number of Halloy log files that are stored on disk\r\n- `logs.file_timestamp` setting to control what timezone is used for timestamps in log files and log file names\r\n- Explicit portable mode via `HALLOY_PORTABLE_DIR` environment variable\r\n- Theme editor can be closed via Escape\r\n\r\nFixed:\r\n\r\n- Nick highlight improvements\r\n  - Handle nick possessives `\u003Cnick>'s` (`\u003Cnick>` should be parsed)\r\n  - Skip parsing nicks inside abbreviations (`e.g.` shouldn't have highlights)\r\n- Notifications no longer immediately dismissed in some Wayland DE(s)\r\n- Sidebar\r\n  - Do not show unread\u002Fhighlight indicators in sidebar for ignored messages\r\n  - Show unread indicators for panes hidden by maximize\r\n  - Queries specified in configuration correctly added to the sidebar\r\n- 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)\r\n- Disabled menu entries now block clicks from passing through\r\n- Only play one sound at a time (if two sounds would overlap, then the second sound is skipped)\r\n- Allow sound files to be symbolic links\r\n- When both card and image previews are excluded for a buffer, previews will not be pre-fetched for URLs in that buffer\r\n- Suppress connection status messages while macOS is asleep\r\n- Don't show a transient terminal window when running `\u002Fexec` on Windows\r\n- Do not reconnect automatically when the server closes the connection in response to a requested quit\r\n- Apply mode arguments to the correct targets when a `MODE` message mixes added and removed modes (e.g. `-o+v foo bar` de-ops `foo` and voices `bar`)\r\n- Prevent anti-flood rate limiting from refilling the token bucket beyond its configured capacity\r\n- Do not send duplicate `JOIN` message when using `\u002Fjoin`\r\n- Do not send `MARKREAD` for non-`PRIVMSG`\u002F`NOTICE` messages when the server does not support echoes\r\n- Allow commands (e.g. `\u002Fjoin`) to be used in the input box of not-joined channels\r\n- Preserve own away state when leaving and rejoining a channel\r\n- Do not panic when previewing an SVG with a very large filter\r\n- Reject overlong lines from the server connection instead of buffering them without bound\r\n- Do not panic when a server-supplied METADATA retry-after value would overflow the retry timer\r\n- Stop busy-looping on CPU when a DCC file-transfer peer closes its connection early\r\n\r\nChanged:\r\n\r\n- Clicking on a message expanded out of a condensed message will always contract it (configurable via `actions.only_contract_expanded_message`)\r\n- Rerouted messages are marked with a icon next to the nickname\r\n- When SASL authentication fails, after disconnecting from the server connection will be automatically re-tried if `servers.\u003Cname>.autoconnect` is enabled\r\n- Renamed `sidebar.server_icon` → `sidebar.primary_icon` and `sidebar.server_font_size` → `sidebar.primary_font_size` since the settings now apply to both servers and internal buffers\r\n- Renamed `sidebar.unread_indicator.highlight_icon` → `sidebar.highlight_indicator.icon` and `sidebar.unread_indicator.highlight_icon_size` → `sidebar.highlight_indicator.icon_size`\r\n- Renamed `sidebar.font_size` → `sidebar.secondary_font_size` to reflect its relationship to `sidebar.primary_font_size`\r\n- Renamed `actions.buffer.local` → `actions.buffer.open_internal` to match naming convention used elsewhere\r\n- Renamed `actions.buffer.click_username` to `actions.buffer.click_nickname` for more consistent terminology\r\n- Renamed `servers.\u003Cname>.chathistory` to `servers.\u003Cname>.automated_chathistory`, and it now controls whether chathistory requests are made automatically instead of controlling whether the chathistory capability is requested (see `servers.\u003Cname>.do_not_request` for controlling whether the capability is requested)\r\n- Moved functionality from `buffer.nickname.click` → `actions.buffer.click_nickname` and `buffer.channel.nicklist.click` → `actions.nicklist.click_nickname`\r\n- `change_mode` server messages are categorized as `actions` (i.e. `actions_dimmed` controls whether they are dimmed by default)\r\n- `keyboard.file_transfers` shortcut is disabled when `file_transfer.enabled = false`\r\n- More than one Halloy log file can be saved (configurable, defaults to 4);  accordingly there is not a singular log file `\u003Cdata_dir>\u002Fhalloy\u002Fhalloy.log`, instead log files are placed in `\u003Cdata_dir>\u002Fhalloy\u002Flogs\u002F`\r\n- Set window icon also on Linux for X11\r\n- Windows release artifacts are signed using SignPath\r\n\r\nThanks:\r\n\r\n- Contributions: @englut, @luca020400, @classabbyamp, @KaiKorla, @TheDcoder, @City-busz, @rtmongold, @Gelbpunkt, @zsigisti, quark\r\n- Bug reports: @luca020400, agent314, @FlooferLand, @englut, @rexbinary, @belthesar, @deepspaceaxolotl, @neilzilla, @0ther0ne\r\n- Feature requests: @FlooferLand, quark, @daniiooo, @deepspaceaxolotl, @4e554c4c, @RoboDanjal, @Vendicated, @raggi, @Avinash-Bhat\n\nOfficial source: https:\u002F\u002Fgithub.com\u002Fsquidowl\u002Fhalloy\u002Freleases\u002Ftag\u002F2026.8","2026-07-26T13:17:09Z",2541,"2026-07-26T10:47:47Z",[509,514],{"area":70,"items":510},[511,512,513],"Channel Monitor and in-app configuration editor.","System-keyring support for several credential types.","Undo\u002Fredo, portable mode and IRCv3 no-implicit-names support.",{"area":76,"items":515},[516,517,518],"Suppresses connection status messages while macOS sleeps.","Rejects overlong server lines instead of unbounded buffering.","Stops CPU busy loops when DCC peers disconnect early.","Adds Channel Monitor, an in-app configuration editor, keyring support and portable mode, with sidebar, connection and protocol fixes.","Halloy 2026.8",{"locale":82,"machineTranslated":28,"sourceLocale":82,"status":86},"2026.8",{"bodyMarkdown":524,"brewCommittedAt":525,"hasNotes":65,"id":526,"isLatest":28,"isPrerelease":28,"machineTranslated":28,"publishedAt":527,"sections":528,"source":81,"sourceLocale":82,"summary":539,"title":540,"translation":541,"version":542},"Added:\r\n\r\n- Add clear buffer shortcut to title bar\r\n- Indicate in query if user is offline in its title bar\r\n\r\nFixed:\r\n\r\n- Issue where large window size could cause Halloy to crash in certain scenarios\r\n- Correctly support `RPL_METADATASYNCLATER`\r\n- Issue where input box could lose focus after a filehost, reply, or reaction modal\r\n- Issue where a buffer could jitter in certain particular scroll positions\r\n- 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\r\n- Show `Display` in `Configuration` docs menu\r\n- Document that `servers.\u003Cname>.username` setting will fall back to `servers.\u003Cname>.nickname` if not set\r\n- Nick completion tooltip no longer shows when there is only a single match\r\n\r\nChanged:\r\n\r\n- `buffer.reply.insert_nick` no longer inserts nick when replying in query buffers or to yourself\r\n- Input tooltips are aligned with the input (i.e. inset when `text_input.nickname.enabled = true`)\r\n- `servers.\u003Cname>.sasl.plain.username` setting will fall back to `servers.\u003Cname>.nickname` if not set\r\n- Replace the Windows MSI package with a per-user Inno Setup installer\r\n\r\nThanks:\r\n\r\n- Contributions: @luca020400, @englut, @furudean\r\n- Feature requests: @g00s\r\n- Bug reports: wwWraith, @skizzerz, @ncfavier, @account1009\n\nOfficial source: https:\u002F\u002Fgithub.com\u002Fsquidowl\u002Fhalloy\u002Freleases\u002Ftag\u002F2026.7.2","2026-06-08T08:38:20Z",2543,"2026-06-08T07:45:58Z",[529,533],{"area":70,"items":530},[531,532],"Clear-buffer shortcut in the title bar.","Offline user indicator in query titles.",{"area":76,"items":534},[535,536,537,538],"Fixes crashes with large window sizes.","Correctly supports RPL_METADATASYNCLATER.","Restores input focus after filehost, reply or reaction modals.","Fixes buffer jitter and input tooltip issues.","Adds a clear-buffer title-bar shortcut and offline query indicators; fixes window-size crashes, metadata synchronization and input focus.","Halloy 2026.7.2",{"locale":82,"machineTranslated":28,"sourceLocale":82,"status":86},"2026.7.2",{"brewCommittedAt":544,"hasNotes":28,"isLatest":28,"isPrerelease":28,"sections":545,"source":546,"translation":547,"version":549},"2026-06-02T20:06:45Z",[],"homebrew",{"status":548},"none","2026.7.1",{"brewCommittedAt":551,"hasNotes":28,"isLatest":28,"isPrerelease":28,"sections":552,"source":546,"translation":553,"version":554},"2026-05-28T14:27:50Z",[],{"status":548},"2026.7",{"brewCommittedAt":556,"hasNotes":28,"isLatest":28,"isPrerelease":28,"sections":557,"source":546,"translation":558,"version":559},"2026-04-22T07:28:57Z",[],{"status":548},"2026.6",{"brewCommittedAt":561,"hasNotes":28,"isLatest":28,"isPrerelease":28,"sections":562,"source":546,"translation":563,"version":564},"2026-03-21T22:01:45Z",[],{"status":548},"2026.5",{"brewCommittedAt":566,"hasNotes":28,"isLatest":28,"isPrerelease":28,"sections":567,"source":546,"translation":568,"version":569},"2026-03-03T13:09:04Z",[],{"status":548},"2026.4",{"brewCommittedAt":571,"hasNotes":28,"isLatest":28,"isPrerelease":28,"sections":572,"source":546,"translation":573,"version":574},"2026-02-25T01:24:12Z",[],{"status":548},"2026.3",{"brewCommittedAt":576,"hasNotes":28,"isLatest":28,"isPrerelease":28,"sections":577,"source":546,"translation":578,"version":579},"2026-02-02T08:38:54Z",[],{"status":548},"2026.2",{"brewCommittedAt":581,"hasNotes":28,"isLatest":28,"isPrerelease":28,"sections":582,"source":546,"translation":583,"version":584},"2026-01-21T19:19:01Z",[],{"status":548},"2026.1.1",{"brewCommittedAt":586,"hasNotes":28,"isLatest":28,"isPrerelease":28,"sections":587,"source":546,"translation":588,"version":589},"2025-11-29T06:49:09Z",[],{"status":548},"2025.12",{"brewCommittedAt":591,"hasNotes":28,"isLatest":28,"isPrerelease":28,"sections":592,"source":546,"translation":593,"version":594},"2025-10-29T01:13:33Z",[],{"status":548},"2025.11",{"brewCommittedAt":596,"hasNotes":28,"isLatest":28,"isPrerelease":28,"sections":597,"source":546,"translation":598,"version":599},"2025-10-28T19:16:42Z",[],{"status":548},"2025.10",{"brewCommittedAt":601,"hasNotes":28,"isLatest":28,"isPrerelease":28,"sections":602,"source":546,"translation":603,"version":604},"2025-09-17T16:11:53Z",[],{"status":548},"2025.9",{"brewCommittedAt":606,"hasNotes":28,"isLatest":28,"isPrerelease":28,"sections":607,"source":546,"translation":608,"version":609},"2024-08-04T20:48:31Z",[],{"status":548},"2024.10",20,{"brewLag":612,"cadence":470,"count30d":471},{"compared":467,"earlierCount":468,"medianMinutes":469},{"current":471,"records":614,"size":471,"stats":622,"total":464},[615],{"bodyMarkdown":63,"brewCommittedAt":64,"hasNotes":65,"id":66,"isLatest":65,"isPrerelease":28,"machineTranslated":28,"publishedAt":67,"sections":616,"source":81,"sourceLocale":82,"summary":83,"title":84,"translation":621,"version":87},[617,619],{"area":70,"items":618},[72,73,74],{"area":76,"items":620},[78,79,80],{"locale":82,"machineTranslated":28,"sourceLocale":82,"status":86},{"brewLag":623,"cadence":470,"count30d":471},{"compared":467,"earlierCount":468,"medianMinutes":469}]