@yujinapp/yuemail 0.6.0 → 0.6.2

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/dist/index.html CHANGED
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>Yuemail</title>
7
- <script type="module" crossorigin src="/assets/index-WA4cgesA.js"></script>
8
- <link rel="stylesheet" crossorigin href="/assets/index-D0fPbil9.css">
7
+ <script type="module" crossorigin src="/assets/index-B5de_hxg.js"></script>
8
+ <link rel="stylesheet" crossorigin href="/assets/index-5g_KAUFK.css">
9
9
  </head>
10
10
  <body>
11
11
  <!-- F11 ARIA live regions. polite for status, assertive for errors. -->
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yujinapp/yuemail",
3
- "version": "0.6.0",
3
+ "version": "0.6.2",
4
4
  "description": "Voice-first single-user email client. Dictate, sign, send. AI voice assistant (Brain) plus Google STT/TTS hearing+speaking, BYOK encrypted vault; degrades to the browser + fixed-phrase commands offline.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -24,7 +24,7 @@ export function registerEmailRoutes(app) {
24
24
  if (!status.smtp.configured) {
25
25
  res.status(400).json({
26
26
  ok: false,
27
- error: 'SMTP not configured. Run `yuemail vault setup` to configure your SMTP server before sending.',
27
+ error: 'El correo saliente todavia no esta configurado. Abri Configuracion y carga tu servidor de envio (SMTP) antes de mandar.',
28
28
  missing: status.smtp.missing,
29
29
  });
30
30
  return;
@@ -40,8 +40,8 @@ export function registerEmailRoutes(app) {
40
40
  res.status(400).json({
41
41
  ok: false,
42
42
  error: badTo.length > 0
43
- ? 'No valid recipients. Invalid entries: ' + badTo.join(', ')
44
- : 'No recipients provided.',
43
+ ? 'No hay ningun destinatario valido. Revisa estas direcciones mal escritas: ' + badTo.join(', ') + '.'
44
+ : 'Falta el destinatario. Escribi al menos una direccion de correo.',
45
45
  });
46
46
  return;
47
47
  }
@@ -54,12 +54,12 @@ export function registerEmailRoutes(app) {
54
54
  const from = await getKey('identity.from');
55
55
  const name = await getKey('identity.name');
56
56
  if (!host || !portStr || !user || !pass || !from) {
57
- res.status(400).json({ ok: false, error: 'SMTP not configured (missing decrypted credential)' });
57
+ res.status(400).json({ ok: false, error: 'Falta una credencial del correo saliente (SMTP). Volve a guardar la configuracion de tu cuenta.' });
58
58
  return;
59
59
  }
60
60
  const port = Number(portStr);
61
61
  if (!Number.isFinite(port) || port <= 0) {
62
- res.status(400).json({ ok: false, error: 'smtp.port is not a positive integer' });
62
+ res.status(400).json({ ok: false, error: 'El puerto del correo saliente (SMTP) no es valido. Corregilo en Configuracion (por ejemplo 587 o 465).' });
63
63
  return;
64
64
  }
65
65
  const secure = (secStr ?? '').toLowerCase() === 'true' || port === 465;
@@ -68,7 +68,7 @@ export function registerEmailRoutes(app) {
68
68
  if (attachId.length > 0) {
69
69
  const doc = await getDocument(attachId);
70
70
  if (!doc) {
71
- res.status(404).json({ ok: false, error: 'attach_document_id not found' });
71
+ res.status(404).json({ ok: false, error: 'No se encontro el documento que querias adjuntar.' });
72
72
  return;
73
73
  }
74
74
  const buf = await renderDocx(doc);
@@ -103,7 +103,7 @@ export function registerEmailRoutes(app) {
103
103
  }
104
104
  catch (err) {
105
105
  const message = err instanceof Error ? err.message : String(err);
106
- res.status(500).json({ ok: false, error: 'SMTP send failed: ' + message });
106
+ res.status(500).json({ ok: false, error: 'No se pudo enviar el correo: ' + message });
107
107
  }
108
108
  });
109
109
  }
@@ -1 +0,0 @@
1
- :root{--color-ink-deep: #0f1419;--color-ink-mid: #2a3036;--color-ink-soft: #4a5159;--color-paper-warm: #f8f4ec;--color-paper-cool: #ffffff;--color-paper-shadow: #e6e1d6;--accent-sakura: #d97a8e;--accent-jade: #5fa68a;--accent-sky: #6592c5;--accent-amber: #d99450;--accent-rose: #c25b5b;--color-bg-surface: var(--color-paper-cool);--color-bg-subtle: var(--color-paper-warm);--color-bg-hover: var(--color-paper-shadow);--color-text-primary: var(--color-ink-deep);--color-text-secondary: var(--color-ink-mid);--color-text-muted: var(--color-ink-soft);--color-border-subtle: #d8d2c5;--color-border-default: #b4ad9d;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--space-8: 64px;--font-family-sans: "Inter", "Helvetica Neue", Arial, sans-serif;--font-family-serif: "Source Serif Pro", Georgia, "Times New Roman", serif;--font-family-mono: "JetBrains Mono", "Consolas", monospace;--font-size-xs: 12px;--font-size-sm: 14px;--font-size-md: 16px;--font-size-lg: 20px;--font-size-xl: 28px;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--line-height-tight: 1.2;--line-height-normal: 1.5;--line-height-loose: 1.75;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--shadow-low: 0 1px 2px rgba(15, 20, 25, .06);--shadow-mid: 0 4px 12px rgba(15, 20, 25, .08);--shadow-high: 0 8px 24px rgba(15, 20, 25, .12);--motion-fast: .12s;--motion-medium: .22s;--motion-slow: .36s;--motion-ease: cubic-bezier(.4, 0, .2, 1)}@media (prefers-color-scheme: dark){:root{--color-bg-surface: #1a1f24;--color-bg-subtle: #232830;--color-bg-hover: #2c333c;--color-text-primary: #f0ece2;--color-text-secondary: #c8c4b8;--color-text-muted: #918d80;--color-border-subtle: #383f48;--color-border-default: #565d66}}*{box-sizing:border-box}html,body{margin:0;padding:0;font-family:var(--font-family-sans);font-size:var(--font-size-md);line-height:var(--line-height-normal);background:var(--color-bg-subtle);color:var(--color-text-primary)}#root{min-height:100vh;display:flex;flex-direction:column}.yuemail-topbar{background:var(--color-bg-surface);border-bottom:1px solid var(--color-border-subtle);padding:var(--space-3) var(--space-5);display:flex;align-items:center;justify-content:space-between;box-shadow:var(--shadow-low)}.yuemail-topbar h1{margin:0;font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold)}.yuemail-toolbar{background:var(--color-bg-surface);border-bottom:1px solid var(--color-border-subtle);padding:var(--space-3) var(--space-5);display:flex;gap:var(--space-3)}.yuemail-toolbar button{background:var(--accent-jade);color:var(--color-paper-cool);border:none;border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);font-size:var(--font-size-md);font-weight:var(--font-weight-medium);cursor:pointer;transition:filter var(--motion-fast) var(--motion-ease)}.yuemail-toolbar button:hover{filter:brightness(1.1)}.yuemail-toolbar button:focus-visible{outline:3px solid var(--accent-amber);outline-offset:2px}.yuemail-main{flex:1;padding:var(--space-5);display:flex;gap:var(--space-5)}.yuemail-editor{flex:1;background:var(--color-bg-surface);border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);padding:var(--space-5);box-shadow:var(--shadow-low)}.yuemail-editor input[type=text]{width:100%;font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);border:none;border-bottom:1px solid var(--color-border-subtle);padding:var(--space-2) 0;margin-bottom:var(--space-4);background:transparent;color:var(--color-text-primary)}.yuemail-editor textarea{width:100%;min-height:240px;font-family:var(--font-family-serif);font-size:var(--font-size-md);line-height:var(--line-height-loose);border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);padding:var(--space-3);background:var(--color-bg-subtle);color:var(--color-text-primary);resize:vertical}.yuemail-side{width:320px;display:flex;flex-direction:column;gap:var(--space-4)}.yuemail-card{background:var(--color-bg-surface);border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);padding:var(--space-4);box-shadow:var(--shadow-low)}.yuemail-card h2{margin:0 0 var(--space-3) 0;font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary)}.yuemail-topbar-actions{display:flex;align-items:center;gap:var(--space-3)}.yuemail-settings-gear{display:inline-flex;align-items:center;background:transparent;border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);color:var(--color-text-secondary);padding:var(--space-2) var(--space-3);cursor:pointer;transition:filter var(--motion-fast) var(--motion-ease)}.yuemail-settings-gear:hover{color:var(--color-text-primary);background:var(--color-bg-subtle)}.yuemail-settings-gear:focus-visible{outline:3px solid var(--accent-amber);outline-offset:2px}.yuemail-mic-toggle{background:var(--accent-rose);color:var(--color-paper-cool);border:none;border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);font-size:var(--font-size-md);font-weight:var(--font-weight-medium);cursor:pointer}.yuemail-mic-toggle[data-state=on]{background:var(--accent-amber)}.yuemail-modal{position:fixed;inset:0;background:#0f141966;display:flex;align-items:center;justify-content:center;z-index:100}.yuemail-modal-card{background:var(--color-bg-surface);border-radius:var(--radius-lg);padding:var(--space-5);min-width:360px;max-width:90vw;box-shadow:var(--shadow-high)}.yuemail-toast{position:fixed;bottom:var(--space-5);right:var(--space-5);background:var(--color-ink-deep);color:var(--color-paper-cool);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);box-shadow:var(--shadow-mid);z-index:200}.yuemail-toast[data-kind=error]{background:var(--accent-rose)}.yuemail-toast[data-kind=success]{background:var(--accent-jade)}