@antzsoft/chat-core 1.0.5 → 1.0.6
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/docs/integration-guide.html +68 -21
- package/package.json +1 -1
|
@@ -132,7 +132,7 @@ li{margin-bottom:4px;color:#c8d0e0}
|
|
|
132
132
|
|
|
133
133
|
<div class="section-label">What's New</div>
|
|
134
134
|
<ul>
|
|
135
|
-
<li><a href="#whats-new">v1.0.
|
|
135
|
+
<li><a href="#whats-new">v1.0.6 Release Notes</a></li>
|
|
136
136
|
</ul>
|
|
137
137
|
|
|
138
138
|
<div class="section-label">Getting Started</div>
|
|
@@ -218,11 +218,11 @@ li{margin-bottom:4px;color:#c8d0e0}
|
|
|
218
218
|
<h2>What's New</h2>
|
|
219
219
|
<p style="color:var(--muted);font-size:13px;margin-bottom:20px">Version history and release notes. Click a version to expand.</p>
|
|
220
220
|
|
|
221
|
-
<!-- ── v1.0.
|
|
222
|
-
<div class="wn-version" id="wn-
|
|
223
|
-
<div class="wn-header" onclick="toggleVersion('wn-
|
|
221
|
+
<!-- ── v1.0.6 (current) ── -->
|
|
222
|
+
<div class="wn-version" id="wn-106">
|
|
223
|
+
<div class="wn-header" onclick="toggleVersion('wn-106')">
|
|
224
224
|
<div class="wn-title">
|
|
225
|
-
<span class="wn-ver">v1.0.
|
|
225
|
+
<span class="wn-ver">v1.0.6</span>
|
|
226
226
|
<span class="wn-badge current">Current</span>
|
|
227
227
|
<span class="wn-date">May 2026</span>
|
|
228
228
|
</div>
|
|
@@ -230,8 +230,8 @@ li{margin-bottom:4px;color:#c8d0e0}
|
|
|
230
230
|
</div>
|
|
231
231
|
<div class="wn-body">
|
|
232
232
|
|
|
233
|
-
<div class="wn-item" id="wn-
|
|
234
|
-
<div class="wn-item-header" onclick="toggleItem('wn-
|
|
233
|
+
<div class="wn-item" id="wn-106-1">
|
|
234
|
+
<div class="wn-item-header" onclick="toggleItem('wn-106-1')">
|
|
235
235
|
<span class="wn-tag new">New</span>
|
|
236
236
|
<span class="wn-item-title"><code>externalId</code> on all user responses</span>
|
|
237
237
|
<span class="wn-chevron-sm">▾</span>
|
|
@@ -243,8 +243,8 @@ li{margin-bottom:4px;color:#c8d0e0}
|
|
|
243
243
|
</div>
|
|
244
244
|
</div>
|
|
245
245
|
|
|
246
|
-
<div class="wn-item" id="wn-
|
|
247
|
-
<div class="wn-item-header" onclick="toggleItem('wn-
|
|
246
|
+
<div class="wn-item" id="wn-106-2">
|
|
247
|
+
<div class="wn-item-header" onclick="toggleItem('wn-106-2')">
|
|
248
248
|
<span class="wn-tag new">New</span>
|
|
249
249
|
<span class="wn-item-title">Single unified User List API</span>
|
|
250
250
|
<span class="wn-chevron-sm">▾</span>
|
|
@@ -258,8 +258,8 @@ li{margin-bottom:4px;color:#c8d0e0}
|
|
|
258
258
|
</div>
|
|
259
259
|
</div>
|
|
260
260
|
|
|
261
|
-
<div class="wn-item" id="wn-
|
|
262
|
-
<div class="wn-item-header" onclick="toggleItem('wn-
|
|
261
|
+
<div class="wn-item" id="wn-106-3">
|
|
262
|
+
<div class="wn-item-header" onclick="toggleItem('wn-106-3')">
|
|
263
263
|
<span class="wn-tag new">New</span>
|
|
264
264
|
<span class="wn-item-title">Single unified Conversation List API</span>
|
|
265
265
|
<span class="wn-chevron-sm">▾</span>
|
|
@@ -273,8 +273,8 @@ li{margin-bottom:4px;color:#c8d0e0}
|
|
|
273
273
|
</div>
|
|
274
274
|
</div>
|
|
275
275
|
|
|
276
|
-
<div class="wn-item" id="wn-
|
|
277
|
-
<div class="wn-item-header" onclick="toggleItem('wn-
|
|
276
|
+
<div class="wn-item" id="wn-106-4">
|
|
277
|
+
<div class="wn-item-header" onclick="toggleItem('wn-106-4')">
|
|
278
278
|
<span class="wn-tag fix">Fix</span>
|
|
279
279
|
<span class="wn-item-title">Attachment last-message content preview</span>
|
|
280
280
|
<span class="wn-chevron-sm">▾</span>
|
|
@@ -286,8 +286,8 @@ li{margin-bottom:4px;color:#c8d0e0}
|
|
|
286
286
|
</div>
|
|
287
287
|
</div>
|
|
288
288
|
|
|
289
|
-
<div class="wn-item" id="wn-
|
|
290
|
-
<div class="wn-item-header" onclick="toggleItem('wn-
|
|
289
|
+
<div class="wn-item" id="wn-106-5">
|
|
290
|
+
<div class="wn-item-header" onclick="toggleItem('wn-106-5')">
|
|
291
291
|
<span class="wn-tag fix">Fix</span>
|
|
292
292
|
<span class="wn-item-title">Avatar upload via <code>AntzChatClient</code></span>
|
|
293
293
|
<span class="wn-chevron-sm">▾</span>
|
|
@@ -299,8 +299,8 @@ li{margin-bottom:4px;color:#c8d0e0}
|
|
|
299
299
|
</div>
|
|
300
300
|
</div>
|
|
301
301
|
|
|
302
|
-
<div class="wn-item" id="wn-
|
|
303
|
-
<div class="wn-item-header" onclick="toggleItem('wn-
|
|
302
|
+
<div class="wn-item" id="wn-106-6">
|
|
303
|
+
<div class="wn-item-header" onclick="toggleItem('wn-106-6')">
|
|
304
304
|
<span class="wn-tag fix">Fix</span>
|
|
305
305
|
<span class="wn-item-title"><code>client.connect()</code> on React Native</span>
|
|
306
306
|
<span class="wn-chevron-sm">▾</span>
|
|
@@ -312,8 +312,8 @@ li{margin-bottom:4px;color:#c8d0e0}
|
|
|
312
312
|
</div>
|
|
313
313
|
</div>
|
|
314
314
|
|
|
315
|
-
<div class="wn-item" id="wn-
|
|
316
|
-
<div class="wn-item-header" onclick="toggleItem('wn-
|
|
315
|
+
<div class="wn-item" id="wn-106-7">
|
|
316
|
+
<div class="wn-item-header" onclick="toggleItem('wn-106-7')">
|
|
317
317
|
<span class="wn-tag new">New</span>
|
|
318
318
|
<span class="wn-item-title">Group icon — create & update</span>
|
|
319
319
|
<span class="wn-chevron-sm">▾</span>
|
|
@@ -330,8 +330,8 @@ li{margin-bottom:4px;color:#c8d0e0}
|
|
|
330
330
|
</div>
|
|
331
331
|
</div>
|
|
332
332
|
|
|
333
|
-
<div class="wn-item" id="wn-
|
|
334
|
-
<div class="wn-item-header" onclick="toggleItem('wn-
|
|
333
|
+
<div class="wn-item" id="wn-106-8">
|
|
334
|
+
<div class="wn-item-header" onclick="toggleItem('wn-106-8')">
|
|
335
335
|
<span class="wn-tag new">New</span>
|
|
336
336
|
<span class="wn-item-title">Scroll to first unread message</span>
|
|
337
337
|
<span class="wn-chevron-sm">▾</span>
|
|
@@ -356,6 +356,53 @@ li{margin-bottom:4px;color:#c8d0e0}
|
|
|
356
356
|
</div>
|
|
357
357
|
</div>
|
|
358
358
|
|
|
359
|
+
<div class="wn-item" id="wn-106-9">
|
|
360
|
+
<div class="wn-item-header" onclick="toggleItem('wn-106-9')">
|
|
361
|
+
<span class="wn-tag new">New</span>
|
|
362
|
+
<span class="wn-item-title">Push notifications — device token registration (RN & Web)</span>
|
|
363
|
+
<span class="wn-chevron-sm">▾</span>
|
|
364
|
+
</div>
|
|
365
|
+
<div class="wn-item-body">
|
|
366
|
+
<p>Push notification token registration is now fully documented and supported via <code>devicesApi.register()</code>. Both React Native (Expo and FCM) and Web (VAPID/Web Push) teams should register tokens immediately after login on every app launch.</p>
|
|
367
|
+
|
|
368
|
+
<h4>React Native — Expo</h4>
|
|
369
|
+
<pre><code><span class="kw">await</span> devicesApi.<span class="fn">register</span>({
|
|
370
|
+
deviceId, <span class="cm">// stable UUID — generate once, store in SecureStore, never regenerate</span>
|
|
371
|
+
platform: <span class="str">'ios'</span>, <span class="cm">// or 'android'</span>
|
|
372
|
+
provider: <span class="str">'expo'</span>,
|
|
373
|
+
token, <span class="cm">// from Notifications.getExpoPushTokenAsync()</span>
|
|
374
|
+
userAgent: <span class="str">`${Device.modelName} / ${Device.osName} ${Device.osVersion}`</span>,
|
|
375
|
+
});</code></pre>
|
|
376
|
+
|
|
377
|
+
<h4>React Native — FCM (Firebase)</h4>
|
|
378
|
+
<pre><code><span class="kw">await</span> devicesApi.<span class="fn">register</span>({
|
|
379
|
+
deviceId,
|
|
380
|
+
platform: <span class="str">'android'</span>, provider: <span class="str">'fcm'</span>,
|
|
381
|
+
token, <span class="cm">// from messaging().getToken()</span>
|
|
382
|
+
});
|
|
383
|
+
<span class="cm">// Re-register whenever Firebase rotates the token</span>
|
|
384
|
+
messaging().<span class="fn">onTokenRefresh</span>(<span class="kw">async</span> (t) => devicesApi.<span class="fn">register</span>({ deviceId, platform: <span class="str">'android'</span>, provider: <span class="str">'fcm'</span>, token: t }));</code></pre>
|
|
385
|
+
|
|
386
|
+
<h4>Web — VAPID / Web Push</h4>
|
|
387
|
+
<pre><code><span class="kw">await</span> devicesApi.<span class="fn">register</span>({
|
|
388
|
+
deviceId, <span class="cm">// stable UUID — store in localStorage, never regenerate</span>
|
|
389
|
+
platform: <span class="str">'web'</span>, provider: <span class="str">'web-push'</span>,
|
|
390
|
+
endpoint: sub.endpoint,
|
|
391
|
+
p256dh: <span class="fn">b64</span>(sub.<span class="fn">getKey</span>(<span class="str">'p256dh'</span>)),
|
|
392
|
+
auth: <span class="fn">b64</span>(sub.<span class="fn">getKey</span>(<span class="str">'auth'</span>)),
|
|
393
|
+
userAgent: navigator.userAgent,
|
|
394
|
+
});</code></pre>
|
|
395
|
+
|
|
396
|
+
<p><strong>Key rules for all platforms:</strong></p>
|
|
397
|
+
<ul style="margin:4px 0 8px 18px;font-size:13px;color:#c8d0e0;line-height:2">
|
|
398
|
+
<li>Call <code>register()</code> on <strong>every app launch after login</strong> — the call is an upsert, safe to repeat.</li>
|
|
399
|
+
<li>Call <code>devicesApi.remove(deviceId)</code> on logout to stop push immediately.</li>
|
|
400
|
+
<li>Never regenerate <code>deviceId</code> — if lost, the old token record becomes an orphan.</li>
|
|
401
|
+
</ul>
|
|
402
|
+
<p class="wn-ref">→ <a href="#step-push">Step 17 — Push Notifications</a> for complete code, token lifecycle tables, and service worker setup (web)</p>
|
|
403
|
+
</div>
|
|
404
|
+
</div>
|
|
405
|
+
|
|
359
406
|
</div><!-- /.wn-body -->
|
|
360
407
|
</div><!-- /.wn-version -->
|
|
361
408
|
|
package/package.json
CHANGED