Metadata-Version: 2.4
Name: ChaTerminal
Version: 2.0.2
Summary: A terminal-based encrypted chat system for MemerDevs
Home-page: https://github.com/Gofaone315/ChaTerminal
Author: Gofaone Tlalang
Author-email: gofaone315@memerdevs.com
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Environment :: Console
Classifier: Topic :: Communications :: Chat
Classifier: Topic :: Security :: Cryptography
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: colorama
Requires-Dist: pyfiglet
Requires-Dist: pyreadline3; platform_system == "windows"
Requires-Dist: requests
Requires-Dist: cryptography
Requires-Dist: rich
Requires-Dist: prompt_toolkit
Requires-Dist: keyring
Requires-Dist: websocket-client
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license-file
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# ChaTerminal

**ChaTerminal** is the official terminal chat client for [MemerDevs](https://memerdevs.com). It lets you send end-to-end encrypted direct messages to other MemerDevs users from your terminal.

![Python](https://img.shields.io/badge/Python-3.10+-blue.svg)
![License](https://img.shields.io/github/license/Gofaone315/ChaTerminal)
![Platform](https://img.shields.io/badge/Platform-Terminal-informational)
![Version](https://img.shields.io/badge/Version-2.0.2-brightgreen)

---

## Features

- End-to-end encrypted direct messages
- Real-time messages when both users are online
- Offline message sync when a linked recipient comes back online
- Recent chat history on startup
- Online user list for users who choose to show terminal presence
- One active terminal session per MemerDevs account
- Web settings for privacy, linking, and session revocation

---

## Installation

ChaTerminal requires **Python 3.10 or later**.

Install it with pip:

```bash
pip install ChaTerminal
```

To update an existing install:

```bash
pip install --upgrade ChaTerminal
```

---

## Quick Start

### 1. Run ChaTerminal

Open your terminal and run:

```bash
ChaTerminal
```

If this is your first time using ChaTerminal, or if your session was revoked, the app will show an activation code.

Example:

```text
ChaTerminal - Link Account

1. Open MemerDevs in your browser
2. Go to Settings -> ChaTerminal
3. Enter the activation code

Activation code: A1B2C3D4

Waiting for authorisation 04:59
```

Activation codes expire after a few minutes. If the timer runs out, restart ChaTerminal to get a new code.

### 2. Link Your MemerDevs Account

1. Go to [memerdevs.com/settings](https://memerdevs.com/settings).
2. Scroll to the **ChaTerminal** section.
3. Enter the activation code shown in your terminal.
4. Click **Link Terminal**.

Keep ChaTerminal open while you do this. Once linking succeeds, the terminal will continue automatically.

### 3. Start Chatting

After linking, ChaTerminal shows your recent message history and opens a prompt:

```text
>
```

Type a command and press **Enter**.

---

## Commands

| Command | What it does |
| --- | --- |
| `/dm <username> <message>` | Send a private message |
| `/list` | Show currently online ChaTerminal users |
| `/help` | Show available commands |
| `/exit` | Disconnect and close ChaTerminal |

Examples:

```text
> /dm gofaone315 Hey, are you online?
```

```text
> /list
```

---

## Usernames

Use the MemerDevs username slug from a profile URL.

For example, if the profile URL is:

```text
https://memerdevs.com/u/johndoe
```

Send a message with:

```text
> /dm johndoe Hello from ChaTerminal
```

---

## Privacy And Sessions

You can manage ChaTerminal from [MemerDevs Settings](https://memerdevs.com/settings).

In the **ChaTerminal** section, you can:

- Link a terminal session
- Revoke your active terminal session
- Choose who can message you
- Show or hide your terminal online status

If you hide your online status, you will not appear in other users' `/list` results.

ChaTerminal allows one active terminal session per account. If you link or start ChaTerminal on another device, the previous terminal session will be signed out.

---

## Message Delivery

Messages are encrypted before they leave your machine.

When both users are online, messages are delivered in real time. If the recipient has a linked ChaTerminal session but is offline, the message is delivered when they reconnect.

If a user has not linked ChaTerminal, or their terminal session was revoked, you may see a message saying that they do not have an active terminal session.

---

## Troubleshooting

### The activation code expired

Restart ChaTerminal and enter the new code in MemerDevs Settings.

### The activation code is not accepted

Make sure you entered all 8 characters exactly as shown. If it still fails, restart ChaTerminal and use the new code.

### I was signed out

This can happen if:

- You revoked the session from MemerDevs Settings
- You linked ChaTerminal on another device
- Your MemerDevs session expired

Run `ChaTerminal` again and link your account if prompted.

### I cannot message someone

The other user may not have linked ChaTerminal, may have revoked their terminal session, or may only allow messages from followers.

### `/list` does not show someone

They may be offline, or they may have disabled terminal online status in MemerDevs Settings.

---

## License

This project is proprietary. See `LICENSE` for more info.

## Author

**Gofaone Tlalang**  
GitHub: [@Gofaone315](https://github.com/Gofaone315)

---

**ChaTerminal** - real-time end-to-end encrypted chat from your terminal.
