Added SILC Thread Queue API
[crypto.git] / apps / irssi / TODO
1  - /whowas server nick doesn't work
2 01:18 <@darix> cras: /foreach server /disconnect $tag n8 <-- doesnt work
3  - /hilight -priority is broken
4 19:36 [IRCNet] [muzzy] lisää bugeja irssissä, ilmeisesti 
5           uusin versio:  foo splittaa ulos, bar joinaa sisään, bar vaihtaa 
6           nicknamen fooksi, foo splittaa uudestaan ulos -> tulee Glib warning 
7           "is already in split list (how?)" .. :)
8
9 04:35 [OPN] [slug] was just wondering if you 
10           had Irssi::keyboard_entry_redirect() on your TODO somewhere near the 
11           top, I'd love the feature
12 04:35 [OPN] [slug] or someway to clear the 
13           command buffer, either way is acceptable, just my connection is a 
14           little less than reliable, so I've built myself a script that stores 
15           blowfish passes, all encrypted by one value
16 04:36 [OPN] [slug] then I set a single 
17           decryption key, and it keeps it for the irssi session (lost on 
18           /upgrade though), unfortunatly it stays in the command buffer 8]
19
20  - ^I in topicbar breaks things
21 14:17 <@darix> cras: this doesnt work: /exec  - -o uname -a
22
23  - "setup changed", or "setup reread" seems to cause crashes.. (with darix)
24 02:46 <@fuchs> cras, /server foonet.foo.xy and (recognizing it doesn't connect 
25                fast enough), and so doing /server barnet.foo.xy (both in the 
26                same chatnet) makes irssi joining the net but not rejoining the 
27                channels
28
29
30 14:59 <@c0ffee> cras, bug report, mode change compression appears not to work: 
31                 13:58 -!- mode/#*cut* [-b+ *cut*] by *cut* (i think it was -b+b)
32 21:55 <@L> 17:04.11 <L> /eval /last quit;/clear;/sb goto 10:00;/last -clear;/sb end
33 21:55 <@L> 17:04.27 <L> wait after it scrolls and press page up :)
34 21:55 <@L> 17:04.48 <L> oh, you can make Irssi behave correctly with /clear
35            again
36
37  - /msg nick@server or nick%host is fully treated as nickname (log, query)
38  - max_whois won't stay with reconnects?
39  - support passive DCC
40  - separate format for privmsg/notice massmessages (anything non-yournick)
41 20:45 < Juerd> 19:44 -!- Irssi: critical file channels.c: line 122 
42                (channel_find): assertion
43 20:45 < Juerd>           `name != NULL' failed.
44 20:45 < Juerd> this happens three times
45 20:46 < Juerd> and it happens in a _query_
46 20:47 <@Juerd> cras: for some reason irssi doesn't know this happens in a 
47                query, and displays "< Juerd:> foo" in the status window
48  - set TOS field for all connections (DCC especially)
49 22:51 [IRCNet] [zhafte] irssi muuten taitaa bugaa jos 
50           pistää ACT oikeaan reunaan, vai onkohan se vain mun terminaali?
51 22:52 [IRCNet] [zhafte] menevät välillä päällekkäin 
52           numerot
53  - when using -w password command line parameter, hide the password so it
54    won't show with ps.
55 07.06.2002 08:37 #irssi: <@Qrczak> cras: A bug. After /upgrade when being away 
56                                    the awaylog is not being written to.
57 21:37 < life> Then you connect. The problem is that irssi connects to the proxy 
58               server and directly afterwards send "USER ..."
59 21:37 < life> It has to wait for "HTTP 200 ok" *first*
60 04.06.2002 08:54 #irssi: <@Garion> cras: i've seen it several times now - a 
61                                    line of 79 or 80 chars (my win is 80 wide) 
62                                    which has an empty line below it, and that 
63                                    line is not refreshed when I switch to the 
64                                    window with that line in it, thus keeping 1 
65                                    line from the old window in the current 
66                                    window. Very confusing
67 21:43 [IRCNet] [HiroP-(~HiroP@p508035EC.dip.t-dialin.net)] Hi there. I just 
68           wanted to tell you that there seems to be a problem when joining 
69           large channels (500+ people) while a regexp ignore is active. I had 
70           one to ignore all server ads
71 21:43 [IRCNet] [HiroP-(~HiroP@p508035EC.dip.t-dialin.net)] 1 *: ALL -regexp 
72           -pattern .*erver.*nline.*
73 21:43 [IRCNet] [HiroP-(~HiroP@p508035EC.dip.t-dialin.net)] After joining, I 
74           could see the nicklist and 1 or 2 lines of what people were saying. 
75           Then irssi either core-dumped, got disconnected or just sat there 
76           apparently without receiving any more data (lag-counter going up to 
77           several minutes). 
78
79  - %n%_ ei näy lastlogissa
80  - darixin se pingiredirectijuttu
81 21:28 < Samus_Aran> cras: /log also shows #Linuux ... which I typod a couple
82                     days ago
83 21:30 < Samus_Aran> it doesnt show any of the queries which i closed, though,
84                     jush #channels
85
86  - "show statusbar in empty windows" flag?
87  - statusbar_item_redraw() should just set the size as dirty and calculate
88    it only when really needed.
89  - possible to cache sbar_item->size when nothing else has changed in sbar? 
90    ie. mostly when redrawing.
91  - use_status_window, use_msgs_window sais toimia heti
92  - /msg @#chan<tab>
93
94  - hilight -priority
95  - tab completio jos lisää utf8 juttuja niin ei oikein toimi?
96 16:39 <@Qrczak> cras: I'm not sure how exactly to reproduce it but it happens 
97                 often. When I jump to the window with a query using Alt-a 
98                 (after the other person said something), and close the window 
99                 (being brought to the last used window), and don't switch 
100                 windows, and then that person says something again, I'm brought 
101                 to the new query window automatically (that's of course bad).
102
103 21.04.2002 11:59 [immy(immy@beanus.org)] GLib warning: signal_free(script 
104           destroyed) : signal still has 3 references:
105  - jos kickataan nopeasti ja joinaa takas nopeasti chansyncci kaataa
106 /WHOssa.. kts. qrczak logi
107  - /set show_server_tags tjsp että näyttäis aina (yhdistä hide_server_tagsin 
108    kanssa?)
109 17:35 <@peder> cras: why isnt 'topic = " {sb_topic $topic}"' in the default 
110  - /SBAR topic placement bottom ei toimi??
111  - /SB GOTO -<days> <ts>
112  - /query -immortal so autoclose_queries wouldn't touch them
113  - /SET hiascii_control_chars if 128..128+32 should be treated as control chars
114
115 ...
116
117  - /exec -out kanavalla ei pelaa silcissä
118  - write about %[-s] etc. to default.theme
119  - away handling is a bit buggy. you do /away;/away reason, irssi remembers
120    the away reason only until it receives "you're no longer away" from the
121    first command.. setting it back to away has then lost the reason.
122  - crash: /exec -msg safari perl -e 'print "A"x600000'"
123  - nick_ nick- _nick nick2 nick3 ...
124 17.03.2002 22:25 #irssi.fi: <@Ion> cras: Jos sanon dcc chatissa että /exec - 
125                                    -out cat iso_tiedosto, niin miksi 
126                                    iso_tiedosto jää kesken? :)
127  - /op * valitus vois olla joku parempi kuin "not a good idea"..
128  - mitenkäs tabcompletio completoi taas omaakin nickkiä..?
129  - /hilight -level "public -actions" or something so it wouldn't match
130    actions.
131  - vanhan irssin /upgrades uuteen ennen sitä vaihtoi /set autolog_path:iin
132    $1 ja kaatui?..
133  - /win hide vois pelata vaikka oliskin stickyjä siinä ikkunassa
134  - /SAVE -all?
135 14.03.2002 19:10 #irssi: <@fantazja> cras: autoclose_query is also closing (and 
136                                      finishing) dcc chats :/
137  - /window server -sticky:tetyt ikkunat ei aina meinaa tajuta kun serveri
138    yhdistyy?
139  - utf8-tekstitykset bugailee statusbarissa (promptissa)
140  - jos /set reuse_unused_windows off, ja ikkuna näyttäis täysin tyhjälle
141    ja niitä olis vaan 1, niin sen vois kyllä käyttää silti (?)
142  - /set beep_msg_level hilight ei toimi jos on /hilight -word
143
144  - /STATUSBAR xx ENABLE|DISABLE recreates all statusbars which is a bit
145    annoying because some scripts want to do it and input line is cleared
146    because of this..
147  - move /SET hilight_*color to theme
148  - /SET disconnect_timeout - default 2min, 0 = immediately
149  - reconnecting messages are a bit confusing. it prints "removed reconnection"
150    to the server which it's connecting to next.. maybe the whole reconnecting
151    thing should work so that the record stays there until it's connected
152    successfully.
153  - /ignore, /hilight and /lastlog could complain immediately if used
154    regexp is broken. /hilight list could show also if it's broken like
155    /ignore does.
156
157  - /UPGRADE:
158     - support DCCs
159     - rewrite to work by fork()ing a new process and transfer file handles
160       with unix sockets. this would allow the scrollback buffers to be
161       transferred with them as well.
162     - current window layout needs to transferred
163     - reconnections aren't transferred(?)
164
165  - Logging:
166     - /LOG OPEN doesn't autocreate directories..
167     - /LOG OPEN -targets *!*cras@*.fi
168     - /SET autolog -> /LOG OPEN -targets * (internally, at least)
169     - /LOG OPEN shouldn't really open the file until first line is 
170       written in it
171     - /WINDOW LOG OFF doesn't work
172     - autoclosing logs doesn't work too well. Problems are:
173         - after certain inactivity private message logs should be closed
174         - but DCC chats shouldn't be closed until the chat itself is closed
175            - which we can't know really currently, since they don't need
176              to be in queries
177         - channels should be closed when they're left (they are now, but)
178            - /WINDOW CLOSE shouldn't close it immediately, since we'll still
179              receive at least the PART message
180     - so, log items should know more about what they are exactly, and when
181       they should be closed. private messages could have the same timeout
182       as now, time_t closetime field updated every time msg is received.
183       channels could do the same when receiving "window item destroy" signal,
184       except with a small timeout. DCC chats are more problematic...
185     - support for mirc/ansi color logging
186     - people want to show ignored stuff in logs.. how?
187     - private messages could show mirc-style "Session Ident: nick (host)"
188       which would update when nick's host changes. Then you wouldn't need to
189       print the host before each msg.
190     - support for logging channel messages from specific people
191
192  - Awaylogs:
193     - either fully support logging only in servers you're away, or change the
194       awaylog to open immediately after /AWAY command, not based on any
195       away replies from server. Maybe the later would be better, since you
196       would want to set yourself away when connections to all servers were
197       disconnected at the time.. Maybe /AWAY should update status in
198       reconnection records as well?..
199     - /SET awaylog_auto_delete, after setting yourself unaway
200     - support for using strftime() formats (and $tag etc). only problem with
201       this is that all the different awaylogs would need to be tracked and
202       /CATed when setting yourself unaway
203     - /AWAYLOG could show the current awaylog and optionally reset it
204     - The channel name should be optional there
205
206  - Window item placing:
207     - !channel vs. !12345channel. it's layout saved with full name, but joined
208       with either one
209     - when dcc chat is accepted and query exists from the same nick, replace
210       the query window with the dcc chat window.
211     - closed DCC chats should add temporary window bind to the dcc chat so
212       future chats for same nick would use the same window
213     - /JOIN #foo could *optionally* move the channel to active window
214       (default off, it confuses people)
215     - /JOIN -ircnet #foo doesn't jump to #foo like /JOIN #foo does.
216
217  - DCC
218     - /DCC SEND wildcard support
219     - /DCC GET -4 / -6 with autodetection
220     - When we receive a DCC SEND request, irssi could warn if the file
221       already exists
222     - show estimated time left and kB/s in /DCC list.
223     - implement requesting files with DCC GET from remote client for dcc file
224       servers. good for people behind firewalls. Does this feature exist
225       in other clients, or should I create DCC REQUEST? Same for DCC CHAT..
226       Maybe it could be just that the port was specified as 0, so the other
227       side would know that it needs to be the one to do listening.
228     - /SET dcc_autoresume ON, and sending the same file again while it's
229       already being downloaded doesn't work too well.. Even autorename doesn't
230       work.
231     - With fast DCC SENDs (90kB/s, FreeBSD) typing get laggy (really?)
232     - /DCC CLOSE #, /DCC would print the IDs
233     - /SET dcc_use_proxy to use IRC proxy for DCC connects as well
234     - support for special vars in /SET dcc_download_path, so $N could be used
235     - No way to autoclose dcc chat windows which have been closed by another
236       side.
237
238  - Generic chat commands:
239     - /MSG /CTCP /ACTION =dcc_chat,#channel
240     - /ACTION -ircnet with good tab support like in /MSG
241     - -nick -channel parameters to /ACTION
242     - /MSG a,b,#c,#d - it should print the message to #c and #d channel
243       windows and show only "a,b" as target when printing it to msg window..
244       Or if autoquery is set, it should print them to those windows. Hmm.
245       maybe some multipeople query support? :) /query nick1,nick2 and sending
246       text there would send it to both. Seems to work already but receiving
247       messages from either nick1 or nick2 don't go to that window..
248     - /BAN: setting of what netmask to use for banning with IPv6 addresses
249
250  - Netsplits
251     - BUG: said "+1 more", while the /SETs to control that were set properly,
252       with one guy it only said that +1 more..
253     - BUG: netsplit quit isn't printed if quit -> join -> quit -> join
254       happens fast (really?)
255     - maybe the "+x more" should be configured in theme file instead in
256       future with the embedded scripting.. At least I'd want to print all
257       the splitted nicks in log files.
258     - per-window listing of splitted servers, it looks very stupid when
259       you see 4 lines of servers splitting in each window but only a few
260       nicks after them.
261     - per-window listing of splitted nicks, so the split messages isn't shown
262       multiple times for each channel with possibly same nicks
263     - /NETSPLIT <server>|<#channel>|<nick wildcard>
264     - SERVERMODE +ov nick nick is shown instead of just Netjoin @nick because
265       code is stupid. fixed in irssi-rewrite..
266     - show in query windows
267
268  - Crashes:
269     - irssi crashes at quit if perl is loaded as module
270     - #1  0x68cc7 in module_file_deinit_gmodule (file=0x110e20) at modules-load.c:356 
271     - <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
272     - irssi -cserver -nnick -> crashes - lib-popt is buggy!
273         - bug as well but not crash: --config=foo --home=bar -c server
274     - /SB CLEAR still crashing sometimes?
275     - make sure irssi works with 0x0 sized terminal. 1x1 sized terminal
276       doesn't work if we use recreate_windows()
277     - /UNLOAD dcc, etc. static modules
278
279  - Scripts:
280     - print whois in active window
281     - some script to handle ctcp floods, like doing /IGNORE * CTCPS when it 
282       happens.
283     - move into scripts:
284        - /SET timestamp_timeout
285        - /MSG completion list should be modifyable from scripts
286           - script to remove nick from list after /IGNORE nick
287        - nick completion list should be modifyable afterwards:
288           - /SET completion_nicks_lowercase (remove from irssi)
289           - /SET completion_nicks_capitalize
290           - /SET completion_nicks_strip (keep only alphanumeric chars)
291     - irchat-like JOIN/PART/QUIT combiner (QUIT: nick1, nick2, nick3), would
292       require the line replacing work properly which it doesn't..
293
294  - Irssi proxy:
295     - doesn't propagate your own nickchanges to other clients
296     - list sessions, kill them
297     - /set irssi_proxy_ips <allow connections only from specified IPs>
298
299  - Misc IRC related things:
300     - support for mode +q in dancer - also same as +b %xxx modes..
301     - properly support RFC-1459 charset (ircnet specific option), eg.
302       /QUERY p[ and msgs from p{ aren't placed there.
303     - /BAN -ip, -time [<time>] (/ALIAS knockout?)
304     - /KICKBAN to support same options than /BAN (would /ALIAS kickban work?)
305     - ban list prints "x seconds ago" .. should be x days, mins, hours, ..
306
307  - Windows:
308      - /WINDOW SIZE -sticky, so f.e. /WINDOW BALANCE wouldn't affect it.
309      - /LAYOUT save|reset doesn't affect anything immediately, only after
310        restart
311      - Check that /LAYOUT SAVE works properly with all the different /SETs,
312        like reuse_unsued_windows, windows_auto_renumber and autoclose_windows.
313        What should it do if some channel is /PARTed with autoclose_windows 
314        set?..
315      - /LAYOUT SAVE  should ask if we want to save those window items that
316        are "bound sticky" but of which server is currently not connected.
317      - /WINDOW scrollback_lines /WINDOW scrollback_hours
318      - Optionally always start the lines from bottom of the screen when 
319        screen is empty (how would scrolling work?)
320      - Vertically split windows
321      - /SET use_msgs_window and /SET use_status_window should take effect
322        immediately
323      - /WINDOW notify_level - would specify what window activity will be
324        shown for the window
325      - Some sort of autobalancing for split windows after terminal resize,
326        maybe with window-specific options that "this window is n lines",
327        "this is at least n% of available space", etc.
328
329  - Keyboard handling:
330     - Some kind of state support for it, so it would be possible to make
331       support for vi keys easily.
332     - Editor-like (or bash-like) line editor - it would wrap to next line
333       instead of scrolling.
334     - When pasting text, irssi could notice it and ask "pasting 30 lines
335       of text, ok?" .. Could send some signal that sends the pasted lines
336       in GList which signal handlers could modify. Also the first pasted
337       line could be somehow buffered so that it isn't sent immediately
338       so these paste handlers could modify it too.
339         - Already existing / at start of line handler should use this
340         - Automatically remove empty space at the start/end of lines,
341           from start of line it would work so that if each line begins with
342           4 spaces but some more, it would only remove those 4 spaces from
343           each so pasting code wouldn't mess up indents etc.
344         - Skip all autoreplaces and completions, so that f.e. tabs are
345           printed as-is (a few /BINDs would do this but...)
346         - Should empty lines be pasted too? Maybe optionally
347     - /BIND -askkey command
348     - /BIND -delete doesn't print that it did the deleting
349     - /BIND -deletes should be saved in config
350     - ^W (and some others) don't update cut buffer.
351     - default binds: M-d, M-y
352     - /PASSWORD command that asks you to type the password to entry line and
353       would hide it with asterisks, good if people spy on you :)
354     - ^R-like history search
355     - Key to execute the command, but not place it in history
356     - Key to remove active entry from command history
357     - Optionally save command history between restarts
358
359  - Notify list:
360     - showing who's online and who's offline doesn't work properly.
361     - adding/removing people in notify list don't show in /NOTIFY immediately
362     - when someone in notify list joins, should it be placed to start of
363       /MSG completion list?
364     - /NOTIFY -away and -idle: support for wildcards in nicks (requires of
365       course that we're in same channel as nick)
366     - Automatically add queried nicks to notify list temporarily .. display
367       the notifys for the nick in the query window
368     - /NOTIFY -once - notify only once when the user comes to IRC, forget
369       this after it.
370     - /NOTIFY -comment xxx - add a comment to notify. print the comment when
371       user comes to irc.
372     - "Should we check people in notify list when you're away" option
373     - use /WATCH instead of /ISON in servers that support it
374     - Show when the nick was last seen
375
376  - Ignores:
377     - /IGNORE -ircnet or -tag
378     - /IGNORE <nick> -> use hostmasking (related to channel syncing problem,
379       see "bigger code changes") with support for -type and /SET ignore_type
380     - /IGNORE -strip -pattern away * actions ..
381     - can't have multiple ignore -patterns with same nick
382     - /ignore -activity .. would ignore it just in window activity list,
383       not hide the text.
384     - The nick cache stuff just made it slower. Remove it or figure out how
385       it could be faster.
386     - combined ignore/hilight thingy, see hilights
387
388  - Hilights:
389     - /HILIGHT list doesn't print several options. Maybe some generic
390       function which could be used for printing those options for all these
391       /IRCNET, /SERVER ADD, etc. commands.
392     - /HILIGHT -mask <mask> <word>: not possible use both.
393     - case sensitive hilight checking.
394     - ignore coloring in the words it matches, so eg. /hilight foo would
395       match to f^Bo^Bo
396     - BUG: it STILL sometimes creates hilight activity while there's no
397       hilights, around mode changes (haven't heard for a while though,
398       maybe it is anyway fixed? :)
399     - change the colors of both the nick and the matched word.
400     - /SET hide_text_style still breaks /HILIGHT -words
401     - even if hilight_color is "", %n is printed after hilighted text.
402     - /hilight -actcolor %M -color %w -regexp -level publics
403                -channels #channel1,#channel2 .*
404       removes the bold from /me actions of other users
405     - people want to hilight their own nicks everywhere, eg. /HILIGHT $N
406     - automatic nick hilighting at beginning of line should be optional,
407       like some people would want -word hilighting in it..
408     - exceptions
409     - Merged ignores/hilights thingy and maybe even something others ..
410       some first-match-wins table where you could easily add/move stuff.
411
412  - Scrollback:
413     - Optionally show a "bookmark" (line mark actually, a line full of '-'
414       chars) in a window. It would be displayed at the position where you
415       were when the window was active last time. /MARK command to force
416       updating it to bottom of screen in active window.
417     - /SCROLLBACK REDRAW doesn't do anything to non-format lines (should
418       redraw timestamp, etc.)
419     - /LAST -since <timestamp>
420     - /LAST : use /SET timestamp_format
421     - /LAST -allwindows would check the lastlog from all open windows
422     - /SCROLLBACK CLEAR all -public - a bit like /LAST -clear
423       (make /LAST -clear do /SB CLEAR lastlog)
424
425  - Formats / themes:
426     - scripting for formats (see the themes.txt), and make the default.theme
427       so that you REALLY don't need to touch /FORMATs, unless you want to
428       change english texts (eg. joins/parts/quits etc. are fully configurable
429       in theme file)
430     - Possibility to modify abstracts and replaces in themes from irssi.
431       (or maybe not, just makes it more difficult)
432     - Document the different formats briefly :)
433     - /FORMATs don't have styling anymore, so translation to different
434       languages should be possible with still the ability to use different
435       themes easily. /SET formats <filename> could change the file where
436       to read all /FORMATs, but formats in theme file would override them.
437     - terminfo/termcap supports changing palette. add support for themes
438       as well to specify it.
439     - hilight formats. pubaction_hilight would be nice, but so would many
440       others as well. something generic for all these would be nice .. would
441       it be possible to do this in theme side with scripting without a
442       format for each different thing?
443
444  - Server commands:
445     - Optionally wait for a while (0.5-1sec) before sending the message to
446       server, if arrow up key is pressed abort it. Also remove the line from
447       screen and put some notice about it being not sent.
448     - If we receive "cannot send to channel" from server or "you're not 
449       chanop" events, remove the privmsgs/notices or modes/kicks/etc. from
450       send queue automatically. Useful for aborting things when you get
451       kicked after pasting lots of text or deopped after doing /OP * or
452       something ;) .. use /SERVER PURGE <target> for this..
453     - Split PRIVMSGs and NOTICEs automatically to multiple commands if
454       their length exceeds the 512 bytes (or it should be shorter actually
455       so server won't split it when it adds your nick+host mask)
456     - Fix the flood protection to be aware of max. input buffer, which is
457       1024 bytes by default (/STATS d, CF). Now irssi may excess flood when
458       sending lots of lines longer than ~200 chars.
459     - IRCNET: Flood protection doesn't count the extra penalty for MODEs
460       and KICKs, also extra penalty should be given in messages (all
461       commands?) for each 100 chars.
462
463  - Text buffer:
464     - support for printing ALL characters in text buffer, including ^B, ^C,
465       etc. etc. so we could selectively decide what mirc colors to translate
466       and what not. Like, we would want to show (or hide) it in normal
467       messages, but we would want to show it as-is in user's ident and
468       ban lists. This should fix /HILIGHT -word as well.
469     - EPIC-like /SET mangle_inbound, maybe mangle_outbound?
470     - %> should work in normal text lines
471     - support for iso-2022-jp? does anyone even want this? ;) it works with
472       esc$B..encoded text...esc(B - encoded text is in 7bit chars, not sure
473     - fix the textbuffer code so that typofix.pl actually works
474     - if you're in beginning of scrollback when lines are being removed,
475       the screen is messed up (?). Also, after /SB END the --more-- is
476       still there and you can't get rid of it (couldn't reproduce)
477     - does /SB REFRESH work? Make it update the lines lazily, only when
478       needed so it would be fast.
479     - Make /SET HOLD_MODE
480     - /CAT should pause on every screenful of text, this should be some kind
481       of printtext_multiline_paused() function which would use some callback
482       to ask for new text.
483     - when scrolling, using pgup/down. it would be neat if the last/first
484       overlapping line in the newly redrawn buffer would be colorized for a
485       second or two, indicating where to continue reading
486
487  - Statusbar
488     - finish the support for multiple statusbar groups, and add
489       /WINDOW STATUSBAR command.
490     - finish the support for multiple input lines and a way to switch
491       between them, so eg. each split window could have it's own input line.
492     - padding char so instead of just spaces you could have ------
493     - hide the whole statusbar if none of it's items use any space
494       (visible = "auto")
495     - /SBAR # PLACEMENT top|bottom sometimes messes up the screen a bit,
496       ^L helps though
497     - /STATUSBAR prompt DISABLE hangs irssi because there's no input line.
498       Add some check to not allow this.
499     - /STATUSBAR could list also disabled bars
500     - command to list all available statusbar items
501
502  - Server connecting:
503     - More verbose connecting
504         - show if we're using IPv4 or IPv6
505         - show hostname we're using
506         - show the proxy settings we're using
507     - Reconnecting shouldn't try to remember all those settings, especially
508       /SET real_name xx + /RECONNECT should work.
509     - DNS problems may cause removal of i-line, irssi shouldn't stop
510       trying to reconnect the server if it happens.. Maybe it never should
511       stop reconnecting to servers that are in config.
512     - Remember the previous IP while reconnecting, if DNS lookup fails use
513       it. Some DNS servers return "host not found" when their internet
514       connection is broken and irssi stops reconnecting..
515     - /RECONNECT <servertag> - If <servertag> belongs to some IRC network,
516       reconnect to next server in that ircnet, otherwise just reconnect
517       to the server.
518     - /SERVER <number> would connect to n'th server in list. Show the
519       numbers with /SERVER LIST
520     - /CONNECT <ircnet> could remove existing ircnet connection from
521       reconnect queue if it exists (only if there's only one?). Also if
522       we're already connected to the ircnet it could complain about it
523       and -yes would force it.
524     - connect() may be stuck forever, timeout it after a few minutes.
525     - Raise the reconnect time every time you get disconnected, so if your
526       network goes up/down all the time, we'd see you join/part channels
527       more and more often instead of flooding all the time.
528     - Better support for round robin addresses (eg. irc.openprojects.org)
529     - /CONNECT -raw? A bit like telnet/nc host.
530
531  - Tab completion:
532     - Command parameter completion doesn't work properly when -options 
533       are used.
534     - Possibility to complete -option parameters? Like -ircnet <tab>, also
535       /MSG -servertag<tab> and /LAST -level<tab> should work. All of these
536       require some command definition changes..
537     - bash-style (or whatever it should be called) tab-completion
538     - key for reverse completion
539     - /MSG <tab> completion shouldn't include queried nick there (optional)
540     - File completion could guess when it's wanted, word beginning with /
541       (not at start of line of course, unless / isn't in cmdchars)
542       or ~/ or ./
543     - filename completion doesn't work properly if path has spaces
544     - /FORMAT xx <tab>
545     - don't add useless completions to list. eg /RUN nick<tab> shouldn't 
546       work
547     - Priorities to completions. And at least command completion could use
548       it so it'd put last the commands that require chanops/ircops.
549       Requires support in command_bind().
550     - /DCC commands could complete nicks (/dcc close, /dcc get, ..)
551     - check the TODO about nick completion scripts..
552
553  - Modules:
554     - Figure out module vs. plugin wording, what is what ;)
555     - API for plugins which would be guaranteed not to change
556       (at least too much/too often :)
557     - "chat protocol modules" - they could be loaded at startup so they'd be
558       equal to IRC protocol (autoconnecting servers would work etc.)
559     - on-demand autoload modules (f.e. by /command or maybe some signal)
560     - Try to make them create only .so files instead of .a and all..
561     - dependencies for modules? double /[un]load prints a bit stupid text
562
563  - perl scripting:
564     - /LOAD [-script | -module], /UNLOAD script
565     - Possibility to modify entry line somehow
566     - Add structures: MODULE_REC, THEME_REC, KEYINFO_REC, 
567       CHAT_PROTOCOL_REC, etc.
568     - signal_emit() - if emitting unknown signal, it could automatically
569       save the types of sent parameters so another perl script could
570       signal_add() it
571     - Irssi::keyboard_entry_redirect()
572     - Irssi::format_get_text()
573     - "use Symbol(delete_package)" doesn't work with perl 5.004 and crashes
574       irssi .. at least remove the crashing!
575     - Irssi::signal_remove() could accept hashes
576     - /command parameter parser so it'd be easier to handle -options etc.
577     - Try to get the Makefiles generated so that compiling with GCC would
578       always work even if the perl wasn't compiled with GCC..
579     - Irssi::Timeout_add() and input_add()'s data option could be optional
580       and maybe allow multiple parameters
581
582  - Bigger code changes:
583     - Restructure code tree so that non-IRC chat protocols would be in
584       same places than IRC protocol. Something like:
585         - src/irc (like now)
586         - src/irc/fe-common, src/irc/fe-text
587       SILC could then make symlinks to src/silc to whereever the SILC
588       module was unpacked. Make it possible to build SILC support built-in.
589     - /SETs have now boolean/number/string types. Add more:
590         - Time: Allow to use s|m|h|d to specify the time, default to
591           seconds. When sending reply to user, use the time formatting too,
592           not just x seconds or minutes. "10d 5s" should also work.
593         - Level: Like "all -msgs -public". Complain about unknown strings.
594         - size: 5M, 5k, ..
595     - Reading configuration file should be changed somehow .. at least add
596       some helper functions for reading lists since comments inside them
597       now crash irssi. Also if setting wasn't expected type can cause
598       crashes so add proper error checkings everywhere. And is_node_list()
599       etc. should be in uppercase..
600     - Channel syncing is evil. Make it optional, and use /USERHOST when
601       needed if host isn't known. /BAN at least should do this, and while
602       at it, we could make /IGNORE as well to ignore based on mask. Also,
603       if /USERHOST doesn't find anything, use /WHOWAS info.
604     - Irssi saves some setting strings to static const char * variables in
605       several places.. this works pretty well usually, except when /RELOADing
606       config and some "setup changed" signal handler goes and calls some
607       function that still uses the old saved string which points to free'd
608       memory.. this should somehow be fixed failsafe. maybe just g_strdup()
609       them everywhere or figure out something better..
610     - Better priority specifying for signals, probably should add
611       int priority without limited range.
612     - fix server redirections to handle remote events correctly: very unlikely,
613       but its possible that replies to two remote whoises are received exactly
614       at the same time overlapping each others
615
616  - Commands:
617     - try to get the 0.9 command parser to work..
618     - user definable parameter definitions and how they're handled, like
619       cmsg <target> <colorized-msg> - then there'd be some function called to
620       colorize the third parameter. same for tab completion.
621     - support for multiple subcommands in the command parser, like
622       /window name foo level msgs.
623     - A way to disable some command entirely? eg. not show in completion
624       list or /HELP or anywhere..
625
626  - Read server capabilities from 005 numeric
627  - extra spaces after commands don't always work, eg /wii  nick, /help  xx
628  - hide channel key in statusbar. This would require a $cmode_nokey or
629    something..
630  - fe-none doesn't compile with --with-perl-staticlib because it doesn't find
631    the ui/textui stuff..
632  - we should probably print timestamp even if level contains MSGLEVEL_NEVER,
633    as long as it's not the only level.. Except when /CATing awaylog we don't
634    want to do that.
635  - If /SET print_active_channel is ON, actions still don't show the channel
636  - nick's user/host can't be printed for public messages
637  - /HELP <alias> should work
638  - /CLEAR -all should clear the window activities as well, leaving hilights
639  - support :: properly in IPv6 masks
640  - /SET activity_hide_targets ircnet/#irssi
641  - when you get disconnected, print your quit message to all channel windows
642  - possibility to print rawlog in window
643  - should $10 work (in special vars)?
644  - /VER should be alias
645  - /MODE #channel b should resync the banlist, and /QUOTE NAMES #channel
646    should resync the nicklist (irssi/ircd bugs).
647  - #include support to config file
648  - make detaching work
649  - with solaris, /EXECs don't die when irssi does (tail -f ...)
650  - /EXEC -interactive: print the commands you send
651  - handle /JOINs with server redirections so they get aborted if we're not
652    seing a JOIN for a while.
653  - make sure the config file is never lost, write it to some temp file first
654    and after then move it over real config file.
655  - you could configure which events (whois, notify, etc.) to show in what
656    windows (all, current, status, msgs)
657  - /SET -reset?
658  - printnickmsg() which would print nick changes and quit messages. And
659    export that function to perl so kills.pl could print kills with it too.
660  - regexp host masks
661  - automatically switch to status window when using commands that always
662    print their output to status window, like /whois.
663  - automatic whowas if whois wasn't found should be moved to fe-common.
664    it could also print something like "nick $0 not in IRC, but this user
665    WAS in IRC:"
666  - Add command for changing automatic replaces and completions
667    (/autoreplace, /complete ?) .. could these be scripts? ..
668  - commands to move channels and servers in the config list, to set the
669    join/connect order of them.
670  - All those options to /WHO and /LIST commands that EPIC has
671  - Use different formats for /WHO #channel? There's no need to show the
672    channel in every line then (NOTE: /WHO #chan1,#chan2 should have two
673    headers)
674  - nick/channel lists at right side of the text version of irssi. Ctrl-N
675    for example could hide/show them. add mouse support for it.
676
677  - try profiling the code with /cat filewith10000lines
678  - /SERVER ADD -ircnet foonet bar 6000 pass1,
679    /SERVER ADD -ircnet barnet bar 6000 pass2
680    dircproxy identifies ircnets based on password
681  - $@0 always returns 4 (?)
682
683  - HÄMÄRÄT BUGIT:
684    ( - /win new hide, /win new, /win down, /win close -> crash ?)
685      - active_mainwin oli jotenkin NULL ja kaatoi.. /window killi teki sen,
686        liittyy varmaan jotenkin siihen että window_close() vaihtoi samaan
687        hiddenikkunaan splitti-ikkunan sisällä jota oltiin kuitenkin tappamassa
688        kun se ei ollut sticky..
689
690
691 *** GTK UI
692
693  - %| doesn't work with irssi text widget
694  - some problems when using multiple windows with focus being all the time in
695    one of the windows and it can't be changed to different window?! Probably
696    has something to do with click to focus.
697  - split windows are buggy, destroying them doesn't really work well..
698  - mirc ctcp togglemenuitem isn't updated right
699
700 *** Big things
701
702  - some sort of address book? our own irssi ctcp to ask for other irssi users
703    for their information (of course not without asking (except optionally))..
704    could be nice also to automatically update it, keep track of all seen
705    users gathered when joining channels, whois, who, etc. commands.
706    automatically updating information could be host masks, nicks, ips, seen in
707    channels, operator in channels, .. user specified checks like last topic or
708    mode changes or even msgs to you/some channel/with some keyword. great for
709    spying people ;) maybe even useful sometimes..
710
711    .. but what database would be best for this?
712
713  - GTK (non-GNOME) version: icons to toolbars, accelerators to menus
714  - Windows style MDI windows are possible with GtkFixed .. Some people would
715    like this.. too much job for me, it would need building the MDI windows
716    ourself (title bar, borders, resizing, etc.)
717
718  - online help, documentation, ...
719  - plugins:
720      - scheme, tcl, python scripting? eggdrop/epic compatible scripting?
721      - IRC bot, eggdrop is too old, needs a replacement ;) (started, aborted)
722      - Multiplayer games! :) Chess, tic-tac-toe, othello, battleship, tetris,
723        etc. Existing games should probably be used .. though there doesn't
724        seem to be any of these (except tetris) for gnome right now..
725      - audio / video chat :)
726
727 *** Needs rethinking ..
728
729  * Notify list GUI
730  - _one_ popup dialog could open which lists all nicks in notifylist, maybe
731    sorted by arrival time, display the dates, latest joined could be with
732    different color? etc.
733  - nick-specific options:
734     - pop up the dialog
735     - run some command (like /exec as soon as I get that done :)
736
737  * common api for statusbar handling
738  - it should work just as well in text mode and gui, colors could be done
739    with the normal % formats. GUI just ignores the colors..
740  - display number of ops, voices, normals and ircops in statusbar
741
742  * API for creating/modifying menus and toolbar, especially from plugins
743  - at least one configurable menu ("usermenu"), or maybe make the whole
744    menubar user configurable
745
746
747 *** ..in GTK UI .. just some things to remember if i'll rewrite it again.
748
749  - itext:
750      - save/find text
751      - text selection draws the entire selection every time you move the
752        mouse...
753      - if some other window has got much text, switching to it first time
754        takes some time..?
755  - editor in setup for ~/.irssi/startup
756  - dcc floods could pop up lots of dialogs..
757  - gui help
758  - change signal handling in gui-gnome so that the actual drawing and
759    functionality are in different signals, so that plugin could change the
760    whole look and feel of irssi.
761  - currently irssi sends USERHOST commands every now and then to find out
762    who are away and who are not.. optionally it could instead just watch if
763    someone hasn't written anything to channel in n minutes and mark it "away"
764    to nicklist.
765  - check new irssi versions with http rather than with irssibot..
766  - gnome statubar:
767     - clock?
768     - dcc transfer meter (gtk progressbar)
769  - dcc send: allow selection of multiple files to send (also for dnd from
770    gmc!) Allow dropping files to anywhere in irssi.