aboutsummaryrefslogtreecommitdiff
path: root/TODO
blob: 8fc1cfa08885423db5a6a99e2ef6555fd78eac14 (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
78
79
80
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.
- Real name is configurable in the UI, but not yet used in
  the client!

Other stuff:

- KICK isn't being parsed/formatted correctly.
- Gracefully handle nicks/channels whose lengths are stupid long.
  At least we shouldn't overflow any buffers.
- Channel tab completion for the [server] screen.
- Auto-reconnect on error, with backoff timer. Do not
  reconnect if user types /quit though.
- 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).
- Add an optional key parameter to /join (key). spec calls for it,
  I've never seen it used.
- Decide whether to allow mass joins: /join #chan1,#chan2,#chan3
  not sure how widely supported it is on various networks. right
  now, it's explicitly not allowed.
  better to do it client-side, /join #chan1 #chan2 #chan3,
  accept lots of arguments (but don't support keys).
  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.
- /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:

- BUG: yn() doesn't get passed the default value, it always defaults
  to Y.
- 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.
- Allow user to manually read MOTD even if hide_motd is set.
More prefs:
- CTCP VERSION response?
- 5 channels/queries for screens 2-7.
- List of non-screen channels to join.
- Ignore list (maybe).
- Connect macro (log in to bot).

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