Releases: dymaptic/GeoBlazor
v4.6.1
Release v4.6.1
Highlights
- Patch release for GeoBlazor Core with no public API changes or breaking changes.
- Fixes ESBuild incremental checks so CI branch metadata does not force unnecessary rebuilds.
- Fixes runtime layer updates for components backed by raw ArcGIS JavaScript objects, including
SnappingOptionsused by Pro widgets.
Bug Fixes
- Fixed Core build script handling for ESBuild incremental checks so branch-name noise in CI does not invalidate JavaScript build state.
- Fixed
MapComponent.SetLayerso it no longer calls a missingsetLayermethod directly on raw ArcGIS objects. This resolves runtime failures seen when updatingSnappingOptionsafter render, including calls such asSetEnabled(true)in a Sketch workflow.
Internal / Build / Tooling
- Refreshed bundled GeoBlazor build-tool binaries for Windows, Linux, and macOS.
- Synced
developfrommainbefore release so this PR includes the published v4.6.0 baseline.
What's Changed
- Release v4.6.1 by @TimPurdum in #534
Full Changelog: v4.6.0...v4.6.1
v4.6.0
Release v4.6.0
🐛 Bug Fixes
GeometryEngine.Unionreturns a populated result again. A regression in 4.5.1 causedUnionto come back without itsExtent(and in some paths asnull).Unionnow returns the full unioned geometry with a populatedExtent, so calls likeview.GoTo(union.Extent)work as expected.- Layer-by-id binding now resolves after a late layer add. Components and widgets bound to a layer by id (for example
SketchWidgetwithLayerId/GraphicsLayerId) now correctly resolve the layer and push it to the underlying ArcGIS JS object when the layer is added to the map after the component first renders.
✨ New Features
GetLayer()/SetLayer()onMapComponent. These are now available on theMapComponentbase class, so any layer-bearing component can retrieve or set its layer at runtime (previously they were implemented per-component).
🧰 Internal / Build / Tooling
- Test/CI harness reliability: build the test web app before launch (and fail fast if it doesn't start), build test projects in the correct configuration before
--no-buildlaunches, surface web-test failures, inject the ArcGIS API key into the test web app, fail the run when no tests execute, and avoid enum reflection when building test URLs.
What's Changed
- Release v4.6.0 by @TimPurdum in #533
Full Changelog: v4.5.4...v4.6.0
v4.5.4
What
Restores the runtime setter methods on SnappingOptions that were accidentally dropped in the 4.5.x line, plus regression guards.
Why
Commit c3ab36411 truncated SnappingOptions.gb.cs right after the property getters, deleting the entire Property Setters and collection-helper regions. That removed SetEnabled, SetGridEnabled, SetDistance, SetFeatureEnabled, SetSelfEnabled, SetAttributeRulesEnabled, and SetFeatureSources, so consumers can no longer toggle snapping / grid snapping at runtime (reported against 4.5.1). It's isolated to this one component and is still broken on develop and in 4.5.1–4.5.3.
Changes
- Restore the complete
SnappingOptions.gb.csfromf02afefeb(the commit immediately before the truncation) — re-adds exactly the 7 setters + the Add/RemoveFeatureSourceshelpers and nothing else. SnappingOptionsApiTests— public-API contract test so a future code-generation split can't silently drop these members again.GeometryExtentSerializationTests+ additions toGeometryEngineTests.TestUnion— guards for the separately-reportedGeometryEngine.Unionextent issue. That one is not reproducible from code (the union/extent path is identical to the working 4.4.4), so these lock in the behavior rather than fix a found bug.
Notes
- Targets
developbecause the regression is present there too; also serves as the cut point for a 4.5.4 hotfix. - 11/11 unit tests pass; the browser test project compiles.
🤖 Generated with Claude Code
What's Changed
- Restore SnappingOptions runtime setters (4.5.x regression) by @magmoe in #530
- Bump lodash-es from 4.17.22 to 4.18.1 in /src/dymaptic.GeoBlazor.Core by @dependabot[bot] in #526
- Bump flatted from 3.3.3 to 3.4.2 in /src/dymaptic.GeoBlazor.Core by @dependabot[bot] in #527
- Bump minimatch, eslint, eslint-plugin-sonarjs and typescript-eslint in /src/dymaptic.GeoBlazor.Core by @dependabot[bot] in #528
- Bump esbuild from 0.27.1 to 0.28.1 in /src/dymaptic.GeoBlazor.Core by @dependabot[bot] in #529
- Bump protobufjs from 7.5.8 to 7.6.3 in /src/dymaptic.GeoBlazor.Core by @dependabot[bot] in #531
- Release 4.5.4 by @TimPurdum in #532
Full Changelog: v4.5.3...v4.5.4
v4.5.3
Bumps @protobufjs/utf8 from 1.1.0 to 1.1.1.
Release notes
Sourced from @protobufjs/utf8's releases.
protobufjs-cli: v1.1.1
1.1.1 (2023-02-02)
Bug Fixes
Commits
- See full diff in compare view
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the Security Alerts page.
What's Changed
- Release v4.5.3 by @TimPurdum in #525
Full Changelog: v4.5.2...v4.5.3
v4.5.2
Release v4.5.0
🚀 Highlights
- Location services modernized — strongly-typed browser geolocation for the Locate widget, plus
CancellationTokensupport and simplified optional-parameter signatures onLocationService. - Multipart geometry editing —
RemovePath/RemovePoint/RemoveRingnow return dedicated, named result types. - Several breaking API changes to review —
Groundmoved namespaces,MapColoris now immutable, the Locate geolocation API is now strongly typed, and a few types were removed. See Breaking Changes.
✨ New Features
- Strongly-typed browser geolocation for the Locate widget — new
IGeolocationCoordinates,IGeolocationPosition, andPositionOptionstypes.LocateWidget.Locate()now returns anIGeolocationPosition?andGeolocationOptionsis now aPositionOptions?(replacing the prior rawstring?JSON).LocateWidgethas also been reimplemented as a Razor component (LocateWidget.razor+LocateWidget.razor.cs). CancellationTokensupport acrossLocationServicegeocoding methods (AddressesToLocations,AddressToLocations,LocationToAddress,SuggestLocations), with optional parameters replacing the prior overload stacks.- New
CollectionChangeEvent<T>event type. - New enum members —
DeconflictionStrategy(Static,Dynamic),SystemOrAreaUnit(SquareNauticalMiles), plus added members onHorizontalAlignment,VerticalAlignment,NoDataInterpretation,OrderBy,OutputPixelType, andSpatialRelationship.
🐛 Bug Fixes
MapColor.GetHashCodenow hashes array contents instead of the array reference, fixing equality and dictionary-key behavior.- Widget ↔ layer connection reliability improvements (
IMapComponent.Layer/Vieware now settable so layer-bound widgets reconnect correctly when a layer is added after the widget renders). - TypeScript interop: corrected
invokeMethodAsynccasing in a generated wrapper; light-theme styling fixes;SnappingOptionslayer support andsetPropertyvalue sanitization.
⚠️ Breaking Changes
- Content Types Renamed —
AttachmentsContent,ExpressionContent,FieldsContent,MediaContent,RelationshipContent, andTextContenthave been removed, replaced by newAttachmentsPopupContent,ExpressionPopupContent,FieldsPopupContent,MediaPopupContent,RelationshipPopupContent, andTextPopupContenttypes. Groundmoved fromdymaptic.GeoBlazor.Core.Modeltodymaptic.GeoBlazor.Core.Components. It was also reworked:Layers,Loaded,NavigationConstraint,Opacity, andSurfaceColorare now settable;QueryElevation(Geometry)no longer takes an options argument;CreateElevationSampler's options argument is now optional; andWhen(...)now takesAction?callbacks instead ofFunc<Task>.MapColoris now immutable.RgbaValuesandHexOrNameValueare read-only (set at construction), andMapColor.Clone()has been removed.- Locate widget geolocation API is now strongly typed.
Locate()returnsIGeolocationPosition?(wasstring?), andGeolocationOptions/Get/SetGeolocationOptionsusePositionOptions?(wasstring?). Code passing or parsing raw JSON strings must update. GeometryEnginemultipart-edit return types changed.RemovePath,RemovePoint(polyline & polygon), andRemoveRingnow return dedicated records —RemovePathResult,RemovePointOnPolylineResult,RemovePointOnPolygonResult,RemoveRingResult— instead of value tuples. Callers destructuring the old tuples must update.LocationServiceoverloads consolidated into single methods with optional parameters. Call sites using named/positional arguments generally remain source-compatible; code bound to a specific overload signature (or via reflection) must be updated.LocateWidgetconverted from a code-only class to a Razor component (LocateWidget.csremoved in favor ofLocateWidget.razor/.razor.cs).MissingMapViewReferenceExceptionremoved.IAttributeTableTemplateElementsinterface removed (replaced byAttributeTableTemplateElement).
🧰 Internal / Build / Tooling
- Sample apps moved out to the dedicated GeoBlazor-Samples repository.
- ESBuild now runs via an MSBuild project (
dymaptic.GeoBlazor.Core.ESBuild.csproj) replacing theESBuildLaunchersource generator. - New Roslyn analyzers:
ParameterConversionAnalyzerandGeoBlazorParameterAssignmentSuppressor. - Cross-platform build support (win-x64 / linux-x64 / osx-arm64), atomic ESBuild locking, single ESBuild run per build, and a
RemoveStaleJsContenttarget to avoid stale JS/map build errors. .editorconfigmoved to the repo root; solution migrated from.slnto.slnx;.dockerignoreand.gitattributesadded.- Docker build-caching and test-infrastructure improvements; committed Core
package-lock.jsonsonpm ciworks in CI; fixed hung test runs.
Full Changelog: v4.5.1...v4.5.2
v4.5.1
Release v4.5.0
🚀 Highlights
- Location services modernized — strongly-typed browser geolocation for the Locate widget, plus
CancellationTokensupport and simplified optional-parameter signatures onLocationService. - Multipart geometry editing —
RemovePath/RemovePoint/RemoveRingnow return dedicated, named result types. - Several breaking API changes to review —
Groundmoved namespaces,MapColoris now immutable, the Locate geolocation API is now strongly typed, and a few types were removed. See Breaking Changes.
✨ New Features
- Strongly-typed browser geolocation for the Locate widget — new
IGeolocationCoordinates,IGeolocationPosition, andPositionOptionstypes.LocateWidget.Locate()now returns anIGeolocationPosition?andGeolocationOptionsis now aPositionOptions?(replacing the prior rawstring?JSON).LocateWidgethas also been reimplemented as a Razor component (LocateWidget.razor+LocateWidget.razor.cs). CancellationTokensupport acrossLocationServicegeocoding methods (AddressesToLocations,AddressToLocations,LocationToAddress,SuggestLocations), with optional parameters replacing the prior overload stacks.- New
CollectionChangeEvent<T>event type. - New enum members —
DeconflictionStrategy(Static,Dynamic),SystemOrAreaUnit(SquareNauticalMiles), plus added members onHorizontalAlignment,VerticalAlignment,NoDataInterpretation,OrderBy,OutputPixelType, andSpatialRelationship.
🐛 Bug Fixes
MapColor.GetHashCodenow hashes array contents instead of the array reference, fixing equality and dictionary-key behavior.- Widget ↔ layer connection reliability improvements (
IMapComponent.Layer/Vieware now settable so layer-bound widgets reconnect correctly when a layer is added after the widget renders). - TypeScript interop: corrected
invokeMethodAsynccasing in a generated wrapper; light-theme styling fixes;SnappingOptionslayer support andsetPropertyvalue sanitization.
⚠️ Breaking Changes
- Content Types Renamed —
AttachmentsContent,ExpressionContent,FieldsContent,MediaContent,RelationshipContent, andTextContenthave been removed, replaced by newAttachmentsPopupContent,ExpressionPopupContent,FieldsPopupContent,MediaPopupContent,RelationshipPopupContent, andTextPopupContenttypes. Groundmoved fromdymaptic.GeoBlazor.Core.Modeltodymaptic.GeoBlazor.Core.Components. It was also reworked:Layers,Loaded,NavigationConstraint,Opacity, andSurfaceColorare now settable;QueryElevation(Geometry)no longer takes an options argument;CreateElevationSampler's options argument is now optional; andWhen(...)now takesAction?callbacks instead ofFunc<Task>.MapColoris now immutable.RgbaValuesandHexOrNameValueare read-only (set at construction), andMapColor.Clone()has been removed.- Locate widget geolocation API is now strongly typed.
Locate()returnsIGeolocationPosition?(wasstring?), andGeolocationOptions/Get/SetGeolocationOptionsusePositionOptions?(wasstring?). Code passing or parsing raw JSON strings must update. GeometryEnginemultipart-edit return types changed.RemovePath,RemovePoint(polyline & polygon), andRemoveRingnow return dedicated records —RemovePathResult,RemovePointOnPolylineResult,RemovePointOnPolygonResult,RemoveRingResult— instead of value tuples. Callers destructuring the old tuples must update.LocationServiceoverloads consolidated into single methods with optional parameters. Call sites using named/positional arguments generally remain source-compatible; code bound to a specific overload signature (or via reflection) must be updated.LocateWidgetconverted from a code-only class to a Razor component (LocateWidget.csremoved in favor ofLocateWidget.razor/.razor.cs).MissingMapViewReferenceExceptionremoved.IAttributeTableTemplateElementsinterface removed (replaced byAttributeTableTemplateElement).
🧰 Internal / Build / Tooling
- Sample apps moved out to the dedicated GeoBlazor-Samples repository.
- ESBuild now runs via an MSBuild project (
dymaptic.GeoBlazor.Core.ESBuild.csproj) replacing theESBuildLaunchersource generator. - New Roslyn analyzers:
ParameterConversionAnalyzerandGeoBlazorParameterAssignmentSuppressor. - Cross-platform build support (win-x64 / linux-x64 / osx-arm64), atomic ESBuild locking, single ESBuild run per build, and a
RemoveStaleJsContenttarget to avoid stale JS/map build errors. .editorconfigmoved to the repo root; solution migrated from.slnto.slnx;.dockerignoreand.gitattributesadded.- Docker build-caching and test-infrastructure improvements; committed Core
package-lock.jsonsonpm ciworks in CI; fixed hung test runs.
Full Changelog: v4.5.0...v4.5.1
v4.5.0
Release v4.5.0
🚀 Highlights
- Location services modernized — strongly-typed browser geolocation for the Locate widget, plus
CancellationTokensupport and simplified optional-parameter signatures onLocationService. - Multipart geometry editing —
RemovePath/RemovePoint/RemoveRingnow return dedicated, named result types. - Several breaking API changes to review —
Groundmoved namespaces,MapColoris now immutable, the Locate geolocation API is now strongly typed, and a few types were removed. See Breaking Changes.
✨ New Features
- Strongly-typed browser geolocation for the Locate widget — new
IGeolocationCoordinates,IGeolocationPosition, andPositionOptionstypes.LocateWidget.Locate()now returns anIGeolocationPosition?andGeolocationOptionsis now aPositionOptions?(replacing the prior rawstring?JSON).LocateWidgethas also been reimplemented as a Razor component (LocateWidget.razor+LocateWidget.razor.cs). CancellationTokensupport acrossLocationServicegeocoding methods (AddressesToLocations,AddressToLocations,LocationToAddress,SuggestLocations), with optional parameters replacing the prior overload stacks.- New
CollectionChangeEvent<T>event type. - New enum members —
DeconflictionStrategy(Static,Dynamic),SystemOrAreaUnit(SquareNauticalMiles), plus added members onHorizontalAlignment,VerticalAlignment,NoDataInterpretation,OrderBy,OutputPixelType, andSpatialRelationship.
🐛 Bug Fixes
MapColor.GetHashCodenow hashes array contents instead of the array reference, fixing equality and dictionary-key behavior.- Widget ↔ layer connection reliability improvements (
IMapComponent.Layer/Vieware now settable so layer-bound widgets reconnect correctly when a layer is added after the widget renders). - TypeScript interop: corrected
invokeMethodAsynccasing in a generated wrapper; light-theme styling fixes;SnappingOptionslayer support andsetPropertyvalue sanitization.
⚠️ Breaking Changes
- Content Types Renamed —
AttachmentsContent,ExpressionContent,FieldsContent,MediaContent,RelationshipContent, andTextContenthave been removed, replaced by newAttachmentsPopupContent,ExpressionPopupContent,FieldsPopupContent,MediaPopupContent,RelationshipPopupContent, andTextPopupContenttypes. Groundmoved fromdymaptic.GeoBlazor.Core.Modeltodymaptic.GeoBlazor.Core.Components. It was also reworked:Layers,Loaded,NavigationConstraint,Opacity, andSurfaceColorare now settable;QueryElevation(Geometry)no longer takes an options argument;CreateElevationSampler's options argument is now optional; andWhen(...)now takesAction?callbacks instead ofFunc<Task>.MapColoris now immutable.RgbaValuesandHexOrNameValueare read-only (set at construction), andMapColor.Clone()has been removed.- Locate widget geolocation API is now strongly typed.
Locate()returnsIGeolocationPosition?(wasstring?), andGeolocationOptions/Get/SetGeolocationOptionsusePositionOptions?(wasstring?). Code passing or parsing raw JSON strings must update. GeometryEnginemultipart-edit return types changed.RemovePath,RemovePoint(polyline & polygon), andRemoveRingnow return dedicated records —RemovePathResult,RemovePointOnPolylineResult,RemovePointOnPolygonResult,RemoveRingResult— instead of value tuples. Callers destructuring the old tuples must update.LocationServiceoverloads consolidated into single methods with optional parameters. Call sites using named/positional arguments generally remain source-compatible; code bound to a specific overload signature (or via reflection) must be updated.LocateWidgetconverted from a code-only class to a Razor component (LocateWidget.csremoved in favor ofLocateWidget.razor/.razor.cs).MissingMapViewReferenceExceptionremoved.IAttributeTableTemplateElementsinterface removed (replaced byAttributeTableTemplateElement).
🧰 Internal / Build / Tooling
- Sample apps moved out to the dedicated GeoBlazor-Samples repository.
- ESBuild now runs via an MSBuild project (
dymaptic.GeoBlazor.Core.ESBuild.csproj) replacing theESBuildLaunchersource generator. - New Roslyn analyzers:
ParameterConversionAnalyzerandGeoBlazorParameterAssignmentSuppressor. - Cross-platform build support (win-x64 / linux-x64 / osx-arm64), atomic ESBuild locking, single ESBuild run per build, and a
RemoveStaleJsContenttarget to avoid stale JS/map build errors. .editorconfigmoved to the repo root; solution migrated from.slnto.slnx;.dockerignoreand.gitattributesadded.- Docker build-caching and test-infrastructure improvements; committed Core
package-lock.jsonsonpm ciworks in CI; fixed hung test runs.
What's Changed
- Release v4.4.3 by @TimPurdum in #506
- Release v4.4.5 by @TimPurdum in #508
- V4.5.0 by @TimPurdum in #521
- Bump protobufjs from 7.5.4 to 7.5.8 in /src/dymaptic.GeoBlazor.Core by @dependabot[bot] in #520
- Release v4.5.0 by @TimPurdum in #522
Full Changelog: v4.4.4...v4.5.0
v4.4.4
null
What's Changed
- Update CoreVersion to 4.4.4 by @TimPurdum in #507
Full Changelog: v4.4.3...v4.4.4
v4.4.3
Bug fix #505 for "A task was cancelled" exception on async MapView property queries (e.g., await view.GetExtent()) after 60 seconds interacting with a map.
What's Changed
- Release v4.4.0 by @TimPurdum in #501
- Release v4.4.1 by @TimPurdum in #503
- Fix TaskCanceledException after MapView timeout expires by @TimPurdum in #505
Full Changelog: v4.4.0...v4.4.3
v4.4.2
No changes, patch release to fix build error for Pro NuGetPackage
What's Changed
- Release v4.2.0 by @TimPurdum in #464
- Release v4.3.0 by @TimPurdum in #483
- Added featurelayer tests by @magmoe in #474
- Add loadProtobuf to Layer.Load by @TimPurdum in #485
activatorutilitesconstructorattribute validation console app by @seahro in #476- measurement widgets and sample by @TimPurdum in #488
- Feature/open basemaps by @TimPurdum in #489
- Samples fixes by @TimPurdum in #490
- .NET 10 Support by @TimPurdum in #491
- Fix SceneView navigation toggle and improve Pro layer fallback handling by @TimPurdum in #498
- Fix SearchWidget events not returning full objects (#499) by @TimPurdum in #500
- Fix MapImageLayer.GetSublayers JS reference population (Issue #492) by @TimPurdum in #494
Full Changelog: v4.3.0...v4.4.2