emailengine-app 2.62.2 → 2.63.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/server.js CHANGED
@@ -974,6 +974,16 @@ let spawnWorker = async type => {
974
974
  let isOnline = false;
975
975
  let threadId = worker.threadId;
976
976
 
977
+ // Capture worker crash errors for logging
978
+ worker.on('error', err => {
979
+ logger.error({
980
+ msg: 'Worker thread error',
981
+ type,
982
+ threadId: worker.threadId,
983
+ err
984
+ });
985
+ });
986
+
977
987
  // Handle worker coming online
978
988
  worker.on('online', () => {
979
989
  if (['smtp', 'imapProxy'].includes(type)) {
@@ -1616,11 +1626,20 @@ async function assignAccounts() {
1616
1626
  unassigned.delete(account);
1617
1627
 
1618
1628
  // Notify worker of assignment
1619
- await call(worker, {
1620
- cmd: 'assign',
1621
- account,
1622
- runIndex
1623
- });
1629
+ try {
1630
+ await call(worker, {
1631
+ cmd: 'assign',
1632
+ account,
1633
+ runIndex
1634
+ });
1635
+ } catch (err) {
1636
+ // Roll back -- account was never actually assigned
1637
+ workerAssigned.get(worker).delete(account);
1638
+ assigned.delete(account);
1639
+ unassigned.add(account);
1640
+ logger.error({ msg: 'Failed to assign account to worker', account, threadId: worker.threadId, err });
1641
+ continue;
1642
+ }
1624
1643
 
1625
1644
  // Add delay between assignments to avoid overwhelming the system
1626
1645
  if (CONNECTION_SETUP_DELAY) {
@@ -1641,6 +1660,17 @@ async function assignAccounts() {
1641
1660
  });
1642
1661
  } finally {
1643
1662
  assigning = false;
1663
+
1664
+ // Safety net: if accounts remain unassigned, schedule a retry
1665
+ if (unassigned && unassigned.size > 0 && availableIMAPWorkers.size > 0 && !isClosing) {
1666
+ logger.warn({
1667
+ msg: 'Accounts remain unassigned after assignment pass, scheduling retry',
1668
+ remaining: unassigned.size
1669
+ });
1670
+ setTimeout(() => {
1671
+ assignAccounts().catch(err => logger.error({ msg: 'Retry assignment failed', err }));
1672
+ }, 5000);
1673
+ }
1644
1674
  }
1645
1675
  }
1646
1676
 
@@ -1,6 +1,6 @@
1
1
  <!doctype html><html><head><meta charset="utf-8"><title>EmailEngine Licenses</title><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous"></head><body>
2
2
  <div class="container-fluid">
3
- <h1>EmailEngine v2.62.1</h1><p>EmailEngine includes code from the following software packages:</p>
3
+ <h1>EmailEngine v2.62.2</h1><p>EmailEngine includes code from the following software packages:</p>
4
4
  <table class="table table-sm">
5
5
  <tr><thead class="thead-dark"><th>Package</th><th>Version</th><th>License</th><th>Publisher</th><th>Publisher's Email</th><th>Package URL</th></tr>
6
6
  <tbody>
@@ -66,7 +66,7 @@
66
66
  </tr>
67
67
  <tr>
68
68
  <td><a href="https://npmjs.com/package/@asamuzakjp/dom-selector">@asamuzakjp/dom-selector</a></td>
69
- <td>6.7.8</td>
69
+ <td>6.8.1</td>
70
70
  <td>MIT</td>
71
71
  <td>asamuzaK</td>
72
72
  <td></td>
@@ -146,7 +146,7 @@
146
146
  </tr>
147
147
  <tr>
148
148
  <td><a href="https://npmjs.com/package/@bull-board/api">@bull-board/api</a></td>
149
- <td>6.16.4</td>
149
+ <td>6.19.0</td>
150
150
  <td>MIT</td>
151
151
  <td>felixmosh</td>
152
152
  <td></td>
@@ -156,7 +156,7 @@
156
156
  </tr>
157
157
  <tr>
158
158
  <td><a href="https://npmjs.com/package/@bull-board/hapi">@bull-board/hapi</a></td>
159
- <td>6.16.4</td>
159
+ <td>6.19.0</td>
160
160
  <td>MIT</td>
161
161
  <td>felixmosh</td>
162
162
  <td></td>
@@ -166,7 +166,7 @@
166
166
  </tr>
167
167
  <tr>
168
168
  <td><a href="https://npmjs.com/package/@bull-board/ui">@bull-board/ui</a></td>
169
- <td>6.16.4</td>
169
+ <td>6.19.0</td>
170
170
  <td>MIT</td>
171
171
  <td>felixmosh</td>
172
172
  <td></td>
@@ -216,7 +216,7 @@
216
216
  </tr>
217
217
  <tr>
218
218
  <td><a href="https://npmjs.com/package/@csstools/css-syntax-patches-for-csstree">@csstools/css-syntax-patches-for-csstree</a></td>
219
- <td>1.0.26</td>
219
+ <td>1.0.27</td>
220
220
  <td>MIT-0</td>
221
221
  <td></td>
222
222
  <td></td>
@@ -506,7 +506,7 @@
506
506
  </tr>
507
507
  <tr>
508
508
  <td><a href="https://npmjs.com/package/@hapi/hapi">@hapi/hapi</a></td>
509
- <td>21.4.4</td>
509
+ <td>21.4.5</td>
510
510
  <td>BSD-3-Clause</td>
511
511
  <td></td>
512
512
  <td></td>
@@ -666,7 +666,7 @@
666
666
  </tr>
667
667
  <tr>
668
668
  <td><a href="https://npmjs.com/package/@hapi/tlds">@hapi/tlds</a></td>
669
- <td>1.1.4</td>
669
+ <td>1.1.6</td>
670
670
  <td>BSD-3-Clause</td>
671
671
  <td></td>
672
672
  <td></td>
@@ -785,25 +785,6 @@
785
785
  </td
786
786
  </tr>
787
787
  <tr>
788
- <td><a href="https://npmjs.com/package/@isaacs/balanced-match">@isaacs/balanced-match</a></td>
789
- <td>4.0.1</td>
790
- <td>MIT</td>
791
- <td></td>
792
- <td></td>
793
- <td>
794
- <a href="https://github.com/isaacs/balanced-match">github.com/isaacs/balanced-match</a>
795
- </td
796
- </tr>
797
- <tr>
798
- <td><a href="https://npmjs.com/package/@isaacs/brace-expansion">@isaacs/brace-expansion</a></td>
799
- <td>5.0.1</td>
800
- <td>MIT</td>
801
- <td></td>
802
- <td></td>
803
- <td>
804
- </td
805
- </tr>
806
- <tr>
807
788
  <td><a href="https://npmjs.com/package/@jsdevtools/ono">@jsdevtools/ono</a></td>
808
789
  <td>7.1.3</td>
809
790
  <td>MIT</td>
@@ -855,7 +836,7 @@
855
836
  </tr>
856
837
  <tr>
857
838
  <td><a href="https://npmjs.com/package/@opentelemetry/core">@opentelemetry/core</a></td>
858
- <td>2.5.0</td>
839
+ <td>2.5.1</td>
859
840
  <td>Apache-2.0</td>
860
841
  <td>OpenTelemetry Authors</td>
861
842
  <td></td>
@@ -1484,6 +1465,16 @@
1484
1465
  </td
1485
1466
  </tr>
1486
1467
  <tr>
1468
+ <td><a href="https://npmjs.com/package/balanced-match">balanced-match</a></td>
1469
+ <td>4.0.3</td>
1470
+ <td>MIT</td>
1471
+ <td></td>
1472
+ <td></td>
1473
+ <td>
1474
+ <a href="https://github.com/juliangruber/balanced-match">github.com/juliangruber/balanced-match</a>
1475
+ </td
1476
+ </tr>
1477
+ <tr>
1487
1478
  <td><a href="https://npmjs.com/package/base32.js">base32.js</a></td>
1488
1479
  <td>0.0.1</td>
1489
1480
  <td>MIT</td>
@@ -1545,7 +1536,7 @@
1545
1536
  </tr>
1546
1537
  <tr>
1547
1538
  <td><a href="https://npmjs.com/package/bn.js">bn.js</a></td>
1548
- <td>4.12.2</td>
1539
+ <td>4.12.3</td>
1549
1540
  <td>MIT</td>
1550
1541
  <td>Fedor Indutny</td>
1551
1542
  <td>fedor@indutny.com</td>
@@ -1584,6 +1575,16 @@
1584
1575
  </td
1585
1576
  </tr>
1586
1577
  <tr>
1578
+ <td><a href="https://npmjs.com/package/brace-expansion">brace-expansion</a></td>
1579
+ <td>5.0.2</td>
1580
+ <td>MIT</td>
1581
+ <td></td>
1582
+ <td></td>
1583
+ <td>
1584
+ <a href="https://github.com/juliangruber/brace-expansion">github.com/juliangruber/brace-expansion</a>
1585
+ </td
1586
+ </tr>
1587
+ <tr>
1587
1588
  <td><a href="https://npmjs.com/package/braces">braces</a></td>
1588
1589
  <td>3.0.3</td>
1589
1590
  <td>MIT</td>
@@ -1605,7 +1606,7 @@
1605
1606
  </tr>
1606
1607
  <tr>
1607
1608
  <td><a href="https://npmjs.com/package/bullmq">bullmq</a></td>
1608
- <td>5.67.3</td>
1609
+ <td>5.69.3</td>
1609
1610
  <td>MIT</td>
1610
1611
  <td>Taskforce.sh Inc.</td>
1611
1612
  <td></td>
@@ -2235,7 +2236,7 @@
2235
2236
  </tr>
2236
2237
  <tr>
2237
2238
  <td><a href="https://npmjs.com/package/dotenv">dotenv</a></td>
2238
- <td>17.2.4</td>
2239
+ <td>17.3.1</td>
2239
2240
  <td>BSD-2-Clause</td>
2240
2241
  <td></td>
2241
2242
  <td></td>
@@ -3464,7 +3465,7 @@
3464
3465
  </tr>
3465
3466
  <tr>
3466
3467
  <td><a href="https://npmjs.com/package/imapflow">imapflow</a></td>
3467
- <td>1.2.9</td>
3468
+ <td>1.2.10</td>
3468
3469
  <td>MIT</td>
3469
3470
  <td>Postal Systems O&#xDC;</td>
3470
3471
  <td></td>
@@ -3553,6 +3554,16 @@
3553
3554
  </td
3554
3555
  </tr>
3555
3556
  <tr>
3557
+ <td><a href="https://npmjs.com/package/ioredis">ioredis</a></td>
3558
+ <td>5.9.3</td>
3559
+ <td>MIT</td>
3560
+ <td>Zihua Li</td>
3561
+ <td>i@zihua.li</td>
3562
+ <td>
3563
+ <a href="https://github.com/luin/ioredis">github.com/luin/ioredis</a>
3564
+ </td
3565
+ </tr>
3566
+ <tr>
3556
3567
  <td><a href="https://npmjs.com/package/ip-address">ip-address</a></td>
3557
3568
  <td>10.1.0</td>
3558
3569
  <td>MIT</td>
@@ -4084,7 +4095,7 @@
4084
4095
  </tr>
4085
4096
  <tr>
4086
4097
  <td><a href="https://npmjs.com/package/lru-cache">lru-cache</a></td>
4087
- <td>11.2.5</td>
4098
+ <td>11.2.6</td>
4088
4099
  <td>BlueOak-1.0.0</td>
4089
4100
  <td>Isaac Z. Schlueter</td>
4090
4101
  <td>i@izs.me</td>
@@ -4274,7 +4285,7 @@
4274
4285
  </tr>
4275
4286
  <tr>
4276
4287
  <td><a href="https://npmjs.com/package/minimatch">minimatch</a></td>
4277
- <td>10.1.2</td>
4288
+ <td>10.2.1</td>
4278
4289
  <td>BlueOak-1.0.0</td>
4279
4290
  <td>Isaac Z. Schlueter</td>
4280
4291
  <td>i@izs.me</td>
@@ -4494,16 +4505,6 @@
4494
4505
  </tr>
4495
4506
  <tr>
4496
4507
  <td><a href="https://npmjs.com/package/nodemailer">nodemailer</a></td>
4497
- <td>8.0.0</td>
4498
- <td>MIT-0</td>
4499
- <td>Andris Reinman</td>
4500
- <td></td>
4501
- <td>
4502
- <a href="https://github.com/nodemailer/nodemailer">github.com/nodemailer/nodemailer</a>
4503
- </td
4504
- </tr>
4505
- <tr>
4506
- <td><a href="https://npmjs.com/package/nodemailer">nodemailer</a></td>
4507
4508
  <td>8.0.1</td>
4508
4509
  <td>MIT-0</td>
4509
4510
  <td>Andris Reinman</td>
@@ -4964,7 +4965,7 @@
4964
4965
  </tr>
4965
4966
  <tr>
4966
4967
  <td><a href="https://npmjs.com/package/pino">pino</a></td>
4967
- <td>10.3.0</td>
4968
+ <td>10.3.1</td>
4968
4969
  <td>MIT</td>
4969
4970
  <td>Matteo Collina</td>
4970
4971
  <td>hello@matteocollina.com</td>
@@ -5174,7 +5175,7 @@
5174
5175
  </tr>
5175
5176
  <tr>
5176
5177
  <td><a href="https://npmjs.com/package/qs">qs</a></td>
5177
- <td>6.14.1</td>
5178
+ <td>6.15.0</td>
5178
5179
  <td>BSD-3-Clause</td>
5179
5180
  <td></td>
5180
5181
  <td></td>
@@ -5334,7 +5335,7 @@
5334
5335
  </tr>
5335
5336
  <tr>
5336
5337
  <td><a href="https://npmjs.com/package/resedit">resedit</a></td>
5337
- <td>3.0.1</td>
5338
+ <td>3.0.2</td>
5338
5339
  <td>MIT</td>
5339
5340
  <td>jet</td>
5340
5341
  <td></td>
@@ -5474,7 +5475,7 @@
5474
5475
  </tr>
5475
5476
  <tr>
5476
5477
  <td><a href="https://npmjs.com/package/semver">semver</a></td>
5477
- <td>7.7.3</td>
5478
+ <td>7.7.4</td>
5478
5479
  <td>ISC</td>
5479
5480
  <td>GitHub Inc.</td>
5480
5481
  <td></td>
@@ -5614,7 +5615,7 @@
5614
5615
  </tr>
5615
5616
  <tr>
5616
5617
  <td><a href="https://npmjs.com/package/sonic-boom">sonic-boom</a></td>
5617
- <td>4.2.0</td>
5618
+ <td>4.2.1</td>
5618
5619
  <td>MIT</td>
5619
5620
  <td>Matteo Collina</td>
5620
5621
  <td>hello@matteocollina.com</td>
@@ -5914,7 +5915,7 @@
5914
5915
  </tr>
5915
5916
  <tr>
5916
5917
  <td><a href="https://npmjs.com/package/swagger-ui-dist">swagger-ui-dist</a></td>
5917
- <td>5.31.0</td>
5918
+ <td>5.31.1</td>
5918
5919
  <td>Apache-2.0</td>
5919
5920
  <td></td>
5920
5921
  <td></td>
@@ -5994,7 +5995,7 @@
5994
5995
  </tr>
5995
5996
  <tr>
5996
5997
  <td><a href="https://npmjs.com/package/tldts-core">tldts-core</a></td>
5997
- <td>7.0.22</td>
5998
+ <td>7.0.23</td>
5998
5999
  <td>MIT</td>
5999
6000
  <td>R&#xE9;mi Berson</td>
6000
6001
  <td></td>
@@ -6004,7 +6005,7 @@
6004
6005
  </tr>
6005
6006
  <tr>
6006
6007
  <td><a href="https://npmjs.com/package/tldts">tldts</a></td>
6007
- <td>7.0.22</td>
6008
+ <td>7.0.23</td>
6008
6009
  <td>MIT</td>
6009
6010
  <td>R&#xE9;mi Berson</td>
6010
6011
  <td></td>
@@ -6184,7 +6185,7 @@
6184
6185
  </tr>
6185
6186
  <tr>
6186
6187
  <td><a href="https://npmjs.com/package/undici">undici</a></td>
6187
- <td>7.21.0</td>
6188
+ <td>7.22.0</td>
6188
6189
  <td>MIT</td>
6189
6190
  <td></td>
6190
6191
  <td></td>
@@ -1,7 +1,7 @@
1
1
  msgid ""
2
2
  msgstr ""
3
3
  "Content-Type: text/plain; charset=ascii\n"
4
- "POT-Creation-Date: 2026-02-07 10:08+0000\n"
4
+ "POT-Creation-Date: 2026-02-19 09:51+0000\n"
5
5
 
6
6
  #: views/config/license.hbs:45
7
7
  msgid "%d day"
@@ -62,36 +62,6 @@ msgstr ""
62
62
  msgid "Enter your email address"
63
63
  msgstr ""
64
64
 
65
- #: views/accounts/register/imap.hbs:11
66
- msgid "Your name"
67
- msgstr ""
68
-
69
- #: views/accounts/register/imap.hbs:17
70
- msgid "Enter your full name"
71
- msgstr ""
72
-
73
- #: views/accounts/register/imap.hbs:31
74
- #: views/accounts/register/imap-server.hbs:36
75
- #: views/accounts/register/imap-server.hbs:128
76
- msgid "Password"
77
- msgstr ""
78
-
79
- #: views/accounts/register/imap.hbs:37
80
- msgid "Enter your account password"
81
- msgstr ""
82
-
83
- #: views/accounts/register/imap.hbs:51
84
- msgid "Continue"
85
- msgstr ""
86
-
87
- #: views/accounts/register/index.hbs:2
88
- msgid "Choose your email account provider"
89
- msgstr ""
90
-
91
- #: views/accounts/register/index.hbs:15
92
- msgid "Standard IMAP"
93
- msgstr ""
94
-
95
65
  #: views/accounts/register/imap-server.hbs:19
96
66
  msgid "IMAP"
97
67
  msgstr ""
@@ -101,6 +71,12 @@ msgstr ""
101
71
  msgid "Username"
102
72
  msgstr ""
103
73
 
74
+ #: views/accounts/register/imap-server.hbs:36
75
+ #: views/accounts/register/imap-server.hbs:128
76
+ #: views/accounts/register/imap.hbs:31
77
+ msgid "Password"
78
+ msgstr ""
79
+
104
80
  #: views/accounts/register/imap-server.hbs:45
105
81
  #: views/accounts/register/imap-server.hbs:136
106
82
  msgid "Important"
@@ -207,6 +183,30 @@ msgstr ""
207
183
  msgid "Request failed."
208
184
  msgstr ""
209
185
 
186
+ #: views/accounts/register/index.hbs:2
187
+ msgid "Choose your email account provider"
188
+ msgstr ""
189
+
190
+ #: views/accounts/register/index.hbs:15
191
+ msgid "Standard IMAP"
192
+ msgstr ""
193
+
194
+ #: views/accounts/register/imap.hbs:11
195
+ msgid "Your name"
196
+ msgstr ""
197
+
198
+ #: views/accounts/register/imap.hbs:17
199
+ msgid "Enter your full name"
200
+ msgstr ""
201
+
202
+ #: views/accounts/register/imap.hbs:37
203
+ msgid "Enter your account password"
204
+ msgstr ""
205
+
206
+ #: views/accounts/register/imap.hbs:51
207
+ msgid "Continue"
208
+ msgstr ""
209
+
210
210
  #: lib/routes-ui.js:523
211
211
  #: lib/ui-routes/account-routes.js:60
212
212
  msgid "Delegated"