Help

Miaou Help

About

Miaou is an open-source multi-room persisted chat server.

Miaou is open : you can create your own rooms, be them public or private.

Writing Messages

You send a message by typing in the text area at the bottom of the screen and then hitting .

When you want to start a new line without immediately sending your message, hit ctrl or alt or .

Miaou uses a specific flavour of Markdown in order to allow a better formatting without being too flashy or distracting. The following sections mostly detail that syntax and the related shortcuts.

Italic and Bold

You can set some text in italic or in bold by writing it between stars or double stars.

*This sentence is in italic.* Not this one. **This one is in bold.**

would appear as

This sentence is in italic. Not this one. This one is in bold.

But you don't have to write the stars yourself, you can select some text and hit ctrlI or ctrlB.

Citations

A citation appears like this :

this is a citation

You can write the markdown yourself :

> this is a citation

Or you can select some text and hit ctrlQ.

If you want to set just one line in citation, you can put your cursor in the line before hitting ctrlQ without selecting the whole line.

Links

When you paste an URL, it appears in the code as you'd expect :

If you want to give a specific label, as in

then you may use this Markdown syntax :

link : [How to do links](http://miaou.dystroy.org/help#Links)

Images

If the URL of an image is the only thing you have in one line of your message, then the image is boxed. For example the message

http://dystroy.org/re7210/img/tartines-saint-jacques-850-02.jpg

is rendered as

If the image you want to display isn't available on internet but is on your computer, hit the Upload button. You'll then be presented a file selection dialog. The chosen image will be uploaded to imgur and inserted in your message.

On Chrome, you may also directly paste an image from the clipboard to the input area.

Code

Code can be inlined in the text :

You can use Array.apply(0,Array(N)).map(Math.random) to generate an array of N random numbers.

This is done using backtick quotes :

You can use `Array.apply(0,Array(N)).map(Math.random)` to generate an array of N random numbers.

You can also have whole blocks of code :

Here's a fast replacement for jQuery's old toggle function :
$.fn.toggleFuncs = function() {
var functions = Array.prototype.slice.call(arguments);
var _this = this.click(function(){
var i = _this.data('func_count') || 0;
functions[i%functions.length].call(_this);
_this.data('func_count', i+1);
});
}

To do that, indent the whole block of code with four spaces or a tabulation :

Here's a fast replacement for jQuery's old `toggle` function :
$.fn.toggleFuncs = function() { var functions = Array.prototype.slice.call(arguments); var _this = this.click(function(){ var i = _this.data('func_count') || 0; functions[i%functions.length].call(_this); _this.data('func_count', i+1); }); }

You don't have to manually put the backtick quotes or the tabulations : you may also use ctrlK.

When you hit ctrlK just after having pasted some code, you don't have to select it, it will automatically apply to the pasted text.

When the cursor is in a block of code, a menu appears and let you choose the coding language, which will be used for syntactic coloration.

Ping and reply

You can alert another user by typing an arobase followed by her username in a message, as in

Hello @dystroy !

If the user checked the "Be notified on ping" checkbox, she'll see a silent notification.

By hovering the name of a user in the list at the left, you reveal a ping button which inserts the related ping in the message area.

If you choose to type the name instead of using the button, it's autocompleted. Hit the tab and esc keys to navigate through proposals. Users having been seen recently in the room are listed first but you can also ping somebody who never came to the room, she will get an invitation to join it.

By hovering the message of another user, you reveal a reply button. Replying inserts a specific type of ping, including a link to that message.

But the easiest way to reply to a message is usually to select it with an arrow button while holding the ctrl key down.

Content Automatic Boxing

Some links are automatically rendered in Miaou messages:

  • links to wikipedia pages are rendered as abstracts with links
  • links to many Stack Exchange sites (including Stack Overflow) are rendered in place
  • links to YouTube videos are replaced with a player
  • links to images

Other Formatting Features

The special formatting of Miaou messages allow other features. Some of them are even introduced by plugins.

Some examples:

  • tables (like the one you get if you type the !!stats rooms command)
  • lists
  • graphs

The best to discover them is usually to ask other users.

Keyboard Shortcuts

sends the message
altinserts a new line
inserts a new line
ctrlinserts a new line
ctrlIsets the selection in italic
ctrlBsets the selection in bold
ctrlQconverts the selection or the just pasted text to citation
ctrlKconverts the selection or the just pasted text to code (extend it to whole lines if there's a new line inside)
ctrlLmakes a link from the selected text
lets you edit your previous message, if it's not too old. Use to get back
ctrlselects a message to reply to
tabnavigates through autocompletion proposals
escgets you out of an autocompletion proposal, or out of a message editing
ctrlspaceopens the rooms panel

Most often, the effect of a shorctut is reversed by redoing it. Some actions like replying or editing can be cancelled with the esc key

Actions on messages

By hovering a message you reveal its date and a few buttons buttons allowing various actions.

Votes

There are 4 vote buttons :

Those buttons let you express an appreciation or ensure the visibility of important messages.

Downvoting means that you disagree with or don't appreciate the message.
Upvoting lets you show your appreciation or your agreement.
Starring a message gives it some visibility for a limited time.
Pinning a message ensure its visibility in a much greater way than a star. Only room admins can do that.

Permanent links

By right-clicking thebutton, you can copy a permanent link to the message.

Floating messages

Thebutton lets you float a message in a window over the rest of the interface. Such a floating message isn't scrolled away when there's more messages coming in the chat, which is especially convenient for video or game messages. A floating message can be reduced to one of the four sides of the chat window. If the message is edited or changed, the reduced tab will take a yellow or red border.

Editing

To edit one of your recent messages, simply hover it to reveal the edit button, change it, and then resubmit it. It will appear with theicon to everybody.

Instead of going for the button, you can also use the arrow key to edit your last message.

Messages marked withicon can be edited by anybody. Those messages are "white boards" and are created by starting a message with!!whiteboard

Rooms

Any user can create a new room, by clicking the relevant link on the home page. By creating a room you become its owner. You can then nominate admins or even owners.

A room is either

For both types of room, authorization levels can be managed using the Authorizations button.

A room can also be made "not listed" to prevent it to appear listed to people who don't have access to it.

If you want to invite in your room a user who's already connected and in another room, the simplest solution is to ping her by typing @hisusername.

If the room is private and you're one of the admins, then you may type !!summon @hisusername: not only will the user be invited but you'll also have a dialog offering you to grant that user the right to enter, with the opportunity to see her profile.

If you want to invite somebody's who's not connected or maybe not even a user, simply give her the URL of the room.

When a user wants to enter a private room before he has the right, she's offered the opportunity to request access. Users in the room see the requests and the room admins may accept or deny the request.

Dialog Rooms

When you hover the name of a user in the left column of the window, you see a PM button. This button lets you enter a special room created for you and the other user and in which you can discuss privately.

You'll be able to get back to this room later, either by using the same PM button or by looking in the Dialog Rooms tab of Miaou's home page.

Commands

Some commands can be issued by typing their name after !!. They have various effects. To get the complete list, type!!help

Here are some examples of commands :

!!afk and !!back

Those commands are used to notify connected users in all the rooms you're in (including the ones you watch) that you're leaving ("away from keyboard") or that you're back. You may add a few words.

!!pm

Use !!pm @someotheruser to start discussing privately with another user.

!!wiki

adds to your message an abstract of the wikipedia.org page in the language of the room. For example :

!!wiki Albert Einstein

Note that you may also directly insert in a message a link to a wikipedia page (in the language of your choice).

!!whiteboard

This lets you make a message that anybody can edit.

!!tribo

!!tribo @someuser lets you start a game of Tribo. Just try it.

!!video

You may launch a video chat with another connected user. Simply type

!!video @somebody

Note that both the command (video) and the user name (somebody) are autocompleted as you type (hit tab to navigate through proposals).

If you don't want to see or being seen, you may launch a simple audio chat using

!!audio @somebody

In both case, no plugin is needed in the browser, it also works on most mobile phones.

Some enterprise proxies block streaming. In that case you'll only see a black rectangle instead of the other chatter.

Miaou Development

Technical Stack

Miaou is mostly coded in JavaScript. Stuff includes Node.js with express, PostgreSQL, OAuth2, socket.io, WebRTC, Bluebird, Pug, Passport.js, jQuery, sass/scss, Redis, hu.js, Jest, Gulp, and nginx.

Contribute

Miaou has a clean and organized source code and should remain so. You may easily dive into the code which is shared on GitHub : Canop/miaou. If you'd like to help, contact @dystroy in the Miaou chat room.

Plugins

Miaou accepts server-side plugins. If you want to contribute a new feature, it probably should be done as a plugin, especially if it doesn't feel like a core feature.

Use the software on your server

You can, of course, it's open-source for a reason. See the installation documentation. Miaou also provides a vagrant configuration to help you quickly set up a development environment. It is based on puppet, so you can as well reuse it.