Jelly 🪼: The friendly Shell for RIOT OS

Jelly is a tool that allows you to send commands to an attached device. The commands are send via slipmux and can be either plain text or CoAP based. A device is typically connected via a serial (e.g. /dev/ttyUSB0) but Jelly also supports connecting via a unix socket, as long as the device speaks slipmux.

Hotkeys:
    Mousewheel: Scroll up and down.
    F1: Presents an overview, showing diagnostic messages next to the configuration messages.
    F2: Shows only the diagnostic messages.
    F3: Shows only the configuration messages.
    F4: Shows only the executed Host commands.
    F5: This help :)
    ESC: Quit Jelly.
    RET: Send a command.
    TAB: Autocomplete.
    UP: Go back in command history.
    DOWN: Go forward in command history.
    LEFT: Move input cursor to the left.
    RIGHT: Move input cursor to the right.
    BACKSPACE: Delete a character left of the cursor.

You can always type a command into the `User Input` field. You do not need to select it. When autocomplete is available, indicated by a light gray text in front of your cursor, press TAB to complete your input.

# Command classes / types
There are multiple classes of commands: 
- Raw diagnostic commands
    These are written in all lowercase and are send as is to the device.

- CoAP endpoints
    Indicated by the leading `/`, send a CoAP GET request via a configuration message to its path. 
    The response, if any, will be logged in the configuration view. 
    Most endpoints are auto-discovered by Jelly but you can always send a GET request to any endpoint as long as it starts with `/`.

- Host commands
    Distinguishable by the leading uppercase letter, are commands that are run mainly on your host and only communicate with the device via configuration messages. Every Jelly command offers usage information and help via the `--help` flag. These commands can issue multiple CoAP requests and may take time to complete. They render their own output into the diagnostic view and should look & feel close to the raw commands.

- If you type in something that is not recognized by Jelly, it will be send as a raw string via a diagnostic message to the device.

# Saving command output
If you run a Host command, you can redirect the output into a file on your local filesystem.
`Saul > /tmp/saul.txt`
Some commands may allow exporting binary data. To export that use the `%>` redirect.
`Saul %> /tmp/saul.cbor`
If a command doesn't offer binary export, the `%>` will automatically downgrade to text export.

