See also: ideas.txt. FujiChat features, we're almost at parity! - Nick tab completion. FujiChat's was very lame, make this one less lame. It can't be perfect due to limited RAM. - Configurable ctcp version response. - 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). Other stuff: - Server /ping command is iffy (see do_server_pong() in irc.c). - Bug: *no idea* how this happened. I typed /quit, then reconnected, and got "USER: not enough parameters" from the server. Can't reproduce. - Bug: if you're in screen 7, and you press start+7, the character at position (16,0) gets overwritten with a space (which might be 0x20 or 0x00, they're both "spaces"). - In the config, under SDX, saying "N" to "Settings OK" and then reloading the config causes screen corruption (reported by TheDoctor, not tried it myself). The config tool has changed a lot since then, so re-check. - "User has kicked 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. - Channel tab completion for the [server] screen. - At least one keyboard macro (for ChanServ auth). More would be nice, if we can afford the RAM. - Error numerics should go to the current screen (?). - Autojoin on startup (see config file section below). Partially done. - Add an optional key parameter to /join (key). spec calls for it, I've never seen it used. - Allow mass joins as "/join #chan1 #chan2 #chan3" (without commas). If someone does need channel keys, we can support that with a 2-arg /join whose 2nd arg doesn't start with #... unless the key starts with #! Give this further thought. - Allow creating multiple queries as "/query jim bob joe". - /join also supports "/join 0", which parts all channels. don't have to do anything special for it, but do document it. - 'Dead' screens (channels we've parted, or failed to join) should show some kind of indicator, and not accept input. Although maybe this isn't worth doing (you already get "cannot send to channel"). - Use GR.1 for the activity indicators, so they can be colorful. - *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. - Loading/title screen. Display immediately before the config init segment is loaded, and again when it runs the client. Its DL and data can be kept in scrollback RAM, since scr_init() clears it. Should be small & simple (one line of GR.2 probably). Have to not disable ANTIC DMA during the client load. - Handle redirects better. Trying to "/join #slackware" on Libera results in actually joining ##slackware. But a screen got created for #slackware, and ##slackware will appear in the [server] screen. The message sent when this happens: :molybdenum.libera.chat 470 UrchTest #slackware ##slackware :Forwarding to another channel This shouldn't be hard to do. Interestingly, 470 is not in the list of numerics at https://modern.ircdocs.horse. - Input box history. Up-arrow to recall previous command. Unfortunately this needs a lot of RAM. Maybe just one previous command, so you can up-arrow to re-ping someone, etc. 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 preset list of servers to choose from, or the user can enter his own. - There should be a file selector for load/save config. More prefs: - CTCP VERSION response? Do we need it? - List of non-screen channels to join (config asks for this, client doesn't use). - Ignore list (maybe). - Connect macro (log in to bot). Remember, the config has to be <= 512 bytes!