All the TODOs sprinkled throughout the code! Configurable rotation of replay and debug logs. Configurable timestamp format in logs. macOS compiler may need limits.h included in structures.h. "Starting log replay...." followed by "Unable to read replay log file!" even though replay seemed to work? Sometimes replaymode = "lastspoke" will replay the last message you sent if you spoke last and sometimes it doesn't - change to always include your last message? Time based issue due to "seconds ago" rather than specific timestamp? Perhaps extract timestamp and replay from there. (Pending real world testing to be marked as fixed.) Can memory usage be reduced further? (e.g. better channel struct management) Ability to load new certificate whilst running. Remaining strncmps are safe but could do with length comparisons too. "Our initial MODE" comparison may need to be more complex. "/topic" response goes to all clients. Connection/login logging - is debug.log sufficient? Do connectcommands happen on reconnect? Are "no such nick/channel" messages as shown in clients correct compared to non-(bla)bouncer clients? Support ban list when requesting /mode #channel +b (commands 367 and 368 at least) - ensure max ban list length is supported. example: :irc.tghost.co.uk 367 l_bratch #foo *!foo@bar.bz l_bratch 1642588731 :irc.tghost.co.uk 367 l_bratch #foo *!*bbuser@*.bratch.co.uk l_bratch 1642588681 :irc.tghost.co.uk 368 l_bratch #foo :End of Channel Ban List Or if there are no bans then just 368: :irc.tghost.co.uk 368 l_bratch #foo :End of Channel Ban List Other IRC clients log stuff like "Mar 31 16:58:15 * #foobar :No topic is set." - can/should we? Some servers have a user send ^VERSION^ upon connection - (optionally?) respond to it. Git version in code. Sending ^D when running with ./blabouncer -f does crazy stuff. Connecting from irssi triggers doautoreplay() from "USER received" in message.c twice. Crash when requesting 30 hour replay.