=pod

=head1 NAME

App::Alice - an Altogether Lovely Internet Chatting Experience

=head1 SYNPOSIS

  arthur:~ leedo$ alice
  Location: http://localhost:8080/view

=head1 DESCRIPTION

Alice is an IRC client that can be run either locally or remotely, and
can be viewed in multiple web browsers at the same time. The alice server
maintains a message buffer, so when a browser connects it is sent
the 100 most recent lines from each channel. This allows the user to
close their browser while alice continues to aggregate messages.

Alice's built in web server maintains a long streaming HTTP response
to each connected browser. It uses this connection to push IRC messages
to the browsers in realtime. Sending messages or commands is done
through an HTTP request back to alice's server.

=head1 USAGE

After installing, there should be a new `alice' command available. Run
this command to start the alice server. Open your browser and connect to 
the URL that was printed to your terminal (likely http://localhost:8080/view). 
You will see a small icon in the bottom corner; this button will bring up the
connection configuration window. Add one more more IRC servers and channels in this
window and save. Alice will then connect to those servers, and the channels
will appear as tabs at the bottom of the screen.

=head1 COMMANDS

=head2 /j[oin] [-network] $channel

Takes a channel name as an argument. It will attempt to join this channel
on the server of the channel that you typed the command into.

=head2 /part

This will close the currently focused tab and part the channel. Only works on
channels.

=head2 /close

=head2 /wc

Closes the current tab, even private message tabs. If used in a channel
it will also part the channel.

=head2 /clear

This will clear the current tab's messages from your browser. It will also 
clear the tab's message buffer so when you refresh your browser the messages 
won't re-appear (as they normally would.)

=head2 /query $nick

Takes a nick as an argument. This will open a new tab for private messaging
with a user. Only works in a channel.

=head2 /whois $nick

Takes a nick as an argument. This will print some information about the
supplied user.

=head2 /quote $string

=head2 /raw $string

Sends a string as a raw message to the server.

=head2 /topic [$topic]

Takes an optional topic string. This will display the topic for the current tab.
If a string is supplied, it will attempt to update the channel's topic.
Only works in a channel.

=head2 /n[ames]

This will print all of the nick's in the current tab in a tabular format.

=head2 /me $string

Sends a string as an ACTION to the channel

=head1 NOTIFICATIONS

If you get a message with your nick in the body, and no browsers are
connected, a notification will be sent to either Growl (if running on
OS X) or using libnotify (on Linux.) Alice does not send any notifications
if a browser is connected (the exception being if you are using the Fluid
SSB which can access Growl). This is something that will probably become 
configurable over time.

=head1 RUNNING REMOTELY

Currently, there has been very little testing done for running alice
remotely. So please let us know how your experience with it is.

=head1 MOBILE INTERFACE

Surprisingly, alice works very well in Mobile Safari (the browser used
by the iPhone.) It still needs a little work to be fully functional, though.
The required style changes are automatically applied for mobile devices.

=head1 KNOWN ISSUES

There are a number of rendering issues:

=over 2

=item * Tabs that overflow beyond the tab row will be hidden

=item * Message area doesn't scroll on Firefox or Mobile Safari

=back

=head1 AUTHORS

Lee Aylward E<lt>leedo@cpan.orgE<gt>

Sam Stephenson

Ryan Baumann

Paul Robins E<lt>alice@mon.gsE<gt>

=head1 COPYRIGHT

Copyright 2009 by Lee Aylward E<lt>leedo@cpan.orgE<gt>

This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.

=cut
