PaletteAI 1.4.0 Release Notes
Summary
PaletteAI 1.4.0 is a stable release that adds AI Virtual Machine support, refactors lifecycle management for single node Compute Pools, and streamlines air-gapped profile bundle deployment.
- AI Virtual Machines - PaletteAI can now run AI Virtual Machines (VMs) on compute pools backed by Spectro Cloud's Virtual Machine Orchestrator (VMO). AI VMs give workloads that need a full guest operating system, persistent disk, or GPU passthrough the same managed experience as containerized models. You create, list, and manage them from the console, with an AI VM section on compute pool overviews and a dedicated detail page. The built-in VmTemplate catalog and AI VM role-based access come from the definitions installer, and compute pool capacity now accounts for the resources AI VMs consume.
- Compute pools - Single-node clusters are now configured via a single control plane pool with optional GPU requirements; node pool capacity totals parse memory consistently.
- Aviz network fabric - A new NetworkFabric resource and a fabrics controller inventory Aviz fabric data.
- Zot registry - Zot secret-name variables are injected into the system VariableSet and refreshed when the underlying secrets change, with a new Zot registry variables docs page.
- Platform upgrades - The umbrella chart moves to Flux 2.2.4, cert-manager 1.21.0, Dex 2.45.1, Zot 2.1.20, and Alertmanager 0.34.0, and adds optional Gateway API HTTPRoute routing for Dex, Alertmanager, and Zot.
- Reliability and security - Tenant admins receive read access to built-in system resources, ambiguous definition output macros are rejected instead of misrouted, and the bundled PaletteAI profile bundles are refreshed.
For the complete list of changes in each component, refer to Full Component Release Notes.
Upgrade Notes
- You must upgrade the
mural-crdschart to 0.7.26 before upgrading themuralchart to 1.4.0. For detailed instructions on how to upgrade PaletteAI, refer to the PaletteAI upgrade guide.
Component Versions
The following component versions are pinned for this PaletteAI release:
| Component | Version |
|---|---|
| brush | 0.5.34 |
| canvas | 0.6.30 |
| curator | 0.0.11 |
| frisket | 0.1.10 |
| hue | 0.12.38 |
| mural-crds | 0.7.26 |
Mural Helm values
The following diff lists changes to mural/charts/mural/values.yaml between PaletteAI 1.3.2 and 1.4.0. Review it before upgrading if you maintain custom Helm values.
values.yaml changes between 1.3.2 and 1.4.0
values.yaml
diff --git a/mural/charts/mural/values.yaml b/mural/charts/mural/values.yaml
index 66fce11241..44d11cfab9 100644
--- a/mural/charts/mural/values.yaml
+++ b/mural/charts/mural/values.yaml
@@ -71,8 +71,8 @@ global:
# - create 2 BackendConfig's, for configuring custom health checks for Canvas and Dex
# - use a custom FleetConfig controller image with the `gke-gcloud-auth-plugin` installed
kubernetesProvider: "Generic"
- certManagerVersion: "v1.19.1"
- muralVersion: "1.3.2" # x-release-please-version
+ certManagerVersion: "v1.21.0"
+ muralVersion: "1.4.0" # x-release-please-version
dns:
domain: "replace.with.your.domain"
rootIngress:
@@ -120,7 +120,7 @@ global:
username: ""
password: ""
basicAuthSecretName: ""
- muralCrdsVersion: "0.7.23-hotfix.2"
+ muralCrdsVersion: "0.7.26"
## @section certificates
## @param certificates.clusterIssuer.spec.selfSigned The spec for the ClusterIssuer used by cert-manager to issue the Mural root CA certificate.
@@ -1092,7 +1092,7 @@ alertmanager:
repository: us-docker.pkg.dev/palette-images-fips/palette/spectro-prometheus-bcfips/alertmanager
pullPolicy: IfNotPresent
# Overrides the image tag whose default is the chart appVersion.
- tag: "v0.29.0"
+ tag: "v0.34.0"
# Full external URL where alertmanager is reachable, used for backlinks.
baseURL: ""
# Uncomment to disable web config if TLS/basic auth are not being used
@@ -1226,6 +1226,20 @@ alertmanager:
# Service type
#
type: ClusterIP
+ serviceMonitor:
+ enabled: false
+ namespace: ""
+ additionalLabels: {}
+ interval: ""
+ scrapeTimeout: ""
+ path: /metrics
+ scheme: ""
+ tlsConfig: {}
+ bearerTokenFile: ""
+ basicAuth: {}
+ honorLabels: false
+ metricRelabelings: []
+ relabelings: []
ingress:
enabled: false
className: ""
@@ -1278,6 +1292,45 @@ alertmanager:
# {{ tlsSecretPerReplica.prefix }}-{{ $replicaNumber }}
#
prefix: "alertmanager"
+ ## route (map) allows configuration of Gateway API HTTPRoute resources
+ ## Requires Gateway API resources and a suitable controller installed within the cluster
+ ## Ref. https://gateway-api.sigs.k8s.io/guides/http-routing/
+ route:
+ main:
+ ## Enable this route
+ enabled: false
+ ## apiVersion set by default to "gateway.networking.k8s.io/v1"
+ apiVersion: ""
+ ## kind set by default to HTTPRoute
+ kind: ""
+ ## Annotations to attach to the HTTPRoute resource
+ annotations: {}
+ ## Labels to attach to the HTTPRoute resource
+ labels: {}
+ ## ParentRefs references the resources (usually Gateways) this HTTPRoute should be attached to
+ parentRefs: []
+ # - name: contour
+ # sectionName: http
+
+ ## Hostnames (templated) defines a set of hostnames that should match against the HTTP Host
+ ## header to select an HTTPRoute used to process the request
+ hostnames: []
+ # - alertmanager.domain.com
+
+ ## additionalRules (templated) allows adding custom rules to the route
+ additionalRules: []
+ ## Filters define the filters that are applied to requests that match this rule
+ filters: []
+ ## Matches define conditions used for matching the rule against incoming HTTP requests
+ matches:
+ - path:
+ type: PathPrefix
+ value: /
+ ## httpsRedirect adds a filter for redirecting to https (HTTP 301 Moved Permanently).
+ ## To redirect HTTP traffic to HTTPS, you need a Gateway with both HTTP and HTTPS listeners.
+ ## Matches and filters do not take effect if enabled.
+ ## Ref. https://gateway-api.sigs.k8s.io/guides/http-redirect-rewrite/
+ httpsRedirect: false
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
@@ -1405,7 +1458,7 @@ alertmanager:
##
image:
repository: quay.io/prometheus-operator/prometheus-config-reloader
- tag: v0.86.2
+ tag: v0.94.0
pullPolicy: IfNotPresent
# containerPort: 9533
@@ -1509,7 +1562,7 @@ brush:
## @param brush.image.pullPolicy The pull policy to use for the image
image:
repository: public.ecr.aws/mural/brush
- tag: v0.5.30-hotfix.2
+ tag: v0.5.34
pullPolicy: IfNotPresent
## @param brush.imagePullSecrets The pull secrets to use for the image
imagePullSecrets: []
@@ -1804,7 +1857,7 @@ canvas:
## @param canvas.image.pullPolicy canvas image pull policy
image:
repository: public.ecr.aws/mural/canvas
- tag: v0.6.27-hotfix.2
+ tag: v0.6.30
pullPolicy: IfNotPresent
## @param canvas.imagePullSecrets Image pull secrets
imagePullSecrets: []
@@ -2043,7 +2096,7 @@ curator:
## @param curator.image.pullPolicy Image pull policy for curator.
image:
repository: public.ecr.aws/mural/curator
- tag: v0.0.8-hotfix.2
+ tag: v0.0.11
pullPolicy: IfNotPresent
## @param curator.imagePullSecrets Image pull secrets for curator.
imagePullSecrets: []
@@ -2123,7 +2176,7 @@ dex:
# -- [Image pull policy](https://kubernetes.io/docs/concepts/containers/images/#updating-images) for updating already existing images on a node.
pullPolicy: IfNotPresent
# -- Image tag override for the default value (chart appVersion).
- tag: "v2.44.0"
+ tag: "v2.45.1"
# -- When digest is set to a non-empty value, images will be pulled by digest (regardless of tag value).
digest: ""
# -- Reference to one or more secrets to be used when [pulling images](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/#create-a-pod-that-uses-your-secret) (from private registries).
@@ -2352,6 +2405,38 @@ dex:
# - secretName: chart-example-tls
# hosts:
# - chart-example.local
+ httpRoute:
+ # -- Enable Gateway API HTTPRoute.
+ # Gateway API support is in EXPERIMENTAL status. Support depends on your Gateway controller implementation.
+ # See the [Gateway API documentation](https://gateway-api.sigs.k8s.io/) for details.
+ enabled: false
+ # -- Annotations to be added to the HTTPRoute.
+ annotations: {}
+ # -- References to the Gateway(s) that this HTTPRoute is attached to.
+ # See the [API reference](https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.ParentReference) for details.
+ parentRefs: []
+ # - name: gateway
+ # namespace: gateway-system
+ # sectionName: https
+ # port: 443
+
+ # -- Hostnames defines the hostnames for routing.
+ # See the [API reference](https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.Hostname) for details.
+ hostnames:
+ - chart-example.local
+ # -- HTTPRoute rules configuration.
+ # See the [API reference](https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRouteRule) for details.
+ rules:
+ - matches:
+ - path:
+ type: PathPrefix
+ value: /
+ # filters:
+ # - type: RequestHeaderModifier
+ # requestHeaderModifier:
+ # add:
+ # - name: X-Custom-Header
+ # value: custom-value
serviceMonitor:
# -- Enable Prometheus ServiceMonitor.
# See the [documentation](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/design.md#servicemonitor) and the [API reference](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#servicemonitor) for details.
@@ -2866,6 +2951,21 @@ flux2:
crds:
# -- Add annotations to all CRD resources, e.g. "helm.sh/resource-policy": keep
annotations: {}
+ # -- Enable Flux CRs migration using helm pre upgrade hook job
+ migration:
+ enabled: false
+ timeout: 5m
+ resources:
+ limits: {}
+ # cpu: 1000m
+ # memory: 1Gi
+ requests:
+ cpu: 100m
+ memory: 64Mi
+ nodeSelector: {}
+ affinity: {}
+ tolerations: []
+ annotations: {}
multitenancy:
# -- Implement the patches for Multi-tenancy lockdown.
# See https://fluxcd.io/docs/installation/#multi-tenancy-lockdown
@@ -2940,7 +3040,7 @@ flux2:
imageAutomationController:
create: false
image: ghcr.io/fluxcd/image-automation-controller
- tag: v1.0.2
+ tag: v1.2.5
resources:
limits: {}
# cpu: 1000m
@@ -2967,7 +3067,7 @@ flux2:
imageReflectionController:
create: false
image: ghcr.io/fluxcd/image-reflector-controller
- tag: v1.0.2
+ tag: v1.2.5
resources:
limits: {}
# cpu: 1000m
@@ -3041,7 +3141,7 @@ flux2:
notificationController:
create: false
image: ghcr.io/fluxcd/notification-controller
- tag: v1.7.3
+ tag: v1.9.4
resources:
limits: {}
# cpu: 1000m
@@ -3121,7 +3221,7 @@ flux2:
sourceWatcher:
create: false
image: ghcr.io/fluxcd/source-watcher
- tag: v2.0.2
+ tag: v2.2.4
resources:
limits: {}
# cpu: 1000m
@@ -3268,7 +3368,7 @@ fluxcd-manager:
## @param fluxcd-manager.kubectl.image The kubectl helper image to use for FluxCD operations
kubectl:
- image: us-east1-docker.pkg.dev/spectro-images/dev-fips/spectro-kubectl:1.33.3
+ image: us-east1-docker.pkg.dev/spectro-images/dev-fips/spectro-kubectl:1.34.2
## @skip fluxcd-manager.fluxcdConfig
fluxcdConfig:
installCRDs: true
@@ -3310,7 +3410,7 @@ frisket:
## @param frisket.image.pullPolicy Image pull policy for frisket.
image:
repository: public.ecr.aws/mural/frisket
- tag: v0.1.6-hotfix.2
+ tag: v0.1.10
pullPolicy: IfNotPresent
## @param frisket.imagePullSecrets Secret names used to authenticate the private image registry (leave empty for public ECR).
imagePullSecrets: []
@@ -3388,6 +3488,8 @@ hue:
controllerArgs:
reSyncPeriod: 5m
verbosity: 0
+ ## @param hue.controllerArgs.strictWorkloadPhases Panic when a Failed phase is written to a Workload or WorkloadDeployment during reconcile, unless the object sets annotation `wl.spectrocloud.com/allow-failed-phase` to `true`. For E2E and local use only; never enable in production.
+ strictWorkloadPhases: false
## @param hue.clusterType The type of cluster: [ hub | spoke | hub-as-spoke ]
clusterType: "hub-as-spoke"
## @param hue.projectName The name of the project that the managed cluster belongs to. If a Spoke belongs to a Project, the Project resource, as well as any supporting resources (Tenant, Settings, integration secrets) will be automatically federated to the Spoke. Required on workload clusters for OCI sync of component, trait, and policy definitions (tag `<tenantRef.name>-tenant-spoke-definitions`). Only applicable when ClusterType == spoke.
@@ -3482,7 +3584,7 @@ hue:
## @param hue.image.pullPolicy Image pull policy
image:
repository: public.ecr.aws/mural/hue
- tag: v0.12.35-hotfix.2
+ tag: v0.12.38
pullPolicy: IfNotPresent
## @param hue.resources.requests.cpu hue controller deployment's cpu request
## @param hue.resources.requests.memory hue controller deployment's memory request
@@ -3661,7 +3763,7 @@ hue:
enabled: true
image:
repository: public.ecr.aws/mural/hue-definitions
- tag: v0.12.35-hotfix.2
+ tag: v0.12.38
pullPolicy: IfNotPresent
pullSecrets: []
job:
@@ -4837,6 +4939,8 @@ traefik:
# -- Name of `Secret` with key 'token' set to a valid license token.
# It enables API Gateway.
token: ""
+ # -- Mount path for token secret.
+ tokenMountPath: "/etc/secrets"
# -- Disables all external network connections.
offline: # @schema type:[boolean, null]
# -- By default, Traefik Hub provider watches all namespaces. When using `rbac.namespaced`, it will watch helm release namespace and namespaces listed in this array.
@@ -5037,7 +5141,7 @@ zot:
repository: us-docker.pkg.dev/palette-images-fips/palette/spectro-zot-bcfips/zot
pullPolicy: IfNotPresent
# Overrides the image tag whose default is the chart appVersion.
- tag: "v2.1.10"
+ tag: "v2.1.20"
# Defaults to the release namespace if not specified
namespace: ""
serviceAccount:
@@ -5108,6 +5212,80 @@ zot:
domainProxy:
enabled: false
annotations: {}
+ # -- HTTPRoute configuration for Gateway API (alternative to Ingress). Only enable this if you have Gateway API CRDs installed and a Gateway controller.
+ httproute:
+ # -- Enable HTTPRoute resource creation instead of (or in addition to) Ingress.
+ enabled: false
+ # -- Annotations to add to the HTTPRoute resource.
+ annotations: {}
+ # -- Labels to add to the HTTPRoute resource.
+ labels: {}
+ # -- Gateway references that the HTTPRoute attaches to. At least one parentRef is required when HTTPRoute is enabled.
+ parentRefs: []
+ # Example parentRefs configuration:
+ # - name: my-gateway
+ # namespace: gateway-system
+ # sectionName: https # Optional: specific listener on the gateway
+ # -- Hostnames to match for this HTTPRoute.
+ hostnames: []
+ # Example:
+ # - "zot.example.com"
+ # - "registry.example.com"
+ # -- Path matching type (PathPrefix, Exact, or RegularExpression).
+ pathType: PathPrefix
+ # -- Path to match when custom rules are not specified.
+ path: /
+ # -- Advanced routing rules (optional). If not specified, a default rule matching the path will be created.
+ # Note: Any backendRefs in custom rules will be ignored and the zot service will always be used.
+ rules: []
+ # Example rules configuration:
+ # - matches:
+ # - path:
+ # type: PathPrefix
+ # value: /v2/
+ # filters:
+ # - type: RequestHeaderModifier
+ # requestHeaderModifier:
+ # add:
+ # - name: X-Custom-Header
+ # value: custom-value
+ # -- ListenerSet configuration for Gateway API. Use this to manage listeners
+ # (ports/protocols/TLS) independently from the Gateway resource.
+ # The parent Gateway must allow ListenerSet attachment via allowedListeners.
+ # Requires Gateway API CRDs with ListenerSet support (gateway.networking.k8s.io/v1 ListenerSet).
+ listenerset:
+ # -- Enable ListenerSet resource creation.
+ enabled: false
+ # -- Annotations to add to the ListenerSet resource.
+ # You may use annotations compatible with your certificate management stack.
+ annotations: {}
+ # Example annotation:
+ # cert-manager.io/cluster-issuer: letsencrypt-prod
+ # -- Labels to add to the ListenerSet resource.
+ labels: {}
+ # -- Parent Gateway reference that this ListenerSet attaches to.
+ parentRef:
+ # -- Name of the parent Gateway. Required when ListenerSet is enabled.
+ name: ""
+ # -- Namespace of the parent Gateway. Defaults to the same namespace if not set.
+ namespace: ""
+ # -- Group of the parent Gateway resource.
+ group: "gateway.networking.k8s.io"
+ # -- Kind of the parent resource.
+ kind: "Gateway"
+ # -- List of listeners to configure on the parent Gateway.
+ # At least one listener is required when ListenerSet is enabled.
+ listeners: []
+ # Example listeners configuration:
+ # - name: https
+ # port: 443
+ # protocol: HTTPS
+ # hostname: "zot.example.com"
+ # tls:
+ # mode: Terminate
+ # certificateRefs:
+ # - kind: Secret
+ # name: zot-tls-cert
# By default, Kubernetes HTTP probes use HTTP 'scheme'. So if TLS is enabled
# in configuration, to prevent failures, the scheme must be set to 'HTTPS'.
httpGet:
@@ -5136,7 +5314,7 @@ zot:
"extensions": {"search": {"enable": true}, "ui": {"enable": false}},
"log": { "level": "debug" }
}
- # Alternatively, the configuration can include authentication and acessControl
+ # Alternatively, the configuration can include authentication and accessControl
# data and we can use mountSecret option for the passwords.
#
# config.json: |-
@@ -5202,12 +5380,19 @@ zot:
persistence: true
# PVC data, only used if persistence is 'true'
pvc:
- # Make the chart create the PVC, this option is used with storageClasses that
- # can create volumes dynamically, if that is not the case is better to do it
- # manually and set create to false
+ # When true, the StatefulSet uses volumeClaimTemplates to dynamically provision
+ # PVCs. Kubernetes names the resulting PVCs as:
+ # <vctName>-<fullname>-<ordinal>
+ # where <fullname> is the StatefulSet name (typically <release>-zot).
+ # For example, with release "my-release" and default pvc.name:
+ # my-release-pvc-my-release-zot-0
+ # When false, an existing PVC is mounted via volumes instead — set 'name' to the
+ # exact name of the pre-existing PVC. Note: all replicas will share that single
+ # PVC, so the access mode must support it (e.g. ReadWriteMany).
create: true
- # Name of the PVC to use or create if persistence is enabled, if not set the
- # value '$CHART_RELEASE-pvc' is used
+ # When create is true, this is the volumeClaimTemplate name (the <vctName> part
+ # above). When create is false, this is the literal name of a pre-existing PVC.
+ # Defaults to '$CHART_RELEASE-pvc' if not set.
name: null
# Volume access mode, if using more than one replica we need
accessModes: ["ReadWriteOnce"]
@@ -5235,12 +5420,22 @@ zot:
# - name: data
# emptyDir: {}
+ # Init Containers that run before the main container starts
+ initContainers: []
+ # - name: init-config
+ # image: busybox
+ # command: ["sh", "-c", "echo initializing"]
+
# Extra Containers running alongside the main container
extraContainers: []
# - name: data
# image: busybox
# command: ["sleep", "infinity"]
+ # -- List of arbitrary Kubernetes objects deployed as part of the Helm release.
+ # Rendered through Helm `tpl` with the root context, so objects may use
+ # `.Release.Name`, `.Release.Namespace`, `.Values.*`, and chart helpers.
+ extraObjects: []
# Deployment strategy type
strategy:
# strategy.type should be set to Recreate if local storage is used
@@ -5256,6 +5451,48 @@ zot:
priorityClassName: ""
dnsConfig: {}
dnsPolicy: "ClusterFirst"
+ hostAliases: []
+ topologySpreadConstraints: []
+ # Example: spread pods across zones and nodes
+ # topologySpreadConstraints:
+ # - maxSkew: 1
+ # topologyKey: topology.kubernetes.io/zone
+ # whenUnsatisfiable: DoNotSchedule
+ # labelSelector:
+ # matchLabels:
+ # app.kubernetes.io/name: zot
+ # app.kubernetes.io/instance: $CHART_RELEASE
+ # - maxSkew: 1
+ # topologyKey: kubernetes.io/hostname
+ # whenUnsatisfiable: DoNotSchedule
+ # labelSelector:
+ # matchLabels:
+ # app.kubernetes.io/name: zot
+ # app.kubernetes.io/instance: $CHART_RELEASE
+
+ # -- PodDisruptionBudget configuration for the zot pods, to limit disruptions
+ # (e.g. node drains) so a minimum number of pods stay available. When enabled, set exactly
+ # one of `minAvailable` or `maxUnavailable`. Rendering fails if both or neither is set.
+ podDisruptionBudget:
+ # -- Enable creation of a PodDisruptionBudget for the zot pods.
+ enabled: false
+ # -- Minimum number/percentage of pods that must remain available during a
+ # disruption. Mutually exclusive with `maxUnavailable`.
+ minAvailable: null
+ # -- Maximum number/percentage of pods that can be unavailable during a
+ # disruption. Mutually exclusive with `minAvailable`.
+ maxUnavailable: null
+ # -- Node selector for pod assignment. Rendered through `tpl`, so values may
+ # contain Helm template expressions (e.g. `{{ .Values.global.pool }}`); a value
+ # with no `{{ }}` markers is emitted unchanged. Do not template untrusted input.
+ # To output a literal brace, escape it, e.g. `{{ "{{" }}`.
+ nodeSelector: {}
+ # -- Affinity rules for pod assignment. Also rendered through `tpl` (same
+ # escaping / untrusted-input note as nodeSelector above).
+ affinity: {}
+ # -- Tolerations for pod assignment. Also rendered through `tpl` (same
+ # escaping / untrusted-input note as nodeSelector above).
+ tolerations: []
# Metrics configuration
# NOTE: need enable metric extension in config.json
metrics:
Full Component Release Notes
The following table lists all changes made to core components in this PaletteAI release.
Per-component changes in 1.4.0
| Component | Tag | Notes |
|---|---|---|
| brush | brush/v0.5.30 | Dependency Updates
|
| brush | brush/v0.5.31 | Bug Fixes
Other
Performance
Dependency Updates
|
| brush | brush/v0.5.32 | Dependency Updates
|
| brush | brush/v0.5.33 | Dependency Updates
|
| brush | brush/v0.5.34 | Bug Fixes
Dependency Updates
|
| canvas | canvas/v0.6.27 | Features
Bug Fixes
|
| canvas | canvas/v0.6.28 | Features
Bug Fixes
Other
Docs
Dependency Updates
Refactoring
|
| canvas | canvas/v0.6.29 | Features
Bug Fixes
Other
Refactoring
|
| canvas | canvas/v0.6.30 | Features
Bug Fixes
Docs
|
| curator | curator/v0.0.8 | Dependency Updates
|
| curator | curator/v0.0.9 | Features
Bug Fixes
Other
Dependency Updates
|
| curator | curator/v0.0.10 | Dependency Updates
|
| curator | curator/v0.0.11 | Bug Fixes
Dependency Updates
|
| frisket | frisket/v0.1.6 | Bug Fixes
Other
|
| frisket | frisket/v0.1.7 | Features
Bug Fixes
Other
Dependency Updates
|
| frisket | frisket/v0.1.8 | Dependency Updates
|
| frisket | frisket/v0.1.9 | Dependency Updates
|
| frisket | frisket/v0.1.10 | Features
Bug Fixes
|
| hue | hue/v0.12.35 | Features
Bug Fixes
Docs
Dependency Updates
|
| hue | hue/v0.12.36 | Features
Bug Fixes
Other
Docs
Performance
Dependency Updates
Refactoring
|
| hue | hue/v0.12.37 | Features
Bug Fixes
Dependency Updates
Refactoring
|
| hue | hue/v0.12.38 | Features
Bug Fixes
Other
Dependency Updates
|
| mural-crds | mural-crds/v0.7.23 | Bug Fixes
|
| mural-crds | mural-crds/v0.7.24 | Features
Bug Fixes
Dependency Updates
Refactoring
|
| mural-crds | mural-crds/v0.7.25 | Features
Bug Fixes
Other
|
| mural-crds | mural-crds/v0.7.26 | Features
|