NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Go modules · #1314 by repository stars
Last release 9 days ago
29 Sep 2026
Ships fairly regularly
a new release about every 6 weeks
Most releases are documented
notes for 13 of 18 stable releases
Nothing withdrawn
no release was ever pulled
4 years old
68 releases · first in 2022
One column per quarter.
Nothing published for this version
Provide automatic themes that switch light and dark automatically by @saschpe in #363
Provide automatic themes that switch light and dark automatically by @saschpe in #363
kubecolor is now able to automatically detect if it should use dark or light theme.
New theme presets:
auto: resolves to light or darkprotanopia: resolves to protanopia-light or protanopia-darkdeuteranopia: resolves to deuteranopia-light or deuteranopia-darktritanopia: resolves to tritanopia-light or tritanopia-darkIf kubecolor is unable to read your terminal emulator's background color, then any "auto" preset will fall back to their "dark" variant.
This also changes the default preset (YAML) / --kubecolor-theme (flag) / KUBECOLOR_PRESET (env var) config from dark to auto.
Full Changelog: v0.7.0...v0.8.0
Re-release of v0.7.0 , as our CI/CD for releasing DEB & RPM packages was disabled
Re-release of v0.7.0, as our CI/CD for releasing DEB & RPM packages was disabled
Kubecolor has been getting a big influx of LLM PRs. Some good, some bad. Interesting times now that even small projects like kubecolor gets bombarded.
Kubecolor has been getting a big influx of LLM PRs. Some good, some bad. Interesting times now that even small projects like kubecolor gets bombarded. Not to be too negative. Some clearly AI-generated PRs do bring value, and we of course thourougly review each PR. Kubecolor has not turned into slop. While we maintainers do not use LLMs, some outside contributors do. So to be clear: kubecolor v0.7.0 and beyond will contain some AI-generated code. If you have a personal strict no-AI policy, then you will want to stick to using v0.6.0.
logscan: add support for Ruby-style :key=>value log format by @sinashahoveisi in #341
Logs with :key=>value syntax, commonly found in e.g Ruby logs and some Elastic products like Logstash, are now supported and get appropriate coloring:
| Before | |
| After |
fix: handle negative JSON numbers by @Vaibhav-C-S in #339
| Before | After |
|---|---|
Add support for kubectl apply edit-last-applied by @utafrali in #318
feat: age-based coloring for kubectl get via duration thresholds by @tenitski in #360
By using the KUBECOLOR_OBJ_FRESH environment variable, you could tell kubecolor to render AGE column values with different colors depending on if a row is considered "fresh" or not.
# previously:
export KUBECOLOR_OBJ_FRESH="30h"
export KUBECOLOR_THEME_DATA_DURATIONFRESH="yellow"Before it was a "fresh or not fresh", but kubecolor now supports more levels of "freshness". For example:
# new in v0.7.0:
export KUBECOLOR_OBJ_FRESH="30m/2h/1d/30d/10y"
export KUBECOLOR_THEME_DATA_DURATIONFRESH="hiblue/himagenta/yellow/white/hired"which would set:
hiblue coloringhimagenta coloringyellow coloringwhite coloringhired coloringfix: imply plain mode for interactive commands by @terry-li-hm in #346
Kubecolor will now disable all coloring and just run the kubectl command as-is, giving kubectl raw access to the terminal, when using --interactive or -i flag.
This is to avoid some bugs in kubecolor, such as when running kubectl delete pod my-pod --interactive. Previously, kubectl's promt of "Do you want to continue? (y/N)" was hidden until you pressed enter. But now the command will correctly show that promt, at the cost of not showing any colors in the output.
To get colors and correct prompt output working would require a much bigger change. So this is an adequate middleground to keep kubectl's functionality intact.
fix(help): bracketed URLs lose their last character by @VXNCXNX in #354
Full Changelog: v0.6.0...v0.7.0
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Colorize kubectl label & kubectl annotate by @applejag in #300
Colorize kubectl label & kubectl annotate by @applejag in #300
| Before | After |
|---|---|
Colorize True/False bool status in kubectl get table output by @tenitski in #307
| Before | After |
|---|---|
Improve 'executable not found' error by @applejag in #299
Makes the error easier to understand.
Before:
$ kubecolor get pods
[kubecolor] [ERROR] exec: "kubectl": executable file not found in $PATHAfter:
$ kubecolor get pods
[kubecolor] [ERROR] exec: "kubectl": executable file not found in $PATH; kubectl must be installed to use kubecolorIncrease max line length from 65 kB to 1.5 MB by @applejag in #297
Before this fix, kubecolor would freeze when it tried to parse a line that was too long. But with this buffer size increase you should now be able to use kubecolor without it freezing.
In short, this fixes:
kubecolor get secret -o yaml on a secret with a really big value, such as Helm release secretskubecolor logs on a pod that had a really big log lineIn addition, if kubecolor tries to read a line that's still too long (more than 1.5 MB now), it will now error out instead of freezing.
The size limit was chosen based on the maximum Secret and ConfigMap value size, rounded up a bit to account for the size increase of base64 encoding and any other formatting like indentation and key names.
Always use the custom version printer by @applejag in #298
| Before | After |
|---|---|
This did not work before becase kubecolor runs kubectl behind the scenes, reads its output, parses it, and adds in the coloring. And with the kubectl version subcommand it also injects kubecolor's own version into the output.
But when kubecolor's output is not a terminal, such as when piping it through cat, then as an optimization kubecolor just handed its stdout over to kubectl, so kubecolor has no way of seeing or modifying the output.
The fix was to still wrap kubectl's output when being piped, if (and only if) the subcommand used is kubectl version.
You could always also get the kubecolor version using kubecolor --kubecolor-version. But now it behaves more predictable when piping.
Full Changelog: v0.5.3...v0.6.0
Nothing published for this version
Nothing published for this version
Nothing published for this version
Both are minor vulnerabilities in the Go standard library regarding network. Kubecolor does not use the network at all.
Both are minor vulnerabilities in the Go standard library regarding network. Kubecolor does not use the network at all.
add more missing error status colorizing by @larsgerber in #274
PreCreateHookErrorPreStartHookErrorPostStartHookErrorCreateContainerConfigErrorCreateContainerErrorFull Changelog: v0.5.2...v0.5.3
Update Go v1.24.0 -> v1.24.5 & mapstructure v2.2.1 -> v2.4.0 to fix vulnerability by @applejag in #262
kubectl logs parsing of klog caller with dashes by @applejag in #252kubectl logs parsing of dates with comma delimiter by @applejag in #253Full Changelog: v0.5.1...v0.5.2
Nothing published for this version
Nothing published for this version
We now serve DEB & RPM repositories! See https://kubecolor.github.io/setup/install/#deb for more info.
We now serve DEB & RPM repositories! See https://kubecolor.github.io/setup/install/#deb for more info.
This release only contains dependency updates and changes to our releases.
Full Changelog: v0.5.0...v0.5.1
Smaller release than v0.4.0 , but still contains some nice bugfixes and a few but useful features.
Smaller release than v0.4.0, but still contains some nice bugfixes and a few but useful features.
kubectl diff by @Marcel2603 in #196kubectl apply --server-side by @applejag in #210--namespace=...) by @applejag in #208Full Changelog: v0.4.0...v0.5.0
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
While being a breaking change, this feature never worked as intentional to begin with. Apologies for the issue.
Big new release! Back in v0.3.0 we introduced themes. This time around, we have some more new features and a lot of added colorization of a of kubectl subcommands.
A huge thanks to everyone involved! ❤️
Paging: Pipe output through pager by @lennartack in #122, #144
Controlled by the new flags:
--paging=auto (also KUBECOLOR_PAGING environment variable) enables paging on subcommands that supports it (e.g kubectl get pods, while paging is always disabled for kubectl get pods --watch)--no-paging is an alias for --paging=never, useful for overriding value from config or environment variable--pager="less -RF" (also PAGER or KUBECOLOR_PAGER environment variables) sets pager commandInject kubecolor flags into shell completions by @applejag in #132
Means when you have bash, zsh, fish, or PowerShell completions set up and press Tab to complete your flags, then kubecolor's additional flags will now also show up:
$ kubecolor --kubeco<TAB><TAB>
--kubecolor-stdin -- Read command input from stdin or file instea
--kubecolor-theme -- Set kubecolor theme preset, e.g dark or ligh
--kubecolor-version -- Print the kubecolor version and then exit.
--kubeconfig -- Path to the kubeconfig file to use for CLI rAdded colorization:
Colorize kubecolor --help help text by @applejag in #129
| Before | After |
|---|---|
Colorize kubecolor logs (instead of just single-colored) by @applejag in #157, #168
Exciting feature that should make log tailing much easier.
| Before | After |
|---|---|
Compared to all other parsing techniques we use in kubecolor, this feature contains the most heuristic based approach. What we're trying to accomplish is parsing and colorizing any possible log formats. If you have some log formats that are weirdly colorized, then please report them as bug reports and we'll have a closer look into them.
It's able to quite well handle JSON logs, logfmt formatted logs, and klog logs (commonly used in operators). However it's not great at dealing with multiline logs like some of Elasticsearch's logs, and sometimes the colors can become quite overwhelming on long log messages.
Colorize "verb based output" by @applejag in #154, #162, #161
Generalized the kubectl apply logic so we could use it on a lot of subcommands with a similar output where the general output structure is: "resource-name" + "verb"
This includes subcommands:
kubectl createkubectl deletekubectl drainkubectl exposekubectl patchkubectl rollout pausekubectl rollout restartkubectl rollout resumekubectl rollout undokubectl scalekubectl uncordonInject kubecolor version into 'kubectl version' by @applejag in #133
We have had the --kubecolor-version flag for a while. But you will now also see kubecolor's version in the regular kubectl version output.
$ kubecolor version --client
Client Version: v1.31.0
Kustomize Version: v5.4.2
Kubecolor Version: v0.4.0
$ kubecolor version --client --output yaml
clientVersion:
buildDate: "1980-01-01T00:00:00Z"
compiler: gc
gitCommit: 9edcffcde5595e8a5b1a35f88c421764e575afce
gitTreeState: archive
gitVersion: v1.31.0
goVersion: go1.22.6
major: "1"
minor: "31"
platform: linux/amd64
kubecolorVersion: v0.4.0
kustomizeVersion: v5.4.2This is a rare case where we actually change the output of a command. All other subcommand's outputs solely add colors while intending to keep the text identical.
Colorize multiple statuses (e.g node Ready,SchedulingDisabled) by @applejag in #158
| Before | After |
|---|---|
Colorize "No resources found" by @applejag in #164
| Before | After |
|---|---|
Colorize stderr logs using "kubectl logs" logic by @applejag in #166
Sometimes kubectl writes output to stderr, such as when using the --v 6 flag. Previously this used a simple logic of printing it in full red if it started with the word "error", or uncolored otherwise.
That "uncolored otherwise" has now been replaced with using the same log parsing and coloring as has been introduced for the kubectl logs subcommand.
Added colored kubecolor debug logs by @applejag in #169
Kubecolor has had its own logs since its beginning, such as if it fails to find a kubectl executable to run or if an environment variable has an invalid value. But ironically, they have always been uncolored.
This is now fixed :)
BREAKING: Fixed KUBECOLOR_CONFIG targeting directory instead of file by @applejag in #145
While being a breaking change, this feature never worked as intentional to begin with. Apologies for the issue.
Fix --force-colors, and adds --force-colors=truecolor override support by @applejag in #127
Fix kubectl plugins with dashes not being detected as plugins by @larsgerber in #110
Skip pager integration if no default can be found by @applejag in #126
Don't exit immediately when pager exits by @lennartack in #139
Removed docs in favor of GitHub Pages by @applejag in #150
Visit https://kubecolor.github.io/setup/install/ to see our new documentation site where information is way easier to navigate than our formerly lengthy repository README.
Added sample screenshot for KUBECOLOR_OBJ_FRESH by @applejag in #128
go test by @applejag in #156gofumpt by @applejag in #151gotestsum in GitHub Actions by @applejag in #135Full Changelog: v0.3.3...v0.4.0
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
84a39b2 Fix detection of 'oc rsh'
fc00697 Added coloring of Init:Error type statuses
oc rsh (#117)Nothing published for this version
This version is mostly a re-release of v0.3.0.
This version is mostly a re-release of v0.3.0.
We had a bug in the initial release of v0.3.0, and after a quick patch v0.3.0 was deleted and released again.
However re-tagging a release has proven problematic due to the cascade of package maintainers being too fast and too good at keeping their repos up-to-date. So even though the re-tagging of v0.3.0 was done just an hour after its initial release, we still had multiple package registries like Termux using the initial (and buggy) v0.3.0.
Therefore, here is v0.3.1, which is the same code as the newer re-tagged v0.3.0.
We will avoid re-tagging in the future. Thank you all for your patience ❤️
Nothing published for this version
044d580 Add corpus-based testing (with auto-updating)
oc usage (#81)--kubecolor-stdin to allow piping in output (#101)OOMKilled and <nil> (#52)kubectl events command (#66)Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →