ciphermesh 2.1.0 → 2.2.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 CHANGED
@@ -133,13 +133,19 @@ QR code) to whoever you want to pull in.
133
133
 
134
134
  | Command | Description |
135
135
  |---------|-------------|
136
- | `/join <room> [password]` | Enter/create a room (password if it's private) |
136
+ | `/join <room> [password]` | Open a room as a **new buffer** — you stay in your other rooms (IRC style) |
137
+ | `/leave [room]` | Leave a room; its buffer closes (the last room is protected) |
137
138
  | `/create <room> <password>` | Create a **private room** 🔒 — see below |
138
139
  | `/rooms` | List rooms (🔒 marks private ones) |
139
- | `/room` | Current room |
140
+ | `/room` | Current room + your buffer list |
140
141
  | `/owner` | Room owner |
141
142
  | `/kick` `/mute` `/ban` | Owner moderation |
142
143
 
144
+ **Buffers:** be in several rooms at once — **Alt+1..9** switches, and the status
145
+ bar shows `[1:general] [2:dev •3]` with per-room unread badges. Because the
146
+ relay is blind (sealed sender), which room a message belongs to travels
147
+ *inside* the encrypted payload — the server never learns it.
148
+
143
149
  **Private rooms** are zero-knowledge: the password never leaves your machine.
144
150
  Joining derives an Ed25519 key from the password (Argon2id) and answers a
145
151
  server challenge with a signature — the server stores only a verifier, in
package/README.pt-BR.md CHANGED
@@ -133,13 +133,19 @@ quem você quiser puxar pra conversa.
133
133
 
134
134
  | Comando | Descrição |
135
135
  |---------|-----------|
136
- | `/join <sala> [senha]` | Entra/cria uma sala (senha se for privada) |
136
+ | `/join <sala> [senha]` | Abre a sala como um **novo buffer** — você continua nas outras (estilo IRC) |
137
+ | `/leave [sala]` | Sai de uma sala; o buffer fecha (a última sala é protegida) |
137
138
  | `/create <sala> <senha>` | Cria uma **sala privada** 🔒 — veja abaixo |
138
139
  | `/rooms` | Lista salas (🔒 marca as privadas) |
139
- | `/room` | Sala atual |
140
+ | `/room` | Sala atual + sua lista de buffers |
140
141
  | `/owner` | Dono da sala |
141
142
  | `/kick` `/mute` `/ban` | Moderação (dono da sala) |
142
143
 
144
+ **Buffers:** esteja em várias salas ao mesmo tempo — **Alt+1..9** alterna, e a
145
+ barra de status mostra `[1:general] [2:dev •3]` com não-lidas por sala. Como o
146
+ relay é cego (sealed sender), a qual sala cada mensagem pertence viaja *dentro*
147
+ do payload cifrado — o servidor nunca fica sabendo.
148
+
143
149
  **Salas privadas** são zero-knowledge: a senha nunca sai da sua máquina. Ao
144
150
  entrar, o cliente deriva uma chave Ed25519 da senha (Argon2id) e responde um
145
151
  desafio do servidor com uma assinatura — o servidor guarda só um verificador,
@@ -448,8 +448,11 @@ Types:
448
448
  | `peer_left` | Server -> Clients | A peer left |
449
449
  | `key_exchange` | Client -> Server -> Client | Public key exchange between peers |
450
450
  | `encrypted_message` | Client -> Server -> Client | Encrypted message |
451
- | `change_room` | Client -> Server | Enter/create a room (+ optional `roomAuthPk` verifier when creating a private room) |
451
+ | `change_room` | Client -> Server | Legacy single-room switch: leave every room, enter one (+ optional `roomAuthPk` when creating a private room) |
452
452
  | `room_changed` | Server -> Client | Room switch confirmed (+ `private` flag) |
453
+ | `join_room` | Client -> Server | Multi-room: join an ADDITIONAL room, keeping current ones (same `roomAuthPk` option) |
454
+ | `room_joined` | Server -> Client | Additive join confirmed (`room`, `peers`, `private`, `roomOwner`) |
455
+ | `leave_room` / `room_left` | Client <-> Server | Leave one room (the last one is refused — a session is always somewhere) |
453
456
  | `list_rooms` / `room_list` | Client <-> Server | Room list (each room carries a `private` flag) |
454
457
  | `room_challenge` | Server -> Client | Target room is private — sign this nonce (see 6.9) |
455
458
  | `room_auth` | Client -> Server | Ed25519 signature proving password knowledge (see 6.9) |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ciphermesh",
3
- "version": "2.1.0",
3
+ "version": "2.2.0",
4
4
  "description": "Secure terminal chat for the local network (LAN) with real end-to-end encryption (E2EE) using libsodium",
5
5
  "type": "module",
6
6
  "main": "src/client/index.js",
@@ -55,7 +55,7 @@
55
55
  "bonjour-service": "1.4.3",
56
56
  "boxen": "8.0.1",
57
57
  "chalk": "^5.4.1",
58
- "figlet": "1.11.2",
58
+ "figlet": "1.11.3",
59
59
  "gradient-string": "3.0.0",
60
60
  "jimp": "1.6.1",
61
61
  "node-notifier": "10.0.1",
@@ -65,7 +65,7 @@
65
65
  },
66
66
  "devDependencies": {
67
67
  "@eslint/js": "10.0.1",
68
- "eslint": "10.7.0",
68
+ "eslint": "10.8.0",
69
69
  "globals": "^17.7.0",
70
70
  "prettier": "^3.9.5"
71
71
  },