Skip to content

Releases: datum-cloud/datumctl

v0.14.0

08 May 18:15
15b6882

Choose a tag to compare

Until now, getting a picture of your Datum Cloud project meant stringing together get commands and mentally assembling the results. That changes today. This release ships datumctl console — a full interactive terminal UI that turns your project into something you can actually navigate. Plus: structured error output for the automation crowd.

Important

Heads up! We chose to simplify the login experience with datumctl to just be datumctl login.


New: datumctl console (#166)

Just run datumctl console. No flags, no arguments — it opens straight into a live view of your project.

Resource browser — The left sidebar lists every resource type in your project, grouped by API category. Navigate with arrow keys or jump directly with letter shortcuts. The main panel renders a live, filterable, sortable table of resources for whatever type is selected. Pick any row and a detail pane opens alongside it: description, status conditions, Kubernetes events, raw YAML, and full change history, all accessible as tabs without leaving the screen.

Quota dashboard (press 3) — Every governed resource type, your current usage, and how much headroom you have left — all in one place. The numbers refresh automatically and carry a freshness timestamp so you always know if you're looking at live data or something a few seconds stale. If the quota service goes sideways, the title bar tells you and [r] fires an immediate retry.

Activity feed (press 4) — A scrollable timeline of every recent change across the project. Select any entry to expand a structured diff showing exactly what changed and when. Great for answering "wait, who changed that?" without opening another tab.

Welcome panel — First time in, you get a quick-start guide and a cheat sheet of key bindings. After that, the panel switches to a summary view: platform health, recent activity, and quota status at a glance, so you can spot anything worth attention before you start drilling.

The UI adapts gracefully to narrow terminals, collapsing hints and labels rather than breaking layout. A persistent status bar shows context-sensitive hints at all times, and ? opens a full keybinding reference whenever you need it.


Machine accounts are now service accounts (#164)

"Machine account" was a bit of an odd name. In v0.14.0, it's gone — replaced by service account everywhere it appeared: flags, credential types, and the key file directory, which moves from ~/.config/datumctl/machine-accounts/ to ~/.config/datumctl/service-accounts/. This is a pre-GA breaking rename to align with what the rest of the industry calls this concept.

If you have scripts or tooling that reference machine-account paths or credential types, update them before upgrading.


Structured error output for agents and automation (#161)

Pass --error-format=json (or yaml) and errors come back as machine-readable structured output instead of human prose. The default is unchanged — plain text for humans, structured output when you ask for it. Useful when you're wrapping datumctl in a script, CI pipeline, or an AI coding agent that needs to do something with the error beyond just printing it.


Shell completions actually work now (#150)

A bug was silently blocking resource name and ID completion — the kind of thing you'd only notice once you'd been tab-completing into the void for a while. Fixed across bash, zsh, fish, and PowerShell. One caveat: completing project-scoped resource names still requires passing --organization or --project explicitly. That constraint goes away once those flags become optional.


Bug fixes

The vanishing resources bug (#165) — Running datumctl get serviceaccounts --project <id> returned the server doesn't have a resource type "serviceaccounts" even when the service account was sitting right there. The culprit: the discovery client was ignoring the --project flag entirely and always hitting the user control plane, where project-scoped resource types are intentionally filtered out. The error message was misleading, the silent fallback was the real problem, and it's fixed.

v0.13.2

10 Apr 22:18
a5fab73

Choose a tag to compare

Highlights

Fixes a bug that prevented machine account login from completing on macOS (#147). Logging in with a machine account credentials file now works on macOS the same way it already did on Linux.

Fixes #146

Full changelog: v0.13.1...v0.13.2

v0.13.1

10 Apr 21:13
d4ab844

Choose a tag to compare

Highlights

Machine account credentials files are now portable across environments (#145). The auth endpoint is discovered automatically at login time, so the same credentials file can be used against any Datum Cloud environment. Older credentials files continue to work unchanged.

Fixes #144

Full changelog: v0.13.0...v0.13.1

v0.13.0

09 Apr 22:13
02a596c

Choose a tag to compare

Highlights

This release adds a supported way for machine accounts to sign in from the command line and picks up a routine round of dependency updates.

Machine account login

  • You can now authenticate datumctl as a machine account using a credentials file (#137). This enables CI/CD pipelines, automation, and service-to-service workflows to use datumctl without a human in the loop.
  • The JWT bearer exchange used during login has been hardened against request timeouts, HTTP protocol downgrade, and oversized responses.

Dependency updates

  • go-oidc updated to v3.18.0 (#138)
  • go-keyring updated to v0.2.8
  • Go toolchain updated to 1.26.2 (#136)

Full changelog: v0.12.0...v0.13.0

v0.13.1 Experimental AI Assistant

28 Apr 14:19

Choose a tag to compare

Pre-release

What's Changed

  • fix(deps): update module golang.org/x/oauth2 to v0.36.0 by @renovate[bot] in #128
  • chore(deps): update dependency go to v1.26.1 by @renovate[bot] in #127
  • fix(deps): update kubernetes monorepo to v0.35.2 by @renovate[bot] in #125
  • fix(deps): update module sigs.k8s.io/controller-runtime to v0.23.3 by @renovate[bot] in #126
  • fix(deps): update module github.com/rodaine/table to v1.3.1 by @renovate[bot] in #122
  • fix(deps): update module go.miloapis.com/milo to v0.21.0 by @renovate[bot] in #121
  • fix(deps): update module go.miloapis.com/activity to v0.3.1 by @renovate[bot] in #123

Full Changelog: v0.11.0...v0.13.1-experimental-ai

v0.12.0

07 Apr 21:47
379ffa2

Choose a tag to compare

Changelog

  • 1a5c023 Delete docs/cli-help-improvement-plan.md
  • 8031866 Merge pull request #105 from datum-cloud/feat/device-auth
  • 55243a8 Merge pull request #121 from datum-cloud/renovate/go.miloapis.com-milo-0.x
  • b3cd6e3 Merge pull request #122 from datum-cloud/renovate/github.com-rodaine-table-1.x
  • d8b370b Merge pull request #123 from datum-cloud/renovate/go.miloapis.com-activity-0.x
  • 52adae0 Merge pull request #125 from datum-cloud/renovate/kubernetes-monorepo
  • dba7c33 Merge pull request #126 from datum-cloud/renovate/sigs.k8s.io-controller-runtime-0.x
  • 4d5029a Merge pull request #127 from datum-cloud/renovate/go-1.x
  • 9b2d2ca Merge pull request #128 from datum-cloud/renovate/golang.org-x-oauth2-0.x
  • 379ffa2 Merge pull request #130 from datum-cloud/renovate/github.com-zalando-go-keyring-0.x
  • 7cf8710 Merge pull request #132 from datum-cloud/improve-cli-help-text
  • 27509fc Merge pull request #133 from datum-cloud/dependabot/go_modules/go_modules-a978bc362c
  • 4a7aef2 chore(deps): bump github.com/go-jose/go-jose/v4
  • 53813d8 chore(deps): update dependency go to v1.26.1
  • bd333e0 chore(nix): update vendorHash for go deps
  • 5d35c65 chore(nix): update vendorHash for go deps
  • d09dc6f chore(nix): update vendorHash for go deps
  • aecf088 chore(nix): update vendorHash for go deps
  • a7c2db5 feat: force auth device v2 path
  • 209d881 feat: implement device authentication (no browser)
  • d2df5eb fix(deps): update kubernetes monorepo to v0.35.2
  • 8f18388 fix(deps): update module github.com/rodaine/table to v1.3.1
  • e564e28 fix(deps): update module github.com/zalando/go-keyring to v0.2.8
  • 845b79a fix(deps): update module go.miloapis.com/activity to v0.3.1
  • 60f3074 fix(deps): update module go.miloapis.com/milo to v0.21.0
  • fbea773 fix(deps): update module golang.org/x/oauth2 to v0.36.0
  • 3b0c10f fix(deps): update module sigs.k8s.io/controller-runtime to v0.23.3
  • bcc5af0 improve CLI help text for all datumctl commands

v0.11.0

13 Mar 15:35
8cd484d

Choose a tag to compare

What's Changed

  • fix URL to datumctl quickstart guide by @brian-toresdahl-datum in #98
  • chore(deps): update dependency go to v1.25.7 by @renovate[bot] in #97
  • fix(deps): update module golang.org/x/oauth2 to v0.35.0 by @renovate[bot] in #101
  • feat: add who-ami and can-i commands by @gianarb in #100
  • chore(deps): update dependency go to v1.26.0 by @renovate[bot] in #102
  • fix(deps): update kubernetes packages to v0.35.1 by @renovate[bot] in #103
  • fix(deps): update module go.miloapis.com/milo to v0.19.0 by @renovate[bot] in #106
  • chore(deps): update goreleaser/goreleaser-action action to v7 by @renovate[bot] in #108
  • feat: implement transformation mechanism to improve generated cli docs by @gianarb in #107
  • feat: remove double title in docs and hide from sidebar by @gianarb in #110
  • fix(deps): update module k8s.io/cli-runtime to v0.35.2 by @renovate[bot] in #111
  • chore: configure Claude Code datum plugins by @scotwells in #109
  • fix(deps): update module go.miloapis.com/milo to v0.19.1 by @renovate[bot] in #112
  • feat: add version command by @gianarb in #114
  • chore: redirect authorized user to list of commands page by @gianarb in #116
  • fix(deps): update module golang.org/x/oauth2 to v0.36.0 by @renovate[bot] in #119
  • chore(deps): update dependency go to v1.26.1 by @renovate[bot] in #118
  • fix(deps): update kubernetes packages to v0.35.2 by @renovate[bot] in #113
  • fix(deps): update module sigs.k8s.io/controller-runtime to v0.23.3 by @renovate[bot] in #117
  • chore(deps): bump activity CLI to v0.3.0 by @scotwells in #124

New Contributors

Full Changelog: v0.10.1...v0.11.0

v0.10.1

04 Feb 14:33
c0bd317

Choose a tag to compare

Changelog

  • 3cb768d Merge pull request #94 from datum-cloud/feat/make-docs-datum-net-compliant
  • c0bd317 Merge pull request #95 from datum-cloud/docs/remove-double-titles

v0.10.0

04 Feb 13:07
0108ce9

Choose a tag to compare

Changelog

  • d9a0eee Merge pull request #79 from ShippingBytes/feat/gen-doc
  • be094c5 Merge pull request #87 from datum-cloud/feat/update-nix-hash-as-check
  • 231e688 Merge pull request #88 from datum-cloud/renovate/sigs.k8s.io-controller-runtime-0.x
  • 7ad7d69 Merge pull request #89 from datum-cloud/renovate/go.miloapis.com-milo-0.x
  • 2b21cf1 Merge pull request #90 from datum-cloud/fix/remove-create-subcommand
  • 919ac19 Merge pull request #91 from datum-cloud/feat/browser-swagger-specs
  • e5b8c3b Merge pull request #92 from datum-cloud/renovate/go.miloapis.com-milo-0.x
  • 0108ce9 Merge pull request #93 from ShippingBytes/chore/release-markdown-cli-doc
  • 1026926 Merge remote-tracking branch 'origin/main' into feat/update-nix-hash-as-check
  • 85364a3 chore(deps): update go.sum
  • f81713f chore(nix): update vendorHash for go deps
  • 3ca6a31 chore(nix): update vendorHash for go deps
  • e0c5b3a chore(nix): update vendorHash for go deps
  • f419680 chore(nix): update vendorHash for go deps
  • 972bed0 feat(github): update nix hash on relevant PR instead of main branch
  • fcf1680 feat: add documentation folder as release
  • ca13742 feat: add gen-documentation command
  • cc3c794 feat: docs command for exploring api endpoints
  • ab9f502 fix(deps): update module go.miloapis.com/milo to v0.17.1
  • c4481d0 fix(deps): update module go.miloapis.com/milo to v0.18.0
  • dc1b5de fix(deps): update module sigs.k8s.io/controller-runtime to v0.23.1
  • 4acc066 fix(github): change to a push-triggered workflow instead on PR
  • d6af734 fix: remove create subcommands

v0.9.1

22 Jan 20:23
710ca4f

Choose a tag to compare

What's Changed

  • chore(nix): manually update vendorHash by @drewr in #84
  • fix(deps): update module go.miloapis.com/milo to v0.16.2 by @renovate[bot] in #81
  • chore(nix): Update vendorHash after Go dependency changes by @github-actions[bot] in #85
  • fix: set context to avoid panic on token refresh by @scotwells in #86

Full Changelog: v0.9.0...v0.9.1