emailengine-app 2.70.0 → 2.71.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.
Files changed (43) hide show
  1. package/.github/workflows/test.yml +73 -12
  2. package/.ncurc.js +3 -3
  3. package/CHANGELOG.md +18 -0
  4. package/Gruntfile.js +19 -23
  5. package/bin/emailengine.js +8 -1
  6. package/config/default.toml +5 -0
  7. package/config/test.toml +5 -0
  8. package/data/google-crawlers.json +1 -1
  9. package/getswagger.sh +4 -0
  10. package/lib/account.js +31 -25
  11. package/lib/api-routes/message-routes.js +125 -121
  12. package/lib/document-store.js +22 -1
  13. package/lib/email-client/base-client.js +3 -2
  14. package/lib/email-client/imap/mailbox.js +2 -2
  15. package/lib/email-client/notification-handler.js +2 -2
  16. package/lib/export.js +12 -0
  17. package/lib/feature-flags.js +6 -0
  18. package/lib/license-beacon.js +367 -0
  19. package/lib/logger.js +11 -1
  20. package/lib/routes-ui.js +2 -1
  21. package/lib/tools.js +26 -2
  22. package/lib/ui-routes/admin-config-routes.js +4 -3
  23. package/lib/ui-routes/document-store-routes.js +7 -1
  24. package/package.json +19 -16
  25. package/sbom.json +1 -1
  26. package/server.js +30 -8
  27. package/static/licenses.html +43 -123
  28. package/translations/de.mo +0 -0
  29. package/translations/de.po +154 -142
  30. package/translations/et.mo +0 -0
  31. package/translations/et.po +129 -131
  32. package/translations/fr.mo +0 -0
  33. package/translations/fr.po +133 -136
  34. package/translations/ja.mo +0 -0
  35. package/translations/ja.po +126 -129
  36. package/translations/messages.pot +37 -37
  37. package/translations/nl.mo +0 -0
  38. package/translations/nl.po +128 -130
  39. package/translations/pl.mo +0 -0
  40. package/translations/pl.po +125 -128
  41. package/views/dashboard.hbs +22 -0
  42. package/workers/api.js +22 -5
  43. package/workers/export.js +58 -43
@@ -1,7 +1,7 @@
1
1
  msgid ""
2
2
  msgstr ""
3
3
  "Project-Id-Version: \n"
4
- "POT-Creation-Date: 2026-03-31 08:47+0000\n"
4
+ "POT-Creation-Date: 2026-06-15 18:35+0000\n"
5
5
  "PO-Revision-Date: \n"
6
6
  "Last-Translator: \n"
7
7
  "Language-Team: \n"
@@ -13,7 +13,7 @@ msgstr ""
13
13
  "|| n%100>14) ? 1 : 2);\n"
14
14
  "X-Generator: Poedit 3.9\n"
15
15
 
16
- #: views/error.hbs:4 workers/api.js:7103
16
+ #: views/error.hbs:4 workers/api.js:2957
17
17
  msgid "Something went wrong"
18
18
  msgstr "Ups... Coś poszło nie tak"
19
19
 
@@ -29,7 +29,7 @@ msgstr "Wstecz"
29
29
  msgid "Dashboard"
30
30
  msgstr "Pulpit"
31
31
 
32
- #: views/config/license.hbs:45 lib/routes-ui.js:2497
32
+ #: views/config/license.hbs:45 lib/ui-routes/oauth-config-routes.js:217
33
33
  msgid "%d day"
34
34
  msgid_plural "%d days"
35
35
  msgstr[0] "%d dzień"
@@ -40,6 +40,34 @@ msgstr[2] "%d dni"
40
40
  msgid "Click <a href=\"%s\">here</a> to continue&mldr;"
41
41
  msgstr "Kliknij <a href=\"%s\">tutaj</a>, aby kontynuować&mldr;"
42
42
 
43
+ #: views/oauth-scope-error.hbs:2
44
+ msgid "Insufficient Permissions"
45
+ msgstr "Niewystarczające uprawnienia"
46
+
47
+ #: views/oauth-scope-error.hbs:8
48
+ msgid ""
49
+ "All requested permissions are required for this service to function "
50
+ "properly. Some required permissions were not granted during sign-in."
51
+ msgstr ""
52
+ "Wszystkie wymagane uprawnienia są niezbędne do prawidłowego działania tej "
53
+ "usługi. Niektóre z nich nie zostały przyznane podczas logowania."
54
+
55
+ #: views/oauth-scope-error.hbs:12
56
+ msgid "The following permissions were not granted:"
57
+ msgstr "Nie przyznano następujących uprawnień:"
58
+
59
+ #: views/oauth-scope-error.hbs:21
60
+ msgid ""
61
+ "Please try again and make sure all permission checkboxes are selected on the "
62
+ "Google consent screen."
63
+ msgstr ""
64
+ "Spróbuj ponownie i upewnij się, że na ekranie zgody Google zaznaczone są "
65
+ "wszystkie pola wyboru dotyczące uprawnień."
66
+
67
+ #: views/oauth-scope-error.hbs:27
68
+ msgid "Try Again"
69
+ msgstr "Spróbuj ponownie"
70
+
43
71
  #: views/unsubscribe.hbs:3 views/unsubscribe.hbs:62 views/unsubscribe.hbs:85
44
72
  msgid "Unsubscribe"
45
73
  msgstr "Wypisz się"
@@ -85,34 +113,6 @@ msgstr "Adres e-mail"
85
113
  msgid "Enter your email address"
86
114
  msgstr "Wprowadź swój adres e-mail"
87
115
 
88
- #: views/oauth-scope-error.hbs:2
89
- msgid "Insufficient Permissions"
90
- msgstr "Niewystarczające uprawnienia"
91
-
92
- #: views/oauth-scope-error.hbs:8
93
- msgid ""
94
- "All requested permissions are required for this service to function properly. "
95
- "Some required permissions were not granted during sign-in."
96
- msgstr ""
97
- "Wszystkie wymagane uprawnienia są niezbędne do prawidłowego działania tej "
98
- "usługi. Niektóre z nich nie zostały przyznane podczas logowania."
99
-
100
- #: views/oauth-scope-error.hbs:12
101
- msgid "The following permissions were not granted:"
102
- msgstr "Nie przyznano następujących uprawnień:"
103
-
104
- #: views/oauth-scope-error.hbs:21
105
- msgid ""
106
- "Please try again and make sure all permission checkboxes are selected on the "
107
- "Google consent screen."
108
- msgstr ""
109
- "Spróbuj ponownie i upewnij się, że na ekranie zgody Google zaznaczone są "
110
- "wszystkie pola wyboru dotyczące uprawnień."
111
-
112
- #: views/oauth-scope-error.hbs:27
113
- msgid "Try Again"
114
- msgstr "Spróbuj ponownie"
115
-
116
116
  #: views/accounts/register/imap.hbs:11
117
117
  msgid "Your name"
118
118
  msgstr "Twoje imię"
@@ -190,8 +190,8 @@ msgstr "TLS dla IMAP"
190
190
 
191
191
  #: views/accounts/register/imap-server.hbs:100
192
192
  msgid ""
193
- "TLS (also known as SSL) is usually only needed when using port 993. For other "
194
- "ports EmailEngine falls back to using STARTTLS based encryption."
193
+ "TLS (also known as SSL) is usually only needed when using port 993. For "
194
+ "other ports EmailEngine falls back to using STARTTLS based encryption."
195
195
  msgstr ""
196
196
  "TLS (znany również jako SSL) jest zwykle potrzebny tylko w przypadku "
197
197
  "korzystania z portu 993. W przypadku innych portów EmailEngine powraca do "
@@ -212,8 +212,8 @@ msgstr "TLS dla SMTP"
212
212
 
213
213
  #: views/accounts/register/imap-server.hbs:191
214
214
  msgid ""
215
- "TLS (also known as SSL) is usually only needed when using port 465. For other "
216
- "ports EmailEngine falls back to using STARTTLS based encryption."
215
+ "TLS (also known as SSL) is usually only needed when using port 465. For "
216
+ "other ports EmailEngine falls back to using STARTTLS based encryption."
217
217
  msgstr ""
218
218
  "TLS (znany również jako SSL) jest zwykle potrzebny tylko w przypadku "
219
219
  "korzystania z portu 465. W przypadku innych portów EmailEngine powraca do "
@@ -264,150 +264,147 @@ msgstr "Nie udało się połączyć z serwerem SMTP"
264
264
  msgid "Request failed."
265
265
  msgstr "Żądanie nie powiodło się."
266
266
 
267
- #: lib/routes-ui.js:384 lib/ui-routes/account-routes.js:60
268
- msgid "Delegated"
269
- msgstr "Delegowany"
270
-
271
- #: lib/routes-ui.js:385 lib/ui-routes/account-routes.js:61
272
- msgid "Using credentials from \"%s\""
273
- msgstr "Używanie poświadczeń z \"%s\""
274
-
275
- #: lib/routes-ui.js:435 lib/ui-routes/account-routes.js:111
276
- msgid ""
277
- "Connection timed out. This usually occurs if you are behind a firewall or "
278
- "connecting to the wrong port."
279
- msgstr ""
280
- "Przekroczono limit czasu połączenia. Zwykle dzieje się tak, gdy użytkownik "
281
- "znajduje się za zaporą sieciową lub łączy się z niewłaściwym portem."
282
-
283
- #: lib/routes-ui.js:438 lib/ui-routes/account-routes.js:114
284
- msgid "The server unexpectedly closed the connection."
285
- msgstr "Serwer nieoczekiwanie zamknął połączenie."
286
-
287
- #: lib/routes-ui.js:441 lib/ui-routes/account-routes.js:117
288
- msgid ""
289
- "The server unexpectedly closed the connection. This usually happens when "
290
- "attempting to connect to a TLS port without TLS enabled."
291
- msgstr ""
292
- "Serwer nieoczekiwanie zamknął połączenie. Zwykle dzieje się tak podczas próby "
293
- "połączenia z portem TLS bez włączonego protokołu TLS."
294
-
295
- #: lib/routes-ui.js:446 lib/ui-routes/account-routes.js:122
267
+ #: lib/autodetect-imap-settings.js:80
296
268
  msgid ""
297
- "The server refused the connection. This typically occurs if the server is not "
298
- "running, is overloaded, or you are connecting to the wrong host or port."
269
+ "Microsoft has disabled password-based sign-ins (including app passwords) for "
270
+ "Outlook.com, Hotmail.com, and Microsoft 365 email accounts. To continue, "
271
+ "please use the \"Sign in with Microsoft\" button to securely connect your "
272
+ "account."
299
273
  msgstr ""
300
- "Serwer odmówił połączenia. Zwykle dzieje się tak, gdy serwer nie działa, jest "
301
- "przeciążony lub łączysz się z niewłaściwym hostem lub portem."
274
+ "Firma Microsoft wyłączyła logowanie oparte na hasłach (w tym hasłach "
275
+ "aplikacji) dla kont e-mail w usługach Outlook.com, Hotmail.com i Microsoft "
276
+ "365. Aby kontynuować, użyj przycisku \"Zaloguj się za pomocą Microsoft\", "
277
+ "aby bezpiecznie połączyć swoje konto."
302
278
 
303
- #: lib/routes-ui.js:573
304
- msgid "Invalid API key for OpenAI"
305
- msgstr "Nieprawidłowy klucz API dla OpenAI"
279
+ #: lib/tools.js:975 lib/ui-routes/unsubscribe-routes.js:28
280
+ msgid "Invalid input"
281
+ msgstr "Nieprawidłowe dane wejściowe"
306
282
 
307
- #: lib/routes-ui.js:2490
308
- msgid "Unknown"
309
- msgstr "Nieznany"
283
+ #: lib/tools.js:1742
284
+ msgid "Signature validation failed"
285
+ msgstr "Walidacja podpisu nie powiodła się"
310
286
 
311
- #: lib/routes-ui.js:2499
312
- msgid "Indefinite"
313
- msgstr "Na czas nieokreślony"
287
+ #: lib/tools.js:1751 lib/tools.js:1756
288
+ msgid "Invalid or expired account setup URL"
289
+ msgstr "Nieprawidłowy lub wygasły adres URL konfiguracji konta"
314
290
 
315
- #: lib/routes-ui.js:5133 lib/routes-ui.js:5168 lib/routes-ui.js:5283
316
- #: lib/routes-ui.js:5330 lib/routes-ui.js:5577 lib/routes-ui.js:5613
317
- #: workers/api.js:2279 workers/api.js:2607 lib/ui-routes/account-routes.js:554
318
- #: lib/ui-routes/account-routes.js:590 lib/ui-routes/account-routes.js:707
319
- #: lib/ui-routes/account-routes.js:754 lib/ui-routes/account-routes.js:1003
320
- #: lib/ui-routes/account-routes.js:1039
291
+ #: lib/ui-routes/account-routes.js:402 lib/ui-routes/account-routes.js:437
292
+ #: lib/ui-routes/account-routes.js:552 lib/ui-routes/account-routes.js:599
293
+ #: lib/ui-routes/account-routes.js:846 lib/ui-routes/account-routes.js:882
294
+ #: workers/api.js:2158 workers/api.js:2486
321
295
  msgid "Email Account Setup"
322
296
  msgstr "Konfiguracja konta e-mail"
323
297
 
324
- #: lib/routes-ui.js:5193 lib/routes-ui.js:5226 lib/routes-ui.js:8186
325
- #: lib/ui-routes/account-routes.js:615 lib/ui-routes/account-routes.js:649
298
+ #: lib/ui-routes/account-routes.js:462 lib/ui-routes/account-routes.js:495
299
+ #: lib/ui-routes/unsubscribe-routes.js:65
326
300
  msgid "Invalid request. Check your input and try again."
327
301
  msgstr "Nieprawidłowe żądanie. Sprawdź wprowadzone dane i spróbuj ponownie."
328
302
 
329
- #: lib/routes-ui.js:5386 lib/routes-ui.js:5397
330
- #: lib/ui-routes/account-routes.js:811 lib/ui-routes/account-routes.js:822
303
+ #: lib/ui-routes/account-routes.js:592 lib/ui-routes/account-routes.js:875
304
+ msgid "Couldn't set up account. Try again."
305
+ msgstr "Nie udało się założyć konta. Spróbuj ponownie."
306
+
307
+ #: lib/ui-routes/account-routes.js:655 lib/ui-routes/account-routes.js:666
331
308
  #: lib/ui-routes/admin-entities-routes.js:2020
332
309
  msgid "Server hostname was not found"
333
310
  msgstr "Nie znaleziono nazwy hosta serwera"
334
311
 
335
- #: lib/routes-ui.js:5389 lib/routes-ui.js:5400
336
- #: lib/ui-routes/account-routes.js:814 lib/ui-routes/account-routes.js:825
312
+ #: lib/ui-routes/account-routes.js:658 lib/ui-routes/account-routes.js:669
337
313
  #: lib/ui-routes/admin-entities-routes.js:2023
338
314
  msgid "Invalid username or password"
339
315
  msgstr "Nieprawidłowa nazwa użytkownika lub hasło"
340
316
 
341
- #: lib/routes-ui.js:5403 lib/ui-routes/account-routes.js:828
317
+ #: lib/ui-routes/account-routes.js:672
342
318
  #: lib/ui-routes/admin-entities-routes.js:2026
343
319
  msgid "Authentication credentials were not provided"
344
320
  msgstr "Nie podano danych uwierzytelniających"
345
321
 
346
- #: lib/routes-ui.js:5406 lib/ui-routes/account-routes.js:831
322
+ #: lib/ui-routes/account-routes.js:675
347
323
  #: lib/ui-routes/admin-entities-routes.js:2029
348
324
  msgid "OAuth2 authentication failed"
349
325
  msgstr "Uwierzytelnianie OAuth2 nie powiodło się"
350
326
 
351
- #: lib/routes-ui.js:5409 lib/routes-ui.js:5413
352
- #: lib/ui-routes/account-routes.js:834 lib/ui-routes/account-routes.js:838
327
+ #: lib/ui-routes/account-routes.js:678 lib/ui-routes/account-routes.js:682
353
328
  #: lib/ui-routes/admin-entities-routes.js:2032
354
329
  #: lib/ui-routes/admin-entities-routes.js:2036
355
330
  msgid "TLS protocol error"
356
331
  msgstr "Błąd protokołu TLS"
357
332
 
358
- #: lib/routes-ui.js:5417 lib/ui-routes/account-routes.js:842
333
+ #: lib/ui-routes/account-routes.js:686
359
334
  #: lib/ui-routes/admin-entities-routes.js:2040
360
335
  msgid "Connection timed out"
361
336
  msgstr "Przekroczono limit czasu połączenia"
362
337
 
363
- #: lib/routes-ui.js:5420 lib/ui-routes/account-routes.js:845
338
+ #: lib/ui-routes/account-routes.js:689
364
339
  #: lib/ui-routes/admin-entities-routes.js:2043
365
340
  msgid "Could not connect to server"
366
341
  msgstr "Nie można połączyć się z serwerem"
367
342
 
368
- #: lib/routes-ui.js:5423 lib/ui-routes/account-routes.js:848
343
+ #: lib/ui-routes/account-routes.js:692
369
344
  #: lib/ui-routes/admin-entities-routes.js:2046
370
345
  msgid "Unexpected server response"
371
346
  msgstr "Nieoczekiwana odpowiedź serwera"
372
347
 
373
- #: lib/routes-ui.js:8149 lib/tools.js:950
374
- msgid "Invalid input"
375
- msgstr "Nieprawidłowe dane wejściowe"
348
+ #: lib/ui-routes/admin-config-routes.js:145
349
+ msgid "Invalid API key for OpenAI"
350
+ msgstr "Nieprawidłowy klucz API dla OpenAI"
376
351
 
377
- #: lib/routes-ui.js:8159 lib/routes-ui.js:8277 lib/routes-ui.js:8294
378
- #: lib/routes-ui.js:8330
379
- msgid "Subscription Management"
380
- msgstr "Zarządzanie subskrypcjami"
352
+ #: lib/ui-routes/oauth-config-routes.js:210
353
+ msgid "Unknown"
354
+ msgstr "Nieznany"
381
355
 
382
- #: workers/api.js:7102 workers/api.js:7219
383
- msgid "Requested page not found"
384
- msgstr "Nie znaleziono żądanej strony"
356
+ #: lib/ui-routes/oauth-config-routes.js:219
357
+ msgid "Indefinite"
358
+ msgstr "Na czas nieokreślony"
385
359
 
386
- #: lib/tools.js:1653
387
- msgid "Signature validation failed"
388
- msgstr "Walidacja podpisu nie powiodła się"
360
+ #: lib/ui-routes/route-helpers.js:81
361
+ msgid "Delegated"
362
+ msgstr "Delegowany"
389
363
 
390
- #: lib/tools.js:1662 lib/tools.js:1667
391
- msgid "Invalid or expired account setup URL"
392
- msgstr "Nieprawidłowy lub wygasły adres URL konfiguracji konta"
364
+ #: lib/ui-routes/route-helpers.js:82
365
+ msgid "Using credentials from \"%s\""
366
+ msgstr "Używanie poświadczeń z \"%s\""
393
367
 
394
- #: lib/autodetect-imap-settings.js:80
368
+ #: lib/ui-routes/route-helpers.js:132
395
369
  msgid ""
396
- "Microsoft has disabled password-based sign-ins (including app passwords) for "
397
- "Outlook.com, Hotmail.com, and Microsoft 365 email accounts. To continue, "
398
- "please use the \"Sign in with Microsoft\" button to securely connect your "
399
- "account."
370
+ "Connection timed out. This usually occurs if you are behind a firewall or "
371
+ "connecting to the wrong port."
400
372
  msgstr ""
401
- "Firma Microsoft wyłączyła logowanie oparte na hasłach (w tym hasłach "
402
- "aplikacji) dla kont e-mail w usługach Outlook.com, Hotmail.com i Microsoft "
403
- "365. Aby kontynuować, użyj przycisku \"Zaloguj się za pomocą Microsoft\", aby "
404
- "bezpiecznie połączyć swoje konto."
373
+ "Przekroczono limit czasu połączenia. Zwykle dzieje się tak, gdy użytkownik "
374
+ "znajduje się za zaporą sieciową lub łączy się z niewłaściwym portem."
405
375
 
406
- #: lib/ui-routes/account-routes.js:747 lib/ui-routes/account-routes.js:1032
407
- msgid "Couldn't set up account. Try again."
408
- msgstr "Nie udało się założyć konta. Spróbuj ponownie."
376
+ #: lib/ui-routes/route-helpers.js:135
377
+ msgid "The server unexpectedly closed the connection."
378
+ msgstr "Serwer nieoczekiwanie zamknął połączenie."
379
+
380
+ #: lib/ui-routes/route-helpers.js:138
381
+ msgid ""
382
+ "The server unexpectedly closed the connection. This usually happens when "
383
+ "attempting to connect to a TLS port without TLS enabled."
384
+ msgstr ""
385
+ "Serwer nieoczekiwanie zamknął połączenie. Zwykle dzieje się tak podczas "
386
+ "próby połączenia z portem TLS bez włączonego protokołu TLS."
409
387
 
410
- #, fuzzy
411
- #~| msgid "Failed to process request"
412
- #~ msgid "Couldn't process request. Try again."
413
- #~ msgstr "Nie udało się przetworzyć żądania"
388
+ #: lib/ui-routes/route-helpers.js:143
389
+ msgid ""
390
+ "The server refused the connection. This typically occurs if the server is "
391
+ "not running, is overloaded, or you are connecting to the wrong host or port."
392
+ msgstr ""
393
+ "Serwer odmówił połączenia. Zwykle dzieje się tak, gdy serwer nie działa, "
394
+ "jest przeciążony lub łączysz się z niewłaściwym hostem lub portem."
395
+
396
+ #: lib/ui-routes/unsubscribe-routes.js:38
397
+ #: lib/ui-routes/unsubscribe-routes.js:156
398
+ #: lib/ui-routes/unsubscribe-routes.js:173
399
+ #: lib/ui-routes/unsubscribe-routes.js:209
400
+ msgid "Subscription Management"
401
+ msgstr "Zarządzanie subskrypcjami"
402
+
403
+ #: lib/ui-routes/unsubscribe-routes.js:167
404
+ #: lib/ui-routes/unsubscribe-routes.js:202
405
+ msgid "Couldn't process request. Try again."
406
+ msgstr "Nie udało się przetworzyć żądania. Spróbuj ponownie."
407
+
408
+ #: workers/api.js:2956 workers/api.js:3071
409
+ msgid "Requested page not found"
410
+ msgstr "Nie znaleziono żądanej strony"
@@ -24,6 +24,28 @@
24
24
  </div>
25
25
  {{/each}}
26
26
 
27
+ {{#if documentStoreUnavailable}}
28
+ <div class="card border-left-danger mt-4">
29
+ <div class="card-body">
30
+ <div class="row no-gutters align-items-center">
31
+ <div class="col mr-2">
32
+ <div class="text-xs font-weight-bold text-danger text-uppercase mb-1">Document Store unavailable</div>
33
+ <p class="mb-0">The Document Store is enabled in the EmailEngine settings, but the feature is not
34
+ available because EmailEngine was not started with the Document Store enabled. The deprecated
35
+ Document Store only runs when started with the <code>--documentStore.enabled</code> command line
36
+ flag or the <code>EENGINE_DOCUMENT_STORE_ENABLED=true</code> environment variable. Until then the
37
+ document store worker is not running and all Document Store API and configuration endpoints
38
+ return 404. Either restart EmailEngine with the flag, or disable the <code>documentStoreEnabled</code>
39
+ setting to clear this warning.</p>
40
+ </div>
41
+ <div class="col-auto">
42
+ <i class="fas fa-database fa-2x text-gray-300"></i>
43
+ </div>
44
+ </div>
45
+ </div>
46
+ </div>
47
+ {{/if}}
48
+
27
49
 
28
50
  {{#unless hasAccounts}}
29
51
 
package/workers/api.js CHANGED
@@ -67,7 +67,7 @@ const { Account } = require('../lib/account');
67
67
  const settings = require('../lib/settings');
68
68
 
69
69
  const getSecret = require('../lib/get-secret');
70
- const { getESClient } = require('../lib/document-store');
70
+ const { getESClient, documentStoreFeatureEnabled } = require('../lib/document-store');
71
71
 
72
72
  const routesUi = require('../lib/routes-ui');
73
73
 
@@ -2538,8 +2538,10 @@ Include your token in requests using one of these methods:
2538
2538
  // setup template routes
2539
2539
  await templateRoutes({ server, call, CORS_CONFIG });
2540
2540
 
2541
- // setup "chat with email" routes
2542
- await chatRoutes({ server, call, CORS_CONFIG });
2541
+ // setup "chat with email" routes (deprecated Document Store feature; only when enabled)
2542
+ if (documentStoreFeatureEnabled) {
2543
+ await chatRoutes({ server, call, CORS_CONFIG });
2544
+ }
2543
2545
 
2544
2546
  // setup account CRUD routes
2545
2547
  await accountRoutes({
@@ -2562,7 +2564,8 @@ Include your token in requests using one of these methods:
2562
2564
  CORS_CONFIG,
2563
2565
  MAX_ATTACHMENT_SIZE,
2564
2566
  MAX_BODY_SIZE,
2565
- MAX_PAYLOAD_TIMEOUT
2567
+ MAX_PAYLOAD_TIMEOUT,
2568
+ documentStoreFeatureEnabled
2566
2569
  });
2567
2570
 
2568
2571
  // setup export routes
@@ -2735,6 +2738,10 @@ Include your token in requests using one of these methods:
2735
2738
  let systemAlerts = [];
2736
2739
  let authData;
2737
2740
 
2741
+ // Deprecated Document Store: enabled in settings but unavailable because EmailEngine
2742
+ // was not started with the document store gate (--documentStore.enabled / EENGINE_DOCUMENT_STORE_ENABLED).
2743
+ let documentStoreUnavailable = !documentStoreFeatureEnabled && !!showDocumentStore;
2744
+
2738
2745
  switch (request.auth.artifacts && request.auth.artifacts.provider) {
2739
2746
  case 'okta': {
2740
2747
  let profile = request.auth.artifacts.profile || {};
@@ -2861,6 +2868,15 @@ Include your token in requests using one of these methods:
2861
2868
  });
2862
2869
  }
2863
2870
 
2871
+ if (documentStoreUnavailable) {
2872
+ systemAlerts.push({
2873
+ url: '/admin',
2874
+ level: 'danger',
2875
+ icon: 'database',
2876
+ message: `The Document Store is enabled in settings but unavailable. Start EmailEngine with the document store gate to use it, or disable the setting.`
2877
+ });
2878
+ }
2879
+
2864
2880
  if (consts.EE_DOCKER_LEGACY) {
2865
2881
  systemAlerts.push({
2866
2882
  url: 'https://emailengine.app/docker',
@@ -2894,7 +2910,8 @@ Include your token in requests using one of these methods:
2894
2910
  embeddedTemplateHeader,
2895
2911
  embeddedTemplateHtmlHead,
2896
2912
  currentYear: new Date().getFullYear(),
2897
- showDocumentStore,
2913
+ showDocumentStore: documentStoreFeatureEnabled && showDocumentStore,
2914
+ documentStoreUnavailable,
2898
2915
  updateBrowserInfo: !serviceUrl || !language || !timezone,
2899
2916
 
2900
2917
  // Suppress large banner warnings when EENGINE_DISABLE_SETUP_WARNINGS is set