Skip to main content
Version: v1.2.x

PaletteAI 1.2.0 Release Notes

Summary

PaletteAI 1.2.0 is the first stable release in the 1.2 line. It introduces system-wide configuration and federation, a new cross-scope sharing model, an automatic spoke-side inventory agent, customizable project roles, and a broad round of security and compliance hardening, on top of upgraded fleet management and expanded GPU support.

  • System-wide configuration - A new System scope lets administrators define compute, settings, models, and profile bundles once and have them federate to every tenant, project, and workload-namespace spoke, with per-scope overrides and aggregate fleet and GPU inventory views. Canvas adds a dedicated System Settings area for basic info, compute, resource limits, autoscaling, target namespaces, and variables.
  • Cross-scope sharing - Compute pools, compute configurations, scaling policies, and integration settings can now be shared across projects, tenants, and the system scope through a new sharing model, with read visibility governed by each user's permissions.
  • Curator spoke agent - A new Curator agent is installed automatically on each managed cluster to collect the hardware and inventory details used by compute and GPU features.
  • Custom project roles - Beyond the built-in viewer, editor, and admin tiers, administrators can define additional project roles with their own permission sets; the roles are applied consistently across every tenant, and an invalid role definition no longer disrupts role provisioning for others.
  • Security and compliance hardening - New STIG-aligned controls include a pre-authentication notice-and-consent banner, a 10-minute session inactivity timeout, logout with single sign-on termination, Kubernetes audit events for login, logout, and failed login, and read-only container filesystems. Audit-sink credentials are now generated automatically and stored in a managed, upgrade-safe Secret instead of shipping a default username and password.
  • GPU partitioning and variants - GPU configuration moves to a finer-grained variant model with Day-1 and Day-2 Multi-Instance GPU (MIG) partitioning, fleet-level MIG views, and per-variant GPU quotas.
  • CLI enhancements - The paletteai CLI adds a support-bundle command and tooling for air-gapped content bundles has been extended to support all dependencies (images, charts, Packs, models, and GitHub repositories) in a single bundle.

For the complete, per-component list of changes, see Full Component Release Notes.

Upgrade Notes

  1. You must upgrade the mural-crds chart to 0.7.17 before upgrading the mural chart to 1.2.0. For detailed instructions on how to upgrade PaletteAI, refer to the PaletteAI upgrade guide.

Component Versions

The following core component versions are pinned for this PaletteAI release.

ComponentVersion
brush0.5.24
canvas0.6.18
hue0.12.28
mural-crds0.7.17

Mural Helm values

values.yaml changes between 1.1.8 and 1.2.0
values.yaml
diff --git a/mural/charts/mural/values.yaml b/mural/charts/mural/values.yaml
index e201f047d..368ee08a2 100644
--- a/mural/charts/mural/values.yaml
+++ b/mural/charts/mural/values.yaml
@@ -28,8 +28,11 @@
## @param global.auditLogging.enabled Whether to enable audit logging to alertmanager. Default is true.
## @param global.auditLogging.alertmanagerURL The URL of the alertmanager service to send audit logs to.
## @param global.auditLogging.timeout Timeout for sending audit logs to alertmanager.
-## @param global.auditLogging.basicAuth.username Username for basic auth to alertmanager. Set to empty string to disable basic auth.
-## @param global.auditLogging.basicAuth.password Password for basic auth to alertmanager. Set to empty string to disable basic auth.
+## @param global.auditLogging.basicAuth.username Username for basic auth to alertmanager. Leave empty to auto-generate (stored in secretRef.name).
+## @param global.auditLogging.basicAuth.password Password for basic auth to alertmanager. Leave empty to auto-generate a random credential (stored in secretRef.name).
+## @param global.auditLogging.basicAuth.secretRef.name Name of the Secret holding the audit basic-auth credentials. Auto-generated and managed by the chart at the default name; point at your own Secret to self-manage.
+## @param global.auditLogging.basicAuth.secretRef.usernameKey Key within secretRef.name holding the username.
+## @param global.auditLogging.basicAuth.secretRef.passwordKey Key within secretRef.name holding the password.
## @param global.auditLogging.tls.insecureSkipVerify Whether to skip TLS certificate verification when connecting to alertmanager.
## @param global.auditLogging.tls.caCertSecretName Name of the secret containing the CA certificate for alertmanager TLS.
## @param global.auditLogging.tls.minVersion Minimum TLS version for connecting to alertmanager (e.g., "TLS12", "TLS13").
@@ -69,7 +72,7 @@ global:
# - use a custom FleetConfig controller image with the `gke-gcloud-auth-plugin` installed
kubernetesProvider: "Generic"
certManagerVersion: "v1.19.1"
- muralVersion: "1.1.8"
+ muralVersion: "1.2.0"
dns:
domain: "replace.with.your.domain"
rootIngress:
@@ -90,9 +93,16 @@ global:
alertmanagerURL: "https://alertmanager.mural-system.svc.cluster.local:9093"
timeout: "2s"
basicAuth:
- # Set username and password to empty strings to disable basic auth, or change the password for production use
- username: user
- password: pass
+ # Audit-sink basic-auth credentials. Leave username/password empty to
+ # auto-generate a random credential, stored in the Secret named by
+ # secretRef.name and preserved across upgrades. Set them to supply your
+ # own credential, or point secretRef.name at a Secret you manage.
+ username: ""
+ password: ""
+ secretRef:
+ name: "mural-audit-basic-auth"
+ usernameKey: "username"
+ passwordKey: "password"
tls:
insecureSkipVerify: false
caCertSecretName: alertmanager-tls-cert
@@ -110,7 +120,7 @@ global:
username: ""
password: ""
basicAuthSecretName: ""
- muralCrdsVersion: "0.7.8-hotfix.7"
+ muralCrdsVersion: "0.7.17"

## @section certificates
## @param certificates.clusterIssuer.spec.selfSigned The spec for the ClusterIssuer used by cert-manager to issue the Mural root CA certificate.
@@ -141,7 +151,7 @@ certificates:
## @param cleanup.deletionIntervalSeconds Cleanup deletion interval seconds.
## @param cleanup.deletionTimeoutSeconds Cleanup deletion timeout seconds.
cleanup:
- image: quay.io/spectrocloud-labs/spectro-cleanup:v1.7.0
+ image: quay.io/spectrocloud-labs/spectro-cleanup:v1.8.0
imagePullPolicy: IfNotPresent
deletionIntervalSeconds: 2
deletionTimeoutSeconds: 300
@@ -193,6 +203,7 @@ cleanup:
## @param fleetConfig.hub.clusterManager.featureGates.DefaultClusterSet DefaultClusterSet feature gate.
## @param fleetConfig.hub.clusterManager.featureGates.ManifestWorkReplicaSet ManifestWorkReplicaSet feature gate.
## @param fleetConfig.hub.clusterManager.featureGates.ResourceCleanup ResourceCleanup feature gate.
+## @param fleetConfig.hub.clusterManager.featureGates.CleanUpCompletedManifestWork CleanUpCompletedManifestWork feature gate for the cluster manager.
## @param fleetConfig.hub.clusterManager.purgeOperator If set, the cluster manager operator will be purged and the open-cluster-management namespace deleted when the FleetConfig CR is deleted.
## @param fleetConfig.hub.clusterManager.resources.limits.cpu The number of CPU units to request, e.g., '800m'.
## @param fleetConfig.hub.clusterManager.resources.limits.memory The amount of memory to request, e.g., '8Gi'.
@@ -286,7 +297,7 @@ fleetConfig:
ClusterClaim: true
RawFeedbackJsonString: true
source:
- bundleVersion: v1.0.0
+ bundleVersion: v1.3.1
registry: us-docker.pkg.dev/palette-images-fips/palette/spectro-ocm-bcfips
## @descriptionStart
##
@@ -897,11 +908,14 @@ fleetConfig:
## - **NilExecutorValidating** (ALPHA - default=false) - Enables nil executor validation
## - **ResourceCleanup** (BETA - default=true) - Enables automatic resource cleanup
## - **V1beta1CSRAPICompatibility** (ALPHA - default=false) - Enables v1beta1 CSR API compatibility
+ ## - **CleanUpCompletedManifestWork** (ALPHA - default=false) - Enables automatic garbage collection of completed manifest works
+ ## - **PlacementDebugServer** (ALPHA - default=false) - Enables the placement debug server
## @descriptionEnd
featureGates:
DefaultClusterSet: true
ManifestWorkReplicaSet: true
ResourceCleanup: true
+ CleanUpCompletedManifestWork: true
purgeOperator: true
## @descriptionStart
## Resource specifications for all clustermanager-managed containers.
@@ -1168,38 +1182,18 @@ alertmanager:
##
extraContainers: []
containerPortName: &containerPortName http
+ # Audit basic-auth credentials are auto-generated and unknown at template
+ # render time, and Kubernetes probe httpGet headers cannot reference a Secret.
+ # The Alertmanager web server enforces basic auth on all HTTP endpoints
+ # (including /-/healthy and /-/ready), so TCP-socket probes are used instead.
livenessProbe:
- httpGet:
- path: /-/healthy
+ httpGet: null
+ tcpSocket:
port: http
- # Change scheme to HTTP if TLS is not being used
- scheme: HTTPS
- httpHeaders:
- # IMPORTANT: This Authorization header must be kept in sync with global.auditLogging.basicAuth.username/password
- # The value below is Base64 encoded "user:pass" (matching the default credentials in global.auditLogging.basicAuth)
- #
- # If you change global.auditLogging.basicAuth credentials, you MUST regenerate this value using:
- # echo -n "username:password" | base64
- #
- # Then update the value below with the new Base64 string.
- - name: Authorization
- value: "Basic dXNlcjpwYXNz"
readinessProbe:
- httpGet:
- path: /-/ready
+ httpGet: null
+ tcpSocket:
port: http
- # Change scheme to HTTP if TLS is not being used
- scheme: HTTPS
- httpHeaders:
- # IMPORTANT: This Authorization header must be kept in sync with global.auditLogging.basicAuth.username/password
- # The value below is Base64 encoded "user:pass" (matching the default credentials in global.auditLogging.basicAuth)
- #
- # If you change global.auditLogging.basicAuth credentials, you MUST regenerate this value using:
- # echo -n "username:password" | base64
- #
- # Then update the value below with the new Base64 string.
- - name: Authorization
- value: "Basic dXNlcjpwYXNz"
service:
annotations: {}
labels: {}
@@ -1515,7 +1509,7 @@ brush:
## @param brush.image.pullPolicy The pull policy to use for the image
image:
repository: public.ecr.aws/mural/brush
- tag: v0.5.18-hotfix.7
+ tag: v0.5.24
pullPolicy: IfNotPresent
## @param brush.imagePullSecrets The pull secrets to use for the image
imagePullSecrets: []
@@ -1794,6 +1788,12 @@ canvas:
# This is a YAML-formatted file.
# Add variables to this file as needed.

+ ## @section Global parameters
+ ## @param canvas.global.instanceName Unique name for this PaletteAI instance; also the name of the singleton `System` CR that Canvas reads/writes.
+ ## Populated by the umbrella `mural` chart from its own `global.instanceName`. When empty the deployment falls
+ ## back to `pai-system` to match the backend default (hue's `constants.InstanceName`).
+ global:
+ instanceName: ""
## @section Canvas parameters
## @param canvas.replicas Number of canvas replicas
replicas: 1
@@ -1804,7 +1804,7 @@ canvas:
## @param canvas.image.pullPolicy canvas image pull policy
image:
repository: public.ecr.aws/mural/canvas
- tag: v0.6.9-hotfix.7
+ tag: v0.6.18
pullPolicy: IfNotPresent
## @param canvas.imagePullSecrets Image pull secrets
imagePullSecrets: []
@@ -1989,10 +1989,10 @@ canvas:
timeoutSeconds: 10
failureThreshold: 5
readiness:
- initialDelaySeconds: 15
- periodSeconds: 10
- timeoutSeconds: 10
- failureThreshold: 5
+ initialDelaySeconds: 3
+ periodSeconds: 2
+ timeoutSeconds: 3
+ failureThreshold: 15
## @param canvas.devspaceEnabled devspace enabled
devspaceEnabled: false
## @param canvas.branding.configMapName Kubernetes name of the branding ConfigMap (default `branding`).
@@ -2003,6 +2003,7 @@ canvas:
## @param canvas.branding.favicon Favicon: PNG, JPEG, or octet-stream base64 data URI, or HTTP(S) URL (proxied; PNG/JPEG/GIF/SVG/WebP/ICO). Recommended source: 32×32 or 48×48 PNG or multi-size ICO; HTTP(S) max 2 MB. Empty = bundled default.
## @param canvas.branding.primaryLogo Primary logo for login + header (see product docs). Data URI (PNG/JPEG/octet-stream base64) or HTTP(S) URL. Recommended: ≥128×128 px square or wide mark (e.g. 256×64) with height ≥64 px; HTTP(S) max 2 MB. Empty = defaults.
## @param canvas.branding.secondaryLogo Secondary header logo; requires `primaryLogo`. Data URI or HTTP(S) URL; displayed up to ~32 px tall. Recommended sizing matches `primaryLogo`; HTTP(S) max 2 MB.
+ ## @param canvas.branding.notice Pre-authentication notice and consent banner text shown on the login page (STIG SRG-APP-000068 / SRG-APP-000069). When set, login controls are disabled until the user acknowledges. Rendered as plain text; newlines preserved. Empty = no banner.
branding:
brandColor: ""
configMapName: "branding"
@@ -2012,9 +2013,100 @@ canvas:
sidebarBackgroundColor: ""
primaryLogo: ""
secondaryLogo: ""
+ notice: ""
## @param canvas.fullnameOverride Fullname override
fullnameOverride: canvas

+## @section curator
+curator:
+ ## @param curator.enabled Whether to enable the curator chart. Default is true.
+ enabled: true
+ # Default values for curator.
+
+ ## @section OCM addon parameters
+ ocm:
+ addon:
+ ## @param curator.ocm.addon.enabled Whether to create OCM addon registration resources.
+ enabled: true
+ ## @param curator.ocm.addon.name Name of the ClusterManagementAddOn and AddOnTemplate.
+ name: curator
+ ## @param curator.ocm.addon.installNamespace Namespace on the managed cluster where the curator agent is installed.
+ installNamespace: mural-system
+ ## @param curator.ocm.addon.managedClusters Managed clusters to enable the curator addon on.
+ ## Each entry creates a ManagedClusterAddOn in the managed cluster namespace on the hub.
+ managedClusters: []
+ # - namespace: hub-as-spoke
+ # installNamespace: mural-system
+ ## @section curator agent parameters
+
+ ## @param curator.replicaCount Number of curator replicas on each spoke cluster.
+ replicaCount: 1
+ ## @param curator.image.repository Image repository for curator.
+ ## @param curator.image.tag Image tag for curator.
+ ## @param curator.image.pullPolicy Image pull policy for curator.
+ image:
+ repository: public.ecr.aws/mural/curator
+ tag: v0.0.2
+ pullPolicy: IfNotPresent
+ ## @param curator.imagePullSecrets Image pull secrets for curator.
+ imagePullSecrets: []
+ ## @param curator.nameOverride Override for the chart name.
+ nameOverride: ""
+ ## @param curator.fullnameOverride Override for the fully qualified app name.
+ fullnameOverride: curator
+ ## @param curator.podSecurityContext.seccompProfile.type Seccomp profile for curator pods.
+ podSecurityContext:
+ seccompProfile:
+ type: RuntimeDefault
+ ## @param curator.securityContext.allowPrivilegeEscalation Allow privilege escalation.
+ ## @param curator.securityContext.capabilities.drop Capabilities to drop.
+ ## @param curator.securityContext.readOnlyRootFilesystem Mount root filesystem read-only.
+ ## @param curator.securityContext.runAsNonRoot Run as non-root user.
+ securityContext:
+ allowPrivilegeEscalation: false
+ capabilities:
+ drop:
+ - ALL
+ readOnlyRootFilesystem: true
+ runAsNonRoot: true
+ ## @param curator.resources.requests.cpu CPU request for the curator controller.
+ ## @param curator.resources.requests.memory Memory request for the curator controller.
+ ## @param curator.resources.limits.cpu CPU limit for the curator controller.
+ ## @param curator.resources.limits.memory Memory limit for the curator controller.
+ resources:
+ limits:
+ cpu: 200m
+ memory: 256Mi
+ requests:
+ cpu: 100m
+ memory: 128Mi
+ ## @param curator.metrics.port Port for the metrics endpoint.
+ metrics:
+ port: 8080
+ ## @param curator.healthCheck.port Port for health and readiness probes.
+ healthCheck:
+ port: 8081
+ ## @skip curator.livenessProbe
+ livenessProbe:
+ httpGet:
+ path: /healthz
+ port: healthz
+ initialDelaySeconds: 15
+ periodSeconds: 20
+ timeoutSeconds: 1
+ failureThreshold: 3
+ successThreshold: 1
+ ## @skip curator.readinessProbe
+ readinessProbe:
+ httpGet:
+ path: /readyz
+ port: healthz
+ initialDelaySeconds: 5
+ periodSeconds: 10
+ timeoutSeconds: 1
+ failureThreshold: 3
+ successThreshold: 1
+
## @skip dex
dex:
enabled: true
@@ -2114,10 +2206,15 @@ dex:
hash: '$2a$12$Ot2dJ0pmdIC2oXUDW/Ez1OIfhkSzLZIbsumsxkByuU3CUr02DtiC.'
username: 'admin'
userID: '08a8684b-db88-4b73-90a9-3cd1661f5466'
+ # See https://dexidp.io/docs/configuration/tokens/#expiration-and-rotation-settings for all supported options.
expiry:
# The life time of tokens issued by Dex
idTokens: "8h"
- # See https://dexidp.io/docs/connectors/ for more options
+ # Session inactivity timeout (STIG SRG-APP-000190-CTR-000500).
+ # Idle sessions are logged out after this duration. Canvas resets the
+ # timer only on genuine user interaction.
+ refreshTokens:
+ validIfNotUsedFor: "10m"
# -- Additional storage [volumes](https://kubernetes.io/docs/concepts/storage/volumes/).
# See the [API reference](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#volumes-1) for details.
volumes:
@@ -2409,7 +2506,7 @@ fleetconfig-controller:
## Source bundle for the Cluster Manager and all Klusterlets.
source:
## @param fleetconfig-controller.fleetConfig.source.bundleVersion Bundle version.
- bundleVersion: v1.0.0
+ bundleVersion: v1.3.1
## @param fleetconfig-controller.fleetConfig.source.registry Image registry.
registry: quay.io/open-cluster-management
## @descriptionStart
@@ -2467,6 +2564,8 @@ fleetconfig-controller:
## - **NilExecutorValidating** (ALPHA - default=false) - Enables nil executor validation
## - **ResourceCleanup** (BETA - default=true) - Enables automatic resource cleanup
## - **V1beta1CSRAPICompatibility** (ALPHA - default=false) - Enables v1beta1 CSR API compatibility
+ ## - **CleanUpCompletedManifestWork** (ALPHA - default=false) - Enables automatic garbage collection of completed manifest works
+ ## - **PlacementDebugServer** (ALPHA - default=false) - Enables the placement debug server
## @descriptionEnd

featureGates:
@@ -2476,6 +2575,8 @@ fleetconfig-controller:
ManifestWorkReplicaSet: true
## @param fleetconfig-controller.fleetConfig.hub.clusterManager.featureGates.ResourceCleanup ResourceCleanup feature gate.
ResourceCleanup: true
+ ## @param fleetconfig-controller.fleetConfig.hub.clusterManager.featureGates.CleanUpCompletedManifestWork CleanUpCompletedManifestWork feature gate.
+ CleanUpCompletedManifestWork: true
## @param fleetconfig-controller.fleetConfig.hub.clusterManager.purgeOperator If set, the cluster manager operator will be purged and the open-cluster-management namespace deleted when the FleetConfig CR is deleted.
purgeOperator: true
## @descriptionStart
@@ -2661,7 +2762,7 @@ fleetconfig-controller:
## @param fleetconfig-controller.image.pullPolicy Image pull policy
image:
repository: us-docker.pkg.dev/palette-images-fips/palette/spectro-ocm-bcfips/fleetconfig-controller
- tag: v0.2.4
+ tag: v0.3.5
pullPolicy: IfNotPresent
## @param fleetconfig-controller.imagePullSecrets Image pull secrets
imagePullSecrets: []
@@ -3235,6 +3336,8 @@ hue:
projectName: ""
## @param hue.tenantName Owning tenant name for this spoke (`Project.spec.tenantRef.name`). Required on workload clusters for tenant-scoped OCI definition sync (`<tenantName>-tenant-spoke-definitions`) without listing Project on the spoke. Only applicable when ClusterType == spoke.
tenantName: ""
+ ## @param hue.systemName Marks a system-scoped spoke. When set, the spoke federates via the system resource bundle (`pai-system-project-definitions`). Mutually exclusive with projectName/tenantName. Only applicable when ClusterType == spoke.
+ systemName: ""
## @section OCI registry parameters. If specified, OCI deployment flow will be enabled.
## @param hue.ociRegistry.enabled whether to enable an OCI registry for tracking Workload revisions
## @param hue.ociRegistry.endpoint OCI registry endpoint
@@ -3321,7 +3424,7 @@ hue:
## @param hue.image.pullPolicy Image pull policy
image:
repository: public.ecr.aws/mural/hue
- tag: v0.12.12-hotfix.7
+ tag: v0.12.28
pullPolicy: IfNotPresent
## @param hue.resources.requests.cpu hue controller deployment's cpu request
## @param hue.resources.requests.memory hue controller deployment's memory request
@@ -3404,6 +3507,15 @@ hue:
## @param hue.rbac.create Specifies whether a RBAC role should be created
rbac:
create: true
+ ## @param hue.projectRBAC.additionalPersonas Map of custom project RBAC personas to ship as template ConfigMaps in the Helm release namespace, beyond the built-in viewer/editor/admin tiers. Keyed by persona tier ID (the `palette.ai/project-rbac-tier` annotation value). Each entry renders a labeled template ConfigMap that Hue discovers and copies into every tenant namespace. Defaults to an empty map. Each persona accepts an optional `displayName` (human-readable label for the UI) and a required `rules` string: a YAML list of Kubernetes PolicyRule objects (same shape as `Role.rules`). Tier IDs must be DNS-1123 subdomains and must not be reserved (`tnt-adm`) or duplicate a core tier (`viewer`, `editor`, `admin`).
+ projectRBAC:
+ additionalPersonas: {}
+ # operator:
+ # displayName: Operator
+ # rules: |
+ # - apiGroups: ["spectrocloud.com"]
+ # resources: ["aiworkloads", "computepools"]
+ # verbs: ["get", "list", "watch"]
## @param hue.admissionWebhooks.enabled Whether to enable admission webhooks
## @param hue.admissionWebhooks.failurePolicy The failure policy for admission webhooks
## @param hue.admissionWebhooks.certificate.mountPath The mount path for the certificate
@@ -3438,8 +3550,11 @@ hue:
## @param hue.auditLogging.enabled Whether to enable sending audit logs to Alertmanager
## @param hue.auditLogging.alertmanagerURL The URL of the Alertmanager instance to send audit logs to
## @param hue.auditLogging.timeout The timeout for Alertmanager requests (default: 2s)
- ## @param hue.auditLogging.basicAuth.username Basic auth username for Alertmanager
- ## @param hue.auditLogging.basicAuth.password Basic auth password for Alertmanager
+ ## @param hue.auditLogging.basicAuth.username Basic auth username for Alertmanager. Ignored when secretRef.name is set
+ ## @param hue.auditLogging.basicAuth.password Basic auth password for Alertmanager. Ignored when secretRef.name is set
+ ## @param hue.auditLogging.basicAuth.secretRef.name Existing Secret with Alertmanager basic-auth credentials; when set, username/password are read from it at runtime
+ ## @param hue.auditLogging.basicAuth.secretRef.usernameKey Key within secretRef.name holding the username
+ ## @param hue.auditLogging.basicAuth.secretRef.passwordKey Key within secretRef.name holding the password
## @param hue.auditLogging.tls.insecureSkipVerify Skip TLS certificate verification
## @param hue.auditLogging.tls.caCertSecretName The secret containing the CA certificate for Alertmanager TLS verification. Must contain a 'ca.crt' key. Must exist in the release namespace.
## @param hue.auditLogging.tls.minVersion Minimum TLS version for Alertmanager (TLS12, TLS13)
@@ -3454,6 +3569,10 @@ hue:
basicAuth:
username: ""
password: ""
+ secretRef:
+ name: ""
+ usernameKey: "username"
+ passwordKey: "password"
tls:
insecureSkipVerify: false
caCertSecretName: ""
@@ -3481,7 +3600,7 @@ hue:
enabled: true
image:
repository: public.ecr.aws/mural/hue-definitions
- tag: v0.12.12-hotfix.7
+ tag: v0.12.28
pullPolicy: IfNotPresent
pullSecrets: []
job:

Full Component Release Notes

The following table lists all changes made to core components in this PaletteAI release.

Per-component changes in 1.2.0
ComponentTagNotes
brushbrush/v0.5.18
Other
  • main: bump to go 1.26.3
brushbrush/v0.5.19
Features
  • hue: context extension support for PaletteAI CLI studio commands
Bug Fixes
  • brush: go mod tidy
  • hue: scope spoke cluster definition federation to Tenant namespaces
Other
  • main: bump span to latest & fix suite tests
Dependency Updates
  • deps: update brush - other go dependencies (brush)
  • deps: update ginkgo (ginkgo)
brushbrush/v0.5.20
Features
  • hue: prom remote-write auth component; dynamic in-context-extension value resolution
Bug Fixes
  • hue, brush: ensure managedClusters have unique names by bumping fcc to v0.3.3
Other
  • main: bump fleetconfig-controller to v0.3.2; update topology policies to support new OCM API fields
  • main: bump go to 1.26.4
brushbrush/v0.5.21
Bug Fixes
  • hue: include mural HelmRelease in ComputePool readiness
Other
  • main: swap ptr.To for new
brushbrush/v0.5.22
Features
  • curator: add curator as an ocm addon with ci integration and docs
  • hue: implement paitest profile-bundle validate
  • hue: system-scoped resource federation
  • hue: tenant bundle federation to system spokes; Workload scope admission enforcement
Bug Fixes
  • brush: inject hue.tenantName for tenant workload namespace spokes
Other
  • brush: allow ocm prefix to be used for cert-manager-skip annotation
  • brush: configure spoke helmrelease to retry without deletion
  • main: make reviewable all
  • main: remove deprecated ingress-nginx remnants
  • main: update fcc to 0.3.5
Dependency Updates
  • deps: update ginkgo (ginkgo)
brushbrush/v0.5.23
Features
  • curator: add curator as an ocm addon with ci integration and docs
  • hue: implement paitest profile-bundle validate
  • hue: system-scoped resource federation
  • hue: tenant bundle federation to system spokes; Workload scope admission enforcement
Bug Fixes
  • brush: inject hue.tenantName for tenant workload namespace spokes
  • hue: fail-fast webhook health check for Palette API unreachability
  • hue: include mural HelmRelease in ComputePool readiness
Other
  • brush: allow ocm prefix to be used for cert-manager-skip annotation
  • brush: configure spoke helmrelease to retry without deletion
  • main: make reviewable all
  • main: release brush 0.5.21
  • main: release brush 0.5.22
  • main: remove deprecated ingress-nginx remnants
  • main: swap ptr.To for new
  • main: update fcc to 0.3.5
Dependency Updates
  • deps: update ginkgo (ginkgo)
brushbrush/v0.5.24
Bug Fixes
  • brush: grant brush get/list/watch on namespaces
Performance
  • brush: early return when system-scope
canvascanvas/v0.6.9
Features
  • canvas: Tenant settings Models List tab (tenant + project sub-tabs)
Bug Fixes
  • canvas: disable node pool name in PB and compute edit flow
canvascanvas/v0.6.10
Features
  • canvas: block App Deployment and Compute Pool creation when Project not ready
  • canvas: Compute Config page update/revamp
  • canvas: compute pool cluster status health indicator improvements
  • canvas: implement hasDefinitionCreatePermission for definition creation checks
  • canvas: playwright increase number of workers in the ci
  • canvas: Tenant Resource Limit Revamp
Bug Fixes
  • canvas: add key value in the resource group column
  • canvas: chore update gamut version
  • canvas: Compute Config Page detailing and regression fixes
  • canvas: drop playwright workers back down to 1
  • canvas: expose tenants listing error properly
  • canvas: Fix deployment link
  • canvas: HF token validation supports fine-grained tokens and detailed errors
  • canvas: increase timeout for tenant models list test
  • canvas: preserve existing project Settings when replacing tenant-shared HF/NVIDIA integrations
  • canvas: unset table cell heights imposed by gamut
  • canvas: update GPU family normalization functionality
  • canvas: use current project namespace when cloned as well
  • canvas: use real VIP placeholder for edge configuration
  • hue, canvas: ensure compute status is ready even if hosts are unhealthy
Other
  • canvas: Implement Tags component
  • canvas: move canvas to 2 spaces and 100 print lines in prettier
  • canvas: replace all pxToRem uses in canvas to its local copy instead of gamut
  • canvas: Support multiple VIP in compute pool shared
canvascanvas/v0.6.11
Features
  • canvas: hide system labels and annotations from overview/details pages
  • canvas: Profile Bundle Import tenant scope
  • canvas: TestRail foundation — per-area runs and mock publish
  • canvas: TestRail CI env and tag lint
  • canvas: TestRail Flow A sync and tag lint enhancements
  • canvas: playwright consolidation
  • canvas: tenant permission handling, messaging, routing improvements
  • canvas: Tenant scoped app and model deployment
  • canvas: tenant-aware Project creation flow with sharing and scope visibility
Bug Fixes
  • canvas: add label validations
  • canvas: add scope column to wlp table
  • canvas: add status revalidation for imported PB
  • canvas: add warning on the edit palette integration drawer
  • canvas: correct Compute Pool delete View usage links for project and tenant scope
  • canvas: could not proceed past WLP clone/edit step 1
  • canvas: Fix Application workload profile variables in compute pool flow
  • canvas: fix unique keys for wlp names
  • canvas: limit wlp definitions to project and sys namespace
  • canvas: Models List tenant-scoped read-only UX and omit unconfigured model settings from Project spec
  • canvas: TestRail Flow A sync PR review fixes
  • canvas: prevent panel close when overlays are open
  • canvas: show notifications for repeated fetcher submissions
  • canvas: update max char limit for names on compute pool
  • canvas: wlp and definitions version note fix
Other
  • canvas: mv Badge from gamut to canvas
  • canvas: Add annotation for compute pool and AIWl
canvascanvas/v0.6.12
Features
  • canvas: bulk @area_* and TestRail case backfill
  • canvas: TestRail run context and result publish improvements
  • canvas: automate view app deployment detail scenario
  • canvas: Add Playwright clone app deployment scenario
  • canvas: Remove Overlay Network Type field; add static overlay IP configuration when Enable Network Overlay is on
  • canvas: Tenant creation wizard on tenant selection screen
Bug Fixes
  • canvas: Allow app and model deployment in Tenant Compute pools
  • canvas: keep wlp toggle visible with long YAML
  • canvas: mv + adjust gamut's accordion to canvas
  • canvas: disable showing delete, create for system definition
  • canvas: Make Profile bundle name consistent
  • canvas: prevent Definition version dropdown from being cut off on CUE tab
  • canvas: rm app deployments infra panel
  • canvas: rm hardware requests card for model overview
  • canvas: show disabled Previous button in WLP and Definition creation wizards
  • hue,canvas: refactor to use new compute fields
Other
  • canvas: Add Cert manager ignore annotation in Klusterlet
  • canvas: Fix Playwright tests
  • canvas: mv action-menu from gamut to canvas
  • canvas: mv banner from gamut to canvas
  • canvas: mv button from gamut to canvas
  • canvas: mv confirmationdialog from gamut
  • canvas: rename openfeature flags to ui flags
  • canvas: Rename wlp scope and variable scope column and enhance UX in profile bundle manager
  • canvas: Update gamut version
  • canvas: use the new util everywhere we use inline className array joins
canvascanvas/v0.6.13
Features
  • canvas: add Compute functional area
  • canvas: add Quotas and API Keys functional areas
  • canvas: add System and Tenants tabs to System Settings Compute panel
  • canvas: add system overview and resource overview card scope st…
  • canvas: Add tenant MIG UI settings persistence
  • canvas: add Tenants Creation subarea to SOT config
  • canvas: align SOT and TestRail functional area naming
  • canvas: automate case sync in PR regression CI
  • canvas: daily Playwright SOT backfill skill and routine
  • canvas: emit Kubernetes audit Events on login, logout, and failed login
  • canvas: enable system-scoped Models List editing on PaletteAISystem CRD
  • canvas: Improve bundle manager version UX
  • canvas: logout confirmation and dex SSO termination
  • canvas: migrate GPU configuration forms from family to variant write path
  • canvas: gpuVariant read helpers
  • canvas: test-case-brainstorm SOT skill + nightly TestRail fix
  • canvas: backend Ginkgo TestRail integration (Phase 1)
  • canvas: per-area TestRail suites for CI publish
  • canvas: pre-auth notice and consent banner
  • canvas: Side bar layout changes system scope
  • canvas: system settings basic info
  • canvas: System Settings Settings Ref
  • canvas: System Settings User Access
  • canvas: taints on node pool
  • canvas: tenant management screen rev2
  • canvas: warn on Models List deny changes and surface out-of-policy model deployments
  • canvas: wire system-scoped Compute and Compute Config on PaletteAISystem CRD
  • canvas: wire system-scoped GPU Partitioning (MIG) UI on PaletteAISystem CRD
  • canvas: wire system-scoped Model as a Service mappings
  • hue: backend TestRail integration Phase 2
  • hue: implement paitest profile-bundle validate
  • mural: enforce 10-minute dex session inactivity timeout
  • playwright: video on ci push to s3
  • span: backend Ginkgo TestRail library
  • span: extend sot config / loader
  • span: integration suite TestRail sync improvements
Bug Fixes
  • canvas: add import PB button on empty state
  • canvas: add missing Profile Bundle type validations
  • canvas: block duplicate definition creation and show clear validation feedback
  • canvas: clarify profile bundle actions and clone source details
  • canvas: disable two node option whenever the K8s distro is incompatible
  • canvas: display stack trace on 500 error
  • canvas: fix all sharing bugs
  • canvas: fix candidate for AIWorkload incorrect WLDC
  • canvas: fix for flaky model deployments test
  • canvas: fix local playwright flakiness
  • canvas: gate Palette integration warning on active workloads
  • canvas: hide variables step when no wlp selected
  • canvas: remove frontend manipulation of k8s data
  • canvas: remove unreachable Change Settings Ref drawer; fix various settings-related bugs
  • canvas: Remove VIP from table
  • canvas: settings creation flow displays duplicate fields
  • canvas: show baseline pool counts for empty compute configs
  • canvas: stabilize Playwright mock tests and parallel worker port isolation
  • canvas: surface actual webhook error on profile bundle import failure
  • canvas: tenant settings not showing compute resources
  • canvas: uncomment disabled
  • canvas: Use SystemK8s list shared tenant resources
  • canvas: Validate VIP in app deployment Flow
  • hue,canvas,mural: rename PaletteAISystem references to System
  • mural: enable read-only root filesystem for canvas and palette-ai
  • surface concrete condition messages for NotReady Settings
Other
  • brush: allow ocm prefix to be used for cert-manager-skip annotation
  • canvas: add UI mode to playwright suite
  • canvas: bump @spectrocloud/gamut to 0.12.41
  • canvas: mv descriptors from gamut
  • canvas: mv dialog from gamut
  • canvas: mv drawer from gamut to canvas
  • canvas: Remove duplicate notification
  • canvas: Update Gamut version
  • main: allow users to opt in to local hue-definitions and pai-profilebundles for dev setups
  • mural-crds: minify crds in chart
Docs
  • canvas: update canvas onboarding guides
  • rfc: extend RFC-0009 for backend Ginkgo TestRail integration
Refactoring
  • canvas: Compute Pool overview uses status aggregates with cluster and node pool filters
canvascanvas/v0.6.14
Features
  • canvas: add shared-access component library for spec.sharedWith
  • canvas: add System and CLI functional areas 16–17
  • canvas: assign non-default NICs and static IP
  • canvas: automate SOT batch
  • canvas: display WorkloadDeployment status conditions for App/Model Deployments and ComputePools
  • canvas: go-live daily Playwright SOT backfill under
  • canvas: MIG day 2
  • canvas: MIG fleet overview
  • canvas: migrate ComputeConfig and ScalingPolicy to spec.sharedWith map model
  • canvas: migrate Settings integration sharing to sharedWith with system-scope editor
  • canvas: Day 1 MIG configuration for Compute Pool worker pools
  • canvas: System scope Compute Pools, App deployments, Model deployments, Profile bundles Feature
  • canvas: system settings autoscaling policies
  • canvas: system settings Resource Limits
  • canvas: System Settings Target Namespaces
  • canvas: system variables page
Bug Fixes
  • canvas: add PaletteAI version information
  • canvas: align tags with SOT and add strict lint guardrails
  • canvas: allow compute config and compute pool with control-plane-only node layout
  • canvas: allow Models List project select to expand for long disp…
  • canvas: fix table row incorrect cursor assignment
  • canvas: fleet mig displays improper count
  • canvas: format elapsed as decimal seconds for result publish
  • canvas: harden session reads after Playwright reload navigation
  • canvas: include system-shared resources in AIWL/CP tenant aggregate tables
  • canvas: Project GPU limit override accepts 0 and silently clamps all project GPU limits to 0
  • canvas: repair stale automation refs after PR #7223
  • canvas: reset Resource Limits form when switching Tenant Settings tabs
  • canvas: show only nodes from single Tenant Compute
  • canvas: wlp name should start only with a lowercase letter
  • test: disambiguate brush e2e refs + invalid_mapping docs
Other
  • canvas: Fix Auth guards and Notification error
  • canvas: tweak canvas readiness probe to improve startup times
Refactoring
  • canvas: use new top-level conditions for CP status
canvascanvas/v0.6.15
Features
  • canvas: Add System Scope fleet overview
  • canvas: automate SOT batch
  • canvas: automate SOT batch
  • canvas: automate SOT batch
  • canvas: automate SOT batch
  • canvas: canvas side: fix table pagination cut off on system settings tenant compute inventory
  • canvas: source System singleton name from PALETTEAI_INSTANCE_NAME
Bug Fixes
  • canvas,gamut: disabled danger menu items show disabled color
  • canvas: add Scope column to the Select Profile Bundle drawer
  • canvas: dedupe edge hosts in compute table
  • canvas: delay GPU resource validation errors until field interaction
  • canvas: Fix shared system routes app and model deployment links
  • canvas: fix stale variable validation errors in App and Model deployment
  • canvas: Fix user access validation and adjust save footer in settings
  • canvas: give system-scoped integrations their own Scope badge color
  • canvas: normalize GPU variant matching in MIG hardware metrics
  • canvas: prevent deletion of WorkloadProfiles and versions from scopes other than the active scope
  • canvas: prevent GPU Variant field from squishing siblings in Modify Nodes Configuration drawer
  • canvas: reduce RBAC noise and false failures for project-scoped users
  • canvas: require worker pools for single-node control plane configurations
  • canvas: show full project names in tenant Settings Ref project filter
  • canvas: show MIG paused from SpokeNodes
  • canvas: show pai-system as the read-only System Name on System Settings
  • canvas: show project display names consistently in the scope switcher
  • canvas: stabilize mock E2E cold Vite routes and hydration flakes
  • canvas: surface built-in scaling policies in tenant and system autoscaling views
  • span: drop SOT path prefixes for reverted Quota/APIKey CRDs
Other
  • canvas: dev flag to run canvas with no impersonation
  • canvas: move sidebar from gamut to canvas
  • canvas: remove 'MIG limitation' message hardcoded directly in-product
canvascanvas/v0.6.16
Features
  • canvas: automate SOT batch
  • canvas: automate SOT batch
  • canvas: playwright tests for fleet overview
  • canvas: system display name in settings and routing
  • canvas: tenant variable page
Bug Fixes
  • canvas: dedupe same-named ProfileBundles across scopes in app deployment wizard
  • canvas: disable locked variable overrides in deployment wizards
  • canvas: fix edge host NIC configuration UX and lookup bugs
  • canvas: Helm repository edit 502s on Project chartSyncConfigs patch
  • canvas: keep pagination on selected page for profile bundle tables
  • canvas: label mural-system resources as Built-in scope
  • canvas: match scope-suffixed aria-label in profile bundle drawer scope assertion
  • canvas: omit edge.vip when network overlay is enabled
  • canvas: prevent profile bundle error screen on clone/create version
  • canvas: resolve Fleet Overview MIG data from SpokeNodes machine pool configuration
  • canvas: revalidate Settings Ref table after integration delete
  • canvas: show inherited HF/NVIDIA config on tenant Model Settings
  • canvas: stabilize project Compute tab GPU Variant Playwright assert
  • canvas: system-scoped, shared integration overridable
  • canvas: update nic text to remove references to default
  • canvas: update Project Settings Playwright tests for Display Name label
  • canvas: Use Labels overflow on tenant overview and tenant/project cards
  • canvas: use system for metadata in settings
  • canvas: Worker pool display issues when single node cluster enabled
Other
  • canvas: Profile bundle sharing
  • canvas: Remove setting ref from Compute pool and app/model
canvascanvas/v0.6.17
Features
  • canvas: Add global navigation loader
  • canvas: automate SOT batch
  • canvas: playwright System Settings recon part 1
  • canvas: SOT backfill 3 tests/day single 3 AM cron
Bug Fixes
  • canvas: resolve edge host NIC column from resolvedNIC, fix DNS tag removal
  • canvas: resolve shared ProfileBundle deps via admin kubeconfig
  • canvas: reverted the change to show 1 as default
  • canvas: show tenant and system shared scaling policies in compute pool create/edit
  • canvas: system-scoped compute configs not appearing in deployment wizard node config step
  • canvas: use correct sidebar icons in wizard headers
canvascanvas/v0.6.18
Bug Fixes
  • hue: report a Processing phase for ProfileBundles while converging
huehue/v0.12.12
Bug Fixes
  • hue: ensure all necessary ComputePool conditions for Palette-deployed clusters; track child resource deletion in PB delete step; allow defrev GC by ns controller
huehue/v0.12.13
Features
  • hue: adds metricseval integration test suite
  • hue: AIWorkloads status reflects ComputePool
  • hue: ComputePool status reflects managedcluster being offline
  • hue: context extension support for PaletteAI CLI studio commands
  • hue: update cp status with health
Bug Fixes
  • hue, canvas: ensure compute status is ready even if hosts are unhealthy
  • hue: allow project setting creation when no integrations are specified if tenant settings are shared
  • hue: ensure scalingPolicy requeues after the defaultScrapeInterval
  • hue: go mod tidy
  • hue: hydrate definition status conditions properly for semantic versions
  • hue: migration ordering for aiwls
  • hue: only add finalizers to PB's child resources in controller
  • hue: patch PB status separately to bypass webhooks when spec was mutated
  • hue: project model settings scope tied to integration scope
  • hue: remove numbered prefix from migrations
  • hue: Run migration annotation
  • hue: scope spoke cluster definition federation to Tenant namespaces
  • hue: set WLP namespace in OAM ctx when validating VariableSets
  • hue: settings, project, and compute conditions and readiness improvements; tenant with palette integration no longer creates compute
  • hue: stop metricseval suite flaking by grabbing a random available port instead of hardcoded
  • hue: verification of pb wlps used in wldcs
  • hue: WorkloadDeployments are unhealthy with unready env
Other
  • hue: add debug file write for failed CP upserts
  • main: swap ptr.Ptr for new
Dependency Updates
  • deps: update ginkgo (ginkgo)
  • deps: update module google.golang.org/grpc to v1.81.1 (hue go-core)
Refactoring
  • hue: ManagedCluster is cluster-scoped
huehue/v0.12.14
Features
  • hue-apis: Make kubeconfig and hubRef optional on imported computepools
  • hue: allow metadata updates on invalid resources
  • hue: auto-detect cert-manager in paitest; install by default
  • hue: implement palette-ai-instance cleanup command
  • hue: paitest CLI framework + palette-ai-instance deploy
  • hue: prom remote-write auth component; dynamic in-context-extension value resolution
Bug Fixes
  • hue, brush: ensure managedClusters have unique names by bumping fcc to v0.3.3
  • hue: adds pb embedded tests
  • hue: cluster profile error handling to return early on failure
  • hue: defer ProfileBundle revision until workload profile vars parse
  • hue: ensure spoke definition caches stay aligned with etcd; i.e. stop preserving dropped revisions
  • hue: pb deletion causes referenced wlps to be deleted when deletionPolicy is delete
  • hue: quick requeue of WLD during aggregate_status_step when MWRS still not created
  • hue: remove flaky ProfileBundle dependency ordering assertions
  • hue: set spoke-cluster-name on hub-as-spoke
  • hue: track project definition OCI syncs per registry
  • hue: Use additionalAnnotations for annotations
Other
  • hue: bump paletteai-profilebundles to v1.3.2
  • hue: bump paletteai-profilebundles to v1.3.3
  • hue: exclude hue/test when building devspace image
  • hue: interface{} -&gt; any
  • main: bump fleetconfig-controller to v0.3.2; update topology policies to support new OCM API fields
  • main: bump go to 1.26.4
Docs
  • rfc: RFC-0011 Edge Host NIC Resolution
huehue/v0.12.15
Features
  • hue: Support adopting Spokes to ComputePool
Other
  • hue: bump paletteai-profilebundles to v1.3.5
huehue/v0.12.16
Features
  • hue: add --log-format flag for human-readable console logs
  • hue: compute and store totalHardwareAllocated in compute pool
  • hue: create spokenodes from computepool controller
  • hue: maas integration settings controller
  • hue: minimal maas client with no external deps
  • hue: update Compute to surface NIC and StaticIP values
Bug Fixes
  • hue: allow project AIWL to deploy apps/models to tenant CP that has been shared with the project
  • hue: detect day-2 workerNodeEligible changes on machine pools
  • hue: improve log for project deletion stalled by pb deletion
  • hue: include mural HelmRelease in ComputePool readiness
  • hue: inline wlp pb deletion bug
  • hue: populate platform annotation in manually generated OCI entries
  • hue: prevent Workload stuck in Deleting from stale informer cache
  • hue: skip Istio gateway auto image placeholder in mirror export
Other
  • hue: default to using log-format console for hue in devspace
  • main: enable check-public-interface for revive lint; resolve warnings
  • main: swap ptr.To for new
huehue/v0.12.17
Bug Fixes
  • hue,canvas: refactor to use new compute fields
  • hue: mark ComputePool ready when spoke HelmReleases report Ready
  • hue: relax paletteai mirror export validation; allow chart-only content bundles
Other
  • hue: set required OCM spoke feature gates in test fixtures
huehue/v0.12.18
Features
  • hue: Set NIC/StaticIP values during ComputePool creation
Bug Fixes
  • hue: prevent ComputePool variable sync failure on new ProfileBundle import
  • hue: resolve reused/orphaned definition-output objects by rendered name
huehue/v0.12.19
Features
  • curator: add curator as an ocm addon with ci integration and docs
  • curator: curator dev setup work to ensure connectivity
  • hue: add --extra-chart flag to paletteai mirror export/sync
  • hue: add --extra-repo flag to paletteai mirror export/sync
  • hue: add create maas cluster method to palette client
  • hue: add maas computepool webhooks
  • hue: add paletteai version command
  • hue: config map hardware lookup package
  • hue: enhances spokenodes step logic
  • hue: make palette projectUID required, tenant name optional
  • hue: per-backend compute availability evaluation and global rollup
  • hue: populate GPUVariant in Compute status
  • hue: read Alertmanager basic-auth from an existing Secret
  • hue: remove palette integration inheritance
  • hue: system scope foundational work
Bug Fixes
  • hue: add backend validation for project/tenant modelSettings ACLs
  • hue: add constants and fields for gpu
  • hue: allow scale-up when CP is in-use; ProvisioningFailed no longer marks running cluster Unhealthy
  • hue: derive single-node mode from builder input
  • hue: fail Settings validation for placeholder Palette configs
  • hue: move common functions out of edgehost into hardware
  • hue: only inject metrics addons the Hub declares
  • hue: pack push w/ relative path; remove unused pack.yaml from paletteai mirror bundles; add E2E suite
  • hue: preserve string type of numeric-like variable values
  • hue: prevent race condition during default resource upsert
  • hue: rebuild machine pools from allocated hosts without spare capacity
  • hue: stabilize project suite Settings cleanup after Tenant delete, hue E2E ProfileBundle teardown
  • hue: sync node-metadata changes on single-node clusters
  • hue: sync node-metadata changes to machine pools
Other
  • hue: add profilebundle watch to cp/aiwl controllers
  • hue: bump hue-apis; fix broken test
  • hue: bump profile bundles ref to v1.4.0
  • hue: bump profile bundles ref to v1.4.1
  • hue: fix typo in core command long description
  • hue: install hardware cm during devspace dev
  • hue: swap from using dash to a pipe in gpu variant name separator
  • hue: use %w for error wrapping
  • main: update fcc to 0.3.5
Refactoring
  • hue: move all Tenant RBAC initialization to the Tenant chain
  • hue: remove ability to lock/share maas integrations
  • hue: remove all maas code reliant on apis
  • hue: remove palette tenant name input; clean up
huehue/v0.12.20
Features
  • hue: add --extra-artifact flag to paletteai mirror export/sync
  • hue: dynamic RBAC personas backend
  • hue: enforce PAI &lt;&gt; Palette project and tenant constraints
  • hue: PAIS controller; update system settings resolution
  • hue: paitest support for deploying and cleaning up real profile bundles
  • hue: resolve effectiveMIGUISettings for tenants
  • hue: SharedWith read-visibility RBAC
  • hue: switch to BuiltInNamespace in hue + scope resolution and audit
  • hue: system-scoped settings
Bug Fixes
  • hue: PAISystem controller fixes
  • hue: retry tenant spoke OCI sync when registry targets are not ready
  • hue: SharedWith as a ptr
  • mural: avoid nil issues when installing via Helm SDK w/ default values; default zot to terminate TLS at the Traefik LB
Other
  • hue: add comp name to parse error
  • main: sync hue-apis types/ into hue devspace pod
huehue/v0.12.21
Features
  • hue: add --extra-pack for Artifact Studio Pack content bundles
  • hue: add support-bundle CLI subcommand
  • hue: aggregate system gpu utilization; validate projects, tenants against sys
  • hue: backend TestRail integration Phase 2
  • hue: GPUVariant migrations
  • hue: GPUVariant refactor
  • hue: implement bundle template sync to tenant, system
  • hue: implement paitest profile-bundle validate
  • hue: migrate SharedWithProjects to SharedWith (backfill, clear, webhook)
  • hue: migrate system variableset to pai-system
  • hue: parse profileBundle.content for mirror pull/sync
  • hue: SharedWith lifecycle consistency — enqueue + shardWith pruning
  • hue: system compute step
  • hue: system scoped rbac sharing for AIWL
  • hue: system-scoped resource federation
  • hue: tenant-scope read RBAC prefers SharedWith; hash-based system-scope Role names
Bug Fixes
  • hue,canvas,mural: rename PaletteAISystem references to System
  • hue: backfill ProfileBundle addon variant names in controller
  • hue: better errors for out of policy
  • hue: compare spec instead of generation in SpecUnchanged
  • hue: federate tenant resources to tenant-workload-namespace spokes
  • hue: harden computepool orphan flows
  • hue: retry ProfileBundle project sync in all edge cases; respect pause annotation for ComputePools
  • hue: tests for shared with migrations
  • hue: worker pool cycling due to un-named worker pools
  • mural: restore zot serviceHeadless.enabled default to false
Other
  • hue: bump profile bundles ref to v1.4.2
  • hue: bump profile bundles ref to v1.4.3
  • hue: update hue/config/samples
  • main: bump profile bundles ref to v1.5.0
  • main: make reviewable all
Dependency Updates
  • deps: update ginkgo (ginkgo)
huehue/v0.12.22
Features
  • hue: add validation webhooks for Quota and APIKey resources
  • hue: adds 'Blocked' state to node pool scaling fsm
  • hue: SharedWith glob/negation policy engine
  • hue: system scoped computepools, workloads
  • hue: tenant bundle federation to system spokes; Workload scope admission enforcement
Bug Fixes
  • hue: allow in-place sharedWith updates for PBs
  • hue: bump hue-apis and fixes
  • hue: deprioritize GPU hosts for control plane selection
  • hue: fail AIWorkload when WorkloadDeploymentConfigs cannot deploy
  • hue: spokenodes unit test failure after mig refactor
  • hue: strip OCM finalizers on force-delete to unblock offline-spoke ComputePool deletion
  • hue: support worker-eligible control plane with no worker pools
Refactoring
  • hue: consume metav1 conditions across all v1beta1 chains
  • hue: unify condition management across all controller chains
huehue/v0.12.23
Features
  • hue: add manifest samples for quota and api key resources
  • hue: adds ComputePool.status.hardwareCapacity for gpus and mig data
  • hue: adds curator-hardware-specs-role Role in BuiltInNamespace for hw lookup table access
  • hue: adds mig and node auto scaling coordination
  • hue: computeconfig, scalingpolicy migrations for sharedWith
  • hue: move cross-resource validation from webhooks to controller for migrated resources
  • hue: populate ComputePool status.workloadDeployments
  • hue: Quota and APIKey Controllers
  • hue: Settings integration sharing via SharedWith (webhook, migration, reads)
  • hue: system-scope model settings + tenant effective model settings step
  • hue: system-scope Settings sharing cascade
  • hue: system-scoped resource deletion
  • hue: watch System to re-enqueue Projects and Settings
Bug Fixes
  • canvas: align tags with SOT and add strict lint guardrails
  • canvas: repair stale automation refs after PR #7223
  • hue: align w/ Palette-reported gpu-memory semantics: value is per-GPU memory
  • hue: allow deletion of out-of-policy Workloads
  • hue: block tenant deletion with active tenant-scoped workloads
  • hue: correctly allocate single-node clusters on day 1; address unit test coverage gap
  • hue: enforce ClusterVariant GPU quota in AIWorkload controller
  • hue: expand sharedWith "*" wildcard in system ComputePool federation
  • hue: mock context extensions during hub variable resolution
  • hue: sync-validate-schema before test-unit to fix regression suite
  • hue: truncate paitest WorkloadProfile names to fit WorkloadDeployment webhook cap
  • hue: widen rbac scope for curator
Other
  • hue: remove extra comments from migration steps
  • hue: simplify comment before sharedWith migrations
Refactoring
  • hue: move cross-resource validation from webhooks to controller for prj/varset
  • hue: move most ProfileBundle validation to controller; stabilize ProfileBundle webhooks and controller
  • hue: settings-sharing cleanup pass (naming, package placement, dedup)
  • hue: use sharedWith for ComputeConfig, ScalingPolicy
huehue/v0.12.24
Features
  • hue: add displayName to system spec
Bug Fixes
  • hue: enforce SharedWith on cross-scope resource references
  • hue: enforce that users select a NIC when multiple NICs exist on the host
  • hue: provide better error messages when we fail to find eligible edge hosts
Other
  • hue: bump hue-apis version in /hue and /test
  • hue: bump paletteai-profilebundles to v1.6.0
huehue/v0.12.25
Features
  • hue: source System singleton name from --instance-name
Bug Fixes
  • hue: allow empty VIP when overlay is enabled
  • hue: backport kubevela/kubevela/pull/7226,7217 + associated refactors
  • hue: ensure compute does not filter out unhealthy
  • hue: fall back to system limits if tenant not explicitly set
  • hue: set edge control plane VIP from overlay CIDR when overlay is enabled
  • hue: sync AllocatedMachinePool nodeType on day-2 pool updates
  • hue: WaitForTermination on Workload/WorkloadDeployment kustomizations
Other
  • hue: expose Palette error when validating integration
huehue/v0.12.26
Features
  • hue: add xdefs-namespace annot to WLP/WL; set them via PB controller
  • hue: sync shared and deleted clusterprofiles to palette
Bug Fixes
  • canvas: dedupe same-named ProfileBundles across scopes in app deployment wizard
  • hue: fault-isolate invalid persona ConfigMaps in project RBAC
  • hue: omit system-scoped resources from tenant bundle on system spokes
Other
  • hue: address feedback on ClusterProfile sync
Performance
  • hue: drop transient annots from def bundles to prevent churn
huehue/v0.12.27
Features
  • hue: add migration to nuke orphaned federation flux resources
  • hue: exclude edge hosts without a resolved NIC from autoscaling
  • hue: pin resolvedNIC for in-use edge hosts on NIC changes
Bug Fixes
  • hue: allow tenant namespaces for workloadProfileRefs and scalingPolicyRefs
  • hue: read from effective tenant model settings
  • hue: validate CP for cross-scope copy; handle cross-scope 403 from Palette
Other
  • hue: bump profilebundles to v1.6.2
  • hue: skip cp ops on all invalid Palette integrations
Performance
  • hue: prevent more pointless churn
Refactoring
  • hue: split def & tenancy federation to prevent ownership conflicts
huehue/v0.12.28
Bug Fixes
  • hue: report a Processing phase for ProfileBundles while converging
mural-crdsmural-crds/v0.7.8
Features
  • hue-apis: Add Unknown to ComputePool status
mural-crdsmural-crds/v0.7.9
Features
  • hue-apis: update compute API to list unhealthy edge hosts
  • hue: adds cluster health field to cp status
mural-crdsmural-crds/v0.7.10
Features
  • hue-apis: add actual hardware allocation status fields to compute pool
  • hue-apis: Make kubeconfig and hubRef optional on imported computepools
  • hue-apis: settings maas integration types
  • hue: adds SpokeNodes crd
  • hue: API changes to resolve context extension references by label
Bug Fixes
  • hue, brush: ensure managedClusters have unique names by bumping fcc to v0.3.3
  • hue: make SpokeNodes Status omitempty
Other
  • hue-apis: clarify GPU quota godocs on Tenant and Project
  • main: bump fleetconfig-controller to v0.3.2; update topology policies to support new OCM API fields
mural-crdsmural-crds/v0.7.11
Features
  • hue-apis: add AppliedClusterProfileUIDs field to PaletteClusterStatus
  • hue-apis: add MetadataHash to AllocatedMachinePool
  • hue-apis: compute type supports maas machines
  • hue-apis: configure types for NIC and StaticIP selection
Other
  • hue: add OCM work CRDs
mural-crdsmural-crds/v0.7.12
Features
  • hue-apis: add additionalRoles to ProjectRoleMapping for dynamic RBAC personas
  • hue-apis: add gpu utilization to system status
  • hue-apis: add maas fields to computepool API
  • hue-apis: add MIG types to GPUResource for HardwareCapacity
  • hue-apis: Add MIGUISettings
  • hue-apis: add Quota and ApiKey resources
  • hue-apis: add SharedWith to AIWorkloads; deprecate SharedWithProjects; update SharedWith docstrings
  • hue-apis: add SharedWith to settings and effectiveModelSettings to Tenant
  • hue-apis: add system to integration scope enum
  • hue-apis: add tenantUID to palette status
  • hue-apis: adds 'Blocked' state to node pool scaling fsm
  • hue-apis: adds spokenodes.status fields
  • hue-apis: configure GPUVariant type
  • hue-apis: introduce PaletteAISystem CRD
  • hue-apis: make Quota spec.scope immutable via CEL validation
  • hue-apis: make tenant name optional, projectUID required
  • hue-apis: per-role machine availability on compute groups
  • hue-apis: sharedWith system level
  • hue-apis: SharedWith wildcard model with explicit sharing
  • hue-apis: swap from using dash to a pipe in gpu variant name separator
  • hue-apis: update mig api
  • hue-apis: update remainder of APIs to use variant instead of family
  • hue: implement paitest profile-bundle validate
Bug Fixes
  • hue-apis: docstring for MIGTarget.NodeSelectorTerms
  • hue-apis: nullable map
  • hue-apis: remove maas exposed apis
  • hue-apis: rename PaletteAISystem to System
  • hue: worker pool cycling due to un-named worker pools
Other
  • hue-apis: clean up family -&gt; variant rename in system api
  • hue-apis: fix docs comments on PoolScalingState field
  • mural-crds: install both versions of OCM addon CRDs
  • mural-crds: minify crds in chart
Refactoring
  • hue-apis: migrate v1beta1 conditions to metav1.Condition
  • hue-apis: remove ability to lock/share maas integrations
mural-crdsmural-crds/v0.7.13
Features
  • hue-apis: add ComputePool status workloadDeployments
  • hue-apis: add Ready to variableset status
  • hue-apis: add ResetSchedule type and integrate into QuotaStatus
  • hue-apis: add top-level conditions to computepool status
  • hue-apis: new sharedWith fields for computeconfig & scalingpolicy
  • hue-apis: enhance System and AIWorkload CRD specifications with model pricing and serving details
Bug Fixes
  • hue-apis: set default value for optional bool
  • hue: align w/ Palette-reported gpu-memory semantics: value is per-GPU memory
mural-crdsmural-crds/v0.7.14
Features
  • hue-apis: add displayName to system spec
  • hue-apis: drop System singleton name CEL rule
Other
  • hue-apis: update APIs for compute to ignore default NIC reported by palette
mural-crdsmural-crds/v0.7.15
Bug Fixes
  • hue-apis: make VIP optional on EdgeDeployConfig
  • hue: fall back to system limits if tenant not explicitly set
mural-crdsmural-crds/v0.7.16
Features
  • hue-apis: add map of synced CPUIDS to PB status
mural-crdsmural-crds/v0.7.17
Features
  • hue-apis: add Processing to the ProfileBundle status enum