updates.
[silc.git] / apps / irssi / TODO
1  - /UPGRADE:
2     - support DCCs
3     - topic time/nick isn't transferred
4     - rewrite to work by fork()ing a new process and transfer file handles
5       with unix sockets. this would allow the scrollback buffers to be
6       transferred with them as well.
7     - current window layout needs to transferred
8     - reconnections aren't transferred(?)
9
10  - Logging:
11     - /LOG OPEN doesn't autocreate directories..
12     - /LOG OPEN -targets *!*cras@*.fi
13     - /SET autolog -> /LOG OPEN -targets * (internally, at least)
14     - /LOG OPEN shouldn't really open the file until first line is 
15       written in it
16     - /WINDOW LOG OFF doesn't work
17     - autoclosing logs doesn't work too well. Problems are:
18         - after certain inactivity private message logs should be closed
19         - but DCC chats shouldn't be closed until the chat itself is closed
20            - which we can't know really currently, since they don't need
21              to be in queries
22         - channels should be closed when they're left
23            - /WINDOW CLOSE shouldn't close it immediately, since we'll still
24              receive at least the PART message
25     - so, log items should know more about what they are exactly, and when
26       they should be closed. private messages could have the same timeout
27       as now, time_t closetime field updated every time msg is received.
28       channels could do the same when receiving "window item destroy" signal,
29       except with a small timeout. DCC chats are more problematic...
30     - support for mirc/ansi color logging
31     - people want to show ignored stuff in logs.. how?
32     - private messages could show mirc-style "Session Ident: nick (host)"
33       which would update when nick's host changes. Then you wouldn't need to
34       print the host before each msg.
35     - support for logging channel messages from specific people
36
37  - Awaylogs:
38     - either fully support logging only in servers you're away, or change the
39       awaylog to open immediately after /AWAY command, not based on any
40       away replies from server. Maybe the later would be better, since you
41       would want to set yourself away when connections to all servers were
42       disconnected at the time.. Maybe /AWAY should update status in
43       reconnection records as well?..
44     - /SET awaylog_auto_delete, after setting yourself unaway
45     - support for using strftime() formats (and $tag etc). only problem with
46       this is that all the different awaylogs would need to be tracked and
47       /CATed when setting yourself unaway
48
49  - Window item placing:
50     - !channel vs. !12345channel. it's layout saved with full name, but joined
51       with either one
52     - when dcc chat is accepted and query exists from the same nick, replace
53       the query window with the dcc chat window.
54     - closed DCC chats should add temporary window bind to the dcc chat so
55       future chats for same nick would use the same window
56
57  - DCC
58     - /DCC SEND wildcard support
59     - /DCC GET -4 / -6 with autodetection
60     - When we receive a DCC SEND request, irssi could warn if the file
61       already exists
62     - show estimated time left and kB/s in /DCC list.
63     - implement requesting files with DCC GET from remote client for dcc file
64       servers. good for people behind firewalls. Does this feature exist
65       in other clients, or should I create DCC REQUEST? Same for DCC CHAT..
66       Maybe it could be just that the port was specified as 0, so the other
67       side would know that it needs to be the one to do listening.
68     - /SET dcc_autoresume ON, and sending the same file again while it's
69       already being downloaded doesn't work too well.. Even autorename doesn't
70       work.
71     - With fast DCC SENDs (90kB/s, FreeBSD) typing get laggy (really?)
72     - /DCC CLOSE #, /DCC would print the IDs
73     - /SET dcc_use_proxy to use IRC proxy for DCC connects as well
74     - support for special vars in /SET dcc_download_path, so $N could be used
75
76  - Generic chat commands:
77     - /MSG /CTCP /ACTION =dcc_chat,#channel
78     - /ACTION -ircnet with good tab support like in /MSG
79     - -nick -channel parameters to /ACTION
80     - /MSG a,b,#c,#d - it should print the message to #c and #d channel
81       windows and show only "a,b" as target when printing it to msg window..
82       Or if autoquery is set, it should print them to those windows. Hmm.
83       maybe some multipeople query support? :) /query nick1,nick2 and sending
84       text there would send it to both. Seems to work already but receiving
85       messages from either nick1 or nick2 don't go to that window..
86     - /^MSG nick creates query with /SET qutocreate_own_query YES
87     - /WHOIS -servertag
88     - /BAN: setting of what netmask to use for banning with IPv6 addresses
89
90  - Netsplits
91     - BUG: said "+1 more", while the /SETs to control that were set properly,
92       with one guy it only said that +1 more..
93     - BUG: netsplit quit isn't printed if quit -> join -> quit -> join
94       happens fast (really?)
95     - maybe the "+x more" should be configured in theme file instead in
96       future with the embedded scripting.. At least I'd want to print all
97       the splitted nicks in log files.
98     - per-window listing of splitted servers, it looks very stupid when
99       you see 4 lines of servers splitting in each window but only a few
100       nicks after them.
101     - per-window listing of splitted nicks, so the split messages isn't shown
102       multiple times for each channel with possibly same nicks
103     - /NETSPLIT <server>|<#channel>|<nick wildcard>
104     - SERVERMODE +ov nick nick is shown instead of just Netjoin @nick because
105       code is stupid. fixed in irssi-rewrite..
106     - show in query windows
107
108  - Crashes:
109     - irssi crashes at quit if perl is loaded as module
110     - #1  0x68cc7 in module_file_deinit_gmodule (file=0x110e20) at modules-load.c:356 
111     - <dg> i've managed to reproduce the bug, if i make three split windows (/window show 3..5), then set the windows to not be sticky  and go to one of the windows, then alt+number to another window then go back the other window the display prints two windows in the same window
112     - irssi -cserver -nnick -> crashes - lib-popt is buggy!
113         - bug as well but not crash: --config=foo --home=bar -c server
114     - /SB CLEAR still crashing sometimes?
115     - make sure irssi works with 0x0 sized terminal. 1x1 sized terminal
116       doesn't work if we use recreate_windows()
117     - /UNLOAD dcc, etc. static modules
118
119  - Scripts:
120     - print whois in active window
121     - some script to handle ctcp floods, like doing /IGNORE * CTCPS when it 
122       happens.
123     - move into scripts:
124        - /SET timestamp_timeout
125        - /MSG completion list should be modifyable from scripts
126           - script to remove nick from list after /IGNORE nick
127        - nick completion list should be modifyable afterwards:
128           - /SET completion_nicks_lowercase (remove from irssi)
129           - /SET completion_nicks_capitalize
130           - /SET completion_nicks_strip (keep only alphanumeric chars)
131     - irchat-like JOIN/PART/QUIT combiner (QUIT: nick1, nick2, nick3), would
132       require the line replacing work properly which it doesn't..
133
134  - Irssi proxy:
135     - doesn't propagate your own nickchanges to other clients
136     - better support for CTCP replies / DCC
137
138  - Misc IRC related things:
139     - better support for !channels (don't log the ID, show nicer in whois,
140       layout save doesn't work, /win item move !channel)
141     - support for mode +q in dancer - also same as +b %xxx modes..
142     - properly support RFC-1459 charset (ircnet specific option), eg.
143       /QUERY p[ and msgs from p{ aren't placed there.
144     - /BAN -ip, -time [<time>] (/ALIAS knockout?)
145     - /KICKBAN to support same options than /BAN (would /ALIAS kickban work?)
146     - ban list prints "x seconds ago" .. should be x days, mins, hours, ..
147     - /WALL could maybe check if server supports /WALLCHOPS or @#channel?
148       maybe too much trouble figuring out if it can or not.
149
150  - Windows:
151      - /WINDOW SIZE -sticky, so f.e. /WINDOW BALANCE wouldn't affect it.
152      - /LAYOUT save|reset doesn't affect anything immediately, only after
153        restart
154      - Check that /LAYOUT SAVE works properly with all the different /SETs,
155        like reuse_unsued_windows, windows_auto_renumber and autoclose_windows.
156        What should it do if some channel is /PARTed with autoclose_windows 
157        set?..
158      - /LAYOUT SAVE  should ask if we want to save those window items that
159        are "bound sticky" but of which server is currently not connected.
160      - /WINDOW scrollback_lines /WINDOW scrollback_hours
161      - Optionally always start the lines from bottom of the screen when 
162        screen is empty (how would scrolling work?)
163      - Vertically split windows
164      - /SET use_msgs_window and /SET use_status_window should take effect
165        immediately
166      - /WINDOW notify_level - would specify what window activity will be
167        shown for the window
168      - Some sort of autobalancing for split windows after terminal resize,
169        maybe with window-specific options that "this window is n lines",
170        "this is at least n% of available space", etc.
171
172  - Keyboard handling:
173     - Some kind of state support for it, so it would be possible to make
174       support for vi keys easily.
175     - Editor-like (or bash-like) line editor - it would wrap to next line
176       instead of scrolling.
177     - When pasting text, irssi could notice it and ask "pasting 30 lines
178       of text, ok?" .. Could send some signal that sends the pasted lines
179       in GList which signal handlers could modify. Also the first pasted
180       line could be somehow buffered so that it isn't sent immediately
181       so these paste handlers could modify it too.
182         - Already existing / at start of line handler should use this
183         - Automatically remove empty space at the start/end of lines,
184           from start of line it would work so that if each line begins with
185           4 spaces but some more, it would only remove those 4 spaces from
186           each so pasting code wouldn't mess up indents etc.
187         - Skip all autoreplaces and completions, so that f.e. tabs are
188           printed as-is (a few /BINDs would do this but...)
189         - Should empty lines be pasted too? Maybe optionally
190     - /BIND -askkey command
191     - /BIND -delete doesn't print that it did the deleting
192     - /BIND -deletes should be saved in config
193     - ^W (and some others) don't update cut buffer.
194     - default binds: M-d, M-y
195     - capitalize-word (meta-c), downcase-word (meta-l),
196       transpose-words (meta-t), upcase-word (meta-u)                          
197     - UTF-8 support
198     - /PASSWORD command that asks you to type the password to entry line and
199       would hide it with asterisks, good if people spy on you :)
200     - ^R-like history search
201
202  - Notify list:
203     - showing who's online and who's offline doesn't work properly.
204     - adding/removing people in notify list don't show in /NOTIFY immediately
205     - when someone in notify list joins, should it be placed to start of
206       /MSG completion list?
207     - /NOTIFY -away and -idle: support for wildcards in nicks (requires of
208       course that we're in same channel as nick)
209     - Automatically add queried nicks to notify list temporarily .. display
210       the notifys for the nick in the query window
211     - /NOTIFY -once - notify only once when the user comes to IRC, forget
212       this after it.
213     - /NOTIFY -comment xxx - add a comment to notify. print the comment when
214       user comes to irc.
215     - "Should we check people in notify list when you're away" option
216     - use /WATCH instead of /ISON in servers that support it
217
218  - Ignores:
219     - /IGNORE -ircnet or -tag
220     - /IGNORE <nick> -> use hostmasking (related to channel syncing problem,
221       see "bigger code changes") with support for -type and /SET ignore_type
222     - /IGNORE -strip -pattern away * actions ..
223     - can't have multiple ignore -patterns with same nick
224     - /ignore -activity .. would ignore it just in window activity list,
225       not hide the text.
226     - The nick cache stuff just made it slower. Remove it or figure out how
227       it could be faster.
228
229  - Hilights:
230     - /HILIGHT list doesn't print several options. Maybe some generic
231       function which could be used for printing those options for all these
232       /IRCNET, /SERVER ADD, etc. commands.
233     - /HILIGHT -mask <mask> <word>: not possible use both.
234     - case sensitive hilight checking.
235     - ignore coloring in the words it matches, so eg. /hilight foo would
236       match to f^Bo^Bo
237     - BUG: it STILL sometimes creates hilight activity while there's no
238       hilights, around mode changes (haven't heard for a while though,
239       maybe it is anyway fixed? :)
240     - change the colors of both the nick and the matched word.
241     - /SET hide_text_style still breaks /HILIGHT -words
242     - even if hilight_color is "", %n is printed after hilighted text.
243     - /hilight -actcolor %M -color %w -regexp -level publics
244                -channels #channel1,#channel2 .*
245       removes the bold from /me actions of other users
246     - people want to hilight their own nicks everywhere, eg. /HILIGHT $N
247     - automatic nick hilighting at beginning of line should be optional,
248       like some people would want -word hilighting in it..
249     - exceptions
250
251  - Scrollback:
252     - Optionally show a "bookmark" (line mark actually, a line full of '-'
253       chars) in a window. It would be displayed at the position where you
254       were when the window was active last time. /MARK command to force
255       updating it to bottom of screen in active window.
256     - /SCROLLBACK REDRAW doesn't do anything to non-format lines (should
257       redraw timestamp, etc.)
258     - /LAST -since <timestamp>
259     - /LAST : use /SET timestamp_format
260     - /LAST -allwindows would check the lastlog from all open windows
261     - /SCROLLBACK CLEAR all -public - a bit like /LAST -clear
262       (make /LAST -clear do /SB CLEAR lastlog)
263
264  - Formats / themes:
265     - scripting for formats (see the themes.txt), and make the default.theme
266       so that you REALLY don't need to touch /FORMATs, unless you want to
267       change english texts (eg. joins/parts/quits etc. are fully configurable
268       in theme file)
269     - Possibility to modify abstracts and replaces in themes from irssi.
270       (or maybe not, just makes it more difficult)
271     - Document the different formats briefly :)
272     - /FORMATs don't have styling anymore, so translation to different
273       languages should be possible with still the ability to use different
274       themes easily. /SET formats <filename> could change the file where
275       to read all /FORMATs, but formats in theme file would override them.
276     - terminfo/termcap supports changing palette. add support for themes
277       as well to specify it.
278     - hilight formats. pubaction_hilight would be nice, but so would many
279       others as well. something generic for all these would be nice .. would
280       it be possible to do this in theme side with scripting without a
281       format for each different thing?
282
283  - Server commands:
284     - Optionally wait for a while (0.5-1sec) before sending the message to
285       server, if arrow up key is pressed abort it. Also remove the line from
286       screen and put some notice about it being not sent.
287     - If we receive "cannot send to channel" from server or "you're not 
288       chanop" events, remove the privmsgs/notices or modes/kicks/etc. from
289       send queue automatically. Useful for aborting things when you get
290       kicked after pasting lots of text or deopped after doing /OP * or
291       something ;) .. use /SERVER PURGE <target> for this..
292     - Split PRIVMSGs and NOTICEs automatically to multiple commands if
293       their length exceeds the 512 bytes (or it should be shorter actually
294       so server won't split it when it adds your nick+host mask)
295     - Fix the flood protection to be aware of max. input buffer, which is
296       1024 bytes by default (/STATS d, CF). Now irssi may excess flood when
297       sending lots of lines longer than ~200 chars.
298     - Flood protection doesn't count the extra penalty for MODEs and KICKs
299       in ircnet.
300
301  - Text buffer:
302     - support for printing ALL characters in text buffer, including ^B, ^C,
303       etc. etc. so we could selectively decide what mirc colors to translate
304       and what not. Like, we would want to show (or hide) it in normal
305       messages, but we would want to show it as-is in user's ident and
306       ban lists. This should fix /HILIGHT -word as well.
307     - EPIC-like /SET mangle_inbound, maybe mangle_outbound?
308     - %> should work in normal text lines
309     - support for iso-2022-jp? does anyone even want this? ;) it works with
310       esc$B..encoded text...esc(B - encoded text is in 7bit chars, not sure
311     - fix the textbuffer code so that typofix.pl actually works
312     - if you're in beginning of scrollback when lines are being removed,
313       the screen is messed up (?). Also, after /SB END the --more-- is
314       still there and you can't get rid of it (couldn't reproduce)
315     - does /SB REFRESH work? Make it update the lines lazily, only when
316       needed so it would be fast.
317     - Make /SET HOLD_MODE
318     - /CAT should pause on every screenful of text, this should be some kind
319       of printtext_multiline_paused() function which would use some callback
320       to ask for new text.
321     - when scrolling, using pgup/down. it would be neat if the last/first
322       overlapping line in the newly redrawn buffer would be colorized for a
323       second or two, indicating where to continue reading
324
325  - Statusbar
326     - finish the support for multiple statusbar groups, and add
327       /WINDOW STATUSBAR command.
328     - finish the support for multiple input lines and a way to switch
329       between them, so eg. each split window could have it's own input line.
330     - padding char so instead of just spaces you could have ------
331     - hide the whole statusbar if none of it's items use any space
332       (visible = "auto")
333     - /SBAR # PLACEMENT top|bottom sometimes messes up the screen a bit,
334       ^L helps though
335     - /STATUSBAR prompt DISABLE hangs irssi because there's no input line.
336       Add some check to not allow this.
337     - /STATUSBAR could list also disabled bars
338
339  - Server connecting:
340     - More verbose connecting
341         - show if we're using IPv4 or IPv6
342         - show hostname we're using
343         - show the proxy settings we're using
344     - Reconnecting shouldn't try to remember all those settings, especially
345       /SET real_name xx + /RECONNECT should work.
346     - DNS problems may cause removal of i-line, irssi shouldn't stop
347       trying to reconnect the server if it happens.. Maybe it never should
348       stop reconnecting to servers that are in config.
349     - Remember the previous IP while reconnecting, if DNS lookup fails use
350       it. Some DNS servers return "host not found" when their internet
351       connection is broken and irssi stops reconnecting..
352     - /RECONNECT <servertag> - If <servertag> belongs to some IRC network,
353       reconnect to next server in that ircnet, otherwise just reconnect
354       to the server.
355     - /SERVER <number> would connect to n'th server in list. Show the
356       numbers with /SERVER LIST
357     - /CONNECT <ircnet> could remove existing ircnet connection from
358       reconnect queue if it exists (only if there's only one?). Also if
359       we're already connected to the ircnet it could complain about it
360       and -yes would force it.
361     - connect() may be stuck forever, timeout it after a few minutes.
362     - Raise the reconnect time every time you get disconnected, so if your
363       network goes up/down all the time, we'd see you join/part channels
364       more and more often instead of flooding all the time.
365     - Better support for round robin addresses (eg. irc.openprojects.org)
366     - /CONNECT -raw? A bit like telnet/nc host.
367
368  - Tab completion:
369     - Command parameter completion doesn't work properly when -options 
370       are used.
371     - Possibility to complete -option parameters? Like -ircnet <tab>, also
372       /MSG -servertag<tab> and /LAST -level<tab> should work. All of these
373       require some command definition changes..
374     - bash-style (or whatever it should be called) tab-completion
375     - key for reverse completion
376     - /MSG <tab> completion shouldn't include queried nick there (optional)
377     - nick completion shouldn't try completing nicks everywhere,
378       like /SET <tab>
379     - File completion could guess when it's wanted, word beginning with /
380       (not at start of line of course, unless / isn't in cmdchars)
381       or ~/ or ./
382     - filename completion doesn't work properly if path has spaces
383
384  - Modules:
385     - Figure out module vs. plugin wording, what is what ;)
386     - API for plugins which would be guaranteed not to change
387       (at least too much/too often :)
388     - "chat protocol modules" - they could be loaded at startup so they'd be
389       equal to IRC protocol (autoconnecting servers would work etc.)
390     - on-demand autoload modules (f.e. by /command or maybe some signal)
391     - Try to make them create only .so files instead of .a and all..
392     - dependencies for modules? double /[un]load prints a bit stupid text
393
394  - perl scripting:
395     - /LOAD [-script | -module], /UNLOAD script
396     - Possibility to modify entry line somehow
397     - Add structures: MODULE_REC, THEME_REC, KEYINFO_REC, 
398       CHAT_PROTOCOL_REC, etc.
399     - signal_emit() - if emitting unknown signal, it could automatically
400       save the types of sent parameters so another perl script could
401       signal_add() it
402     - Irssi::keyboard_entry_redirect()
403     - Irssi::format_get_text()
404     - "use Symbol(delete_package)" doesn't work with perl 5.004 and crashes
405       irssi .. at least remove the crashing!
406     - Irssi::signal_remove() could accept hashes
407     - /command parameter parser so it'd be easier to handle -options etc.
408     - when reloading scripts, Irssi::settings_add_int() prints glib errors,
409       while settings_add_str() doesn't
410     - Try to get the Makefiles generated so that compiling with GCC would
411       always work even if the perl wasn't compiled with GCC..
412
413  - Bigger code changes:
414     - Restructure code tree so that non-IRC chat protocols would be in
415       same places than IRC protocol. Something like:
416         - src/irc (like now)
417         - src/irc/fe-common, src/irc/fe-text
418       SILC could then make symlinks to src/silc to whereever the SILC
419       module was unpacked. Make it possible to build SILC support built-in.
420     - /SETs have now boolean/number/string types. Add more:
421         - Time: Allow to use s|m|h|d to specify the time, default to
422           seconds. When sending reply to user, use the time formatting too,
423           not just x seconds or minutes. "10d 5s" should also work.
424         - Level: Like "all -msgs -public". Complain about unknown strings.
425         - size: 5M, 5k, ..
426     - Reading configuration file should be changed somehow .. at least add
427       some helper functions for reading lists since comments inside them
428       now crash irssi. Also if setting wasn't expected type can cause
429       crashes so add proper error checkings everywhere. And is_node_list()
430       etc. should be in uppercase..
431     - Would this work..? : command_bind() could specify the parameters
432       it uses, then some generic command parser could parse the commands
433       and options and if all is ok, send the parsed parameters directly with
434       signal_emit() .. I'm just thinking some type checking problems but
435       if all commands would be in format SERVER_REC, WI_ITEM_REC,
436       GHashTable *options, char ** (NULL terminated parameters list) .. ?
437     - support for multiple subcommands in the command parser, like
438       /window name foo level msgs.
439     - Channel syncing is evil. Make it optional, and use /USERHOST when
440       needed if host isn't known. /BAN at least should do this, and while
441       at it, we could make /IGNORE as well to ignore based on mask.
442     - Irssi saves some setting strings to static const char * variables in
443       several places.. this works pretty well usually, except when /RELOADing
444       config and some "setup changed" signal handler goes and calls some
445       function that still uses the old saved string which points to free'd
446       memory.. this should somehow be fixed failsafe. maybe just g_strdup()
447       them everywhere or figure out something better..
448     - Better priority specifying for signals, probably should add
449       int priority without limited range.
450
451  - extra spaces after commands don't always work, eg /wii  nick, /help  xx
452  - hide channel key in statusbar. This would require a $cmode_nokey or
453    something..
454  - fe-none doesn't compile with --with-perl-staticlib because it doesn't find
455    the ui/textui stuff..
456  - we should probably print timestamp even if level contains MSGLEVEL_NEVER,
457    as long as it's not the only level..
458  - If /SET print_active_channel is ON, actions still don't show the channel
459  - nick's user/host can't be printed for public messages
460  - /HELP <alias> should work
461  - /CLEAR -all should clear the window activities as well, leaving hilights
462  - support :: properly in IPv6 masks
463  - /SET activity_hide_targets ircnet/#irssi
464  - when you get disconnected, print your quit message to all channel windows
465  - possibility to print rawlog in window
466  - should $10 work (in special vars)?
467  - /VER should be alias
468  - /MODE #channel b should resync the banlist, and /QUOTE NAMES #channel
469    should resync the nicklist (irssi/ircd bugs).
470  - #include support to config file
471  - make detaching work
472  - with solaris, /EXECs don't die when irssi does (tail -f ...)
473  - /EXEC -interactive: print the commands you send
474  - handle /JOINs with server redirections so they get aborted if we're not
475    seing a JOIN for a while.
476  - make sure the config file is never lost, write it to some temp file first
477    and after then move it over real config file.
478  - you could configure which events (whois, notify, etc.) to show in what
479    windows (all, current, status, msgs)
480  - /SET -reset?
481  - printnickmsg() which would print nick changes and quit messages. And
482    export that function to perl so kills.pl could print kills with it too.
483  - regexp host masks
484  - automatically switch to status window when using commands that always
485    print their output to status window, like /whois.
486  - automatic whowas if whois wasn't found should be moved to fe-common.
487    it could also print something like "nick $0 not in IRC, but this user
488    WAS in IRC:"
489  - Add command for changing automatic replaces and completions
490    (/autoreplace, /complete ?) .. could these be scripts? ..
491  - commands to move channels and servers in the config list, to set the
492    join/connect order of them.
493  - All those options to /WHO and /LIST commands that EPIC has
494  - Use different formats for /WHO #channel? There's no need to show the
495    channel in every line then (NOTE: /WHO #chan1,#chan2 should have two
496    headers)
497  - nick/channel lists at right side of the text version of irssi. Ctrl-N
498    for example could hide/show them. add mouse support for it.
499
500  - try profiling the code with /cat filewith10000lines
501  - /JOIN #foo could *optionally* move the channel to active window
502    (default off, it confuses people)
503  - /SERVER ADD -ircnet foonet bar 6000 pass1,
504    /SERVER ADD -ircnet barnet bar 6000 pass2
505    dircproxy identifies ircnets based on password
506  - $@0 always returns 4 (?)
507
508  - HÄMÄRÄT BUGIT:
509    ( - /win new hide, /win new, /win down, /win close -> crash ?)
510      - active_mainwin oli jotenkin NULL ja kaatoi.. /window killi teki sen,
511        liittyy varmaan jotenkin siihen että window_close() vaihtoi samaan
512        hiddenikkunaan splitti-ikkunan sisällä jota oltiin kuitenkin tappamassa
513        kun se ei ollut sticky..
514
515
516 *** GTK UI
517
518  - %| doesn't work with irssi text widget
519  - some problems when using multiple windows with focus being all the time in
520    one of the windows and it can't be changed to different window?! Probably
521    has something to do with click to focus.
522  - split windows are buggy, destroying them doesn't really work well..
523  - mirc ctcp togglemenuitem isn't updated right
524
525 *** Big things
526
527  - some sort of address book? our own irssi ctcp to ask for other irssi users
528    for their information (of course not without asking (except optionally))..
529    could be nice also to automatically update it, keep track of all seen
530    users gathered when joining channels, whois, who, etc. commands.
531    automatically updating information could be host masks, nicks, ips, seen in
532    channels, operator in channels, .. user specified checks like last topic or
533    mode changes or even msgs to you/some channel/with some keyword. great for
534    spying people ;) maybe even useful sometimes..
535
536    .. but what database would be best for this?
537
538  - GTK (non-GNOME) version: icons to toolbars, accelerators to menus
539  - Windows style MDI windows are possible with GtkFixed .. Some people would
540    like this.. too much job for me, it would need building the MDI windows
541    ourself (title bar, borders, resizing, etc.)
542
543  - online help, documentation, ...
544  - plugins:
545      - scheme, tcl, python scripting? eggdrop/epic compatible scripting?
546      - IRC bot, eggdrop is too old, needs a replacement ;) (started, aborted)
547      - Multiplayer games! :) Chess, tic-tac-toe, othello, battleship, tetris,
548        etc. Existing games should probably be used .. though there doesn't
549        seem to be any of these (except tetris) for gnome right now..
550      - audio / video chat :)
551
552 *** Needs rethinking ..
553
554  * Notify list GUI
555  - _one_ popup dialog could open which lists all nicks in notifylist, maybe
556    sorted by arrival time, display the dates, latest joined could be with
557    different color? etc.
558  - nick-specific options:
559     - pop up the dialog
560     - run some command (like /exec as soon as I get that done :)
561
562  * common api for statusbar handling
563  - it should work just as well in text mode and gui, colors could be done
564    with the normal % formats. GUI just ignores the colors..
565  - display number of ops, voices, normals and ircops in statusbar
566
567  * API for creating/modifying menus and toolbar, especially from plugins
568  - at least one configurable menu ("usermenu"), or maybe make the whole
569    menubar user configurable
570
571
572 *** ..in GTK UI .. just some things to remember if i'll rewrite it again.
573
574  - itext:
575      - save/find text
576      - text selection draws the entire selection every time you move the
577        mouse...
578      - if some other window has got much text, switching to it first time
579        takes some time..?
580  - editor in setup for ~/.irssi/startup
581  - dcc floods could pop up lots of dialogs..
582  - gui help
583  - change signal handling in gui-gnome so that the actual drawing and
584    functionality are in different signals, so that plugin could change the
585    whole look and feel of irssi.
586  - currently irssi sends USERHOST commands every now and then to find out
587    who are away and who are not.. optionally it could instead just watch if
588    someone hasn't written anything to channel in n minutes and mark it "away"
589    to nicklist.
590  - check new irssi versions with http rather than with irssibot..
591  - gnome statubar:
592     - clock?
593     - dcc transfer meter (gtk progressbar)
594  - dcc send: allow selection of multiple files to send (also for dnd from
595    gmc!) Allow dropping files to anywhere in irssi.