aboutsummaryrefslogtreecommitdiff
path: root/TODO
blob: b72feb2c73112dc5e8ce0ea2420e7dab506fe6cc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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:

- [*] BUG: *Something* is making screen 1 go SCR_OTHER in the status bar,
  without writing to it. It's not PING/PONG either.
- [*] Auto-pinging the server seems to work, but needs more testing.
- [*] Write a cgetc() replacement that doesn't call the OS K: "get one byte"
  routine. I was avoiding it because it will need a 192-byte table
  (keycode -> atascii lookup)... but I'm spending more than 192 bytes
  of code on keycode-filtering, and it's not even complete.
- [*] Filter out the rest of the keystrokes that causes cgetc() to block.
  Includes ctrl-/, ctrl-8, ctrl-9, maybe others (The_Doctor__). A
  cgetc() replacement will take care of this.
- [*] Filtered-out keystrokes (ctrl-3 and friends) shouldn't even bring up
  the editbox, if it's not already showing.
- 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.
- ^U works, but is slow (calls backspace() in a loop, which does a
  memmove() each time).
- 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.
- '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").
- *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!