v_chat_core 0.1.0-rc.6
v_chat_core: ^0.1.0-rc.6 copied to clipboard
Pure Dart runtime foundation for the V Chat end-user SDK.
Changelog #
0.1.0-rc.6 #
- Fixed private thread-read realtime commits when clearing the final thread-only unread channel-type group from the offline conversation and aggregate summary cache.
- Omit the now-empty group before strict unread-summary validation so the confirmed server mutation
converges without
realtime_event_storage_failed.
0.1.0-rc.5 #
- Fixed complete conversation and membership reconciliation when the configured local store page size is below the 500-row refresh bound.
- Read existing exact-scope cache rows through bounded deterministic pages before applying the final atomic replacement; the 500-row cap and overflow errors are unchanged.
0.1.0-rc.4 #
- Expanded the bundled README with source-confirmed client composition, lifecycle, REST, realtime, offline ownership, cancellation, error, and security guidance.
- Changed no public declaration, wire contract, runtime behavior, or dependency.
0.1.0-rc.3 #
- Added strict current-user push preference GET/PUT models, operations, gateway behavior, stable facade, and exact error/response validation.
- Added provider-neutral content-light notification parsing and typed routes with exact-scope, restart-safe duplicate/conflict handling committed before publication.
- Added installation synchronization/removal helpers without exposing provider credentials, addresses, raw native objects, or message content.
- Added typed current-user mute/block relationship put, delete, and bounded query operations plus app-user and exact-channel message report operations from the released FTR-030 contract.
- Added fail-closed moderation decoding, local self-target/note/expiry/cursor validation, and authentication-refresh replay without generic transient mutation retry.
- Kept bans, blocklist administration, moderation-case review/resolution, persistence, local history filtering, and moderation realtime events out of the app-user SDK.
- Added strict app-user exact-channel message search with literal text and author filters, bounded query-bound cursor pages, safe authentication replay, cancellation, and a stable channel facade.
- Kept app-server app-user/channel catalog search and unavailable highlighting metadata out of the
end-user API; search results, inputs, and cursors remain network-only under
no-store. - Added capability-gated current-user export, job status/cancellation, ephemeral download metadata, and final self-delete APIs with strict models and a stable data-lifecycle facade.
- Added
self_data_lifecyclesession capability visibility and immediate client invalidation after a successful self-delete response. - Added no Drift schema, offline mutation queue, public realtime event, or dependency.
0.1.0-rc.2 #
- Added the strict five-operation end-user attachment client, immutable metadata and result models,
and a stable
VChatAttachmentsfacade. - Added isolated signed-target upload/download streaming with bounded progress, cooperative cancellation, explicit caller-owned retry, and redacted ephemeral targets.
- Added exact scoped metadata caching, monotonic versions, owner validation, and deletion tombstones without persisting bytes, signed URLs, signed headers, or transfer progress.
0.1.0-rc.1 #
- Published the first release-candidate metadata, MIT license, support policy, and deterministic source-package evidence.
- Made
Retry-Afterconstruction portable to JavaScript by accepting the largest whole-second value whose microseconds remain exactly representable across supported Dart targets. - Preserved the SDK-FL-017 public API baseline and every released REST/realtime behavior from the
coordinated
0.1.0-dev.18package set.
0.1.0-dev.18 #
- Added immutable client lifecycle snapshots and stable channel, conversation, and thread resource interfaces over the existing flat client operations.
- Added bounded exact-scope cached conversation page/exact-resource streams with deterministic disconnect, user-switch, disposal, and listener cancellation.
- Added the normalized public API declaration snapshot and compatibility/deprecation policy.
- Preserved all REST/realtime contracts, validation, cancellation, retry, cache, and offline write classifications.
0.1.0-dev.17 #
- Allowed app-background suspension to remain queued while realtime recovery is active.
- Mapped a connection suspended before ready publication to the stable
request_cancelledlifecycle error instead of a misleading missing-ready protocol error. - Added no REST, realtime envelope, storage schema, or public domain-model change.
0.1.0-dev.16 #
- Added acknowledged exact-user presence watch/unwatch with monotonic updates, bounded freshness,
immediate disconnect invalidation to
unknown, and reconnect rewatch. - Added acknowledged channel/thread typing watches plus bounded keystroke refresh and local stop debounce without replaying the connected user's typing after reconnect.
- Added strict fail-closed decoding for all released FTR-025 activity envelopes and limits.
0.1.0-dev.15 #
- Added typed own-user reaction add/remove and exact-type reactor cursor pages.
- Hydrated bounded reaction summaries on full messages through an independent monotonic cache version, without changing message edit versions or persisting reactor lists.
- Added strict ordered reaction-event decoding, cache-before-callback delta application, and refresh-required handling for summary-version gaps.
0.1.0-dev.14 #
- Added typed fixed-identity reply send, bounded thread pages, cached thread snapshots, and current-user thread read state.
- Made exact message get/update/delete reply-aware while preserving top-level-only history.
- Added strict reply and private thread-state realtime decoding, durable merge, listener, and reconnect-compatible checkpoint behavior.
0.1.0-dev.13 #
- Enforced the released 16/32-KiB ready input, 64-KiB server buffer, 32-KiB receive, 4-KiB subscription command, 100-subscription, and eight-command limits.
- Added bounded eight-frame/32-KiB durable processing turns and terminal local slow-consumer handling through close 4411 without automatic reconnect.
- Added
VChatRealtimePressureSnapshotandVChatClient.realtimePressureSnapshotwith redacted count/byte-only diagnostics. - Preserved desired recovery intent when channel or connection continuity becomes ambiguous.
0.1.0-dev.12 #
- Added opt-in FTR-020 fresh-socket recovery with typed starts/results, strict control decoding, deterministic per-channel outcomes, and terminal authorization revocation.
- Added same-client-instance durable channel checkpoints, atomic event-plus-position commits, replay-before-connected fencing, explicit checkpoint reset, and bounded manifests/deadlines.
- Added bounded channel/message snapshot repair plus unread/first-page conversation refresh with live channel/private-event buffering and no offline mutation replay.
- Kept event and snapshot checkpoints monotonic, rejected equal-version content conflicts inside atomic storage, preserved newer local REST results, and left overflowed repairs explicitly refresh-required.
0.1.0-dev.11 #
- Added strict typed decoding for the five released FTR-019 durable channel/private events plus stale-subscription and refresh-required controls.
- Added bounded global, exact-channel, private-state, and redacted-diagnostic listeners with idempotent cancellation, duplicate suppression, and isolated listener failures.
- Commit accepted channel and current-user projections to the scoped cache before callbacks; stale subscription conflicts, queue overflow, invalid protocol majors, and compatible future v1 events fail closed or enter bounded redacted quarantine.
- Validate schema-v3 offline metadata at its persisted whole-second precision while preserving authoritative sub-second timestamps inside typed cached payloads.
- Kept reconnect replay/checkpoint repair, generalized slow-consumer recovery, replies, and reactions in their dedicated later SDK slices.
0.1.0-dev.10 #
- Added strict acknowledged
channel.subscribeandchannel.unsubscribeversion 1 commands, connection-local handles, exact request correlation, generic authority revocation, and typed released command errors. - Added concurrent subscribe deduplication, eight-command and 100-handle bounds, cancellation compensation, protocol-failure closure, and deterministic handle cleanup.
- Added fresh reconnect restoration with a new authorization check and cutover sequence while explicitly deferring durable event continuity, replay, and state repair.
- Kept request IDs, subscription state, command state, and cutover sequences memory-only with no Drift or offline-command persistence.
0.1.0-dev.9 #
- Added the exact one-use app-user realtime ticket operation and secure
vchat.realtime.v1handshake with no caller-provided ticket, token, auth frame, or alternate protocol. - Added strict
connection.readyandconnection.drainingversion 1 decoding, negotiated-protocol verification, native Ping/Pong policy, and connected-state publication only after server ready. - Added public explicit connect/disconnect/suspend/resume state, safe ready metadata, close/failure mapping, fresh ticket/token work per reconnect, and bounded exponential backoff with secure jitter.
- Added peer close-code capture with terminal 4410/4411 and protocol-policy handling, bounded transient reconnect, one-refresh protection for repeated 4401 at the same auth expiry, and generation-safe ticket/socket cancellation.
- Kept socket, ticket, heartbeat, retry, failure, and connection state memory-only; channel subscriptions, durable events, and reconnect state repair remain SDK-FL-009 through SDK-FL-011.
0.1.0-dev.8 #
- Added strict complete current-user conversation, unread-summary, and exact-target mark-read operations from the released FTR-016 app-user contract.
- Added bounded remote/local conversation pages, explicit complete refresh, latest-message and private read-state projections, and exact channel-type unread aggregates.
- Reused the SDK-FL-005 paging transport and atomically committed conversation plus membership cache views without persisting remote cursors or fabricating mark-read deltas.
- Raised the bounded local sync transaction ceiling from 1,000 to 2,000 entity mutations so a complete 500-row conversation plus membership replacement remains atomic.
- Kept mark-read online-only with no automatic replay; callers explicitly reconcile conversation
and unread reads after success, timeout, or
channel_read_state_conflict.
0.1.0-dev.7 #
- Added strict top-level message send/query/get/update/delete models and app-user REST operations from the released FTR-014 contract.
- Added caller-supplied or securely generated UUID identities, immutable sequence paging, explicit optimistic versions, terminal tombstones, and conservative read-only retry behavior.
- Added confirmed-only exact-scope message cache pages with atomic monotonic version merge and cache-before-publication client behavior.
- Kept replies, reactions, attachments, realtime events, server cursors, pending content, automatic mutation replay, app-server credentials, and locator headers outside this feature.
0.1.0-dev.6 #
- Added the released app-user active membership/channel projection over the FTR-016 conversation query, with strict full-row decoding and opaque limit-bound paging.
- Added exact-scope membership cache pages plus bounded complete refresh; only a terminal fresh traversal can transactionally delete missing rows.
- Kept FTR-013 membership administration, rosters, retained membership DTOs, and FTR-019 realtime processing outside the Flutter surface.
- Added released app-user channel create/get/update operations with strict FTR-012 request/response, creator, metadata, error, replay, cancellation, and optimistic-version behavior.
- Added immutable channel models, explicit omission/null patches, deterministic cache-then-network snapshots, exact cached reads, and bounded type-specific local pages.
- Bound local cursors to their validated channel type and enforced exact safe-integer versions.
- Added atomic equal-or-newer cache merging so older responses cannot replace newer channel state.
- Serialized channel cache commits ahead of scope purge/close, preserved retained-cache provenance, and rejected paused-watch refreshes after a user switch.
- Matched released metadata bounds exactly, snapshotted update custom data, and hardened creator, version-transition, request-ID, envelope, and cached-sort validation.
- Kept the app-server-only remote channel query and unavailable capability projection outside the end-user SDK.
0.1.0-dev.5 #
- Added typed current-app-user device registration list, APNs/FCM/Web Push upsert, and revoke operations from the released FTR-011 contract.
- Added strict safe-metadata response decoding, provider/platform request unions, Web Push endpoint and P-256 validation, and redacted request diagnostics.
- Added replacement-token current-session identity validation, bounded safe-read retry, zero mutation replay, and disconnect/dispose cancellation.
- Kept registrations and delivery addresses out of local persistence.
0.1.0-dev.4 #
- Added immutable entity/dead-letter pages with explicit bounded continuation metadata.
- Added durable page metadata, atomic sync batches, entity delete keys, and scoped reset APIs.
- Added deterministic offline record creation from injected
ClockandIdGenerator. - Made durable pending-command creation reject operations not explicitly classified
offlineQueueable. - Added
OfflineSyncStorewithout changing the dev.3OfflineStoreinterface; legacyPendingCommandcalls default to non-persistableonlineOnly. - Bounded public pages at 500 items and made dead-letter type, keys, values, and reason privacy-safe before persistence.
0.1.0-dev.3 #
- Added the exact
getCurrentAppUserSessionoperation, immutableVChatSession, typedVChatEnvironment, bounded request options, and cooperative cancellation. - Bound
connectUserto the configured app, environment, and expected user before publishing session or local scope; connect no longer implies realtime readiness. - Made tokens opaque, memory-only, optional-expiry values with a 4,096 UTF-8 byte limit, bounded refresh/provider attempts, server-expiry adoption, cancellation-safe coalescing, and redacted failures.
- Added one independent authentication refresh and one bounded transient read retry with exact
Retry-After, timeout, cancellation, and error-envelope handling. - Made operation errors require their documented status/code pairing and complete error-envelope shape before they can influence authentication or retry behavior.
- Made Dio timeouts terminal
request_timeoutfailures, preserved every positive representableRetry-Aftervalue for caller-controlled delay, and rejected malformed retry hints. - Rejected impossible UTC calendar/time components instead of accepting normalized timestamps.
- Removed raw REST, token-manager, and realtime foundations from the normal public barrel while retaining them through the internal package test-support entry point.
0.1.0-dev.2 #
- Corrected Dio query/options handling and transform-timeout retry classification.
- Tightened offline-model initialization and realtime subscription cleanup for strict analyzers.
- Bounded JSON structure and encoded bytes for requests, responses, realtime, and offline payloads.
- Bounded reconnect attempts, made connection cancellation generation-safe, and fail closed when a realtime listener pauses instead of buffering remote frames.
- Bounded realtime subprotocol count and UTF-8 bytes, and mapped provider receive/send failures to stable redacted transport errors.
- Capped encoded realtime JSON frames at 1 MiB, made paused-listener backpressure terminal
failed, and kept ordinary socket errors reconnectable throughdisconnected. - Serialized lifecycle operations, made stop/dispose preempt pending reconnects, retained failed cleanup/purge work for retry, and normalized all offline lookup identifiers.
- Discarded raw token-provider, handshake, Dio interceptor, connector, socket setup/cancellation, payload, and transport causes from public exceptions.
- Bounded REST query/header cardinality, names, values, lists, and finite numbers, and normalized sensitive logger keys across punctuation and camel-case forms.
- Deferred all outbound WebSocket close codes/reasons until a later contract-backed feature.
- Added transport regression coverage and removed raw REST execution from the normal public API,
intentionally replacing the unpublished
0.1.0-dev.1scaffold baseline. - Replaced sort-key-only offline pagination with exported composite
OfflinePageCursorvalues. - Made socket cleanup retryable and generation-isolated, preserved suspension after failed resume, and serialized synchronous disconnect-listener reentrancy with disposal.
- Expanded sensitive custom-header matching and removed resolved resource paths from REST failure diagnostics.
- Ensured synchronous disconnected-listener purge escalation completes before the shared disconnect future and rejects clear requests while a pending initialization has no active scope or after the disconnect closes its purge acceptance window.
- Retained sockets returned after connector cancellation through bounded close retries.
0.1.0-dev.1 #
- Added contract-neutral transport, token, realtime, offline, error, logging, and lifecycle foundations.