Git Product home page Git Product logo

convos's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

convos's Issues

Add timeline for chat

Would be nice if it was possible to browse backwards in time by date. Would be even cooler if the timeline had big/small circles when you talked/were mentioned/...

Tab isn't opened for private chats

When clicking on a nick in the list of participants of a channel the tab of the channel stays active (bold) and no new tab for the private chat is attached in the menubar. Once the first reply is received, the nick is attached as a tab and marked as bold.

If there is already logged previous messages in that private chat, messages from the channels backlog are shown above the first logged message of the private chat. This only happens if the private chat is not attached as a tab, so will probably be fixed, once the tab is always properly opened.

Placeholder for things to decide

I want to do some changes:

  • I want to remove the "go to bottom" button or at least reformat it. #97
  • Want timestamp on every messages from today. #96
  • Figure out why autocomplete doesn't take the last nick that said something. #97
  • Make view.network route accept POST so we can send data without websocket
  • Get rid of data-target and data-network. Thinking about data-path="/:network/:target" instead.
  • Move to react.js

Need to discuss this with @marcusramberg before changing.

Make it easier to start convos if running as a single daemon

It would be nice if the backend started by default if the server was started as a daemon.

I'm thinking maybe we should add another mojo command which starts both frontend/backend by setting an environment variable...

But do we really want this? I mean, should we rather tell the users that the right way to run the server is with two processes?

Re-assign to me @marcusramberg if you think we should have one command to rule them all.

Add LDAP support

It would be nice to have some other authentication mechanisms and LDAP in particular. I'm sure I'm not the only one keen on running something like this on a subnet far far away with sufficient infrastructure for user authentication.

Websocket fail to reconnect

The websocket does not reconnect if the computer change IP or goes to sleep. I've seen it some times on my phone and coworkers experience it "all the time" in Firefox. It's probably a common issue.

/names fail for channel with uppercase characters

/names in the channel #nuug, receive this response:

<li class="nicks" data-network="freenode" data-target="#Nuug">
  <span class="prefix">Participants are</span>
  <span>
      <a data-nick="Brumle" href="/freenode/a">a</a>,
      <a data-nick="CybDev" href="/freenode/b">b</a>,
      <a data-nick="johskar" href="/freenode/c">c</a>,
  </span>
  <span class="timestamp" title=" 9. April 12:05:55">12:05</span>
</li>

So it seems like the javascript fail to lookup the "Nuug" id, since it's called "nuug" in the markup:

<ul class="with-sidebar chat" data-network="freenode" data-target="#nuug" data-nick="jhthorsen" data-start-time="1397035814.5320599" data-end-time="1397037930.6466999">

Cannot close chat tab if not connected to server

I joined an irc server, opened #somechannel and later quit the server, but the tab stayed. When I go to that tab and enter /close #somechannel or /close nothing happens. It would seem that I have to rejoin the irc server in order to close the tab?

/me result in ACTION

When I write "/me does stuff" on demo.convos.by, it output "ACTION does stuff".

Add support for plugins and add "karma plugin" for proof of concept

We should be able to add plugins to Convos that can extend with functionality such as karma: nick++, nick--

I guess this require more Mojo::EventEmitter code. One idea could be that Convos::Core is loading a list of plugins and each plugin can register events such as "connection_add", "connection_remove", ...

Sanitize input

For example:

  • entering irc.freenode.com produces non working url (/%20irc.freenode.com). You also can't delete server.

Fail to remove messageFailed() element when ws connection is restored

What happens:

  1. I try to send a message
  2. The connection drops
  3. The messageFailed() message appear, since I did not get a response from the server
  4. The messageFailed() element is not removed when ws connection is established
  5. But the message is stored in redis and sent to IRC server

This should be fixed by replaying server messages from when the connection was dropped on websocket reconnect.

This was once implemented, but now broken.

Inability to connect to IPv6 servers

When attempting to add a server using an IPv6 address, "Invalid server name" is returned. If attempting to use a domain mapped to an IPv6 address, "Bad Hostname" is returned as the error.

Remove convos.conf

We want to skip using the config file. The plan is to move the parameters to %ENV or redis:

  • name: Should be set by the first user that register See #99
  • redis: Default to redis://127.0.0.1:6379/1, but use %ENV if possible. The keys should match the default keys on heroku and dotcloud. #47
  • secret: We should generate the secrets and store them in Redis #47
  • invite_code: Should be set by the first user that register #84
  • hypnotoad: Add support for MOJO_LISTEN, #100
  • backend - embedded: $ENV{CONVOS_BACKEND_EMBEDDED} // 1

Compress::Raw::Zlib not found

I found this missing dependency (Compress::Raw::Zlib) that caused the following output:

./vendor/bin/carton exec hypnotoad script/convos
Can't locate Compress/Raw/Zlib.pm in @INC (@INC contains: /usr/local/bin/../lib /home/convos/convos/local/lib/perl5 /usr/local/lib/perl5 /usr/local/share/perl5 /usr/lib/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib/perl5 /usr/share/perl5 .) at /usr/local/share/perl5/Mojo/Content.pm line 5.

obviously this could be easily solved installing the required dependency but I don't know if this dependency should be added to the cpanfile.
I am also enclosing the perl -v, perl -V output. My OS is a Centos 6.5 fresh installed.

perl -v

This is perl, v5.10.1 (*) built for i386-linux-thread-multi
 perl -V
Summary of my perl5 (revision 5 version 10 subversion 1) configuration:

  Platform:
    osname=linux, osvers=2.6.32-220.el6.x86_64, archname=i386-linux-thread-multi
    uname='linux c6b8.bsys.dev.centos.org 2.6.32-220.el6.x86_64 #1 smp tue dec 6 19:48:22 gmt 2011 i686 i686 i386 gnulinux '
    config_args='-des -Doptimize=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -DDEBUGGING=-g -Dversion=5.10.1 -Dmyhostname=localhost -Dperladmin=root@localhost -Dcc=gcc -Dcf_by=Red Hat, Inc. -Dprefix=/usr -Dvendorprefix=/usr -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl5 -Dsitearch=/usr/local/lib/perl5 -Dprivlib=/usr/share/perl5 -Darchlib=/usr/lib/perl5 -Dvendorlib=/usr/share/perl5/vendor_perl -Dvendorarch=/usr/lib/perl5/vendor_perl -Dinc_version_list=5.10.0 -Darchname=i386-linux-thread-multi -Duseshrplib -Dusethreads -Duseithreads -Duselargefiles -Dd_dosuid -Dd_semctl_semun -Di_db -Ui_ndbm -Di_gdbm -Di_shadow -Di_syslog -Dman3ext=3pm -Duseperlio -Dinstallusrbinperl=n -Ubincompat5005 -Uversiononly -Dpager=/usr/bin/less -isr -Dd_gethostent_r_proto -Ud_endhostent_r_proto -Ud_sethostent_r_proto -Ud_endprotoent_r_proto -Ud_setprotoent_r_proto -Ud_endservent_r_proto -Ud_setservent_r_proto -Dscriptdir=/usr/bin -Dusesitecustomize'
    hint=recommended, useposix=true, d_sigaction=define
    useithreads=define, usemultiplicity=define
    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
    use64bitint=undef, use64bitall=undef, uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='gcc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
    optimize='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables',
    cppflags='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include'
    ccversion='', gccversion='4.4.7 20120313 (Red Hat 4.4.7-4)', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=4, prototype=define
  Linker and Libraries:
    ld='gcc', ldflags =' -fstack-protector -L/usr/local/lib'
    libpth=/usr/local/lib /lib /usr/lib
    libs=-lresolv -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc
    perllibs=-lresolv -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
    libc=/lib/libc-2.12.so, so=so, useshrplib=true, libperl=libperl.so
    gnulibc_version='2.12'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E -Wl,-rpath,/usr/lib/perl5/CORE'
    cccdlflags='-fPIC', lddlflags='-shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -L/usr/local/lib'


Characteristics of this binary (from libperl): 
  Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV
                        PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP USE_ITHREADS
                        USE_LARGE_FILES USE_PERLIO USE_REENTRANT_API
                        USE_SITECUSTOMIZE
  Built under linux
  Compiled at Nov 22 2013 18:15:19
  @INC:
    /usr/local/lib/perl5
    /usr/local/share/perl5
    /usr/lib/perl5/vendor_perl
    /usr/share/perl5/vendor_perl
    /usr/lib/perl5
    /usr/share/perl5
    .

A Guide for Heroku Deployment

Hi,

It would be awesome if there was some guide to walk users through on how to deploy Convos to Heroku/DotCloud.

Thanks!

Kiosk mode

I would like to have a restricted version of Convos, which only lets you log in and join a channel, without settings or persistence. For running a demo mode and embedding in company pages.

Improve link handling

We need better link handling:

  • (http://convos.by) - We currently think that ")" is part of the link
  • Would be nice if links in "/title" output was clickable
  • Would be nice if links in "/whois" output was clickable

key is forgotten.

You can join a channel with +k with /join #channel key
but key isn't saved, so if the server reconnect it will not rejoin #channel.

Setting avatar email does not seem to do anything

In the /settings page: If I set the "Avatar" field to one of my gravatar email addresses and press "Update", the Avatar field is cleared, and no sign is given of success or failure of the operation.

Errror in the logs from production.

Use of uninitialized value $method in pattern match (m//) at /home/wirc/convos/local/lib/perl5/Mojo/IRC.pm line 771.
Use of uninitialized value $method in concatenation (.) or string at /home/wirc/convos/local/lib/perl5/Mojo/IRC.pm line 772.
Mojo::Reactor::EV: Timer 882b7a57227b484b9476d43c4ff11d80 failed: Mojo::IOLoop::Delay: Can't call method "req" on an undefined value at /home/wirc/convos/local/lib/perl5/Mojolicious/Controller.pm line 261.
256:   }
257:   $self->tx->resume;
258:   return $self;
259: }
260:
261: sub req { shift->tx->req }
262: sub res { shift->tx->res }
263:
264: sub respond_to {
265:   my $self = shift;
266:   my $args = ref $_[0] ? $_[0] : {@_};

Basically impossible to track down I guess, but seems like we're overreleasing something?

convos on OpenShift

Hi, I really enjoyed your project and I was trying to install it on OpenShift, from Red Hat.

I was able to create an app using perl-5.10 and redis (from a community cartridge), and I had to place the module Mojolicious::Plugin::AssetPack::Preprocessors in deplist.txt

The problem I'm having is this, just after starting the server:

==> perl/logs/error_log-20131212-000000-EST <==
[Thu Dec 12 09:43:53 2013] [notice] SELinux policy enabled; httpd running as context unconfined_u:system_r:openshift_t:s0:c2,c347
[Thu Dec 12 09:43:53 2013] [notice] Digest: generating secret for digest authentication ...
[Thu Dec 12 09:43:53 2013] [notice] Digest: done
[Thu Dec 12 09:43:53 2013] [notice] Apache/2.2.22 (Unix) mod_perl/2.0.4 Perl/v5.10.1 configured -- resuming normal operations
[Thu Dec 12 09:45:34 2013] [debug] Reading config file "/var/lib/openshift/52a9bbd84382ec64230003a8/app-root/runtime/repo/perl/convos.conf".

[Thu Dec 12 09:45:34 2013] [error] [client 127.4.171.1] Error while loading /var/lib/openshift/52a9bbd84382ec64230003a8/app-root/runtime/repo/perl/script/convos: AssetPack missing preprocessors:\n- /var/lib/openshift/52a9bbd84382ec64230003a8/app-root/runtime/repo/perl/public/sass/main.scss\n

[Thu Dec 12 09:48:40 2013] [notice] SELinux policy enabled; httpd running as context unconfined_u:system_r:openshift_t:s0:c2,c347
[Thu Dec 12 09:48:40 2013] [notice] Digest: generating secret for digest authentication ...
[Thu Dec 12 09:48:40 2013] [notice] Digest: done
[Thu Dec 12 09:48:41 2013] [notice] Apache/2.2.22 (Unix) mod_perl/2.0.4 Perl/v5.10.1 configured -- resuming normal operations

The server is telling that the file 'main.scss' can't be found. As you can notice the app resides on the path ''/var/lib/openshift/52a9bbd84382ec64230003a8/app-root/runtime/repo/perl" So I opened the convos.pm file and edited the line 198:

$self->asset('convos.css', '/sass/main.scss');

to

$self->asset('convos.css', '/var/lib/openshift/52a9bbd84382ec64230003a8/app-root/runtime/repo/perl/public/sass/main.scss');

but I still get the same error and the following message when the page is loaded:

==> perl/logs/error_log-20131212-000000-EST <==
[Thu Dec 12 09:49:46 2013] [debug] Reading config file "/var/lib/openshift/52a9bbd84382ec64230003a8/app-root/runtime/repo/perl/convos.conf".
[Thu Dec 12 09:49:46 2013] [error] [client 127.4.171.1] Error while loading /var/lib/openshift/52a9bbd84382ec64230003a8/app-root/runtime/repo/perl/script/convos: AssetPack missing preprocessors:\n- /var/lib/openshift/52a9bbd84382ec64230003a8/app-root/runtime/repo/perl/public/sass/main.scss\n

Any clue on how to resolve this?

If this can be resolved, I'm planning to post on my blog a 'how-to' on convos deployment on OpenShift.

Cheers from a fellow monger.
Felipe Leprevost

Convos with non-/ root URL

I'm trying to use Convos at a non '/' URL without much success. I've tried a couple of the recipes suggested in the Mojolicious guides without much luck - URL's do not get properly constructed and you end up at a 404 page.

Is there any chance this could be a supported configuration?

I would find it very useful - I have several web apps hosted behind a single domain name, each with their own path:

https://secure.host.com/webapp1/
https://secure.host.com/webapp2/
https://secure.host.com/webapp3/

These are all reverse-proxy'd by Apache.

Make a fork that use Mandel instead of Mojo::Redis as backend

Want to store the data in Mongodb instead of Redis. Can't really remember why, but we have a lot of structured data, which would probably be good to save in MongoDB.

I would also like to change the structure of how to store conversations:

{
  "message":"too cool!",
  "nick":"batman",
  "participants":[@user_id],
  "target":"#mojo",
  "timestamp": $not_sure,
  ...
}

The new thing here is "participants". That way we can keep the same stream of messages, but each convos user that is in the conversation at the given timestamp, will be in the "participants" list. That way it can be possible to open up conversations to people who was not there at the beginning.

Idea:
It would be super cool if Mandel had a redis backend, but I'm not quite sure how to do that. (yet)

Want to create (private) gist when pasting multiline text

It would be cool if a gist was created on multiline paste, and an URL was posted to the chat instead of multi line text. We might also create a "write code" mode which opens a multiline editor inside convos where the code is posted to gist.github.com.

I want to...

  1. Create anon gist if user is not connected to github
  2. Create a gist owned by the user if connected to github.
  3. Make the gist private by default.

See also #89 for connecting to github and https://developer.github.com/v3/gists/

Settle on a license

I changed the license to "Artistic License version 2.0" now (same as Mojolicious). I have no special reason why I chose that license, but we need some sort of COPYRIGHT AND LICENSE section.

d5242bd

Which do you prefer @marcusramberg ? I think I'm up for any kind...

Вlank screen

Screenshot: http://dimlife.com/ia5d5.png

Errors in console:
Use of uninitialized value $[1] in string ne at /home/dim/test/convos-release/script/../lib/Convos/Core/Connection.pm line 194.
Use of uninitialized value $
[1] in join or string at /home/dim//test/convos-release/local/lib/perl5/Mojo/IRC.pm line 546.
[Wed Dec 25 04:39:04 2013] [warn] [DiM:192.168.1.3] DiM No nickname given

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.