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.
- package/ANALYSIS.md +31 -0
- package/AUDIT_REPORT.md +57 -0
- package/CHANGELOG.md +40 -322
- package/README.md +94 -339
- package/advancedSystem.js +95 -0
- package/checkUpdate.js +47 -0
- package/config.json +51 -0
- package/e2ee.js +738 -0
- package/examples/basic-bot.js +122 -0
- package/examples/e2ee-bot.js +141 -0
- package/fca-config.example.json +73 -0
- package/index.js +824 -24
- package/{src/api/socket/e2ee/native/lib → lib}/index.mjs +65 -107
- package/package.json +22 -62
- package/scripts/check.js +38 -0
- package/src/OldMessage.js +357 -0
- package/src/{api/action/addExternalModule.js → addExternalModule.js} +8 -8
- package/src/addUserToGroup.js +117 -0
- package/src/changeAdminStatus.js +105 -0
- package/src/{api/messaging/changeArchivedStatus.js → changeArchivedStatus.js} +17 -15
- package/src/{api/action/changeAvatar.js → changeAvatar.js} +33 -32
- package/src/changeAvatarV2.js +86 -0
- package/src/changeAvt.js +85 -0
- package/src/{api/action/changeBio.js → changeBio.js} +22 -19
- package/src/{api/messaging/changeBlockedStatus.js → changeBlockedStatus.js} +16 -13
- package/src/changeBlockedStatusMqtt.js +75 -0
- package/src/changeCover.js +73 -0
- package/src/changeGroupImage.js +137 -0
- package/src/changeName.js +79 -0
- package/src/changeNickname.js +61 -0
- package/src/changeThreadColor.js +67 -0
- package/src/changeThreadEmoji.js +57 -0
- package/src/changeUsername.js +59 -0
- package/src/createCommentPost.js +232 -0
- package/src/{api/messaging/createNewGroup.js → createNewGroup.js} +26 -24
- package/src/createPoll.js +73 -0
- package/src/createPost.js +276 -0
- package/src/deleteMessage.js +58 -0
- package/src/{api/messaging/deleteThread.js → deleteThread.js} +16 -14
- package/src/editMessage.js +76 -0
- package/src/editMessageOld.js +62 -0
- package/src/follow.js +74 -0
- package/src/forwardAttachment.js +62 -0
- package/src/friendList.js +104 -0
- package/src/getAccess.js +112 -0
- package/src/getAvatarUser.js +78 -0
- package/src/getBotInitialData.js +42 -0
- package/src/getCtx.js +5 -0
- package/src/{api/action/getCurrentUserID.js → getCurrentUserID.js} +1 -1
- package/src/{api/messaging/getEmojiUrl.js → getEmojiUrl.js} +2 -2
- package/src/{api/messaging/getFriendsList.js → getFriendsList.js} +19 -16
- package/src/{api/messaging/getMessage.js → getMessage.js} +180 -160
- package/src/getOptions.js +5 -0
- package/src/getRegion.js +7 -0
- package/src/{api/threads/getThreadHistory.js → getThreadHistory.js} +132 -114
- package/src/getThreadHistoryDeprecated.js +71 -0
- package/src/getThreadInfo.js +232 -0
- package/src/getThreadInfoDeprecated.js +56 -0
- package/src/getThreadList.js +213 -0
- package/src/getThreadListDeprecated.js +46 -0
- package/src/getThreadPictures.js +59 -0
- package/src/getThreadTheme.js +81 -0
- package/src/getUID.js +119 -0
- package/src/{api/users/getUserID.js → getUserID.js} +18 -22
- package/src/getUserInfo.js +66 -0
- package/src/handleFriendRequest.js +46 -0
- package/src/handleMessageRequest.js +47 -0
- package/src/httpGet.js +49 -0
- package/src/httpPost.js +48 -0
- package/src/httpPostFormData.js +70 -0
- package/src/listenMqtt.js +1081 -0
- package/src/listenNotification.js +85 -0
- package/src/logout.js +18 -0
- package/src/markAsDelivered.js +47 -0
- package/src/markAsRead.js +72 -0
- package/src/markAsReadAll.js +40 -0
- package/src/markAsSeen.js +48 -0
- package/src/metaTheme.js +189 -0
- package/src/muteThread.js +45 -0
- package/src/note.js +228 -0
- package/src/pinMessage.js +54 -0
- package/src/refreshFb_dtsg.js +49 -0
- package/src/removeSuspiciousAccount.js +78 -0
- package/src/removeUserFromGroup.js +81 -0
- package/src/reply.js +442 -0
- package/src/{api/messaging/resolvePhotoUrl.js → resolvePhotoUrl.js} +15 -11
- package/src/{api/messaging/searchForThread.js → searchForThread.js} +12 -12
- package/src/searchFriends.js +140 -0
- package/src/searchStickers.js +53 -0
- package/src/send.js +46 -0
- package/src/sendButtons.js +163 -0
- package/src/sendComment.js +159 -0
- package/src/sendFriendRequest.js +112 -0
- package/src/sendMessage.js +441 -0
- package/src/sendMessageMqtt.js +323 -0
- package/src/sendTypingIndicator.js +68 -0
- package/src/sendTypingIndicatorV2.js +22 -0
- package/src/setActiveStatus.js +92 -0
- package/src/setMessageReaction.js +150 -0
- package/src/setMessageReactionMqtt.js +104 -0
- package/src/setMessageReactionSafe.js +44 -0
- package/src/{api/action/setPostReaction.js → setPostReaction.js} +31 -23
- package/src/setProfileGuard.js +44 -0
- package/src/setProfileLock.js +97 -0
- package/src/setStoryReaction.js +133 -0
- package/src/setStorySeen.js +108 -0
- package/src/setThreadTheme.js +102 -0
- package/src/setTitle.js +92 -0
- package/src/shareContact.js +110 -0
- package/src/shareLink.js +59 -0
- package/src/stopListenMqtt.js +60 -0
- package/src/storyManager.js +357 -0
- package/src/suggestFriend.js +132 -0
- package/src/{api/messaging/threadColors.js → threadColors.js} +5 -2
- package/src/{api/action/unfriend.js → unfriend.js} +14 -14
- package/src/unsendMessage.js +68 -0
- package/src/uploadAttachment.js +115 -0
- package/test/fixes-1_2_4.test.js +118 -0
- package/test/mqtt-stop.test.js +32 -0
- package/test/reaction-mqtt.test.js +57 -0
- package/utils.js +3056 -0
- package/DOCS.md +0 -2712
- package/func/checkUpdate.js +0 -7
- package/func/logAdapter.js +0 -33
- package/func/logger.js +0 -48
- package/index.d.ts +0 -751
- package/module/config.js +0 -43
- package/module/login.js +0 -135
- package/module/loginHelper.js +0 -1381
- package/module/options.js +0 -49
- package/src/api/action/dismissScrapingWarning.js +0 -50
- package/src/api/action/enableAutoSaveAppState.js +0 -73
- package/src/api/action/handleFriendRequest.js +0 -57
- package/src/api/action/logout.js +0 -76
- package/src/api/action/refreshFb_dtsg.js +0 -47
- package/src/api/http/httpGet.js +0 -46
- package/src/api/http/httpPost.js +0 -52
- package/src/api/http/postFormData.js +0 -47
- package/src/api/messaging/addUserToGroup.js +0 -68
- package/src/api/messaging/changeAdminStatus.js +0 -126
- package/src/api/messaging/changeGroupImage.js +0 -91
- package/src/api/messaging/changeNickname.js +0 -70
- package/src/api/messaging/changeThreadColor.js +0 -79
- package/src/api/messaging/changeThreadEmoji.js +0 -111
- package/src/api/messaging/createPoll.js +0 -46
- package/src/api/messaging/createThemeAI.js +0 -98
- package/src/api/messaging/deleteMessage.js +0 -136
- package/src/api/messaging/editMessage.js +0 -105
- package/src/api/messaging/forwardAttachment.js +0 -57
- package/src/api/messaging/forwardMessage.js +0 -134
- package/src/api/messaging/getThemePictures.js +0 -62
- package/src/api/messaging/handleMessageRequest.js +0 -65
- package/src/api/messaging/markAsDelivered.js +0 -69
- package/src/api/messaging/markAsRead.js +0 -110
- package/src/api/messaging/markAsReadAll.js +0 -56
- package/src/api/messaging/markAsSeen.js +0 -68
- package/src/api/messaging/muteThread.js +0 -50
- package/src/api/messaging/pinMessage.js +0 -115
- package/src/api/messaging/removeUserFromGroup.js +0 -62
- package/src/api/messaging/scheduler.js +0 -264
- package/src/api/messaging/sendBroadcast.js +0 -93
- package/src/api/messaging/sendMessage.js +0 -269
- package/src/api/messaging/sendTypingIndicator.js +0 -90
- package/src/api/messaging/sessionGuard.js +0 -130
- package/src/api/messaging/setMessageReaction.js +0 -109
- package/src/api/messaging/setTitle.js +0 -124
- package/src/api/messaging/shareContact.js +0 -98
- package/src/api/messaging/unsendMessage.js +0 -105
- package/src/api/messaging/uploadAttachment.js +0 -493
- package/src/api/socket/OldMessage.js +0 -199
- package/src/api/socket/core/connectMqtt.js +0 -277
- package/src/api/socket/core/emitAuth.js +0 -103
- package/src/api/socket/core/getSeqID.js +0 -331
- package/src/api/socket/core/getTaskResponseData.js +0 -25
- package/src/api/socket/core/parseDelta.js +0 -387
- package/src/api/socket/detail/buildStream.js +0 -215
- package/src/api/socket/detail/constants.js +0 -28
- package/src/api/socket/e2ee/crypto.js +0 -173
- package/src/api/socket/e2ee/index.js +0 -959
- package/src/api/socket/e2ee/localMediaServer.js +0 -59
- package/src/api/socket/e2ee/mediaDecode.js +0 -155
- package/src/api/socket/e2ee/native/NOTICE.md +0 -29
- package/src/api/socket/e2ee/native/nativeMediaBridge.js +0 -273
- package/src/api/socket/e2ee/proto/ArmadilloApplication.proto +0 -281
- package/src/api/socket/e2ee/proto/ArmadilloICDC.proto +0 -14
- package/src/api/socket/e2ee/proto/ConsumerApplication.proto +0 -232
- package/src/api/socket/e2ee/proto/MessageApplication.proto +0 -82
- package/src/api/socket/e2ee/proto/MessageTransport.proto +0 -77
- package/src/api/socket/e2ee/proto/WACommon.proto +0 -66
- package/src/api/socket/e2ee/proto/WAMediaTransport.proto +0 -176
- package/src/api/socket/e2ee/proto/proto-writer.ts +0 -76
- package/src/api/socket/e2ee/protocol.js +0 -196
- package/src/api/socket/e2ee/ratchet.js +0 -219
- package/src/api/socket/e2ee/store.js +0 -182
- package/src/api/socket/e2ee/vendor/fme/dist/index.cjs +0 -6477
- package/src/api/socket/e2ee/vendor/fme/proto/ArmadilloApplication.proto +0 -281
- package/src/api/socket/e2ee/vendor/fme/proto/ArmadilloICDC.proto +0 -14
- package/src/api/socket/e2ee/vendor/fme/proto/ConsumerApplication.proto +0 -232
- package/src/api/socket/e2ee/vendor/fme/proto/MessageApplication.proto +0 -82
- package/src/api/socket/e2ee/vendor/fme/proto/MessageTransport.proto +0 -77
- package/src/api/socket/e2ee/vendor/fme/proto/WACommon.proto +0 -66
- package/src/api/socket/e2ee/vendor/fme/proto/WAMediaTransport.proto +0 -176
- package/src/api/socket/listenE2EE.js +0 -85
- package/src/api/socket/listenMqtt.js +0 -492
- package/src/api/socket/middleware/index.js +0 -216
- package/src/api/socket/sendMessage.js +0 -331
- package/src/api/socket/sendMessageMqtt.js +0 -69
- package/src/api/threads/getThreadInfo.js +0 -329
- package/src/api/threads/getThreadList.js +0 -293
- package/src/api/threads/getThreadPictures.js +0 -78
- package/src/api/users/getUserInfo.js +0 -402
- package/src/api/users/getUserInfoV2.js +0 -134
- package/src/app/MessengerBot.js +0 -209
- package/src/app/MessengerContext.js +0 -32
- package/src/app/createFcaClient.js +0 -136
- package/src/app/threadInfoRealtimeSync.js +0 -284
- package/src/core/sendReqMqtt.js +0 -96
- package/src/database/helpers.js +0 -53
- package/src/database/models/index.js +0 -88
- package/src/database/models/thread.js +0 -50
- package/src/database/models/user.js +0 -46
- package/src/database/threadData.js +0 -94
- package/src/database/userData.js +0 -98
- package/src/remote/remoteClient.js +0 -123
- package/src/utils/antiSuspension.js +0 -219
- package/src/utils/broadcast.js +0 -51
- package/src/utils/client.js +0 -10
- package/src/utils/constants.js +0 -23
- package/src/utils/cookies.js +0 -85
- package/src/utils/fingerprint.js +0 -101
- package/src/utils/format/attachment.js +0 -357
- package/src/utils/format/cookie.js +0 -9
- package/src/utils/format/date.js +0 -50
- package/src/utils/format/decode.js +0 -44
- package/src/utils/format/delta.js +0 -195
- package/src/utils/format/ids.js +0 -64
- package/src/utils/format/index.js +0 -64
- package/src/utils/format/message.js +0 -88
- package/src/utils/format/presence.js +0 -132
- package/src/utils/format/readTyp.js +0 -44
- package/src/utils/format/thread.js +0 -42
- package/src/utils/format/utils.js +0 -141
- package/src/utils/headers.js +0 -125
- package/src/utils/humanizer.js +0 -256
- package/src/utils/loginParser/autoLogin.js +0 -125
- package/src/utils/loginParser/extractDtsg.js +0 -44
- package/src/utils/loginParser/helpers.js +0 -43
- package/src/utils/loginParser/index.js +0 -10
- package/src/utils/loginParser/parseAndCheckLogin.js +0 -241
- package/src/utils/loginParser/textUtils.js +0 -28
- package/src/utils/nexca-logger.js +0 -144
- package/src/utils/nexca-utils.js +0 -687
- package/src/utils/request/client.js +0 -26
- package/src/utils/request/config.js +0 -23
- package/src/utils/request/defaults.js +0 -46
- package/src/utils/request/helpers.js +0 -46
- package/src/utils/request/index.js +0 -17
- package/src/utils/request/methods.js +0 -163
- package/src/utils/request/proxy.js +0 -21
- package/src/utils/request/retry.js +0 -77
- package/src/utils/request/sanitize.js +0 -49
- package/src/utils/versionCheck.js +0 -47
- /package/{src/api/socket/e2ee/native/build → build}/messagix.dll +0 -0
- /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.
|
package/AUDIT_REPORT.md
ADDED
|
@@ -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
|
-
|
|
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
|