Repository navigation
Found new managed modules references - #1326
Merged
Merged
Conversation
| }, | ||
| { | ||
| "name": "a6f4580d494b12461aa1b9190cac8eefe8a3fd22", | ||
| "digest": "30840693e3b5edac0f461e7168da1057b36a5df75d2d0c6fd920f8442a2f51afb22c955ad5afc25a1394f6e2de65d623844594a37d9f9ce093c48d6afe6a3e55" |
There was a problem hiding this comment.
[Posted at 2026-10-15T12:13:11Z]
Intermediate transition
$ casdiff 19cec069f0c68367097c25c2c95f8bed4d21c6ab \
a6f4580d494b12461aa1b9190cac8eefe8a3fd22 \
--format=markdown1 files changed: 0 removed, 0 renamed, 0 added, 1 changed content.
1 files changed: 0 removed, 0 renamed, 0 added, 1 changed content.
Files changed content:
google/api/field_behavior.proto:
--- shake256:feb77c27569f0dc6f23f274449cd2f55d7600eac6e3cd98c5016d3ad80adfa9aeae89d324ef8b9f9fe1c14011b97c335d63922f1c99dfea2a8317d94d7615460 google/api/field_behavior.proto
+++ shake256:b2a493cb87ee861fcc5caf912ee18007ad389883534a078cd74be1596c8771420053b1b8cf558d8a2f2071bfb4aaf21b8135bd91c665f245a45175e3be5aaa91 google/api/field_behavior.proto
@@ -37,7 +37,7 @@
// google.protobuf.Timestamp expire_time = 1
// [(google.api.field_behavior) = OUTPUT_ONLY,
// (google.api.field_behavior) = IMMUTABLE];
- repeated google.api.FieldBehavior field_behavior = 1052 [packed = false];
+ repeated google.api.FieldBehavior field_behavior = 1052;
}
// An indicator of the behavior of a given field (for example, that a field
| }, | ||
| { | ||
| "name": "v2.32.0", | ||
| "digest": "9a8f06611420658dcfffdd7fd00b25827ae31198361781693b858e208e90f44e50362253fb65fb9aa38fd1a539888060ba6b286fb4259f8c1eb74c46f2a72a1b" |
There was a problem hiding this comment.
[Posted at 2026-10-15T12:13:12Z]
Intermediate transition
$ casdiff v2.31.0 \
v2.32.0 \
--format=markdown2 files changed: 0 removed, 0 renamed, 0 added, 2 changed content.
2 files changed: 0 removed, 0 renamed, 0 added, 2 changed content.
Files changed content:
protoc-gen-openapiv3/options/annotations.proto:
--- shake256:738f3bd7b6c179960936de414652857c9903e9eb83c1bd5f12ba951ad3a61316b02fd57539de739105cd403c9c64919f03edcc1911ea5b4b405756b5708fe3eb protoc-gen-openapiv3/options/annotations.proto
+++ shake256:670ff2c9973d62cb942c70d95610cf39f819a120ea013cfbd716a2751f40bbc39db0b5ce2aebb19e75ef06ce2dd08c6dac15095aaa85e3d232a3c8fa4e69a542 protoc-gen-openapiv3/options/annotations.proto
@@ -15,6 +15,14 @@
Document openapiv3_document = 1295;
}
+extend google.protobuf.ServiceOptions {
+ // ID 1295 assigned by protobuf-global-extension-registry@google.com for the
+ // gRPC-Gateway OpenAPI v3 generator. All extensions in this file share the
+ // same ID because they each extend a different descriptor message.
+ // Ref: https://github.com/protocolbuffers/protobuf/commit/5e0f68530ae6ad47b78714e60861321e1d1c04ae
+ Tag openapiv3_tag = 1295;
+}
+
extend google.protobuf.MethodOptions {
// ID 1295 assigned by protobuf-global-extension-registry@google.com for the
// gRPC-Gateway OpenAPI v3 generator. All extensions in this file share the
protoc-gen-openapiv3/options/openapiv3.proto:
--- shake256:48b2b13248d4dabfab2b66cc07ba6d4de70c7e91251a83d8f54e69cfa13428a62dfea30f26d66246b589709c2b3e86fc33dbd61271fd3ca79ea1ca54be6a9dbb protoc-gen-openapiv3/options/openapiv3.proto
+++ shake256:51a76bfec6650e85ce8f67fc8df09bd179bf74c48aaa235d7234a1c312c65dc19ad402e0db5ffab0799c26b473683d5bedb662a2483fed2a8050c29f1ca2ab77 protoc-gen-openapiv3/options/openapiv3.proto
@@ -36,6 +36,31 @@
//
// See: https://spec.openapis.org/oas/v3.1.0#specification-extensions
map<string, google.protobuf.Value> extensions = 5;
+ // Reusable objects rendered under the document's `components` section.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#oasComponents
+ Components components = 6;
+ // A declaration of which security mechanisms can be used across the API.
+ // The list of values includes alternative security requirement objects
+ // that can be used. Only one of the security requirement objects needs to
+ // be satisfied to authorize a request. Individual operations can override
+ // this definition with `openapiv3_operation.security`.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#oasSecurity
+ repeated SecurityRequirement security = 7;
+}
+
+// Components holds reusable objects for the document. Entries declared here
+// are added to the `components` section the generator builds from the proto
+// types.
+//
+// Spec: https://spec.openapis.org/oas/v3.1.0#components-object
+message Components {
+ // Security schemes that can be referenced by name from security
+ // requirements, keyed by scheme name.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#componentsSecuritySchemes
+ map<string, SecurityScheme> security_schemes = 1;
}
// Info mirrors the fields of the OpenAPI 3.1.0 Info object that users most
@@ -146,6 +171,14 @@
//
// See: https://spec.openapis.org/oas/v3.1.0#specification-extensions
map<string, google.protobuf.Value> extensions = 8;
+ // A declaration of which security mechanisms can be used for this
+ // operation. The list of values includes alternative security requirement
+ // objects that can be used. When set, this replaces the document-level
+ // `security` for this operation. To make security optional for this
+ // operation, add an empty security requirement (`security: {}`).
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#operationSecurity
+ repeated SecurityRequirement security = 9;
}
// Schema is a message- or field-level override applied to the generated
@@ -208,3 +241,145 @@
// See: https://spec.openapis.org/oas/v3.1.0#specification-extensions
map<string, google.protobuf.Value> extensions = 4;
}
+
+// SecurityScheme defines a security scheme that can be used by the
+// operations.
+//
+// Spec: https://spec.openapis.org/oas/v3.1.0#security-scheme-object
+message SecurityScheme {
+ // The type of the security scheme.
+ enum Type {
+ // Not a valid security scheme type. Setting `type` is required.
+ TYPE_UNSPECIFIED = 0;
+ // An API key sent in a header, query parameter or cookie.
+ TYPE_API_KEY = 1;
+ // HTTP authentication, for example basic or bearer.
+ TYPE_HTTP = 2;
+ // Mutual TLS.
+ TYPE_MUTUAL_TLS = 3;
+ // OAuth2.
+ TYPE_OAUTH2 = 4;
+ // OpenID Connect Discovery.
+ TYPE_OPEN_ID_CONNECT = 5;
+ }
+
+ // The location of an API key.
+ enum In {
+ // Not set. Required when `type` is `TYPE_API_KEY`.
+ IN_UNSPECIFIED = 0;
+ // The API key is sent as a query parameter.
+ IN_QUERY = 1;
+ // The API key is sent as a header.
+ IN_HEADER = 2;
+ // The API key is sent as a cookie.
+ IN_COOKIE = 3;
+ }
+
+ // The type of the security scheme. Required.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#securitySchemeType
+ Type type = 1;
+ // A description for the security scheme. CommonMark syntax MAY be used for
+ // rich text representation.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#securitySchemeDescription
+ string description = 2;
+ // The name of the header, query or cookie parameter to be used. Required
+ // when `type` is `TYPE_API_KEY`.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#securitySchemeName
+ string name = 3;
+ // The location of the API key. Required when `type` is `TYPE_API_KEY`.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#securitySchemeIn
+ In in = 4;
+ // The name of the HTTP Authorization scheme to be used in the
+ // Authorization header as defined in RFC 7235, for example "basic" or
+ // "bearer". Required when `type` is `TYPE_HTTP`.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#securitySchemeScheme
+ string scheme = 5;
+ // A hint to the client to identify how the bearer token is formatted.
+ // Only used when `type` is `TYPE_HTTP` and `scheme` is "bearer".
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#securitySchemeBearerFormat
+ string bearer_format = 6;
+ // Configuration information for the flow types supported. Required when
+ // `type` is `TYPE_OAUTH2`.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#securitySchemeFlows
+ OAuthFlows flows = 7;
+ // OpenID Connect URL to discover OAuth2 configuration values. This MUST be
+ // in the form of a URL. Required when `type` is `TYPE_OPEN_ID_CONNECT`.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#securitySchemeOpenIdConnectUrl
+ string open_id_connect_url = 8;
+}
+
+// OAuthFlows allows configuration of the supported OAuth flows.
+//
+// Spec: https://spec.openapis.org/oas/v3.1.0#oauth-flows-object
+message OAuthFlows {
+ // Configuration for the OAuth Implicit flow.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#oauthFlowsImplicit
+ OAuthFlow implicit = 1;
+ // Configuration for the OAuth Resource Owner Password flow.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#oauthFlowsPassword
+ OAuthFlow password = 2;
+ // Configuration for the OAuth Client Credentials flow.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#oauthFlowsClientCredentials
+ OAuthFlow client_credentials = 3;
+ // Configuration for the OAuth Authorization Code flow.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#oauthFlowsAuthorizationCode
+ OAuthFlow authorization_code = 4;
+}
+
+// OAuthFlow is the configuration details for a supported OAuth flow.
+//
+// Spec: https://spec.openapis.org/oas/v3.1.0#oauth-flow-object
+message OAuthFlow {
+ // The authorization URL to be used for this flow. Required for the
+ // implicit and authorization code flows.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#oauthFlowAuthorizationUrl
+ string authorization_url = 1;
+ // The token URL to be used for this flow. Required for the password,
+ // client credentials and authorization code flows.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#oauthFlowTokenUrl
+ string token_url = 2;
+ // The URL to be used for obtaining refresh tokens.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#oauthFlowRefreshUrl
+ string refresh_url = 3;
+ // The available scopes for the OAuth2 security scheme. A map between the
+ // scope name and a short description for it. The map MAY be empty.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#oauthFlowScopes
+ map<string, string> scopes = 4;
+}
+
+// SecurityRequirement lists the security schemes required to execute an
+// operation. When multiple schemes are listed, all of them must be
+// satisfied. An empty security requirement allows anonymous access.
+//
+// Spec: https://spec.openapis.org/oas/v3.1.0#security-requirement-object
+message SecurityRequirement {
+ // Scopes lists the scopes required by a single security scheme.
+ message Scopes {
+ // For `TYPE_OAUTH2` and `TYPE_OPEN_ID_CONNECT` schemes, the scope names
+ // required for the execution. For other scheme types, a list of role
+ // names, which MAY be empty.
+ repeated string scopes = 1;
+ }
+
+ // Maps the name of a security scheme declared in
+ // `Document.components.security_schemes` to the scopes it requires.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#securityRequirementsName
+ map<string, Scopes> schemes = 1;
+}
| { | ||
| "module_name": "googleapis/googleapis", | ||
| "latest_reference": "19cec069f0c68367097c25c2c95f8bed4d21c6ab" | ||
| "latest_reference": "a6f4580d494b12461aa1b9190cac8eefe8a3fd22" |
There was a problem hiding this comment.
[Posted at 2026-10-15T12:13:13Z]
Overall transition
$ casdiff 19cec069f0c68367097c25c2c95f8bed4d21c6ab \
a6f4580d494b12461aa1b9190cac8eefe8a3fd22 \
--format=markdown1 files changed: 0 removed, 0 renamed, 0 added, 1 changed content.
Files changed content:
google/api/field_behavior.proto:
--- shake256:feb77c27569f0dc6f23f274449cd2f55d7600eac6e3cd98c5016d3ad80adfa9aeae89d324ef8b9f9fe1c14011b97c335d63922f1c99dfea2a8317d94d7615460 google/api/field_behavior.proto
+++ shake256:b2a493cb87ee861fcc5caf912ee18007ad389883534a078cd74be1596c8771420053b1b8cf558d8a2f2071bfb4aaf21b8135bd91c665f245a45175e3be5aaa91 google/api/field_behavior.proto
@@ -37,7 +37,7 @@
// google.protobuf.Timestamp expire_time = 1
// [(google.api.field_behavior) = OUTPUT_ONLY,
// (google.api.field_behavior) = IMMUTABLE];
- repeated google.api.FieldBehavior field_behavior = 1052 [packed = false];
+ repeated google.api.FieldBehavior field_behavior = 1052;
}
// An indicator of the behavior of a given field (for example, that a field
| { | ||
| "module_name": "grpc-ecosystem/grpc-gateway", | ||
| "latest_reference": "v2.31.0" | ||
| "latest_reference": "v2.32.0" |
There was a problem hiding this comment.
[Posted at 2026-10-15T12:13:14Z]
Overall transition
$ casdiff v2.31.0 \
v2.32.0 \
--format=markdown2 files changed: 0 removed, 0 renamed, 0 added, 2 changed content.
Files changed content:
protoc-gen-openapiv3/options/annotations.proto:
--- shake256:738f3bd7b6c179960936de414652857c9903e9eb83c1bd5f12ba951ad3a61316b02fd57539de739105cd403c9c64919f03edcc1911ea5b4b405756b5708fe3eb protoc-gen-openapiv3/options/annotations.proto
+++ shake256:670ff2c9973d62cb942c70d95610cf39f819a120ea013cfbd716a2751f40bbc39db0b5ce2aebb19e75ef06ce2dd08c6dac15095aaa85e3d232a3c8fa4e69a542 protoc-gen-openapiv3/options/annotations.proto
@@ -15,6 +15,14 @@
Document openapiv3_document = 1295;
}
+extend google.protobuf.ServiceOptions {
+ // ID 1295 assigned by protobuf-global-extension-registry@google.com for the
+ // gRPC-Gateway OpenAPI v3 generator. All extensions in this file share the
+ // same ID because they each extend a different descriptor message.
+ // Ref: https://github.com/protocolbuffers/protobuf/commit/5e0f68530ae6ad47b78714e60861321e1d1c04ae
+ Tag openapiv3_tag = 1295;
+}
+
extend google.protobuf.MethodOptions {
// ID 1295 assigned by protobuf-global-extension-registry@google.com for the
// gRPC-Gateway OpenAPI v3 generator. All extensions in this file share the
protoc-gen-openapiv3/options/openapiv3.proto:
--- shake256:48b2b13248d4dabfab2b66cc07ba6d4de70c7e91251a83d8f54e69cfa13428a62dfea30f26d66246b589709c2b3e86fc33dbd61271fd3ca79ea1ca54be6a9dbb protoc-gen-openapiv3/options/openapiv3.proto
+++ shake256:51a76bfec6650e85ce8f67fc8df09bd179bf74c48aaa235d7234a1c312c65dc19ad402e0db5ffab0799c26b473683d5bedb662a2483fed2a8050c29f1ca2ab77 protoc-gen-openapiv3/options/openapiv3.proto
@@ -36,6 +36,31 @@
//
// See: https://spec.openapis.org/oas/v3.1.0#specification-extensions
map<string, google.protobuf.Value> extensions = 5;
+ // Reusable objects rendered under the document's `components` section.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#oasComponents
+ Components components = 6;
+ // A declaration of which security mechanisms can be used across the API.
+ // The list of values includes alternative security requirement objects
+ // that can be used. Only one of the security requirement objects needs to
+ // be satisfied to authorize a request. Individual operations can override
+ // this definition with `openapiv3_operation.security`.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#oasSecurity
+ repeated SecurityRequirement security = 7;
+}
+
+// Components holds reusable objects for the document. Entries declared here
+// are added to the `components` section the generator builds from the proto
+// types.
+//
+// Spec: https://spec.openapis.org/oas/v3.1.0#components-object
+message Components {
+ // Security schemes that can be referenced by name from security
+ // requirements, keyed by scheme name.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#componentsSecuritySchemes
+ map<string, SecurityScheme> security_schemes = 1;
}
// Info mirrors the fields of the OpenAPI 3.1.0 Info object that users most
@@ -146,6 +171,14 @@
//
// See: https://spec.openapis.org/oas/v3.1.0#specification-extensions
map<string, google.protobuf.Value> extensions = 8;
+ // A declaration of which security mechanisms can be used for this
+ // operation. The list of values includes alternative security requirement
+ // objects that can be used. When set, this replaces the document-level
+ // `security` for this operation. To make security optional for this
+ // operation, add an empty security requirement (`security: {}`).
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#operationSecurity
+ repeated SecurityRequirement security = 9;
}
// Schema is a message- or field-level override applied to the generated
@@ -208,3 +241,145 @@
// See: https://spec.openapis.org/oas/v3.1.0#specification-extensions
map<string, google.protobuf.Value> extensions = 4;
}
+
+// SecurityScheme defines a security scheme that can be used by the
+// operations.
+//
+// Spec: https://spec.openapis.org/oas/v3.1.0#security-scheme-object
+message SecurityScheme {
+ // The type of the security scheme.
+ enum Type {
+ // Not a valid security scheme type. Setting `type` is required.
+ TYPE_UNSPECIFIED = 0;
+ // An API key sent in a header, query parameter or cookie.
+ TYPE_API_KEY = 1;
+ // HTTP authentication, for example basic or bearer.
+ TYPE_HTTP = 2;
+ // Mutual TLS.
+ TYPE_MUTUAL_TLS = 3;
+ // OAuth2.
+ TYPE_OAUTH2 = 4;
+ // OpenID Connect Discovery.
+ TYPE_OPEN_ID_CONNECT = 5;
+ }
+
+ // The location of an API key.
+ enum In {
+ // Not set. Required when `type` is `TYPE_API_KEY`.
+ IN_UNSPECIFIED = 0;
+ // The API key is sent as a query parameter.
+ IN_QUERY = 1;
+ // The API key is sent as a header.
+ IN_HEADER = 2;
+ // The API key is sent as a cookie.
+ IN_COOKIE = 3;
+ }
+
+ // The type of the security scheme. Required.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#securitySchemeType
+ Type type = 1;
+ // A description for the security scheme. CommonMark syntax MAY be used for
+ // rich text representation.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#securitySchemeDescription
+ string description = 2;
+ // The name of the header, query or cookie parameter to be used. Required
+ // when `type` is `TYPE_API_KEY`.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#securitySchemeName
+ string name = 3;
+ // The location of the API key. Required when `type` is `TYPE_API_KEY`.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#securitySchemeIn
+ In in = 4;
+ // The name of the HTTP Authorization scheme to be used in the
+ // Authorization header as defined in RFC 7235, for example "basic" or
+ // "bearer". Required when `type` is `TYPE_HTTP`.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#securitySchemeScheme
+ string scheme = 5;
+ // A hint to the client to identify how the bearer token is formatted.
+ // Only used when `type` is `TYPE_HTTP` and `scheme` is "bearer".
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#securitySchemeBearerFormat
+ string bearer_format = 6;
+ // Configuration information for the flow types supported. Required when
+ // `type` is `TYPE_OAUTH2`.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#securitySchemeFlows
+ OAuthFlows flows = 7;
+ // OpenID Connect URL to discover OAuth2 configuration values. This MUST be
+ // in the form of a URL. Required when `type` is `TYPE_OPEN_ID_CONNECT`.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#securitySchemeOpenIdConnectUrl
+ string open_id_connect_url = 8;
+}
+
+// OAuthFlows allows configuration of the supported OAuth flows.
+//
+// Spec: https://spec.openapis.org/oas/v3.1.0#oauth-flows-object
+message OAuthFlows {
+ // Configuration for the OAuth Implicit flow.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#oauthFlowsImplicit
+ OAuthFlow implicit = 1;
+ // Configuration for the OAuth Resource Owner Password flow.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#oauthFlowsPassword
+ OAuthFlow password = 2;
+ // Configuration for the OAuth Client Credentials flow.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#oauthFlowsClientCredentials
+ OAuthFlow client_credentials = 3;
+ // Configuration for the OAuth Authorization Code flow.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#oauthFlowsAuthorizationCode
+ OAuthFlow authorization_code = 4;
+}
+
+// OAuthFlow is the configuration details for a supported OAuth flow.
+//
+// Spec: https://spec.openapis.org/oas/v3.1.0#oauth-flow-object
+message OAuthFlow {
+ // The authorization URL to be used for this flow. Required for the
+ // implicit and authorization code flows.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#oauthFlowAuthorizationUrl
+ string authorization_url = 1;
+ // The token URL to be used for this flow. Required for the password,
+ // client credentials and authorization code flows.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#oauthFlowTokenUrl
+ string token_url = 2;
+ // The URL to be used for obtaining refresh tokens.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#oauthFlowRefreshUrl
+ string refresh_url = 3;
+ // The available scopes for the OAuth2 security scheme. A map between the
+ // scope name and a short description for it. The map MAY be empty.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#oauthFlowScopes
+ map<string, string> scopes = 4;
+}
+
+// SecurityRequirement lists the security schemes required to execute an
+// operation. When multiple schemes are listed, all of them must be
+// satisfied. An empty security requirement allows anonymous access.
+//
+// Spec: https://spec.openapis.org/oas/v3.1.0#security-requirement-object
+message SecurityRequirement {
+ // Scopes lists the scopes required by a single security scheme.
+ message Scopes {
+ // For `TYPE_OAUTH2` and `TYPE_OPEN_ID_CONNECT` schemes, the scope names
+ // required for the execution. For other scheme types, a list of role
+ // names, which MAY be empty.
+ repeated string scopes = 1;
+ }
+
+ // Maps the name of a security scheme declared in
+ // `Document.components.security_schemes` to the scopes it requires.
+ //
+ // See: https://spec.openapis.org/oas/v3.1.0#securityRequirementsName
+ map<string, Scopes> schemes = 1;
+}
pkwarren
approved these changes
Oct 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.