(Anything I missed as regards "standard" features you can either assume are included, or email me at awalding@no.mac.spam.com . Feel free to email with suggestions as well.)

Make it as easy to use as possible, without sacraficing power. Very important. Hide advanced stuff, and have an option to open the advanced options.

Be heavily threaded from the get go:

Have a special error handling thread.

Each server connection gets a thread

GUI thread

Non-GUI controller thread

CTCP/DCC thread

Windowing behavior:

DCC activity window, auto open after pop up window

Server connections can be output to one window or window tab

Channel connections can be output to one window or window tab

MSG's can be output to a window per convo or

MSG's can be output to one window, with it having a user list

MSG's can be filtered to different windows by channel, nick, server, hostmask

Multiple channels and servers can output to the same window

Input windows are either global, or per window

Userlists:

Either a global user list, or attached in each window(tabs share one list)

Users in list can be sorted or unsorted, and sorted by name, modes(op & voice)

Colors of different mode users can be turned on and configured

Special color for nicks listed in a friend list, color configureable

Option-Click on a name opens a user-configureable menu

List of friends, with scriptable events

Defineable connections:

List of possible servers, with default

Auto ID to NickServ, with name of NickServ and password per nick

Auto channel joining, after attempted NickServ ID

Command list to execute after connect

Text and events:

Special highlight on word list, with configureable global, server, and channel lists

User defineable colors for different types of events and messages and background

Definable fonts/size

Sounds on certain events

Text buffer per window

Input window buffer, with up key access

Nick and command autocompletion

Menus:

Menu with actions, some user definable through scripting

Put things in sensible places.

Misc:

Definable button list, either free, or attached to user list

Have pop-up menus when people send files to client, and offer DCC chat

Initial setup wizard

Pop up window on DCC events.

Network listing, with servers

Transparent windows, if possible

Channel mode alterations in channel window, by topic bar

Click alterable topic bar

Settings:

All settings exportable/importable

List of networks, with servers, merge on import

Preferences

Networking info: Server and channel info specific to your setup, different than prefs, and separate from the network list.

Scripting:

Integrated AppleScript scripting

Plugin architecture to accept other languages as scripts

Commands defineable with scripts

Use AppleScript for lots of things listed above as user defineable

Author: Aaron Walding
Updated: 2/6/2002
Version: 1.1