v_chat_core 0.1.0-rc.6 copy "v_chat_core: ^0.1.0-rc.6" to clipboard
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_lifecycle session 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 VChatAttachments facade.
  • 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-After construction 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.18 package 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_cancelled lifecycle 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 VChatRealtimePressureSnapshot and VChatClient.realtimePressureSnapshot with 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.subscribe and channel.unsubscribe version 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.v1 handshake with no caller-provided ticket, token, auth frame, or alternate protocol.
  • Added strict connection.ready and connection.draining version 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 Clock and IdGenerator.
  • Made durable pending-command creation reject operations not explicitly classified offlineQueueable.
  • Added OfflineSyncStore without changing the dev.3 OfflineStore interface; legacy PendingCommand calls default to non-persistable onlineOnly.
  • 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 getCurrentAppUserSession operation, immutable VChatSession, typed VChatEnvironment, bounded request options, and cooperative cancellation.
  • Bound connectUser to 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_timeout failures, preserved every positive representable Retry-After value 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 through disconnected.
  • 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.1 scaffold baseline.
  • Replaced sort-key-only offline pagination with exported composite OfflinePageCursor values.
  • 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.
0
likes
130
points
268
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Pure Dart runtime foundation for the V Chat end-user SDK.

Homepage
Repository (GitHub)
View/report issues

Topics

#chat #dart #realtime #offline-first #sdk

License

MIT (license)

Dependencies

dio, meta, web_socket

More

Packages that depend on v_chat_core