@dotrino/vaultd 0.7.5 → 0.7.6

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
@@ -100,8 +100,10 @@ raw mode).
100
100
  los dispositivos/variables que estás viendo:
101
101
 
102
102
  1. **Bóvedas** es la pantalla de entrada: lista tus perfiles (`↑↓` mover, `Enter`
103
- **entrar** a uno — lo activa si no lo estaba). Ahí también creas una bóveda
104
- nueva, renombras, borras y pones/quitas/usas la contraseña (candado).
103
+ **entrar** a uno — lo activa si no lo estaba). Ahí también **conectas un
104
+ dispositivo** con `p` (sin entrar: activa la bóveda elegida y abre la pregunta
105
+ de a qué cuenta entra), creas una bóveda nueva, renombras, borras y
106
+ pones/quitas/usas la contraseña (candado).
105
107
  2. Al entrar caes en sus **pestañas horizontales**, que cambias con `←→`:
106
108
  - **Dispositivos (pares):** verlos, **emparejar** uno nuevo, **aprobar** con el
107
109
  código que muestra el dispositivo, **rechazar** y **revocar**. Al emparejar, la
@@ -132,7 +134,8 @@ en español (solo se traduce la palabra que las explica en la barra de ayuda).
132
134
  | `n` | new — bóveda nueva / variable nueva | Bóvedas · Scopes |
133
135
  | `r` | rename (Bóvedas) · refresh (Dispositivos/Scopes) · restart (Emparejar) | — |
134
136
  | `d` | delete — borrar la bóveda | Bóvedas |
135
- | `p` | password (Bóvedas) · pair emparejar (Dispositivos) | |
137
+ | `p` | **pair — conectar un dispositivo** (desde Bóvedas entra directo, sin `Enter`) | Bóvedas · Dispositivos |
138
+ | `c` | change password — poner/cambiar la contraseña | Bóvedas |
136
139
  | `x` | quitar: contraseña · dispositivo pendiente · variable/scope | todas |
137
140
  | `u` / `k` | unlock / locK — candado de la bóveda | Bóvedas |
138
141
  | `a` | approve — aprobar el dispositivo | Dispositivos · Emparejar |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dotrino/vaultd",
3
- "version": "0.7.5",
3
+ "version": "0.7.6",
4
4
  "type": "module",
5
5
  "description": "Certificador personal de Dotrino: daemon headless que custodia la clave maestra y delega capacidades a tus dispositivos por el proxy. Tu CA propia.",
6
6
  "bin": {
package/src/tui/app.js CHANGED
@@ -18,8 +18,9 @@
18
18
  * LAS TECLAS NO CAMBIAN CON EL IDIOMA: son mnemónicos en INGLÉS y son las mismas
19
19
  * en español (lo que se traduce es la palabra que las explica en la barra de
20
20
  * ayuda). new · rename · delete · password · unlock · locK · pair · approve ·
21
- * reject · reVoke · refresh · back · language · quit. Por eso el candado dejó de
22
- * ser `l` (hoy idioma) y es `k`, la contraseña es `p` y emparejar es `p`.
21
+ * reject · reVoke · refresh · back · language · quit. Una tecla significa LO MISMO
22
+ * en todas las pantallas: `p` es SIEMPRE emparejar (también en Bóvedas, sin tener
23
+ * que entrar antes), el candado es `k` (la `l` es el idioma) y la contraseña `c`.
23
24
  */
24
25
  import { execFile } from 'node:child_process'
25
26
  import { createTerm, widthOf } from './term.js'
@@ -318,6 +319,19 @@ async function onKeyProfiles (term, st, key) {
318
319
  }
319
320
  st.screen = 'devices'
320
321
  await refreshDevices(term, st)
322
+ } else if (ch === 'p' && cur) {
323
+ // Emparejar SIN tener que entrar antes: `p` significa lo mismo aquí que en la
324
+ // pestaña Dispositivos. Se activa la bóveda elegida (el QR sale de UNA, y las
325
+ // acciones siguientes —aprobar, revocar— miran a la activa) y se abre la
326
+ // pregunta de a qué cuenta entra el dispositivo.
327
+ if (!cur.current) {
328
+ const r = await guard(term, st, i.switchingVault, () => vc.useProfile(cur.id))
329
+ if (!r.ok) return true
330
+ await refreshAll(term, st)
331
+ }
332
+ st.sel.pairmode = 0
333
+ st.scroll.pairmode = { value: 0 }
334
+ st.screen = 'pairmode'
321
335
  } else if (ch === 'n') {
322
336
  setInput(st, {
323
337
  label: i.newVaultLabel,
@@ -355,7 +369,7 @@ async function onKeyProfiles (term, st, key) {
355
369
  },
356
370
  onCancel: () => { st.input = null }
357
371
  }))
358
- } else if (ch === 'p' && cur) { // password
372
+ } else if (ch === 'c' && cur) { // change password (la `p` es emparejar, igual que en Dispositivos)
359
373
  await ensureUnlocked(term, st, cur, (p = cur) => setInput(st, {
360
374
  label: i.newPasswordLabel(p.name || p.id),
361
375
  mask: true,
package/src/tui/i18n.js CHANGED
@@ -151,7 +151,7 @@ const es = {
151
151
  // INGLÉS: new/rename/delete/password/unlock/locK/pair/approve/revoke/refresh/
152
152
  // language/quit); lo único que se traduce es la palabra que las explica.
153
153
  // Segmentos, no una línea: el render recorta del medio si no caben.
154
- helpProfiles: ['↑↓', 'Enter entrar', 'n nueva', 'r renombrar', 'd borrar', 'p clave', 'x quitar-clave', 'u desbloq', 'k bloquear', 'l English', 'q salir'],
154
+ helpProfiles: ['↑↓', 'Enter entrar', 'p emparejar', 'n nueva', 'r renombrar', 'd borrar', 'c clave', 'x quitar-clave', 'u desbloq', 'k bloquear', 'l English', 'q salir'],
155
155
  helpDevices: ['←→ pestaña', '↑↓', 'p emparejar', 'a aprobar', 'x rechazar', 'v revocar', 'r refrescar', 'Esc bóvedas', 'l English', 'q salir'],
156
156
  helpSecrets: ['←→ pestaña', '↑↓', 'n nueva variable', 'x quitar (variable/scope)', 'r refrescar', 'Esc bóvedas', 'l English', 'q salir'],
157
157
  helpPairing: ['a aprobar', 'x rechazar', 'r reiniciar', 'Esc atrás', 'l English'],
@@ -308,7 +308,7 @@ const en = {
308
308
  helpInput: 'Enter confirm · Esc cancel · Ctrl-U clear',
309
309
  helpConfirm: 'y confirm · n/Esc cancel',
310
310
 
311
- helpProfiles: ['↑↓', 'Enter open', 'n new', 'r rename', 'd delete', 'p password', 'x drop-password', 'u unlock', 'k lock', 'l Español', 'q quit'],
311
+ helpProfiles: ['↑↓', 'Enter open', 'p pair', 'n new', 'r rename', 'd delete', 'c password', 'x drop-password', 'u unlock', 'k lock', 'l Español', 'q quit'],
312
312
  helpDevices: ['←→ tab', '↑↓', 'p pair', 'a approve', 'x reject', 'v revoke', 'r refresh', 'Esc vaults', 'l Español', 'q quit'],
313
313
  helpSecrets: ['←→ tab', '↑↓', 'n new variable', 'x remove (variable/scope)', 'r refresh', 'Esc vaults', 'l Español', 'q quit'],
314
314
  helpPairing: ['a approve', 'x reject', 'r restart', 'Esc back', 'l Español'],