v0.24.0
Features
- Multi-line messages (
draft/multiline): Press Shift+Enter to insert a line break in the compose box; press Enter to send. The input box grows automatically up to 4 lines. On servers that advertisedraft/multiline, the message is delivered as an IRCv3 batch. On servers without it, each line is sent as a separate PRIVMSG — no content is lost. - Multi-line compose: The message input is now a
QPlainTextEdit. Pasted multi-line content is preserved; the box auto-resizes from 1 to 4 lines. Up/Down history nav is line-aware — moves cursor within text, history activates only at the first/last line.
Security / Hardening
- DCC send: peer IP validation on incoming connect
- DCC receive: write-failure cancel; 30s passive stall timeout
- DCC ACK coalescing: every 64 KB + completion
sendRawenforces 512-byte RFC 1459 line cap- Ping watchdog: abort + reconnect after 90 s no response
- NICK/USER: strip spaces and nulls before send
- Unknown
/commands: local error echo instead of raw send m_ctcpTimestampscapped at 500 entries- Link preview HTML capped at 8 192 bytes
isPrivateAddress()extended: CG-NAT, TEST-NETs, IPv4-mapped, documentation ranges
Performance
- IRC receive buffer:
QByteArray— UTF-16 conversion deferred to per-line Channel::removeNick: O(n) in-place index patch (was O(n²))logMessage: cachedQFile*handles per channel
Bug Fixes
- Chat view now scrolls to bottom on channel switch
- Mention detection false positives fixed — empty nick regex no longer matches every message
CI
- ASan / UBSan sanitizer job added on ubuntu-24.04
Pre-built binaries are attached below once CI finishes. The AppImage supports in-place updates via appimageupdatetool.
Full Changelog: v0.23.2...v0.24.0
Full Changelog: v0.23.2...v0.24.0
Full Changelog: v0.23.2...v0.24.0