Others

  • Fixed

    • Derive the arm64 taint toleration from the effective kubernetes.io/arch node selector rather than from architecture alone. Pinning to arm64 with nodeSelector: {kubernetes.io/arch: arm64} and an empty architecture passed schema validation and rendered the selector with no toleration, so the pod stayed Pending forever against a tainted arm64 node pool with no render error. Either route is now safe.
    • Skip the generated toleration only when an existing one actually covers the arm64 taint. The previous uniq collapsed just a field-for-field identical entry, so an equivalent toleration written with operator: Exists, or with operator omitted since Equal is the API default, produced a duplicate. Coverage is now decided by key, effect, operator and value, so a kubernetes.io/arch=amd64 toleration no longer counts as covering arm64.
  • Added

    • Add architecture value ("" | amd64 | arm64) to pin the workload to a CPU architecture. Setting arm64 renders both the kubernetes.io/arch node selector and the toleration for the kubernetes.io/arch=arm64:NoSchedule taint that Giant Swarm arm64 node pools carry – both are required, and setting only one fails in a different, non-obvious way, so a single value drives both. Defaults to "", which renders nothing, so output is unchanged for existing users. The scheduling logic lives in the hello-world.podScheduling helper and merges with the explicit nodeSelector/tolerations values.

    Fixed

    • Allow keys in nodeSelector, which the generated schema rejected via additionalProperties: false – any entry failed with “additional properties ‘’ not allowed”. Same class of bug as the affinity/podSecurityContext fix in 3.0.4.
  • Fixed

    • Emit each of app.kubernetes.io/name and app.kubernetes.io/instance once per manifest.
  • Added

    • Add io.giantswarm.application.audience and io.giantswarm.application.managed chart annotations for Backstage visibility.
    • Push to the default catalog.

    Changed

    • Migrate chart annotations to OCI-compatible format (change application.giantswarm.io/team to io.giantswarm.application.team).
    • Update architect-orb to v6.12.0.
    • Regenerate .github/workflows/zz_generated.*.yaml via devctl to use the centralized reusable workflow, removing the Node-20 mindsers/changelog-reader-action dependency.
    • Regenerate values.schema.json for the strict schema configuration.
    • Configure gsoci.azurecr.io as the default container image registry.
  • Added

    • Add crash values to opt into staged failure injection for demos and testing: crash.enabled turns on a deliberate memory leak that drives a repeating OOMKill, with crash.rateBytesPerSec and crash.gracePeriod for tuning. Disabled by default.
    • Add extraEnv value to inject additional environment variables into the container. Defaults to [], so rendered output is unchanged for existing users.

    Changed

    • Update the helloworld image to 0.7.0 (and align appVersion), which ships the memory-leak support that crash.enabled drives.
  • Fixed

    • Allow full affinity and podSecurityContext values by setting additionalProperties: true on their $ref-based schema entries, which were previously rejecting all keys (e.g. affinity.podAntiAffinity).
  • Added

    • Artifact Hub metadata in Chart.yaml: maintainers, artifacthub.io/license and artifacthub.io/links annotations. (roadmap#3940)
  • Fixed

    • Specify additionalProperties for all annotation configuration options
  • Changed

    • Include all JSON schema for validating values in chart, by setting bundle: true in .schema.yaml

    Removed

    • Remove config value .podDisruptionBudget.enabled as it’s not compliant with K8s PodDisruption spec schema.
  • Changed

    • Update Helm chart values schema with additionalProperties: false on the root level.