hridoy-ultimate 8.0.0 → 8.0.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.
Files changed (264) hide show
  1. package/ANALYSIS.md +31 -0
  2. package/AUDIT_REPORT.md +57 -0
  3. package/CHANGELOG.md +40 -322
  4. package/README.md +94 -339
  5. package/advancedSystem.js +95 -0
  6. package/checkUpdate.js +47 -0
  7. package/config.json +51 -0
  8. package/e2ee.js +738 -0
  9. package/examples/basic-bot.js +122 -0
  10. package/examples/e2ee-bot.js +141 -0
  11. package/fca-config.example.json +73 -0
  12. package/index.js +824 -24
  13. package/{src/api/socket/e2ee/native/lib → lib}/index.mjs +65 -107
  14. package/package.json +22 -62
  15. package/scripts/check.js +38 -0
  16. package/src/OldMessage.js +357 -0
  17. package/src/{api/action/addExternalModule.js → addExternalModule.js} +8 -8
  18. package/src/addUserToGroup.js +117 -0
  19. package/src/changeAdminStatus.js +105 -0
  20. package/src/{api/messaging/changeArchivedStatus.js → changeArchivedStatus.js} +17 -15
  21. package/src/{api/action/changeAvatar.js → changeAvatar.js} +33 -32
  22. package/src/changeAvatarV2.js +86 -0
  23. package/src/changeAvt.js +85 -0
  24. package/src/{api/action/changeBio.js → changeBio.js} +22 -19
  25. package/src/{api/messaging/changeBlockedStatus.js → changeBlockedStatus.js} +16 -13
  26. package/src/changeBlockedStatusMqtt.js +75 -0
  27. package/src/changeCover.js +73 -0
  28. package/src/changeGroupImage.js +137 -0
  29. package/src/changeName.js +79 -0
  30. package/src/changeNickname.js +61 -0
  31. package/src/changeThreadColor.js +67 -0
  32. package/src/changeThreadEmoji.js +57 -0
  33. package/src/changeUsername.js +59 -0
  34. package/src/createCommentPost.js +232 -0
  35. package/src/{api/messaging/createNewGroup.js → createNewGroup.js} +26 -24
  36. package/src/createPoll.js +73 -0
  37. package/src/createPost.js +276 -0
  38. package/src/deleteMessage.js +58 -0
  39. package/src/{api/messaging/deleteThread.js → deleteThread.js} +16 -14
  40. package/src/editMessage.js +76 -0
  41. package/src/editMessageOld.js +62 -0
  42. package/src/follow.js +74 -0
  43. package/src/forwardAttachment.js +62 -0
  44. package/src/friendList.js +104 -0
  45. package/src/getAccess.js +112 -0
  46. package/src/getAvatarUser.js +78 -0
  47. package/src/getBotInitialData.js +42 -0
  48. package/src/getCtx.js +5 -0
  49. package/src/{api/action/getCurrentUserID.js → getCurrentUserID.js} +1 -1
  50. package/src/{api/messaging/getEmojiUrl.js → getEmojiUrl.js} +2 -2
  51. package/src/{api/messaging/getFriendsList.js → getFriendsList.js} +19 -16
  52. package/src/{api/messaging/getMessage.js → getMessage.js} +180 -160
  53. package/src/getOptions.js +5 -0
  54. package/src/getRegion.js +7 -0
  55. package/src/{api/threads/getThreadHistory.js → getThreadHistory.js} +132 -114
  56. package/src/getThreadHistoryDeprecated.js +71 -0
  57. package/src/getThreadInfo.js +232 -0
  58. package/src/getThreadInfoDeprecated.js +56 -0
  59. package/src/getThreadList.js +213 -0
  60. package/src/getThreadListDeprecated.js +46 -0
  61. package/src/getThreadPictures.js +59 -0
  62. package/src/getThreadTheme.js +81 -0
  63. package/src/getUID.js +119 -0
  64. package/src/{api/users/getUserID.js → getUserID.js} +18 -22
  65. package/src/getUserInfo.js +66 -0
  66. package/src/handleFriendRequest.js +46 -0
  67. package/src/handleMessageRequest.js +47 -0
  68. package/src/httpGet.js +49 -0
  69. package/src/httpPost.js +48 -0
  70. package/src/httpPostFormData.js +70 -0
  71. package/src/listenMqtt.js +1081 -0
  72. package/src/listenNotification.js +85 -0
  73. package/src/logout.js +18 -0
  74. package/src/markAsDelivered.js +47 -0
  75. package/src/markAsRead.js +72 -0
  76. package/src/markAsReadAll.js +40 -0
  77. package/src/markAsSeen.js +48 -0
  78. package/src/metaTheme.js +189 -0
  79. package/src/muteThread.js +45 -0
  80. package/src/note.js +228 -0
  81. package/src/pinMessage.js +54 -0
  82. package/src/refreshFb_dtsg.js +49 -0
  83. package/src/removeSuspiciousAccount.js +78 -0
  84. package/src/removeUserFromGroup.js +81 -0
  85. package/src/reply.js +442 -0
  86. package/src/{api/messaging/resolvePhotoUrl.js → resolvePhotoUrl.js} +15 -11
  87. package/src/{api/messaging/searchForThread.js → searchForThread.js} +12 -12
  88. package/src/searchFriends.js +140 -0
  89. package/src/searchStickers.js +53 -0
  90. package/src/send.js +46 -0
  91. package/src/sendButtons.js +163 -0
  92. package/src/sendComment.js +159 -0
  93. package/src/sendFriendRequest.js +112 -0
  94. package/src/sendMessage.js +441 -0
  95. package/src/sendMessageMqtt.js +323 -0
  96. package/src/sendTypingIndicator.js +68 -0
  97. package/src/sendTypingIndicatorV2.js +22 -0
  98. package/src/setActiveStatus.js +92 -0
  99. package/src/setMessageReaction.js +150 -0
  100. package/src/setMessageReactionMqtt.js +104 -0
  101. package/src/setMessageReactionSafe.js +44 -0
  102. package/src/{api/action/setPostReaction.js → setPostReaction.js} +31 -23
  103. package/src/setProfileGuard.js +44 -0
  104. package/src/setProfileLock.js +97 -0
  105. package/src/setStoryReaction.js +133 -0
  106. package/src/setStorySeen.js +108 -0
  107. package/src/setThreadTheme.js +102 -0
  108. package/src/setTitle.js +92 -0
  109. package/src/shareContact.js +110 -0
  110. package/src/shareLink.js +59 -0
  111. package/src/stopListenMqtt.js +60 -0
  112. package/src/storyManager.js +357 -0
  113. package/src/suggestFriend.js +132 -0
  114. package/src/{api/messaging/threadColors.js → threadColors.js} +5 -2
  115. package/src/{api/action/unfriend.js → unfriend.js} +14 -14
  116. package/src/unsendMessage.js +68 -0
  117. package/src/uploadAttachment.js +115 -0
  118. package/test/fixes-1_2_4.test.js +118 -0
  119. package/test/mqtt-stop.test.js +32 -0
  120. package/test/reaction-mqtt.test.js +57 -0
  121. package/utils.js +3056 -0
  122. package/DOCS.md +0 -2712
  123. package/func/checkUpdate.js +0 -7
  124. package/func/logAdapter.js +0 -33
  125. package/func/logger.js +0 -48
  126. package/index.d.ts +0 -751
  127. package/module/config.js +0 -43
  128. package/module/login.js +0 -135
  129. package/module/loginHelper.js +0 -1381
  130. package/module/options.js +0 -49
  131. package/src/api/action/dismissScrapingWarning.js +0 -50
  132. package/src/api/action/enableAutoSaveAppState.js +0 -73
  133. package/src/api/action/handleFriendRequest.js +0 -57
  134. package/src/api/action/logout.js +0 -76
  135. package/src/api/action/refreshFb_dtsg.js +0 -47
  136. package/src/api/http/httpGet.js +0 -46
  137. package/src/api/http/httpPost.js +0 -52
  138. package/src/api/http/postFormData.js +0 -47
  139. package/src/api/messaging/addUserToGroup.js +0 -68
  140. package/src/api/messaging/changeAdminStatus.js +0 -126
  141. package/src/api/messaging/changeGroupImage.js +0 -91
  142. package/src/api/messaging/changeNickname.js +0 -70
  143. package/src/api/messaging/changeThreadColor.js +0 -79
  144. package/src/api/messaging/changeThreadEmoji.js +0 -111
  145. package/src/api/messaging/createPoll.js +0 -46
  146. package/src/api/messaging/createThemeAI.js +0 -98
  147. package/src/api/messaging/deleteMessage.js +0 -136
  148. package/src/api/messaging/editMessage.js +0 -105
  149. package/src/api/messaging/forwardAttachment.js +0 -57
  150. package/src/api/messaging/forwardMessage.js +0 -134
  151. package/src/api/messaging/getThemePictures.js +0 -62
  152. package/src/api/messaging/handleMessageRequest.js +0 -65
  153. package/src/api/messaging/markAsDelivered.js +0 -69
  154. package/src/api/messaging/markAsRead.js +0 -110
  155. package/src/api/messaging/markAsReadAll.js +0 -56
  156. package/src/api/messaging/markAsSeen.js +0 -68
  157. package/src/api/messaging/muteThread.js +0 -50
  158. package/src/api/messaging/pinMessage.js +0 -115
  159. package/src/api/messaging/removeUserFromGroup.js +0 -62
  160. package/src/api/messaging/scheduler.js +0 -264
  161. package/src/api/messaging/sendBroadcast.js +0 -93
  162. package/src/api/messaging/sendMessage.js +0 -269
  163. package/src/api/messaging/sendTypingIndicator.js +0 -90
  164. package/src/api/messaging/sessionGuard.js +0 -130
  165. package/src/api/messaging/setMessageReaction.js +0 -109
  166. package/src/api/messaging/setTitle.js +0 -124
  167. package/src/api/messaging/shareContact.js +0 -98
  168. package/src/api/messaging/unsendMessage.js +0 -105
  169. package/src/api/messaging/uploadAttachment.js +0 -493
  170. package/src/api/socket/OldMessage.js +0 -199
  171. package/src/api/socket/core/connectMqtt.js +0 -277
  172. package/src/api/socket/core/emitAuth.js +0 -103
  173. package/src/api/socket/core/getSeqID.js +0 -331
  174. package/src/api/socket/core/getTaskResponseData.js +0 -25
  175. package/src/api/socket/core/parseDelta.js +0 -387
  176. package/src/api/socket/detail/buildStream.js +0 -215
  177. package/src/api/socket/detail/constants.js +0 -28
  178. package/src/api/socket/e2ee/crypto.js +0 -173
  179. package/src/api/socket/e2ee/index.js +0 -959
  180. package/src/api/socket/e2ee/localMediaServer.js +0 -59
  181. package/src/api/socket/e2ee/mediaDecode.js +0 -155
  182. package/src/api/socket/e2ee/native/NOTICE.md +0 -29
  183. package/src/api/socket/e2ee/native/nativeMediaBridge.js +0 -273
  184. package/src/api/socket/e2ee/proto/ArmadilloApplication.proto +0 -281
  185. package/src/api/socket/e2ee/proto/ArmadilloICDC.proto +0 -14
  186. package/src/api/socket/e2ee/proto/ConsumerApplication.proto +0 -232
  187. package/src/api/socket/e2ee/proto/MessageApplication.proto +0 -82
  188. package/src/api/socket/e2ee/proto/MessageTransport.proto +0 -77
  189. package/src/api/socket/e2ee/proto/WACommon.proto +0 -66
  190. package/src/api/socket/e2ee/proto/WAMediaTransport.proto +0 -176
  191. package/src/api/socket/e2ee/proto/proto-writer.ts +0 -76
  192. package/src/api/socket/e2ee/protocol.js +0 -196
  193. package/src/api/socket/e2ee/ratchet.js +0 -219
  194. package/src/api/socket/e2ee/store.js +0 -182
  195. package/src/api/socket/e2ee/vendor/fme/dist/index.cjs +0 -6477
  196. package/src/api/socket/e2ee/vendor/fme/proto/ArmadilloApplication.proto +0 -281
  197. package/src/api/socket/e2ee/vendor/fme/proto/ArmadilloICDC.proto +0 -14
  198. package/src/api/socket/e2ee/vendor/fme/proto/ConsumerApplication.proto +0 -232
  199. package/src/api/socket/e2ee/vendor/fme/proto/MessageApplication.proto +0 -82
  200. package/src/api/socket/e2ee/vendor/fme/proto/MessageTransport.proto +0 -77
  201. package/src/api/socket/e2ee/vendor/fme/proto/WACommon.proto +0 -66
  202. package/src/api/socket/e2ee/vendor/fme/proto/WAMediaTransport.proto +0 -176
  203. package/src/api/socket/listenE2EE.js +0 -85
  204. package/src/api/socket/listenMqtt.js +0 -492
  205. package/src/api/socket/middleware/index.js +0 -216
  206. package/src/api/socket/sendMessage.js +0 -331
  207. package/src/api/socket/sendMessageMqtt.js +0 -69
  208. package/src/api/threads/getThreadInfo.js +0 -329
  209. package/src/api/threads/getThreadList.js +0 -293
  210. package/src/api/threads/getThreadPictures.js +0 -78
  211. package/src/api/users/getUserInfo.js +0 -402
  212. package/src/api/users/getUserInfoV2.js +0 -134
  213. package/src/app/MessengerBot.js +0 -209
  214. package/src/app/MessengerContext.js +0 -32
  215. package/src/app/createFcaClient.js +0 -136
  216. package/src/app/threadInfoRealtimeSync.js +0 -284
  217. package/src/core/sendReqMqtt.js +0 -96
  218. package/src/database/helpers.js +0 -53
  219. package/src/database/models/index.js +0 -88
  220. package/src/database/models/thread.js +0 -50
  221. package/src/database/models/user.js +0 -46
  222. package/src/database/threadData.js +0 -94
  223. package/src/database/userData.js +0 -98
  224. package/src/remote/remoteClient.js +0 -123
  225. package/src/utils/antiSuspension.js +0 -219
  226. package/src/utils/broadcast.js +0 -51
  227. package/src/utils/client.js +0 -10
  228. package/src/utils/constants.js +0 -23
  229. package/src/utils/cookies.js +0 -85
  230. package/src/utils/fingerprint.js +0 -101
  231. package/src/utils/format/attachment.js +0 -357
  232. package/src/utils/format/cookie.js +0 -9
  233. package/src/utils/format/date.js +0 -50
  234. package/src/utils/format/decode.js +0 -44
  235. package/src/utils/format/delta.js +0 -195
  236. package/src/utils/format/ids.js +0 -64
  237. package/src/utils/format/index.js +0 -64
  238. package/src/utils/format/message.js +0 -88
  239. package/src/utils/format/presence.js +0 -132
  240. package/src/utils/format/readTyp.js +0 -44
  241. package/src/utils/format/thread.js +0 -42
  242. package/src/utils/format/utils.js +0 -141
  243. package/src/utils/headers.js +0 -125
  244. package/src/utils/humanizer.js +0 -256
  245. package/src/utils/loginParser/autoLogin.js +0 -125
  246. package/src/utils/loginParser/extractDtsg.js +0 -44
  247. package/src/utils/loginParser/helpers.js +0 -43
  248. package/src/utils/loginParser/index.js +0 -10
  249. package/src/utils/loginParser/parseAndCheckLogin.js +0 -241
  250. package/src/utils/loginParser/textUtils.js +0 -28
  251. package/src/utils/nexca-logger.js +0 -144
  252. package/src/utils/nexca-utils.js +0 -687
  253. package/src/utils/request/client.js +0 -26
  254. package/src/utils/request/config.js +0 -23
  255. package/src/utils/request/defaults.js +0 -46
  256. package/src/utils/request/helpers.js +0 -46
  257. package/src/utils/request/index.js +0 -17
  258. package/src/utils/request/methods.js +0 -163
  259. package/src/utils/request/proxy.js +0 -21
  260. package/src/utils/request/retry.js +0 -77
  261. package/src/utils/request/sanitize.js +0 -49
  262. package/src/utils/versionCheck.js +0 -47
  263. /package/{src/api/socket/e2ee/native/build → build}/messagix.dll +0 -0
  264. /package/{src/api/socket/e2ee/native/build → build}/messagix.so +0 -0
package/ANALYSIS.md ADDED
@@ -0,0 +1,31 @@
1
+ # Analysis of the packages reviewed for toru-fca v1.2.1
2
+
3
+ ## Lineages
4
+ | Group | Packages | Notes |
5
+ |---|---|---|
6
+ | A (toru line) | HRIDOY-FCA 2.0.0, ST-FCA 1.2.29, toru-fca 1.1.0 / 1.2.0 | ST ≈ HRIDOY (only index/config/checkUpdate differ). toru 1.2.0 rewrote listenMqtt, refreshFb_dtsg, logout, sendMessage, stopListenMqtt, sendTypingIndicator, index. **Used as base.** |
7
+ | B (eryxenx line) | @eryxenx/fca 1.0.0 / 1.0.4 / 1.1.9, fca-eryxenx-merged, fca-abalcdiokay | ~75% identical files. TypeScript-free but different architecture (src/api/*, E2EE via Signal/koffi). |
8
+ | C (native line) | fca-native 5.0.0, Metachat 1.2.2 | Nearly the same code; adds ErrorHandler, SessionRecovery, rate limiter, etc. |
9
+ | D | shadowx-fca 10.8.0 | B-like plus extra helpers (unsendOnReaction, listenSpeed, reaction v2...). |
10
+ | E | xtreme-fca 1.0.2 | Single bundled dist (TS source not included). No anti-logout, no E2EE. |
11
+
12
+ ## Security findings (NOT merged)
13
+ - **Third-party login API:** group B (`module/loginHelper.js`, default `apiServer: https://minhdong.site`) and the fca-native example config (`https://donixdev.com`) can POST **email, password and the 2FA secret** to that server (`loginViaAPI` / `tokensViaAPI`). It only runs when `autoLogin:true`, but it is a credential-leak risk. Not included. toru-fca logs in only directly to facebook.com.
14
+ - **ST-FCA / HRIDOY `checkUpdate.js`** runs `npm install` automatically. Not included (toru's version only prints a notice).
15
+ - **remoteClient.js** (group B) opens a WebSocket to an arbitrary configured URL and accepts remote commands. Opt-in, but not included.
16
+ - **fca-abalcdiokay and fca-eryxenx-merged ship `Fca_Database/database.sqlite` containing `app_state_backups` rows** — most likely a saved Facebook session (cookies). I did not read it. If it is your account, treat it as exposed and log that session out / change the password. It is NOT in toru-fca.
17
+ - ST/HRIDOY `getUID` uses id.traodoisub.com / api.findids.net (username → uid). Present in toru base already; sends only a public username/URL.
18
+
19
+ ## Ideas ported into 1.2.1
20
+ - shadowx `setMessageReactionv2` → `setMessageReactionSafe` (MQTT first, HTTP retry fallback).
21
+ - Stale-MQTT-client guard (eryxenx `isActiveClient` idea) → `ctx.mqttClient !== mqttClient` guards.
22
+ - Reconnect backoff + old-client teardown (eryxenx/native CriticalBugFixes idea).
23
+
24
+ ## Not ported (and why)
25
+ - E2EE native binaries (messagix .so/.dll, ~17 MB each) — platform-specific, unverified; toru keeps its optional bridge, off by default.
26
+ - fca-native resilience classes (ConnectionPool, RateLimit, Monitoring...) — large, overlapping with what toru already has; would add risk.
27
+ - Theme/AI-theme, broadcast, scheduler, spy, bypassScrap modules — not needed for your goals; "spy/bypassScrap" are scraping-oriented.
28
+ - xtreme — compiled bundle only, cannot be reviewed line by line.
29
+
30
+ ## Limits of this review
31
+ No network, no real Facebook cookie: nothing was run against Facebook. Code was syntax-checked and key functions stub-tested.
@@ -0,0 +1,57 @@
1
+ # TORU-FCA 1.2.4 — Defect Fix Addendum
2
+
3
+ Found by a static review of the 1.2.3 archive (syntax check, require-resolution, TypeScript `checkJs` undefined-name scan, manual reading) and fixed in 1.2.4:
4
+
5
+ | # | File | Defect | Status |
6
+ |---|---|---|---|
7
+ | 1 | src/listenMqtt.js | `getSeqID` not in scope inside `scheduleReconnect` -> ReferenceError, auto-reconnect dead | Fixed + regression test |
8
+ | 2 | src/changeCover.js | `log` never required | Fixed + test |
9
+ | 3 | src/createCommentPost.js | `calback` typo; `image` undefined; errors resolved as success | Fixed + tests |
10
+ | 4 | package.json | `form-data`, `https-proxy-agent` undeclared; 3 unused deps | Fixed |
11
+ | 5 | checkUpdate.js | version hard-coded 1.2.1 | Fixed + test |
12
+ | 6 | fca-config.example.json | stale version 1.1.0 | Fixed |
13
+ | 7 | 5 src files | CRLF line endings | Normalised |
14
+
15
+ Not changed / still open: `yumi-json-bigint` is pinned to `*` (could not look up a safe version offline); no live Facebook/MQTT test was possible; the 1.2.3 limitations below still apply.
16
+
17
+ ---
18
+
19
+ # (previous) TORU-FCA 1.2.3 — Comparative Audit and Second-Stage Patch Report
20
+
21
+ ## Scope
22
+ This is a static source review and local unit-test run using the supplied TORU-FCA and HRIDOY-FCA archives. No Facebook account, live session, or production Messenger traffic was used. Other FCA archives were used as comparison references, not as proof of runtime correctness.
23
+
24
+ ## Changes carried into 1.2.3
25
+
26
+ ### MQTT lifecycle
27
+ - Clear an existing reconnect timer and dead-connection watchdog when `listenMqtt()` replaces/restarts the listener.
28
+ - Reject and remove pending `ctx.reqCallbacks` on current MQTT transport errors and close events, instead of leaving callbacks waiting until their individual timeout.
29
+ - On explicit `stopListenMqtt()`, clear pending request callbacks with an error and empty the callback map, including when no client is currently present.
30
+ - Added a unit test for pending callback cleanup on explicit stop.
31
+
32
+ ### E2EE bridge lifecycle
33
+ - Track the E2EE reconnect timer in bridge state and ensure repeated `disconnected` events do not create multiple reconnect timers.
34
+ - Use bounded exponential backoff with jitter and `unref()` the timer so it does not keep the Node process alive by itself.
35
+ - Clear reconnect timers on successful connect and explicit disconnect.
36
+ - Disable the native client's own auto-reconnect option and let TORU's wrapper manage retries, avoiding two competing retry managers.
37
+
38
+ ## Local verification
39
+ - `node --check` passed for `index.js`, `e2ee.js`, all `src/*.js` and all `test/*.js` files.
40
+ - `npm test`: 3 tests passed, 0 failed.
41
+ - `npm run check`: passed.
42
+ - `npm pack --dry-run`: package contents validated for `toru-fca@1.2.3`.
43
+ - The publishable source archive excludes obvious session filenames (`cookie.txt`, `appstate.json`, `*.session`). This does not prove every file is free of secrets; review before publishing.
44
+
45
+ ## Important limitations / not verified
46
+ 1. No live MQTT integration test was run. Reconnect timing, subscription restoration, sequence ID refresh, and callback cleanup still need a controlled integration test.
47
+ 2. No E2EE native bridge was loaded. The package archive does not bundle the required native `build/messagix` runtime binary, so E2EE connection, key persistence, and message delivery remain unverified.
48
+ 3. No multi-hour memory/listener soak test was run.
49
+ 4. `api.logout()` intentionally blocks logout and invokes its callback as success in the existing design. This remains misleading API behavior and should be redesigned in a separately documented breaking-change-safe patch.
50
+ 5. Reaction MQTT acknowledgment may confirm a transport/task response rather than proving the final reaction is visible to recipients. Timeout delivery remains unknown.
51
+ 6. No patch can guarantee Facebook session persistence or prevent server-side account restrictions.
52
+
53
+ ## Recommended next steps
54
+ - Test MQTT disconnect/reconnect and manual stop in a sandbox using mocked sockets before using a live account.
55
+ - Confirm that the native E2EE client supports repeated `connect()` calls on the same instance after a disconnect; if not, recreate the client safely during retries and detach old listeners.
56
+ - Add GoatBot API compatibility tests and run a controlled 2–6 hour heap/RSS/listener soak test.
57
+ - Inspect all archive contents for credentials/session data before publishing.
package/CHANGELOG.md CHANGED
@@ -1,325 +1,43 @@
1
1
  # Changelog
2
2
 
3
- All notable changes to this project are documented in this file.
3
+ ## 8.0.1
4
+ - Rename: package/branding is now `hridoy-ultimate` (was `toru-fca`) in banner, logs, update check, README, examples and config comments.
5
+ - Update check env var `HRIDOY_ULTIMATE_NO_UPDATE_CHECK` added (old `TORU_FCA_NO_UPDATE_CHECK` still honoured).
6
+ - Internal globals (`global._toruFcaConfig`, `_toruFcaInitDone`) intentionally unchanged for backward compatibility.
7
+
8
+ ## 1.2.4
9
+ - Fix (critical): `scheduleReconnect()` called `getSeqID()` which is only defined inside the module factory, so every MQTT reconnect threw `ReferenceError` in a timer. Now exposed as `ctx._getSeqID` and called with a try/catch.
10
+ - Fix: `changeCover` used `log` without requiring `npmlog`.
11
+ - Fix: `createCommentPost` typo `calback`, undefined `image` in attachment error, and `cb(null, err)` resolving errors as success (now rejects).
12
+ - Fix: `package.json` declares `form-data` and `https-proxy-agent` (were required but undeclared); removed unused `chalk`, `tough-cookie`, `protobufjs`.
13
+ - Fix: `checkUpdate.js` hard-coded version 1.2.1; now read from `package.json`.
14
+ - Chore: example config version synced; CRLF -> LF in `reply.js`, `getUID.js`, `httpGet.js`, `httpPost.js`, `changeAvt.js`.
15
+ - Add: `scripts/check.js` (`npm run check`) and `test/fixes-1_2_4.test.js` (6 regression tests, incl. a reconnect test verified to fail on the old code).
16
+
17
+ ## 1.2.3
18
+ - Fix: E2EE reconnect timers are tracked, deduplicated, bounded with exponential backoff, and cleared on explicit disconnect.
19
+ - Fix: TORU owns E2EE reconnect scheduling to avoid competing reconnect managers.
20
+ - Fix: MQTT listener replacement clears stale reconnect/watchdog timers.
21
+ - Fix: pending MQTT request callbacks are failed and cleaned up on transport error/close or explicit stop.
22
+ - Add: regression test for pending MQTT callback cleanup on stop.
23
+
24
+ ## 1.2.2
25
+ - Fix: reaction MQTT requests now reject on missing acknowledgement instead of assuming success.
26
+ - Fix: reaction MQTT callback and Promise settle once and share the same result.
27
+ - Fix: forward explicit MQTT response errors to request callbacks.
28
+ - Fix: callback type checks no longer execute user callbacks as a test (pin/edit/block helpers).
29
+ - Fix: atomic session writes use unique temporary names and restrictive file permissions.
30
+ - Add: Node.js syntax-check script and focused MQTT reaction tests.
31
+
32
+
33
+ ## 1.2.1
34
+ - Fix: setMessageReactionMqtt invoked the user callback prematurely / threw synchronously; now Promise+callback, real ack.
35
+ - Add: `/ls_resp` dispatch to `ctx.reqCallbacks` (reaction/pin/block helpers finally get acks).
36
+ - Add: richer `message_reaction` event (off, action, isGroup, isSingleUser, null-safe).
37
+ - Fix: stale MQTT client events caused duplicate reconnects; old client is now torn down first.
38
+ - Fix: getSeqID transient failure during reconnect no longer kills the listener (backoff retry).
39
+ - Fix: cookie expiry extension edited a copy; now updates the live jar.
40
+ - Fix: login callback double-fire guard.
41
+ - Change: uncaughtException logs stack for non-network errors.
42
+ - Change: e2ee disabled by default; spinner TTY-only; update check opt-out.
4
43
 
5
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html) where applicable.
6
-
7
- ---
8
-
9
- ## [4.0.0] - 2026-06-10
10
-
11
- ### Major — NEXCA Engine Integration
12
-
13
- - **MQTT**: nexca v1.4.11 এর `listenMqtt.js` দিয়ে replace — better stability, autoReconnect, jitter
14
- - **E2EE**: Signal Protocol encrypted conversations support (`api.connectE2EE()`, `api.listenE2EE()`, `api.e2ee.*`)
15
- - **sessionGuard**: appstate auto-save every 3min, corruption guard, auto-backup (`api.sessionGuard()`)
16
- - **sendBroadcast**: rate-limited multi-thread broadcast (`api.sendBroadcast(msg, threadIDs, opts)`)
17
- - **sendMessage**: nexca version (MQTT-first + HTTP fallback, better attachment handling)
18
- - **OldMessage**: nexca HTTP-only send, `sendMessageDM` shorthand
19
- - All toru-ultimate API files preserved (GoatBot compatible signatures)
20
- - Copyright: toru-ultimate by HR ID OY
21
-
22
- ---
23
-
24
- ## [3.1.0] - 2026-06-09
25
-
26
- ### Fixed (MQTT stability — account safety)
27
-
28
- - **`connectMqtt.js`: `isActiveClient()` guard added** — stale/previous MQTT client এর events আর process হবে না। Multiple reconnect race condition বন্ধ।
29
- - **`connectMqtt.js`: Subscribe → wait SUBACK → then publish** — আগে `topics.forEach(subscribe)` করে immediately publish হতো। Facebook এটাকে invalid sequence ধরে "Connection refused: No subscription existed" দিয়ে socket বন্ধ করত। এখন callback-based subscribe দিয়ে SUBACK পাওয়ার পরেই publish।
30
- - **`connectMqtt.js`: `connectTimeout` 5000ms → 12000ms** — slow network এ premature timeout থেকে logout বন্ধ।
31
- - **`connectMqtt.js`: `T_MS_WAIT_TIMEOUT_MS` 5000ms → 8000ms** — slow server response এ needless reconnect cycle বন্ধ।
32
- - **`connectMqtt.js`: `close`/`disconnect` handlers এ `autoReconnect` যোগ** — আগে close/disconnect এ reconnect হতো না। বট offline হয়ে যেত।
33
- - **`connectMqtt.js`: Previous client cleanup before new connection** — stale client memory leak বন্ধ।
34
- - **`connectMqtt.js`: Reconnect jitter (±400ms)** — একসাথে অনেক reconnect storm কমাবে।
35
-
36
- ---
37
-
38
- ## [3.0.29] - 2026-02-22
39
-
40
- - Maintenance release (hotfix / version bump).
41
-
42
- ## [3.0.30] - 2026-02-26
43
-
44
- - **Security & supply chain**
45
- - Removed legacy/self-dependency and old HTTP stack (`request`, `sqlite3`, `npmlog`), pinned `axios` to a secure version, and cleaned up `npm audit` findings (no Critical/High CVEs in runtime deps).
46
- - Added `SECURITY.md`, restricted the published files via `package.json.files` (no Horizon refs, no bundled node_modules) and wired `npm publish --provenance` into CI for verifiable builds.
47
- - **Event-driven core**
48
- - Promoted the `api` object to an `EventEmitter` with lifecycle events: `sessionExpired`, `autoLoginSuccess`, `autoLoginFailed`, `checkpoint`/`checkpoint_282`/`checkpoint_956`, `loginBlocked`, `rateLimit`, `networkError`.
49
- - Hooked these into `loginParser` and the HTTP layer so consumers can react to login, checkpoint, and network conditions without brittle error-string matching.
50
- - **Thread/User info & DB-backed anti-get-info**
51
- - Refactored `getThreadInfo` and `getUserInfo` to use GraphQL batch calls with optional SQLite caching (via Sequelize models), reducing repeated Facebook requests and aligning with Horizon-style anti-get-info behavior.
52
- - Added configuration toggles in `fca-config.json` (`antiGetInfo.AntiGetThreadInfo`, `antiGetInfo.AntiGetUserInfo`) to switch between DB-backed and legacy behaviors when needed.
53
- - **Remote control & analytics**
54
- - Introduced a lightweight WebSocket **remote control client** (`src/remote/remoteClient.js`) driven by `remoteControl` config, emitting `remoteConnected`, `remoteDisconnected`, `remoteStop`, `remoteBroadcast`, and `remoteMessage` events for integration with external dashboards.
55
- - Taught the MQTT layer to update per-thread statistics in SQLite via an atomic `Thread.increment("messageCount")` on each message, enabling future analytics (e.g. “most active threads”) without impacting message latency.
56
- - **Docs & utilities**
57
- - Updated `README.md`, `DOCS.md`, and `docs/ARCHITECTURE.md` to document the new event system, DB caching behavior, remote control, proxy configuration, and the optional `broadcast` helper.
58
-
59
- ## [3.0.28] - 2026-02-22
60
-
61
- - Maintenance release (hotfix / version bump).
62
-
63
- ## [3.0.27] - 2026-02-22
64
-
65
- - Maintenance release (hotfix / version bump).
66
-
67
- ## [3.0.25] - 2026-02-05
68
-
69
- - Maintenance release (hotfix / version bump).
70
-
71
- ## [3.0.23] - 2026-01-30
72
-
73
- - Maintenance release (hotfix / version bump).
74
-
75
- ## [3.0.22] - 2026-01-07
76
-
77
- - Maintenance release (hotfix / version bump).
78
-
79
- ## [3.0.21] - 2025-12-31
80
-
81
- - Maintenance release (hotfix / version bump).
82
-
83
- ## [3.0.20] - 2025-12-31
84
-
85
- - Maintenance release (hotfix / version bump).
86
-
87
- ## [3.0.19] - 2025-12-31
88
-
89
- - Maintenance release (hotfix / version bump).
90
-
91
- ## [3.0.17] - 2025-12-16
92
-
93
- - Maintenance release (hotfix / version bump).
94
-
95
- ## [3.0.15] - 2025-12-12
96
-
97
- - Maintenance release (hotfix / version bump).
98
-
99
- ## [3.0.12] - 2025-12-05
100
-
101
- - Maintenance release (hotfix / version bump).
102
-
103
- ## [3.0.11] - 2025-12-05
104
-
105
- - Maintenance release (hotfix / version bump).
106
-
107
- ## [3.0.10] - 2025-12-05
108
-
109
- - Maintenance release (hotfix / version bump).
110
-
111
- ## [3.0.9] - 2025-12-05
112
-
113
- - Maintenance release (hotfix / version bump).
114
-
115
- ## [3.0.8] - 2025-11-27
116
-
117
- - Maintenance release (hotfix / version bump).
118
-
119
- ## [3.0.7] - 2025-11-27
120
-
121
- - Maintenance release (hotfix / version bump).
122
-
123
- ## [3.0.6] - 2025-11-27
124
-
125
- - Maintenance release (hotfix / version bump).
126
-
127
- ## [3.0.5] - 2025-11-27
128
-
129
- - Maintenance release (hotfix / version bump).
130
-
131
- ## [3.0.4] - 2025-11-27
132
-
133
- - Maintenance release (hotfix / version bump).
134
-
135
- ## [3.0.3] - 2025-11-27
136
-
137
- - Maintenance release (hotfix / version bump).
138
-
139
- ## [3.0.2] - 2025-11-27
140
-
141
- - Maintenance release (hotfix / version bump).
142
-
143
- ## [2.0.32] - 2025-10-30
144
-
145
- - Maintenance release (hotfix / version bump).
146
-
147
- ## [2.0.31] - 2025-10-27
148
-
149
- - Maintenance release (hotfix / version bump).
150
-
151
- ## [2.0.30] - 2025-10-19
152
-
153
- - Maintenance release (hotfix / version bump).
154
-
155
- ## [2.0.29] - 2025-10-19
156
-
157
- - Maintenance release (hotfix / version bump).
158
-
159
- ## [2.0.28] - 2025-10-18
160
-
161
- - Maintenance release (hotfix / version bump).
162
-
163
- ## [2.0.27] - 2025-10-18
164
-
165
- - Maintenance release (hotfix / version bump).
166
-
167
- ## [2.0.26] - 2025-10-16
168
-
169
- - Maintenance release (hotfix / version bump).
170
-
171
- ## [2.0.25] - 2025-10-12
172
-
173
- - Maintenance release (hotfix / version bump).
174
-
175
- ## [2.0.24] - 2025-10-11
176
-
177
- - Maintenance release (hotfix / version bump).
178
-
179
- ## [2.0.23] - 2025-10-11
180
-
181
- - Maintenance release (hotfix / version bump).
182
-
183
- ## [2.0.22] - 2025-10-09
184
-
185
- - Maintenance release (hotfix / version bump).
186
-
187
- ## [2.0.21] - 2025-10-08
188
-
189
- - Maintenance release (hotfix / version bump).
190
-
191
- ## [2.0.20] - 2025-10-08
192
-
193
- - **Added:** Config option to enable/disable `autoLogin`.
194
- - **Added:** Auto-update feature (configurable).
195
-
196
- ## [2.0.19] - 2025-10-07
197
-
198
- - Maintenance release (hotfix / version bump).
199
-
200
- ## [2.0.18] - 2025-10-07
201
-
202
- - Maintenance release (hotfix / version bump).
203
-
204
- ## [2.0.17] - 2025-10-07
205
-
206
- - Maintenance release (hotfix / version bump).
207
-
208
- ## [2.0.16] - 2025-10-07
209
-
210
- - Maintenance release (hotfix / version bump).
211
-
212
- ## [2.0.15] - 2025-10-07
213
-
214
- - Maintenance release (hotfix / version bump).
215
-
216
- ## [2.0.14] - 2025-10-07
217
-
218
- - Maintenance release (hotfix / version bump).
219
-
220
- ## [2.0.13] - 2025-10-07
221
-
222
- - Maintenance release (hotfix / version bump).
223
-
224
- ## [2.0.12] - 2025-10-07
225
-
226
- - Maintenance release (hotfix / version bump).
227
-
228
- ## [2.0.11] - 2025-10-07
229
-
230
- - Maintenance release (hotfix / version bump).
231
-
232
- ## [2.0.10] - 2025-10-07
233
-
234
- - Maintenance release (hotfix / version bump).
235
-
236
- ## [2.0.9] - 2025-10-07
237
-
238
- - Maintenance release (hotfix / version bump).
239
-
240
- ## [2.0.8] - 2025-10-07
241
-
242
- - Maintenance release (hotfix / version bump).
243
-
244
- ## [2.0.7] - 2025-10-06
245
-
246
- - Maintenance release (hotfix / version bump).
247
-
248
- ## [2.0.6-beta] - 2025-10-06
249
-
250
- - Beta release (hotfix / version bump).
251
-
252
- ## [2.0.5] - 2025-10-06
253
-
254
- - **Added:** Toggle for `autoLogin` in config.
255
- - **Added:** Auto-update feature.
256
-
257
- ## [2.0.4] - 2025-10-05
258
-
259
- - Maintenance release (hotfix / version bump).
260
-
261
- ## [2.0.3] - 2025-10-05
262
-
263
- - Maintenance release (hotfix / version bump).
264
-
265
- ## [2.0.2] - 2025-10-05
266
-
267
- - Maintenance release (hotfix / version bump).
268
-
269
- ## [2.0.1] - 2025-10-05
270
-
271
- - Maintenance release (hotfix / version bump).
272
-
273
- ## [2.0.0] - 2025-10-05
274
-
275
- - Major version bump (hotfix / version bump).
276
-
277
- ## [1.0.19] - 2025-05-23
278
-
279
- - Maintenance release (hotfix / version bump).
280
-
281
- ## [1.0.18] - 2025-05-22
282
-
283
- - Maintenance release (hotfix / version bump).
284
-
285
- ## [1.0.17] - 2025-05-07
286
-
287
- - Maintenance release (hotfix / version bump).
288
-
289
- ## [1.0.16] - 2025-05-07
290
-
291
- - Maintenance release (hotfix / version bump).
292
-
293
- ## [1.0.15] - 2025-05-03
294
-
295
- - Maintenance release (hotfix / version bump).
296
-
297
- ## [1.0.14] - 2025-04-28
298
-
299
- - Maintenance release (hotfix / version bump).
300
-
301
- ## [1.0.13] - 2025-04-28
302
-
303
- - Maintenance release (hotfix / version bump).
304
-
305
- ## [1.0.12] - 2025-04-28
306
-
307
- - Maintenance release (hotfix / version bump).
308
-
309
- ## [1.0.11] - 2025-04-24
310
-
311
- - Maintenance release (hotfix / version bump).
312
-
313
- ## [1.0.10] - 2025-04-24
314
-
315
- - Maintenance release (hotfix / version bump).
316
-
317
- ---
318
-
319
- [3.0.29]: https://github.com/Donix-VN/fca-unofficial/compare/v3.0.28...v3.0.29
320
- [3.0.28]: https://github.com/Donix-VN/fca-unofficial/compare/v3.0.27...v3.0.28
321
- [3.0.27]: https://github.com/Donix-VN/fca-unofficial/compare/v3.0.25...v3.0.27
322
- [1.0.10]: https://github.com/Donix-VN/fca-unofficial/releases/tag/v1.0.10
323
-
324
- ## v3.0.30 - 2026-03-07
325
- - Hotfix / auto bump