Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package hcloud-cli for openSUSE:Factory 
checked in at 2026-04-26 21:12:09
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/hcloud-cli (Old)
 and      /work/SRC/openSUSE:Factory/.hcloud-cli.new.11940 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "hcloud-cli"

Sun Apr 26 21:12:09 2026 rev:18 rq:1349349 version:1.63.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/hcloud-cli/hcloud-cli.changes    2026-04-09 
16:24:28.417842245 +0200
+++ /work/SRC/openSUSE:Factory/.hcloud-cli.new.11940/hcloud-cli.changes 
2026-04-26 21:14:56.118298528 +0200
@@ -1,0 +2,34 @@
+Sun Apr 26 08:29:42 UTC 2026 - Johannes Kastl 
<[email protected]>
+
+- Update to version 1.63.0:
+  * Available and recommended Server Types have been moved
+    - The Server Types list in hcloud datacenter describe is
+      deprecated and will not be displayed anymore after
+      2026-10-01. The two commands below should be used for this
+      purpose instead.
+    - hcloud server-type describe now shows an Available and
+      Recommended value for each location.
+    - hcloud server-type list now has additional columns
+      location_available and location_recommended.
+    See the changelog for more details.
+    https://docs.hetzner.cloud/changelog#2026-04-01-datacenter-deprecations
+   * Features
+      - datacenter, server-type: move available and recommended to
+        server_type (#1384)
+  * Dependencies
+    - chore(main): release v1.63.0 (#1391)
+    - feat(datacenter, server-type): move available and recommended
+      to server_type (#1384)
+    - deps: update module github.com/hetznercloud/hcloud-go/v2 to
+      v2.38.0 (#1390)
+    - deps: update dependency jdx/mise to v2026.4.19 (#1386)
+    - deps: update golang.org/x/exp digest to 746e56f (#1385)
+    - deps: update dependency github:goreleaser/goreleaser to
+      v2.15.4 (#1387)
+    - deps: update module github.com/jedib0t/go-pretty/v6 to
+      v6.7.10 (#1388)
+    - deps: update dependency jdx/mise to v2026.4.7 (#1363)
+    - deps: update golang.org/x/ (#1383)
+    - deps: update dependency go to v1.26.2 (#1382)
+
+-------------------------------------------------------------------

Old:
----
  hcloud-cli-1.62.2.obscpio

New:
----
  hcloud-cli-1.63.0.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ hcloud-cli.spec ++++++
--- /var/tmp/diff_new_pack.7HvBKp/_old  2026-04-26 21:14:56.778325401 +0200
+++ /var/tmp/diff_new_pack.7HvBKp/_new  2026-04-26 21:14:56.782325564 +0200
@@ -19,7 +19,7 @@
 %define executable_name hcloud
 
 Name:           hcloud-cli
-Version:        1.62.2
+Version:        1.63.0
 Release:        0
 Summary:        A command-line interface for Hetzner Cloud
 License:        MIT

++++++ _service ++++++
--- /var/tmp/diff_new_pack.7HvBKp/_old  2026-04-26 21:14:56.814326867 +0200
+++ /var/tmp/diff_new_pack.7HvBKp/_new  2026-04-26 21:14:56.818327029 +0200
@@ -3,7 +3,7 @@
     <param name="url">https://github.com/hetznercloud/cli</param>
     <param name="scm">git</param>
     <param name="exclude">.git</param>
-    <param name="revision">v1.62.2</param>
+    <param name="revision">v1.63.0</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="versionrewrite-pattern">v(.*)</param>
     <param name="changesgenerate">enable</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.7HvBKp/_old  2026-04-26 21:14:56.846328169 +0200
+++ /var/tmp/diff_new_pack.7HvBKp/_new  2026-04-26 21:14:56.850328333 +0200
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param name="url">https://github.com/hetznercloud/cli</param>
-              <param 
name="changesrevision">4b2b4e089e3b6d09f68469bec3ead54b08991bf7</param></service></servicedata>
+              <param 
name="changesrevision">5504434e319291743f9f700e5f45930b47f1c42d</param></service></servicedata>
 (No newline at EOF)
 

++++++ hcloud-cli-1.62.2.obscpio -> hcloud-cli-1.63.0.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-cli-1.62.2/.golangci.yml 
new/hcloud-cli-1.63.0/.golangci.yml
--- old/hcloud-cli-1.62.2/.golangci.yml 2026-04-07 19:36:15.000000000 +0200
+++ new/hcloud-cli-1.63.0/.golangci.yml 2026-04-24 16:10:52.000000000 +0200
@@ -65,7 +65,7 @@
         text: var-naming
       - linters:
           - staticcheck
-        text: Datacenter is deprecated
+        text: (Datacenter|ServerTypes) is deprecated
 
 formatters:
   enable:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-cli-1.62.2/CHANGELOG.md 
new/hcloud-cli-1.63.0/CHANGELOG.md
--- old/hcloud-cli-1.62.2/CHANGELOG.md  2026-04-07 19:36:15.000000000 +0200
+++ new/hcloud-cli-1.63.0/CHANGELOG.md  2026-04-24 16:10:52.000000000 +0200
@@ -1,5 +1,19 @@
 # Changelog
 
+## [v1.63.0](https://github.com/hetznercloud/cli/releases/tag/v1.63.0)
+
+### Available and recommended Server Types have been moved
+
+- The Server Types list in `hcloud datacenter describe` is deprecated and will 
not be displayed anymore after 2026-10-01. The two commands below should be 
used for this purpose instead.
+- `hcloud server-type describe` now shows an `Available` and `Recommended` 
value for each location.
+- `hcloud server-type list` now has additional columns `location_available` 
and  `location_recommended`.
+
+See the 
[changelog](https://docs.hetzner.cloud/changelog#2026-04-01-datacenter-deprecations)
 for more details.
+
+### Features
+
+- **datacenter, server-type**: move available and recommended to server_type 
(#1384)
+
 ## [v1.62.2](https://github.com/hetznercloud/cli/releases/tag/v1.62.2)
 
 ### Bug Fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hcloud-cli-1.62.2/docs/reference/manual/hcloud_server-type_list.md 
new/hcloud-cli-1.63.0/docs/reference/manual/hcloud_server-type_list.md
--- old/hcloud-cli-1.62.2/docs/reference/manual/hcloud_server-type_list.md      
2026-04-07 19:36:15.000000000 +0200
+++ new/hcloud-cli-1.63.0/docs/reference/manual/hcloud_server-type_list.md      
2026-04-24 16:10:52.000000000 +0200
@@ -21,6 +21,8 @@
  - id
  - included_traffic
  - location
+ - location_available
+ - location_recommended
  - memory
  - name
  - storage_type
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-cli-1.62.2/go.mod new/hcloud-cli-1.63.0/go.mod
--- old/hcloud-cli-1.62.2/go.mod        2026-04-07 19:36:15.000000000 +0200
+++ new/hcloud-cli-1.63.0/go.mod        2026-04-24 16:10:52.000000000 +0200
@@ -2,7 +2,7 @@
 
 go 1.25.0
 
-toolchain go1.26.1
+toolchain go1.26.2
 
 require (
        github.com/BurntSushi/toml v1.6.0
@@ -12,8 +12,8 @@
        github.com/fatih/structs v1.1.0
        github.com/goccy/go-yaml v1.19.2
        github.com/guptarohit/asciigraph v0.9.0
-       github.com/hetznercloud/hcloud-go/v2 v2.37.0
-       github.com/jedib0t/go-pretty/v6 v6.7.9
+       github.com/hetznercloud/hcloud-go/v2 v2.38.0
+       github.com/jedib0t/go-pretty/v6 v6.7.10
        github.com/spf13/cast v1.10.0
        github.com/spf13/cobra v1.10.2
        github.com/spf13/pflag v1.0.10
@@ -21,11 +21,11 @@
        github.com/stretchr/testify v1.11.1
        github.com/swaggest/assertjson v1.10.0
        go.uber.org/mock v0.6.0
-       golang.org/x/crypto v0.49.0
-       golang.org/x/exp v0.0.0-20260312153236-7ab1446f8b90
-       golang.org/x/net v0.52.0
-       golang.org/x/term v0.41.0
-       golang.org/x/text v0.35.0
+       golang.org/x/crypto v0.50.0
+       golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f
+       golang.org/x/net v0.53.0
+       golang.org/x/term v0.42.0
+       golang.org/x/text v0.36.0
 )
 
 require (
@@ -59,7 +59,7 @@
        github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 // indirect
        go.yaml.in/yaml/v2 v2.4.2 // indirect
        go.yaml.in/yaml/v3 v3.0.4 // indirect
-       golang.org/x/sys v0.42.0 // indirect
+       golang.org/x/sys v0.43.0 // indirect
        google.golang.org/protobuf v1.36.8 // indirect
        gopkg.in/yaml.v3 v3.0.1 // indirect
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-cli-1.62.2/go.sum new/hcloud-cli-1.63.0/go.sum
--- old/hcloud-cli-1.62.2/go.sum        2026-04-07 19:36:15.000000000 +0200
+++ new/hcloud-cli-1.63.0/go.sum        2026-04-24 16:10:52.000000000 +0200
@@ -37,14 +37,14 @@
 github.com/google/go-cmp v0.7.0/go.mod 
h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
 github.com/guptarohit/asciigraph v0.9.0 
h1:MvCSRRVkT2XvU1IO6n92o7l7zqx1DiFaoszOUZQztbY=
 github.com/guptarohit/asciigraph v0.9.0/go.mod 
h1:dYl5wwK4gNsnFf9Zp+l06rFiDZ5YtXM6x7SRWZ3KGag=
-github.com/hetznercloud/hcloud-go/v2 v2.37.0 
h1:PMnuOA8pL8aHLLPp6nnnCTo2Xk2tqu4dAfYsC3bWdT0=
-github.com/hetznercloud/hcloud-go/v2 v2.37.0/go.mod 
h1:zaDOCKmpnI86ftoCpUpaiYaw9Wew1ib1AcXTh96deYI=
+github.com/hetznercloud/hcloud-go/v2 v2.38.0 
h1:bJL4O5Zd8iF+vDRzeAbmsMcxKhn/sf/HUtu2jl/bFl0=
+github.com/hetznercloud/hcloud-go/v2 v2.38.0/go.mod 
h1:BHmbGdh59t0CazoUEFvbdp6PyV+gwnF0fl9D4Bdgqq0=
 github.com/iancoleman/orderedmap v0.3.0 
h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJn+Ichc=
 github.com/iancoleman/orderedmap v0.3.0/go.mod 
h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE=
 github.com/inconshreveable/mousetrap v1.1.0 
h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
 github.com/inconshreveable/mousetrap v1.1.0/go.mod 
h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
-github.com/jedib0t/go-pretty/v6 v6.7.9 
h1:frarzQWmkZd97syT81+TH8INKPpzoxQnk+Mk5EIHSrM=
-github.com/jedib0t/go-pretty/v6 v6.7.9/go.mod 
h1:YwC5CE4fJ1HFUDeivSV1r//AmANFHyqczZk+U6BDALU=
+github.com/jedib0t/go-pretty/v6 v6.7.10 
h1:B/2qW2Bkv2L6n14PP8o1kx75kWzHOQ3YTluWzg9icac=
+github.com/jedib0t/go-pretty/v6 v6.7.10/go.mod 
h1:YwC5CE4fJ1HFUDeivSV1r//AmANFHyqczZk+U6BDALU=
 github.com/klauspost/compress v1.18.0 
h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
 github.com/klauspost/compress v1.18.0/go.mod 
h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
 github.com/kr/pretty v0.1.0/go.mod 
h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
@@ -119,19 +119,19 @@
 go.yaml.in/yaml/v2 v2.4.2/go.mod 
h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU=
 go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
 go.yaml.in/yaml/v3 v3.0.4/go.mod 
h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
-golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4=
-golang.org/x/crypto v0.49.0/go.mod 
h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA=
-golang.org/x/exp v0.0.0-20260312153236-7ab1446f8b90 
h1:jiDhWWeC7jfWqR9c/uplMOqJ0sbNlNWv0UkzE0vX1MA=
-golang.org/x/exp v0.0.0-20260312153236-7ab1446f8b90/go.mod 
h1:xE1HEv6b+1SCZ5/uscMRjUBKtIxworgEcEi+/n9NQDQ=
-golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0=
-golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw=
+golang.org/x/crypto v0.50.0 h1:zO47/JPrL6vsNkINmLoo/PH1gcxpls50DNogFvB5ZGI=
+golang.org/x/crypto v0.50.0/go.mod 
h1:3muZ7vA7PBCE6xgPX7nkzzjiUq87kRItoJQM1Yo8S+Q=
+golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f 
h1:W3F4c+6OLc6H2lb//N1q4WpJkhzJCK5J6kUi1NTVXfM=
+golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f/go.mod 
h1:J1xhfL/vlindoeF/aINzNzt2Bket5bjo9sdOYzOsU80=
+golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA=
+golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs=
 golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=
-golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
-golang.org/x/term v0.41.0 h1:QCgPso/Q3RTJx2Th4bDLqML4W6iJiaXFq2/ftQF13YU=
-golang.org/x/term v0.41.0/go.mod 
h1:3pfBgksrReYfZ5lvYM0kSO0LIkAl4Yl2bXOkKP7Ec2A=
-golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8=
-golang.org/x/text v0.35.0/go.mod 
h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA=
+golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI=
+golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
+golang.org/x/term v0.42.0 h1:UiKe+zDFmJobeJ5ggPwOshJIVt6/Ft0rcfrXZDLWAWY=
+golang.org/x/term v0.42.0/go.mod 
h1:Dq/D+snpsbazcBG5+F9Q1n2rXV8Ma+71xEjTRufARgY=
+golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg=
+golang.org/x/text v0.36.0/go.mod 
h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164=
 google.golang.org/protobuf v1.36.8 
h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc=
 google.golang.org/protobuf v1.36.8/go.mod 
h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod 
h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hcloud-cli-1.62.2/internal/cmd/datacenter/describe.go 
new/hcloud-cli-1.63.0/internal/cmd/datacenter/describe.go
--- old/hcloud-cli-1.62.2/internal/cmd/datacenter/describe.go   2026-04-07 
19:36:15.000000000 +0200
+++ new/hcloud-cli-1.63.0/internal/cmd/datacenter/describe.go   2026-04-24 
16:10:52.000000000 +0200
@@ -49,6 +49,11 @@
        fmt.Fprintf(&sb, "Location:\n")
        fmt.Fprint(&sb, 
util.PrefixLines(location.DescribeLocation(datacenter.Location), "  "))
 
+       // datacenter.ServerTypes will not be populated anymore after 
2026-10-01.
+       if dst := datacenter.ServerTypes; dst.Available == nil && dst.Supported 
== nil && dst.AvailableForMigration == nil {
+               return sb.String()
+       }
+
        type ServerTypeStatus struct {
                ID        int64
                Available bool
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hcloud-cli-1.62.2/internal/cmd/datacenter/describe_test.go 
new/hcloud-cli-1.63.0/internal/cmd/datacenter/describe_test.go
--- old/hcloud-cli-1.62.2/internal/cmd/datacenter/describe_test.go      
2026-04-07 19:36:15.000000000 +0200
+++ new/hcloud-cli-1.63.0/internal/cmd/datacenter/describe_test.go      
2026-04-24 16:10:52.000000000 +0200
@@ -43,9 +43,6 @@
   City:          
   Latitude:      0.000000
   Longitude:     0.000000
-
-Server Types:
-  No Server Types
 `
 
        require.NoError(t, err)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hcloud-cli-1.62.2/internal/cmd/datacenter/list_test.go 
new/hcloud-cli-1.63.0/internal/cmd/datacenter/list_test.go
--- old/hcloud-cli-1.62.2/internal/cmd/datacenter/list_test.go  2026-04-07 
19:36:15.000000000 +0200
+++ new/hcloud-cli-1.63.0/internal/cmd/datacenter/list_test.go  2026-04-24 
16:10:52.000000000 +0200
@@ -95,11 +95,6 @@
       "latitude": 0,
       "longitude": 0,
       "network_zone": ""
-    },
-    "server_types": {
-      "supported": null,
-      "available_for_migration": null,
-      "available": null
     }
   }
 ]`, out)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hcloud-cli-1.62.2/internal/cmd/primaryip/testdata/create_response.json 
new/hcloud-cli-1.63.0/internal/cmd/primaryip/testdata/create_response.json
--- old/hcloud-cli-1.62.2/internal/cmd/primaryip/testdata/create_response.json  
2026-04-07 19:36:15.000000000 +0200
+++ new/hcloud-cli-1.63.0/internal/cmd/primaryip/testdata/create_response.json  
2026-04-24 16:10:52.000000000 +0200
@@ -28,12 +28,7 @@
         "name": "fsn1",
         "network_zone": ""
       },
-      "name": "fsn1-dc14",
-      "server_types": {
-        "available": null,
-        "available_for_migration": null,
-        "supported": null
-      }
+      "name": "fsn1-dc14"
     },
     "dns_ptr": [],
     "id": 1,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-cli-1.62.2/internal/cmd/server/create_test.go 
new/hcloud-cli-1.63.0/internal/cmd/server/create_test.go
--- old/hcloud-cli-1.62.2/internal/cmd/server/create_test.go    2026-04-07 
19:36:15.000000000 +0200
+++ new/hcloud-cli-1.63.0/internal/cmd/server/create_test.go    2026-04-24 
16:10:52.000000000 +0200
@@ -157,12 +157,16 @@
                                                ID:   1,
                                                Name: "fsn1",
                                        },
+                                       Available:   true,
+                                       Recommended: true,
                                },
                                {
                                        Location: &hcloud.Location{
                                                ID:   2,
                                                Name: "nbg1",
                                        },
+                                       Available:   true,
+                                       Recommended: false,
                                },
                        },
                },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hcloud-cli-1.62.2/internal/cmd/server/testdata/create_response.json 
new/hcloud-cli-1.63.0/internal/cmd/server/testdata/create_response.json
--- old/hcloud-cli-1.62.2/internal/cmd/server/testdata/create_response.json     
2026-04-07 19:36:15.000000000 +0200
+++ new/hcloud-cli-1.63.0/internal/cmd/server/testdata/create_response.json     
2026-04-24 16:10:52.000000000 +0200
@@ -26,12 +26,7 @@
         "name": "fsn1",
         "network_zone": ""
       },
-      "name": "fsn1-dc14",
-      "server_types": {
-        "available": null,
-        "available_for_migration": null,
-        "supported": null
-      }
+      "name": "fsn1-dc14"
     },
     "id": 1234,
     "image": {
@@ -111,8 +106,8 @@
       "prices": null,
       "storage_type": "local",
       "locations": [
-        { "id": 1, "name": "fsn1", "deprecation": null },
-        { "id": 2, "name": "nbg1", "deprecation": null }
+        { "id": 1, "name": "fsn1", "deprecation": null, "available": true, 
"recommended": true },
+        { "id": 2, "name": "nbg1", "deprecation": null, "available": true, 
"recommended": false }
       ]
     },
     "status": "running",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hcloud-cli-1.62.2/internal/cmd/servertype/describe.go 
new/hcloud-cli-1.63.0/internal/cmd/servertype/describe.go
--- old/hcloud-cli-1.62.2/internal/cmd/servertype/describe.go   2026-04-07 
19:36:15.000000000 +0200
+++ new/hcloud-cli-1.63.0/internal/cmd/servertype/describe.go   2026-04-24 
16:10:52.000000000 +0200
@@ -65,6 +65,8 @@
        for _, info := range locations {
 
                fmt.Fprintf(&sb, "  - Location:\t%s\n", info.Location.Name)
+               fmt.Fprintf(&sb, "    Available:\t%s\n", 
util.YesNo(info.Available))
+               fmt.Fprintf(&sb, "    Recommended:\t%s\n", 
util.YesNo(info.Recommended))
 
                if deprecationText := util.DescribeDeprecation(info); 
deprecationText != "" {
                        fmt.Fprint(&sb, util.PrefixLines(deprecationText, "    
"))
@@ -97,8 +99,7 @@
 }
 
 type locationInfo struct {
-       Location *hcloud.Location
-       hcloud.DeprecatableResource
+       *hcloud.ServerTypeLocation
        Pricing hcloud.ServerTypeLocationPricing
 }
 
@@ -106,7 +107,7 @@
        locations := make([]locationInfo, 0, len(serverType.Locations))
 
        for _, location := range serverType.Locations {
-               info := locationInfo{Location: location.Location, 
DeprecatableResource: location.DeprecatableResource}
+               info := locationInfo{ServerTypeLocation: &location}
 
                for _, pricing := range pricings {
                        // Pricing endpoint only sets the location name
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hcloud-cli-1.62.2/internal/cmd/servertype/describe_test.go 
new/hcloud-cli-1.63.0/internal/cmd/servertype/describe_test.go
--- old/hcloud-cli-1.62.2/internal/cmd/servertype/describe_test.go      
2026-04-07 19:36:15.000000000 +0200
+++ new/hcloud-cli-1.63.0/internal/cmd/servertype/describe_test.go      
2026-04-24 16:10:52.000000000 +0200
@@ -44,6 +44,8 @@
                                {
                                        Location:             
&hcloud.Location{Name: "fsn1"},
                                        DeprecatableResource: deprecation,
+                                       Available:            true,
+                                       Recommended:          false,
                                },
                        },
                }, nil, nil)
@@ -112,7 +114,9 @@
 Storage Type:  local
 
 Locations:
-  - Location:  fsn1
+  - Location:     fsn1
+    Available:    yes
+    Recommended:  no
     Deprecation:
       Announced:           %s (%s)
       Unavailable After:   %s (%s)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-cli-1.62.2/internal/cmd/servertype/list.go 
new/hcloud-cli-1.63.0/internal/cmd/servertype/list.go
--- old/hcloud-cli-1.62.2/internal/cmd/servertype/list.go       2026-04-07 
19:36:15.000000000 +0200
+++ new/hcloud-cli-1.63.0/internal/cmd/servertype/list.go       2026-04-24 
16:10:52.000000000 +0200
@@ -2,7 +2,6 @@
 
 import (
        "fmt"
-       "slices"
        "strings"
        "time"
 
@@ -13,7 +12,6 @@
        "github.com/hetznercloud/cli/internal/hcapi2"
        "github.com/hetznercloud/cli/internal/state"
        "github.com/hetznercloud/hcloud-go/v2/hcloud"
-       "github.com/hetznercloud/hcloud-go/v2/hcloud/exp/kit/sliceutil"
        "github.com/hetznercloud/hcloud-go/v2/hcloud/schema"
 )
 
@@ -36,16 +34,20 @@
                        AddAllowedFields(&hcloud.ServerType{}).
                        AddFieldFn("location", func(serverType 
*hcloud.ServerType) string {
                                now := time.Now()
-                               return strings.Join(
-                                       sliceutil.Transform(
-                                               slices.DeleteFunc(
-                                                       
slices.Clone(serverType.Locations),
-                                                       func(l 
hcloud.ServerTypeLocation) bool { return l.IsDeprecated() && 
l.UnavailableAfter().Before(now) },
-                                               ),
-                                               func(l 
hcloud.ServerTypeLocation) string { return l.Location.Name },
-                                       ),
-                                       ",",
-                               )
+                               return listLocationNames(serverType, func(l 
hcloud.ServerTypeLocation) bool {
+                                       return l.IsDeprecated() && 
l.UnavailableAfter().Before(now)
+                               })
+                       }).
+                       AddFieldFn("location_available", func(serverType 
*hcloud.ServerType) string {
+                               now := time.Now()
+                               return listLocationNames(serverType, func(l 
hcloud.ServerTypeLocation) bool {
+                                       return (l.IsDeprecated() && 
l.UnavailableAfter().Before(now)) || !l.Available
+                               })
+                       }).
+                       AddFieldFn("location_recommended", func(serverType 
*hcloud.ServerType) string {
+                               return listLocationNames(serverType, func(l 
hcloud.ServerTypeLocation) bool {
+                                       return !l.Recommended
+                               })
                        }).
                        AddFieldAlias("storagetype", "storage type").
                        AddFieldFn("memory", func(serverType 
*hcloud.ServerType) string {
@@ -79,3 +81,13 @@
 
        Schema: hcloud.SchemaFromServerType,
 }
+
+func listLocationNames(serverType *hcloud.ServerType, del 
func(hcloud.ServerTypeLocation) bool) string {
+       var locationNames []string
+       for _, l := range serverType.Locations {
+               if !del(l) {
+                       locationNames = append(locationNames, l.Location.Name)
+               }
+       }
+       return strings.Join(locationNames, ", ")
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hcloud-cli-1.62.2/internal/cmd/servertype/list_test.go 
new/hcloud-cli-1.63.0/internal/cmd/servertype/list_test.go
--- old/hcloud-cli-1.62.2/internal/cmd/servertype/list_test.go  2026-04-07 
19:36:15.000000000 +0200
+++ new/hcloud-cli-1.63.0/internal/cmd/servertype/list_test.go  2026-04-24 
16:10:52.000000000 +0200
@@ -46,17 +46,18 @@
                                Disk:         80,
                                StorageType:  hcloud.StorageTypeLocal,
                                Locations: []hcloud.ServerTypeLocation{
-                                       {Location: &hcloud.Location{ID: 1, 
Name: "fsn1"}, DeprecatableResource: serverTypeDeprecation},
-                                       {Location: &hcloud.Location{ID: 2, 
Name: "nbg1"}},
-                                       {Location: &hcloud.Location{ID: 3, 
Name: "hel1"}},
+                                       {Location: &hcloud.Location{ID: 1, 
Name: "fsn1"}, Available: false, Recommended: false,
+                                               DeprecatableResource: 
serverTypeDeprecation},
+                                       {Location: &hcloud.Location{ID: 2, 
Name: "nbg1"}, Available: true, Recommended: false},
+                                       {Location: &hcloud.Location{ID: 3, 
Name: "hel1"}, Available: true, Recommended: true},
                                },
                        },
                }, nil)
 
-       out, errOut, err := fx.Run(cmd, []string{})
+       out, errOut, err := fx.Run(cmd, 
[]string{"-o=columns=id,name,cores,cpu_type,architecture,memory,disk,location,location_available,location_recommended"})
 
-       expOut := `ID    NAME   CORES   CPU TYPE   ARCHITECTURE   MEMORY   DISK 
   LOCATION
-123   test   2       shared     arm            8.0 GB   80 GB   nbg1,hel1
+       expOut := `ID    NAME   CORES   CPU TYPE   ARCHITECTURE   MEMORY   DISK 
   LOCATION     LOCATION AVAILABLE   LOCATION RECOMMENDED
+123   test   2       shared     arm            8.0 GB   80 GB   nbg1, hel1   
nbg1, hel1           hel1
 `
 
        require.NoError(t, err)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-cli-1.62.2/internal/version/version.go 
new/hcloud-cli-1.63.0/internal/version/version.go
--- old/hcloud-cli-1.62.2/internal/version/version.go   2026-04-07 
19:36:15.000000000 +0200
+++ new/hcloud-cli-1.63.0/internal/version/version.go   2026-04-24 
16:10:52.000000000 +0200
@@ -4,7 +4,7 @@
 
 var (
        // version is a semver version (https://semver.org).
-       version = "1.62.2" // x-releaser-pleaser-version
+       version = "1.63.0" // x-releaser-pleaser-version
 
        // versionPrerelease is a semver version pre-release identifier 
(https://semver.org).
        //
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-cli-1.62.2/mise.toml 
new/hcloud-cli-1.63.0/mise.toml
--- old/hcloud-cli-1.62.2/mise.toml     2026-04-07 19:36:15.000000000 +0200
+++ new/hcloud-cli-1.63.0/mise.toml     2026-04-24 16:10:52.000000000 +0200
@@ -1,7 +1,7 @@
 [tools]
-go = "1.26.1"
+go = "1.26.2"
 "go:go.uber.org/mock/mockgen" = "v0.6.0"
 "github:golangci/golangci-lint" = "2.11.4"
-"github:goreleaser/goreleaser" = "v2.15.2"
+"github:goreleaser/goreleaser" = "v2.15.4"
 "github:anchore/quill" = "v0.7.1"
 "github:jstemmer/go-junit-report" = "v2.1.0"

++++++ hcloud-cli.obsinfo ++++++
--- /var/tmp/diff_new_pack.7HvBKp/_old  2026-04-26 21:14:57.406350970 +0200
+++ /var/tmp/diff_new_pack.7HvBKp/_new  2026-04-26 21:14:57.410351134 +0200
@@ -1,5 +1,5 @@
 name: hcloud-cli
-version: 1.62.2
-mtime: 1775583375
-commit: 4b2b4e089e3b6d09f68469bec3ead54b08991bf7
+version: 1.63.0
+mtime: 1777039852
+commit: 5504434e319291743f9f700e5f45930b47f1c42d
 

++++++ vendor.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/datacenter.go 
new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/datacenter.go
--- old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/datacenter.go        
2026-04-07 19:36:15.000000000 +0200
+++ new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/datacenter.go        
2026-04-24 16:10:52.000000000 +0200
@@ -16,10 +16,16 @@
        Name        string
        Description string
        Location    *Location
+
+       // Deprecated: [Datacenter.ServerTypes] is deprecated and will not be 
returned after 2026-10-01.
+       // Use [ServerType.Locations] instead.
        ServerTypes DatacenterServerTypes
 }
 
 // DatacenterServerTypes represents the server types available and supported 
in a datacenter.
+//
+// Deprecated: [DatacenterServerTypes] is deprecated and will not be returned 
after 2026-10-01.
+// Use [ServerType.Locations] instead.
 type DatacenterServerTypes struct {
        Supported             []*ServerType
        AvailableForMigration []*ServerType
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/hcloud.go 
new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/hcloud.go
--- old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/hcloud.go    
2026-04-07 19:36:15.000000000 +0200
+++ new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/hcloud.go    
2026-04-24 16:10:52.000000000 +0200
@@ -80,4 +80,4 @@
 package hcloud
 
 // Version is the library's version following Semantic Versioning.
-const Version = "2.37.0" // x-releaser-pleaser-version
+const Version = "2.38.0" // x-releaser-pleaser-version
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/schema/datacenter.go 
new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/schema/datacenter.go
--- old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/schema/datacenter.go 
2026-04-07 19:36:15.000000000 +0200
+++ new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/schema/datacenter.go 
2026-04-24 16:10:52.000000000 +0200
@@ -2,14 +2,20 @@
 
 // Datacenter defines the schema of a datacenter.
 type Datacenter struct {
-       ID          int64                 `json:"id"`
-       Name        string                `json:"name"`
-       Description string                `json:"description"`
-       Location    Location              `json:"location"`
-       ServerTypes DatacenterServerTypes `json:"server_types"`
+       ID          int64    `json:"id"`
+       Name        string   `json:"name"`
+       Description string   `json:"description"`
+       Location    Location `json:"location"`
+
+       // Deprecated: [Datacenter.ServerTypes] is deprecated and will not be 
returned after 2026-10-01.
+       // Use [ServerType.Locations] instead.
+       ServerTypes *DatacenterServerTypes `json:"server_types,omitempty"`
 }
 
 // DatacenterServerTypes defines the schema of the server types available in a 
datacenter.
+//
+// Deprecated: [DatacenterServerTypes] is deprecated and will not be returned 
after 2026-10-01.
+// Use [ServerType.Locations] instead.
 type DatacenterServerTypes struct {
        Supported             []int64 `json:"supported"`
        AvailableForMigration []int64 `json:"available_for_migration"`
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/schema/server_type.go 
new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/schema/server_type.go
--- 
old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/schema/server_type.go    
    2026-04-07 19:36:15.000000000 +0200
+++ 
new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/schema/server_type.go    
    2026-04-24 16:10:52.000000000 +0200
@@ -29,8 +29,10 @@
 }
 
 type ServerTypeLocation struct {
-       ID   int64  `json:"id"`
-       Name string `json:"name"`
+       ID          int64  `json:"id"`
+       Name        string `json:"name"`
+       Recommended bool   `json:"recommended"`
+       Available   bool   `json:"available"`
        DeprecatableResource
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/schema.go 
new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/schema.go
--- old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/schema.go    
2026-04-07 19:36:15.000000000 +0200
+++ new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/schema.go    
2026-04-24 16:10:52.000000000 +0200
@@ -99,6 +99,10 @@
        return c.SchemaFromDatacenter(d)
 }
 
+func schemaFromDatacenterServerTypes(dst DatacenterServerTypes) 
schema.DatacenterServerTypes {
+       return c.schemaFromDatacenterServerTypes(dst)
+}
+
 // ServerFromSchema converts a schema.Server to a Server.
 func ServerFromSchema(s schema.Server) *Server {
        return c.ServerFromSchema(s)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/schema_gen.go 
new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/schema_gen.go
--- old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/schema_gen.go        
2026-04-07 19:36:15.000000000 +0200
+++ new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/schema_gen.go        
2026-04-24 16:10:52.000000000 +0200
@@ -84,6 +84,7 @@
 // goverter:extend int64SlicePtrFromCertificatePtrSlice
 // goverter:extend stringSlicePtrFromStringSlice
 // goverter:extend locationFromServerTypeLocationSchema
+// goverter:extend schemaPtrFromDatacenterServerTypes
 type converter interface {
 
        // goverter:map Error.Code ErrorCode
@@ -136,6 +137,8 @@
 
        SchemaFromDatacenter(*Datacenter) schema.Datacenter
 
+       schemaFromDatacenterServerTypes(DatacenterServerTypes) 
schema.DatacenterServerTypes
+
        ServerFromSchema(schema.Server) *Server
 
        // goverter:map OutgoingTraffic | mapZeroUint64ToNil
@@ -1124,3 +1127,12 @@
 
        return Ptr(time.Weekday(*i))
 }
+
+// hcloud.DatacenterServerTypes is not nullable but 
*schema.DatacenterServerTypes is.
+// We treat the zero value as nil.
+func schemaPtrFromDatacenterServerTypes(dst DatacenterServerTypes) 
*schema.DatacenterServerTypes {
+       if dst.Available == nil && dst.AvailableForMigration == nil && 
dst.Supported == nil {
+               return nil
+       }
+       return Ptr(schemaFromDatacenterServerTypes(dst))
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/server_type.go 
new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/server_type.go
--- old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/server_type.go       
2026-04-07 19:36:15.000000000 +0200
+++ new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/server_type.go       
2026-04-24 16:10:52.000000000 +0200
@@ -58,7 +58,9 @@
 )
 
 type ServerTypeLocation struct {
-       Location *Location
+       Location    *Location
+       Available   bool
+       Recommended bool
        DeprecatableResource
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/zz_schema.go 
new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/zz_schema.go
--- old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/zz_schema.go 
2026-04-07 19:36:15.000000000 +0200
+++ new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/zz_schema.go 
2026-04-24 16:10:52.000000000 +0200
@@ -78,7 +78,7 @@
        hcloudDatacenter.Name = source.Name
        hcloudDatacenter.Description = source.Description
        hcloudDatacenter.Location = c.LocationFromSchema(source.Location)
-       hcloudDatacenter.ServerTypes = 
c.schemaDatacenterServerTypesToHcloudDatacenterServerTypes(source.ServerTypes)
+       hcloudDatacenter.ServerTypes = 
c.pSchemaDatacenterServerTypesToHcloudDatacenterServerTypes(source.ServerTypes)
        return &hcloudDatacenter
 }
 func (c *converterImpl) DeprecationFromSchema(source *schema.DeprecationInfo) 
*DeprecationInfo {
@@ -515,7 +515,7 @@
                schemaDatacenter.Name = (*source).Name
                schemaDatacenter.Description = (*source).Description
                schemaDatacenter.Location = 
c.SchemaFromLocation((*source).Location)
-               schemaDatacenter.ServerTypes = 
c.hcloudDatacenterServerTypesToSchemaDatacenterServerTypes((*source).ServerTypes)
+               schemaDatacenter.ServerTypes = 
schemaPtrFromDatacenterServerTypes((*source).ServerTypes)
        }
        return schemaDatacenter
 }
@@ -1788,28 +1788,6 @@
        schemaCertificateUsedByRef.Type = string(source.Type)
        return schemaCertificateUsedByRef
 }
-func (c *converterImpl) 
hcloudDatacenterServerTypesToSchemaDatacenterServerTypes(source 
DatacenterServerTypes) schema.DatacenterServerTypes {
-       var schemaDatacenterServerTypes schema.DatacenterServerTypes
-       if source.Supported != nil {
-               schemaDatacenterServerTypes.Supported = make([]int64, 
len(source.Supported))
-               for i := 0; i < len(source.Supported); i++ {
-                       schemaDatacenterServerTypes.Supported[i] = 
int64FromServerType(source.Supported[i])
-               }
-       }
-       if source.AvailableForMigration != nil {
-               schemaDatacenterServerTypes.AvailableForMigration = 
make([]int64, len(source.AvailableForMigration))
-               for j := 0; j < len(source.AvailableForMigration); j++ {
-                       schemaDatacenterServerTypes.AvailableForMigration[j] = 
int64FromServerType(source.AvailableForMigration[j])
-               }
-       }
-       if source.Available != nil {
-               schemaDatacenterServerTypes.Available = make([]int64, 
len(source.Available))
-               for k := 0; k < len(source.Available); k++ {
-                       schemaDatacenterServerTypes.Available[k] = 
int64FromServerType(source.Available[k])
-               }
-       }
-       return schemaDatacenterServerTypes
-}
 func (c *converterImpl) 
hcloudDeprecatableResourceToSchemaDeprecatableResource(source 
DeprecatableResource) schema.DeprecatableResource {
        var schemaDeprecatableResource schema.DeprecatableResource
        schemaDeprecatableResource.Deprecation = 
c.SchemaFromDeprecation(source.Deprecation)
@@ -2143,7 +2121,7 @@
                schemaDatacenter.Name = (*source).Name
                schemaDatacenter.Description = (*source).Description
                schemaDatacenter.Location = 
c.SchemaFromLocation((*source).Location)
-               schemaDatacenter.ServerTypes = 
c.hcloudDatacenterServerTypesToSchemaDatacenterServerTypes((*source).ServerTypes)
+               schemaDatacenter.ServerTypes = 
schemaPtrFromDatacenterServerTypes((*source).ServerTypes)
                pSchemaDatacenter = &schemaDatacenter
        }
        return pSchemaDatacenter
@@ -2573,6 +2551,30 @@
        }
        return pHcloudCertificateStatus
 }
+func (c *converterImpl) 
pSchemaDatacenterServerTypesToHcloudDatacenterServerTypes(source 
*schema.DatacenterServerTypes) DatacenterServerTypes {
+       var hcloudDatacenterServerTypes DatacenterServerTypes
+       if source != nil {
+               if (*source).Supported != nil {
+                       hcloudDatacenterServerTypes.Supported = 
make([]*ServerType, len((*source).Supported))
+                       for i := 0; i < len((*source).Supported); i++ {
+                               hcloudDatacenterServerTypes.Supported[i] = 
serverTypeFromInt64((*source).Supported[i])
+                       }
+               }
+               if (*source).AvailableForMigration != nil {
+                       hcloudDatacenterServerTypes.AvailableForMigration = 
make([]*ServerType, len((*source).AvailableForMigration))
+                       for j := 0; j < len((*source).AvailableForMigration); 
j++ {
+                               
hcloudDatacenterServerTypes.AvailableForMigration[j] = 
serverTypeFromInt64((*source).AvailableForMigration[j])
+                       }
+               }
+               if (*source).Available != nil {
+                       hcloudDatacenterServerTypes.Available = 
make([]*ServerType, len((*source).Available))
+                       for k := 0; k < len((*source).Available); k++ {
+                               hcloudDatacenterServerTypes.Available[k] = 
serverTypeFromInt64((*source).Available[k])
+                       }
+               }
+       }
+       return hcloudDatacenterServerTypes
+}
 func (c *converterImpl) pSchemaDatacenterToPHcloudDatacenter(source 
*schema.Datacenter) *Datacenter {
        var pHcloudDatacenter *Datacenter
        if source != nil {
@@ -2581,7 +2583,7 @@
                hcloudDatacenter.Name = (*source).Name
                hcloudDatacenter.Description = (*source).Description
                hcloudDatacenter.Location = 
c.LocationFromSchema((*source).Location)
-               hcloudDatacenter.ServerTypes = 
c.schemaDatacenterServerTypesToHcloudDatacenterServerTypes((*source).ServerTypes)
+               hcloudDatacenter.ServerTypes = 
c.pSchemaDatacenterServerTypesToHcloudDatacenterServerTypes((*source).ServerTypes)
                pHcloudDatacenter = &hcloudDatacenter
        }
        return pHcloudDatacenter
@@ -2759,28 +2761,6 @@
        hcloudCertificateUsedByRef.Type = CertificateUsedByRefType(source.Type)
        return hcloudCertificateUsedByRef
 }
-func (c *converterImpl) 
schemaDatacenterServerTypesToHcloudDatacenterServerTypes(source 
schema.DatacenterServerTypes) DatacenterServerTypes {
-       var hcloudDatacenterServerTypes DatacenterServerTypes
-       if source.Supported != nil {
-               hcloudDatacenterServerTypes.Supported = make([]*ServerType, 
len(source.Supported))
-               for i := 0; i < len(source.Supported); i++ {
-                       hcloudDatacenterServerTypes.Supported[i] = 
serverTypeFromInt64(source.Supported[i])
-               }
-       }
-       if source.AvailableForMigration != nil {
-               hcloudDatacenterServerTypes.AvailableForMigration = 
make([]*ServerType, len(source.AvailableForMigration))
-               for j := 0; j < len(source.AvailableForMigration); j++ {
-                       hcloudDatacenterServerTypes.AvailableForMigration[j] = 
serverTypeFromInt64(source.AvailableForMigration[j])
-               }
-       }
-       if source.Available != nil {
-               hcloudDatacenterServerTypes.Available = make([]*ServerType, 
len(source.Available))
-               for k := 0; k < len(source.Available); k++ {
-                       hcloudDatacenterServerTypes.Available[k] = 
serverTypeFromInt64(source.Available[k])
-               }
-       }
-       return hcloudDatacenterServerTypes
-}
 func (c *converterImpl) 
schemaDeprecatableResourceToHcloudDeprecatableResource(source 
schema.DeprecatableResource) DeprecatableResource {
        var hcloudDeprecatableResource DeprecatableResource
        hcloudDeprecatableResource.Deprecation = 
c.DeprecationFromSchema(source.Deprecation)
@@ -2824,6 +2804,28 @@
        hcloudFloatingIPProtection.Delete = source.Delete
        return hcloudFloatingIPProtection
 }
+func (c *converterImpl) schemaFromDatacenterServerTypes(source 
DatacenterServerTypes) schema.DatacenterServerTypes {
+       var schemaDatacenterServerTypes schema.DatacenterServerTypes
+       if source.Supported != nil {
+               schemaDatacenterServerTypes.Supported = make([]int64, 
len(source.Supported))
+               for i := 0; i < len(source.Supported); i++ {
+                       schemaDatacenterServerTypes.Supported[i] = 
int64FromServerType(source.Supported[i])
+               }
+       }
+       if source.AvailableForMigration != nil {
+               schemaDatacenterServerTypes.AvailableForMigration = 
make([]int64, len(source.AvailableForMigration))
+               for j := 0; j < len(source.AvailableForMigration); j++ {
+                       schemaDatacenterServerTypes.AvailableForMigration[j] = 
int64FromServerType(source.AvailableForMigration[j])
+               }
+       }
+       if source.Available != nil {
+               schemaDatacenterServerTypes.Available = make([]int64, 
len(source.Available))
+               for k := 0; k < len(source.Available); k++ {
+                       schemaDatacenterServerTypes.Available[k] = 
int64FromServerType(source.Available[k])
+               }
+       }
+       return schemaDatacenterServerTypes
+}
 func (c *converterImpl) schemaFromFloatingIPPricing(source FloatingIPPricing) 
schema.PricingFloatingIP {
        var schemaPricingFloatingIP schema.PricingFloatingIP
        schemaPricingFloatingIP.PriceMonthly = 
c.hcloudPriceToSchemaPrice(source.Monthly)
@@ -2910,6 +2912,8 @@
        if pString != nil {
                schemaServerTypeLocation.Name = *pString
        }
+       schemaServerTypeLocation.Recommended = source.Recommended
+       schemaServerTypeLocation.Available = source.Available
        schemaServerTypeLocation.DeprecatableResource = 
c.hcloudDeprecatableResourceToSchemaDeprecatableResource(source.DeprecatableResource)
        return schemaServerTypeLocation
 }
@@ -3102,6 +3106,8 @@
 func (c *converterImpl) serverTypeLocationFromSchema(source 
schema.ServerTypeLocation) ServerTypeLocation {
        var hcloudServerTypeLocation ServerTypeLocation
        hcloudServerTypeLocation.Location = 
locationFromServerTypeLocationSchema(source)
+       hcloudServerTypeLocation.Available = source.Available
+       hcloudServerTypeLocation.Recommended = source.Recommended
        hcloudServerTypeLocation.DeprecatableResource = 
c.schemaDeprecatableResourceToHcloudDeprecatableResource(source.DeprecatableResource)
        return hcloudServerTypeLocation
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/github.com/jedib0t/go-pretty/v6/text/align.go 
new/vendor/github.com/jedib0t/go-pretty/v6/text/align.go
--- old/vendor/github.com/jedib0t/go-pretty/v6/text/align.go    2026-04-07 
19:36:15.000000000 +0200
+++ new/vendor/github.com/jedib0t/go-pretty/v6/text/align.go    2026-04-24 
16:10:52.000000000 +0200
@@ -127,6 +127,13 @@
 
        // get the number of spaces to insert into the text
        numSpacesNeeded := maxLength - textLength + strings.Count(text, " ")
+       if numSpacesNeeded < 0 {
+               // textLength (display-width) exceeds maxLength; this can happen
+               // when the cell contains wide Unicode characters (e.g. CJK) 
whose
+               // display width is greater than their rune count. Return the 
text
+               // as-is; truncation is the caller's responsibility.
+               return text
+       }
        numSpacesNeededBetweenWords := 0
        if len(words) > 1 {
                numSpacesNeededBetweenWords = numSpacesNeeded / (len(words) - 1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/golang.org/x/crypto/ssh/cipher.go 
new/vendor/golang.org/x/crypto/ssh/cipher.go
--- old/vendor/golang.org/x/crypto/ssh/cipher.go        2026-04-07 
19:36:15.000000000 +0200
+++ new/vendor/golang.org/x/crypto/ssh/cipher.go        2026-04-24 
16:10:52.000000000 +0200
@@ -586,7 +586,7 @@
 
        // Length of encrypted portion of the packet (header, payload, padding).
        // Enforce minimum padding and packet size.
-       encLength := maxUInt32(prefixLen+len(packet)+cbcMinPaddingSize, 
cbcMinPaddingSize)
+       encLength := maxUInt32(prefixLen+len(packet)+cbcMinPaddingSize, 
cbcMinPacketSize)
        // Enforce block size.
        encLength = (encLength + effectiveBlockSize - 1) / effectiveBlockSize * 
effectiveBlockSize
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/golang.org/x/crypto/ssh/client_auth.go 
new/vendor/golang.org/x/crypto/ssh/client_auth.go
--- old/vendor/golang.org/x/crypto/ssh/client_auth.go   2026-04-07 
19:36:15.000000000 +0200
+++ new/vendor/golang.org/x/crypto/ssh/client_auth.go   2026-04-24 
16:10:52.000000000 +0200
@@ -274,10 +274,14 @@
        }
 
        // Filter algorithms based on those supported by MultiAlgorithmSigner.
+       // Iterate over the signer's algorithms first to preserve its 
preference order.
+       supportedKeyAlgos := algorithmsForKeyFormat(keyFormat)
        var keyAlgos []string
-       for _, algo := range algorithmsForKeyFormat(keyFormat) {
-               if slices.Contains(as.Algorithms(), underlyingAlgo(algo)) {
-                       keyAlgos = append(keyAlgos, algo)
+       for _, signerAlgo := range as.Algorithms() {
+               if idx := slices.IndexFunc(supportedKeyAlgos, func(algo string) 
bool {
+                       return underlyingAlgo(algo) == signerAlgo
+               }); idx >= 0 {
+                       keyAlgos = append(keyAlgos, supportedKeyAlgos[idx])
                }
        }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vendor/golang.org/x/sys/cpu/cpu_darwin_arm64_other.go 
new/vendor/golang.org/x/sys/cpu/cpu_darwin_arm64_other.go
--- old/vendor/golang.org/x/sys/cpu/cpu_darwin_arm64_other.go   2026-04-07 
19:36:15.000000000 +0200
+++ new/vendor/golang.org/x/sys/cpu/cpu_darwin_arm64_other.go   2026-04-24 
16:10:52.000000000 +0200
@@ -6,6 +6,8 @@
 
 package cpu
 
+import "runtime"
+
 func doinit() {
        setMinimalFeatures()
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go 
new/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go
--- old/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go  2026-04-07 
19:36:15.000000000 +0200
+++ new/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go  2026-04-24 
16:10:52.000000000 +0200
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-//go:build !darwin && !linux && !netbsd && !openbsd && !windows && arm64
+//go:build !darwin && !linux && !netbsd && !openbsd && arm64
 
 package cpu
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/golang.org/x/sys/cpu/cpu_windows_arm64.go 
new/vendor/golang.org/x/sys/cpu/cpu_windows_arm64.go
--- old/vendor/golang.org/x/sys/cpu/cpu_windows_arm64.go        2026-04-07 
19:36:15.000000000 +0200
+++ new/vendor/golang.org/x/sys/cpu/cpu_windows_arm64.go        1970-01-01 
01:00:00.000000000 +0100
@@ -1,42 +0,0 @@
-// Copyright 2026 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package cpu
-
-import (
-       "golang.org/x/sys/windows"
-)
-
-func doinit() {
-       // set HasASIMD and HasFP to true as per
-       // 
https://learn.microsoft.com/en-us/cpp/build/arm64-windows-abi-conventions?view=msvc-170#base-requirements
-       //
-       // The ARM64 version of Windows always presupposes that it's running on 
an ARMv8 or later architecture.
-       // Both floating-point and NEON support are presumed to be present in 
hardware.
-       //
-       ARM64.HasASIMD = true
-       ARM64.HasFP = true
-
-       if 
windows.IsProcessorFeaturePresent(windows.PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE)
 {
-               ARM64.HasAES = true
-               ARM64.HasPMULL = true
-               ARM64.HasSHA1 = true
-               ARM64.HasSHA2 = true
-       }
-       ARM64.HasSHA3 = 
windows.IsProcessorFeaturePresent(windows.PF_ARM_SHA3_INSTRUCTIONS_AVAILABLE)
-       ARM64.HasCRC32 = 
windows.IsProcessorFeaturePresent(windows.PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE)
-       ARM64.HasSHA512 = 
windows.IsProcessorFeaturePresent(windows.PF_ARM_SHA512_INSTRUCTIONS_AVAILABLE)
-       ARM64.HasATOMICS = 
windows.IsProcessorFeaturePresent(windows.PF_ARM_V81_ATOMIC_INSTRUCTIONS_AVAILABLE)
-       if 
windows.IsProcessorFeaturePresent(windows.PF_ARM_V82_DP_INSTRUCTIONS_AVAILABLE) 
{
-               ARM64.HasASIMDDP = true
-               ARM64.HasASIMDRDM = true
-       }
-       if 
windows.IsProcessorFeaturePresent(windows.PF_ARM_V83_LRCPC_INSTRUCTIONS_AVAILABLE)
 {
-               ARM64.HasLRCPC = true
-               ARM64.HasSM3 = true
-       }
-       ARM64.HasSVE = 
windows.IsProcessorFeaturePresent(windows.PF_ARM_SVE_INSTRUCTIONS_AVAILABLE)
-       ARM64.HasSVE2 = 
windows.IsProcessorFeaturePresent(windows.PF_ARM_SVE2_INSTRUCTIONS_AVAILABLE)
-       ARM64.HasJSCVT = 
windows.IsProcessorFeaturePresent(windows.PF_ARM_V83_JSCVT_INSTRUCTIONS_AVAILABLE)
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/golang.org/x/sys/windows/dll_windows.go 
new/vendor/golang.org/x/sys/windows/dll_windows.go
--- old/vendor/golang.org/x/sys/windows/dll_windows.go  2026-04-07 
19:36:15.000000000 +0200
+++ new/vendor/golang.org/x/sys/windows/dll_windows.go  2026-04-24 
16:10:52.000000000 +0200
@@ -163,42 +163,7 @@
 // (according to the semantics of the specific function being called) before 
consulting
 // the error. The error will be guaranteed to contain windows.Errno.
 func (p *Proc) Call(a ...uintptr) (r1, r2 uintptr, lastErr error) {
-       switch len(a) {
-       case 0:
-               return syscall.Syscall(p.Addr(), uintptr(len(a)), 0, 0, 0)
-       case 1:
-               return syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], 0, 0)
-       case 2:
-               return syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], a[1], 0)
-       case 3:
-               return syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], a[1], 
a[2])
-       case 4:
-               return syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], 
a[2], a[3], 0, 0)
-       case 5:
-               return syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], 
a[2], a[3], a[4], 0)
-       case 6:
-               return syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], 
a[2], a[3], a[4], a[5])
-       case 7:
-               return syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], 
a[2], a[3], a[4], a[5], a[6], 0, 0)
-       case 8:
-               return syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], 
a[2], a[3], a[4], a[5], a[6], a[7], 0)
-       case 9:
-               return syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], 
a[2], a[3], a[4], a[5], a[6], a[7], a[8])
-       case 10:
-               return syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], 
a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], 0, 0)
-       case 11:
-               return syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], 
a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], 0)
-       case 12:
-               return syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], 
a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11])
-       case 13:
-               return syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], 
a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], 0, 0)
-       case 14:
-               return syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], 
a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], 0)
-       case 15:
-               return syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], 
a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], 
a[14])
-       default:
-               panic("Call " + p.Name + " with too many arguments " + 
itoa(len(a)) + ".")
-       }
+       return syscall.SyscallN(p.Addr(), a...)
 }
 
 // A LazyDLL implements access to a single DLL.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/golang.org/x/sys/windows/security_windows.go 
new/vendor/golang.org/x/sys/windows/security_windows.go
--- old/vendor/golang.org/x/sys/windows/security_windows.go     2026-04-07 
19:36:15.000000000 +0200
+++ new/vendor/golang.org/x/sys/windows/security_windows.go     2026-04-24 
16:10:52.000000000 +0200
@@ -1438,13 +1438,17 @@
 }
 
 // GetNamedSecurityInfo queries the security information for a given named 
object and returns the self-relative security
-// descriptor result on the Go heap.
+// descriptor result on the Go heap. The security descriptor might be nil, 
even when err is nil, if the object exists
+// but has no security descriptor.
 func GetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, 
securityInformation SECURITY_INFORMATION) (sd *SECURITY_DESCRIPTOR, err error) {
        var winHeapSD *SECURITY_DESCRIPTOR
        err = getNamedSecurityInfo(objectName, objectType, securityInformation, 
nil, nil, nil, nil, &winHeapSD)
        if err != nil {
                return
        }
+       if winHeapSD == nil {
+               return nil, nil
+       }
        defer LocalFree(Handle(unsafe.Pointer(winHeapSD)))
        return winHeapSD.copySelfRelativeSecurityDescriptor(), nil
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/modules.txt new/vendor/modules.txt
--- old/vendor/modules.txt      2026-04-07 19:36:15.000000000 +0200
+++ new/vendor/modules.txt      2026-04-24 16:10:52.000000000 +0200
@@ -55,7 +55,7 @@
 # github.com/guptarohit/asciigraph v0.9.0
 ## explicit; go 1.11
 github.com/guptarohit/asciigraph
-# github.com/hetznercloud/hcloud-go/v2 v2.37.0
+# github.com/hetznercloud/hcloud-go/v2 v2.38.0
 ## explicit; go 1.25.0
 github.com/hetznercloud/hcloud-go/v2/hcloud
 github.com/hetznercloud/hcloud-go/v2/hcloud/exp/actionutil
@@ -73,7 +73,7 @@
 # github.com/inconshreveable/mousetrap v1.1.0
 ## explicit; go 1.18
 github.com/inconshreveable/mousetrap
-# github.com/jedib0t/go-pretty/v6 v6.7.9
+# github.com/jedib0t/go-pretty/v6 v6.7.10
 ## explicit; go 1.18
 github.com/jedib0t/go-pretty/v6/table
 github.com/jedib0t/go-pretty/v6/text
@@ -184,7 +184,7 @@
 # go.yaml.in/yaml/v3 v3.0.4
 ## explicit; go 1.16
 go.yaml.in/yaml/v3
-# golang.org/x/crypto v0.49.0
+# golang.org/x/crypto v0.50.0
 ## explicit; go 1.25.0
 golang.org/x/crypto/blowfish
 golang.org/x/crypto/chacha20
@@ -193,23 +193,23 @@
 golang.org/x/crypto/internal/poly1305
 golang.org/x/crypto/ssh
 golang.org/x/crypto/ssh/internal/bcrypt_pbkdf
-# golang.org/x/exp v0.0.0-20260312153236-7ab1446f8b90
+# golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f
 ## explicit; go 1.25.0
 golang.org/x/exp/maps
-# golang.org/x/net v0.52.0
+# golang.org/x/net v0.53.0
 ## explicit; go 1.25.0
 golang.org/x/net/http/httpguts
 golang.org/x/net/idna
-# golang.org/x/sys v0.42.0
+# golang.org/x/sys v0.43.0
 ## explicit; go 1.25.0
 golang.org/x/sys/cpu
 golang.org/x/sys/plan9
 golang.org/x/sys/unix
 golang.org/x/sys/windows
-# golang.org/x/term v0.41.0
+# golang.org/x/term v0.42.0
 ## explicit; go 1.25.0
 golang.org/x/term
-# golang.org/x/text v0.35.0
+# golang.org/x/text v0.36.0
 ## explicit; go 1.25.0
 golang.org/x/text/cases
 golang.org/x/text/encoding

Reply via email to