@convokitapp/vue-ui 0.2.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/PARITY.md +8 -1
- package/README.md +55 -1
- package/dist/index.cjs +827 -398
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +32 -28
- package/dist/index.d.ts +32 -28
- package/dist/index.js +711 -298
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.3.0
|
|
4
|
+
|
|
5
|
+
- Ignore late typing failures after newer input or connection interruption.
|
|
6
|
+
|
|
7
|
+
- Reject stale revisions even while a media-only insertion is waiting to render.
|
|
8
|
+
|
|
9
|
+
- Hydrate related attachments through authenticated message lookup after raw row events; keep text responsive and preserve media during edits.
|
|
10
|
+
- Bound and coalesce attachment lookups, guard stale/deleted/session-retired responses, and reconcile all viewed live messages in initially empty rooms.
|
|
11
|
+
- Require `getMessage(id)` in custom UI adapters and release the composer without waiting for typing-stop HTTP.
|
|
12
|
+
- Exercise incoming file/image rendering through the actual SDK and Supabase protocol with realistic relation-free row events.
|
|
13
|
+
- Normalize Vue class attributes using Vue's own helper, fixing the Vue 3.4 minimum-version type build.
|
|
14
|
+
|
|
15
|
+
- Bind room and inbox state to the owning SDK login, including same-user replacement and logout.
|
|
16
|
+
- Reconcile the complete viewed history on private-channel reconnect; use value cursors for older pages.
|
|
17
|
+
- Consume typed row changes and ID-only deletions without restoring deleted text/files on late responses.
|
|
18
|
+
- Use monotonic server read positions and expiring, session-owned typing state.
|
|
19
|
+
- Require the new custom-adapter lifecycle/deletion/cursor contract; no compatibility fallback.
|
|
20
|
+
- Add private-source CI, actual-SDK protocol tests and rendered React/Vue regression checks. Requires core SDK 0.3.x with automatic private-topic discovery.
|
|
21
|
+
|
|
3
22
|
## 0.2.2
|
|
4
23
|
|
|
5
24
|
- Show `Sending…` for optimistic messages instead of a device-clock timestamp that can jump after acknowledgement.
|
package/PARITY.md
CHANGED
|
@@ -13,7 +13,7 @@ while using Vue-native composition patterns.
|
|
|
13
13
|
| Replaceable SDK boundary | `ConvoKitUiClient` | `ConvoKitUiClient` | `ConvoKitUiClient` |
|
|
14
14
|
| Conversation state | Controller | `useConversation` | `useConversation` |
|
|
15
15
|
| Conversation-list state | Controller | `useConversationList` | `useConversationList` |
|
|
16
|
-
|
|
|
16
|
+
| Inbox offset pagination and de-duplication | Yes | Yes | Yes |
|
|
17
17
|
| Search, archived, participant, predicate, sort filters | Yes | Yes | Yes |
|
|
18
18
|
| Realtime messages, typing, reads | Yes | Yes | Yes |
|
|
19
19
|
| Pending state without provisional timestamps or receipts | Yes | Yes | Yes |
|
|
@@ -32,3 +32,10 @@ Vue also exposes controlled/uncontrolled composer text through `v-model`,
|
|
|
32
32
|
per-part `classNames` and `styles`, `unstyled` mode, native root attributes,
|
|
33
33
|
image loading policy, time formatting, scroll behavior controls, callback props,
|
|
34
34
|
and exposed composable controllers.
|
|
35
|
+
## Unreleased recovery parity
|
|
36
|
+
|
|
37
|
+
Room and inbox session eviction, value-cursor history, full viewed-range reconnect
|
|
38
|
+
reconciliation, ID-only deletions and server-sourced read positions are tested in
|
|
39
|
+
this feature branch. They require the unpublished core SDK recovery contract.
|
|
40
|
+
The parity script checks API presence only; the controller, rendered-view and
|
|
41
|
+
actual-SDK protocol tests verify behavior. See README 0.3.0 behavior and integration notes.
|
package/README.md
CHANGED
|
@@ -11,7 +11,61 @@ React package: system typography, separated rows, subtle borders, compact
|
|
|
11
11
|
actions, and restrained radii. It remains framework-CSS independent and does
|
|
12
12
|
not require Tailwind in the host application.
|
|
13
13
|
|
|
14
|
-
##
|
|
14
|
+
## 0.3.0 session and history recovery
|
|
15
|
+
|
|
16
|
+
This release requires JavaScript SDK 0.3.x and the coordinated backend. The core
|
|
17
|
+
SDK discovers current private room/app topics automatically and rejoins when
|
|
18
|
+
membership changes; no additional customer configuration is needed.
|
|
19
|
+
|
|
20
|
+
- The default adapter exposes a session identity that stays stable on token
|
|
21
|
+
renewal and changes on every new login, including the same user ID. Room and
|
|
22
|
+
inbox caches are cleared when that session ends. After reconnecting a user,
|
|
23
|
+
update application authentication state so the hook/composable can bind the
|
|
24
|
+
new session (or recreate the adapter).
|
|
25
|
+
- Initial history and older pages preserve live changes received while loading.
|
|
26
|
+
Message pagination uses newest-first `beforeCreatedAt`/`beforeId` values,
|
|
27
|
+
not an offset calculated from the current visible row count. Page sizes are
|
|
28
|
+
integers from 1 through 100.
|
|
29
|
+
- `refresh()` and successful room-channel joins reconcile the **entire viewed
|
|
30
|
+
history range**, retaining the old snapshot until all required pages succeed.
|
|
31
|
+
`isReconciling` exposes this background work. Transient failures preserve the
|
|
32
|
+
view for retry; authoritative history 401/403/404 responses clear it.
|
|
33
|
+
- Typed INSERT/UPDATE events and private ID-only deletion events are distinct.
|
|
34
|
+
Deletion removes text and attachment cards, and a late HTTP response cannot
|
|
35
|
+
restore a known-deleted message. A reconnect also removes deletions missed
|
|
36
|
+
while offline.
|
|
37
|
+
- Raw Postgres events contain the message row, not its related attachments.
|
|
38
|
+
The UI displays text immediately and calls authenticated `getMessage(id)`
|
|
39
|
+
for the complete message, including files and images. Existing attachments
|
|
40
|
+
remain visible during edits until the full response confirms a change;
|
|
41
|
+
media-only messages wait for that response instead of showing empty bubbles.
|
|
42
|
+
This adds a REST lookup for observed row changes, limited to eight concurrent
|
|
43
|
+
lookups per room store and coalesced by message ID. Obsolete responses cannot
|
|
44
|
+
restore deleted messages or data from a previous login.
|
|
45
|
+
- Read receipts use persisted participant positions and server read events,
|
|
46
|
+
monotonically. A successful mark-read request does not fabricate a timestamp
|
|
47
|
+
from the device clock. Remote typing expires and clears on disconnect.
|
|
48
|
+
- Pending sends are bound to their original room/session. Reconciliation uses
|
|
49
|
+
the returned message ID, never a guess based on identical text or file count.
|
|
50
|
+
Without server-provided request IDs, a Realtime echo can briefly coexist with
|
|
51
|
+
its pending row until the HTTP acknowledgement identifies it.
|
|
52
|
+
- Custom `ConvoKitUiClient` adapters must implement `sessionIdentity`,
|
|
53
|
+
`onConnectionEvent` (including `onSessionEnded`), typed `onMessage`,
|
|
54
|
+
`onMessageDeleted`, `getMessage(id)`, and paired message cursors. The message
|
|
55
|
+
lookup must enforce the same app/room authorization and return the complete
|
|
56
|
+
current record, including an authoritative attachment list. Custom inbox page
|
|
57
|
+
loaders must be scoped to the same authenticated app and return bounded pages; their
|
|
58
|
+
filters restart at offset zero. No legacy adapter fallback is provided.
|
|
59
|
+
|
|
60
|
+
The managed API default and customer token-provider workflow are unchanged.
|
|
61
|
+
The SDK discovers the Supabase URL and publishable key automatically; customers
|
|
62
|
+
do not configure those values or ship a backend secret.
|
|
63
|
+
|
|
64
|
+
The inbox still uses the existing paged REST contract. Session eviction is
|
|
65
|
+
implemented, but live inbox/cascade invalidation requires the separate backend
|
|
66
|
+
event contract; refresh or reopen the inbox after those changes.
|
|
67
|
+
|
|
68
|
+
## Install published packages
|
|
15
69
|
|
|
16
70
|
```bash
|
|
17
71
|
npm install @convokitapp/sdk @convokitapp/vue-ui vue
|