Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 17 additions & 1 deletion charts/library/common/schemas/container/probes.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,21 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$ref": "file:///home/runner/work/truecharts/truecharts/charts/library/common/schemas/probes.json",
"description": "Mirrors docs path container/probes.md and reuses shared schema probes.json."
"description": "Mirrors docs path container/probes.md and reuses shared schema probes.json.",
"properties": {
"probes": {
"type": "object"
},
"liveness": {
"type": "object"
},
"readiness": {
"type": "object"
}
},
"required": [
"liveness",
"probes",
"readiness"
Comment on lines +7 to +19
Copy link

Copilot AI Feb 14, 2026

Choose a reason for hiding this comment

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

According to the documentation at docs/container/probes.md, liveness and readiness are nested under the probes key (probes.liveness, probes.readiness), not flattened at the top level. The schema structure should match the documented nested hierarchy where these are properties of the probes object.

Suggested change
"type": "object"
},
"liveness": {
"type": "object"
},
"readiness": {
"type": "object"
}
},
"required": [
"liveness",
"probes",
"readiness"
"type": "object",
"properties": {
"liveness": {
"type": "object"
},
"readiness": {
"type": "object"
}
},
"required": [
"liveness",
"readiness"
]
}
},
"required": [
"probes"

Copilot uses AI. Check for mistakes.
]
}
15 changes: 14 additions & 1 deletion charts/library/common/schemas/container/resources.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,18 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$ref": "file:///home/runner/work/truecharts/truecharts/charts/library/common/schemas/resources.json",
"description": "Mirrors docs path container/resources.md and reuses shared schema resources.json."
"description": "Mirrors docs path container/resources.md and reuses shared schema resources.json.",
"properties": {
"resources": {
"type": "object"
},
"memory": {
"type": "string",
"minLength": 1
}
},
"required": [
"memory",
Comment on lines +8 to +15
Copy link

Copilot AI Feb 14, 2026

Choose a reason for hiding this comment

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

According to the documentation at docs/container/resources.md, memory is defined as resources.requests.memory (a nested field), not as a top-level property. The schema should respect the documented nested structure where memory is under resources.requests, not flattened to the top level.

Suggested change
},
"memory": {
"type": "string",
"minLength": 1
}
},
"required": [
"memory",
}
},
"required": [

Copilot uses AI. Check for mistakes.
"resources"
]
}
46 changes: 45 additions & 1 deletion charts/library/common/schemas/container/securityContext.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,49 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$ref": "file:///home/runner/work/truecharts/truecharts/charts/library/common/schemas/securityContext.json",
"description": "Mirrors docs path container/securityContext.md and reuses shared schema securityContext.json."
"description": "Mirrors docs path container/securityContext.md and reuses shared schema securityContext.json.",
"properties": {
"securityContext": {
"type": "object"
},
"runAsUser": {
"type": "integer",
"minimum": 0
},
"runAsGroup": {
"type": "integer",
"minimum": 0
},
"readOnlyRootFilesystem": {
"type": "boolean"
},
"allowPrivilegeEscalation": {
"type": "boolean"
},
"privileged": {
"type": "boolean"
},
"runAsNonRoot": {
"type": "boolean"
},
"drop": {
"type": "string",
"minLength": 1
},
"profile": {
"type": "string",
"minLength": 1
}
},
"required": [
"allowPrivilegeEscalation",
"drop",
"privileged",
"profile",
"readOnlyRootFilesystem",
"runAsGroup",
"runAsNonRoot",
"runAsUser",
"securityContext"
]
Comment on lines +5 to +48
Copy link

Copilot AI Feb 14, 2026

Choose a reason for hiding this comment

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

According to the documentation at docs/container/securityContext.md, drop is defined as capabilities.drop (a nested field under capabilities that is a "list of string"), and profile is defined as seccompProfile.profile (a nested field under seccompProfile). These fields should not be flattened to the top level of the schema. The schema structure should match the documented nested hierarchy.

Suggested change
"properties": {
"securityContext": {
"type": "object"
},
"runAsUser": {
"type": "integer",
"minimum": 0
},
"runAsGroup": {
"type": "integer",
"minimum": 0
},
"readOnlyRootFilesystem": {
"type": "boolean"
},
"allowPrivilegeEscalation": {
"type": "boolean"
},
"privileged": {
"type": "boolean"
},
"runAsNonRoot": {
"type": "boolean"
},
"drop": {
"type": "string",
"minLength": 1
},
"profile": {
"type": "string",
"minLength": 1
}
},
"required": [
"allowPrivilegeEscalation",
"drop",
"privileged",
"profile",
"readOnlyRootFilesystem",
"runAsGroup",
"runAsNonRoot",
"runAsUser",
"securityContext"
]
"properties": {
"securityContext": {
"type": "object"
},
"runAsUser": {
"type": "integer",
"minimum": 0
},
"runAsGroup": {
"type": "integer",
"minimum": 0
},
"readOnlyRootFilesystem": {
"type": "boolean"
},
"allowPrivilegeEscalation": {
"type": "boolean"
},
"privileged": {
"type": "boolean"
},
"runAsNonRoot": {
"type": "boolean"
},
"capabilities": {
"type": "object",
"properties": {
"drop": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
}
}
},
"seccompProfile": {
"type": "object",
"properties": {
"profile": {
"type": "string",
"minLength": 1
}
}
}
},
"required": [
"allowPrivilegeEscalation",
"capabilities",
"privileged",
"readOnlyRootFilesystem",
"runAsGroup",
"runAsNonRoot",
"runAsUser",
"seccompProfile",
"securityContext"
]

Copilot uses AI. Check for mistakes.
}
8 changes: 6 additions & 2 deletions charts/library/common/schemas/global.json
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,8 @@
},
"minNodePort": {
"type": "integer",
"description": "Minimum Node Port Allowed"
"description": "Minimum Node Port Allowed",
"minimum": 1
},
"stopAll": {
"type": "boolean",
Expand All @@ -81,5 +82,8 @@
}
},
"additionalProperties": true,
"description": "Global values that apply to all charts See more info about global values [here](/truecharts-common/global)"
"description": "Global values that apply to all charts See more info about global values [here](/truecharts-common/global)",
"required": [
"minNodePort"
]
}
Comment on lines +85 to 89
Copy link

Copilot AI Feb 14, 2026

Choose a reason for hiding this comment

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

Making minNodePort a required field in the global schema could be problematic. While the documentation marks it as required and provides a default value of 9000, enforcing this at the schema level means any chart that doesn't explicitly set this value will fail validation. This is a breaking change for existing charts that rely on the default. Consider whether this field should truly be required at the schema validation level, or if the documentation's "required" designation is meant to indicate "should be set" rather than "must be validated."

Suggested change
"description": "Global values that apply to all charts See more info about global values [here](/truecharts-common/global)",
"required": [
"minNodePort"
]
}
"description": "Global values that apply to all charts See more info about global values [here](/truecharts-common/global)"
}

Copilot uses AI. Check for mistakes.
11 changes: 9 additions & 2 deletions charts/library/common/schemas/ingress/certManager.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,13 @@
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"description": "Mirrors docs path ingress/certManager.md.",
"properties": {},
"additionalProperties": true
"properties": {
"enabled": {
"type": "boolean"
}
},
"additionalProperties": true,
"required": [
"enabled"
]
}
21 changes: 19 additions & 2 deletions charts/library/common/schemas/ingress/homepage.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,23 @@
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"description": "Mirrors docs path ingress/homepage.md.",
"properties": {},
"additionalProperties": true
"properties": {
"enabled": {
"type": "boolean"
},
"key": {
"type": "string",
"minLength": 1
},
"value": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": true,
"required": [
"enabled",
"key",
"value"
Comment on lines +9 to +22
Copy link

Copilot AI Feb 14, 2026

Choose a reason for hiding this comment

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

According to the documentation at docs/ingress/homepage.md, key and value are required fields within the widget.customkv array (widget.customkv[].key, widget.customkv[].value), not at the top level. Only enabled is required at the top level. The schema incorrectly flattens these array element properties to the top level.

Suggested change
"key": {
"type": "string",
"minLength": 1
},
"value": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": true,
"required": [
"enabled",
"key",
"value"
"widget": {
"type": "object",
"properties": {
"customkv": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1
},
"value": {
"type": "string",
"minLength": 1
}
},
"required": [
"key",
"value"
],
"additionalProperties": false
}
}
},
"additionalProperties": true
}
},
"additionalProperties": true,
"required": [
"enabled"

Copilot uses AI. Check for mistakes.
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"description": "Mirrors docs path middlewares/traefik/add-prefix.md.",
"properties": {},
"additionalProperties": true
"properties": {
"prefix": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": true,
"required": [
"prefix"
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,28 @@
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"description": "Mirrors docs path middlewares/traefik/basic-auth.md.",
"properties": {},
"additionalProperties": true
"properties": {
"users": {
"type": "object"
},
"username": {
"type": "string",
"minLength": 1
},
"password": {
"type": "string",
"minLength": 1
},
"secret": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": true,
"required": [
"password",
"secret",
"username",
"users"
Comment on lines +7 to +27
Copy link

Copilot AI Feb 14, 2026

Choose a reason for hiding this comment

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

According to the documentation at docs/middlewares/traefik/basic-auth.md, username and password are required fields within the users array (users[].username, users[].password), not at the top level of the schema. Additionally, users and secret are mutually exclusive - only one should be present. Making all four fields (users, username, password, secret) required at the top level contradicts the documented behavior where users is a list of objects, and either users OR secret should be provided, but not both.

Suggested change
"type": "object"
},
"username": {
"type": "string",
"minLength": 1
},
"password": {
"type": "string",
"minLength": 1
},
"secret": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": true,
"required": [
"password",
"secret",
"username",
"users"
"type": "array",
"items": {
"type": "object",
"properties": {
"username": {
"type": "string",
"minLength": 1
},
"password": {
"type": "string",
"minLength": 1
}
},
"required": [
"username",
"password"
],
"additionalProperties": true
}
},
"secret": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": true,
"oneOf": [
{
"required": [
"users"
]
},
{
"required": [
"secret"
]
}

Copilot uses AI. Check for mistakes.
]
}
20 changes: 18 additions & 2 deletions charts/library/common/schemas/middlewares/traefik/chain.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,22 @@
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"description": "Mirrors docs path middlewares/traefik/chain.md.",
"properties": {},
"additionalProperties": true
"properties": {
"middlewares": {
"type": "object"
},
"name": {
"type": "string",
"minLength": 1
},
"expandObjectName": {
"type": "boolean"
}
},
"additionalProperties": true,
"required": [
"expandObjectName",
"middlewares",
"name"
Comment on lines +19 to +21
Copy link

Copilot AI Feb 14, 2026

Choose a reason for hiding this comment

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

According to the documentation at docs/middlewares/traefik/chain.md, this schema should follow the documented structure. However, the PR description mentions that these schemas apply to nested instance schemas. The chain middleware may require all three fields (middlewares, name, expandObjectName) to be required, but this needs verification against the documentation to ensure this doesn't break legitimate use cases where defaults might be acceptable.

Suggested change
"expandObjectName",
"middlewares",
"name"
"middlewares"

Copilot uses AI. Check for mistakes.
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,41 @@
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"description": "Mirrors docs path middlewares/traefik/forward-auth.md.",
"properties": {},
"additionalProperties": true
"properties": {
"address": {
"type": "string",
"minLength": 1
},
"authResponseHeadersRegex": {
"type": "string",
"minLength": 1
},
"trustForwardHeader": {
"type": "boolean"
},
"authResponseHeaders": {
"type": "string",
"minLength": 1
},
"authRequestHeaders": {
"type": "string",
"minLength": 1
Comment on lines +18 to +23
Copy link

Copilot AI Feb 14, 2026

Choose a reason for hiding this comment

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

According to the documentation at docs/middlewares/traefik/forward-auth.md, authResponseHeaders and authRequestHeaders are defined as "list of string" types, not simple strings. These fields should have type "array" or "object" (following the schema convention for lists) instead of "string" with minLength.

Suggested change
"type": "string",
"minLength": 1
},
"authRequestHeaders": {
"type": "string",
"minLength": 1
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"authRequestHeaders": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}

Copilot uses AI. Check for mistakes.
},
"tls": {
"type": "object"
},
"insecureSkipVerify": {
"type": "boolean"
}
},
"additionalProperties": true,
"required": [
"address",
"authRequestHeaders",
"authResponseHeaders",
"authResponseHeadersRegex",
"insecureSkipVerify",
"tls",
"trustForwardHeader"
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,28 @@
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"description": "Mirrors docs path middlewares/traefik/ip-allow-list.md.",
"properties": {},
"additionalProperties": true
"properties": {
"sourceRange": {
"type": "string",
"minLength": 1
},
"ipStrategy": {
"type": "object"
},
"depth": {
"type": "integer",
"minimum": 1
},
"excludedIPs": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": true,
"required": [
"depth",
"excludedIPs",
"ipStrategy",
Comment on lines +7 to +26
Copy link

Copilot AI Feb 14, 2026

Choose a reason for hiding this comment

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

According to the documentation at docs/middlewares/traefik/ip-allow-list.md, sourceRange and excludedIPs are defined as "list of string" types, not simple strings. The nested structure shows depth and excludedIPs should be under ipStrategy (ipStrategy.depth, ipStrategy.excludedIPs), not flattened at the top level. The schema should reflect the proper nesting and use array/object types instead of string.

Suggested change
"type": "string",
"minLength": 1
},
"ipStrategy": {
"type": "object"
},
"depth": {
"type": "integer",
"minimum": 1
},
"excludedIPs": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": true,
"required": [
"depth",
"excludedIPs",
"ipStrategy",
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"minItems": 1
},
"ipStrategy": {
"type": "object",
"properties": {
"depth": {
"type": "integer",
"minimum": 1
},
"excludedIPs": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
}
},
"additionalProperties": false
}
},
"additionalProperties": true,
"required": [

Copilot uses AI. Check for mistakes.
"sourceRange"
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,13 @@
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"description": "Mirrors docs path middlewares/traefik/plugin-bouncer.md.",
"properties": {},
"additionalProperties": true
"properties": {
"enabled": {
"type": "boolean"
}
},
"additionalProperties": true,
"required": [
"enabled"
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,19 @@
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"description": "Mirrors docs path middlewares/traefik/plugin-geoblock.md.",
"properties": {},
"additionalProperties": true
"properties": {
"api": {
"type": "string",
"minLength": 1
},
"countries": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": true,
"required": [
"api",
"countries"
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"description": "Mirrors docs path middlewares/traefik/plugin-mod-security.md.",
"properties": {},
"additionalProperties": true
"properties": {
"modSecurityUrl": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": true,
"required": [
"modSecurityUrl"
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"description": "Mirrors docs path middlewares/traefik/plugin-real-ip.md.",
"properties": {},
"additionalProperties": true
"properties": {
"excludednets": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": true,
"required": [
"excludednets"
]
}
Loading