Changelog
- c8d3a3ef43930ede0e970b515d3bc8d87dc56886: Add IAM auth to audit logging (#7453) (@rmweir)
- 62b020a30852ec2dfac996daf23df1d9839401fb: Add vcluster.com/pause-deploy annotation for node providers (#7782) (@squ94wk)
- 24ea04ab9988b4a428669ced157a5bd74c52584b: Address highly critical bot concern ( <>)
- 6e1f920862f40c377b83c10994e2e7f97129b9bd: App instances (#7632) (@FabianKramm)
- f066cf458510d8f4ec99891d457db490d657770e: Bump metal3 chart default version (#7600) (@squ94wk)
- 35f3d008706962a4f62f076e824784b9d5125f25: CTO-151 Metal3 Netris integration (#7569) (@squ94wk)
- 81d50870610b52ac3a7365fa3d965bbb160869cd: CTO-156 vMetal UX improvements (#7511) (@squ94wk)
- 7d2c949c3b9a2c6f9f7be371a0d40e1912dc41fa: Fix up some details on breadcrumb & upgrade bar ( <>)
- faee1c04d053540d9d9ce98609838a8c678142cf: Fix: Netris TOCTOU race (#7624) (@squ94wk)
- 75b90d55eef7c6dc89ba6aa1aa9e89309fb42bfc: Fix: delete dead lock for NodeClaim with non-existent NodeEnvironment (#7608) (@squ94wk)
- 2ea88247d1a2fae6c150ba8e0e6de64b0d2535d2: Handle intermittent node provider errors gracefully (#7718) (@squ94wk)
- 3c6e6afc65e1f176d1f5d36bdecbcc96433f2687: Make Multus DaemonSet resources configurable (#7721) (@squ94wk)
- 42713e319fa0337fd2ad703d090ca0e72ab1969e: Remove unnecessary border color prop ( <>)
- ebed1652c81bbad9b4f90e0aa4ebaadf5245c7f1: Support KubeVirt binding plugins through properties (#7778) (@squ94wk)
- 4fc98a296d8b0e38a1c6ac10bf2e255c7e6f40cd: Tidy up cluster table links column ( <>)
- d8f4a9d3cab38d9753cb48cbe2045600b9059e84: Updates chart logo to match vcluster, we dont use loft branding anymore (#6892) (@cbron)
- 0b8b169b8477315bf3fdd4416a191d60814cbdbb: [4.12] Update DefaultVClusterVersion to 0.37.0 (#8131) (@deniseschannon)
- 11ebdba830b04fcb99e53114c63a992b3470d019: [release-4.12] ENG-13034 fix node bootstrap templates can read the platforms (#8779) (#8912) (@loft-bot)
- b76dc7ec58377b42a3fba80f1c6354d785612bd1: [release-4.12] ENGCP-1687 - keep peers that reconnected through another replica (#8606) (#8643) (@loft-bot)
- 5d22ca51d93cd4122e2611a4dd61b85ec2ddb910: [release-4.12] chore(deps): bump opencost chart to 2.5.32 (opencost 1.121.3) | fix(docker): bump opentofu to 1.13.2 (#9093) (@loft-bot)
- daa0a9143244c3ff2712a05b997ee9550a2a2ad1: [release-4.12] chore(deps): pin the kine image by digest (#8959) (#9137) (@loft-bot)
- 3fc23e16027e62f0d708b095c3a9e675162f0443: [release-4.12] chore(observability): bump gateway images to 0.2.0 (#8926) (#8953) (@loft-bot)
- edf6de8082680e9c83166791711aad55f3c0d38b: [release-4.12] ci: convert release pipeline to dispatcher + tag-dispatched validators (#7829) (#8415) (@sydorovdmytro)
- 21389083016ba6305195027e1fb0ea5efa98d306: [release-4.12] ci: point free-disk-space at its new owner lumbroso-commons (#9159) (#9165) (@loft-bot)
- 7e54d423df16590e8a2313a63f1fe87e1783ff1e: [release-4.12] feat(argocd): let users set labels on registered clusters (#8302) (#8390) (@loft-bot)
- 62bfd1aa1a41cacce8fef2d5fdaa10bbdd4b3482: [release-4.12] feat(audit): record login and access key events (#8082) (#8424) (@loft-bot)
- a583a37a3dcd7749a8d9961d830a982f8eb27376: [release-4.12] feat(backup): include platform identity secrets and VCI serviceUID; keep the UI backup/restore path unchanged (#8710) (#8719) (@dwelc)
- 2ef6a13539463f3471df0904910671d28ded80af: [release-4.12] feat(stacks): embed run:ai manifests (#7917) (#7957) (@loft-bot)
- ebbd9aca48c5b079a7bda8a4ee8d29630bfda70b: [release-4.12] feat: admin user recovery (#8177) (#8423) (@loft-bot)
- f418a43a909778bd186ff9b5877a4dfcaab0eeac: [release-4.12] fix(agent): delete only a namespace the instance owns (#9126) (#9151) (@loft-bot)
- c5a354d6683857aac8827459f6183e5674420471: [release-4.12] fix(argocd): wait for the tenant cluster before registering it with Argo CD (#8403) (#8571) (@loft-bot)
- e25484d5d9bb32e5e4a1a4c0621df6cd6fcaa626: [release-4.12] fix(projectsecret): sync shared secrets only into project secrets in existing project namespaces (#9010) (#9102) (@loft-bot)
- 9c3502fef85b1728acaa34f1819846a13e0b7b46: [release-4.12] fix(quota): prune deleted clusters from per-user quota usage (#8693) (#8727) (@loft-bot)
- 78e65aa16bb4f15f90ea6a5a7ca85430b5fa69ec: [release-4.12] fix(spaceinstance): only space import may set the is-imported annotation (#9113) (#9190) (@seanschneeweiss)
- 99bdb6dbb4919e3625e86863e24a55093fc14e35: [release-4.12] fix(stack): add stacktemplates to management and core roles (#7968) (#7970) (@loft-bot)
- b946188924df9048f50404bc3343b8108e33e9be: [release-4.12] fix(stacks): read task outputs with the stack owner's rights (#8813) (@loft-bot)
- 717509e9a4a3e3b0acb8f14cb22ef5e486d390c1: [release-4.12] fix(tailscale): bound and fail over network peer dials (#8127) (#8228) (@loft-bot)
- d612cac0312dc6392d02e6086263e62295a74329: [release-4.12] fix(tailscale): mesh DERP replicas on pod networks inside 100.64.0.0/10 (#8613) (#8630) (@loft-bot)
- a307cd9afb9bf3de0c457b4317ebba9d9ee06638: [release-4.12] fix: improve errors and the deploy log (#8236) (#8808) (@loft-bot)
- 7d3cec9cae12ff9bb3d8b31bf4a9a8c13483fd7f: [release-4.12] stack tasks failure reasons visibility in status (#8353) (#8433) (@loft-bot)
- 666c6940d2bbd44f6c5c9b07fa0ad20545eaa4b2: add e2e test coverage for node profiles (#7653) (@neogopher)
- 0d92e6f75e07fd31b7fe552cba3445492848b873: adds: support for s3 encryption (#7629) (@jjaferson)
- c8a59442a156194001502382419d65ef1411d001: build(deps): drop redundant k8s.io/client-go fork replace (@lizardruss)
- 2ce54505ee1ab42f9df3e3e9465afcbaa9055bce: chore(chart): bump loft chart audit sidecar image to alpine 3.24 (#8921) (@loft-bot)
- 572f7e6eaaf90d9e727c244e6cef149787662328: chore(cve-fix): bump helm and prometheus to patch CVEs (#7788) (#8006) (@loft-bot)
- c8b4e564dceac8be022da9c815d3a740fb058285: chore(cve-fixes): bump vulnerable deps in otel, opentofu, kube, opencost, prometheus, and kine (#7512) (@neogopher)
- e123c72bc79fe1f5261e3b25f9b2f2b8b3c29eba: chore(deps): bump Go to 1.26.10 and update Alpine to include eMudhra CA compromise fixes (#8782) (#8933) (@loft-bot)
- bbc6eab153f76d7d0c4473375c5af50cb6bbfb8b: chore(deps): bump docker/login-action from 3 to 4 (#6867) (@dependabot[bot])
- 15da6a4e6f1385447b0fa34c1dfc91784512652a: chore(deps): bump embedded kubernetes to v1.36.6 for emudhra ca compromise (@kaihulme)
- e5659da10a6c759d11e0c029e3176cd6a8ff8f7e: chore(deps): bump kine to v0.16.5.vcluster.1 (#8923) (@kaihulme)
- 7b81d139643f4e1b4c281b0c4c6948c858f4dd6b: chore(deps): bump opentofu to 1.12.11 (@kaihulme)
- 432d5caa86211506dc29a43721c3434e3d2f22da: chore(deps): bump prometheus chart to 29.40.0 (#9060) (@kaihulme)
- ccff1d5a6eee99e980e598a9770438d49be517f4: chore(deps): move etcd module set back to v3.6.14 (#7706) (@johannesfrey)
- 1fdcf1d8577f39289fb36a0de1bbe1b038b216e8: chore(deps): update dependency esbuild to v0.28.1 [security] (#7883) (@renovate[bot])
- e6567281bc3a1253af540d63a8c4d76c7d071e09: chore(deps): update module github.com/google/cel-go to v0.29.0 [security] (@renovate[bot])
- ce800f9fbf83f70d84e1ccfab099e19c4f453c6f: chore(e2e): re-pin e2e-framework to main (@roehrijn)
- 83217836e836e4e699a4fa9d05e37c1bc7687803: chore(observability): bump gateway images to 0.2.1 (#8955) (@loft-bot)
- 221c9ba44bc54c96586d3f6adca81ff3a9c5acde: chore(observability): remove unused node-exporter, kube-state-metrics (#7532) (@seanschneeweiss)
- da5e2ea4be714b97fbfbd92be25af2fe79c41791: chore(observability): request, limits for collector, grafana, prometheus (#7617) (@seanschneeweiss)
- 8a1c14d962e5082a2e52a7dc9295712ae6b03429: chore(release): set minimum vcluster version tag to v0.37.3 (#8493) (@flomedja)
- 395054fa78860a70b10e51ac9b6c57b2df70112b: chore(renovate): sync backport base branches to active releases (#7560) (@loft-bot)
- 6853c483f77db2655d14f49a4f2155b590d38df4: chore: Add UI prerequisites to README.md (@PRTTMPRPHT)
- b7896596f39c5757b2c436d7e079ee1e29a8db9f: chore: Remove some unused files (@PRTTMPRPHT)
- 96f29a27e61a5cad99bd5ac5ef02c2ee2683c56d: chore: Seal the experimental features for prod localhost sessions (@PRTTMPRPHT)
- f293a4db787b0d4c862181e8009f4bf0d6b72cde: chore: Upgrade to TypeScript 7 (@PRTTMPRPHT)
- afdebd2b05f1206f6049d0f8cac7df10eb01831a: chore: Upgrade to vite 7 (@PRTTMPRPHT)
- 06dd26d59341878434ebc1c1feb8c106fa23b9b4: chore: Upgrade vitest (@PRTTMPRPHT)
- 421ad20d5b78d2589e282e48b661d780eda97399: chore: bump DefaultVClusterVersion to 0.37.1 on release-4.12 (@claude)
- 1bb3141f491b61de61b939b22e62e18dd2d2f106: chore: bump default vcluster version to 0.36.1 (Claude Sonnet 5 noreply@anthropic.com)
- c1db51be53dfd6c7e69b383731bf5e2ecb374551: chore: bump vCluster dependency (#7877) (@cbron)
- a751e5d314eb2fe5cbdea5d634a4a63a5507aff6: chore: bump vcluster version to 0.37.4 (@claude)
- 40becf7e77df7f4ddc23428572ba3af1f50b0cb1: chore: bump vcluster version to 0.37.5 (@claude)
- 833d7124046efe4dec621234bf3b617f98e26f23: chore: bump vcluster version to 0.37.6 (#9076) (@deniseschannon)
- 691f4965a788fc0c4c3838a25331546e6a635f6a: chore: regenerate certified stacks for vcluster 0.37.5 (Claude Sonnet 5.5 noreply@anthropic.com)
- 74fd8f44a09bbe471887660a27744fc1042b37e0: chore: replace tech-leads with staff-engs in codeowners (#7786) (@janekbaraniewski)
- a015ade8e20c974dcfe891c8f7a7860bb51982c9: chore: update DefaultVClusterVersion to 0.37.0-alpha.1 (#7762) (@deniseschannon)
- 928162ef81edff9667012e6e3e2c16ba3f578f9e: chore: update certified stacks to v2.0.0 (@zerbitx)
- fe4e1e9ffd0c56052aee661e71e15a0850d66616: ci(backport): bump backport pin and wire linear-token (#7376) (@Piotr1215)
- d9033e921a9e2b83cee3cfcf5fbcafad2c946b7b: ci(code-freeze): authenticate freeze/unfreeze with org admin token (#7564) (@Piotr1215)
- 27edf8a455b9eabad33ab7adedb8cfd5b90824b4: ci(conflict-check): follow the conflict-check/v1 tag instead of a pinned sha (#8939) (#8944) (@loft-bot)
- c41f4265b97b86cd5ca2b3da26cfb7089dcb259b: ci(e2e): backport /test-e2e follow-ups to release-4.12 (#8543) (@vcauesantos)
- 641441cf6882a39f973d7a3af2032bd8c5d6bd97: ci(e2e): backport /test-e2e to release-4.12 (#8512) (@vcauesantos)
- 4209c9c1a5797a9be593c57cc2972c20500352f9: ci(e2e): certify pr ginkgo suite on release tags (#7290) (@sowmyav27)
- d91bdd609dfa9cbae987652bf73e0a91cd4eca89: ci(e2e): open /test-e2e checks with the ci app on release-4.12 (#8601) (@vcauesantos)
- e2dbf0e8d657fbd5662fb799b6a843db194b1173: ci(release): harden the linear sync workflow (#8678) (#8734) (@loft-bot)
- 0ef81f63e2399c2229ef6b892668239388852639: ci(release): let goreleaser generate the changelog (#8677) (#8685) (@loft-bot)
- 4f8cfcf809b8dca02f5003a3a07d7a2e4b248046: ci(release): run linear sync from a reusable workflow (#8668) (#8676) (@loft-bot)
- 709e3b2d789e74ab6696603c10293090656cc8b7: ci(release): take the source branch from cut-release instead of guessing it (#8739) (@sydorovdmytro)
- 325490a5a7d79a3d9d9c84bbeed48f2d00c36f9d: ci: accept repository_dispatch for platform pre-release checks (#7789) (@anvesh-loft)
- 26370a0d66f0855ec45c00112ecadb963593faa9: ci: bound resolved platform base below the upgrade target (#7571) (@anvesh-loft)
- c396199b25bb91107233fdca3e896065120f1cd3: ci: bump actionlint reusable workflow pin (#7899) (@sydorovdmytro)
- ad28a183580de700a9189deb908980fa1ea36b2e: ci: bump e2e upgrade base and auto-track it (#7419) (@adriankabala)
- c2db078a59c1959f4b5bb60700309e44c508735c: ci: fix tilde expansion breaking base resolver for pre-release targets (#7583) (@anvesh-loft)
- 706e55f40d249656db63a3727f64c6c45ff6d86a: ci: grant checks and statuses read to the auto-approve caller (#7675) (@sydorovdmytro)
- 564e1d8a45e682b8a528ba40618917f3a9b722dd: ci: grant pull-requests: write to trigger_e2e_ginkgo caller (#7572) (@sowmyav27)
- 904639e02b7248fef1cb7bb56f98959b4e32c830: ci: install helm-unittest v1.2.1 for helm 4 (#9141) (#9173) (@loft-bot)
- b6acf1de6548389b3a35b6d8add2c06b32b687b4: ci: remove dev-vcluster slack notifications (#7745) (@sydorovdmytro)
- d11a92bdf3c5961e725b49b5899881524f64ace8: ci: remove repository_dispatch trigger from license-staging workflow (#7602) (@Piotr1215)
- 6ce6beb1df64dd04f0f0436a3f50e19796a04167: ci: rerun only failed e2e specs in the PR and nightly suites (#7775) (@adriankabala)
- 5003e2365127b0ae54cc24a543060589aeb291cd: ci: use per-base pr branch for go-licenses report (#7389) (@Piotr1215)
- adb678cbdae662da5623ce63827aed1a640e5b57: docs(e2e): trim verbose doc comments in diagnostics capture code (@roehrijn)
- 81702e3d7337ccdcfe8bf61370229626c63e6d13: feat(api): observability integration, connector, endpoint secret (#7633) (@seanschneeweiss)
- d27997f4087aa8575a00b5b4f2876629af80d177: feat(ci): auto-merge renovate branch sync prs (#7791) (@Piotr1215)
- e57fd71b9b81e8c01b5fcbc233f930ae0b0d9c1f: feat(ci): select e2e labels when creating prs (#7704) (@adriankabala)
- 81a6aba287281f3e87077f491adc126c9c309287: feat(logging): enable file logging for platform (#7781) (@neogopher)
- 4d190f6c5b0be90235ae1ef3880c68bd3bc4bb73: feat(metering): count non-NVIDIA accelerators in GPU usage (#7252) (@nprokopic)
- 134fe0262320963b59104fa4dd5bd38078ba8133: feat(pkg/accesskeys): create metrics-writer access key (#7634) (@seanschneeweiss)
- baace16bfc422d44ffdbe259dda5a17797da2902: feat(snapshot): drive standalone snapshots from the platform (#7715) (@mfranczy)
- 6d659c7d8f93dbaa32b8483bd625fa7605465742: feat(stack): add management API and validation for StackInstance and StackTemplate (#7716) (@flomedja)
- bd6bcfbdbfbe3c90d924c8bea244f6e6a83822b1: feat(stack): add storage api types for StackInstance and StackTemplate (#7713) (@flomedja)
- 352c70db4e2c5163636354be076ab6384b716e0d: feat(stack): add task outputs for stack instances (#7727) (#7894) (@loft-bot)
- cb1040b0fab1b758673b40df47ee137f1637bb20: feat(stack): add the App task type for stack instances (#7783) (#7912) (@loft-bot)
- 0fa9f6cc8d7a7dabdd1a80739d0a65a6257442f7: feat(stack): add the stack controller for ArgoCD tasks (#7723) (@flomedja)
- 78f62032561b063a7a46a7913ba5ac8e1dabc887: feat(stack): deploy stacks from a virtual cluster's vcluster.yaml (#7869) (#7907) (@loft-bot)
- 027169ecbdad016b345ceb4c1bbd05dfa9394179: feat(stacks): Allow jsonPaths to be conditionally rendered. (#7975) (#7976) (@loft-bot)
- 13f3652136dcdf3cc77e8a89ac5a01806ee08707: feat(stacks): let certified stacks ship ArgoCD templates (#8389) (#8425) (@loft-bot)
- 17555d7cd24e06270b11a408fed4bb287c382dc6: feat(tenant): add tenants/config subresource for per-tenant configuration (#7681) (@lizardruss)
- ed651909d7bc66ac134eca9cd3c254320a6a3ec7: feat(tenant): add the tenant management resource (#7671) (@lizardruss)
- 7df99324fd5426abc5e6d678d2f3db91f7e77ab0: feat(ui) - auto nodes information and next version gating (@andyluak)
- ebf7fde50db5755c4239e2a1716149064320e296: feat(ui) - experimental features (@andyluak)
- 01fa3d222276a2eb0e7aa116c8f00623ebeccfd4: feat(ui) - fix stacks navigation (#8057) (@loft-bot)
- c7feaf73679527cbf791b222af72b1c327c33aaf: feat(ui) - graph fixes (@andyluak)
- abddf98ae3cc546f06bba5b93b13075a93ac9060: feat(ui) - loft bot review (@andyluak)
- 04f261964ce941adb00ddfea08fd9fbd601b590e: feat(ui) - node assigment component (@andyluak)
- a9c30dcf3b3db0329e4a28abdd5b57d93c49e2d5: feat(ui) - node profile table actions (@andyluak)
- 69f8ecd8523fc7816435c782a75473c9c91d9ee6: feat(ui) - pr review (@andyluak)
- d7c4065a95260aa04f34a9b824aded20bd83cec8: feat(ui) - pr review (@andyluak)
- f6a8cb5a636270eb45b3c2b769566edbab78a3b8: feat(ui) - pr review (@andyluak)
- f6367351ed92e5f4f7cbeb54c0861fe93e2a1c50: feat(ui) - pr review (@andyluak)
- deef505985d81fda8db31970d40bfa3ecc03042d: feat(ui) - pr review (@andyluak)
- 0158bb55db029680435b8818af96406b2a0f8cec: feat(ui) - pr review (@andyluak)
- 31eed3f4013a898306674ecb5fa3a2120f87695a: feat(ui) - remove broken test (@andyluak)
- 1786481405f6a8fb53d8d4b7033f8aedd8243b04: feat(ui) - tenancy graph qa changes (@andyluak)
- 4adf16c9dc84ae006ab90f9df2aa6c9d580ca222: feat(ui) - tenant graph view (@andyluak)
- b4e3fb7a9ad4fdd66c29e9b9ae4852c9fdf9855f: feat(ui): add log search filtering, match highlights and result counter (@andyluak)
- 0ae8560bb1907bf56e778454a66a479587ca594b: feat(ui): configure automatic snapshots for standalone tenant clusters (#7737) (@mfranczy)
- 512426eca2566919644fcd5ee7a731af3b184902: feat(ui): recognize Run:ai custom links by label and add its icon (@andyluak)
- 89ad5f69e4f8358e2a7a08b753f8c1f87bcd1f38: feat(ui): stacks (@andyluak)
- 8ceb91dcfc090267dc1b4ce34c76b1d20e3aa782: feat(ui): warn when node profiles require a vCluster upgrade (@andyluak)
- 7da6e6f8477e86aaa6e5bfbb98bee78f49f9d47e: feat: Add additional filters to bare metal hosts (@PRTTMPRPHT)
- d99d3b04daca24d8fe1ca7804064140f4b510274: feat: Add basic views and interactions for multi tenancy (@PRTTMPRPHT)
- 3fff7ea0d96766d2e6ed6a4b0c4e25ffecc1cfdf: feat: Add loading spinner to pod logs when the pod is still starting (@PRTTMPRPHT)
- 45caeeb7518850283066d9ca87c54627baf6b52b: feat: Add machine overview visualization components (@PRTTMPRPHT)
- a4b4b39a3cf868c3c853e6709b8deab0586ade3f: feat: Add multi progress and legend primitives (@PRTTMPRPHT)
- 5a60ab063f7d2c874f91a63d7f498b3797204168: feat: Align navigation items between control plane cluster details and cluster namespace details (@PRTTMPRPHT)
- 444a96e3debf5c37ecd72a574bc0d48376ee98f0: feat: Change all "CRD" labels to read "CR" (@PRTTMPRPHT)
- 7692686bacb6e3a7624942d6ebe5819111aeccc4: feat: Change navigation to group some pages and free space in the sidebar (@PRTTMPRPHT)
- ddf87c05939bfab54bfd360d07a6240cb0756960: feat: Implement some defaults that should lessen API request pressure (@PRTTMPRPHT)
- a453ef5759a67988fd5d1dd9b549294592fb3e69: feat: Move cron tooltip into description for snapshots (@PRTTMPRPHT)
- d8f09b3662c7a0b07eba975398e3ca4caef271f6: feat: add app instances (#7448) (@FabianKramm)
- c5ebe5b3161b858fa97b4c9a81d944b293583af3: feat: add namespace strategy (#7643) (@FabianKramm)
- 3127bff46251d92cb638817c4f22c7078ddf6138: feat: auto snapshots for standalone - credentials endpoint (#7712) (@mfranczy)
- f07517d2b2bb6db1c6780b9cd36f3f2b7cd1d98c: feat: vcluster device operator + kubevirt refactor (#7582) (@FabianKramm)
- 775ded40a0f4345f49726cab220a7a5c56777040: fix(accesskeys): trust owner reference on transient cache miss (ENGPLAT-709) (@roehrijn)
- 22b8a9d44007983064cc02161672bbf0985fcdec: fix(agent): reload renewed webhook certificates without restart (#7874) (@johannesfrey)
- a16aefd1844ef2f912665865778cda7eb1da9f38: fix(api): allow schemeless host in get kubeconfig request (#7484) (@r0bnet)
- 11033c9e51e201ea4c1782dd800a8dcf8511cc62: fix(apiserver): stop applying caller access-key scope to reviewed sar subjects (#7728) (@johannesfrey)
- 177ed3426b1209b5d52d38709cd81c30bcbf37de: fix(app-instance): Unblock the AppInstance controller from removing finalizers if it errors with the log secret (#7888) (@loft-bot)
- 37623c3eb3042e01aa710316f0ff091e7b88303d: fix(appinstance): reserve releases and retain deployed namespaces (@zerbitx)
- 7f2f3b3569b8333f1fbe4a797051ca608948a281: fix(apps): wait for an app's jobs before reporting success (#7996) (#7997) (@loft-bot)
- 7e937343409177696f4953aa15c2192ae30f2d3b: fix(argocd): Persist argoCD connection to avoid creating new connection at each request (#7523) (@flomedja)
- e0d49f9786cabb8a2e19a3bf363492c159d60e9d: fix(argocd): avoid name collisions when multiples platforms share an ArgoCD backend and have identically (#7152) (@flomedja)
- 5c5d76f8f74d35ab7e15d34756f7b6b39fdb465f: fix(argocd): enable DCGM XID and NVLink error metrics (#7552) (@seanschneeweiss)
- 4c72e27250524691c858f9d0c36056010b75a26b: fix(argocd): fix nvsentinel default image version (#7499) (@flomedja)
- a8980909784e8a8d0a92bdd8be687dc5f85859a3: fix(backport): reference existing LINEAR_TOKEN secret so sub-issue linking runs (#7491) (@Piotr1215)
- f1c83545649bdd51f4d86d53d55c87275b518751: fix(backport): resolve stack template project conflicts (@zerbitx)
- c7393cc0952f40d07f842a6b5f5f2c27972f88c4: fix(ci): resolve platform base by semver, not publish date (#7461) (@sowmyav27)
- 267bb5e4c65b9583a7a88606342474b419fb4888: fix(ci): skip the mirror release step on sync push runs (#8833) (#8857) (@loft-bot)
- b2b1bce7684c3dd771fabbc2edb01412c6fbd3c1: fix(ci): stop devspace plugin sync from blocking releases (#8655) (#8664) (@loft-bot)
- 8ebfe128444a96d45c3f00cdb8572482d285f82d: fix(codeowners): restore auto-nodes review routing (#8142) (@Piotr1215)
- b803a7bb5ec724aaf66ccedb7662f1bdb69e1012: fix(deps): resolve vendoring (@zerbitx)
- 51bb6a09d8446975f30a162d5c5479b099f222b6: fix(deps): sync golang.org/x/sync to v0.22.0 across go.work modules (@vcauesantos)
- 78f1d8010e31c93dff7563a6df762b303f59dd87: fix(deps): update dependency dompurify to v3.4.12 [security] (#7409) (@renovate[bot])
- ef5ef5dfad8617980e8313c1ab82a749fb654ecf: fix(deps): update dependency js-cookie to v3.0.7 [security] (#7397) (@renovate[bot])
- 9a20818bfb02e5bfe41e529c53abdfae03246904: fix(deps): update gomod security updates [security] (@renovate[bot])
- e3d52262f00c2457e7d374afdac1778013de660f: fix(deps): update module oras.land/oras-go/v2 to v2.6.2 [security] (@renovate[bot])
- 905e14fe2a29cf82d195b44f25eb9e4296db1d82: fix(deps): update npm security updates [security] (#7882) (@renovate[bot])
- 40d3cf003d3001153439758824be0dd3587a4915: fix(e2e): fix helm client ingress-nginx cleanup flake (ENGQA-1487) (#7658) (@sowmyav27)
- 4ddb6c462b275389c047b87b6cbcbf77b1d8e8a6: fix(e2e): guarantee durable on-failure diagnostics for standalone and auto-nodes specs (@roehrijn)
- ba508eda75bcccd23d6f337114b0ded47960510d: fix(e2e): limit bundled template check to presence (#7464) (@seanschneeweiss)
- 74818beb4e423b397014a02268aba21181f18c1c: fix(e2e): run kc-free log fallback tiers when standalone kube client is nil (@roehrijn)
- 7ddb035e2d45d6adab49e01f763bff9ac9a23899: fix(e2e): surface degraded fallback in FirstWorking enumerator (@roehrijn)
- 13d08c261bbea0517a953d09d05a8be47746c5c9: fix(e2e): use explicit name for central-hostpath-mapper appinstance (#7544) (@adriankabala)
- 8c0d60c63ceebcb08e3ce673519eb1853a62b725: fix(editor): stop flagging valid Helm-templated values as YAML errors (@andyluak)
- e4acf2b161abbf79c92b730f357f02312ea44f2a: fix(loftrouter): bound reconnect rate so an unhealthy instance can't storm a router (#7556) (@Piotr1215)
- 81454fea77162d63e43341a121f32b2796f48042: fix(logging): log patch bodies and helm values only at debug level (#8776) (@loft-bot)
- 9bb481c717d7e72bbdc903ac29895cd53fa8c95c: fix(metrics): de-duplicate identical series when merging metric sources (#7457) (@Piotr1215)
- 722aaf46c61ab139714f1b87ed48d70416019be2: fix(observability): consistent filtering for GPU dashboard (#7478) (@seanschneeweiss)
- 76a3b3d9804f387d2355576d5ab86994a5d6336d: fix(observability): disable prometheus config-reload sidecar incompatible with mtls (#7489) (@johannesfrey)
- e1c807e46644378a1e08fe0f271ed4cfcae486a7: fix(observability): dont nest platform in grafana iframe (#7577) (@seanschneeweiss)
- 4ad8f633738033fd8f38b0fc282fadbc4cd8a277: fix(observability): exclude control plane cluster from fleet tenant panels (#7533) (@johannesfrey)
- 06b1449877630109e3f0f547fb93f2bd1e90265d: fix(observability): fall back to 0 for empty quarantined nodes stat (#7476) (@seanschneeweiss)
- 0d2099821a3e4330cd8dd3da37d8d4ef8e23d6f9: fix(observability): make FIA listen address scrapable by OTEL (#7498) (@seanschneeweiss)
- 326be2ba1ea7eb62a0855d4222bceeaf89acbba8: fix(observability): normalize trailing slash in grafana platformHost (#7524) (@johannesfrey)
- 70e2ae3d5257b6527f10891c62b9032ca4633193: fix(observability): otlp endpoint param required, improve description (#7526) (@seanschneeweiss)
- 854c6629dff2f51215835542372c33a106278128: fix(observability): parameterize the fleet app deploy namespace (#7456) (@johannesfrey)
- f76b07eff43737a0ef162682127480986e549881: fix(observability): show not configured instead of not found for missing connector (#7481) (@seanschneeweiss)
- 20f25924693a455048bdbb24b01303edb08c62c6: fix(observability): stop setting empty MANAGEMENT_SERVER_NAME on gateway (#7493) (@johannesfrey)
- f37a048b589809d1fc61b4af5f51add5be12c011: fix(observability): synthesize grafana sso email fallback for emailless admin (#7480) (@johannesfrey)
- 02fe648058e4fbbb3776074c80d7540abc218800: fix(renovate): group vitest and @vitest/browser updates (#7666) (@vcauesantos)
- ba5e4caf20b184c91d7d314c7c136285420a5674: fix(renovate): group vulnerabilities and automate patch updates (#7821) (@vcauesantos)
- 98861eb463c2d32f64cd755a698a857ffc7035bd: fix(security): check chart secrets when saving an App or StackTemplate (#8537) (@flomedja)
- 1f597b320013cc0032a19cafa4f00b5e31839c34: fix(sleepmode): let onboarded tenant clusters auto-sleep despite argocd polling (#7539) (@flomedja)
- dff6752685504d24cd96c5ca697e19e00f451e36: fix(sleepmode): set wake service port for Istio virtual service (#7959) (@loft-bot)
- c3a2d0db4fe91d8ed620467e7cfcbc87c20b2baa: fix(stack): add get verb to stacktemplates in admin core roles (#7998) (#8001) (@loft-bot)
- a30793082f68b8ab69bb7830a196cfa5717429de: fix(stack): reject inline app release name changes (@zerbitx)
- 2fdca7ca6e1ecae134bd5b836ce398009ec93673: fix(stack): reject jsonPaths without braces (#7980) (#7983) (@loft-bot)
- fe0e80179b0f0c07a8a3c4f8f852b31a48c173e8: fix(stack): report inline app release namespace conflicts (@zerbitx)
- 758f8721e72539e8906a9cc18a199322fd157425: fix(stack): use platform.vcluster.com/stack-retry for ui (#7973) (#7974) (@loft-bot)
- f528130f1249a44d823f07461e89f0b263a4c066: fix(stacks): bundle every certified stack from loft-sh/vcluster-stacks (@janekbaraniewski)
- ce757359be809347eac016426f3fb76d9489f66b: fix(stacks): fix stack validation issues and centralize validation functions (#7934) (#8016) (@loft-bot)
- ed3423dd7aaa6c8d8a14e9968e6b96dfaf077959: fix(stacks): only accept Retain or Prune as a stack's prune policy (#7960) (#7971) (@loft-bot)
- 91be5970985f86ab26fdbe7aec23950a45f977fd: fix(stacks): run the certified stack ingress check with the Platform image (#8055) (#8056) (@loft-bot)
- e573bb48e129020659b5e60901fc0328f151bbed: fix(stacks): say why a stack waits when its outputs name is taken (#8285) (#8288) (@loft-bot)
- c6a087cf0da6c21770898fb8d47389d0cdcc25b3: fix(stacks): stop the stack name from making helm release names too long (#8018) (#8019) (@loft-bot)
- 13358c09adfb3919923d89a37e8babfbe0fea991: fix(stacks): validate StackTemplate references (@zerbitx)
- 15caec6feb025bcc4608f8d7f67922f79771a896: fix(tailscale): process networkpeer deletes delivered as tombstones (#7616) (@rlmcpherson)
- e09e4552cf5493903d69c0c67a7b4f78b9d22355: fix(tailscale): reap stale network peers left online by lost cleanup (#7618) (@rlmcpherson)
- 87c277ba31fb85ce47101c0e2858ec89e67b2504: fix(templates): handle float64 number parameter values in FillParameters (@andyluak)
- bbd5cd0096cf5f9b5e89400942543d259543ee60: fix(templates): preserve RE2 validation behavior (@zerbitx)
- c61314df02b0e9571904b52babc2d05c1bc78995: fix(templates): support lookahead regex (@zerbitx)
- 7e6796e40a6a210c4b7c5892b9356a241c6fa03d: fix(toggles): make clicking toggle labels toggle the control (@andyluak)
- cd5e26bdf2cbb69b69828006cd721dae8061a837: fix(ui): correct node profiles navigation and allow-all selection (@andyluak)
- 7d0d9a0de9da4abfae169a7e02bb5ddeef8f83a8: fix(ui): drop snapshots beta badge, document OCI path, make volume snapshots warning actionable (@andyluak)
- e737dc66c3293c73928119dece2b7e3fd1c4a1cd: fix(ui): hide tenancy graph when its inputs cannot be resolved (@andyluak)
- 25901d2d8c9a12aef775c408938551f74dd5311b: fix(ui): hide the Stacks section for vCluster versions without deploy.stacks (@andyluak)
- 77bb00e9d31e57e8d5a3753ebad8f3c3a96716ff: fix(ui): keep a stack's applications out of reach of the delete actions (@andyluak)
- dab3576972a0081d4e9da7fb1e572083760a2aa7: fix(ui): lock a stack's destination to the page its sheet was opened from (@andyluak)
- 05c34e51dc2064d8d05d5ba4e77212de38acd3f1: fix(ui): make auto nodes node pool names unique across providers (@andyluak)
- 8f1738394a4cbedd2724b46dd423240373f1c84c: fix(ui): mask stack password parameters in the computed configuration (@andyluak)
- 189729ce6854044f1f5824546744a4a9aab925ab: fix(ui): match Run:ai custom link icon by label, not URL (@andyluak)
- 64c282839c3b3519b817e54628680f32a857d2db: fix(ui): match custom link icons on brand keys only (@andyluak)
- 5d0dace93be47858d0657f5c3423e27bb0a0f888: fix(ui): patch Argo CD applications instead of replacing them (@andyluak)
- e269bbad37ab216ec851cad9cda749e6ad9a59d7: fix(ui): point volume snapshots guidance at the template for template-managed clusters (@andyluak)
- 9b8474ae7d582fc1458b5e56f631326861e24ff6: fix(ui): private node profiles use 0.36 types and correct placement (@andyluak)
- b1f8bf3c7435d51c6bc09727883ef12e7a67b1b6: fix(ui): show a stack task's status message before it fails (@andyluak)
- de076058defba5b282b07b1894ca112c9a196e97: fix(ui): show the application name for a task with no readable source (@andyluak)
- 3d26c82a880c246f6bd672417f970515d740fb0d: fix(ui): update default observability connector namespace to vcluster-platform (#7477) (@johannesfrey)
- 3692aeac2398186786973d70d6003a7af096e796: fix(ui): use the task's timeout field in isPristineTask (#7908) (#7909) (@loft-bot)
- 51cd3bc0ceb1f444ad373e2de42ef59c5517ef7c: fix: Add clear button for certificate secret names in observability form (@PRTTMPRPHT)
- 08d705b870678cd18119a29df8dd69257a2a9493: fix: Add missing validation errors to quick starts (@PRTTMPRPHT)
- d9b8a9ef82e1822051acf8b0d3e204be99cc6f32: fix: Add validation to namespace field in global secrets (@PRTTMPRPHT)
- 26d53e45a470561e993d496c29731adfd542cc49: fix: Ensure audit logging pages are properly feature gated (@PRTTMPRPHT)
- 178b6f4a40d3bacf96003f8e4c1ea41b6d8f310e: fix: Ensure auto-generated access rule is disabled in tenant cluster configuration (@PRTTMPRPHT)
- 62d43f33ad1b304f1e0e22898880b984076b82c1: fix: Fix 404 errors being logged on the details page of a stopped kubevirt VM (@PRTTMPRPHT)
- 4f99f742052d7fafd0b78d5b042fadb9bac78904: fix: Fix SheetFooter positioning (@PRTTMPRPHT)
- f745829131f2c2c9239f2e96fe27d0314fd50728: fix: Fix a couple dom structure issues (@PRTTMPRPHT)
- ecd0bae464f5bde5d6a5e887fd598c255423fd0c: fix: Fix app readme taking up too much horizontal space (@PRTTMPRPHT)
- 15df46cf6888a88bd1975d8eafd007e07ec6cb91: fix: Fix capitalization in "Show YAML" items (@PRTTMPRPHT)
- 61a503c5e1a79d6e69944b5f9b58def7d2bee505: fix: Fix double "Platform" in upgrade page (@PRTTMPRPHT)
- 754e429942836dacaa6d412718f785de32463074: fix: Fix infinite loading state of nodes table for pending tenant cluster (@PRTTMPRPHT)
- 96b1a90b112240d286b6e5991285f41a12ceb48b: fix: Fix missing active state on more dropdown in the sidebar (@PRTTMPRPHT)
- 0af70b78cb5a683c95e5d172c2452a17c3c48b01: fix: Fix observability tab visibility to check for available connector (@PRTTMPRPHT)
- 4e113fddf7e37e2d2d777f6a5df3560f108d5f8f: fix: Fix permission checks in get started section of status page (@PRTTMPRPHT)
- cff94e5cda938946b3143871caf7d07e9396c757: fix: Fix permissions for tenant cluster instance actions (@PRTTMPRPHT)
- e43073856ff4f53b607cd753a1aad3d463834cf8: fix: Fix refetch behavior of clusters list (@PRTTMPRPHT)
- fdcb096fb84c2e704038c966ad682e43c08622ec: fix: Fix some minor display issues in cluster details view (@PRTTMPRPHT)
- cb2fdc220f34adb26b72836e86a2a305b9c5d99a: fix: Fix some minor issues with copy in sleep mode section (@PRTTMPRPHT)
- 8f00028b51fa514940f81d8f8e218353343e9326: fix: Fix trial indicator appearance when primary color is the same as background color (@PRTTMPRPHT)
- d9fbc2553343f97d4e2e777beaf93eb96c6555d2: fix: Fix visibility of sidebar actions to treat sidebar focus correctly (@PRTTMPRPHT)
- 685cfc981ffd8314c74cb9a771ef9c0e247a89ba: fix: Fixed a redirect loop when platform is unhealthy (@PRTTMPRPHT)
- efae4496b6b0e0615a8c4465fd52010c270a4238: fix: Increase size of hitbox for checkboxes in tables (@PRTTMPRPHT)
- 22ebf9cc447b29345595c93c5cd5e311105a94f7: fix: Make sure nodes table is taking status values into account (@PRTTMPRPHT)
- d90b6a526db9b9eb7a04903d6dcc062da5e775a7: fix: Remove dead code in query client (@PRTTMPRPHT)
- a5029b659043203fcb2008e7683fadf10c12cf15: fix: Remove duplicate backing store selection in cluster creation wizard (@PRTTMPRPHT)
- 2d9da967763ea1e05f816b90a7a5926502c446cf: fix: Remove some dead code (@PRTTMPRPHT)
- 2bdafe43b61575f740e8074ab590a133fbdb1f23: fix: Replace deprecrated query lib call in CreateCustomClientDialog (@PRTTMPRPHT)
- 2611d44a329286de8257b4514684abcbb03df35a: fix: app instance improvements (#7626) (@FabianKramm)
- 16acaf0917710450a9416501c1e9e68f0a131b88: fix: app instances fixes + improvements (#7651) (@FabianKramm)
- f9ee0eff3b06fbff26c321f28bf84d6da52ed911: fix: app migration issue (#8218) (#8225) (@loft-bot)
- b3625db1d1c0f19058e12b71392b25738c8fb027: fix: bump certified stack templates to vcluster 0.37.1 (@claude)
- e4d3ff0526a03fda5ce1ad8a7ba23294addcfc09: fix: bump certified.Generation so the 0.37.1 template change reapplies (@claude)
- 771ef75b50c5dc36686adaced9b48785e8e13dd5: fix: check version order before installing anything (#7660) (@anvesh-loft)
- 95ed07643def445cc21e8e4ff00a0719d32cec4f: fix: debug shell - always show drop down (#7391) (@mfranczy)
- 6e81b08040571b6bed18516d9ce1da3ff8c542d0: fix: delete failed initial release on retry (#7772) (@FabianKramm)
- a665358ba3c91baca3305e5b14e587c3c9689756: fix: device operator & app instance improvements (#7620) (@FabianKramm)
- 2957c4fa052c2a542c55ec6f4c153602d6bb0f3e: fix: restore volume snapshot sync (#8088) (#8109) (@loft-bot)
- c5494a0718d5d42c80d9b08d87ed8353516c5668: fix: retention policy counting scheduled snapshots (#7642) (@jjaferson)
- 74ee7f89628f9fa439ab2a860b9ec002bb1583c7: fix: send one pre-release report with a section per suite (#7670) (@anvesh-loft)
- d6a4a12ba948fa517c2fbd667d486767e974d6d8: fix: show real versions and the failing stage in pre-release slack alerts (#7659) (@anvesh-loft)
- a744175054ecc1e334b12f6ec047d43c809591d8: fix: snapshot stuck in progress (#7436) (@jjaferson)
- 15961c08c46b5a0d8d024bc8bb5bcdf99be96489: fix: ts ipam overflowing (#7603) (@FabianKramm)
- 6e2bb2cd935936f7d5289c034cf8d3078923a604: kube-ovn NetworkEnvironment integration (#7794) (@squ94wk)
- 90405b0e0e53730d13c2bca67a4a5f955880b23c: licenses: update loft licenses (@zerbitx)
- 295ed563b08ea2e94b37e4afc45b1507fec53a3c: migrate certified stacks url away from v2 (#8025) (#8044) (@loft-bot)
- c4efc61fecf037b80777129c3ebea4e2d9725bec: refactor(stack): rename stack inputs to parameters (#7914) (#7915) (@loft-bot)
- 558c4f4be851126b1d09d9bcce5c096e0ecbdedd: refactor(ui): call a stack's parameters parameters everywhere (@andyluak)
- a91fb1ee861ce630c3c28e7bdb244a3e25c002d3: refactor: join command retry + template (#7674) (@FabianKramm)
- 3b5cbfd2675cce89573c0883e774f2b4d655e79f: test(e2e): add Azure Blob scheduled-snapshot variant to auto_snapshots (#7297) (@adriankabala)
- 753874abd8ae5aac11325e880b8a52f39996b7ad: test(e2e): add end-to-end tests for stacks (#8137) (@flomedja)
- 92507a985ce6127451a5d55c0493f325434edcb9: test(e2e): cover a platform token on a tenant cluster's direct endpoint (#7744) (@adriankabala)
- 7eea80031473bb01d1f35dc138812a6d5faf479e: test(e2e): cover app instance release name, owner access, immutability and log RBAC (#7641) (@sowmyav27)
- 898ff52e596d2335922f274bdb97aa0de92b03b4: test(e2e): de-flake the HA dead tunnel spec and dump node state on A12 restore failure (#8446) (#8691) (@sowmyav27)
- 6ad3badb196906c62eff69c0e80ef0b487ac2f0e: test(e2e): fix flaky specs from nightly 30136058233 (#7625) (@sowmyav27)
- cfc87032892ff1d2d1006504be401b7061c0e4b8: test(e2e): flake-proof hostpath-mapper path check and metrics access-key setup (#7450) (@sowmyav27)
- 3a0e4004ac85b82a4d887215351ecb1eb304181f: test(e2e): harden A11/A12 connected snapshot/restore against readiness flake (#7433) (@roehrijn)
- 0c6e8cd2bee058a939f6052369e0bab49741b208: test(e2e): node profile e2e tests (#7444) (@sowmyav27)
- 6fd1e6772def04e96c6db4d8062b820ef48d83ef: test(e2e): remove flaky phase assertion in argocd re-enable (#7647) (@seanschneeweiss)
- 01f96fa2331cfd6c3ff7e1edb91b6e1ca43389fa: test(e2e): scheduled snapshot retention, store verification, and restore round-trip (#7623) (@rlmcpherson)
- ed3779a516c9b4ce88d20ba3cfeb5e41894ef693: test(e2e): test cases for fleet observability (#7630) (@seanschneeweiss)
- 6a7c51e2430f412fb7c8fe1482691e7e24462dca: test(e2e): use shared specpriority from e2e-framework (@roehrijn)
- 53b1fe13f7733dc258ac44ade6a978581babdc00: test(node-profiles): preload k8s node bundle to remove GH-download flake (#7609) (@sowmyav27)
- 826798b5942cb67214e68c64692d6c4ee7eacab8: test(stack): check that one bad stack does not block the others (#8607) (#8627) (@loft-bot)
- fde31f9946f9d15049a7ca334278f0a9eab22b9f: validate that only manifests or chart can be set in app config (#8181) (#8244) (@loft-bot)