Skip to content

Bump AndreGoepel.Design.Blazor and 3 others#135

Merged
andregoepel merged 3 commits into
mainfrom
dependabot/nuget/nuget-minor-patch-597aa1317d
Jul 23, 2026
Merged

Bump AndreGoepel.Design.Blazor and 3 others#135
andregoepel merged 3 commits into
mainfrom
dependabot/nuget/nuget-minor-patch-597aa1317d

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Jul 23, 2026

Copy link
Copy Markdown
Contributor

Updated AndreGoepel.Design.Blazor from 1.2.1 to 1.3.0.

Release notes

Sourced from AndreGoepel.Design.Blazor's releases.

1.3.0

What's Changed

Full Changelog: andregoepel/design-blazor@v1.2.1...v1.3.0

Commits viewable in compare view.

Updated Marten from 9.16.0 to 9.18.0.

Release notes

Sourced from Marten's releases.

9.18.0

Marten 9.18.0 focuses on raw-JSON streaming endpoints for ASP.NET Core, server-side LINQ Select() projection, and continued event-store observability work.

ASP.NET Core streaming & pagination

  • StreamPaged<T> — stream a paged JSON envelope (pageNumber/pageSize/totalItemCount/pageCount/hasNextPage/hasPreviousPage/items) in a single round trip via a count(*) OVER() window column (#​5014). Test coverage hardened to pin the camelCase wire contract, page-past-end behavior, and filtered totals (#​5028).
  • StreamPagedByCursor<T> — keyset ("seek") pagination that costs the same regardless of depth, using an opaque continuation cursor (#​5016). Now streams the raw, already-persisted data column byte-identical to StreamMany/StreamPaged (no hydrate + re-serialize) by reading the next cursor's ORDER BY key values off the same reader; a malformed client-supplied cursor now returns a clean 400 instead of a 500 (#​5033).
  • ETag / If-None-Match (304) conditional-request support on StreamOne<T> and StreamAggregate<T> (#​5015). StreamOne<T> now reads the document's mt_version inline in the same single round trip (no follow-up metadata query), and the where T : notnull constraint tightening was reversed (#​5030).

LINQ

  • Simple Select() projections (x => new Dto { A = x.A, B = x.Nested.B }) now translate to a server-side jsonb_build_object(...) expression that is streamable as raw JSON, instead of hydrating the full document and projecting on the client (#​5017). Value-preserving conversions — widening numerics (intlong/decimal), boxing to object, nullable wrapping, enum→integral under EnumStorage.AsInteger — stay translatable and streamable; only lossy/computed conversions fall back (#​5032).
  • DCB tag operators usable in Where() over events (#​5004).
  • AggregateToMany() LINQ operator — run an event query through a multi-stream projection (#​5003).

Event store, projections & daemon

  • Marten.TimescaleDB extension — projection + document hypertables (#​4995).
  • Extended-progression telemetry: batched per-flush heartbeat writes (#​5008); fixed a shutdown telemetry race in extended_progression_batch_write (#​5023); running_on_node write-path regression coverage (#​5001 / #​5007). The cross-repo running_on_node population under Wolverine-managed distribution is completed via JasperFx 2.34.0 + Wolverine.
  • Tenant-scoped event/tag explorer readsReadStreamAsync / GetRecentStreamsAsync overrides honor tenancy (#​5020, #​5025), plus a MultiStreamProjection stepthrough via the instrumented fold in EventStoreExplorer (#​5002).
  • HighWaterHealthCheck scoped to owned databases, with per-tenant and ExternallyManaged daemon support (#​4992).
  • Surface JasperFx's application-assembly-reuse warning (GH-3521) at startup (#​5000).

Multi-tenancy & infrastructure

  • Token-capable maintenance connection for tenant database provisioning (#​5006).
  • Docs: connecting to Azure Database for PostgreSQL with Entra ID / managed identity (#​4993).

Dependencies

  • JasperFx / JasperFx.Events 2.34.0, Weasel 9.17.0.

Full changelog: JasperFx/marten@V9.17.0...V9.18.0

9.17.0

High-water health check: opt-in autoRestart + heartbeat primary signal (#​4986)

Builds on the detection-only check from 9.16 (#​4984). Requires JasperFx 2.32.0 (jasperfx#​539), which this release rolls up to (#​4987).

  • Opt-in autoRestartAddMartenHighWaterHealthCheck(TimeSpan? staleThreshold = null, long minimumGap = 1, bool autoRestart = false). When the check is Unhealthy and autoRestart is on, it asks the local projection coordinator's daemon to restart the high-water agent's poll loop only — the mark is never advanced — capped to once per staleness window per database. The cycle is still reported Unhealthy so an alert still fires. Intended for Solo / leader nodes.
  • Heartbeat is now the primary staleness signal — when EnableExtendedProgressionTracking is on, the high-water agent stamps a liveness heartbeat on the HighWaterMark row every poll cycle. Heartbeat age proves the loop is cycling independent of whether the mark advances, so a quiet store is never a false positive, and a dead agent is caught even when projections are fully caught up (the exact #​4961 blind spot). The original sequence-gap heuristic is retained as the ExtendedProgression-off fallback.

Full changelog: JasperFx/marten@V9.16.1...V9.17.0

9.16.1

Async daemon data-safety release: the high water detection can no longer advance past "outstanding" event sequence numbers — sequences reserved by transactions that are still in flight — which could silently skip those events in async projections under concurrent append load (bulk imports being the classic case). Root-caused and fixed from discussion #​4953.

The four closed mechanisms:

  • The GapDetector command batched three statements, each reading its own READ COMMITTED snapshot — commits landing mid-command could defeat every gap check and silently advance the mark over an in-flight append, regardless of StaleSequenceThreshold. Detection is now a single statement / single snapshot.
  • Projection rebuilds and forced catch-up looped the gap-skipping detection toward the reserved sequence last_value, mowing through in-flight gaps. CheckNowAsync (JasperFx.Events 2.29.1) now targets the highest committed sequence and simply waits for in-flight appends to land.
  • The stale fallback could teleport the mark to reserved last_value - 32 across thousands of in-flight reservations on an idle-then-suddenly-busy store, because its gate measured staleness against mt_event_progression.last_updated. The threshold is now measured from when each specific gap was first observed.
  • Wall-clock stale skipping could not tell a slow transaction from a rolled-back one. Before skipping any stale gap, Marten now checks PostgreSQL for evidence that a transaction which could still fill the gap is alive (pg_locks on the mt_events tables, open transactions in pg_stat_activity, in-progress write xids from pg_current_snapshot()), and holds while any exists — by default Marten never knowingly skips past a live appender. Only provably-dead gaps (rolled-back appends) are skipped, bounded to the sequence ceiling observed with the gap, and every skip is logged at Warning with its exact range.

New knobs on StoreOptions.Projections: UseTransactionEvidenceForGapSkipping (default true; false restores the previous wall-clock behavior) and SkipStaleGapsDespiteLiveTransactionsAfter (default null = never skip a live appender; PostgreSQL's idle_in_transaction_session_timeout is the recommended backstop against leaked sessions).

What's Changed

Full Changelog: JasperFx/marten@V9.16.0...V9.16.1

Commits viewable in compare view.

Pinned Marten.AspNetCore at 9.18.0.

Release notes

Sourced from Marten.AspNetCore's releases.

9.18.0

Marten 9.18.0 focuses on raw-JSON streaming endpoints for ASP.NET Core, server-side LINQ Select() projection, and continued event-store observability work.

ASP.NET Core streaming & pagination

  • StreamPaged<T> — stream a paged JSON envelope (pageNumber/pageSize/totalItemCount/pageCount/hasNextPage/hasPreviousPage/items) in a single round trip via a count(*) OVER() window column (#​5014). Test coverage hardened to pin the camelCase wire contract, page-past-end behavior, and filtered totals (#​5028).
  • StreamPagedByCursor<T> — keyset ("seek") pagination that costs the same regardless of depth, using an opaque continuation cursor (#​5016). Now streams the raw, already-persisted data column byte-identical to StreamMany/StreamPaged (no hydrate + re-serialize) by reading the next cursor's ORDER BY key values off the same reader; a malformed client-supplied cursor now returns a clean 400 instead of a 500 (#​5033).
  • ETag / If-None-Match (304) conditional-request support on StreamOne<T> and StreamAggregate<T> (#​5015). StreamOne<T> now reads the document's mt_version inline in the same single round trip (no follow-up metadata query), and the where T : notnull constraint tightening was reversed (#​5030).

LINQ

  • Simple Select() projections (x => new Dto { A = x.A, B = x.Nested.B }) now translate to a server-side jsonb_build_object(...) expression that is streamable as raw JSON, instead of hydrating the full document and projecting on the client (#​5017). Value-preserving conversions — widening numerics (intlong/decimal), boxing to object, nullable wrapping, enum→integral under EnumStorage.AsInteger — stay translatable and streamable; only lossy/computed conversions fall back (#​5032).
  • DCB tag operators usable in Where() over events (#​5004).
  • AggregateToMany() LINQ operator — run an event query through a multi-stream projection (#​5003).

Event store, projections & daemon

  • Marten.TimescaleDB extension — projection + document hypertables (#​4995).
  • Extended-progression telemetry: batched per-flush heartbeat writes (#​5008); fixed a shutdown telemetry race in extended_progression_batch_write (#​5023); running_on_node write-path regression coverage (#​5001 / #​5007). The cross-repo running_on_node population under Wolverine-managed distribution is completed via JasperFx 2.34.0 + Wolverine.
  • Tenant-scoped event/tag explorer readsReadStreamAsync / GetRecentStreamsAsync overrides honor tenancy (#​5020, #​5025), plus a MultiStreamProjection stepthrough via the instrumented fold in EventStoreExplorer (#​5002).
  • HighWaterHealthCheck scoped to owned databases, with per-tenant and ExternallyManaged daemon support (#​4992).
  • Surface JasperFx's application-assembly-reuse warning (GH-3521) at startup (#​5000).

Multi-tenancy & infrastructure

  • Token-capable maintenance connection for tenant database provisioning (#​5006).
  • Docs: connecting to Azure Database for PostgreSQL with Entra ID / managed identity (#​4993).

Dependencies

  • JasperFx / JasperFx.Events 2.34.0, Weasel 9.17.0.

Full changelog: JasperFx/marten@V9.17.0...V9.18.0

9.17.0

High-water health check: opt-in autoRestart + heartbeat primary signal (#​4986)

Builds on the detection-only check from 9.16 (#​4984). Requires JasperFx 2.32.0 (jasperfx#​539), which this release rolls up to (#​4987).

  • Opt-in autoRestartAddMartenHighWaterHealthCheck(TimeSpan? staleThreshold = null, long minimumGap = 1, bool autoRestart = false). When the check is Unhealthy and autoRestart is on, it asks the local projection coordinator's daemon to restart the high-water agent's poll loop only — the mark is never advanced — capped to once per staleness window per database. The cycle is still reported Unhealthy so an alert still fires. Intended for Solo / leader nodes.
  • Heartbeat is now the primary staleness signal — when EnableExtendedProgressionTracking is on, the high-water agent stamps a liveness heartbeat on the HighWaterMark row every poll cycle. Heartbeat age proves the loop is cycling independent of whether the mark advances, so a quiet store is never a false positive, and a dead agent is caught even when projections are fully caught up (the exact #​4961 blind spot). The original sequence-gap heuristic is retained as the ExtendedProgression-off fallback.

Full changelog: JasperFx/marten@V9.16.1...V9.17.0

9.16.1

Async daemon data-safety release: the high water detection can no longer advance past "outstanding" event sequence numbers — sequences reserved by transactions that are still in flight — which could silently skip those events in async projections under concurrent append load (bulk imports being the classic case). Root-caused and fixed from discussion #​4953.

The four closed mechanisms:

  • The GapDetector command batched three statements, each reading its own READ COMMITTED snapshot — commits landing mid-command could defeat every gap check and silently advance the mark over an in-flight append, regardless of StaleSequenceThreshold. Detection is now a single statement / single snapshot.
  • Projection rebuilds and forced catch-up looped the gap-skipping detection toward the reserved sequence last_value, mowing through in-flight gaps. CheckNowAsync (JasperFx.Events 2.29.1) now targets the highest committed sequence and simply waits for in-flight appends to land.
  • The stale fallback could teleport the mark to reserved last_value - 32 across thousands of in-flight reservations on an idle-then-suddenly-busy store, because its gate measured staleness against mt_event_progression.last_updated. The threshold is now measured from when each specific gap was first observed.
  • Wall-clock stale skipping could not tell a slow transaction from a rolled-back one. Before skipping any stale gap, Marten now checks PostgreSQL for evidence that a transaction which could still fill the gap is alive (pg_locks on the mt_events tables, open transactions in pg_stat_activity, in-progress write xids from pg_current_snapshot()), and holds while any exists — by default Marten never knowingly skips past a live appender. Only provably-dead gaps (rolled-back appends) are skipped, bounded to the sequence ceiling observed with the gap, and every skip is logged at Warning with its exact range.

New knobs on StoreOptions.Projections: UseTransactionEvidenceForGapSkipping (default true; false restores the previous wall-clock behavior) and SkipStaleGapsDespiteLiveTransactionsAfter (default null = never skip a live appender; PostgreSQL's idle_in_transaction_session_timeout is the recommended backstop against leaked sessions).

What's Changed

Full Changelog: JasperFx/marten@V9.16.0...V9.16.1

Commits viewable in compare view.

Updated Radzen.Blazor from 11.1.6 to 11.1.7.

Release notes

Sourced from Radzen.Blazor's releases.

11.1.7

11.1.7 - 2026-07-22

Improvements

  • RadzenTabs - new cancelable CanChange event raised before the selected tab changes on user-initiated switches (mouse and keyboard). Call PreventDefault() on the TabsCanChangeEventArgs to keep the current tab - e.g. to implement an unsaved changes guard. Programmatic SelectedIndex changes are not affected.
  • Localization - previously hardcoded English texts can now be localized: validator default messages, Scheduler and Gantt view tab labels, Steps button texts, DialogService Confirm/Alert defaults, side dialog labels, Chat and AIChat typing indicators and tooltips, and more. Adds 48 resource keys with German, Spanish, French, Italian and Japanese translations. English defaults are unchanged.

Fixes

  • RadzenChart - chart content no longer renders outside the visible chart area when zooming or panning a chart with string categories. The clip region ignored the zoomed range, so columns, markers, data labels and category tick labels stayed visible beyond the plot and overlapped neighboring components, and the value axis with its labels and title shifted outside the chart. Fixes #​2624.
  • RadzenGantt - the today line and markers now render at the correct date when the timeline is wider than the viewport. Their percentage position resolved against the scroll viewport instead of the full timeline width. The today line is also hidden when today is outside the visible range instead of being clamped to the timeline edge. Fixes #​2623.
  • RadzenDataGrid - typing in Simple filter mode inputs, inline edit editors and cell template inputs no longer causes a server round trip and a full grid re-render on every keystroke (~22-43KB of render traffic per key before, zero after). The same per-keystroke cost is removed from keyboard guards in RadzenTabs panels, RadzenTreeItem templates and RadzenCheckBoxList and RadzenRadioButtonList item templates.
  • RadzenDataGrid - the empty state message ("No records to display.") now goes through the localizer so translation dictionaries can override it.

Commits viewable in compare view.

@dependabot dependabot Bot added .NET Pull requests that update .NET code dependencies Pull requests that update a dependency file labels Jul 23, 2026
Bumps AndreGoepel.Design.Blazor from 1.2.1 to 1.3.0
Bumps Marten from 9.16.0 to 9.18.0
Bumps Marten.AspNetCore from 9.16.0 to 9.18.0
Bumps Radzen.Blazor from 11.1.6 to 11.1.7

---
updated-dependencies:
- dependency-name: AndreGoepel.Design.Blazor
  dependency-version: 1.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: nuget-minor-patch
- dependency-name: Marten
  dependency-version: 9.18.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: nuget-minor-patch
- dependency-name: Marten.AspNetCore
  dependency-version: 9.18.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: nuget-minor-patch
- dependency-name: Radzen.Blazor
  dependency-version: 11.1.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-minor-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot changed the title Bump the nuget-minor-patch group with 4 updates Bump AndreGoepel.Design.Blazor and 3 others Jul 23, 2026
@dependabot
dependabot Bot force-pushed the dependabot/nuget/nuget-minor-patch-597aa1317d branch from 9b3d0ca to ed562c2 Compare July 23, 2026 15:08
AndreGoepel.Design.Blazor 1.3.0 ships its own LocalizedComponentBase.
It only shares the name: its T(key) resolves against DesignStrings and
returns the key unchanged for anything it does not know, so removing the
local base made every identity page render raw resource keys
("LoginForm.InvalidLoginAttempt" instead of "Invalid login attempt.").
The build stayed green; 55 bUnit tests and the Playwright suite did not.

Restored as IdentityLocalizedComponentBase. The name differs on purpose:
_Imports.razor pulls in both namespaces, so a shared name is ambiguous
(CS0104) - which is what prompted the removal in the first place.
@andregoepel
andregoepel merged commit 272cf65 into main Jul 23, 2026
4 checks passed
@dependabot
dependabot Bot deleted the dependabot/nuget/nuget-minor-patch-597aa1317d branch July 23, 2026 15:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file .NET Pull requests that update .NET code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant