Skip to content

Update Hybrid method to support nullable alpha parameter#304

Open
mpartipilo wants to merge 8 commits intoissue-298from
issue-299
Open

Update Hybrid method to support nullable alpha parameter#304
mpartipilo wants to merge 8 commits intoissue-298from
issue-299

Conversation

@mpartipilo
Copy link
Collaborator

Enhance the gRPC client to accept a nullable alpha parameter for allowing the server to determine the default value to sue.
Adjustments ensure backward compatibility with earlier server versions while updating documentation to reflect these changes.

Copy link

@orca-security-eu orca-security-eu bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Orca Security Scan Summary

Status Check Issues by priority
Passed Passed Secrets high 0   medium 0   low 0   info 0 View in Orca

@github-actions
Copy link

github-actions bot commented Mar 13, 2026

Summary - Weaviate C# Client Coverage

Summary
Generated on: 03/15/2026 - 22:42:09
Coverage date: 03/15/2026 - 22:36:18 - 03/15/2026 - 22:41:27
Parser: MultiReport (59x Cobertura)
Assemblies: 2
Classes: 327
Files: 209
Line coverage: 43.9% (8941 of 20366)
Covered lines: 8941
Uncovered lines: 11425
Coverable lines: 20366
Total lines: 53681
Branch coverage: 32.3% (1804 of 5577)
Covered branches: 1804
Total branches: 5577
Method coverage: Feature is only available for sponsors

Coverage

Weaviate.Client - 45.9%
Name Line Branch
Weaviate.Client 45.9% 34.3%
Weaviate.Client.AggregateClient 19.5% 11.3%
Weaviate.Client.AggregateClientHybridExtensions 0%
Weaviate.Client.AliasClient 100% 62.5%
Weaviate.Client.ApiKeyTokenService 100% 50%
Weaviate.Client.Auth 9.5%
Weaviate.Client.AuthenticatedHttpHandler 71.7% 60%
Weaviate.Client.BackupClient 82% 43.4%
Weaviate.Client.BaseCollectionClient 0% 0%
Weaviate.Client.Cache.SchemaCache 69.4% 60%
Weaviate.Client.ClientConfiguration 100% 100%
Weaviate.Client.ClusterClient 86.2% 64.2%
Weaviate.Client.CollectionClient 98.7% 87.5%
Weaviate.Client.CollectionClientExtensions 100% 100%
Weaviate.Client.CollectionConfigClient 95.1% 58.3%
Weaviate.Client.CollectionsClient 32.3% 35%
Weaviate.Client.Configure 49% 47.3%
Weaviate.Client.Connect 25.5% 0%
Weaviate.Client.DataClient 91.4% 79.6%
Weaviate.Client.DefaultTokenServiceFactory 5.7% 6.8%
Weaviate.Client.DependencyInjection.WeaviateClientFactory 0% 0%
Weaviate.Client.DependencyInjection.WeaviateInitializationService 0%
Weaviate.Client.DependencyInjection.WeaviateOptions 0%
Weaviate.Client.DependencyInjection.WeaviateServiceCollectionExtensions 0% 0%
Weaviate.Client.Factory 100%
Weaviate.Client.Generate 100%
Weaviate.Client.GenerateClient 13.3% 32.6%
Weaviate.Client.GenerateClientHybridExtensions 0%
Weaviate.Client.GenerativeConfigFactory 5.2% 100%
Weaviate.Client.GenerativeProviderFactory 1%
Weaviate.Client.GroupsClient 100%
Weaviate.Client.GroupsOidcClient 47.8%
Weaviate.Client.Grpc.LoggingInterceptor 0% 0%
Weaviate.Client.Grpc.RetryInterceptor 41.6% 37.5%
Weaviate.Client.Grpc.WeaviateGrpcClient 64.8% 48.8%
Weaviate.Client.Grpc.WeaviateGrpcServerException 0%
Weaviate.Client.Internal.AutoArray`1 61.9% 50%
Weaviate.Client.Internal.AutoArrayBuilder 100% 100%
Weaviate.Client.Internal.ExceptionHelper 72.1% 61.5%
Weaviate.Client.Internal.HttpLoggingHandler 0% 0%
Weaviate.Client.Internal.KeySortedList`2 43.7%
Weaviate.Client.Internal.MultiKeySortedList`2 0% 0%
Weaviate.Client.Internal.ObjectHelper 45.4% 32%
Weaviate.Client.Internal.RetryHandler 30.1% 33.3%
Weaviate.Client.Internal.TimeoutHelper 72.9% 44.4%
Weaviate.Client.Internal.VersionGuard 83.3% 66.6%
Weaviate.Client.Models.Aggregate 100%
Weaviate.Client.Models.AggregateGroupByResult 26.1% 8.4%
Weaviate.Client.Models.AggregateResult 49.2% 12.8%
Weaviate.Client.Models.Alias 100%
Weaviate.Client.Models.AliasesResource 100%
Weaviate.Client.Models.AndNestedFilter 50%
Weaviate.Client.Models.Backup 63.6%
Weaviate.Client.Models.BackupBackend 20%
Weaviate.Client.Models.BackupClientConfig 100%
Weaviate.Client.Models.BackupCreateOperation 100%
Weaviate.Client.Models.BackupCreateRequest 100%
Weaviate.Client.Models.BackupOperationBase 61.6% 65.3%
Weaviate.Client.Models.BackupRestoreOperation 100%
Weaviate.Client.Models.BackupRestoreRequest 100%
Weaviate.Client.Models.BackupsResource 100%
Weaviate.Client.Models.BackupStatusExtensions 78.5% 52.5%
Weaviate.Client.Models.BatchInsertRequest 52.1%
Weaviate.Client.Models.BatchInsertResponse 80%
Weaviate.Client.Models.BatchInsertResponseEntry 100%
Weaviate.Client.Models.BatchReferenceReturn 29% 0%
Weaviate.Client.Models.BM25Config 44.4% 16.6%
Weaviate.Client.Models.Bm25ConfigUpdate 60% 50%
Weaviate.Client.Models.BM25Operator 66.6%
Weaviate.Client.Models.ClusterNode 30.7%
Weaviate.Client.Models.ClusterNodeVerbose 23% 0%
Weaviate.Client.Models.CollectionConfig 56.5% 7.1%
Weaviate.Client.Models.CollectionConfigCommon 20.5% 3.5%
Weaviate.Client.Models.CollectionConfigExport 0% 0%
Weaviate.Client.Models.CollectionsResource 100%
Weaviate.Client.Models.CollectionUpdate 42.2% 50%
Weaviate.Client.Models.CurrentUserInfo 80%
Weaviate.Client.Models.DatabaseUser 55.5%
Weaviate.Client.Models.DataReference 100%
Weaviate.Client.Models.DataResource 100%
Weaviate.Client.Models.DataTypeExtensions 0% 0%
Weaviate.Client.Models.DeleteManyObjectResult 100%
Weaviate.Client.Models.DeleteManyResult 100%
Weaviate.Client.Models.DynamicDto 0%
Weaviate.Client.Models.EmptyBackend 33.3%
Weaviate.Client.Models.EmptyStringEnumConverter`1 86.9% 66.6%
Weaviate.Client.Models.FilesystemBackend 100%
Weaviate.Client.Models.Filter 60.8% 40%
Weaviate.Client.Models.Filter`1 50% 50%
Weaviate.Client.Models.FlatDto 100%
Weaviate.Client.Models.FlexibleConverter`1 11.3% 3.4%
Weaviate.Client.Models.FlexibleStringConverter 38.4% 25%
Weaviate.Client.Models.Generative.Providers 0.6%
Weaviate.Client.Models.GenerativeConfig 7.5%
Weaviate.Client.Models.GenerativeConfigSerialization 46.8% 55.4%
Weaviate.Client.Models.GenerativeDebug 0%
Weaviate.Client.Models.GenerativeGroupByObject 100%
Weaviate.Client.Models.GenerativeGroupByResult 25%
Weaviate.Client.Models.GenerativePrompt 100%
Weaviate.Client.Models.GenerativeProvider 83.3%
Weaviate.Client.Models.GenerativeReply 100%
Weaviate.Client.Models.GenerativeResult 20% 0%
Weaviate.Client.Models.GenerativeWeaviateGroup 100%
Weaviate.Client.Models.GenerativeWeaviateObject 100%
Weaviate.Client.Models.GenerativeWeaviateResult 100%
Weaviate.Client.Models.GeoCoordinate 100%
Weaviate.Client.Models.GeoCoordinateConstraint 0%
Weaviate.Client.Models.GroupByObject 100%
Weaviate.Client.Models.GroupByRequest 100%
Weaviate.Client.Models.GroupByResult 16.6%
Weaviate.Client.Models.GroupByResult`2 100%
Weaviate.Client.Models.GroupedTask 100%
Weaviate.Client.Models.GroupRoleAssignment 0%
Weaviate.Client.Models.GroupsResource 100%
Weaviate.Client.Models.HFreshDto 0%
Weaviate.Client.Models.HnswDto 100%
Weaviate.Client.Models.HybridNearTextBuilder 0%
Weaviate.Client.Models.HybridNearVectorBuilder 0%
Weaviate.Client.Models.HybridVectorInput 78.5% 85.7%
Weaviate.Client.Models.HybridVectorInputBuilder 0%
Weaviate.Client.Models.InvertedIndexConfig 33.3% 4.5%
Weaviate.Client.Models.InvertedIndexConfigUpdate 80% 50%
Weaviate.Client.Models.JsonConverterEmptyCollectionAsNull 73.6% 50%
Weaviate.Client.Models.Metadata 100%
Weaviate.Client.Models.MetadataQuery 80.9%
Weaviate.Client.Models.MetaInfo 90.9% 50%
Weaviate.Client.Models.Metrics 84.8% 60%
Weaviate.Client.Models.ModelsToDtoExtensions 84.6% 75%
Weaviate.Client.Models.ModuleConfigList 0% 0%
Weaviate.Client.Models.Move 100%
Weaviate.Client.Models.MultiTenancyConfig 80%
Weaviate.Client.Models.MultiTenancyConfigUpdate 60%
Weaviate.Client.Models.MultiVectorDto 100%
Weaviate.Client.Models.MultiVectorEncodingDto 100%
Weaviate.Client.Models.MuveraDto 100% 100%
Weaviate.Client.Models.NamedVector 100% 100%
Weaviate.Client.Models.NearTextBuilder 36.2%
Weaviate.Client.Models.NearTextInput 50%
Weaviate.Client.Models.NearVectorBuilder 0%
Weaviate.Client.Models.NearVectorInput 45.4%
Weaviate.Client.Models.NestedFilter 100%
Weaviate.Client.Models.NodesResource 50%
Weaviate.Client.Models.NodeStatusExtensions 0% 0%
Weaviate.Client.Models.NotNestedFilter 100%
Weaviate.Client.Models.ObjectReference 80%
Weaviate.Client.Models.ObjectStorageBackend 0%
Weaviate.Client.Models.ObjectTTLConfig 97%
Weaviate.Client.Models.ObjectTTLConfigUpdate 89.6% 26.9%
Weaviate.Client.Models.OrNestedFilter 100%
Weaviate.Client.Models.PermissionResourceExtensions 78.9% 33.3%
Weaviate.Client.Models.Permissions 64.6% 50%
Weaviate.Client.Models.PermissionScope 100%
Weaviate.Client.Models.PhoneNumber 0%
Weaviate.Client.Models.Property 68.2% 38.8%
Weaviate.Client.Models.Property`1 100%
Weaviate.Client.Models.PropertyFilter 74.4% 50%
Weaviate.Client.Models.PropertyHelper 67.8% 53.4%
Weaviate.Client.Models.PropertyIndexTypeExtensions 50% 25%
Weaviate.Client.Models.PropertyUpdate 25%
Weaviate.Client.Models.QueryReference 100%
Weaviate.Client.Models.Reference 100%
Weaviate.Client.Models.ReferenceFilter 100%
Weaviate.Client.Models.ReferenceUpdate 0%
Weaviate.Client.Models.ReplicateRequest 100%
Weaviate.Client.Models.ReplicateResource 100%
Weaviate.Client.Models.ReplicationAsyncConfig 0%
Weaviate.Client.Models.ReplicationClientConfig 100%
Weaviate.Client.Models.ReplicationConfig 71.4%
Weaviate.Client.Models.ReplicationConfigUpdate 44.4%
Weaviate.Client.Models.ReplicationOperation 65% 50%
Weaviate.Client.Models.ReplicationOperationError 0%
Weaviate.Client.Models.ReplicationOperationStatus 37.5% 0%
Weaviate.Client.Models.ReplicationOperationTracker 64% 54.5%
Weaviate.Client.Models.Rerank 100%
Weaviate.Client.Models.Reranker 15.3%
Weaviate.Client.Models.RerankerConfigSerialization 56.8% 55%
Weaviate.Client.Models.RoleInfo 100%
Weaviate.Client.Models.RolesResource 100%
Weaviate.Client.Models.ShardInfo 100%
Weaviate.Client.Models.ShardingConfig 38%
Weaviate.Client.Models.ShardStatusExtensions 100% 50%
Weaviate.Client.Models.SimpleTargetVectors 100%
Weaviate.Client.Models.SinglePrompt 100%
Weaviate.Client.Models.Sort 100% 50%
Weaviate.Client.Models.SortExtensions 100%
Weaviate.Client.Models.StopwordConfig 42.8% 12.5%
Weaviate.Client.Models.StopwordsConfigUpdate 57.1% 50%
Weaviate.Client.Models.TargetVectors 27.6% 0%
Weaviate.Client.Models.Tenant 38.8% 13.3%
Weaviate.Client.Models.TenantsResource 100%
Weaviate.Client.Models.TimeFilter 75% 25%
Weaviate.Client.Models.Typed.AggregateGroupByResult`1 0% 0%
Weaviate.Client.Models.Typed.AggregatePropertyMapper 0% 0%
Weaviate.Client.Models.Typed.AggregateResult`1 0%
Weaviate.Client.Models.Typed.BooleanMetricsAttribute 0%
Weaviate.Client.Models.Typed.DateMetricsAttribute 0%
Weaviate.Client.Models.Typed.GenerativeGroupByObject`1 0%
Weaviate.Client.Models.Typed.GenerativeGroupByResult`1 0%
Weaviate.Client.Models.Typed.GenerativeWeaviateGroup`1 0%
Weaviate.Client.Models.Typed.GenerativeWeaviateObject`1 0%
Weaviate.Client.Models.Typed.GenerativeWeaviateResult`1 0%
Weaviate.Client.Models.Typed.GroupByObject`1 0%
Weaviate.Client.Models.Typed.GroupByResult`1 0%
Weaviate.Client.Models.Typed.IntegerMetricsAttribute 0%
Weaviate.Client.Models.Typed.MetricsExtractor 0% 0%
Weaviate.Client.Models.Typed.NumberMetricsAttribute 0%
Weaviate.Client.Models.Typed.TextMetricsAttribute 0%
Weaviate.Client.Models.Typed.TypedResultConverter 12% 7.6%
Weaviate.Client.Models.Typed.WeaviateGroup`2 0%
Weaviate.Client.Models.Typed.WeaviateObject`1 47.3% 37.5%
Weaviate.Client.Models.TypedBase`1 70.5%
Weaviate.Client.Models.TypedGuid 66.6%
Weaviate.Client.Models.TypedValue`1 80%
Weaviate.Client.Models.User 0%
Weaviate.Client.Models.UserMetadata 0%
Weaviate.Client.Models.UserRoleAssignment 100%
Weaviate.Client.Models.UsersResource 100%
Weaviate.Client.Models.Vector 31.2% 17.1%
Weaviate.Client.Models.VectorBuilder 0% 0%
Weaviate.Client.Models.VectorConfig 48.2% 16.6%
Weaviate.Client.Models.VectorConfigList 42.1% 25%
Weaviate.Client.Models.VectorConfigUpdate 50%
Weaviate.Client.Models.VectorIndex 74.5%
Weaviate.Client.Models.VectorIndexConfig 100%
Weaviate.Client.Models.VectorIndexConfigUpdate 68.4% 33.3%
Weaviate.Client.Models.VectorIndexConfigUpdateDynamic 0% 0%
Weaviate.Client.Models.VectorIndexConfigUpdateFlat 40%
Weaviate.Client.Models.VectorIndexConfigUpdateHNSW 52.9%
Weaviate.Client.Models.VectorIndexMappingExtensions 64.2% 46.9%
Weaviate.Client.Models.VectorIndexSerialization 44.7% 32.3%
Weaviate.Client.Models.VectorInputBuilderFactories 50% 50%
Weaviate.Client.Models.Vectorizer 9% 0%
Weaviate.Client.Models.VectorizerAttribute 100%
Weaviate.Client.Models.VectorizerConfig 48.7% 37.5%
Weaviate.Client.Models.VectorizerRegistry 68.9% 71.4%
Weaviate.Client.Models.Vectorizers.VectorizerConfigFactory 58% 62.5%
Weaviate.Client.Models.VectorMulti`1 38.8% 23%
Weaviate.Client.Models.VectorQuery 45% 50%
Weaviate.Client.Models.Vectors 31.2% 100%
Weaviate.Client.Models.VectorSearchInput 51.7% 16.6%
Weaviate.Client.Models.VectorSingle`1 13.6% 0%
Weaviate.Client.Models.WeaviateGroup`1 80%
Weaviate.Client.Models.WeaviateObject 88.8%
Weaviate.Client.Models.WeaviateObjectExtensions 56.5% 50%
Weaviate.Client.Models.WeaviateResult 100%
Weaviate.Client.Models.WeaviateResult`1 100%
Weaviate.Client.Models.WeightedField 0%
Weaviate.Client.Models.WeightedFields 0% 0%
Weaviate.Client.Models.WeightedTargetVectors 100% 100%
Weaviate.Client.NearMediaBuilder 0% 0%
Weaviate.Client.NearMediaInput 0%
Weaviate.Client.NodesClient 87.5% 50%
Weaviate.Client.OAuthConfig 0%
Weaviate.Client.OAuthTokenService 0% 0%
Weaviate.Client.QueryClient 45% 35%
Weaviate.Client.QueryClientHybridExtensions 0% 0%
Weaviate.Client.QueryClientNearTextExtensions 0% 0%
Weaviate.Client.ReplicationsClient 87% 51.7%
Weaviate.Client.RequiresWeaviateVersionAttribute 100%
Weaviate.Client.RerankerConfigFactory 14.2% 100%
Weaviate.Client.Rest.EnumMemberJsonConverter`1 0% 0%
Weaviate.Client.Rest.EnumMemberJsonConverterFactory 0%
Weaviate.Client.Rest.HttpResponseMessageExtensions 82.9% 62.5%
Weaviate.Client.Rest.InvalidEnumWireFormatException 0%
Weaviate.Client.Rest.WeaviateEndpoints 78.6% 75.8%
Weaviate.Client.Rest.WeaviateRestClient 88.4% 53.3%
Weaviate.Client.Rest.WeaviateRestClientException 0% 0%
Weaviate.Client.Rest.WeaviateRestServerException 0% 0%
Weaviate.Client.Rest.WeaviateUnexpectedStatusCodeException 100%
Weaviate.Client.RetryPolicy 50% 42.8%
Weaviate.Client.RolesClient 90.3% 50%
Weaviate.Client.Serialization.Converters.BlobPropertyConverter 58.8% 37.5%
Weaviate.Client.Serialization.Converters.BoolPropertyConverter 64% 40%
Weaviate.Client.Serialization.Converters.DatePropertyConverter 31% 21%
Weaviate.Client.Serialization.Converters.GeoPropertyConverter 28.3% 10.5%
Weaviate.Client.Serialization.Converters.IntPropertyConverter 49.2% 26.3%
Weaviate.Client.Serialization.Converters.NumberPropertyConverter 56.8% 23.5%
Weaviate.Client.Serialization.Converters.ObjectPropertyConverter 18% 7.3%
Weaviate.Client.Serialization.Converters.PhonePropertyConverter 3.6% 0%
Weaviate.Client.Serialization.Converters.TextPropertyConverter 36.3% 20.8%
Weaviate.Client.Serialization.Converters.UuidPropertyConverter 61.1% 37.5%
Weaviate.Client.Serialization.PropertyBag 0% 0%
Weaviate.Client.Serialization.PropertyConverterBase 23% 11.9%
Weaviate.Client.Serialization.PropertyConverterRegistry 73.6% 65.5%
Weaviate.Client.TenantsClient 84.5% 37.5%
Weaviate.Client.Typed.TypedCollectionClient`1 91.1% 50%
Weaviate.Client.Typed.TypedDataClient`1 49%
Weaviate.Client.Typed.TypedGenerateClient`1 0.8% 0%
Weaviate.Client.Typed.TypedGenerateClientHybridExtensions 0%
Weaviate.Client.Typed.TypedQueryClient`1 10.6% 100%
Weaviate.Client.Typed.TypedQueryClientHybridExtensions 0%
Weaviate.Client.UsersClient 89.4% 66.6%
Weaviate.Client.UsersDatabaseClient 100% 62.5%
Weaviate.Client.UsersOidcClient 4.5%
Weaviate.Client.Validation.TypeValidationException 0%
Weaviate.Client.Validation.TypeValidator 50% 48.6%
Weaviate.Client.Validation.ValidationError 83.3%
Weaviate.Client.Validation.ValidationResult 62.5% 50%
Weaviate.Client.Validation.ValidationWarning 0%
Weaviate.Client.ValidationExtensions 80% 100%
Weaviate.Client.VectorizerFactory 3.1% 0%
Weaviate.Client.VectorizerFactoryMulti 6.2%
Weaviate.Client.WeaviateAuthenticationException 100% 100%
Weaviate.Client.WeaviateAuthorizationException 100% 100%
Weaviate.Client.WeaviateBackupConflictException 100%
Weaviate.Client.WeaviateBadRequestException 0% 0%
Weaviate.Client.WeaviateClient 59.5% 47.9%
Weaviate.Client.WeaviateClientBuilder 56.6% 50%
Weaviate.Client.WeaviateClientBuilderExtensions 0%
Weaviate.Client.WeaviateClientException 33.3%
Weaviate.Client.WeaviateCollectionLimitReachedException 0% 0%
Weaviate.Client.WeaviateConflictException 100%
Weaviate.Client.WeaviateDefaults 100%
Weaviate.Client.WeaviateException 66.6%
Weaviate.Client.WeaviateExtensions 78.4% 52.7%
Weaviate.Client.WeaviateExternalModuleProblemException 0% 0%
Weaviate.Client.WeaviateFeatureNotSupportedException 0% 0%
Weaviate.Client.WeaviateModuleNotAvailableException 0% 0%
Weaviate.Client.WeaviateNotFoundException 14.8% 0%
Weaviate.Client.WeaviateServerException 66.6%
Weaviate.Client.WeaviateTimeoutException 0% 0%
Weaviate.Client.WeaviateUnprocessableEntityException 100% 100%
Weaviate.Client.WeaviateVersionMismatchException 0% 0%
Weaviate.Client.Analyzers - 0%
Name Line Branch
Weaviate.Client.Analyzers 0% 0%
Weaviate.Client.Analyzers.AggregatePropertySuffixAnalyzer 0% 0%
Weaviate.Client.Analyzers.AutoArrayUsageAnalyzer 0% 0%
Weaviate.Client.Analyzers.HybridSearchNullParametersAnalyzer 0% 0%
Weaviate.Client.Analyzers.RequiresVersionEnsureCallAnalyzer 0% 0%
Weaviate.Client.Analyzers.VectorizerFactoryAnalyzer 0% 0%

… Weaviate 1.36.0+ (always set AlphaParam=1.0f for pure vector search); update version-aware mocks; all tests passing
mpartipilo and others added 6 commits March 15, 2026 23:09
…elper

Replace IAsyncLifetime + single hardcoded version with a VersionedTest()
helper that runs each test body against 1.34.0, 1.35.0 and 1.36.0. Each
[Fact] is an expression-bodied method delegating to the lambda; no
subclasses or xUnit theory machinery needed.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Replace VersionedTest loop with IAsyncLifetime setup reading
WEAVIATE_VERSION (default 1.36.0). CI passes weaviate-version input
into the new unit test step, so the version matrix naturally covers
unit tests alongside integration tests.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Unit tests are version-sensitive (WEAVIATE_VERSION env var) so they
belong in the per-version job, not preflight. Analyzer tests remain.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Unit tests require no Docker, so running them first avoids spinning up
Weaviate when unit tests fail.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
- Remove spurious 'async' from sync-only test method
- Bump actions/cache v4 -> v5, tj-actions/changed-files v46 -> v47
  to silence Node.js 20 deprecation warnings

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
HTML/JS/CSS compresses very well; compression-level 9 reduces artifact
storage and download size with no change to content.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant