See also: ideas.txt.

Stuff marked with [*] means, things that must be done before Alpha-2.
Once they're all finished, I'll tag alpha2 and post it on AA.

FujiChat features, we're almost at parity!

X Configurable ctcp version response. Not going to do for now. Having
  the git commit and date in the version response is more important,
  during the alpha release cycle.
- [*] Keyboard buffer, if possible. Right now we miss the occasional
  keystroke when typing fast & furious during network I/O. Not
  sure how to accomplish this with FujiNet (the old FujiChat
  key buffer actually hooked into the SLIP code). Use a VBI I
  guess. If that doesn't do it, it would require a custom SIO
  replacement... well, I have the OS source, so maybe.

Other stuff:

- [*] sending someone "/me" in a query should highlight red, not white.
- [*] edit box issues with the 240th character. currently everything seems
  to work properly, but you can't type 240 chars (only 239). out of
  patience for it right now...
- Maybe: get rid of the Hide MOTD and Show PING/PONG preferences. People
  can always type /motd if they're interested, and the ping/pong stuff has
  been tested thoroughly by now.
- [*] Start+A should *always* switch windows, even if all are inactive.
  It can act like Start+Left in that case. Or (I'm told) Start+Tab might
  be better? Not sure about that one.
- [*] Auto-pinging the server seems to work, but needs more testing.
- If you "/m #channel message" or "/m nick message" from another
  screen besides the one for #channel or nick, the message should be
  printed locally in the correct screen, not the current one. Maybe
  or maybe not: switch to that screen.
- Load/save config files to N:SD///.FujiNetChat or such. Since we *have*
  to have a FujiNet anyway, might as well make better use of it.
- Rewrite the incoming message parser! It needs to work more like
  the command parser in cmd.c: know how many arguments to expect, and
  not blindly assume they're present. Also, replace strtok() and
  strstr() with nextarg().
- *Thoroughly* test the nick and channel tab completion for the [private]
  and [server] screens.
- Fix the nick completion in channel screens. It works, but needs some
  polishing up.
- More scrollback. Of course it needs more memory... see doc/scrollback.txt
  for my ideas on this.
- Server /ping command is iffy (see do_server_pong() in irc.c).
- "User has kicked <yourname> from #channel", the name should be
  replaced by "you".
- Gracefully handle nicks/channels whose lengths are stupid long.
  At least we shouldn't overflow any buffers.
- At least one keyboard macro (for ChanServ auth). More would
  be nice, if we can afford the RAM.
- Add an optional key parameter to /join (key). spec calls for it,
  I've never seen it used.
- *Possibly* save the config from within the client... though not
  all options can be changed (really only /nick and /beep). To
  make this useful would probably bloat the code too much. Some
  way to change the IRC server/port within the app would be very
  useful though.

Config file and initial config:

- The config tool should be rewritten in asm, for size. It doesn't
  need to be fast, but it needs to *load* fast.
- The config UI should be nicer. Dialog/curses style, arrows to move, and
  hotkeys like [S]erver, [N]ick. Categories (as tabs? tree?). I'm not
  going to get this right without some user feedback, since I'm mainly
  a CLI and text editor guy.
- There should be a file selector for load/save config.
More prefs:
- Ignore list (maybe).
- Connect macro (log in to bot).

Remember, the config has to be <= 512 bytes!
