ciphermesh 2.3.0 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -4
- package/README.pt-BR.md +18 -4
- package/package.json +1 -1
- package/src/client/ChatController.js +335 -29
- package/src/client/Connection.js +31 -1
- package/src/client/FileTransfer.js +53 -24
- package/src/client/UI.js +277 -19
- package/src/crypto/CertPinStore.js +39 -3
- package/src/p2p/P2PChatController.js +764 -21
- package/src/p2p/index.js +12 -0
- package/src/protocol/validators.js +10 -1
- package/src/shared/dnd.js +13 -0
- package/src/shared/doctor.js +225 -0
package/README.md
CHANGED
|
@@ -95,6 +95,12 @@ Prefer a prebuilt image? Pull the relay from GHCR (published on each release):
|
|
|
95
95
|
docker run -p 3600:3600 ghcr.io/felipekreulich/secret-chat-lan:latest
|
|
96
96
|
```
|
|
97
97
|
|
|
98
|
+
**Hosting it publicly?** [`deploy/`](deploy/README.md) has a Caddy + Docker
|
|
99
|
+
setup that gets a Let's Encrypt certificate automatically — clients then verify
|
|
100
|
+
the server against a real CA (no trust-on-first-use window), and a host that
|
|
101
|
+
once served a valid certificate can never be silently downgraded to a
|
|
102
|
+
self-signed one.
|
|
103
|
+
|
|
98
104
|
**No Node on the host?** Every release ships a standalone relay binary for
|
|
99
105
|
macOS and Linux (arm64/x64) — download it from the
|
|
100
106
|
[releases page](https://github.com/FelipeKreulich/secret-chat-lan/releases),
|
|
@@ -116,7 +122,10 @@ and use the `Internet` address from the banner — full walkthrough in
|
|
|
116
122
|
Already in the chat? Run `/invite <your-ip>:3600` and send the string (or the
|
|
117
123
|
QR code) to whoever you want to pull in.
|
|
118
124
|
|
|
119
|
-
**No server at all?** `npm run p2p` — peers find each other via mDNS.
|
|
125
|
+
**No server at all?** `npm run p2p` — peers find each other via mDNS. P2P mode
|
|
126
|
+
now speaks nearly the same command set as the relay client (presence, `/lock`,
|
|
127
|
+
`/contacts`, `/mentions`, `/topic`, encrypted history and more); only
|
|
128
|
+
`/invite`, `/create` and `/nick` are relay-specific by nature.
|
|
120
129
|
|
|
121
130
|
## 💬 Commands
|
|
122
131
|
|
|
@@ -130,6 +139,8 @@ QR code) to whoever you want to pull in.
|
|
|
130
139
|
| `/users` | Who's online (with away/status) |
|
|
131
140
|
| `/msg <nick> <text>` | Private message (DM) |
|
|
132
141
|
| `/reply <text>` | Reply quoting the last received message |
|
|
142
|
+
| `/me <action>` | Third-person action — *«felipe is compiling»* |
|
|
143
|
+
| `/watch [add\|remove\|clear]` | Alert on a keyword in **any** room, like a mention |
|
|
133
144
|
| `/invite [host:port]` | Generate a `ciphermesh://` invite + QR code |
|
|
134
145
|
| `/nick <new>` | Change nickname (before joining — recovers from "nickname taken") |
|
|
135
146
|
| `/quit` | Leave |
|
|
@@ -146,6 +157,7 @@ QR code) to whoever you want to pull in.
|
|
|
146
157
|
| `/create <room> <password>` | Create a **private room** 🔒 — see below |
|
|
147
158
|
| `/rooms` | List rooms (🔒 marks private ones) |
|
|
148
159
|
| `/room` | Current room + your buffer list |
|
|
160
|
+
| `/topic [text\|clear]` | Show or set the room topic — shown in the status bar and synced to whoever joins later |
|
|
149
161
|
| `/owner` | Room owner |
|
|
150
162
|
| `/kick` `/mute` `/ban` | Owner moderation |
|
|
151
163
|
|
|
@@ -198,7 +210,9 @@ A green **✓** next to a name marks a SAS-verified peer; a red **✗** flags a
|
|
|
198
210
|
| `/play [path]` | Play the last received voice note (`afplay`/`sox`/`ffplay`) |
|
|
199
211
|
| `/accept [id]` / `/reject [id]` | Accept / decline an incoming file offer |
|
|
200
212
|
| `/img [path]` | Render the last received image in **full resolution** (kitty/iTerm2) |
|
|
201
|
-
| `/search <term>` | Search the encrypted local history |
|
|
213
|
+
| `/search <term>` | Search the encrypted local history (on disk, across sessions) |
|
|
214
|
+
| `/find [term]` — **Ctrl+F** | Search **this room's scrollback** and press Enter to **jump to the message**, highlighted |
|
|
215
|
+
| `/doctor [host:port]` | Diagnose why a connection fails: address, DNS, TCP port, TLS (CA vs self-signed) and protocol version — each failure with what to do about it |
|
|
202
216
|
| `/history [n]` | Last n messages from history |
|
|
203
217
|
| `/retention <7d\|24h\|30m>` | Purge local history older than the given age |
|
|
204
218
|
| `/export [path]` | Export history as .txt or .json (plaintext!) |
|
|
@@ -213,8 +227,8 @@ A green **✓** next to a name marks a SAS-verified peer; a red **✗** flags a
|
|
|
213
227
|
| `/away [reason]` / `/back` | Mark yourself away — while away, unreads are counted (`[away · N new]`) and `/back` shows a summary |
|
|
214
228
|
| `/mentions [n]` | Recent mentions of you this session (who, where, when) |
|
|
215
229
|
| `/status <text\|off>` | Free-form status — emojis welcome (`/status :fire: coding`) |
|
|
216
|
-
| `/react <emoji>` | React to the last message |
|
|
217
|
-
| `/edit` `/delete` | Edit
|
|
230
|
+
| `/react <emoji>` | React to the last message — the emoji lands **on the message**, with a count when several people react |
|
|
231
|
+
| `/edit` `/delete` | Edit or delete your last message — the **original line is rewritten in place** (marked *(edited)*) or replaced by a tombstone, instead of a new line you have to mentally staple to it |
|
|
218
232
|
| `/pin` `/unpin` `/pins` | Pin messages |
|
|
219
233
|
| `/sound` `/notify` | Sound / desktop notifications |
|
|
220
234
|
| `/dnd [on\|off\|mentions\|HH:MM-HH:MM]` | Do-not-disturb, mentions-only, or quiet hours |
|
package/README.pt-BR.md
CHANGED
|
@@ -95,6 +95,12 @@ Prefere imagem pronta? Baixe o relay do GHCR (publicado a cada release):
|
|
|
95
95
|
docker run -p 3600:3600 ghcr.io/felipekreulich/secret-chat-lan:latest
|
|
96
96
|
```
|
|
97
97
|
|
|
98
|
+
**Vai hospedar publicamente?** A pasta [`deploy/`](deploy/README.md) tem um
|
|
99
|
+
setup com Caddy + Docker que pega certificado Let's Encrypt sozinho — aí os
|
|
100
|
+
clientes verificam o servidor contra uma CA de verdade (sem janela de
|
|
101
|
+
trust-on-first-use), e um host que já apresentou certificado válido nunca pode
|
|
102
|
+
ser rebaixado silenciosamente para um self-signed.
|
|
103
|
+
|
|
98
104
|
**Sem Node na máquina?** Todo release traz um binário standalone do relay para
|
|
99
105
|
macOS e Linux (arm64/x64) — baixe da
|
|
100
106
|
[página de releases](https://github.com/FelipeKreulich/secret-chat-lan/releases),
|
|
@@ -116,7 +122,10 @@ em [docs/SETUP.md](docs/SETUP.md).
|
|
|
116
122
|
Já está no chat? Rode `/invite <seu-ip>:3600` e mande a string (ou o QR) pra
|
|
117
123
|
quem você quiser puxar pra conversa.
|
|
118
124
|
|
|
119
|
-
**Sem servidor nenhum?** `npm run p2p` — os peers se encontram via mDNS.
|
|
125
|
+
**Sem servidor nenhum?** `npm run p2p` — os peers se encontram via mDNS. O modo
|
|
126
|
+
P2P agora fala quase o mesmo conjunto de comandos do cliente relay (presença,
|
|
127
|
+
`/lock`, `/contacts`, `/mentions`, `/topic`, histórico cifrado e mais); só
|
|
128
|
+
`/invite`, `/create` e `/nick` são específicos do relay por natureza.
|
|
120
129
|
|
|
121
130
|
## 💬 Comandos
|
|
122
131
|
|
|
@@ -130,6 +139,8 @@ quem você quiser puxar pra conversa.
|
|
|
130
139
|
| `/users` | Quem está online (com away/status) |
|
|
131
140
|
| `/msg <nick> <texto>` | Mensagem privada (DM) |
|
|
132
141
|
| `/reply <texto>` | Responde citando a última mensagem recebida |
|
|
142
|
+
| `/me <ação>` | Ação em terceira pessoa — *«felipe está compilando»* |
|
|
143
|
+
| `/watch [add\|remove\|clear]` | Alerta quando uma palavra aparece em **qualquer** sala, como uma menção |
|
|
133
144
|
| `/invite [host:porta]` | Gera convite `ciphermesh://` + QR code |
|
|
134
145
|
| `/nick <novo>` | Troca de apelido (antes de entrar — recupera de "apelido em uso") |
|
|
135
146
|
| `/quit` | Sair |
|
|
@@ -146,6 +157,7 @@ quem você quiser puxar pra conversa.
|
|
|
146
157
|
| `/create <sala> <senha>` | Cria uma **sala privada** 🔒 — veja abaixo |
|
|
147
158
|
| `/rooms` | Lista salas (🔒 marca as privadas) |
|
|
148
159
|
| `/room` | Sala atual + sua lista de buffers |
|
|
160
|
+
| `/topic [texto\|clear]` | Mostra ou define o assunto da sala — aparece na barra de status e é sincronizado para quem entra depois |
|
|
149
161
|
| `/owner` | Dono da sala |
|
|
150
162
|
| `/kick` `/mute` `/ban` | Moderação (dono da sala) |
|
|
151
163
|
|
|
@@ -199,7 +211,9 @@ Um **✓** verde ao lado de um nome indica um peer verificado por SAS; um **✗*
|
|
|
199
211
|
| `/accept [id]` / `/reject [id]` | Aceita / recusa uma oferta de arquivo recebida |
|
|
200
212
|
| `/img [caminho]` | Renderiza a última imagem recebida em **alta resolução** (kitty/iTerm2) |
|
|
201
213
|
| `/retention <7d\|24h\|30m>` | Purga o histórico local mais antigo que o tempo dado |
|
|
202
|
-
| `/search <termo>` | Busca no histórico local cifrado |
|
|
214
|
+
| `/search <termo>` | Busca no histórico local cifrado (em disco, entre sessões) |
|
|
215
|
+
| `/find [termo]` — **Ctrl+F** | Busca **no histórico da sala na tela** e, com Enter, **salta para a mensagem** destacada |
|
|
216
|
+
| `/doctor [host:porta]` | Diagnostica por que a conexão falha: endereço, DNS, porta TCP, TLS (CA ou self-signed) e versão de protocolo — cada falha com o que fazer |
|
|
203
217
|
| `/history [n]` | Últimas n mensagens do histórico |
|
|
204
218
|
| `/export [caminho]` | Exporta o histórico em .txt ou .json (texto plano!) |
|
|
205
219
|
|
|
@@ -213,8 +227,8 @@ Um **✓** verde ao lado de um nome indica um peer verificado por SAS; um **✗*
|
|
|
213
227
|
| `/away [motivo]` / `/back` | Marca/remove ausência — enquanto ausente, não-lidas são contadas (`[away · N new]`) e o `/back` mostra um resumo |
|
|
214
228
|
| `/mentions [n]` | Menções recentes a você na sessão (quem, onde, quando) |
|
|
215
229
|
| `/status <texto\|off>` | Status livre — emoji à vontade (`/status :fire: codando`) |
|
|
216
|
-
| `/react <emoji>` | Reage à última mensagem |
|
|
217
|
-
| `/edit` `/delete` | Edita
|
|
230
|
+
| `/react <emoji>` | Reage à última mensagem — o emoji aparece **na própria mensagem**, com contagem quando várias pessoas reagem |
|
|
231
|
+
| `/edit` `/delete` | Edita ou apaga sua última mensagem — a **linha original é reescrita no lugar** (marcada *(edited)*) ou vira uma lápide, em vez de uma linha nova que você precisa juntar mentalmente à original |
|
|
218
232
|
| `/pin` `/unpin` `/pins` | Fixa mensagens |
|
|
219
233
|
| `/sound` `/notify` | Notificações sonoras / desktop |
|
|
220
234
|
| `/dnd [on\|off\|mentions\|HH:MM-HH:MM]` | Não perturbe, só menções, ou horário silencioso |
|
package/package.json
CHANGED