You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Added
Added Chronicle.ExternalServices.register/2,3 for registering external service definitions (HTTP or MsSql/PostgreSql endpoints) with Chronicle, via a pipe-friendly Chronicle.ExternalServices.DefinitionBuilder supporting basic/bearer/OAuth authorization and custom headers/options
Added Chronicle.Identities.rename/3 for renaming an identity's display name by its stable subject
Added Chronicle.Compliance.delete_encryption_key/2 for deleting the PII encryption key for a subject
Added Chronicle.EventSequences.EventLog.redact/3 and redact_for_event_source/4 to permanently erase an event's (or an event source's) content for GDPR/compliance purposes — destructive and irreversible, unlike compliance encryption
Added get_from_sequence_number/2, get_next_sequence_number/1,2, get_tail_sequence_number_for_observer/2, and complete_stream/2,3 to Chronicle.EventSequences.EventLog (also mirrored on Chronicle.EventSequences.EventSequence for non-default sequences)
get_for_event_source/2 and get_tail_sequence_number/2 now accept :event_source_type, :event_stream_type, and :event_stream_id filters instead of silently ignoring them
Added append_and_wait_for_completion/3 to append an event and wait for every affected observer (reactor, reducer, ...) to reach it or fail
A reactor's handle/2 can now return {:ok, event_or_events} to append follow-up event(s) as a side effect, in addition to :ok/{:error, reason}
Chronicle.Reactors.Reactor and Chronicle.Reducers.Reducer gain optional replay-lifecycle callbacks (on_replay_begin/0, on_replay_end/0, on_partition_replay_begin/1, on_partition_replay_end/1)
Added Chronicle.ReadModels.watch/2 and unwatch/1 for subscribing to live read-model changesets, and dehydrate_session/4 for explicitly releasing a materialized read-model session
Added Chronicle.EventStoreSubscriptions.get_all/1 for listing currently-registered event store subscriptions
Added the Chronicle.FailedPartitions module (get_all/1, get_for/2) for inspecting observers with failed partitions
unique/2 gains a :scope option (:per_event_source_type / :per_event_stream_type / :per_event_stream_id) to narrow a uniqueness check instead of always checking globally
use Chronicle.Reducers.Reducer gains an :active option for passive reducers, whose read model is computed on demand instead of kept warm in the background
Added documentation for all of the above (new sections on the event sequences, reactors, read models, event store subscriptions, constraints, and reducers pages, plus a new Failed Partitions page) and console sample demonstrations of redaction, reactor side effects, wait-for-completion, and constraint scoping
Fixed
unique/2's :message option is no longer silently discarded when normalizing constraint declarations
Test plan
mix compile --warnings-as-errors (client library and console sample) — zero warnings, zero errors
mix test — 284 passed
Documentation/validate-client-snippets.py — all snippets compile, including new ones