Metadata-Version: 2.4
Name: sermo
Version: 0.7.0
Summary: Command-line client for Sermo 言浪
Author: Sermo
Project-URL: Homepage, https://sermo.jyonn.space
Keywords: sermo,chat,cli
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: End Users/Desktop
Classifier: Natural Language :: Chinese (Simplified)
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Communications :: Chat
Requires-Python: >=3.10
Description-Content-Type: text/markdown

# Sermo 言浪 CLI

Sermo 言浪的命令行客户端。它直接接入 `sermo-backend` API，适合在终端里快速查看会话、发送文字消息和检查好友信息。

当前版本覆盖日常终端使用：

- 支持进入空间并保存登录状态。
- 支持查看当前账户、空间成员、聊天列表、好友列表、好友申请。
- 支持查看聊天记录、发送文字消息、持续刷新新消息、监听全局新消息。
- 默认提供不清屏的局部窗口选择器，会话、好友、成员和申请列表只展示光标附近 5 项。
- 保留 `sermo tui` 全屏终端聊天界面，会话列表、消息流和输入框集中展示。
- 支持好友申请处理、好友邀请链接、私聊打开、群聊创建和成员管理。
- 支持账号资料、联系方式绑定、通知偏好、空间创建和管理员基础操作。
- 图片、视频、语音、文件等多媒体消息在终端中展示为 `[图片]`、`[视频]`、`[语音]`、`[文件]`；也支持上传发送图片、视频和语音文件。
- 暂不展示头像。

## 安装

开发环境下可以直接运行：

```bash
python -m sermo_cli --help
```

也可以安装为本地命令：

```bash
pip install -e .
sermo --help
```

从 PyPI 安装：

```bash
pip install sermo
sermo --help
```

## API 地址

默认 API 地址是：

```text
https://api.sermo.jyonn.space
```

可以用环境变量或参数覆盖：

```bash
SERMO_API_BASE=http://localhost:8000 python -m sermo_cli chats
python -m sermo_cli --api http://localhost:8000 chats
```

## 常用命令

登录 / 进入空间：

```bash
sermo login --space yuanmeng --name 软糖大啾咪
```

如果昵称需要访问密码，CLI 会自动提示输入密码。

查看当前账户：

```bash
sermo me
```

查看聊天列表：

```bash
sermo chats
```

终端中会显示光标附近 5 个会话。使用 `↑/↓` 选择、`Enter` 打开、`Esc` 返回；也支持 `j/k` 和 `Ctrl+N/Ctrl+P`。

直接输出完整列表，适合管道和脚本：

```bash
sermo chats --list
```

调整局部窗口行数：

```bash
sermo chats --window 7
```

打开 TUI：

```bash
sermo tui
```

在 TUI 里：

- `Tab/Shift+Tab` 在会话、消息和输入框之间切换焦点。
- 会话焦点下使用 `↑/↓` 或 `j/k` 切换会话。
- 消息焦点下使用 `↑/↓` 滚动，`PageUp/PageDown` 翻页，滑到顶部自动加载历史。
- 查看历史时不会强制跳到底部；标题会提示新消息数量，`End` 回到最新消息。
- 输入框支持左右移动、`Home/End`、退格与 Delete，并按会话保存草稿。
- 发送消息会立即展示“发送中”；失败后保留消息，在消息焦点按 `r` 重试。
- `Enter` 发送，`F5` 手动刷新，`Ctrl+U` 清空输入。
- `Esc` 或 `F10` 退出。

会话焦点还支持：

- `/` 按会话名称或最后一条消息搜索。
- `u` 只看未读会话，`x` 清除全部筛选。
- `i` 查看当前会话资料。
- 连续五分钟内同一用户的消息自动合并显示昵称与时间。
- 终端宽度不足 86 列时自动切换为单栏布局。

消息与输入增强：

- `Ctrl+K` 打开可搜索的命令面板。
- 消息焦点按 `v` 进入选择模式，使用 `↑/↓` 选择消息。
- 选择消息后按 `q` 引用、`c` 复制、`d` 删除，删除前会二次确认。
- 引用摘要会显示在输入框上方，按 `Esc` 取消引用。
- 输入框按 `Ctrl+O` 插入换行，最多展示 4 行；`Enter` 仍用于发送。

打开聊天：

```bash
sermo chat 1
```

在聊天界面里：

- 直接输入文字并回车即可发送。
- 输入 `/refresh` 刷新新消息。
- 输入 `/quit` 退出。

只发送一条消息：

```bash
sermo send 1 你好
```

持续刷新聊天：

```bash
sermo chat 1 --follow
```

查看好友：

```bash
sermo friends
```

好友、空间成员、好友申请和群聊邀请使用同一套局部窗口交互：

```bash
sermo friends
sermo users
sermo requests
sermo group invites
```

这些命令也都支持 `--list` 和 `--window`。

查看好友申请：

```bash
sermo requests
```

接受/忽略好友申请：

```bash
sermo friend accept <user_id_or_name>
sermo friend ignore <user_id_or_name>
```

打开私聊：

```bash
sermo direct <user_id_or_name> --open
```

监听所有新消息：

```bash
sermo watch
```

加载更早消息：

```bash
sermo chat 1 --before <message_id>
```

群聊：

```bash
sermo group create 12 34 --title 周末计划
sermo group add 1 56
sermo group rename 1 新群名
sermo group leave 1
```

发送媒体消息：

```bash
sermo message media 1 ./photo.jpg
sermo message media 1 ./voice.m4a --kind audio --duration 8
```

好友邀请链接：

```bash
sermo invite token --permanent
sermo invite redeem <token>
```

账号与通知：

```bash
sermo account password
sermo account name 新昵称
sermo account welcome "欢迎来找我聊天"
sermo contact code email you@example.com
sermo contact bind email you@example.com 123456
sermo notify list
sermo notify set bark --enabled on --threshold 1 --hide-content on
```

空间与管理员：

```bash
sermo space email-code --slug yuanmeng
sermo space admin-login --space yuanmeng --email admin@example.com --code 123456
sermo admin dashboard
sermo admin users
sermo admin settings --square off --member-limit 100
sermo admin official-ticket
```

退出：

```bash
sermo logout
```

## 登录状态

登录状态默认保存到：

```text
~/.sermo-cli/config.json
```

可以用 `SERMO_CLI_CONFIG` 指定其他路径，便于测试或多账号切换。
