@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-
|
|
8
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
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.
|
|
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: '
|
|
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
|
|
44
|
-
: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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)}
|