@neelegirly/baileys 2.2.25 → 2.2.26

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/README.md CHANGED
@@ -1,146 +1,105 @@
1
- <pre align="center">
2
- 💖 Neelegirly Ecosystem Clean Stability Update 💖
3
- 4 Packages · 1 App · PM2 only runs the app
4
- </pre>
5
-
6
- # 🌸 @neelegirly/baileys
7
-
8
- WhatsApp Web API core connection layer.
9
-
10
- ## Clean Architecture
11
-
12
- ```text
13
- @neelegirly/libsignal
14
-
15
- @neelegirly/baileys
16
-
17
- @neelegirly/wa-api
18
-
19
- App (PM2 managed)
20
-
21
- @neelegirly/downloader (optional utility)
22
- ```
23
-
24
- ## Official Package Role
25
-
26
- - Depends on @neelegirly/libsignal
27
- - Core connection layer
28
- - Used by @neelegirly/wa-api
29
-
30
- ## PM2 Rule
31
-
32
- > WA-API handles sessions internally. PM2 only runs the app.
33
-
34
- Start your app with PM2 like this:
35
-
36
- ```bash
37
- pm2 start index.js --name bot
38
- ```
39
-
40
- Do not start one PM2 process per session. Sessions belong inside the app through `@neelegirly/wa-api`.
41
-
42
- ## Install
43
-
44
- ```bash
45
- npm install @neelegirly/baileys
46
- ```
47
-
48
- ## Clean Stability Release
49
-
50
- This release clarifies the ecosystem structure and removes workspace/core confusion from the documentation.
51
-
52
-
53
- ---
54
-
55
1
  <div align="center">
56
2
 
57
3
  # 🌸 @neelegirly/baileys 🌸
58
4
 
59
- ### *Die WhatsApp Web API mit sauberem Neelegirly-Glow-up*
60
- ### *QR Branding · Wrapper-Aware Update Notify · LID · Smart Queue*
5
+ ### *Die WhatsApp-Web-API mit sauberem Neelegirly-Glow-up*
6
+ ### *QR Branding · Self-Healing WA-Web-Version · Wrapper-Aware Update Notify · LID · Smart Queue*
61
7
 
62
- [![Version](https://img.shields.io/badge/Version-2.2.22-ff69b4?style=for-the-badge&logo=npm)](https://www.npmjs.com/package/@neelegirly/baileys)
63
- [![wa-api](https://img.shields.io/badge/wa--api-1.8.6-c77dff?style=for-the-badge)](https://www.npmjs.com/package/@neelegirly/wa-api)
64
- [![libsignal](https://img.shields.io/badge/libsignal-1.0.31-f4a261?style=for-the-badge)](https://www.npmjs.com/package/@neelegirly/libsignal)
65
- [![Node](https://img.shields.io/badge/Node-16+-4caf50?style=for-the-badge&logo=node.js)](https://nodejs.org)
66
8
  [![npm](https://img.shields.io/npm/v/%40neelegirly%2Fbaileys?style=for-the-badge&color=ff69b4&logo=npm)](https://www.npmjs.com/package/@neelegirly/baileys)
9
+ [![wa-api](https://img.shields.io/badge/wa--api-1.8.10-c77dff?style=for-the-badge)](https://www.npmjs.com/package/@neelegirly/wa-api)
10
+ [![libsignal](https://img.shields.io/badge/libsignal-1.0.32-f4a261?style=for-the-badge)](https://www.npmjs.com/package/@neelegirly/libsignal)
11
+ [![WA-Web](https://img.shields.io/badge/WhatsApp--Web-2.3000.1035194821-25D366?style=for-the-badge&logo=whatsapp)](https://web.whatsapp.com)
12
+ [![Node](https://img.shields.io/badge/Node-16+-4caf50?style=for-the-badge&logo=node.js)](https://nodejs.org)
67
13
 
68
14
  <p align="center">
69
15
  <img src="https://files.catbox.moe/5bqumy.jpeg" width="780" alt="@neelegirly/baileys Hero" />
70
16
  </p>
71
17
 
72
- <p align="center"><sub>2026 Glow-Up Edition · frische WA-API-, USync- und libsignal-Patches · Companion-Stack auf <strong>2.2.22 / 1.8.6 / 1.0.31</strong></sub></p>
18
+ <p align="center"><sub>2026 Glow-Up Edition · self-healing QR/Pairing · Companion-Stack auf <strong>2.2.26 / 1.8.10 / 1.0.32</strong></sub></p>
73
19
 
74
- [**Installation**](#-installation) · [**Quickstart**](#-quickstart) · [**Highlights**](#-highlights) · [**QR Branding**](#-qr-branding--update-status) · [**Migration**](#-namespace-migration) · [**Release Notes**](#-release-notes-2222)
20
+ [**Installation**](#-installation) · [**Quickstart**](#-quickstart) · [**Was ist dieser Fork?**](#-was-ist-dieser-fork) · [**Versionsschema**](#-versionsschema) · [**Message-ID**](#-message-id-anpassung-neele) · [**Release Notes**](#-release-notes-2226)
75
21
 
76
22
  </div>
77
23
 
78
24
  ---
79
25
 
80
- Neelegirlys Variante von Baileys ist die WhatsApp-Web-Basis für stabile Bots, schöne QR-Flows und einen sauber gepinnten Multi-Session-Stack. Die Library bleibt nah an Baileys, aber mit fokussiertem Branding, Update-Notify und Begleit-Ökosystem für `@neelegirly/wa-api`.
26
+ ## 🌷 Was ist dieser Fork?
27
+
28
+ `@neelegirly/baileys` ist ein gepflegter **Fork von [Baileys](https://github.com/WhiskeySockets/Baileys)** (multi-device WhatsApp-Web-API für Node.js). Er bleibt nah am Upstream, ergänzt aber ein paar fokussierte Neelegirly-Eigenheiten:
29
+
30
+ - 💖 **Eigene Message-ID-Generierung** (iOS-Style mit `NEELE`-Signatur) – siehe [unten](#-message-id-anpassung-neele).
31
+ - 🌐 **Self-Healing WA-Web-Version** – die Verbindung zieht sich die aktuelle WhatsApp-Web-Version automatisch, damit der QR-/Pairing-Login nicht durch veraltete Versionsangaben mit `statusCode 405` abbricht.
32
+ - 📷 **QR Branding** – Header/Footer + Versionskontext direkt im QR-Flow.
33
+ - 🔔 **Wrapper-Aware Update Notify** – Statuszeilen für Baileys **und** den optionalen `@neelegirly/wa-api`-Wrapper.
34
+ - 🎀 **Sauberer `@neelegirly/*`-Scope** mit gepinntem Begleit-Ökosystem.
81
35
 
82
- > Hinweis: Dieses Projekt ist nicht offiziell mit WhatsApp, Meta oder Baileys-Upstream verbunden.
36
+ > Hinweis: Dieses Projekt ist nicht offiziell mit WhatsApp, Meta oder dem Baileys-Upstream verbunden.
83
37
 
84
38
  ---
85
39
 
86
- ## Highlights
40
+ ## 🧱 Architektur
87
41
 
88
- | Feature | Beschreibung | Status |
89
- | --- | --- | --- |
90
- | 💖 Multi-Device API | WhatsApp Web auf Node.js mit Event-Flow | ✅ |
91
- | 📷 QR Branding | Header/Footer + Wrapper-/Versionskontext direkt im QR-Flow | ✅ |
92
- | 🔔 Wrapper-Aware Update Notify | Status für Baileys **und** optionalen Wrapper-Kontext | ✅ |
93
- | 🚀 Smart Queue | Retries, Prioritäten und Bulk-Sending für produktive Setups | ✅ |
94
- | 🧷 LID / Session-Fokus | passend für moderne Multi-Device-/Linked-ID-Flows | ✅ |
95
- | 🎀 Neelegirly Scope | sauber auf `@neelegirly/*` ausgerichtet | ✅ |
42
+ ```text
43
+ @neelegirly/libsignal ← Signal-Protokoll-Krypto
44
+
45
+ @neelegirly/baileys ← dieser Fork · Socket, Events, Messaging
46
+
47
+ @neelegirly/wa-api ← Multi-Session-Wrapper (Lifecycle, QR, Update Notify)
48
+
49
+ App (PM2 managed)
50
+
51
+ @neelegirly/downloader ← optionale Media-Utility
52
+ ```
53
+
54
+ > **PM2-Regel:** `@neelegirly/wa-api` verwaltet Sessions intern. PM2 startet nur **die App**, nicht einen Prozess pro Session.
96
55
 
97
56
  ---
98
57
 
99
- ## 🆕 Was sich in `v2.2.22` geändert hat
58
+ ## 🔢 Versionsschema
100
59
 
101
- - Aktuelle Baileys-Upstream-Fixes vom 24./25. April 2026 sauber übernommen
102
- - ✅ AB-Props-Query nutzt wieder den aktuellen `abt`/Protocol-1-Flow
103
- - Username-Felder in Contacts, Gruppenmetadaten, Message Keys und USync ergänzt
104
- - App-State-Sync robuster bei fehlenden Keys, Snapshot-Retry und Reconnects
105
- - Call-Events, Album-Messages und History/Media-Streaming erweitert
106
- - ✅ Baileys-WA-API mit robusteren Group-/Message-Guards, Reachout-/Message-Cap-Abfragen und Newsletter-Join/Leave-IDs aktualisiert
107
- - ✅ libsignal-Dependency auf `1.0.31` mit TypeScript-Definitionen und ProtocolAddress-Typen aktualisiert
108
- - MEX-LID-Mappings werden in die Signal-Store-Anbindung übernommen
109
- - ✅ Link-Preview-Redirect-Retry und serverseitige MEX-Notifications fuer Reachout/Message-Capping geprueft
60
+ Wichtig zu verstehen hier laufen **zwei voneinander unabhängige** Versionsnummern:
61
+
62
+ | Nummer | Beispiel | Bedeutung |
63
+ | --- | --- | --- |
64
+ | **Fork-Version** | `2.2.26` | Die npm-Version *dieses Pakets*. Eigenes semver-Schema von Neelegirly – **nicht** identisch mit der Upstream-Baileys-Versionsnummer. |
65
+ | **WhatsApp-Web-Baseline** | `2.3000.1035194821` | Die Client-Version, die im Handshake an WhatsApp gemeldet wird. Wird zur Laufzeit aktuell gehalten (self-healing). |
66
+
67
+ Die Fork-Version `2.2.x` ist also reines Paket-Versioning. Welche WhatsApp-Web-Version tatsächlich verbunden wird, zeigt der Boot-Banner und `fetchLatestBaileysVersion()`.
110
68
 
111
69
  ---
112
70
 
113
- ## 📦 Kompatibilität
71
+ ## 💖 Message-ID-Anpassung (NEELE)
114
72
 
115
- | Paket | Empfohlene Version |
116
- | --- | --- |
117
- | `@neelegirly/baileys` | `2.2.22` |
118
- | `@neelegirly/wa-api` | `1.8.6` |
119
- | `@neelegirly/libsignal` | `1.0.31` |
73
+ Dieser Fork erzeugt Message-IDs in einem **iOS-Style-Format mit eingebetteter `NEELE`-Signatur** (z. B. `3A…NEELE…`, 20 Zeichen). Das ist eine bewusste, dauerhafte Anpassung – `generateMessageID` und `generateMessageIDV2` werden **niemals** durch die Upstream-Variante überschrieben.
74
+
75
+ ```js
76
+ const { generateMessageID } = require('@neelegirly/baileys')
77
+ generateMessageID() // z. B. "3AC18D8ANEELE3B14420"
78
+ ```
79
+
80
+ > Beim Abgleich mit dem Upstream bleibt diese Logik 1:1 erhalten.
120
81
 
121
82
  ---
122
83
 
123
84
  ## 🚀 Installation
124
85
 
125
- ### npm
126
-
127
86
  ```bash
128
- npm install @neelegirly/baileys@2.2.22 @neelegirly/libsignal@1.0.31 --save-exact
87
+ npm install @neelegirly/baileys@2.2.26 @neelegirly/libsignal@1.0.32 --save-exact
129
88
  ```
130
89
 
131
- ### yarn
132
-
133
90
  ```bash
134
- yarn add @neelegirly/baileys@2.2.22 @neelegirly/libsignal@1.0.31 --exact
91
+ yarn add @neelegirly/baileys@2.2.26 @neelegirly/libsignal@1.0.32 --exact
135
92
  ```
136
93
 
137
- ### pnpm
94
+ > Für den kompletten Stack passt dazu `@neelegirly/wa-api@1.8.10`.
95
+
96
+ ### Update eines bestehenden Setups
138
97
 
139
98
  ```bash
140
- pnpm add @neelegirly/baileys@2.2.22 @neelegirly/libsignal@1.0.31 --save-exact
99
+ npm install @neelegirly/baileys@latest @neelegirly/wa-api@latest --save-exact
141
100
  ```
142
101
 
143
- > Für den kompletten Neelegirly-Stack passt dazu `@neelegirly/wa-api@1.8.6`.
102
+ Nach dem Update genügt ein App-Neustart. Der QR-/Pairing-Login zieht sich die aktuelle WhatsApp-Web-Version automatisch.
144
103
 
145
104
  ---
146
105
 
@@ -156,7 +115,7 @@ import makeWASocket, {
156
115
 
157
116
  async function start() {
158
117
  const { state, saveCreds } = await useMultiFileAuthState('./auth')
159
- const { version } = await fetchLatestBaileysVersion()
118
+ const { version } = await fetchLatestBaileysVersion() // self-healing WA-Web-Version
160
119
 
161
120
  const sock = makeWASocket({
162
121
  auth: state,
@@ -168,16 +127,10 @@ async function start() {
168
127
  sock.ev.on('creds.update', saveCreds)
169
128
 
170
129
  sock.ev.on('connection.update', ({ connection, lastDisconnect }) => {
171
- if (connection === 'open') {
172
- console.log('Verbunden 💖')
173
- return
174
- }
175
-
130
+ if (connection === 'open') return console.log('Verbunden 💖')
176
131
  if (connection === 'close') {
177
132
  const statusCode = lastDisconnect?.error?.output?.statusCode
178
- const isLoggedOut = statusCode === DisconnectReason.loggedOut
179
-
180
- if (!isLoggedOut) start().catch(console.error)
133
+ if (statusCode !== DisconnectReason.loggedOut) start().catch(console.error)
181
134
  }
182
135
  })
183
136
  }
@@ -185,60 +138,28 @@ async function start() {
185
138
  start().catch(console.error)
186
139
  ```
187
140
 
188
- > Direktes `sock.ev.on('creds.update', saveCreds)` ist für kleine Demos okay. In produktiven Multi-Session-Setups sollten Credential-Saves gebündelt oder debounced werden.
141
+ > `fetchLatestBaileysVersion()` ist die empfohlene Quelle für `version`: Sie liefert die aktuell gültige WhatsApp-Web-Version und fällt bei Netzwerkfehlern auf die gebündelte Baseline zurück.
189
142
 
190
143
  ---
191
144
 
192
145
  ## 🧩 Companion Stack
193
146
 
194
- | Paket | Rolle |
195
- |------|-------|
196
- | `@neelegirly/baileys 2.2.22` | Socket, Events, Messaging |
197
- | `@neelegirly/libsignal 1.0.31` | Signal-Protokoll-Komponente |
198
- | `@neelegirly/wa-api 1.8.6` | Lifecycle-, Session- und Update-Wrapper |
147
+ | Paket | Version | Rolle |
148
+ |------|---------|-------|
149
+ | `@neelegirly/baileys` | `2.2.26` | Socket, Events, Messaging |
150
+ | `@neelegirly/libsignal` | `1.0.32` | Signal-Protokoll-Komponente |
151
+ | `@neelegirly/wa-api` | `1.8.10` | Lifecycle-, Session- und Update-Wrapper |
199
152
 
200
153
  ---
201
154
 
202
155
  ## 🩷 QR Branding & Update Status
203
156
 
204
- Beim QR-Scan werden automatisch Markenzeilen oberhalb und unterhalb des QR-Codes ausgegeben. Die Ausgabe liest Versionen dynamisch aus `package.json`, verarbeitet Update-Status robust und kann zusätzlich Wrapper-Kontext aus `@neelegirly/wa-api` darstellen.
205
-
206
- Typische Anzeige:
207
-
208
- - `Baileys Update-Status: up to date (2.2.22)`
209
- - `Wrapper Update-Status: up to date (1.8.6)`
210
- - Bei echten Updates werden kompakte Hinweise auf `latest` eingeblendet
211
-
212
- Wenn kein Wrapper-Kontext vorhanden ist, bleibt die Anzeige sauber bei Baileys. Kein unnötiges Drama, nur QR. ✨
213
-
214
- ---
215
-
216
- ## 🔄 Update-Check
217
-
218
- - Quelle 1: npm Registry (`registry.npmjs.org`)
219
- - Quelle 2: GitHub Releases (`neelegirly/baileys`) als Fallback
220
- - Fehler und Timeouts werden abgefangen, ohne den Prozess zu stoppen
221
- - Semver-Vergleich wird numerisch ausgewertet
222
- - Wrapper-Status kann über die von `@neelegirly/wa-api` gesetzten Umgebungsvariablen übernommen werden
223
-
224
- Wenn du direkt prüfen willst:
225
-
226
- ```ts
227
- import { checkNpmVersion } from '@neelegirly/baileys'
228
-
229
- const info = await checkNpmVersion('@neelegirly/baileys', '2.2.22', {
230
- githubRepo: 'neelegirly/baileys'
231
- })
232
-
233
- console.log(info)
234
- ```
157
+ Beim QR-Scan werden Markenzeilen ober- und unterhalb des QR-Codes ausgegeben. Versionen werden dynamisch aus `package.json` gelesen, Update-Status robust verarbeitet und optionaler Wrapper-Kontext aus `@neelegirly/wa-api` dargestellt. Der Boot-Banner zeigt zusätzlich die aktive **WhatsApp-Web-Baseline**.
235
158
 
236
159
  ---
237
160
 
238
161
  ## 🌐 Namespace-Migration
239
162
 
240
- Wenn du vom Upstream kommst, nutze den Neelegirly-Scope:
241
-
242
163
  ```diff
243
164
  - import makeWASocket from '@whiskeysockets/baileys'
244
165
  + import makeWASocket from '@neelegirly/baileys'
@@ -246,15 +167,16 @@ Wenn du vom Upstream kommst, nutze den Neelegirly-Scope:
246
167
 
247
168
  ---
248
169
 
249
- ## 📝 Release Notes `2.2.22`
250
-
251
- - 🔧 Upstream-Änderungen vom 24./25. April 2026 portiert, ohne QR-/Update-Notify- oder Message-ID-Handling umzubauen
252
- - 🧩 Username-USync und Inbound-Username-Felder für Kontakte, Gruppen und Message Keys ergänzt
253
- - 🛡️ App-State-Sync und libsignal-LID/PN-Typen robuster gemacht
254
- - 🖼️ Album-Message-Sending und erweiterte Call-Event-Typen ergänzt
255
- - 🔐 libsignal auf `1.0.31` mit WhiskeySockets-TypeScript-Definitionen und ProtocolAddress-Typen gepinnt
256
- - 🔗 Companion-Stack auf `2.2.22 / 1.8.6 / 1.0.31` aktualisiert
257
- - 🛡️ Null-/Undefined-Pfade in Gruppen-, Nachrichten- und Chat-ID-Verarbeitung gehärtet
258
- - 🧷 MEX-LID-Mappings werden in den Signal-Store übernommen
259
- - 🧩 Reachout- und Message-Cap-WA-API-Abfragen plus TypeScript-Definitionen ergänzt
260
- - 🔁 Link-Preview-Redirect-Retry-Counter repariert und Server-Push-MEX-Updates verarbeitet
170
+ ## 📝 Release Notes `2.2.26`
171
+
172
+ - 🛠️ **QR-/Pairing-Login repariert.** Die veraltete, hartcodierte WhatsApp-Web-Version führte zu `statusCode 405` ("Multi-device mismatch") und verhinderte jeden QR-Scan. Baseline auf `2.3000.1035194821` aktualisiert.
173
+ - 🌐 **Self-Healing WA-Web-Version.** `fetchLatestBaileysVersion()` bezieht die Versionsangabe jetzt aus einer **gepflegten, immer aktuellen Quelle** statt aus einer toten URL (die zuvor mit `404` ins Leere lief und still eine veraltete Version pinnte). Künftige WhatsApp-Versions-Bumps heilen sich damit selbst.
174
+ - 🧷 **Message-ID-Logik unverändert.** Die `NEELE`-Signatur in `generateMessageID` / `generateMessageIDV2` bleibt exakt erhalten.
175
+ - 🪧 **Modernisierter Boot-Banner.** Zusätzliche, ehrliche Zeile mit der aktiven WhatsApp-Web-Baseline.
176
+ - 🔗 Companion-Stack auf `2.2.26 / 1.8.10 / 1.0.32` aktualisiert.
177
+
178
+ ---
179
+
180
+ <div align="center">
181
+ <sub>Made with 🎀 by Neelegirly · Fork von WhiskeySockets/Baileys</sub>
182
+ </div>
@@ -1 +1 @@
1
- {"version":[2,3000,1032141294]}
1
+ {"version":[2,3000,1035194821]}
@@ -389,7 +389,11 @@ const printQRIfNecessaryListener = (ev, logger) => {
389
389
  * Use to ensure your WA connection is always on the latest version
390
390
  */
391
391
  const fetchLatestBaileysVersion = async (options = {}) => {
392
- const URL = 'https://raw.githubusercontent.com/neelegirly/baileys/master/src/Defaults/baileys-version.json'
392
+ // Self-healing WA-Web version: track the upstream-maintained version pin so the
393
+ // fork stays connectable when WhatsApp bumps its required client revision.
394
+ // (The previous neelegirly /src/ URL 404'd — no src/ in the fork — and silently
395
+ // pinned a stale version, which WhatsApp rejected with statusCode 405.)
396
+ const URL = 'https://raw.githubusercontent.com/WhiskeySockets/Baileys/master/src/Defaults/baileys-version.json'
393
397
  try {
394
398
  const result = await axios_1.default.get(URL, {
395
399
  ...options,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neelegirly/baileys",
3
- "version": "2.2.25",
3
+ "version": "2.2.26",
4
4
  "description": "Neelegirly fork of Baileys: multi-device WhatsApp Web API for Node.js",
5
5
  "keywords": [
6
6
  "whatsapp",