Scripting language. Under development in branch 'script'.
Quiet mode. Don't emit diagnostics for eg. unrecognised IRC traffic (such as numerics).
curses. The current hardwired ANSI-escapes code for painting the screen is clumsy. However, it's tailored to my needs, and now that it's neatly packaged away, it should be easier to cope with. So, I may just stick with it.
Automate config handling. Generated code?
Runtime buffer resizing.
Interface separation. It should be possible to write decoupled interface modules which may access the buffers at a variety of depths (eg. pre-formatting) and through a variety of methods (such as mmap(2), a serialised textual IPC format, etc.).
quoting/escaping tables. Instead of duplicative hard-baked logic, we should have a data-driven system with a single point of truth.
http links. Command /http <n>, opens the nth previous link in web browser. Links considered to be any word starting "http://"; words are delimited by whitespace. The actual command run is set with $BROWSER,--browser=,/set browser; %s is replaced with the URL. If no browser is registered, return an error. The count <n> is local to each buffer; the most recent link is number 0. If <n> not specified, defaults to 0. Also /http <url> opens <url> in web browser, and /http <n><TAB> replaces <n> with the corresponding <url> (so you can check it's the right link, and ^A it if not).
Pidfiles and attaching. When you run quirc, if there is an existing quirc process running, your new instance should simply signal that process to open the requested server/channel in a new tab, and the new instance should then close (after emitting a suitable diagnostic).