Coder Social home page Coder Social logo

chatterbox's Introduction

  1. Install go, TOR, dename and get an account.

  2. Download, compile, install

     go get -u github.com/andres-erbsen/chatterbox/{chatterboxd,chatterbox-init,chatterbox-create,chatterbox-qt}
    
  3. Create an account:

     chatterbox-init  -dename=${DENAME_USER}
    
  4. Start the daemon

     chatterboxd ${INIT_DIR}
    
  5. Run the qt UI

     # Install QT packages -- these are the packages for Arch
     pacman -S qt5-base qt5-connectivity qt5-declarative qt5-enginio qt5-graphicaleffects qt5-imageformats qt5-location qt5-multimedia qt5-quick1 qt5-quickcontrols qt5-script qt5-sensors qt5-serialport qt5-svg qt5-tools qt5-translations qt5-wayland qt5-webchannel qt5-webengine qt5-webkit qt5-websockets qt5-x11extras qt5-xmlpatterns
    
     chatterbox-qt -root=${INIT_DIR}
    

chatterbox's People

Contributors

alokat avatar andres-erbsen avatar asya-bergal avatar davidgilkaufman avatar jadephilipoom avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

chatterbox's Issues

Remove time/date information

The receiver of the message has no way to verify any information about when it was written or sent. As a goal of chatterbox is to avoid display incorrect information, the times need to go. The bundled dename lookups will still have timestamp, but it will not be displayed anywhere and used for any other purpose.

This will involve changing the filesystem layout again. We can either use the time when a message was received (which will mean many messages will have the same timestamp after the recipient comes online) or maybe a couple of words from the message.

highlight new messages + libnotify + notification sound

  • highlight new messages from when they arrive until k seconds after the chat window is focused
  • send notifications of these messages using libnotify
  • make a sound on received message + ui settings for changing/muting it or not playing it at all if the window is focused (or maybe punt this? it might be possible to make libnotify handle the sound)

daemon: common interface for server connections

Regardless of whether we are expecting push notifications or not.

This should be something like

type ServerConn interface {
Send(message) error
Receive() (message, error)
}

The lack of this has already caused multiple bugs and spent wasted several hours of dev time

Unified GUI + daemon executable

for users that want to start a single thing, like with pidgin. This should probably not replace any of the previous -- the gui should either have a flag or be a library that is called from two executables.

Figure out software distribution

We definitely want to have binaries for every reasonable platform we support. We want an automated way of building them (andres will take care of signing stuff). Ideally we want reproducible builds (which is trivial for pure go, but not for QML bindings). We definitely don't want go get that automatically falls back to unauthenticated connections.

Error handling overhaul

Current error handling errs on the side of safety, but it errs way too much. Keeping chatterbox running during network connectivity issues should not be worse than starting it after the issues are over. Nothing should ever get stuck (and do so without losing messages).

Undo setup on failure (or otherwise make it ok to run chatterbox-init again)

I ran chatterbox-init without starting tor --> error part way through. After starting tor it gives "2015/03/13 14:38:11 mkdir /home/david/.chatterbox/david/.daemon: file exists". Either that file should have been deleted or some flag should have been set for "failed init" (which would have the benefit of making it possible to debug anything that went wrong during init)

Optimize setup experience

The hoops that a new user has to jump to directly limit adoption. For every single step (including dename setup steps), we should consider whether we actually need it, and whether it could be merged with some other step or completely automated. We will probably need a complete list of the actual steps first...

figure out message ordering

currently, I put the fuzzy timestampe into the first 8 bytes of the message hash on the server, but this broke deletion. We probably want a separate index structure on the server...

settings menu

some way to edit all your protoc conf files from chatterbox-qt

Latency analysis

It currently takes about one second to get a message across if using TOR and a slow network. Improving this would make the user experience a lot better, and some of the latency is probably easily avoidable. It would be good to know what actually takes time.

resizeable message box

it's a pretty good size for chatting with someone, but ideally chatterbox replaces email too and it's kind of a small space to type an email in

  • make the box resizable
  • (later) make the box auto-resize within the range [min_size, max_auto_size](max_auto_size = some percent of the screen?)

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.