Merge pull request #129 from charmbracelet/colors

Kujtim Hoxha created

Minor edits to color and styling

Change summary

cmd/root.go                                                  |  4 
go.mod                                                       |  2 
go.sum                                                       |  2 
internal/llm/agent/agent.go                                  |  2 
internal/tui/components/chat/editor/editor.go                |  1 
internal/tui/components/chat/messages/renderer.go            |  4 
internal/tui/styles/crush.go                                 |  2 
vendor/github.com/charmbracelet/x/exp/charmtone/charmtone.go | 58 +++++
vendor/modules.txt                                           |  2 
9 files changed, 63 insertions(+), 14 deletions(-)

Detailed changes

cmd/root.go 🔗

@@ -237,11 +237,11 @@ func setupSubscriber[T any](
 				case <-time.After(2 * time.Second):
 					slog.Warn("message dropped due to slow consumer", "name", name)
 				case <-ctx.Done():
-					slog.Info("subscription cancelled", "name", name)
+					slog.Info("subscription canceled", "name", name)
 					return
 				}
 			case <-ctx.Done():
-				slog.Info("subscription cancelled", "name", name)
+				slog.Info("subscription canceled", "name", name)
 				return
 			}
 		}

go.mod 🔗

@@ -23,7 +23,7 @@ require (
 	github.com/charmbracelet/lipgloss/v2 v2.0.0-beta.2.0.20250703152125-8e1c474f8a71
 	github.com/charmbracelet/log/v2 v2.0.0-20250226163916-c379e29ff706
 	github.com/charmbracelet/x/ansi v0.9.3
-	github.com/charmbracelet/x/exp/charmtone v0.0.0-20250627134340-c144409e381c
+	github.com/charmbracelet/x/exp/charmtone v0.0.0-20250708181618-a60a724ba6c3
 	github.com/charmbracelet/x/exp/golden v0.0.0-20250207160936-21c02780d27a
 	github.com/disintegration/imageorient v0.0.0-20180920195336-8147d86e83ec
 	github.com/fsnotify/fsnotify v1.8.0

go.sum 🔗

@@ -90,6 +90,8 @@ github.com/charmbracelet/x/cellbuf v0.0.14-0.20250516160309-24eee56f89fa h1:lphz
 github.com/charmbracelet/x/cellbuf v0.0.14-0.20250516160309-24eee56f89fa/go.mod h1:xBlh2Yi3DL3zy/2n15kITpg0YZardf/aa/hgUaIM6Rk=
 github.com/charmbracelet/x/exp/charmtone v0.0.0-20250627134340-c144409e381c h1:2GELBLPgfSbHU53bsQhR9XIgNuVZ6w+Rz8RWV5Lq+A4=
 github.com/charmbracelet/x/exp/charmtone v0.0.0-20250627134340-c144409e381c/go.mod h1:T9jr8CzFpjhFVHjNjKwbAD7KwBNyFnj2pntAO7F2zw0=
+github.com/charmbracelet/x/exp/charmtone v0.0.0-20250708181618-a60a724ba6c3 h1:1xwHZg6eMZ9Wv5TE1UGub6ARubyOd1Lo5kPUI/6VL50=
+github.com/charmbracelet/x/exp/charmtone v0.0.0-20250708181618-a60a724ba6c3/go.mod h1:T9jr8CzFpjhFVHjNjKwbAD7KwBNyFnj2pntAO7F2zw0=
 github.com/charmbracelet/x/exp/golden v0.0.0-20250207160936-21c02780d27a h1:FsHEJ52OC4VuTzU8t+n5frMjLvpYWEznSr/u8tnkCYw=
 github.com/charmbracelet/x/exp/golden v0.0.0-20250207160936-21c02780d27a/go.mod h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U=
 github.com/charmbracelet/x/exp/slice v0.0.0-20250611152503-f53cdd7e01ef h1:v7qwsZ2OxzlwvpKwz8dtZXp7fIJlcDEUOyFBNE4fz4Q=

internal/llm/agent/agent.go 🔗

@@ -26,7 +26,7 @@ import (
 
 // Common errors
 var (
-	ErrRequestCancelled = errors.New("request cancelled by user")
+	ErrRequestCancelled = errors.New("request canceled by user")
 	ErrSessionBusy      = errors.New("session is currently processing another request")
 )
 

internal/tui/components/chat/editor/editor.go 🔗

@@ -378,6 +378,7 @@ func (c *editorCmp) IsFocused() bool {
 	return c.textarea.Focused()
 }
 
+// Bindings implements Container.
 func (c *editorCmp) Bindings() []key.Binding {
 	return c.keyMap.KeyBindings()
 }

internal/tui/components/chat/messages/renderer.go 🔗

@@ -621,9 +621,9 @@ func earlyState(header string, v *toolCallCmp) (string, bool) {
 	case v.result.IsError:
 		message = v.renderToolError()
 	case v.cancelled:
-		message = t.S().Base.Padding(0, 1).Background(t.Border).Render("Cancelled")
+		message = t.S().Base.Foreground(t.FgSubtle).Render("Canceled.")
 	case v.result.ToolCallID == "":
-		message = t.S().Base.Padding(0, 1).Background(t.Accent).Foreground(t.FgSubtle).Render("Waiting for tool to start...")
+		message = t.S().Base.Foreground(t.FgSubtle).Render("Waiting for tool to start...")
 	default:
 		return "", false
 	}

internal/tui/styles/crush.go 🔗

@@ -16,7 +16,7 @@ func NewCrushTheme() *Theme {
 
 		// Backgrounds
 		BgBase:        charmtone.Pepper,
-		BgBaseLighter: Lighten(charmtone.Pepper, 2),
+		BgBaseLighter: charmtone.BBQ,
 		BgSubtle:      charmtone.Charcoal,
 		BgOverlay:     charmtone.Iron,
 

vendor/github.com/charmbracelet/x/exp/charmtone/charmtone.go 🔗

@@ -65,7 +65,7 @@ const (
 	Citron
 	Zest
 	Pepper
-	Barbeque
+	BBQ
 	Charcoal
 	Iron
 	Oyster
@@ -74,6 +74,22 @@ const (
 	Ash
 	Salt
 	Butter
+
+	// Diffs: additions. The brightest color in this set is Julep, defined
+	// above.
+	Pickle
+	Gator
+	Spinach
+
+	// Diffs: deletions. The brightest color in this set is Cherry, defined
+	// above.
+	Pom
+	Steak
+	Toast
+
+	// Provisional.
+	NeueGuac
+	NeueZinc
 )
 
 // RGBA returns the red, green, blue, and alpha values of the color. It
@@ -139,7 +155,7 @@ func (k Key) String() string {
 		Citron:   "Citron",
 		Zest:     "Zest",
 		Pepper:   "Pepper",
-		Barbeque: "Barbeque",
+		BBQ:      "BBQ",
 		Charcoal: "Charcoal",
 		Iron:     "Iron",
 		Oyster:   "Oyster",
@@ -148,6 +164,20 @@ func (k Key) String() string {
 		Salt:     "Salt",
 		Ash:      "Ash",
 		Butter:   "Butter",
+
+		// Diffs: additions.
+		Pickle:  "Pickle",
+		Gator:   "Gator",
+		Spinach: "Spinach",
+
+		// Diffs: deletions.
+		Pom:   "Pom",
+		Steak: "Steak",
+		Toast: "Toast",
+
+		// Provisional.
+		NeueGuac: "Neue Guac",
+		NeueZinc: "Neue Zinc",
 	}[k]
 }
 
@@ -193,17 +223,17 @@ func (k Key) Hex() string {
 		Damson:   "#007AB8",
 		Malibu:   "#00A4FF",
 		Sardine:  "#4FBEFE",
-		Zinc:     "#0e9996",
+		Zinc:     "#10B1AE",
 		Turtle:   "#0ADCD9",
 		Lichen:   "#5CDFEA",
-		Guac:     "#00b875",
+		Guac:     "#12C78F",
 		Julep:    "#00FFB2",
 		Bok:      "#68FFD6",
 		Mustard:  "#F5EF34",
 		Citron:   "#E8FF27",
 		Zest:     "#E8FE96",
 		Pepper:   "#201F26",
-		Barbeque: "#2d2c35",
+		BBQ:      "#2d2c35",
 		Charcoal: "#3A3943",
 		Iron:     "#4D4C57",
 		Oyster:   "#605F6B",
@@ -212,6 +242,20 @@ func (k Key) Hex() string {
 		Ash:      "#DFDBDD",
 		Salt:     "#F1EFEF",
 		Butter:   "#FFFAF1",
+
+		// Diffs: additions.
+		Pickle:  "#00A475",
+		Gator:   "#18463D",
+		Spinach: "#1C3634",
+
+		// Diffs: deletions.
+		Pom:   "#AB2454",
+		Steak: "#582238",
+		Toast: "#412130",
+
+		// Provisional.
+		NeueGuac: "#00b875",
+		NeueZinc: "#0e9996",
 	}[k]
 }
 
@@ -267,7 +311,7 @@ func Keys() []Key {
 		Citron,
 		Zest,
 		Pepper,
-		Barbeque,
+		BBQ,
 		Charcoal,
 		Iron,
 		Oyster,
@@ -276,6 +320,8 @@ func Keys() []Key {
 		Ash,
 		Salt,
 		Butter,
+
+		// XXX: additions and deletions are not included, yet.
 	}
 }
 

vendor/modules.txt 🔗

@@ -288,7 +288,7 @@ github.com/charmbracelet/x/ansi/parser
 # github.com/charmbracelet/x/cellbuf v0.0.14-0.20250516160309-24eee56f89fa
 ## explicit; go 1.23.0
 github.com/charmbracelet/x/cellbuf
-# github.com/charmbracelet/x/exp/charmtone v0.0.0-20250627134340-c144409e381c
+# github.com/charmbracelet/x/exp/charmtone v0.0.0-20250708181618-a60a724ba6c3
 ## explicit; go 1.23.0
 github.com/charmbracelet/x/exp/charmtone
 # github.com/charmbracelet/x/exp/golden v0.0.0-20250207160936-21c02780d27a