From ee9689ad4d9f95b996051b02f795168e07a53036 Mon Sep 17 00:00:00 2001 From: Timothy Rule <34501912+trulede@users.noreply.github.com> Date: Fri, 12 Dec 2025 20:34:44 +0100 Subject: [PATCH 1/2] Enable ANSI escape code handling on windows consoles. --- cmd/task/console_win.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 cmd/task/console_win.go diff --git a/cmd/task/console_win.go b/cmd/task/console_win.go new file mode 100644 index 0000000000..71c52dfb82 --- /dev/null +++ b/cmd/task/console_win.go @@ -0,0 +1,22 @@ +//go:build windows +// +build windows + +package main + +import ( + "os" + "runtime" + + "golang.org/x/sys/windows" +) + +func init() { + // Ensure that Windows console handles ANSI escape-codes correctly. + if runtime.GOOS == "windows" { + stdout := windows.Handle(os.Stdout.Fd()) + var originalMode uint32 + if err := windows.GetConsoleMode(stdout, &originalMode); err == nil { + windows.SetConsoleMode(stdout, originalMode|windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING) + } + } +} From 92d397caeaaa3d7e15643e833fca59bcf8aa4368 Mon Sep 17 00:00:00 2001 From: Timothy Rule <34501912+trulede@users.noreply.github.com> Date: Sun, 18 Jan 2026 15:49:10 +0100 Subject: [PATCH 2/2] Add a check for stdout. --- cmd/task/console_win.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/cmd/task/console_win.go b/cmd/task/console_win.go index 71c52dfb82..f90771626b 100644 --- a/cmd/task/console_win.go +++ b/cmd/task/console_win.go @@ -14,9 +14,11 @@ func init() { // Ensure that Windows console handles ANSI escape-codes correctly. if runtime.GOOS == "windows" { stdout := windows.Handle(os.Stdout.Fd()) - var originalMode uint32 - if err := windows.GetConsoleMode(stdout, &originalMode); err == nil { - windows.SetConsoleMode(stdout, originalMode|windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING) + if stdout != 0 { + var originalMode uint32 + if err := windows.GetConsoleMode(stdout, &originalMode); err == nil { + windows.SetConsoleMode(stdout, originalMode|windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING) + } } } }