github loft-sh/loft v5.0.0-alpha.12

pre-release3 hours ago

Changelog

  • c8d3a3ef43930ede0e970b515d3bc8d87dc56886: Add IAM auth to audit logging (#7453) (@rmweir)
  • 62b020a30852ec2dfac996daf23df1d9839401fb: Add vcluster.com/pause-deploy annotation for node providers (#7782) (@squ94wk)
  • 7ad1fe2e12b5052e57d25a93190df1fad91a1525: Add yarn install to dev-ui recipe (#8614) (@kaihulme)
  • 24ea04ab9988b4a428669ced157a5bd74c52584b: Address highly critical bot concern ( <>)
  • 6e1f920862f40c377b83c10994e2e7f97129b9bd: App instances (#7632) (@FabianKramm)
  • d13cc1493f2b1fdd22968d0a6bab3570308424c6: Automatically set neutron.enabled in metal3 chart (#7895) (@squ94wk)
  • 1e4f391750cc89531d04278a6ae383031e948a1e: Block NodeClaim destroy until node is drained (#7837) (@squ94wk)
  • f066cf458510d8f4ec99891d457db490d657770e: Bump metal3 chart default version (#7600) (@squ94wk)
  • 35f3d008706962a4f62f076e824784b9d5125f25: CTO-151 Metal3 Netris integration (#7569) (@squ94wk)
  • 81d50870610b52ac3a7365fa3d965bbb160869cd: CTO-156 vMetal UX improvements (#7511) (@squ94wk)
  • 317dacf96f5fb54709a571e4b24d432e402033c7: CTO-201 Graceful drain UI (#7893) (@squ94wk)
  • ce46bca38f0f91db7ab144f8b5e42b8c1af86d51: CTO-207 Make metal3 HA the default (#7890) (@squ94wk)
  • 2b7fec9546321b8baceba61414112f2ec5b1098e: ENG-12838 redfish explorer (#8491) (@squ94wk)
  • fb6e446b7a65607a8b701c774b69d4ea2784d6ab: ENG-13034 fix node bootstrap templates can read the platforms (#8779) (@squ94wk)
  • e10114128b792a1b16e6fad18dc63385db6f5e61: ENGCP-1687 - keep peers that reconnected through another replica (#8606) (@matskiv)
  • 0d85300807bf76ee17bbf3b88964424916ed9f76: Eng 12939 properties writable (#8816) (@squ94wk)
  • 7d2c949c3b9a2c6f9f7be371a0d40e1912dc41fa: Fix up some details on breadcrumb & upgrade bar ( <>)
  • faee1c04d053540d9d9ce98609838a8c678142cf: Fix: Netris TOCTOU race (#7624) (@squ94wk)
  • b8a08ef6026083aad3dd9f627ef659477feefc01: Fix: NodeClaim delete deadlocks on draining (#7933) (@squ94wk)
  • 75b90d55eef7c6dc89ba6aa1aa9e89309fb42bfc: Fix: delete dead lock for NodeClaim with non-existent NodeEnvironment (#7608) (@squ94wk)
  • 096751758ed7fdd751ccb1eae08b961f805c7975: Fix: ipa-images url & allow overrides (#7930) (@squ94wk)
  • 2ea88247d1a2fae6c150ba8e0e6de64b0d2535d2: Handle intermittent node provider errors gracefully (#7718) (@squ94wk)
  • 3c6e6afc65e1f176d1f5d36bdecbcc96433f2687: Make Multus DaemonSet resources configurable (#7721) (@squ94wk)
  • 42713e319fa0337fd2ad703d090ca0e72ab1969e: Remove unnecessary border color prop ( <>)
  • 9459dcbc9ee20622164e54799305245e283672a5: Revert "chore(debug): log live spaceinstance state around finalizer and namespace create (drop before merge)" (@roehrijn)
  • ad79e2acf9f1290c484f0255ade6023c30dc442b: Revert "chore(deps): update docker-golang" (#8204) (@FabianKramm)
  • ebed1652c81bbad9b4f90e0aa4ebaadf5245c7f1: Support KubeVirt binding plugins through properties (#7778) (@squ94wk)
  • 4fc98a296d8b0e38a1c6ac10bf2e255c7e6f40cd: Tidy up cluster table links column ( <>)
  • b43212f2efbbdc3b1f946dc584e8d3a39b70da17: Update nodes team to apps (@cbron)
  • d8f4a9d3cab38d9753cb48cbe2045600b9059e84: Updates chart logo to match vcluster, we dont use loft branding anymore (#6892) (@cbron)
  • 1c381956a24b45e65c72cc7f33aa31d3ad5336e6: Updates codeowners (#8132) (@cbron)
  • e8eb675e320e85176ba357c2ac660742632694e1: Upgrade metal3 provider deploy chart (#8192) (@squ94wk)
  • 666c6940d2bbd44f6c5c9b07fa0ad20545eaa4b2: add e2e test coverage for node profiles (#7653) (@neogopher)
  • 8ad6680d2dd225e035aba1da20c4e9c6b363c689: adds: e2e test for auto snapshot support for standalone (#7955) (@jjaferson)
  • 0d92e6f75e07fd31b7fe552cba3445492848b873: adds: support for s3 encryption (#7629) (@jjaferson)
  • c8a59442a156194001502382419d65ef1411d001: build(deps): drop redundant k8s.io/client-go fork replace (@lizardruss)
  • 8f3b148363dde32e5710ea65545a2d6b44fbae98: chore(api): regenerate apis for the osimage finalize subresource (@r0bnet)
  • dc8d5224f9d3259344b57acc228b9b146fcfbb75: chore(api): regenerate apis for the osimage status (@r0bnet)
  • 462f136c1f962a099ebe989f82c20037495313ee: chore(api): regenerate apis for the osimage upload paging fields (@r0bnet)
  • ac4dc160320e3f5d6b32cd735252658a659e5572: chore(api): regenerate for the store-neutral upload target wording (@r0bnet)
  • 4b8fb2bfacb4f533eddb15448cef1837ebdd07ff: chore(api): regenerate go apis for the osimage upload subresource (@r0bnet)
  • d6ff3515984268a23516ebf625d4c0422f990c14: chore(api): regenerate swagger and typescript client for osimages/upload (@r0bnet)
  • 83150252e5548d38a0334c904fd04ed323e4a6e4: chore(chart): bump loft chart audit sidecar image to alpine 3.24 (@kaihulme)
  • fe553e87d04ad3eba459992600183377a2a69aab: chore(ci): bump prerelease-checks vci default and upgrade k8s versions to 1.35.10 and 1.36.6 (#9019) (@kaihulme)
  • e3ea3520053a1d330c6b338e9041be1408814211: chore(ci): configure renovate action digest pinning (#8786) (@Piotr1215)
  • c4b561d2254be8b67bf05203bc0283973594a26d: chore(ci): expose the gcp e2e project variable (#8924) (@Piotr1215)
  • 670dd6da72660499889730903da560ffdb08df36: chore(ci): pass branch cleanup slack webhook (#8346) (@Piotr1215)
  • ed167563c81f4055d911706da07c9031fd2cf361: chore(codegen): regenerate stale swagger and agent openapi (@r0bnet)
  • ed2ae94c3a8b14cfa7d634e468e561b9c49e5aad: chore(codegen): regenerate stale swagger spec (#8184) (@r0bnet)
  • 7ac9a23f83c3c0733cfca941e712f3c662b0b6a1: chore(codeowners): drop the redundant nodeclaim/controller.go entry (#8325) (@rlmcpherson)
  • 90a0a14989b038dcd75203c3e4896e841e0a9023: chore(codeowners): drop the remaining per-file auto nodes entries (#8326) (@rlmcpherson)
  • 705f6cd78bf525166c7f9546a0d001a26e97438a: chore(codeowners): move the nodes controllers to eng-control-plane (#8323) (@rlmcpherson)
  • 6259a7b36943282a5e859ec51b30b0c755fa2170: chore(constants): set default version to 0.37.0 (@r0bnet)
  • e7cfbb17b56b2a2a574acdf12214b573228064f9: chore(cve-fix): bump helm and prometheus to patch CVEs (#7788) (@neogopher)
  • c8b4e564dceac8be022da9c815d3a740fb058285: chore(cve-fixes): bump vulnerable deps in otel, opentofu, kube, opencost, prometheus, and kine (#7512) (@neogopher)
  • 659d454723239704eb82d23eb36fa9b02a345bf6: chore(debug): log live spaceinstance state around finalizer and namespace create (drop before merge) (@roehrijn)
  • cf013d4846f3669c79d6ad40b1c5b4a1676623dd: chore(deps): bump Go to 1.26.10 and update Alpine to include eMudhra CA compromise fixes (#8782) (@kaihulme)
  • e47205d86fd3915492ff82c26b1dc7444835f41c: chore(deps): bump admin-apis for the tenant limit (@johannesfrey)
  • bbc6eab153f76d7d0c4473375c5af50cb6bbfb8b: chore(deps): bump docker/login-action from 3 to 4 (#6867) (@dependabot[bot])
  • 38bd2d5fbb956269eedef85b7eb14604bfeeb246: chore(deps): bump e2e-framework to fix podexec combinedoutput segfault (@seanschneeweiss)
  • 98b5e964e9e62c609eccd251c291e5ba40a56fb8: chore(deps): bump embedded kubernetes to v1.36.6 for emudhra ca compromise (@kaihulme)
  • 7dcea6b66e27b50629f94ffbc4a486d307cb9af9: chore(deps): bump kine to v0.16.5.vcluster.1 (#8923) (@kaihulme)
  • e4c71d6e1ddcd3f766db34b6e82d5671f314e02e: chore(deps): bump opentofu to 1.12.11 (@kaihulme)
  • e024df02d0e5adb93fb361834713c76b7a3e84e9: 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)
  • a97c9494e01a2004faece6845ad99fbdc26300ca: chore(deps): pin the kine image by digest (#8959) (@Piotr1215)
  • 2b504f6265f0d408585231b371a6f71d7de614de: chore(deps): update certified vcluster template versions (@vcauesantos)
  • 3013ca8f3456ad37c98bf54546a186f51b5632d4: chore(deps): update dependency air-verse/air to v1.67.4 (@renovate[bot])
  • 58211bcfa706cf373de22e09077adc84f7e03b06: chore(deps): update dependency golangci/golangci-lint to v2.7.2 (#8073) (@renovate[bot])
  • 224813841b9f2ecb9e5a287eb3e5dffeb1ace17e: chore(deps): update dependency helm/helm to v3.21.4 (#8074) (@renovate[bot])
  • 1bad801c40edb0a3bf102d57c6bcc03c099d629c: chore(deps): update dependency helm/helm to v3.22.1 (#8216) (@renovate[bot])
  • 8b412472cb4541c4082735e0e0430caa3de0cba4: chore(deps): update dependency loft-sh/devspace to v6.3.21 (#8075) (@renovate[bot])
  • d82b49894135bcf0309eedc290488a5685459be9: chore(deps): update docker-golang (@renovate[bot])
  • 2cb818002d057c0381a0847f6fb3183a5e27a4a0: chore(deps): update docker-golang (#8080) (@renovate[bot])
  • df68cf73bed0b90d83e186485cdb89f4a7966e29: chore(deps): update docker.io/postgres docker tag to v17.10 (#8160) (@renovate[bot])
  • 5fd8f88407b18926cbdc634b5994b1bead72a957: chore(deps): update google.golang.org/genproto digest to d0f1323 (#8119) (@renovate[bot])
  • 7778f36b735dcb8348e951c1c6bff21f5dd60922: chore(deps): update google.golang.org/genproto digest to f61a6ca (#8171) (@renovate[bot])
  • 79437539be9d48d553e3c1d91b15d8394203e161: chore(deps): update helm release loft to v4.12.4-rc.1 (#8163) (@renovate[bot])
  • 1416f6b5f02a11978fe287e170dc0f0cf2aa51eb: chore(deps): update helm release vcluster to v0.37.1 (@renovate[bot])
  • e6567281bc3a1253af540d63a8c4d76c7d071e09: chore(deps): update module github.com/google/cel-go to v0.29.0 [security] (@renovate[bot])
  • 13667825d3adec43415ed9962b2aadc3f501600a: chore(deps): update module github.com/klauspost/compress to v1.18.7 [security] (#8792) (@renovate[bot])
  • caba0df73c9ab69cb8b8cbdcee967c8781082712: chore(deps): update terraform aws to v5.100.0 (#8166) (@renovate[bot])
  • c63412f1cf1e8e923a1d7dcbfad9ca40de079a0d: chore(deps): update terraform tls to v4.0.6 (#8111) (@renovate[bot])
  • 757bc38707040aab841435e9e185d682e001515e: chore(deps): upgrade aws-sdk-go-v2 and smithy-go (@roehrijn)
  • ce800f9fbf83f70d84e1ccfab099e19c4f453c6f: chore(e2e): re-pin e2e-framework to main (@roehrijn)
  • f01d9d0515592666bee8d24aed41929f41338a77: chore(e2e): run ginkgo with output-interceptor-mode none (#8476) (@roehrijn)
  • 1ff72371db839dd2cfde577666b720f905ff1ead: chore(go.mod): bump admin-apis (@seanschneeweiss)
  • a8a9a2bdbe2e1932b31fa9302a23b9ef58bec248: chore(observability): bump gateway images to 0.2.0 (#8926) (@seanschneeweiss)
  • eecd33db290b62b27312e0ebb0d94cd31ad911d0: chore(observability): bump gateway images to 0.2.1 (@seanschneeweiss)
  • 653ad020ac995ba7b78cc7e233dbe30a14ffa0c5: chore(observability): create datasources for enabled clusters only (#7717) (@seanschneeweiss)
  • 221c9ba44bc54c96586d3f6adca81ff3a9c5acde: chore(observability): remove unused node-exporter, kube-state-metrics (#7532) (@seanschneeweiss)
  • da5e2ea4be714b97fbfbd92be25af2fe79c41791: chore(observability): request, limits for collector, grafana, prometheus (#7617) (@seanschneeweiss)
  • 395054fa78860a70b10e51ac9b6c57b2df70112b: chore(renovate): sync backport base branches to active releases (#7560) (@loft-bot)
  • 5eaf16f996a6a1fa08db9801a4b92d9e9e9f553b: chore(renovate): sync backport base branches to active releases (#7881) (@loft-bot)
  • b46d69ec44b98fbe9d8bca36f953fdaf9ea995e8: chore(renovate): sync backport base branches to active releases (#8270) (@loft-bot)
  • d039382935f4760a4dccc30f32b1b4a527fba473: chore(renovate): sync backport base branches to active releases (#9083) (@loft-bot)
  • 7cf5f1e2282903e44f6831d6deaf6c26e88fe44b: chore(security): exclude vendor/ from secret scanning (#7961) (@Piotr1215)
  • 0f2d256a7707e7f82b25482d0530e35b25b5edd0: chore(ui): add focused unit and e2e coverage (@andyluak)
  • 0f6539d4d8eecedd943e8c9fe61e794a3894a9f1: chore(ui): enforce test boundaries and remove redundant tests (@andyluak)
  • de82d07fedce6fa63b8932406ba8ec5a4e8c6641: chore(ui): scope vcluster hooks to suites (@andyluak)
  • 6853c483f77db2655d14f49a4f2155b590d38df4: chore: Add UI prerequisites to README.md (@PRTTMPRPHT)
  • 599fd5affb23eb8531d81f5573790a1b0a993f07: chore: Remove experimental feature gating for multi tenancy (@PRTTMPRPHT)
  • 78522dee2586250f84d3b36a95629159b8558062: chore: Remove obsolete cast in UserTenancy query (@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)
  • 4273d341f2c2f0b7b4130a2b73ca65dc4fce66e9: chore: bump certified Run:ai stack vcluster chart version to 0.37.0 (Claude Sonnet 5 noreply@anthropic.com)
  • 1bb3141f491b61de61b939b22e62e18dd2d2f106: chore: bump default vcluster version to 0.36.1 (Claude Sonnet 5 noreply@anthropic.com)
  • 738c7bf46d7988132326b2e2f08f26242ebfabda: chore: bump vcluster version (#8305) (@jjaferson)
  • 6c33bad09c7ff4c2e12aa6d56dd3e6023e82b14c: chore: bump vcluster version to 0.38.0-alpha.3 (#8706) (@r0bnet)
  • b174f58b506d4c94932b364bc41f7c3aa0e1d094: chore: bump vcluster version to 0.38.0-alpha.4 (@roehrijn)
  • d883732ae56fa79af613b6147c5f3b9401d8f905: chore: fix review comments (@r0bnet)
  • 91994885c4a82b91fab49f090344bc95f1fc79ee: chore: replace tech-leads with staff-engs in codeowners (#7786) (@janekbaraniewski)
  • a015ade8e20c974dcfe891c8f7a7860bb51982c9: chore: update DefaultVClusterVersion to 0.37.0-alpha.1 (#7762) (@deniseschannon)
  • 449bb2b6370cefc80f28e242812bf04344d936be: chore: update certified stacks to v2.0.0 (@zerbitx)
  • 10bd633a8125570c9ffc5378a26a2cb764fa9327: chore: use "cluster" in default template descriptions (@andyluak)
  • fe4e1e9ffd0c56052aee661e71e15a0850d66616: ci(backport): bump backport pin and wire linear-token (#7376) (@Piotr1215)
  • 1fa8b44e21acc6b1547ff951db5637e603ea7fb8: ci(backport): schedule link sweep (#8123) (@Piotr1215)
  • d9033e921a9e2b83cee3cfcf5fbcafad2c946b7b: ci(code-freeze): authenticate freeze/unfreeze with org admin token (#7564) (@Piotr1215)
  • 88d47329e126e539a521496546b65cd7dc057540: ci(conflict-check): follow the conflict-check/v1 tag instead of a pinned sha (#8939) (@vcauesantos)
  • 970104060264e67982aaf644c33971c3fd10c3b7: ci(cve-scan): move the daily scan to the reusable workflow (#8957) (@vcauesantos)
  • ab295d5674c14671b61539e4918117e26dc2d233: ci(cve-scan): upload pre-release scan results to the release tag (#8978) (@vcauesantos)
  • 7977189bef5f7c04d6afee3ef49a894c7e41155d: ci(e2e): annotate the docker/login-action pin with its version (@roehrijn)
  • 4209c9c1a5797a9be593c57cc2972c20500352f9: ci(e2e): certify pr ginkgo suite on release tags (#7290) (@sowmyav27)
  • 1ba7a28dc2b36a860904664142e61e24e7798647: ci(e2e): give /test-e2e checks their own group with the ci app (#8576) (@vcauesantos)
  • b266aaed1129ca0c17462c90192d2dc31f5d699b: ci(e2e): install playwright outside the ui test timeout (#8962) (@johannesfrey)
  • 41ead56be91ad7945fd78ed4609b41636f3ac3c4: ci(e2e): let /test-e2e run hyperscaler suites, title command runs, refresh stale text (#8519) (@vcauesantos)
  • fd8b3b3329a6d495fedf97693f1c26e03c65b099: ci(e2e): let the AWS session outlive the 120m ginkgo timeout (#8407) (@sowmyav27)
  • 0b0bed585a56fec7da1cbb5e45bca36ae8ba4a80: ci(e2e): show the dispatch error instead of checking a contract file (#8518) (@vcauesantos)
  • 087b78502faaee7f9678a159010075990cd80daf: ci(release): harden the linear sync workflow (#8678) (@sydorovdmytro)
  • 5b59d278bf9b3630f9fd73ba6e8dbd828e550c5d: ci(release): let goreleaser generate the changelog (#8677) (@sydorovdmytro)
  • 20e9ce3e8a9e2a4495dc768a5e3c3d9e4b53ce4e: ci(release): move line tags after every release, keep latest manual (#8686) (@sydorovdmytro)
  • 3e9a37a2558ff30831b42003cd9ad9f2fe381647: ci(release): notify repositories only from the release builder (#8422) (@sydorovdmytro)
  • 766920fb52b1dae747d68063d9e29b646cea1ff3: ci(release): run linear sync from a reusable workflow (#8668) (@sydorovdmytro)
  • da71a29bb62b343e900e81f983d319372d6af748: ci(release): take the source branch from cut-release instead of guessing it (#8465) (@sydorovdmytro)
  • ed9bd9e607d3fd94c17cec8c9f35f572ae5894cc: ci(unit-tests): cut the unit test job from 33 to 10 minutes (#8499) (@roehrijn)
  • 325490a5a7d79a3d9d9c84bbeed48f2d00c36f9d: ci: accept repository_dispatch for platform pre-release checks (#7789) (@anvesh-loft)
  • 8b845f2d72b49dda2060b668001f306079d7412f: ci: authenticate private go modules with a credential helper (#8801) (@Piotr1215)
  • 26370a0d66f0855ec45c00112ecadb963593faa9: ci: bound resolved platform base below the upgrade target (#7571) (@anvesh-loft)
  • 4fd03403d19ab89ce7c6accd66440bd63b45dd45: ci: bump actionlint reusable workflow pin (#7899) (@sydorovdmytro)
  • ad28a183580de700a9189deb908980fa1ea36b2e: ci: bump e2e upgrade base and auto-track it (#7419) (@adriankabala)
  • 34f77cc02315e6123c7b077ece2cee01af4f1b72: ci: convert release pipeline to dispatcher + tag-dispatched validators (#7829) (@sydorovdmytro)
  • 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)
  • 9cf0078a879b2f5af653daddb8677781ba3d80ae: ci: install helm-unittest v1.2.1 for helm 4 (#9141) (@seanschneeweiss)
  • aa9b2f3b2c052ef827fdbc15e20d7fdd380ce74e: ci: mirror container cve scans into platform workflows (#8256) (@vcauesantos)
  • 0147ea6cb56d7dbb19cfe0db7466c4893757dffd: ci: post one status report per machine and vm flows run (#8717) (@adriankabala)
  • 075d2c2c45e7bec190767894d47c2f7565caad51: ci: record host metrics in the e2e, unit test and lint jobs (#9085) (@roehrijn)
  • 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)
  • 914d2fc20e1e9015f8dbdbb8e922bb78d320a31d: ci: route cve scan alerts to #ci-security-scans (#8380) (@vcauesantos)
  • 26eb4d1a7cde506cffdff77e404d9207836b2883: ci: run Auto Nodes e2e on Azure and GCP with the NetworkEnvironment contract (#8766) (@jjaferson)
  • f7e8f290f0ba768fd7c5713cd11f12a59730d0b4: ci: run the metal3 machine flow suites twice a week on the platform built from main (#8533) (@adriankabala)
  • 991c8fed14c35b631974089a4700c9c2ce3828b3: ci: run the reserved machines checks from the release pipeline (#8505) (@adriankabala)
  • df3f7e528214309908c03dba9477488887a94e56: ci: stop cve scans posting findings to slack (#9059) (@vcauesantos)
  • 5003e2365127b0ae54cc24a543060589aeb291cd: ci: use per-base pr branch for go-licenses report (#7389) (@Piotr1215)
  • 60d48dabce22cbaf55ba6afe190df6e94719a892: docs(connectors): deprecate the list-only DatabaseConnector resource (#8269) (@nprokopic)
  • a2011ffc74189175d3f5557914816b9f9ef0d753: docs(e2e): fix stale DeleteVPC comments after siteworker registers DeleteVPCV2 (@roehrijn)
  • a05fc6c90f89dfb568e35835f4c32631451f486a: docs(e2e): run the machine and vm flows on changes to the flows, their fixtures and the machine code (#8843) (@adriankabala)
  • e62decb4257cb5bd86d68b4ff73c40340522bdda: docs(e2e): say how to write a keyed label in a test-e2e filter (#8451) (@r0bnet)
  • adb678cbdae662da5623ce63827aed1a640e5b57: docs(e2e): trim verbose doc comments in diagnostics capture code (@roehrijn)
  • 9ac536b66a38e9fadc7f2f4f6c00e6fdb4738b28: docs(e2e): use a real label in the /test-e2e template example (#8513) (@vcauesantos)
  • d82d03ce7a58187e921ec505a91420788fddcfa3: docs(genericapiserver): drop a false claim about the collection delete's client (#8158) (@lizardruss)
  • 9aa2709b901532640af875ea93dde341410e7aa3: docs(github): document /vcluster-review in the pr template (#8070) (@Piotr1215)
  • 570632af7171f2ac01ed6945f95cfd7c7da0fa9a: docs(release): say a re-run replaces the summary in place (#8689) (@Piotr1215)
  • 31946648d3f550a41726ea7c5942e96625d75ccd: docs(release): say the ai summary compares stable with stable (#8809) (@Piotr1215)
  • dfd5adbde84b47463c71d60817185c3d451ac80e: docs(tenancy): add the tenancy-client skill (#8427) (@lizardruss)
  • ca8bfac14277c8e4e1fb7d48f45361e336adf962: docs(tenant): correct why the user-limit check is create-only (@johannesfrey)
  • d9777982e7a34149aeed1b73218092aa083d3c1a: engplat-1060 PR 8594 8597 follow ups (#9022) (@flomedja)
  • 31c899d32c66f736c5af6ebdab12cc8aeceaa7da: engplat-1060 stack pr review follow up comments fix (#9015) (@flomedja)
  • d7c48043a8277a377f0c44a378f500f1a0748b31: feat(accessauth): a wildcard in an access rule means the resource's own scope (#8899) (@nprokopic)
  • e5fb684636928fcbc8c01bba0336ecdfe5cf9e22: feat(api): give osimage an upload status (@r0bnet)
  • 81702e3d7337ccdcfe8bf61370229626c63e6d13: feat(api): observability integration, connector, endpoint secret (#7633) (@seanschneeweiss)
  • cee75b600548497ab5d2529e5c52c934316dd11f: feat(apiserver): reject observability config the platform cannot serve (#7966) (@johannesfrey)
  • 772f7f5560178cb1e199e29447a0db2577061972: feat(apiserver): serve the observability connector credential endpoint (#7964) (@johannesfrey)
  • ee3d77db4b7c641290a8230f20ff35d21c5bd9f5: feat(argocd): let users set labels on registered clusters (#8302) (@flomedja)
  • cdaf9bc4ca805b021158ced13395791c79137e9d: feat(audit): expose recorded tenant in listed events (@zerbitx)
  • 4f9a240f6975c782d26c0d068b01b71d0f5b3600: feat(audit): record login and access key events (#8082) (@neogopher)
  • 4fd5848e2c535acfd41ac8927d1cc428996c674f: feat(autoscaling): block deleting provision-for-vms instances with running VMs (#8312) (@cbalan)
  • 618cf0758de055d750d1fca62711659b10b76eeb: feat(autoscaling): cap vms per node type on provision-for-vms machines (@cbalan)
  • d3d5f449fdf65b3334f7e1cc59581e4ab6529543: feat(autoscaling): enable nico phone home by default (@roehrijn)
  • 886ede1c38c0367ca03887f9c2b7f272bbd730f5: feat(autoscaling): give each tenant its own namespace for kubevirt VMs (#8540) (@cbalan)
  • 26895ea2c4c75f318a16f69134247de4cf18be7a: feat(autoscaling): join provision-for-vms machines to the kubevirt cluster (#8272) (@cbalan)
  • 31b24568cbbd2f9708c6db4b39cb2c66f117f722: feat(autoscaling): move accepted node types and caps into the claim spec (#8440) (@cbalan)
  • 7648c552bd73afb9c4982ce8a00272bc8d61a19d: feat(autoscaling): place kubevirt VMs by the machine allocation policy (#8503) (@cbalan)
  • 1b8b6c6bb80038e5561282e20c063a9a33defecf: feat(backup): include platform identity secrets and VCI serviceUID; keep the UI backup/restore path unchanged (#8710) (@dwelc)
  • de594d360e869a89e9881b9343d43f0f3639a63c: feat(ci): accept --repeat and --runs in /test-e2e (#8718) (@r0bnet)
  • d27997f4087aa8575a00b5b4f2876629af80d177: feat(ci): auto-merge renovate branch sync prs (#7791) (@Piotr1215)
  • e57fd71b9b81e8c01b5fcbc233f930ae0b0d9c1f: feat(ci): select e2e labels when creating prs (#7704) (@adriankabala)
  • e155147de6ff8a91744fc5008060a47458027865: feat(connectors): add the Connector management API type (#8262) (@nprokopic)
  • 21af3b9de1bb316e5d66376d876bad9cd66d6163: feat(connectors): add the argocd connector type (#8264) (@nprokopic)
  • 58fc76b69f8934691a3cc2649cb9bca13d3756f3: feat(connectors): add the netbox connector type (#8268) (@nprokopic)
  • 88777115a549cb2c122fce996d9340f705071a44: feat(connectors): add the observability connector type (#8265) (@nprokopic)
  • c5e40f54e976e42c7021c7f48a6de78344e9662a: feat(connectors): add the os-image-store connector type (@janekbaraniewski)
  • 478304bbd8c90a9336838361ce653d4053b8e109: feat(connectors): implement the Connector REST verbs for the shared-database type (#8263) (@nprokopic)
  • 1971de3e854813b2d6243135683e7891f67d1c9c: feat(connectors): refuse connectors a tenant may not use at write time (#8498) (@johannesfrey)
  • 3382ec07450c97bdf2ab45d10c1a3dd089a13b04: feat(dev): seed a local pod-backed node provider (@janekbaraniewski)
  • ad34b948086e1d4f7be0c0e345790bf0d68df7b3: feat(e2e): add the /test-e2e comment command (#8064) (@vcauesantos)
  • d33ca9850e128d7281b5bf9b53266bf957486661: feat(e2e): require every ginkgo spec to carry a pr or nightly run-tier label (#8294) (@roehrijn)
  • 12b1c8c7edb4a234a88b25d4893c1f79df85a4f5: feat(kube-ovn): kube-ovn CCM UI (#7827) (@squ94wk)
  • 2575508142b412e5f1de74c3e4fd51a3f3415214: feat(license): count tenants against a tenant limit (@johannesfrey)
  • 81a6aba287281f3e87077f491adc126c9c309287: feat(logging): enable file logging for platform (#7781) (@neogopher)
  • f04e8d4a01e9597d623d397e7e8502a535883509: feat(metal3): add machines.selector and deprecate bareMetalHosts.selector (#8638) (@roehrijn)
  • 4e1b529f8782c9694efcb06f73c2fb3f99e67d46: feat(metal3): skip tls verification for os image downloads by default (#8553) (@r0bnet)
  • 937d9cee8d364242d747dcefd8ee70e2fe5bdd10: feat(metal3): sync BareMetalHost labels to machines and select on them (#8640) (@roehrijn)
  • 4d190f6c5b0be90235ae1ef3880c68bd3bc4bb73: feat(metering): count non-NVIDIA accelerators in GPU usage (#7252) (@nprokopic)
  • f4291401256ee547257f6cda5fccc4642e5635a7: feat(networkenvironment): offer and accept an environment only for its own node provider (#8322) (@rlmcpherson)
  • 3ff67e36eba852cfeb22da48c6b2016bf3c1a8bc: feat(nico): grant a tenant account targeted instance creation (@mfranczy)
  • 42ec18a0450683faa87fcd86ee451f8d375b8ce0: feat(nico): support flat networking for hosts without DPUs (@janekbaraniewski)
  • ada39268f301e726b5dac1fe80a03e91ce5547ca: feat(nico): support platform tenant workloads (@janekbaraniewski)
  • e345a2a35b0454af271c811916f604578d026858: feat(nodes): serve NodeProviders and NodeTypes through an allowlist (#8363) (@jjaferson)
  • 1b6afdef310c96c80fb9628765e9ff000b35b182: feat(observability): read cluster collector credentials from the metrics-writer secret (#7987) (@johannesfrey)
  • c3bc43d059c8da11058106f0c742d3c3bce47d4f: feat(observability): report unresolvable connectors on the instance (#7967) (@johannesfrey)
  • 4f91caceae2a11eee9b6d7471d705c92b64e164f: feat(observability): resolve an instance's connector into a write gateway (#7963) (@johannesfrey)
  • 4ff9d6271b8910ee68b2766b7f2b15eff38d8091: feat(observability): scrape tenant control plane backing store metrics (#7989) (@johannesfrey)
  • db5edd81e5f28bb0b35eb0758bc1ece5b817f9d3: feat(observability): tenant logs and generic telemetry destinations (#8223) (@ronaldzhanje)
  • 9c271031f569259d087ad6f96475033e22c7aa69: feat(osimage): add connectorRef, format and upload subresource types (@r0bnet)
  • 75a3728dc171ea53e9563fba14d8604231f347b4: feat(osimage): add image store with pre-signed multipart uploads (@r0bnet)
  • 5952cd7406a7769a5d038f1f542118b6d3a4d509: feat(osimage): add paging fields to the upload subresource types (@r0bnet)
  • f6fc72a573f9f5a110c9ff8233e65266e3a9f584: feat(osimage): adopt the os-image-store connector (#8431) (@r0bnet)
  • 2db0521bfba1c4d818f3c697f780474f5cc9c057: feat(osimage): boot node providers from an uploaded image (#8398) (@r0bnet)
  • 4b09b15d8ee53758c238302b688640b2197d6ad9: feat(osimage): gate the store-backed path behind machine-management (#8371) (@r0bnet)
  • 1d706defead2388e4343ebb663d1fb877f2847db: feat(osimage): page upload targets and report the next batch (@r0bnet)
  • c9b6e1aa55cf741af863f376635160f376838a81: feat(osimage): reconcile the upload lifecycle (@r0bnet)
  • c9274d1e2f1a69177fef655743fc306985ab6722: feat(osimage): register the upload subresource and audit it as sensitive (@r0bnet)
  • 0fa0c70607ddd2bf2f38a71478f792d31b83a633: feat(osimage): serve osimages/finalize and assemble the object (@r0bnet)
  • d72829aaf541329c965a1ecd7a9bbcd8297fdb05: feat(osimage): serve osimages/upload with pre-signed part targets (@r0bnet)
  • 465846919531a4ed4cfb70c4565bd3a63bfc8dfb: feat(osimage): test the image store when its connector is saved (#8667) (@r0bnet)
  • ab088d09a005435c004cd00d7d43a4a662d835be: feat(osimage): unauthenticated blob endpoint and delete cleanup (#8295) (@r0bnet)
  • 134fe0262320963b59104fa4dd5bd38078ba8133: feat(pkg/accesskeys): create metrics-writer access key (#7634) (@seanschneeweiss)
  • 57f28d12394d2c97f1f6a90d070033172c3e163e: feat(release): post an ai summary of each release in its banner thread (#8657) (@Piotr1215)
  • 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)
  • eb48f0f2221127c4e3cc11af40e151aa6bc89cb1: feat(stack): add task outputs for stack instances (#7727) (@flomedja)
  • 750f1d0f3cf799ffd04c521b7c49215c73ca38bb: feat(stack): add the App task type for stack instances (#7783) (@flomedja)
  • 0fa9f6cc8d7a7dabdd1a80739d0a65a6257442f7: feat(stack): add the stack controller for ArgoCD tasks (#7723) (@flomedja)
  • 354368288959227432293169b33b96b9726a405c: feat(stack): deploy stacks from a virtual cluster's vcluster.yaml (#7869) (@flomedja)
  • 8e4e58166298970e13f0d68e43d7b55de9472066: feat(stacks): Allow jsonPaths to be conditionally rendered. (#7975) (@zerbitx)
  • 436285c7077e9f65bb452bb7568ebc24ce31017a: feat(stacks): embed run:ai manifests (#7917) (@zerbitx)
  • 72ac19a386d569fe781553f54119bdf888756db8: feat(stacks): let certified stacks ship ArgoCD templates (#8389) (@flomedja)
  • 6e4f0183132f2b04d22ebd01e01db0556d84e058: feat(tenancy): a disabled capability withholds the kind outright (#8337) (@lizardruss)
  • c889e4965d9e249ecd17030ed398d759c6e7bba0: feat(tenancy): drop the platform reservation and the platform-consumer identity (#8609) (@lizardruss)
  • 9646fd0b842d737dc327b260b787e589f33787fa: feat(tenancy): give every kind the authorizer reads a considered rule (#8457) (@lizardruss)
  • c13befdf44fc1ed5a2128c66414b43f6de089a4e: feat(tenancy): give the platform a tenant to consume as, and scope the providers (#8241) (@lizardruss)
  • eef318091961978205fb4216d5b64cd9f90dca94: feat(tenancy): grant connectors and control plane clusters by name (#8839) (@neogopher)
  • 9f782fd2396b56c8e950ad8f26a1ef6eb79b875f: feat(tenancy): grant os images to a tenant by name (#8830) (@r0bnet)
  • c66aacd559d50143a500f267446ea0aba365093f: feat(tenancy): keep impersonation inside the impersonator's tenant (#9012) (@seanschneeweiss)
  • abcc2c444c45f9fbe76f02c192725c1697e269cd: feat(tenancy): let tenant admins impersonate users of their own tenant (#9044) (@seanschneeweiss)
  • a205b33d6143c75b235284475cb8e8ff74f4f4d7: feat(tenancy): make importing externally deployed clusters configurable per tenant (#8902) (@johannesfrey)
  • d7bdaf048a96c77b5b0a09788defed57f6c4ab01: feat(tenancy): refuse a tenant the template waiver and the restricted probe (#8825) (@lizardruss)
  • 8e526ae4ac06bbdd4bf26761764f729c4f940140: feat(tenancy): scope every management write and subresource call to its owner before a REST runs (#8754) (@lizardruss)
  • bd37d57098494ba3b2d28b9b7daefd5d70ad8332: feat(tenancy): share one instance with every tenant (#8338) (@lizardruss)
  • f6d8760fd8c7e2c9788200cf480a221749d6992f: feat(tenancy): share role catalogs with every tenant (#8934) (@johannesfrey)
  • 17555d7cd24e06270b11a408fed4bb287c382dc6: feat(tenant): add tenants/config subresource for per-tenant configuration (#7681) (@lizardruss)
  • ed651909d7bc66ac134eca9cd3c254320a6a3ec7: feat(tenant): add the tenant management resource (#7671) (@lizardruss)
  • bc515967329d867f5506d3bab9e932415810bad6: feat(tenant): bootstrap admin user on tenant creation (#7876) (@seanschneeweiss)
  • c56e3c957937568bc5599633b22880baa9753a7d: feat(tenant): bootstrap project on tenant creation (#7910) (@seanschneeweiss)
  • 435792e54de9c7662d8fb016f42157186d03bbc2: feat(tenant): enforce the license tenant limit on creation (@johannesfrey)
  • f4f50794b94b3da7798713bbff758daac98b496b: feat(tenant): enforce the license user limit on tenant creation (@johannesfrey)
  • d5f6096a5f40a95fb6eea69103571fc13353b9d1: feat(tenant): pre-auth host resolution and host-uniqueness admission (#7770) (@lizardruss)
  • 79b817e9e6d73cd5cfd03b6bb5f86dedae648502: feat(tenant): put a tenant admin's privilege on a per-tenant team (#8077) (@seanschneeweiss)
  • c29f19722915623b26d495d1047a43b31c928c61: feat(tenant): report tenant membership on the self response (#7833) (@lizardruss)
  • 928ac2f97634c134490eda27d7518a89730fd1dd: feat(tenant): require a tenant's prefix on the cluster-scoped names it owns (#8002) (@johannesfrey)
  • 8902e102fe7a175b79661d3bd1d64ae84d43b4d1: feat(tenant): resolve group membership within a tenant (#8219) (@seanschneeweiss)
  • 448c3883df91dc0c4a538cceb6e8e8a0a96be5f8: feat(tenant): resolve tenant from the authenticated identity (#7832) (@lizardruss)
  • 06b9dbab065bb01ed6187a8cb70c10214821abb9: feat(tenant): scope tenant reads by capability (#7941) (@lizardruss)
  • 2bbd637ba922062cb5ee993ae105b3475a3128d2: feat(tenant): serve per-tenant UI settings to authenticated tenant users (#7880) (@nprokopic)
  • e079bdb6e6efabaabfcc4a77f2928aaa45aebd10: feat(tenant): serve sharedsecrets through the scoped client (#8068) (@lizardruss)
  • f15326080b2dee60e1223daad8fbc7b520e94a57: feat(tenant): share connectors with a tenant by label (#8428) (@johannesfrey)
  • 7df99324fd5426abc5e6d678d2f3db91f7e77ab0: feat(ui) - auto nodes information and next version gating (@andyluak)
  • ebf7fde50db5755c4239e2a1716149064320e296: feat(ui) - experimental features (@andyluak)
  • c11e6d8dc4eaacefcfc03aab84a26226494856af: feat(ui) - fix broken e2e tests (@andyluak)
  • 1ba3b07db3f7b95ee374af14aea8b54ff51bef05: feat(ui) - fix e2e test (@andyluak)
  • d014bc38c3bf042d1428916540e3ee71deb7320c: feat(ui) - fix e2e tests (@andyluak)
  • 45558823297ad364388084f2d3007f3a0eb92bd5: feat(ui) - fix stacks navigation (@andyluak)
  • c7feaf73679527cbf791b222af72b1c327c33aaf: feat(ui) - graph fixes (@andyluak)
  • acd34a37720242f0b8c25eef10a6eb22f40f4c69: feat(ui) - improve app templates deletion refereces to stacks (@andyluak)
  • 1e1b2783c7f5af5388d094957502fd611a3d25f5: feat(ui) - initial (@andyluak)
  • cf6ed6d1db0a10dcc5d2b9d9acac8e09253254d7: feat(ui) - keep 403 on the access-denied screen (@andyluak)
  • abddf98ae3cc546f06bba5b93b13075a93ac9060: feat(ui) - loft bot review (@andyluak)
  • 8f72c4d5f49152bda28271606795dbcec501c451: feat(ui) - network env section (@andyluak)
  • 04f261964ce941adb00ddfea08fd9fbd601b590e: feat(ui) - node assigment component (@andyluak)
  • a9c30dcf3b3db0329e4a28abdd5b57d93c49e2d5: feat(ui) - node profile table actions (@andyluak)
  • 5aa6db6ef1d7655163a585372e31b5e38c4c9bcd: feat(ui) - os images required (@andyluak)
  • 3eba8319d1b817ca22c7c1b000761c6041c88683: feat(ui) - pr review (@andyluak)
  • 31e0b87a1090a50b16de5977fa785eebd5ba7e65: feat(ui) - pr review (@andyluak)
  • 976dae5d5187548255f14e37f18da0026500d932: feat(ui) - pr review (@andyluak)
  • c82c1c1b6bfff615c70228868bdc4ae90ed6cc76: feat(ui) - pr review (@andyluak)
  • 99056465a985327c214b24d4742193b95da46608: feat(ui) - pr review (@andyluak)
  • 1bb7bdc2d458e43c1190a05e3470fdc8fcd989dc: feat(ui) - pr review (@andyluak)
  • 4ba577937c3ffdf9dc2254d0a1b2bee2db89545b: feat(ui) - pr review (@andyluak)
  • 75616f249bf3c2a9d1916c93565fd1cc41b03b85: feat(ui) - pr review (@andyluak)
  • 2c4baca0a512e59ce4213e2e2f0270677b2e4771: feat(ui) - pr review (@andyluak)
  • 69f8ecd8523fc7816435c782a75473c9c91d9ee6: feat(ui) - pr review (@andyluak)
  • 7d2a2a4e99a05f2c0bbaaea4faeebfc99ef56ddb: feat(ui) - pr review (@andyluak)
  • fb7f8bb34cbcf7b8774b00e19c0939522b7d19dd: feat(ui) - pr review (@andyluak)
  • d70031170b190db0f4a41bcb4bbb22781bdb44d2: feat(ui) - pr review (@andyluak)
  • 4f59a19ddc6995d1cabc9f223137fd50b01e6dc4: feat(ui) - pr review (@andyluak)
  • ff84a4c6dcfaf15b4f3d04eb4bf4df9bedfc40b3: feat(ui) - pr review (@andyluak)
  • d27d6ff3cca569b6a59218c848e8a53d69b133db: feat(ui) - pr review (@andyluak)
  • 0158bb55db029680435b8818af96406b2a0f8cec: feat(ui) - pr review (@andyluak)
  • deef505985d81fda8db31970d40bfa3ecc03042d: feat(ui) - pr review (@andyluak)
  • 21b115f61401563be6f1204df6d3672d94447d93: feat(ui) - pr review (@andyluak)
  • 9b41609ba990afbd55fe00d9ab7cd5f0846c33f7: feat(ui) - pr review (@andyluak)
  • 60532d7c098907e67fd23a226d9fde23f1dd2de0: feat(ui) - pr review (@andyluak)
  • f6a8cb5a636270eb45b3c2b769566edbab78a3b8: feat(ui) - pr review (@andyluak)
  • f6367351ed92e5f4f7cbeb54c0861fe93e2a1c50: feat(ui) - pr review (@andyluak)
  • 054ba17c155af1bf7402e0c75b8869a61417d53f: feat(ui) - pr review (@andyluak)
  • 6b74244cc294d922816defa6d401c893a71cc34a: feat(ui) - provision action and create instance (@andyluak)
  • 06a6add9cde0d7e36348f19a9c2b7842c396f1db: feat(ui) - remove broken test (@andyluak)
  • 06903da43bff47777ce483cd1553e68f12cadabd: feat(ui) - rename tenant clusters to cluster (@andyluak)
  • 5ef9e4583edb475a8183dc459235415d79b27590: feat(ui) - replace node provider and network env with constants (@andyluak)
  • bb9896793ac56157e6a50db88e7dd09f7772209a: feat(ui) - sidebar redesign (@andyluak)
  • f93d62b44b776f2fd8a49c82ef8a605ab202eed8: feat(ui) - stacks ui e2e tests (@andyluak)
  • 1786481405f6a8fb53d8d4b7033f8aedd8243b04: feat(ui) - tenancy graph qa changes (@andyluak)
  • 4adf16c9dc84ae006ab90f9df2aa6c9d580ca222: feat(ui) - tenant graph view (@andyluak)
  • 5a68bba8ec7e5a0314cb35e306d02b7118192883: feat(ui) - ui changes (@andyluak)
  • 51a6a3774c8e3d7df9973b0bc51d32c61092364e: feat(ui) - unsaved changes dialog (@andyluak)
  • c8121368f739b2279f869d5b312203cb6a6e46d7: feat(ui) - use constants for control plane custers (@andyluak)
  • 670a530c3df38c9f9be7a4df23134e0500ce9c8f: feat(ui) refine stack P0 tests (@andyluak)
  • 795d43a8bf15aff939951d1d1e06f16a2a229c86: feat(ui): UI: An unknown field under destination is reported as a destin (@andyluak)
  • eb8d9a186f116c4971dc6b0eacb55201fa9094d5: feat(ui): UI: Tenant cluster Stacks tab has no pagination and sorts alph (@andyluak)
  • bf18bcbda77d171f0cd832d5d1846ee99287497c: feat(ui): add NICo node provider UI (@janekbaraniewski)
  • 7caab706669c1af0f666d9db8420c6c189167cfc: feat(ui): add NICo tenant opt-in and onboarding status to tenants (@andyluak)
  • 20e0b40f6901934bb57aede298b93d0acf46d55a: feat(ui): add OS Storage connectors for image upload buckets (@andyluak)
  • 5c56553083bf4434b30aab8a52fcfab604b3d112: feat(ui): add a YAML Definition view to the OS image store connector form (@andyluak)
  • 1d83612fd1b6e41a2c7c28a63c55e8c1320aa3e2: feat(ui): add a reveal toggle to connector secret fields (@andyluak)
  • a0cc3737c4de3151374e277da2b8c1a6d793c248: feat(ui): add a single node type switch to NICo and metal3 node types (@andyluak)
  • a7f4442df5634c574fa0116e760f840584cd9065: feat(ui): add an observability connector section to the tenant cluster form (@andyluak)
  • 84bd4509b37a2ce21eb2140e5515cc29ea69ebb9: feat(ui): add certified badge to os images (@andyluak)
  • ae6a32d71a16f4f05bd7a9f22dae76269a93e28e: feat(ui): add labels section to OS image form (@andyluak)
  • b4e3fb7a9ad4fdd66c29e9b9ae4852c9fdf9855f: feat(ui): add log search filtering, match highlights and result counter (@andyluak)
  • a6d9a8d903486cd5892b5d02457d6982cc31ce54: feat(ui): add network environment selector (@andyluak)
  • 582e4bcaac90624263b394a14a6acf37ff506d6f: feat(ui): add project quota unit pickers (@andyluak)
  • 906464666fc7cb01964516d9bed1cc79cf413fa4: feat(ui): ask to keep or delete an OS image when its upload does not finish (@andyluak)
  • 53bc6eed82c1202315c1a6e8add30e3c3f30bfb5: feat(ui): check the bucket CORS rule for OS Image Store connectors (@andyluak)
  • 6d02ef7b1d84f1daa602f67dcbbae2a9ae579dec: feat(ui): configure and respect the tenant external cluster import setting (#8903) (@johannesfrey)
  • 0ae8560bb1907bf56e778454a66a479587ca594b: feat(ui): configure automatic snapshots for standalone tenant clusters (#7737) (@mfranczy)
  • 269721a7b0469626b9717753403659ffebe07ee7: feat(ui): duplicate stack templates (@andyluak)
  • 61ebc33b81bb514b6e8193324bb9e8e72b23701a: feat(ui): edit nico nodetypes with instance type and machine selector (@roehrijn)
  • a193fd0e9786a4053607f400cd2caad93fa8c18c: feat(ui): filter machines for batch assignment (#8172) (@andyluak)
  • 8fd67a87fc86161f83147d9e848acfb665470757: feat(ui): gate space navigation on operator tenancy (@zerbitx)
  • 976c2330c07451f9ade14a309b184be965fd2b46: feat(ui): group node provider types into bare metal and other providers (@andyluak)
  • 7942d4034dc865b949a15d641acee9a95c2b1f4a: feat(ui): group project pickers by tenant (@andyluak)
  • 40f85e8a9c02d5e6884d9352ebd5ffc25c0e87e9: feat(ui): group provisioning projects by tenant (@andyluak)
  • 7e0fd3f15fbda7fd783da85d0becb5c6a9b79e97: feat(ui): group users by tenant in the Users table (@andyluak)
  • 793dfc2cf2c274207e061d06fbd30f391a044520: feat(ui): hide space provisioning on space and template pages (@zerbitx)
  • ebd66ce4b0ec68eeefb69d4657d0b6da8e09aad1: feat(ui): hide space settings in tenant project forms (@zerbitx)
  • 7176755148d563a7e5bf58958c0d1e6a16ee51fd: feat(ui): impersonate a tenant from the Tenants page (@andyluak)
  • 8216539fac7b3dfd9d46db74e31e6ba089574c7a: feat(ui): improve VPN table sorting, action label, and key creation (@andyluak)
  • 5ac01bdc37263103464d8f82043715ed8b9b6c78: feat(ui): improve nodes section in tenant cluster creation (@andyluak)
  • 4c981355b3f214908c5ee738d29d1ee2abf9ddf5: feat(ui): keep OS image file upload selectable without an image store (@andyluak)
  • 2e87e0881202ff1f5b4ee23962a9569b66c3e040: feat(ui): move Network Attachments into Networking as a diagnostics tab (@andyluak)
  • 7c43cfa11b76bed56a43ac291bf6c382421815d4: feat(ui): move tenants to platform navigation (@andyluak)
  • 51291dd15b24920c49fc6d511a90a688845cb952: feat(ui): pr review (@andyluak)
  • 81749173d014ff7a49f9305ff786128b3527b492: feat(ui): pr review (@andyluak)
  • 512426eca2566919644fcd5ee7a731af3b184902: feat(ui): recognize Run:ai custom links by label and add its icon (@andyluak)
  • 630fa583849ef2180645b1961b68e99db51f66fe: feat(ui): reshape the project instances table (@andyluak)
  • 0d572c5715a400d104004984bda2480f47a7945c: feat(ui): show machine power status inline with the machine name (@andyluak)
  • aebb0044cbb721a94197f8e41161f45456c9394d: feat(ui): show tenant names in user and team pickers (@andyluak)
  • f760c528c8b8f92b58c060caa381a7c06dcefb05: feat(ui): show the Metal3 machine pool as radios and chips (@andyluak)
  • e9d12f82d51f331e30d3899356db824170fbea5c: feat(ui): show the compute resource each instance actually uses (@andyluak)
  • a5a400a87b51882e9491bd48e0e71aeea7f8c1ff: feat(ui): show the cube icon for instances in the sidebar (@andyluak)
  • b80d4ce1291edb85bf0367f11159c8b528f4ae67: feat(ui): show the tenant that uses a machine in the Used by column (@andyluak)
  • 120e3212bd42de9c93b5eba7472144131d55d3cd: feat(ui): stacks (@andyluak)
  • 8ac325f2b52a8e181e87f7b528c8be9c74ec82f4: feat(ui): upload OS images to an image store or add them from a URL (@andyluak)
  • 8ceb91dcfc090267dc1b4ce34c76b1d20e3aa782: feat(ui): warn when node profiles require a vCluster upgrade (@andyluak)
  • 57c7e95fc7a46948edd29293eff5206213ebf91b: feat(vpn): show the serving platform pod in vpn diagnostics (#8620) (@matskiv)
  • 672804cb0d5841f4bf9c499dd97168c38d721cae: feat: Add CIDR column and refactor network environments (@PRTTMPRPHT)
  • 7da6e6f8477e86aaa6e5bfbb98bee78f49f9d47e: feat: Add additional filters to bare metal hosts (@PRTTMPRPHT)
  • ba243165287c3964a43e4e171046ec77638b4e21: feat: Add alert in template marketplace for operators viewing tenant projects (@PRTTMPRPHT)
  • d99d3b04daca24d8fe1ca7804064140f4b510274: feat: Add basic views and interactions for multi tenancy (@PRTTMPRPHT)
  • 8599ea820d237b0e763c53f2fbd5253ca94c15ee: feat: Add batch assignment of machines (@PRTTMPRPHT)
  • d53e0ff4de88db056370be0020286ecaec2282ed: feat: Add capacity type selection to KubeVirt node types in the node provider form (@PRTTMPRPHT)
  • 0b1aa6fdee0bd987838668a13c954640d3ba4bd3: feat: Add column for object access to tenant table (@PRTTMPRPHT)
  • 86f0492de2298df883230d1366a637ad7c32e57b: feat: Add e2e tests for "provision for VMs" flow (@PRTTMPRPHT)
  • af514896df6fbc8fae431835bc349e8fe4ba92af: feat: Add flow to provision machines for virtual machines (@PRTTMPRPHT)
  • f78bebb3ca167d385e7f8445b34051dd0a559a78: feat: Add invite dialog for tenant admin (@PRTTMPRPHT)
  • 3fff7ea0d96766d2e6ed6a4b0c4e25ffecc1cfdf: feat: Add loading spinner to pod logs when the pod is still starting (@PRTTMPRPHT)
  • 45caeeb7518850283066d9ca87c54627baf6b52b: feat: Add machine overview visualization components (@PRTTMPRPHT)
  • 33957654b9b1db5bcfca989a9e2548651ac31216: feat: Add missing field for NICo OS images (@PRTTMPRPHT)
  • 28414855f4a6839ff7f716f056f928db4787d80a: feat: Add missing parts of the provision for VMs flow (@PRTTMPRPHT)
  • a4b4b39a3cf868c3c853e6709b8deab0586ade3f: feat: Add multi progress and legend primitives (@PRTTMPRPHT)
  • 3dda7ae30221af8900cebae0cb79af366b82bf01: feat: Add new VM control plane pages (@PRTTMPRPHT)
  • d2f8300ffd1534e8e83dad21a53ccfa942b61251: feat: Add new bare metal machines page (@PRTTMPRPHT)
  • 63b7c4c700f55c1ceec1281569a6b858c0f26a98: feat: Add node pools UI (@PRTTMPRPHT)
  • dba3036b9b9765b9d51830899739eaa4cd78ea60: feat: Add object access section to tenant form (@PRTTMPRPHT)
  • d00610f38981ad8b8a9715751b64d953340ee632: feat: Add proper operator detection and skipImpersonation flag (@PRTTMPRPHT)
  • e6bdeb686d2ab09ace19e21f717547011f627b1f: feat: Add screen-reader label to enabled switch in tenant form (@PRTTMPRPHT)
  • 321adde4899372f66fc043c6d89b7a5f7244727f: feat: Add switch to mark OS image as certified and fix positioning of badge (@PRTTMPRPHT)
  • 6f27693761bcae23fc8d0658ed0c4700d9c7bc17: feat: Add tenancy support to machines page (@PRTTMPRPHT)
  • 2819388b1ff9ce81a4609d2ea973aa12e25d8e86: feat: Add tenant name prefixing to global entities (@PRTTMPRPHT)
  • 36634cd54250091ddd0f02b64ec12bc9b757ef35: feat: Add validation to object access section in tenant form (@PRTTMPRPHT)
  • ae01620b2e41251d9ce8994107d00301a7d9fa7e: feat: Add warning when selecting all control plane clusters in tenant form (@PRTTMPRPHT)
  • 701e913b2875b088c8c342b130ab1602cf560387: feat: Address review comments and fix e2e tests (@PRTTMPRPHT)
  • 4a968ace32fff029d1cb6d90742f28fd6e092014: feat: Align machine allocation policy controls (@PRTTMPRPHT)
  • 5a60ab063f7d2c874f91a63d7f498b3797204168: feat: Align navigation items between control plane cluster details and cluster namespace details (@PRTTMPRPHT)
  • 4f822e35dbc463a3a0c5088f86cb53d9cee89392: feat: Bind instance types section to new node claim spec (@PRTTMPRPHT)
  • 247bfe1bfe8f258c08e69b7e30b951aa836a1177: feat: Block provisioning for VMs when there is no reserved node type (@PRTTMPRPHT)
  • 444a96e3debf5c37ecd72a574bc0d48376ee98f0: feat: Change all "CRD" labels to read "CR" (@PRTTMPRPHT)
  • 23bef0e97f76bed944d0fe43b23377ecfb3b0e4c: feat: Change background color of impersonation banner (@PRTTMPRPHT)
  • bf9d93f57d3c031f0f3fd55fdbee9d27032972f8: feat: Change database connectors to use new connectors API (@PRTTMPRPHT)
  • 0ae13e322b6f8d5f3cb054ca61bea74dd3cef919: feat: Change description of tenant assignment selection in OS images (@PRTTMPRPHT)
  • a07d43b52158ca96045badab9b3ed74edd79c2b3: feat: Change empty state for virtual cluster table (@PRTTMPRPHT)
  • 02893b48f33039976c832a47d4daecde583e7e90: feat: Change how machines are matched to KubeVirt node providers (@PRTTMPRPHT)
  • 5611887059eee3f46d7a0b455d32104dc4b0f4fb: feat: Change naming of platform assignment from "platform tenant" to "platform owned" (@PRTTMPRPHT)
  • 532ec66ce47197f72da6da9d83bc8035ad1c6add: feat: Change nav bar gating for machines so everyone who can list machines can see it (@PRTTMPRPHT)
  • 7692686bacb6e3a7624942d6ebe5819111aeccc4: feat: Change navigation to group some pages and free space in the sidebar (@PRTTMPRPHT)
  • fad4c5c51a0270be773af6d9081e0af341e6b4fa: feat: Change title of instance types section during provision for VMs (@PRTTMPRPHT)
  • ee632607fc85cabdbaf6e2df02aeba8f5dd023d6: feat: Fix impersonation banner position, text and style (@PRTTMPRPHT)
  • 6f1704f7e6384c54783c8a9cc3b618580955199e: feat: Fix playwright version (@PRTTMPRPHT)
  • e3c0d28390efe641a07430b549d1e3ebdbda8256: feat: Hide advanced section in project settings for tenants (@PRTTMPRPHT)
  • ef8a956b16ab3387230cf92fb82d2a534402f62a: feat: Hide machine spec during provision for VMs flow (@PRTTMPRPHT)
  • 0163ebf68b61450beb5658813ed91f990ae3ff34: feat: Hide provision for VMs for platform admins (@PRTTMPRPHT)
  • 2622192b13efe9de388795270d1bf0feee55b125: feat: Hide provisioning for VMs behind experimental feature gate for now (@PRTTMPRPHT)
  • 05e592878a0b5c44fe80632ad75bd37158281181: feat: Implement new design of compute section (@PRTTMPRPHT)
  • ddf87c05939bfab54bfd360d07a6240cb0756960: feat: Implement some defaults that should lessen API request pressure (@PRTTMPRPHT)
  • cc083e87bc34a14182231da31088d5f2a515dde2: feat: Improve clarity of project menu (@PRTTMPRPHT)
  • b1a0d02907ca6ba0481807a846daeabfe1fad6f8: feat: Improve empty states for machines and tenants views (@PRTTMPRPHT)
  • 1f5af720f93812cf2ae9bb837d71847b4512d475: feat: Make SSH keys enabled by default in tenant form (@PRTTMPRPHT)
  • a7a692ff36eff78418f0467e8ec16a16eedf22a1: feat: Make invite user dialog use tenant hostname (@PRTTMPRPHT)
  • 89b33ddce4958db36453d36bbaa965845be2fac4: feat: Make observability connectors form use the new connectors API (@PRTTMPRPHT)
  • 5fcb1033b1e03fbdc64d76ff9fe2c49c1a6a7b98: feat: Migrate ArgoCD connector form to new connectors API (@PRTTMPRPHT)
  • 63a10d9a77899ec2ee67d930d4d7752cc0d83797: feat: Move KubeVirt debug views under VM control plane details (@PRTTMPRPHT)
  • a453ef5759a67988fd5d1dd9b549294592fb3e69: feat: Move cron tooltip into description for snapshots (@PRTTMPRPHT)
  • 5e79326e82d46a61c53fd93b78881eb202fb0f64: feat: NICo (#7939) (@janekbaraniewski)
  • 8ebf1f98ffb353f4dda3e076db37451dec04b475: feat: Reenable advanced machine settings for provision for VMs flow (@PRTTMPRPHT)
  • 411791948ef54f8aa6ab1a5a50c09d32b699a051: feat: Refactor backing store detection logic (@PRTTMPRPHT)
  • 6c5cc894f8be5f091909cd560595a05c483786b0: feat: Rename device capabilities to machine capabilities (#7928) (@PRTTMPRPHT)
  • 53c36ec85625016977a53f8402e651940e1c37ed: feat: Revamp compute selection in instances form (@PRTTMPRPHT)
  • 57ac8705511c55c1932ac74e0a40cc73a3c618c1: feat: Revamp object access section (@PRTTMPRPHT)
  • d8f09b3662c7a0b07eba975398e3ca4caef271f6: feat: add app instances (#7448) (@FabianKramm)
  • aa70535d5c3c8c85b04bfdd03d535db841f05694: feat: add insecure connection warning (#8366) (@FabianKramm)
  • 9a3489230aa7056e901f0f3df8b2f79bc471a95d: feat: add ironic view under Metal3 (#8510) (@FabianKramm)
  • e4e2a7174666d778942489f5263b222454f52553: feat: add machine types (#7873) (@mfranczy)
  • c5ebe5b3161b858fa97b4c9a81d944b293583af3: feat: add namespace strategy (#7643) (@FabianKramm)
  • 66295efd7f71a34c706537864c055571333d2656: feat: add netbox metal3 integration (#8170) (@FabianKramm)
  • 21147e07f4411533d7c6c71c463f82e4f066a365: feat: add node pools (#8938) (@FabianKramm)
  • b101faf24c81f0522d33693bfc4bf6ca276bdb93: feat: admin user recovery (#8177) (@neogopher)
  • 3127bff46251d92cb638817c4f22c7078ddf6138: feat: auto snapshots for standalone - credentials endpoint (#7712) (@mfranczy)
  • fabfc3e0dcd9fb5f3d2ee597e3e00e9f8fba357c: feat: better metal3 node display and overview (#8566) (@FabianKramm)
  • d952d889ac1b6a689dfd02c1d419c3b6f25288b0: feat: import the NVIDIA Dynamo certified stack (#8368) (@FabianKramm)
  • 5574a8e34539ca0e6680a4683eeb959810c4a9d2: feat: machine ref for nic (#7993) (@mfranczy)
  • 6eefcbba3fe5c8a984494afd7fb2392654c9e889: feat: machine reference (#7931) (@mfranczy)
  • 4e29786e29e1fd2b5b582fccc04916c655bd7286: feat: machines sync (#7892) (@mfranczy)
  • 57405c3d394748105f9fe9215741c2d54914b86c: feat: nico machines lister (#7969) (@mfranczy)
  • 9b9b04794c1d607fd942ce973531b3864a607d27: feat: node type shared / assigned (#8395) (@FabianKramm)
  • 7dd74e77690cc04b0c9cba9de6562b3f628785a3: feat: tenant node provider (#8208) (@FabianKramm)
  • f07517d2b2bb6db1c6780b9cd36f3f2b7cd1d98c: feat: vcluster device operator + kubevirt refactor (#7582) (@FabianKramm)
  • 8d6e8427190c2bb022628da93b67e369026a3d67: fix(accessauth): a tenant binds only users and teams it can see (#9001) (@nprokopic)
  • ed1e907316e2505dcabeaf0733344392af737194: fix(accessauth): refuse empty-verb matches, wrap authorizer errors, pin the matching contract (#8898) (@nprokopic)
  • 775ded40a0f4345f49726cab220a7a5c56777040: fix(accesskeys): trust owner reference on transient cache miss (ENGPLAT-709) (@roehrijn)
  • 47d56cedb4094595f626757674b6dfe88ba27541: fix(agent): delete namespaces left behind by a vanished space instance (@roehrijn)
  • 626625a128c41d69bfd371d7ed8bd8d543289b76: fix(agent): delete only a namespace the instance owns (#9126) (@lizardruss)
  • a9c6d4cf4dc2f363661232909700aae3b3df2d47: fix(agent): reload renewed webhook certificates without restart (#7874) (@johannesfrey)
  • c1ba280922b737c337a334c0305333ddff21d344: fix(agent): report the cause when vcluster proxying fails (#7697) (@Piotr1215)
  • a16aefd1844ef2f912665865778cda7eb1da9f38: fix(api): allow schemeless host in get kubeconfig request (#7484) (@r0bnet)
  • a319e8bbc2bc6b0143c4dafb01bd2a1269bd6712: fix(api): preserve a Secret's Type and Immutable across ProjectSecret writes (#6845) (@neogopher)
  • 3dee52d7265522f3a7f5284d47388a19ca7c82a5: fix(apiserver): only an agent may write a VirtualClusterInstance or SpaceInstance status (#9096) (@mfranczy)
  • e9e4bcb631859d0d41dd8b4dfb65a01ae1b47753: fix(apiserver): redact a tenant's watch departures (#8815) (@rlmcpherson)
  • dc7692bc4b834e9ecfea12305d8aaa50c5bf3e79: fix(apiserver): scope the project subresources to the project's tenant (#8027) (@lizardruss)
  • 11033c9e51e201ea4c1782dd800a8dcf8511cc62: fix(apiserver): stop applying caller access-key scope to reviewed sar subjects (#7728) (@johannesfrey)
  • 4c70dc44e2b95b0901ad86b171d1507fd3adfde5: fix(apiserver): stop updates from restoring fields the request cleared (#8464) (@johannesfrey)
  • d852741583672a234fb2ab2d8b531c473fe35b0d: fix(app-instance): Unblock the AppInstance controller from removing finalizers if it errors with the log secret (@zerbitx)
  • 8b3498d8255c6da7da31fccde39df858d3aed552: fix(appinstance): reserve releases and retain deployed namespaces (@zerbitx)
  • a5be7fa3a87ab286a0ebc1c75755ba870bb07745: fix(apps): wait for an app's jobs before reporting success (#7996) (@flomedja)
  • 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)
  • 2f3c48c73e6c943bf5510bc43a249dadf9bcee5f: fix(argocd): wait for the tenant cluster before registering it with Argo CD (#8403) (@flomedja)
  • 85f960df857bae1dbbcc962a0e38e9f5f6d0d259: fix(audit): redact datastore endpoint credentials from audit logs (#7999) (@neogopher)
  • 94cd420db9cc98c8cad08a8772b8df1988bcd080: fix(audit): stamp tenant before sink fan-out (@zerbitx)
  • da8e1a80d07ee1b7bac6886019347786cd3bc8e2: fix(auth): restrict network peer diagnostics to platform admins (#8488) (@janekbaraniewski)
  • 86c62eaa89e2573e04df9edc628fdf2a0000596b: fix(auth): scope object permissions to the subject tenant (@zerbitx)
  • 622cc1c57c0ba2b56645fc3152f47116ecdb840c: fix(authorizer): answer the tenant boundary as the subject (#8458) (@lizardruss)
  • 3a4578b28f07cb05b8121e6aaaf188ebf68aaa29: fix(authorizer): grant agent cluster access through a cluster access only (#8697) (@lizardruss)
  • 929d10aaf5c3d2a7694ebf80c036695617f64657: fix(autonodes): replace nodeclaims that have not joined when the autonodes config changes (#8835) (@roehrijn)
  • 50c8f0c011a888374ced67a586f4358e556b5e18: fix(autoscaling): bump device operator to 0.2.2 and dhcp server to 0.18.0 (Claude Opus 5.5 noreply@anthropic.com)
  • 27b6732d83ecfb1cce83809137e3ec422a215bc9: fix(autoscaling): drop the metal3 host from a claim whose update failed (#8387) (@cbalan)
  • 01e0fc744e6f170e04c86de7ec77c5cc368be227: fix(autoscaling): keep instance and nodeEnvironment vars for v0.1 terraform templates (@roehrijn)
  • 27489df096e484345ec53ee81132d0d8caa40c94: fix(autoscaling): keep the operator's DHCP annotations on a released metal3 host (#8596) (@cbalan)
  • a135cc7ce5c642faae0962b0dfaad377a4e91674: fix(autoscaling): list node claims only for reserved KubeVirt node types (#8442) (@cbalan)
  • 51cef53214ded140aceee163dbf1856467c360f1: fix(autoscaling): name a NICo node's VPN peer after its claim (#8410) (@cbalan)
  • 33e18b6fd2777897d5a1d1d5c11d8b84de7f8105: fix(autoscaling): reconcile allowOverride on adopted nico operating systems (#8221) (@roehrijn)
  • 34558c44a3f1d90e7c978f0cebcf9706fd1c23dc: fix(autoscaling): wait for multus before deploying the dhcp proxy (@roehrijn)
  • a8980909784e8a8d0a92bdd8be687dc5f85859a3: fix(backport): reference existing LINEAR_TOKEN secret so sub-issue linking runs (#7491) (@Piotr1215)
  • 20fba1443e0471fb8bd3bcdebba374a18d0d0564: fix(backup): refuse a tenant rather than serving it the whole platform (#8328) (@lizardruss)
  • a491a5ac4623a59823b0b29a52cc48c840d67320: fix(chart): map head chart sentinel version to the head image tag (#7195) (@johannesfrey)
  • 35effe2ddcfc05d7cbb02106ef635b0a582fe307: fix(ci): authenticate docker hub pulls in the e2e workflows (@roehrijn)
  • 7afe923f8caa89b43d0b74880ea4b22800046d67: fix(ci): check out the kine verifier at the trusted workflow revision (#9140) (@Piotr1215)
  • ae0f7c9eb5e123f6797337311e07bbdfc1f6052f: fix(ci): derive the head platform version from the last release tag (#8763) (@adriankabala)
  • 2c5aa35ea9a6714079390c82ae5c1b21b8e0675e: fix(ci): keep the e2e aws session name within the sts constraints (@roehrijn)
  • 175e6e60a40cb7bfa0e8ee10addce404f50642d6: fix(ci): preserve first-push check visibility (#8063) (@vcauesantos)
  • c7393cc0952f40d07f842a6b5f5f2c27972f88c4: fix(ci): resolve platform base by semver, not publish date (#7461) (@sowmyav27)
  • 2a9b5bef946a21402dc3b59919d4b72b503c3443: fix(ci): skip the mirror release step on sync push runs (#8833) (@Piotr1215)
  • ca3221804b6331c327936f1c7891409a023d7cf4: fix(ci): stamp a semver version into head platform builds (#8760) (@adriankabala)
  • 203c41a122e50087a5f663509b76de6612adf586: fix(ci): stop devspace plugin sync from blocking releases (#8655) (@sydorovdmytro)
  • 8f7e7f88451414690023e19468d8abc7ae45762a: fix(ci): use the current branch cleanup contract (#8343) (@Piotr1215)
  • 1952905473092847f9ac873cbe51fcf027fb00a0: fix(connectors): address OS-image review feedback (@janekbaraniewski)
  • ceb40e669a309cc9aa3cb37f1080176584a69261: fix(connectors): bound a node provider's netbox connector reference to the owner's grants (#8785) (@johannesfrey)
  • 694cb6c5010be253dda37a080c147130230c64b4: fix(connectors): bound observability connector references to the tenant's connector grants (#8758) (@johannesfrey)
  • 05d821909c6813b25e2bda052bfd889f07315757: fix(connectors): correct OS-image validation test (@janekbaraniewski)
  • 514b8f8ebded3470f88767ad7ac2e92127b76b5e: fix(connectors): harden OS image store compatibility and validation (@janekbaraniewski)
  • 6b08b11a6ad77c3e6dd03e5eedeb56affa99fce9: fix(connectors): keep credentials out of default audit logs (#8267) (@nprokopic)
  • 9f7dc46f43a568f8385406ace0a543f63cbafb83: fix(connectors): let non-admins list connectors with a redacted view (#8486) (@johannesfrey)
  • dd0330b55e7d538d263feb0b077bf111487ba501: fix(connectors): re-check a tenant's connector references at reconcile time (#8581) (@johannesfrey)
  • 68c6c2631c198629ed0f20f5e2389303b255c05d: fix(deps): security updates for main (#9079) (@vcluster-security-bot[bot])
  • 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])
  • 6d71ea18cf23c6b6ca7a090a7847d1973c899766: fix(deps): update github.com/netrisai/netriswebapi digest to 7b335ae (#7799) (@renovate[bot])
  • 87211bae1ca9b4b0c281f932cee6d35588a079b4: fix(deps): update golang.org/x/exp digest to e88cd73 (#8072) (@renovate[bot])
  • e3d52262f00c2457e7d374afdac1778013de660f: fix(deps): update module oras.land/oras-go/v2 to v2.6.2 [security] (@renovate[bot])
  • 8de63477fe8535a6462185e9b78145c13f6d6b62: fix(deps): update npm security updates [security] (#7842) (@renovate[bot])
  • 28fb8404f683004a04029e4898abeaab9c55df7e: fix(docker): bump opencost chart to 2.5.32 (opencost 1.121.3) (@vcluster-security-bot[bot])
  • 3955a5d5cc6311ffd730da5f70628b26d5197b9b: fix(docker): bump opentofu to 1.13.2 (@vcluster-security-bot[bot])
  • d64987ecc28b3761fea971d3d0c8ee905005cbea: fix(e2e): allow commands on fork pull requests (#8432) (@vcauesantos)
  • 05d19441ecc9674f74d0572391686c9061f736aa: fix(e2e): attach cloud-init log only when node readiness times out (#8480) (@roehrijn)
  • eef2176dbccb44f79dda7b16e5acc5938edfaedc: fix(e2e): create the AWS NetworkEnvironment after its credentials; raise nightly ginkgo timeout to 150m (#8712) (@sowmyav27)
  • d963028748de68afa1d417f8b653eab3dc865aa1: fix(e2e): detect a missing nico checkout as lease staleness too (@roehrijn)
  • 0933f0d018876fe03a9259a91ec34eb8fff4eba7: fix(e2e): fail fast in prepareImages when a takeover already lost the lease (@roehrijn)
  • b74076c35e3b5c7cb0e2958908b3d1a7e90405f6: fix(e2e): fall back to direct module fetches in the nico image builds (@roehrijn)
  • 40d3cf003d3001153439758824be0dd3587a4915: fix(e2e): fix helm client ingress-nginx cleanup flake (ENGQA-1487) (#7658) (@sowmyav27)
  • 2d078709edf8101eaf2a52cbf80a6f6759ac9e5d: fix(e2e): give each nico e2e spec a unique tenant org (@roehrijn)
  • c6fceac3a6e64b9509ccb2b04770f202d8758c59: fix(e2e): give sleep mode ingress wakeup a longer budget and read the body once (@roehrijn)
  • 48ff65423caa2943416f65e67cb3b0a433773467: fix(e2e): give the control-plane lane a site-worker, skip the baseline VCI where unused (@roehrijn)
  • 4ddb6c462b275389c047b87b6cbcbf77b1d8e8a6: fix(e2e): guarantee durable on-failure diagnostics for standalone and auto-nodes specs (@roehrijn)
  • 0359b057aff99d9c4a49d2e4566922b828f0802e: fix(e2e): harden the nico image-prepare lease against staleness and silent errors (@roehrijn)
  • 035195aadd553cce407a053c8691d96561270d66: fix(e2e): issue fleet observability metrics-writer keys through the scoped client (#9087) (@johannesfrey)
  • e560a639948e313b2e3b46773406150429845968: fix(e2e): keep spec context unchanged in space provisioning matrix (@zerbitx)
  • ba508eda75bcccd23d6f337114b0ded47960510d: fix(e2e): limit bundled template check to presence (#7464) (@seanschneeweiss)
  • 105c4e7047dbed54ca44291b49052096f2437906: fix(e2e): merge postgres resource requests instead of replacing the default (@roehrijn)
  • 476c94fd03db15f2d9a4f9b831ae9d5dc6daf48c: fix(e2e): name space provisioning matrix user with the tenant prefix (@roehrijn)
  • 7aa3f5501c2f04b89fec8b2a23a07407278f729c: fix(e2e): re-add a local lock around the nico checkout's critical section (@roehrijn)
  • 7d106f1b9fd90a51003650edb1e8f3cd0a8d6fc7: fix(e2e): read the NetworkEnvironment readiness from the host cluster (#8245) (@anvesh-loft)
  • 2b8215f27f234853129446346c605ad50c9651f7: fix(e2e): reap nico instances the bridge first sees terminating (@roehrijn)
  • 6ada039e83d88cd27d799c56e1ac1773942b8081: fix(e2e): recover any panic in the nico instance bridge's DB ops (@roehrijn)
  • 78d610589139eb722621dcd5ad774a27a54f4f1d: fix(e2e): restore postgresqlDefaultVersion after #8766 (@sowmyav27)
  • 605acabc58490935be39bcc073555041e366af9a: fix(e2e): retry lease acquisition when a waiter's holder dies silently (@roehrijn)
  • f3d29a0c1cc0f038a1f49cca419b0dac9bcc1cc4: fix(e2e): reuse the persistent kind-platform cluster for e2e runs (#8136) (@seanschneeweiss)
  • 04f804f53d7e8ffde99d25fc624e9aaf2d673ce9: fix(e2e): route klog and controller-runtime logs to ginkgowriter (@roehrijn)
  • 74818beb4e423b397014a02268aba21181f18c1c: fix(e2e): run kc-free log fallback tiers when standalone kube client is nil (@roehrijn)
  • aad9e410a61ac0cecb07ec19859431f69f4344da: fix(e2e): skip the metal3 license token when the platform image uses the fake license (#8625) (@roehrijn)
  • e26a52485e34e448b7297cc0c98fd0441c9aaf76: fix(e2e): stop aborting VCI wait on transient Failed; retry VCI patch on conflict (#8211) (@sowmyav27)
  • 3f60298b2237de5961a301c08b636df4f6d91f43: fix(e2e): stop asserting a specific provider name in the org-reservation rejection (#8196) (@roehrijn)
  • 336a8741199b248a1de3bc47c4ece86fd09a4942: fix(e2e): stop flaking Least Privilege Mode VCI readiness waits (@roehrijn)
  • 65a7558096890a35b9f65c07162f18631131ee61: fix(e2e): stop leaking EKS IAM roles created by the cluster provider (#7886) (@adriankabala)
  • 10a1334a7b5cc21c11889a4b6eb82517c8ec15a2: fix(e2e): stop printing the dex client secret to stdout (@roehrijn)
  • 7ddb035e2d45d6adab49e01f763bff9ac9a23899: fix(e2e): surface degraded fallback in FirstWorking enumerator (@roehrijn)
  • b40fdddd84adc17940ea988c11640d15074410cc: fix(e2e): unblock metal3 fixture hosts on the 20261028 ubuntu image and upload failure dumps (#8986) (@roehrijn)
  • 13d08c261bbea0517a953d09d05a8be47746c5c9: fix(e2e): use explicit name for central-hostpath-mapper appinstance (#7544) (@adriankabala)
  • 299f2c110f2e190c5a6e2221d24d0c1736f29553: fix(e2e): wait for private node systemd boot before joining (#8860) (@sowmyav27)
  • 7171f905a9de1363b43ca77ed94dbe1172473793: fix(e2e): write s3 object delete warnings to ginkgowriter (@roehrijn)
  • 8c0d60c63ceebcb08e3ce673519eb1853a62b725: fix(editor): stop flagging valid Helm-templated values as YAML errors (@andyluak)
  • 422d4f21bfffab45724102840502b0f35c132d41: fix(hack): make go api regeneration work from a clean checkout (#7936) (@seanschneeweiss)
  • 0cb474a5bc99f1cb64843f2514f04b7f3852e45e: fix(hack): make swagger generation fail loudly instead of corrupting the spec (#8091) (@r0bnet)
  • 009659f8b02682b53171a752a574bc2ff07f4224: fix(handler): key access caches on the whole identity (#8700) (@lizardruss)
  • 18b270cea6556ae71a1aede9c098d8cc05153da3: fix(license): enforce limits in the offline license cache (#8096) (@johannesfrey)
  • e4acf2b161abbf79c92b730f357f02312ea44f2a: fix(loftrouter): bound reconnect rate so an unhealthy instance can't storm a router (#7556) (@Piotr1215)
  • 3104a5beaf43ce950eec334c7e2c6987673936ce: fix(logging): log patch bodies and helm values only at debug level (@andyluak)
  • 00e9654bee3091fe394e0d06d290a1120c16f635: fix(machine): refuse assigning a machine to a tenant not allowed its node type (#8960) (@roehrijn)
  • 0eb75053f073d179d0ad3621e19bd71ef12afe28: fix(machine): refuse tenant reassignment of a claimed machine (#8400) (@jjaferson)
  • a5767239d7dccdd74e4711592feff5f4c49bb5c5: fix(metal3): bump metal3 chart to 0.7.3 for the emudhra ca distrust (@msriid)
  • 5b423fb140a70a6e5a3e1144e7b9ef24a6c8ddb7: fix(metal3): only reset a bare metal host the platform assigned to the claim (#8807) (@mfranczy)
  • 37bb83540328a2f93e683c3ca8d135569a4e9ca1: fix(metal3): report the provisioned ip in machine status (#8525) (@roehrijn)
  • 86a487cf0876e86728edba5470dcae1d9dd8904d: fix(metal3): stop matching host cpu and memory against the node type (#9055) (@c2ndev)
  • 9bb481c717d7e72bbdc903ac29895cd53fa8c95c: fix(metrics): de-duplicate identical series when merging metric sources (#7457) (@Piotr1215)
  • 66b5a2bbe698e4661871718e7d518ce7a3a5b73a: fix(networkenvironment): allow editing the display name after assignment (#8321) (@rlmcpherson)
  • f3258f5d665067a59380f02a7751a11a19dcdee8: fix(networkenvironment): count every bound node claim in the deletion in-use check (#8301) (@rlmcpherson)
  • 7d8aeeabffd12910f47d471eff82a953d5ad9d58: fix(networkenvironment): name the node claims that block deletion (#8333) (@rlmcpherson)
  • 4ca2a4689dd666ea4e40d8b774fbc0d470ced0f4: fix(networkenvironment): refuse a missing node provider and release on delete (#8804) (@roehrijn)
  • fa42229429e38a8ff719078d13485c090991fc03: fix(networkenvironment): refuse a tenant's create (#8350) (@rlmcpherson)
  • 5d0f80ba7f933f6920c26675f36abccf65aeff01: fix(nico): act on a NodeClaim's instance only in its tenant's org (#8842) (@mfranczy)
  • 5956247deb17d7a5d70dbd2009cf91f9a917488a: fix(nico): address follow-up review findings from tenant quota change (#8459) (@roehrijn)
  • c9e437eac934e03064d208b2c8733cdebb1ec8a6: fix(nico): classify retryable errors by inclusion (@roehrijn)
  • 38d64651920f3880627328d129da18754ea49f46: fix(nico): delete a vpc's subnets before deleting the vpc (@roehrijn)
  • fc8fd9a9e1da68b77486b30afdc7561eca435d01: fix(nico): delete materialized os-image catalog entries on osimage deletion (#8220) (@roehrijn)
  • 599b5edfbf0bf164f53a04c766e3a995b42cb425: fix(nico): derive the tenant node provider from assigned network environments (@roehrijn)
  • ff9581c46e5be316feed238448c1902fb4a47a8d: fix(nico): keep node-type claims off machines assigned to other tenants (#8392) (@roehrijn)
  • 479371dd9ef7ebbff3ef5d4513b6051190c3a80f: fix(nico): make network environment tenant assignment immutable (#8100) (@janekbaraniewski)
  • 056d35045f103cbc2289cea3285fa4d99986fd47: fix(nico): mirror a machine nico is still cleaning up as deprovisioning (#8788) (@roehrijn)
  • 53f32e67bded5a468d4012d8dd2c078228fd720e: fix(nico): onboard tenants into nico automatically, using the tenant name as org (@roehrijn)
  • 72e4709fff07e398510357807476b3ae4a56fe58: fix(nico): only an instance makes a machine Provisioned (#7995) (@mfranczy)
  • b3a5a97411271f89ad4ef63a326e5abdc98f1146: fix(nico): read the capability from the account, not from a list entry (@mfranczy)
  • 377d1d9b4f2bdafd6d0f8c6b3fbcfc205f23aad9: fix(nico): refuse tenant claims naming an unreadable network environment (@roehrijn)
  • 8aebb74cec191846760d3c6d7bb0b41d074d58f4: fix(nico): reject node claims whose os image nico cannot boot (#8988) (@r0bnet)
  • 440cc977d56d0b7e58f5c721fa4bca105d207e2d: fix(nico): reject tenant and provider org collisions (@janekbaraniewski)
  • 6e010d94fd8ce9a53afed381aa67a46a15899195: fix(nico): report machine power state from host bmc health alerts (#8539) (@roehrijn)
  • 9db4ed4d69110f002c06c184e7ad475c947c9470: fix(nico): scope the nicotenant reconcile through the tenancy client (#8470) (@roehrijn)
  • eca0454ad23b73686cc0c444286ff25b490501f9: fix(nico): stop tenant quotas from reserving nico machines (#8443) (@roehrijn)
  • 6f01b350734058687d8cee460ffea6b588e9843f: fix(nico): the capability grant must not gate onboarding (@mfranczy)
  • 13fafe2dee85f22fc5b948ca2056153e8473e152: fix(nico): wake a tenant when the scope label of a revoked by-name grant is swept (@roehrijn)
  • da3adcfa2d20160604b61fb8283130e425d3c407: fix(nodeclaim): enforce tenant node type quota on the platform (#8404) (@roehrijn)
  • fcf3e98fac72e012fb5de0ba12007af737bb5e44: fix(nodeclaim): fail a claim that gets no machine after a provisioning wait timeout (#8565) (@roehrijn)
  • 7808b32022ad0ee8da548f53718fc7c4214099a8: fix(nodeclaim): fail metal3 claims whose machine is gone (#8778) (@r0bnet)
  • d427ec9bdc2932ba76599e346ebf820d68775cd7: fix(nodeclaim): hold concurrent node claims to the tenant node type quota (#8558) (@roehrijn)
  • 1c90d66830ebd37ba89e3225bb083b3ceb2bb727: fix(nodeclaim): keep provisioning failures visible after the first reconcile (#8984) (@roehrijn)
  • c4d655abf387c8afa94c9a16d6aeafb8d466e25e: fix(nodeclaim): let a claim an earlier build parked on a terminating environment recover (#8381) (@rlmcpherson)
  • 33eac624ec96880ed31ba396788bd86d30f47745: fix(nodeclaim): refuse a typeRef outside the tenant's node type allow list (#8878) (@cbalan)
  • 1f0ded99053ecfd10445546427bb3273a53ab239: fix(nodeclaim): refuse hiding or deleting a node type while node claims use it (#9042) (@roehrijn)
  • 80db3b0d0bc9d3073dbdab8ccf3564cfae9a6bb4: fix(nodeclaim): refuse pinning a machine no allowed node type covers (@c2ndev)
  • 4e7830cdabe42955c6449e8fcf6e5f95a4c49fa2: fix(nodeclaim): report ProvisioningError for failed provisioning attempts (#8783) (@roehrijn)
  • b83d763ac5ebea8e67e06cc4b0c9c834c3a44d6c: fix(nodeclaim): report the quota error when the over-quota node type has no free machines (#9020) (@r0bnet)
  • 61e57ee51b8ce1cc864f520a9db3d910b90d4a05: fix(nodeclaim): say a tenant may lack node types when its provider reads as not found (#9034) (@msriid)
  • f263eeafa049ac0bd88332e7728ec017003d2b25: fix(nodeclaim): say what a claim waiting for a network environment is missing (#8382) (@rlmcpherson)
  • 672ab99bd02f87020b60cd63ad00044502866560: fix(nodeclaim): say whom to ask when no network environment is set (#9009) (@msriid)
  • 42a9cc67c00a501408d30e2e8100b1735c01dcc0: fix(nodeclaim): show the new IP of a VM that was stopped and started (#8466) (@cbalan)
  • 275a9afe3b6f506440646416df13edd6823ac093: fix(nodeprovider): serve field validation failures as 422 Invalid (#8956) (@msriid)
  • 0b6c53b5979f5b4c566758868fb76bfbdc98f384: fix(nodeprovider): take every node claim down with the provider, before its environments (#8575) (@rlmcpherson)
  • af9a73523931fdc8904fb21de298507ffb031947: fix(nodetype): keep a relabeled claimed machine in its node type's capacity (#9023) (@roehrijn)
  • 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)
  • d9864b91b6ed361fe25b1b74c22e94d98d412e16: fix(observability): give metrics-writer access keys their instance's owner (#9050) (@johannesfrey)
  • 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)
  • ba958579ef9f1e20f9422a1dc86a6d386c070dad: fix(osimage): answer 404 for blob paths instead of falling through to the ui (@r0bnet)
  • 4396f8ba8c077c9b5a879df4eb716775eebda21a: fix(osimage): answer head on the blob endpoint so ironic accepts it (#8509) (@r0bnet)
  • 2d9d440a19a3d09d7edea23593180422c332a325: fix(osimage): answer image store setup errors with 400 and a fix hint (#8649) (@r0bnet)
  • 558f8425114decaea1e537ac222b0564ee37285d: fix(osimage): check spec.access before handing out upload targets (@r0bnet)
  • 19f1df6e0cf496c24728ed9bd1967511a37001cc: fix(osimage): clear the initiate record when an image settles ready (@r0bnet)
  • 9a632c7e2d0152498921821f1fa8f577d0c18f89: fix(osimage): clear the session record when an object is rejected (@r0bnet)
  • 0919fbd43aba8f8781071595969043dfc29348fd: fix(osimage): complete the bucket-with-slash store hint (#8800) (@r0bnet)
  • bea8c308f8393a9d692d5a084d3f6eae4f4dc486: fix(osimage): do not expire an upload that completed at its deadline (@r0bnet)
  • 3174087e46aa6a8e831fa54074df6b2acf0a9eed: fix(osimage): fail a part listing whose marker never advances (@r0bnet)
  • 9ab2e45cd58310cacc17d23c77e6c60721743540: fix(osimage): guard every way an upload session can vanish (@r0bnet)
  • 3d5ed4f5044007bdc58d7699b830b469829a944c: fix(osimage): keep declared-size on ready and clear stale bytes on failure (@r0bnet)
  • 6fd3b207008fd908a6f02224507ff18349fc7991: fix(osimage): keep store errors off an image the controller already decided (@r0bnet)
  • c8efe56117efa4368a2b663bc5a82542d248ca40: fix(osimage): keep the upload session annotations server-owned (@r0bnet)
  • 2bb26f888f9cf402adb19504774b2e7fcacad897: fix(osimage): let a failed image be uploaded again (@r0bnet)
  • be75e4ff08455bd006a5f9dc4c9c80eb52d36bed: fix(osimage): let the controller own status alone and write it once (#8557) (@r0bnet)
  • e1591b7763997add4f6b694e954031cef02ca4a0: fix(osimage): let the object decide whether an upload completed (@r0bnet)
  • 561e082355ce5e6a5a8230dd5b9d07ad2966f832: fix(osimage): move the conditions assertion out of the api module (@r0bnet)
  • 32149c427e6ae071561f04c538e0d9de88da61d5: fix(osimage): re-derive the whole expiry decision, not one field of it (@r0bnet)
  • ee47810c6dca9ee91b71259cb7591f5373a7c998: fix(osimage): recover a finalize whose completion was never recorded (@r0bnet)
  • 7bdd9dbcd264dffcbfa003ac285f5a5c3c3a9c7c: fix(osimage): refuse an unowned upload before opening a session (@r0bnet)
  • 79458e45b14ed00a04095081b646a6c04a06d40a: fix(osimage): refuse dry-run on the upload subresource (@r0bnet)
  • 1167291e9ff1301e88893fac1759b0c79695e038: fix(osimage): report store errors from upload and finalize on the image and connector (@r0bnet)
  • 18c58ef5b315cee34d285bb0627f87fed4a515e2: fix(osimage): retry an unanswered store test and wait for the store in e2e (#8715) (@r0bnet)
  • bdb133ccefeeec6e482d036a9dabfcc1373abbf3: fix(osimage): retry the connector status write on a conflict (@r0bnet)
  • e8b3fa8cb826cbba894a757ea3d0b87a50b8251a: fix(osimage): serve the blob endpoint at a path ending in the image uid (@r0bnet)
  • 156bf996edc002c07da1c38798dfed5bcdcc4f50: fix(osimage): spell the upload annotation last-initiated-at (@r0bnet)
  • 9194825edc24d69cdde207394923952260a74adc: fix(projectsecret): sync shared secrets only into project secrets in existing project namespaces (#9010) (@seanschneeweiss)
  • f8cb801572af70c7ab87b3f5761e98d9f0c566b1: fix(quota): count only on-demand placements against the tenant node type quota (#8780) (@roehrijn)
  • f0245bcab9d836a21c806ead82511e7d1b2481d6: fix(quota): prune deleted clusters from per-user quota usage (#8693) (@kaihulme)
  • 574a4ca4cafcfe9fa3d79405d9ae8be79597ce89: fix(release): allow e2e checks permission (#8212) (@vcauesantos)
  • 02fe648058e4fbbb3776074c80d7540abc218800: fix(renovate): group vitest and @vitest/browser updates (#7666) (@vcauesantos)
  • ba5e4caf20b184c91d7d314c7c136285420a5674: fix(renovate): group vulnerabilities and automate patch updates (#7821) (@vcauesantos)
  • 2befa3ecff9a9bb42927dc57fea93018f09387ec: fix(renovate): match release branches of any major (#8490) (@sydorovdmytro)
  • 9f5b4dc955232b88ee06423a6813d2941094418d: fix(security): check chart secrets when saving an App or StackTemplate (#8537) (@flomedja)
  • 16f7aa14abcddae7c7248f4a47555f4451b9e4ce: fix(sharedsecrets): copy a shared secret only where the namespace's tenant may read it (#8841) (@seanschneeweiss)
  • 1f597b320013cc0032a19cafa4f00b5e31839c34: fix(sleepmode): let onboarded tenant clusters auto-sleep despite argocd polling (#7539) (@flomedja)
  • 04437e5cb00e881f583726feeac13bc188a72342: fix(sleepmode): set wake service port for Istio virtual service (@zerbitx)
  • 38414ae01e336f265bf7b33983193af5a238e253: fix(snapshot): keep snapshots in progress through transient errors (#8622) (@matskiv)
  • 93f1b1c2a40cbae7291ca4176ea99d7624daf878: fix(sshkey): generate ssh key names and resolve keys as the claim's tenant (#8805) (@roehrijn)
  • ac504e1ee3970978f876369169ea32178aaed050: fix(sshkeys): let non-admin users manage their own ssh keys (@roehrijn)
  • 62d2207c483243075d2ce1d807b2fb37b0cc4171: fix(stack): add get verb to stacktemplates in admin core roles (#7998) (@flomedja)
  • 4e2e373204dc9ff7b5bf29ef950e3dc78753c25b: fix(stack): add stacktemplates to management and core roles (#7968) (@flomedja)
  • bb8a34e717849ac7b33b3d0fcbd771b6362c34ed: fix(stack): reject inline app release name changes (@zerbitx)
  • 34eb645811ff227b4e869963cff1d6d67c0a9568: fix(stack): reject jsonPaths without braces (#7980) (@zerbitx)
  • f414263a353342c0cf0d403c8225c0a486e6f722: fix(stack): report inline app release namespace conflicts (@zerbitx)
  • f70d1cd040bf65110dcd5fca45dff49941b589b3: fix(stack): use platform.vcluster.com/stack-retry for ui (#7973) (@flomedja)
  • f10f725889e10e12b757b261c80f49f06c361ce3: fix(stacks): bundle every certified stack from loft-sh/vcluster-stacks (@janekbaraniewski)
  • cc6f717a99d44558fd77a14a0eed14a3ccac0026: fix(stacks): fix stack validation issues and centralize validation functions (#7934) (@flomedja)
  • 8cd61c2d8062da47bdac2ea22b7b503670bb1f22: fix(stacks): only accept Retain or Prune as a stack's prune policy (#7960) (@flomedja)
  • 0d990fbf6f0ae20863b5fc2dfe3063fd90de7199: fix(stacks): read task outputs with the stack owner's rights (@flomedja)
  • e1f6a08dcdd05724bfd5e758733aa1d25253610f: fix(stacks): run the certified stack ingress check with the Platform image (#8055) (@flomedja)
  • 7f54c8082e79be3590c63d06c23c0ba6d22da09d: fix(stacks): say why a stack waits when its outputs name is taken (#8285) (@flomedja)
  • ef3a07024148bb1c7b7bde276a5b5e0d16ca1866: fix(stacks): stop the stack name from making helm release names too long (#8018) (@flomedja)
  • 3c51212baea98c9e246783cc4f7678186635b57b: fix(stacks): validate StackTemplate references (@zerbitx)
  • c71fd840b3065f629be0366573384581ba277fbe: fix(swaggerapi): give the fake management client a scheme (@andyluak)
  • 204ee3c58d42a7d14ebce9ddf27b539d0445613e: fix(tailscale): bound and fail over network peer dials (#8127) (@roehrijn)
  • cb9aae0ca53e91a4785d1cb75672eb2e8868ff86: fix(tailscale): mesh DERP replicas on pod networks inside 100.64.0.0/10 (#8613) (@mfranczy)
  • 15caec6feb025bcc4608f8d7f67922f79771a896: fix(tailscale): process networkpeer deletes delivered as tombstones (#7616) (@rlmcpherson)
  • 5a69380d700e7920c29a15106c4c9d5064c68aea: fix(tailscale): reap stale network peers left online by lost cleanup (#7618) (@rlmcpherson)
  • 87c277ba31fb85ce47101c0e2858ec89e67b2504: fix(templates): handle float64 number parameter values in FillParameters (@andyluak)
  • a5161d6da1717d0104f54d5ec85baccd4fd5ad69: fix(templates): preserve RE2 validation behavior (@zerbitx)
  • 69f337be35fe39e8e267ba40bc7230d33af4d973: fix(templates): support lookahead regex (@zerbitx)
  • cac8bb62a8f7c6c44630ba22d23357e6f5fb79fb: fix(tenancy): a principal of a missing or terminating tenant reaches nothing (#8699) (@lizardruss)
  • bda81c019a2609329107b5b28a30c6a280950ebf: fix(tenancy): answer an unsatisfiable selector without a request (#8134) (@lizardruss)
  • 12dc66ee4b1adb7550b6e022bad61035804cbf0c: fix(tenancy): bind snapshot record lifecycle to instance ownership (#8598) (@janekbaraniewski)
  • 3c8e8c34504a21797a949cd265aa3b9f90eaaf7f: fix(tenancy): bound StackInstance outputs and template reads (#8589) (@janekbaraniewski)
  • 36911ba1a296430d54edb6398c79209194e2bb42: fix(tenancy): hide other tenants' clusters from the license (#8882) (@flomedja)
  • 7ae6a38b22314a0671dbeb275ee79496df5dfdb1: fix(tenancy): hold every tenant-owned cluster-scoped name to the owner's prefix (#8826) (@lizardruss)
  • 03fb46541ffab95e009d42847bc65e6b357a83fa: fix(tenancy): judge managed-label writes by the caller: patches as updates, tenants not at all (#8823) (@lizardruss)
  • 806341257225edad6cbe9e5a5762d4f8e4f49cba: fix(tenancy): judge subresource writes and project creates from one requirement table (#8773) (@lizardruss)
  • cd980bab9f72199056f9832d74149c32e34fd5ac: fix(tenancy): keep a tenant from changing a cluster's deploy mode or inline template (#8863) (@lizardruss)
  • d159a576b57f4cb0a15f5873f99a978d3378ec4c: fix(tenancy): keep an operator's subresource reads in its own scope (#8819) (@lizardruss)
  • 44a34defb2e173bd6a4982ab772c04013dcfe8db: fix(tenancy): keep tenants out of platform admin endpoints (#8725) (@flomedja)
  • 2744048199e7c7989249ce37209d446bdfa1a2a3: fix(tenancy): lend network environments to tenants, never let one own them (#8840) (@roehrijn)
  • 08efac6f853fffbc8c7e0ea25b047675424fee7f: fix(tenancy): let an operator tend a tenant's object of a kind it switched off (#8822) (@lizardruss)
  • 038ea704285769acaa97d34dd0abba98e68803ef: fix(tenancy): limit tenants to their own space templates (@zerbitx)
  • 10993b8b78a3ae820689e68fa9d385fadc6fc764: fix(tenancy): mint reset access keys only for a caller's own tenant's users (#8872) (@lizardruss)
  • 37efa03c0cf1d16e272f910cebefc1236ca71251: fix(tenancy): name the ui setting when lending to a tenant that has it turned off (@janekbaraniewski)
  • d4eaf2aba9baed373a68abb0397b9176dd173919: fix(tenancy): only a cluster's owner can get its agent key (#8709) (@flomedja)
  • 6a1c50b2c28a94c33e2875c2f6c42484e144dad5: fix(tenancy): owe the initial-events bookmark only where the apiserver does (#8258) (@lizardruss)
  • 171c319f2a559cfa08b17ea607e8cb3ccc86ee24: fix(tenancy): refuse an agent's write to a tenant its cluster does not serve (#8865) (@lizardruss)
  • 2a3581635da5b38cbd055fe8b7c9e50b8fd156ac: fix(tenancy): refuse exclusive holder label on users and teams (#8292) (@seanschneeweiss)
  • d43f290239793f421558381f0a4b697dc94ff224: fix(tenancy): refuse lending kinds a tenant can only own (#8871) (@lizardruss)
  • a6b95ff54917086cdb756f5d5117c2126d6f0f84: fix(tenancy): refuse metrics verbs on clusters and instances the tenant cannot see (#9016) (@johannesfrey)
  • c52013805d4b1d1526eb6d6d2b754b20f3e60ea8: fix(tenancy): refuse space provisioning in tenant projects (@zerbitx)
  • 7d314493c6bf7f9551cf344f29d3381f77f8e938: fix(tenancy): resolve a kind by the resource the API serves it under (#8817) (@lizardruss)
  • 0edd5c2b4348493ece3be12d1fecfe10d554fde8: fix(tenancy): scope AppInstance logs and validation reads (#8588) (@janekbaraniewski)
  • 291db1a4662e0c4b3a931461ba713a2dc9e55a97: fix(tenancy): scope Project validation to visible inventory (#8600) (@janekbaraniewski)
  • eefbb851f8024c82e8c173bd544409c10fc21af3: fix(tenancy): scope VirtualClusterInstance credentials and standalone peers (#8597) (@janekbaraniewski)
  • 55e31b586d5f266f50120a3bd662e5762ed0c7aa: fix(tenancy): scope VirtualClusterInstance pods, node keys and databases (#8593) (@janekbaraniewski)
  • 4a9377dfc1cf16106df6fd30589dac4f4956c2e8: fix(tenancy): scope VirtualClusterInstance shells, join scripts and kubeconfigs (#8594) (@janekbaraniewski)
  • dc8a49e66a0649571cf8925d346333a8483f6095: fix(tenancy): scope VirtualClusterInstance snapshots and access-key reads (#8592) (@janekbaraniewski)
  • 2e54ff385b0ac7d7a4a24228c33f1b8f5b0786ad: fix(tenancy): scope an unresolved caller's write to the owner instead of refusing it (#8821) (@lizardruss)
  • 27df2bfa56d8b859c0ef2208729b107ee77a5197: fix(tenancy): scope the instance lookup the log and usage endpoints read (#8329) (@lizardruss)
  • d400c213ffb4eb12156016f68c1c31861cbc8757: fix(tenancy): scope the project members and import-space subresources (#8331) (@lizardruss)
  • 5a00b6b569696194ee51b57e0d7a3bf781059e3c: fix(tenancy): scope the user, team and cluster subresources (#8330) (@lizardruss)
  • 6417b837b9c86b364be1d022bf5c25ca4b76dff4: fix(tenancy): show tenants only their own audit events (#8736) (@flomedja)
  • 0ba1e00fb1d86260338696ac6c6a64025f6dc6f0: fix(tenancy): show tenants only their own objects in permission lookups (#8723) (@flomedja)
  • 1e0793be980baf45f17b9972366c3e209e7789f6: fix(tenancy): stop node provider helper commands from reaching other tenants (#8720) (@flomedja)
  • d81fac3a147c23ca2b214c64217132b723318429: fix(tenant): bound tenant writes to the tenant's own instances (#8065) (@lizardruss)
  • 6eec026a63456a61f8c710b606649fa7237998fb: fix(tenant): grant tenant admin wildcard access (#8000) (@seanschneeweiss)
  • 1bcd1fbe41e3d74ccb57a2ca88d623ddb66db215: fix(tenant): reject missing or non-nico node provider at tenant admission (@roehrijn)
  • 3785d54e063936def6b929597cf5022efdf9cb71: fix(tenant): reserve the tenants/config endpoint for operators (#8003) (@lizardruss)
  • 3c9c942391e56f48d583b54af6560981249ee9c0: fix(tenant): scope cluster subresources and bound writes (#8487) (@janekbaraniewski)
  • 8be7717579cc4db6b89a0586894f81fe67a56cba: fix(tenant): scope user profiles before credential side effects (#8489) (@janekbaraniewski)
  • 7e6796e40a6a210c4b7c5892b9356a241c6fa03d: fix(toggles): make clicking toggle labels toggle the control (@andyluak)
  • 27436d8f27e783a262282fafbd624a150db62498: fix(ui) correct stack fixture readiness (@andyluak)
  • 7bb601775b0a145b26043a4f85cf1c5d3be5c459: fix(ui) stabilize stack P0 fixtures (@andyluak)
  • 259626bbbb5c4ce1318d30cba4e9a4a79abbfe35: fix(ui): address Stack E2E review feedback (@andyluak)
  • 90da7720090df8395e3e96a57d1b2dcf6c4adf29: fix(ui): address demo issues (@andyluak)
  • 764d3eb5478346b9c1c5ba0007d5ae24ec362e0d: fix(ui): address pr review (@andyluak)
  • 29ace4db7f022c07589451e5e2033940f14b7d83: fix(ui): address pr review (@andyluak)
  • 06aa8406bce45d2a52b876430a74a2275dba9b74: fix(ui): address review comments (@andyluak)
  • a644f014d4d9ca6d34fddc155823bb10efe71e41: fix(ui): align Metal3 available status styling (#8187) (@andyluak)
  • 0ed4d6acfcbe13792308d0f20985feebe772f75f: fix(ui): align the sidebar with the tenancy permissions matrix (@andyluak)
  • b3e430f971bad6823d6331aeed8d053e333bf1ab: fix(ui): allow resuming OS image uploads and swallow drops without an image store (@andyluak)
  • 12422d8786028f835efb66c5eac762d3577eff4a: fix(ui): apply the updated sidebar matrix and review feedback (@andyluak)
  • 67661d8550b35e909f0385472d2900b0e000c6f8: fix(ui): assign network environments only at creation (@andyluak)
  • 5895463b81cbe68e7bcecd3d0d1109a894256a38: fix(ui): collapse the inspect resources nav section on trigger click (@andyluak)
  • f3dcbcb5dcb6596d31180da9c036e8898968e231: fix(ui): constrain duplicated stack names (@andyluak)
  • a065cf21307a27aa97f2ea74392c7dcfb1849dfa: fix(ui): correct config secret blurring (@andyluak)
  • cd5e26bdf2cbb69b69828006cd721dae8061a837: fix(ui): correct node profiles navigation and allow-all selection (@andyluak)
  • ce15ed61251236e2b66f569a1485b2582ce10e38: fix(ui): count machines on the node provider row instead of summing node types (@andyluak)
  • 032d3b08f0f49b9c5270e8488a8e596c5ffcf4d9: fix(ui): create ssh keys with generateName and lock the public key on edit (@andyluak)
  • b6243437bf2756f9a33c7ee54f41b4fb170bc7be: fix(ui): drop enterprise badge from custom resources sync and external icon from forgot password (@andyluak)
  • 7d0d9a0de9da4abfae169a7e02bb5ddeef8f83a8: fix(ui): drop snapshots beta badge, document OCI path, make volume snapshots warning actionable (@andyluak)
  • 01d4ce5b63b6566d6c4f4da007ea48926ee8728b: fix(ui): filter machines within tenant groups (@andyluak)
  • eb8fb4bee15f26b0fb34f4396af0986396adf129: fix(ui): fix stack template regressions (@andyluak)
  • e19d275e5f5661750876823b502b97d7bf45f6d7: fix(ui): generate node join token on button click (@andyluak)
  • 2e6841f42e6edac6feb97f0354e111f1779d4802: fix(ui): hide connect for inactive instances (@andyluak)
  • 0b1839d6a15938147df085baba98bcfb053a9cb5: fix(ui): hide network environment create for tenants and cost control from the sidebar (@andyluak)
  • 34395670b2b0e615a7b7b7117ac79c9e232872ff: fix(ui): hide stacks without list permission (@andyluak)
  • e737dc66c3293c73928119dece2b7e3fd1c4a1cd: fix(ui): hide tenancy graph when its inputs cannot be resolved (@andyluak)
  • a90fdb7423ce45b0ff760c383f0a4f696f99a885: fix(ui): hide the Stacks section for vCluster versions without deploy.stacks (@andyluak)
  • 79061c60d61ae8e4e53a9d0dba9a9c073b48f184: fix(ui): hide the insecure connection warning on localhost (@andyluak)
  • ddff021d226385d7aa35aee935f75cf180fdc7b1: fix(ui): improve network environment guidance (@andyluak)
  • 3f90b2c6ecb5de3926815a56b18458f066fac6d2: fix(ui): improve stack task presentation (@andyluak)
  • 25fd21f4e50d5ccc83c01b1d4ff2f007b9cbc28a: fix(ui): keep a stack's applications out of reach of the delete actions (@andyluak)
  • ac055ab95ee9db5ef260db4de2c26af2e6a6cf6b: fix(ui): keep certified badge visible (@andyluak)
  • 70303a91885fda02b9e68a1c918b535bae432937: fix(ui): keep the first node type when the single node type switch turns on (@andyluak)
  • 7d86578d49e033759b2d648ab2fcf468e353e841: fix(ui): keep the name of an existing nico nodetype when its display name changes (@roehrijn)
  • 27e31f6dcd35044ac814c8af8b24884f72af8bf1: fix(ui): keep the saved compute resources on the instance config tab (@andyluak)
  • 9a8ae8146c93e670b112d2d5788c1272dd5a9320: fix(ui): limit stack template duplication (@andyluak)
  • fceeef80b1a22715b49741ccda50e1521d9d5834: fix(ui): list SSH keys without an owner on the SSH Keys page (@andyluak)
  • f1f8b4245a3764debee6031a47e05091eb7c5804: fix(ui): lock a stack's destination to the page its sheet was opened from (@andyluak)
  • 2e1d506016e52d849b285d5a14b285f514bfd4f2: fix(ui): lock network environment properties on update (@andyluak)
  • 8d48b4a3dcab5c85e253e3603b96e77262ed698f: fix(ui): machines and bare metal table layout issues (@andyluak)
  • 41137716693aa5c89632f704eb038dc5fbe2efed: fix(ui): make SSH keys optional for new instances (@andyluak)
  • 05c34e51dc2064d8d05d5ba4e77212de38acd3f1: fix(ui): make auto nodes node pool names unique across providers (@andyluak)
  • 1f6f2098647dc860c016370e7b5b71c1aa8499d8: fix(ui): make the sidebar follow the custom sidebar color (@andyluak)
  • 2628e2dff266b95c8c83f30b11c741b6612071f2: fix(ui): mask stack password parameters in the computed configuration (@andyluak)
  • f59e3cd822524e86602e7876891b654acb6c8d5a: 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)
  • 6143e3c386605c8779711b155913068b2167fda6: fix(ui): name the memory unit button with its unit label (@andyluak)
  • 03f85e2cc1c2eb536a2f09daab1be7a7e0b07dc7: fix(ui): normalize NICo provider form values (@janekbaraniewski)
  • 79c4098a63fb18b34919e07c4af29102a3efe9af: fix(ui): only offer machines no node claim holds (@andyluak)
  • 5d0dace93be47858d0657f5c3423e27bb0a0f888: fix(ui): patch Argo CD applications instead of replacing them (@andyluak)
  • e5ec003fb1275ca4b352d03288352fe46449de48: fix(ui): pick allowed node types by ID on the tenant form (@andyluak)
  • e269bbad37ab216ec851cad9cda749e6ad9a59d7: fix(ui): point volume snapshots guidance at the template for template-managed clusters (@andyluak)
  • 93b8413609ea9b417e24e8f799b7f283c8d7cce8: fix(ui): polish sidebar (@andyluak)
  • 7057d2d156a0e1ffd3f548faee8552a9aaa7ac04: fix(ui): pre-populate template parameter defaults (@andyluak)
  • eb47f03df3a56ae3354ca39dbf16b4cf604feac6: fix(ui): preselect the only required OS image and show launch form errors (@andyluak)
  • d5d4b7cc472fb5ceea3406b258fb0fe0ab905ff0: fix(ui): preserve destination error field casing (@andyluak)
  • bd1241c48cf18dbb3f251d3dc4298050a2d29a95: fix(ui): prevent app shell from scrolling when elements are scrolled into view (@andyluak)
  • ea225fc80aa4ebcc85aab45a925a3e6a76a05bed: fix(ui): prevent network environment reassignment (@andyluak)
  • 9b8474ae7d582fc1458b5e56f631326861e24ff6: fix(ui): private node profiles use 0.36 types and correct placement (@andyluak)
  • 2767b4ad4d5ca2f1b8137e0f4f000876f733839a: fix(ui): rebuild getYAMLKeyPath on the yaml syntax tree, stabilize parameterize widget (@andyluak)
  • 8ab8f6fbc33c4f1383f6cf186af08ceb7410670a: fix(ui): refresh outputs after stack edit (@andyluak)
  • 0dc133045a22df3154a0969b33cc06a21dd6cb04: fix(ui): reload a restored page when the impersonation changed (@andyluak)
  • 54e6a84d2c1d7ff7b3268709e994c27dd8219bed: fix(ui): remove broken auto-nodes cloud quickstarts (@janekbaraniewski)
  • 598c1dd9fa4bc15d463bf9c5bdfb0188987bd58f: fix(ui): remove duplicate node claim ID (@andyluak)
  • 93b3569323091c2d2d8c30bc86a3169e4911948e: fix(ui): remove network environment choices from tenant creation (@andyluak)
  • 803d94940c6946029032a972f1e68bb205db648c: fix(ui): remove network environment owner field and require infra provider (@andyluak)
  • 250b3f53c3c21fa9de5c9aa1e4702845d2d06c1f: fix(ui): remove platform breadcrumb bar (@andyluak)
  • 79ec126d94e0492e0cf5a32c31022be8f097fead: fix(ui): remove the network assignment section from the tenant form (@andyluak)
  • 7203e2d198e24a5d65aa00647f33e92a04843b6c: fix(ui): rename "control plane host" label and distinguish Switch to Tenant trigger (@andyluak)
  • 96487ad69272bfb287206447a6bd74e5ca230ccc: fix(ui): render machine power status through a name column slot (@andyluak)
  • 3582915bf43511f0ccb1c09d741ab1d4487139aa: fix(ui): require SSH access for new instances (@andyluak)
  • ee1259ba37c6694dac1d71ee276fa66ea21af73b: fix(ui): require network environment assignment (@andyluak)
  • c865546a8353ebe9e8a011f90daa9f45187cebed: fix(ui): reset the inspect collapse state when leaving the section (@andyluak)
  • 3781c5c475c015808f0300cc5165d552e3d67a2c: fix(ui): resolve the pinned machine from spec.machineRef (@andyluak)
  • 265103b384ada73c073d3238d20d832ba4e94b9e: fix(ui): restore original Apps sidebar icon and path (@andyluak)
  • 4aa44d0f0e176d1a8b2fbb54cf41d97a1d95c82f: fix(ui): restore sidebar More section (@andyluak)
  • accae5e1abe42b2503814ef4927ddaf39c70350f: fix(ui): restrict Metal3 diagnostics to platform admins (@andyluak)
  • 34f4a155efb16da901b44b400e2d37706b52f4bb: fix(ui): run shared Stack suites serially (@andyluak)
  • e657dc6c338194b9c79fd19a049543a32e0b5900: fix(ui): safeguard stack task removal (@andyluak)
  • 40715f1b375933f28e157026581f9d4c52c9dd75: fix(ui): sanitize duplicated stack templates (@andyluak)
  • 48b34286a0307e922287c04d733363270ce1208a: fix(ui): separate stack graph edges and highlight direct dependencies (@andyluak)
  • 5c91b6c5dfb8d83e77b2608dfeb458666c3cae20: fix(ui): show Apps sidebar entry when user cannot list stack templates (@andyluak)
  • 1e24a14b05b453efe5a7de6b54593a15bf56e60d: fix(ui): show a View action on stack templates the user cannot edit (@andyluak)
  • 5c346ec7c97ead4d2634329fab4e5d62b29db2ac: fix(ui): show a stack task's status message before it fails (@andyluak)
  • ac2c7c351507172b5c6c9d9624e129a490ac31a3: fix(ui): show config tabs when the template editor pane is closed (@andyluak)
  • 23d98d3e0d863a2d6deba984c406df8cd09dde63: fix(ui): show full stack name on hover (@andyluak)
  • 0d11fa52b68b7a6cb3e79f5a92547f5cdeac6aa3: fix(ui): show helm expressions instead of placeholders in template forms (@andyluak)
  • b552ef5d6aa1770238db5b9adb092e1c5602e09f: fix(ui): show instance type properties in a popup on launch instance (@andyluak)
  • 9c5e9037cd86e1a10b74b99c762d598d6853ec12: fix(ui): show machine status message on error badge hover (@andyluak)
  • f7721aaad99a4c3a81591feddbfdfc7f134731ff: fix(ui): show orphaned stack apps and add stack prune policy and task timeout (@andyluak)
  • 42e0cbc2ac4411793da2c7620c79b27be7d43cc7: fix(ui): show the application name for a task with no readable source (@andyluak)
  • 9824845d0ff39b1be26cf135dd725ef6a4b0effa: fix(ui): show the observability integration section in the cluster template form (#9043) (@johannesfrey)
  • 3ea790bc9977a30e8bceb79ce0906250afdfe994: fix(ui): show the status reason on hover when a machine error has no message (@andyluak)
  • 36a409def1631e93b67ff47b8bbe7d39d3229856: fix(ui): show why an OS image upload failed (@andyluak)
  • 76869e9ee5890d2c0706e7ece7a214ca7ddd2a24: fix(ui): show why an instance is pending or failed in its status tooltip (@andyluak)
  • f242f88310ecf66de621515386d84ec42ff6cf1f: fix(ui): simplify platform assignment checks (@andyluak)
  • 415021560a75011fd5cb1ad01e0a1f82f5fe0a79: fix(ui): standardize create tenant buttons (@andyluak)
  • 9bec2c0da275ba3e4a2bce4db8dd706d50afa9b6: fix(ui): stop writing an empty exclusive-to label for unassigned resources (@andyluak)
  • 6bf8582549e57c19b4f5828b15f6ddad6d7ec16d: fix(ui): streamline network environment defaults (@andyluak)
  • 0467dd8c9d5a507adfb1f4d8fb1fc659d929cedd: fix(ui): tell tenants to ask for an OS image store instead of connecting one (@andyluak)
  • b2a19c459130ca68a3b5e9fa887a814caf2c6492: fix(ui): update batch selection assertions (@andyluak)
  • 3d26c82a880c246f6bd672417f970515d740fb0d: fix(ui): update default observability connector namespace to vcluster-platform (#7477) (@johannesfrey)
  • baae5036b3e9b2ccc77eeda35deafcacafb5a679: fix(ui): update e2e expectations (@andyluak)
  • 6a5b62a7a18c7a072fc97142259170d8c95a28bd: fix(ui): update machine statuses and hide NICo power (@andyluak)
  • c2dfabd56a7cc692172282428a078953d2860460: fix(ui): use the task's timeout field in isPristineTask (#7908) (@andyluak)
  • ba1081af4709a6876676a0eba353bd89b1c110ed: fix(ui): validate node type names on the form and say platform admin (@andyluak)
  • da3404224485d4c95ac10488f6aae1c8f57821c3: fix(ui): validate the tenant YAML and put metadata before spec (@andyluak)
  • b63f0fa2b40e210d7444bc1f424ea57429a6d650: fix(ui): warn when a logo or icon URL does not load (@andyluak)
  • d29d20e7a51bfb8a3b283348d1332ec507948657: fix(user): clarify tenant duplicate field errors (@zerbitx)
  • 653257222de31aad9c2eee0096222fed5c4dac34: fix(user): return 422 for cross-tenant identity conflicts (@zerbitx)
  • d7d1a7c056021247499c3a891d4ecd5e9a05aae6: fix(version): fix package version in files failing in CI : v4 to v5 (#8573) (@flomedja)
  • 14514c787a1066c1dc072059aa32f5d6f679a41e: fix(virtualclusterinstance): finish deleting an instance whose template is already gone (#8892) (@roehrijn)
  • faeae742f911dfa0382b39c746b1687b7482de02: fix(virtualclusterinstance): refuse an agent assignment to another instance's tenant cluster (#8767) (@mfranczy)
  • 5caac6da9fee4a75881f35b0f8c1b0ce921be93b: fix(virtualclusterinstance): treat a template ref with no name as unresolved (#8756) (@johannesfrey)
  • e629cb2018b1990fb844430789458bbcba72228e: fix(webhooks): check the single local cluster across every tenant (#8698) (@lizardruss)
  • 37ade2be6cb03f93b5724d72c1a6ddd3818c1af8: fix(webhooks): return actual limit on overusage (@seanschneeweiss)
  • 51cd3bc0ceb1f444ad373e2de42ef59c5517ef7c: fix: Add clear button for certificate secret names in observability form (@PRTTMPRPHT)
  • 142a272c207dc3eb2c3857ea095f8cf09550e91e: fix: Add missing fields to instance type configuration for VMs (@PRTTMPRPHT)
  • b9edaf741575ae61d5795f4c7c3aeb3b5e968706: fix: Add missing tenant column to all projects instances (@PRTTMPRPHT)
  • 08d705b870678cd18119a29df8dd69257a2a9493: fix: Add missing validation errors to quick starts (@PRTTMPRPHT)
  • 52c13e58fbc939584f8c9c9c21819ba9f95c48a0: fix: Add owner and tenant information to SSH key selection (@PRTTMPRPHT)
  • d9b8a9ef82e1822051acf8b0d3e204be99cc6f32: fix: Add validation to namespace field in global secrets (@PRTTMPRPHT)
  • f90acb7c1523aec85ba44c5246d395b874dccb17: fix: Align sync template buttons (@PRTTMPRPHT)
  • 9daaa7fa9fdf3d6c748c46992aad4ab412631a53: fix: Change label of custom sidebar links option to be clearer (@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)
  • 58e5ad24eddbcca1f654483ad8eeea4cc9551674: fix: Fix VM machines empty state and change empty state icon (@PRTTMPRPHT)
  • f745829131f2c2c9239f2e96fe27d0314fd50728: fix: Fix a couple dom structure issues (@PRTTMPRPHT)
  • 03a7edfb9b9ffe6bd8526adccb6615146628e9e4: fix: Fix actions placement in machines (@PRTTMPRPHT)
  • ecd0bae464f5bde5d6a5e887fd598c255423fd0c: fix: Fix app readme taking up too much horizontal space (@PRTTMPRPHT)
  • 5ae4f357ef373a561701b8051bf852307bbb4607: fix: Fix auto nodes e2e tests post k8s template removal (@PRTTMPRPHT)
  • 15df46cf6888a88bd1975d8eafd007e07ec6cb91: fix: Fix capitalization in "Show YAML" items (@PRTTMPRPHT)
  • f532996dc19f6fe97662a337fa08901f2646cd37: fix: Fix copy in tenant deletion dialog (@PRTTMPRPHT)
  • 79d41e0ef2a65ff11515289ddccf436f1d6ef25b: fix: Fix description in index.html for link previews (@PRTTMPRPHT)
  • 0e913aad8d7ed8c44d0262f334f79d95c5bf76c8: fix: Fix display of tenant assignment column to show owner/exclusive-to (@PRTTMPRPHT)
  • 61a503c5e1a79d6e69944b5f9b58def7d2bee505: fix: Fix double "Platform" in upgrade page (@PRTTMPRPHT)
  • 031b89e37f2ff4f1f7b4bae1f05cdf1237de58cb: fix: Fix duplicate tab ids (@PRTTMPRPHT)
  • 3f1dffef9f5ccbd530e2d2276f556bb270758171: fix: Fix error message for tenant when no node providers are reachable in project (@PRTTMPRPHT)
  • 6c695e32f2af6d1d4f978b925e7ee9217ec411cf: fix: Fix grouping of sidebar items & admin config access (@PRTTMPRPHT)
  • 754e429942836dacaa6d412718f785de32463074: fix: Fix infinite loading state of nodes table for pending tenant cluster (@PRTTMPRPHT)
  • 892b0d04fe600995ae4ce5109b9a75102846c87d: fix: Fix loading states of some sheets (@PRTTMPRPHT)
  • c2ad2aec2b40f3159b4f69fdada2585202770f14: fix: Fix machine allocation policy chip to accurately reflect on-demand status (@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)
  • 23ad77823e51523d719ba44609811743208ae17b: fix: Fix overflow behavior of machine delete dialog (@PRTTMPRPHT)
  • 4e113fddf7e37e2d2d777f6a5df3560f108d5f8f: fix: Fix permission checks in get started section of status page (@PRTTMPRPHT)
  • 9761239a712c096f7fd8b9547a20f7c23146b070: fix: Fix permissions checks around SSH keys (@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)
  • 6cae13e321e658663ba6f71ac73ea509c03ba1c1: fix: Fix some navigation issues for views which tenants are not supposed to see (@PRTTMPRPHT)
  • 843fe1e5293b4cf9f69d8278129d1ed25f47eab7: fix: Fix string handling in observability connector form (@PRTTMPRPHT)
  • 8f00028b51fa514940f81d8f8e218353343e9326: fix: Fix trial indicator appearance when primary color is the same as background color (@PRTTMPRPHT)
  • 1820ccf1d5c89d2496ddc4eed09d8bd77e9cec90: fix: Fix validation message when OS images are misconfigured for a tenant (@PRTTMPRPHT)
  • 4b8799a95b7891e7fd560c092f1fca4413d3e6a1: fix: Fix various issues around tenant assignment in the UI (@PRTTMPRPHT)
  • 222522e9f71b710b162159f354bd65e0a8057923: fix: Fix visibility condition for "Set up VMs" button (@PRTTMPRPHT)
  • ed82a243b7ccc1acc3f3a4e8e19f4cec4d158475: fix: Fix visibility of all projects button to always be visible (@PRTTMPRPHT)
  • 1e99aa6a90852bf16ed21da9a6425b47b1ec66ae: fix: Fix visibility of create template button in table empty state (@PRTTMPRPHT)
  • f1ebc46ce6cfa629b741cd0e28b0116e2680f077: fix: Fix visibility of edit template button in YAML view (@PRTTMPRPHT)
  • d9fbc2553343f97d4e2e777beaf93eb96c6555d2: fix: Fix visibility of sidebar actions to treat sidebar focus correctly (@PRTTMPRPHT)
  • 9e34a34b59c44f642c3b2bff933302870b735006: fix: Fix warning about missing kubevirt provider ref during provisioning for VMs (@PRTTMPRPHT)
  • 685cfc981ffd8314c74cb9a771ef9c0e247a89ba: fix: Fixed a redirect loop when platform is unhealthy (@PRTTMPRPHT)
  • 065976842147e0db6398b064ed947e6eb34196c8: fix: Hide template skip for tenants altogether when creating clusters (@PRTTMPRPHT)
  • 4018a278f2a73f03b416f07d696f409e77e5a122: fix: Improve overflow handling of MultiTabEditor tabs (@PRTTMPRPHT)
  • efae4496b6b0e0615a8c4465fd52010c270a4238: fix: Increase size of hitbox for checkboxes in tables (@PRTTMPRPHT)
  • 424882e90a624b2374a4af71e97949c89d892f1e: fix: Make byName quotas on tenants respect allowed node types (@PRTTMPRPHT)
  • 22ebf9cc447b29345595c93c5cd5e311105a94f7: fix: Make sure nodes table is taking status values into account (@PRTTMPRPHT)
  • a3b0e5004d00ab0f660c469cb55a6307dc9f3e2b: fix: Prevent reassigning of provisioned machines (@PRTTMPRPHT)
  • c86a38112e48ecfe86c110fa8103f1b06de756b6: fix: Prevent tenants from navigating to control plane clusters (@PRTTMPRPHT)
  • d90b6a526db9b9eb7a04903d6dcc062da5e775a7: fix: Remove dead code in query client (@PRTTMPRPHT)
  • a5029b659043203fcb2008e7683fadf10c12cf15: fix: Remove duplicate backing store selection in cluster creation wizard (@PRTTMPRPHT)
  • adbd448998beecca2a105ad21f77db822a1a537e: fix: Remove external deploy hints for tenants (@PRTTMPRPHT)
  • 2f0119d12539e607f8738b92b5df9a689916e709: fix: Remove obsolete NICo tenant section (@PRTTMPRPHT)
  • 2d9da967763ea1e05f816b90a7a5926502c446cf: fix: Remove some dead code (@PRTTMPRPHT)
  • 27b0e0f168f4602332fe46e5095cb33fad211e48: fix: Remove unnecessary node types filter in tenant quotas (@PRTTMPRPHT)
  • 2bdafe43b61575f740e8074ab590a133fbdb1f23: fix: Replace deprecrated query lib call in CreateCustomClientDialog (@PRTTMPRPHT)
  • c1925bd13a43789d5b17e9c1764c6ba4afa774f4: fix: allow machine metadata updates (#7926) (@mfranczy)
  • 2611d44a329286de8257b4514684abcbb03df35a: fix: app instance improvements (#7626) (@FabianKramm)
  • 16acaf0917710450a9416501c1e9e68f0a131b88: fix: app instances fixes + improvements (#7651) (@FabianKramm)
  • 3a8f40ffc0396671f94377077ba7eef91b299baf: fix: app migration issue (#8218) (@FabianKramm)
  • 6cade97c13b684bf27ea3aae50c9315008045672: fix: auto snapshot controller vci.status.virtualcluster nil (#7932) (@jjaferson)
  • 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)
  • 8a855ab85507a8f7b0f24d2f569b983759c1bda3: fix: derive nodeprovider visibility from granted node types (#8089) (@lizardruss)
  • a665358ba3c91baca3305e5b14e587c3c9689756: fix: device operator & app instance improvements (#7620) (@FabianKramm)
  • ebbeb67b0026e14abc0f8e40c3b2d987c9f74980: fix: e2e race in baremetalhost (#8461) (@FabianKramm)
  • 16edc613bfd793fa42f368398e1cfbf03a9d581d: fix: enable tenant admins to bind roles to teams in their tenant (#8104) (@seanschneeweiss)
  • 6dd3ce9bc2d26f2216891645c3739e90ea165c63: fix: gate node provider reconcile on the provider entitlement (#8226) (@roehrijn)
  • 21c597f599ff36a2870a7934de5ac14fe57880d7: fix: impeove errors and the deploy log (#8236) (@flomedja)
  • 9dd2436cc26db96da121fd89eaa8f56108719c1d: fix: machine management inventory gate (#8271) (@mfranczy)
  • a41bb7c45fa44af667576003338e5db7df07a50a: fix: rbac for machines (#7943) (@mfranczy)
  • db16ec5fe4c213a4f583915583e18bfc97d20c17: fix: restore volume snapshot sync (#8088) (@jjaferson)
  • 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)
  • 0e360680f269eb7f951c8247d37ddef606efdd44: fix: static ips for bare metal hosts (#8626) (@FabianKramm)
  • c4954801b4b07e30bc3f43ff2221c7a6c9d2f02d: fix: status is platform-written, refuse human /status writes (ENG-12938) (#8942) (@mfranczy)
  • 1149bb2d10a11bab635b8c788e8a8b8124a562b3: fix: terminal + console issue (#8014) (@FabianKramm)
  • 15961c08c46b5a0d8d024bc8bb5bcdf99be96489: fix: ts ipam overflowing (#7603) (@FabianKramm)
  • a8c1a5297544a36cb544ebb158a92d30eadfd96c: gate NetworkEnvironment pre-release checks on platform >= 4.13.0-alpha.0 (#8098) (@sowmyav27)
  • 6e2bb2cd935936f7d5289c034cf8d3078923a604: kube-ovn NetworkEnvironment integration (#7794) (@squ94wk)
  • 90405b0e0e53730d13c2bca67a4a5f955880b23c: licenses: update loft licenses (@zerbitx)
  • 9b57ed1d8970bc004abdc923237d3226b2d16c91: migrate certified stacks url away from v2 (#8025) (@cbron)
  • 5ab11992ca931af90fdc26c436879796444a64f9: pr review (@andyluak)
  • acdd9f83582992ed3e33c756a10280b1f169cb83: refactor(agent): share one platform authorizer across the agent's access checks (#8701) (@lizardruss)
  • 0386f6c42193d8ac20fe08c6bcd155661735930f: refactor(api): move Tenant into EntityInfo (@andyluak)
  • 218394f023a9913b20314befb378a0527e49cd12: refactor(api): tenant label is now tenant.vcluster.com/owner (#7937) (@seanschneeweiss)
  • 606d923e5dbffb493468ee328afcb872f9125a74: refactor(apiserver): one management client for every reader (#8494) (@lizardruss)
  • 0b607987dca1982ddcdbacd22500b298172319da: refactor(autoscaling): decouple Metal3 behind the provider registry (#8195) (@roehrijn)
  • f402e4c8f7231e548331dbde455608307be461ba: refactor(autoscaling): decouple NICo behind a provider interface + registry (foundation) (#8191) (@roehrijn)
  • c88274894ac3a1e2618ec2a6106fdfdb4480dbda: refactor(autoscaling): drop the forwarding aliases and move the core contract into the provider package (@roehrijn)
  • f88aaac894b376d6cc78f70ded6c79828b85356d: refactor(autoscaling): move the bcm node provider into its own package (@roehrijn)
  • d2fc28273df35f01c848ccb622496ccdb20dee9b: refactor(autoscaling): move the cluster api node provider into its own package (@roehrijn)
  • 46a173c8473c1a94ffcb77d16f1c3e1ffaf655b3: refactor(autoscaling): move the kubevirt node provider into its own package (#8193) (@roehrijn)
  • ed2b055df30e7a47392b5ebb7bd8a8dc03a1c870: refactor(autoscaling): move the terraform node provider into its own package (#8197) (@roehrijn)
  • d43549d7a90e6d8a9cb463eb011f2586f7e13b2a: refactor(autoscaling): one key for the machine backing a claim (#8462) (@mfranczy)
  • 6fd27d65d209041a00068f7a300dc000211c5e67: refactor(connectors): read shared database connectors through the scoped API (#9017) (@flomedja)
  • 7e3b87416fa9cfe7865d0f87b05eb8109acfdf82: refactor(e2e): clean up nico lane registration readability (@roehrijn)
  • 1b2aa59f62598308038fe9bd1976c5ba73599800: refactor(e2e): dedupe the lower/raise quota transition steps (@roehrijn)
  • 4b8b7bb40cfd46cfb64879d9b9c05856cbe5d92f: refactor(e2e): drop assertCreatedVPCDestroyed's knownSubnetConflict flag (@roehrijn)
  • 3b7843e419665f7afc1755d5cefb44f1f5c9a9d7: refactor(e2e): extract the shared EC2 host substrate into baremetalemulator (#8652) (@roehrijn)
  • 2bfdc552f3e6fefcaf7c7def10fec03b9a7b8843: refactor(e2e): make ec2 instance create and delete a reusable setup.Func (#8646) (@roehrijn)
  • 489873e43bf2bb3fb98b64c4ce224218ded69a5d: refactor(e2e): split the NICo suite into parallel lanes, gate image builds on a lease (@roehrijn)
  • 128114f7c45b0cf30c9e69d1f281b1b31c5be8b2: refactor(license): keep the test license manager out of the production build (@johannesfrey)
  • 5041b3c89afe6ce2cc611b018ceff7bd42145c98: refactor(license): make the limit check work for any limited resource (@johannesfrey)
  • 7655fc10892eb1a112b42ffda7323c18445f2cf9: refactor(license): report the user limit with a reached bool (@johannesfrey)
  • 922b3a38d9183824c7d78648165b929bda21d4f6: refactor(license): return the reached user limit instead of a message callback (@johannesfrey)
  • 611722b6daac5261de437912bcd26cba3db5c66d: refactor(license): share one user-limit lookup across the validators (@johannesfrey)
  • 069a1c2a415a6783a6c0c9ccdf31dd757141f7cb: refactor(management): remove orphaned tenants/{name}/nicotoken subresource (#8205) (@roehrijn)
  • 1de58e179dc01f2c937d50e8601dd86cc4f1f4f6: refactor(nico): define nodetypes by instance type and machine label selector (#8642) (@roehrijn)
  • 8a4aae36425ecbcda06ee9fe74c1fa0851195c8e: refactor(nico): drop the unimplemented siteIPBlockCIDR field (#8441) (@roehrijn)
  • 50453cef832c45890a75bc0f71992a67ed1d6226: refactor(nico): self-register the probe metric (@roehrijn)
  • 428037371a613b1019ca4b5fb8220aa7905ed31e: refactor(nico): share the 404-tolerant delete across the nico client (@roehrijn)
  • 01b071a982b45da08bf5cf81cad9127986993bb1: refactor(nodeclaim): read the pinned claim's tenant off the request scope (@c2ndev)
  • 868598c0b2ff9feda842e55498b58f05196825f7: refactor(nodeclaim): share the private nodes check and the conflict requeue, show the teardown wait (#9114) (@cbalan)
  • a67a5f0a0f40a74d9d0540531a5a498fe852e646: refactor(observability): export the connector unresolved reasons from the api module (#8834) (@johannesfrey)
  • 57893c7a362a6e5fbf1cddce32ae1b12f5f0b01f: refactor(osimage): derive the object key in one place (@r0bnet)
  • dfb19b74e54a92cfdd9286796a9cdf48eba2ce10: refactor(osimage): list parts with the sdk paginator (@r0bnet)
  • 2239de7c1eab1d09e1c7f5f98c9e572b2fc75f37: refactor(osimage): make the phase transitions checkable (@r0bnet)
  • 3059e83cfaaff3a87213f56455ea05ff12d89634: refactor(osimage): name the store contract after multipart uploads, not signing (@r0bnet)
  • 1757432e54f397e7fcd84c0a80569a9f654a7ed3: refactor(osimage): resolve the platform namespace on the request path (@r0bnet)
  • 7c051fdb12649c860fd6811201dda0008af41f66: refactor(osimage): share the subresource image lookup (@r0bnet)
  • 4aa60c2786e00f092dd0833a0a18311782ef9546: refactor(s3): export config builder and client constructor (@r0bnet)
  • c1558654f3201c69b76b2fa406db1c02134985dd: refactor(sshkeys): authorize ssh keys through the access resource mapping (@roehrijn)
  • c545b07dba411328171b8698f1d755e7760488fc: refactor(sshkeys): drop the ssh-key-specific tenant label guard (@roehrijn)
  • 7e0501457a76e9602bc4d0b2fbdedfebb37075e4: refactor(stack): rename stack inputs to parameters (#7914) (@flomedja)
  • cd434a594f1dc5453c58c658049156461f4ebe2d: refactor(stacks): split the output reader and address review notes (@flomedja)
  • db30f880aad958400a293c6559727c0a5c061568: refactor(tenancy): leave space provisioning refusals to the authorizer (@zerbitx)
  • 3cade0a09f21fbaab1edcba15d9e1b824d9047ac: refactor(tenancy): name the tenant setting in the lending error without ui tables (@janekbaraniewski)
  • 3cf98ebcef0ee036c4dd138b34d7a152915a53c7: refactor(tenancy): route discovered kinds at construction (#8696) (@lizardruss)
  • 75b0919271b116b7d57ccbd79067689c04b23d6d: refactor(tenant): fold the enable-user limit check into the shared validator (@johannesfrey)
  • 56ed95dbeda455e557b73bd76a3dcf837a260861: refactor(tenant): reconcile projects through the tenancy client (#8340) (@lizardruss)
  • fe57b6ce44992cf31913f73642ada95f851aca2d: refactor(tenant): replace resourceAllowances with per-capability spec fields (#7913) (@lizardruss)
  • 816ba584e202376cd5b3ec29180efab0906d57df: refactor(tenant): scope secret-backed management kinds through a translating client (#8105) (@lizardruss)
  • cc2ac6dbb770d24940c8cc95ef354d5303f2abbb: refactor(tenant): share one user-limit check between tenant and user admission (@johannesfrey)
  • 6757dc85a5553c10ab4203e0701e386dabe4f337: refactor(ui): address review on the SCSS cleanup (@andyluak)
  • 0e4c5d864505c86f1f7c8838814ce54263612145: refactor(ui): call a stack's parameters parameters everywhere (@andyluak)
  • b2458d93f6576c57af8d51ee021f75375feb9f5d: refactor(ui): edit nico nodetypes as machine nodetype specs (@roehrijn)
  • 6d035dff04f900be431b10bf09f5fe70c52cf2e0: refactor(ui): extract project switcher routing and tenant grouping (@andyluak)
  • 69ff0ed2f3c424b864a86f6bf23c0f2948c8adb4: refactor(ui): gate space routes on operator tenancy directly (@zerbitx)
  • abbfe774741fa5eb9a96eaa952819b22e8869434: refactor(ui): inline space import and migrate target filters (@zerbitx)
  • f91877d7ac33d9da6b4ccdcce1dd4012625d359c: refactor(ui): jump to the shared parent of EditInYAML multiple fields (@andyluak)
  • 549b30146338d20adae89219fa928b7dbc78b2b2: refactor(ui): keep sheet close requests in a private listener set (@andyluak)
  • 3ef9a409c219d27ebba7f26888729c41309aa2ec: refactor(ui): read space availability from a shared hook (@zerbitx)
  • 0d20db2e5fb339c01054cef020d9e91bbe69b7c3: refactor(ui): replace SCSS with Tailwind classes (@andyluak)
  • c68ae01a59a169f5d0780629feac569aee14cb3c: refactor(ui): select nico nodetype machines by label instead of an instance type field (@roehrijn)
  • 33a4b75b8bc0c79e4963ac349355fda0af1d4e5d: refactor(ui): share the machine selector editor between metal3 and nico (@roehrijn)
  • b21039e15880ce15de4057ce3993cf696cac3eaf: refactor(ui): use TenantTag instead of a copy of it (@andyluak)
  • 62268bb7cb499aa82f032d4573b471d17a14dc73: refactor(ui): use paths constants for instance table links (@andyluak)
  • 2cc528bdb3066ae4e16252bd329859d6b5cbab44: refactor(ui): word the metal3 selector editor around machines (#8639) (@roehrijn)
  • b76bd1debfae1f44be3f4e331433637ddd898b01: refactor: add deprovisioning as phase (#8500) (@FabianKramm)
  • fe5abb7f262c3c883bb71ce7ddb014a756711a3a: refactor: allow node claim without auto nodes (#8229) (@FabianKramm)
  • cf00167241b5d83d071e33b35115420712d1c807: refactor: bump defualt metal3 version (#8530) (@FabianKramm)
  • 151211ab56fd8d52b9f222c651c9370141c97938: refactor: bump platform go modules from v4 to v5 (#8502) (@neogopher)
  • a91fb1ee861ce630c3c28e7bdb244a3e25c002d3: refactor: join command retry + template (#7674) (@FabianKramm)
  • a1118c137df672a2c3ebe49ea52474dee73a3799: refactor: node environment to network environment (#7921) (@FabianKramm)
  • 5419931cedbb81f2c3563e81e8d9a43141175ef0: refactor: remove seeing all machines (#8905) (@FabianKramm)
  • bbca83f463b05396feb46382c5b15ae4599a93b5: refactor: remove spec.machines (#7922) (@FabianKramm)
  • 0fb8c04026ec31f4cd336abacbb39b40bc7615be: revert(autoscaling): remove the provision for vms backend (#9013) (@cbalan)
  • 31f4fec62828e87044d80bf3fcda309c0b427aa4: stack tasks failure reasons visibility in status (#8353) (@flomedja)
  • cb338698ba236efac98a8bd1660657f2b9ccf10f: style(ui): format sidebar specs (@zerbitx)
  • aeb15965c1a35c08949d6a018df5006ea485ff88: test(connected-cluster): mark the ha tunnel failover quarantine spec pending (@roehrijn)
  • 2df840fd3b830a2fd15b725d07a236a00f16d2c3: test(connectors): tighten the shared-database connector e2e specs (#8881) (@johannesfrey)
  • 3b5cbfd2675cce89573c0883e774f2b4d655e79f: test(e2e): add Azure Blob scheduled-snapshot variant to auto_snapshots (#7297) (@adriankabala)
  • 84fca16567ec585dadf3e4b6819725380e7e8650: test(e2e): add end-to-end tests for stacks (#8137) (@flomedja)
  • f267a394c75bec3143a00a019f18404abe2d8468: test(e2e): add failure context to ssh key eventually assertions (@roehrijn)
  • b64722b2f1ae22527354a05a6460a21bea4b5ec6: test(e2e): add metal3 node provider coverage (#8253) (@roehrijn)
  • c1b778c570e9571a435b367f8303d1af41674bf0: test(e2e): add on-demand machine pre-handover suite for metal3 (#8527) (@adriankabala)
  • b1bcbc03792d54d531d1cda0d423d3df51ebe145: test(e2e): add reserved machine pre-handover suite for metal3 (#8473) (@adriankabala)
  • 2ac996fa45c43e24071e829f493b72af23a0851b: test(e2e): add tenant admin boundary specs (#8122) (@sowmyav27)
  • 58f32752dab42ab2d73462035f1097e01f27208e: test(e2e): add the reserved & on demand VM flows (#8705) (@adriankabala)
  • 4657a28de97f911b1c80e83e9eb46042ac0a59c6: test(e2e): address review findings in nico quota transition spec (@roehrijn)
  • 388f74da5d9dfa4bafe94cd676a87e05d1e1cdb5: test(e2e): assert a refused migration out of a tenant project leaves the target empty (@roehrijn)
  • 006aede24cbe60ebc76e552ee38605c1661f6ef5: test(e2e): assert the matrix's refused migration leaves its source reconciled (@roehrijn)
  • b56b5b292603796e2b96af76807008dfae617154: test(e2e): boot a metal3 machine and log in to it over ssh (#8516) (@roehrijn)
  • cfb998613d61b980bad613eac1d27549a48659e0: test(e2e): boot a metal3 machine from an uploaded os image (#8568) (@r0bnet)
  • 61f8c5fa0e6fc8781ff4841f0e41990fa8761ae4: test(e2e): boot nico and kubevirt machines from an uploaded os image (#8485) (@r0bnet)
  • 65796ac1a41efbba852a11a891185ef57e31698c: test(e2e): close tc-20 assertion gaps in networkenvironment immutability spec (@roehrijn)
  • bd220af10b19a60ff251fc59bf5d218198c90259: test(e2e): confirm the argo cd connector warning before saving (#8587) (@joh...

Don't miss a new loft release

NewReleases is sending notifications on new releases.