on main help sign in
chore: change the module
06e8c75Kujtim Hoxha
README.md+4−4
@@ -34,10 +34,10 @@ OpenCode is a Go-based CLI application that brings AI assistance to your termina
34
34
35```bash
35```bash
36# Install the latest version
36# Install the latest version
37−curl -fsSL https://raw.githubusercontent.com/opencode-ai/opencode/refs/heads/main/install | bash
37+curl -fsSL https://raw.githubusercontent.com/charmbracelet/crush/refs/heads/main/install | bash
38
38
39# Install a specific version
39# Install a specific version
40−curl -fsSL https://raw.githubusercontent.com/opencode-ai/opencode/refs/heads/main/install | VERSION=0.1.0 bash
40+curl -fsSL https://raw.githubusercontent.com/charmbracelet/crush/refs/heads/main/install | VERSION=0.1.0 bash
41```
41```
42
42
43### Using Homebrew (macOS and Linux)
43### Using Homebrew (macOS and Linux)
@@ -59,7 +59,7 @@ paru -S opencode-ai-bin
59### Using Go
59### Using Go
60
60
61```bash
61```bash
62−go install github.com/opencode-ai/opencode@latest
62+go install github.com/charmbracelet/crush@latest
63```
63```
64
64
65## Configuration
65## Configuration
@@ -613,7 +613,7 @@ You can also configure a self-hosted model in the configuration file under the `
613
613
614```bash
614```bash
615# Clone the repository
615# Clone the repository
616−git clone https://github.com/opencode-ai/opencode.git
616+git clone https://github.com/charmbracelet/crush.git
617cd opencode
617cd opencode
618
618
619# Build
619# Build
Taskfile.yaml+5
@@ -8,6 +8,11 @@ tasks:
8 cmds:
8 cmds:
9 - golangci-lint run
9 - golangci-lint run
10
10
11+ lint-fix:
12+ desc: Run base linters and fix issues
13+ cmds:
14+ - golangci-lint run --fix
15+
11 test:
16 test:
12 desc: Run tests
17 desc: Run tests
13 cmds:
18 cmds:
cmd/root.go+9−9
@@ -8,15 +8,15 @@ import (
8 "time"
8 "time"
9
9
10 tea "github.com/charmbracelet/bubbletea/v2"
10 tea "github.com/charmbracelet/bubbletea/v2"
11− "github.com/opencode-ai/opencode/internal/app"
11+ "github.com/charmbracelet/crush/internal/app"
12− "github.com/opencode-ai/opencode/internal/config"
12+ "github.com/charmbracelet/crush/internal/config"
13− "github.com/opencode-ai/opencode/internal/db"
13+ "github.com/charmbracelet/crush/internal/db"
14− "github.com/opencode-ai/opencode/internal/format"
14+ "github.com/charmbracelet/crush/internal/format"
15− "github.com/opencode-ai/opencode/internal/llm/agent"
15+ "github.com/charmbracelet/crush/internal/llm/agent"
16− "github.com/opencode-ai/opencode/internal/logging"
16+ "github.com/charmbracelet/crush/internal/logging"
17− "github.com/opencode-ai/opencode/internal/pubsub"
17+ "github.com/charmbracelet/crush/internal/pubsub"
18− "github.com/opencode-ai/opencode/internal/tui"
18+ "github.com/charmbracelet/crush/internal/tui"
19− "github.com/opencode-ai/opencode/internal/version"
19+ "github.com/charmbracelet/crush/internal/version"
20 "github.com/spf13/cobra"
20 "github.com/spf13/cobra"
21)
21)
22
22
cmd/schema/main.go+2−2
@@ -5,8 +5,8 @@ import (
5 "fmt"
5 "fmt"
6 "os"
6 "os"
7
7
8− "github.com/opencode-ai/opencode/internal/config"
8+ "github.com/charmbracelet/crush/internal/config"
9− "github.com/opencode-ai/opencode/internal/llm/models"
9+ "github.com/charmbracelet/crush/internal/llm/models"
10)
10)
11
11
12// JSONSchemaType represents a JSON Schema type
12// JSONSchemaType represents a JSON Schema type
go.mod+1−2
@@ -1,4 +1,4 @@
1−module github.com/opencode-ai/opencode
1+module github.com/charmbracelet/crush
2
2
3go 1.24.0
3go 1.24.0
4
4
@@ -76,7 +76,6 @@ require (
76 github.com/charmbracelet/x/term v0.2.1 // indirect
76 github.com/charmbracelet/x/term v0.2.1 // indirect
77 github.com/charmbracelet/x/windows v0.2.1 // indirect
77 github.com/charmbracelet/x/windows v0.2.1 // indirect
78 github.com/davecgh/go-spew v1.1.1 // indirect
78 github.com/davecgh/go-spew v1.1.1 // indirect
79− github.com/disintegration/imaging v1.6.2
80 github.com/dlclark/regexp2 v1.11.4 // indirect
79 github.com/dlclark/regexp2 v1.11.4 // indirect
81 github.com/felixge/httpsnoop v1.0.4 // indirect
80 github.com/felixge/httpsnoop v1.0.4 // indirect
82 github.com/go-logr/logr v1.4.2 // indirect
81 github.com/go-logr/logr v1.4.2 // indirect
go.sum−3
@@ -102,8 +102,6 @@ github.com/disintegration/gift v1.1.2 h1:9ZyHJr+kPamiH10FX3Pynt1AxFUob812bU9Wt4G
102github.com/disintegration/gift v1.1.2/go.mod h1:Jh2i7f7Q2BM7Ezno3PhfezbR1xpUg9dUg3/RlKGr4HI=
102github.com/disintegration/gift v1.1.2/go.mod h1:Jh2i7f7Q2BM7Ezno3PhfezbR1xpUg9dUg3/RlKGr4HI=
103github.com/disintegration/imageorient v0.0.0-20180920195336-8147d86e83ec h1:YrB6aVr9touOt75I9O1SiancmR2GMg45U9UYf0gtgWg=
103github.com/disintegration/imageorient v0.0.0-20180920195336-8147d86e83ec h1:YrB6aVr9touOt75I9O1SiancmR2GMg45U9UYf0gtgWg=
104github.com/disintegration/imageorient v0.0.0-20180920195336-8147d86e83ec/go.mod h1:K0KBFIr1gWu/C1Gp10nFAcAE4hsB7JxE6OgLijrJ8Sk=
104github.com/disintegration/imageorient v0.0.0-20180920195336-8147d86e83ec/go.mod h1:K0KBFIr1gWu/C1Gp10nFAcAE4hsB7JxE6OgLijrJ8Sk=
105−github.com/disintegration/imaging v1.6.2 h1:w1LecBlG2Lnp8B3jk5zSuNqd7b4DXhcjwek1ei82L+c=
106−github.com/disintegration/imaging v1.6.2/go.mod h1:44/5580QXChDfwIclfc/PCwrr44amcmDAg8hxG0Ewe4=
107github.com/dlclark/regexp2 v1.11.4 h1:rPYF9/LECdNymJufQKmri9gV604RvvABwgOA8un7yAo=
105github.com/dlclark/regexp2 v1.11.4 h1:rPYF9/LECdNymJufQKmri9gV604RvvABwgOA8un7yAo=
108github.com/dlclark/regexp2 v1.11.4/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
106github.com/dlclark/regexp2 v1.11.4/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
109github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
107github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
@@ -282,7 +280,6 @@ golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE=
282golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc=
280golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc=
283golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 h1:nDVHiLt8aIbd/VzvPWN6kSOPE7+F/fNFDSXLVYkE/Iw=
281golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 h1:nDVHiLt8aIbd/VzvPWN6kSOPE7+F/fNFDSXLVYkE/Iw=
284golang.org/x/exp v0.0.0-20250305212735-054e65f0b394/go.mod h1:sIifuuw/Yco/y6yb6+bDNfyeQ/MdPUy/hKEMYQV17cM=
282golang.org/x/exp v0.0.0-20250305212735-054e65f0b394/go.mod h1:sIifuuw/Yco/y6yb6+bDNfyeQ/MdPUy/hKEMYQV17cM=
285−golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
286golang.org/x/image v0.26.0 h1:4XjIFEZWQmCZi6Wv8BoxsDhRU3RVnLX04dToTDAEPlY=
283golang.org/x/image v0.26.0 h1:4XjIFEZWQmCZi6Wv8BoxsDhRU3RVnLX04dToTDAEPlY=
287golang.org/x/image v0.26.0/go.mod h1:lcxbMFAovzpnJxzXS3nyL83K27tmqtKzIJpctK8YO5c=
284golang.org/x/image v0.26.0/go.mod h1:lcxbMFAovzpnJxzXS3nyL83K27tmqtKzIJpctK8YO5c=
288golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
285golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
install+3−3
@@ -40,15 +40,15 @@ INSTALL_DIR=$HOME/.opencode/bin
40mkdir -p "$INSTALL_DIR"
40mkdir -p "$INSTALL_DIR"
41
41
42if [ -z "$requested_version" ]; then
42if [ -z "$requested_version" ]; then
43− url="https://github.com/opencode-ai/opencode/releases/latest/download/$filename"
43+ url="https://github.com/charmbracelet/crush/releases/latest/download/$filename"
44− specific_version=$(curl -s https://api.github.com/repos/opencode-ai/opencode/releases/latest | awk -F'"' '/"tag_name": "/ {gsub(/^v/, "", $4); print $4}')
44+ specific_version=$(curl -s https://api.github.com/repos/charmbracelet/crush/releases/latest | awk -F'"' '/"tag_name": "/ {gsub(/^v/, "", $4); print $4}')
45
45
46 if [[ $? -ne 0 ]]; then
46 if [[ $? -ne 0 ]]; then
47 echo "${RED}Failed to fetch version information${NC}"
47 echo "${RED}Failed to fetch version information${NC}"
48 exit 1
48 exit 1
49 fi
49 fi
50else
50else
51− url="https://github.com/opencode-ai/opencode/releases/download/v${requested_version}/$filename"
51+ url="https://github.com/charmbracelet/crush/releases/download/v${requested_version}/$filename"
52 specific_version=$requested_version
52 specific_version=$requested_version
53fi
53fi
54
54
internal/app/app.go+10−10
@@ -9,16 +9,16 @@ import (
9 "sync"
9 "sync"
10 "time"
10 "time"
11
11
12− "github.com/opencode-ai/opencode/internal/config"
12+ "github.com/charmbracelet/crush/internal/config"
13− "github.com/opencode-ai/opencode/internal/db"
13+ "github.com/charmbracelet/crush/internal/db"
14− "github.com/opencode-ai/opencode/internal/format"
14+ "github.com/charmbracelet/crush/internal/format"
15− "github.com/opencode-ai/opencode/internal/history"
15+ "github.com/charmbracelet/crush/internal/history"
16− "github.com/opencode-ai/opencode/internal/llm/agent"
16+ "github.com/charmbracelet/crush/internal/llm/agent"
17− "github.com/opencode-ai/opencode/internal/logging"
17+ "github.com/charmbracelet/crush/internal/logging"
18− "github.com/opencode-ai/opencode/internal/lsp"
18+ "github.com/charmbracelet/crush/internal/lsp"
19− "github.com/opencode-ai/opencode/internal/message"
19+ "github.com/charmbracelet/crush/internal/message"
20− "github.com/opencode-ai/opencode/internal/permission"
20+ "github.com/charmbracelet/crush/internal/permission"
21− "github.com/opencode-ai/opencode/internal/session"
21+ "github.com/charmbracelet/crush/internal/session"
22)
22)
23
23
24type App struct {
24type App struct {
internal/app/lsp.go+4−4
@@ -4,10 +4,10 @@ import (
4 "context"
4 "context"
5 "time"
5 "time"
6
6
7− "github.com/opencode-ai/opencode/internal/config"
7+ "github.com/charmbracelet/crush/internal/config"
8− "github.com/opencode-ai/opencode/internal/logging"
8+ "github.com/charmbracelet/crush/internal/logging"
9− "github.com/opencode-ai/opencode/internal/lsp"
9+ "github.com/charmbracelet/crush/internal/lsp"
10− "github.com/opencode-ai/opencode/internal/lsp/watcher"
10+ "github.com/charmbracelet/crush/internal/lsp/watcher"
11)
11)
12
12
13func (app *App) initLSPClients(ctx context.Context) {
13func (app *App) initLSPClients(ctx context.Context) {
internal/config/config.go+2−2
@@ -9,8 +9,8 @@ import (
9 "path/filepath"
9 "path/filepath"
10 "strings"
10 "strings"
11
11
12− "github.com/opencode-ai/opencode/internal/llm/models"
12+ "github.com/charmbracelet/crush/internal/llm/models"
13− "github.com/opencode-ai/opencode/internal/logging"
13+ "github.com/charmbracelet/crush/internal/logging"
14 "github.com/spf13/viper"
14 "github.com/spf13/viper"
15)
15)
16
16
internal/db/connect.go+2−2
@@ -9,8 +9,8 @@ import (
9 _ "github.com/ncruces/go-sqlite3/driver"
9 _ "github.com/ncruces/go-sqlite3/driver"
10 _ "github.com/ncruces/go-sqlite3/embed"
10 _ "github.com/ncruces/go-sqlite3/embed"
11
11
12− "github.com/opencode-ai/opencode/internal/config"
12+ "github.com/charmbracelet/crush/internal/config"
13− "github.com/opencode-ai/opencode/internal/logging"
13+ "github.com/charmbracelet/crush/internal/logging"
14
14
15 "github.com/pressly/goose/v3"
15 "github.com/pressly/goose/v3"
16)
16)
internal/diff/diff.go+3−3
@@ -8,11 +8,11 @@ import (
8 "strings"
8 "strings"
9
9
10 "github.com/aymanbagabas/go-udiff"
10 "github.com/aymanbagabas/go-udiff"
11+ "github.com/charmbracelet/crush/internal/config"
12+ "github.com/charmbracelet/crush/internal/highlight"
13+ "github.com/charmbracelet/crush/internal/tui/styles"
11 "github.com/charmbracelet/lipgloss/v2"
14 "github.com/charmbracelet/lipgloss/v2"
12 "github.com/charmbracelet/x/ansi"
15 "github.com/charmbracelet/x/ansi"
13− "github.com/opencode-ai/opencode/internal/config"
14− "github.com/opencode-ai/opencode/internal/highlight"
15− "github.com/opencode-ai/opencode/internal/tui/styles"
16 "github.com/sergi/go-diff/diffmatchpatch"
16 "github.com/sergi/go-diff/diffmatchpatch"
17)
17)
18
18
internal/fileutil/fileutil.go+1−1
@@ -11,7 +11,7 @@ import (
11
11
12 "github.com/bmatcuk/doublestar/v4"
12 "github.com/bmatcuk/doublestar/v4"
13 "github.com/charlievieth/fastwalk"
13 "github.com/charlievieth/fastwalk"
14− "github.com/opencode-ai/opencode/internal/logging"
14+ "github.com/charmbracelet/crush/internal/logging"
15 ignore "github.com/sabhiram/go-gitignore"
15 ignore "github.com/sabhiram/go-gitignore"
16)
16)
17
17
internal/highlight/highlight.go+1−1
@@ -9,7 +9,7 @@ import (
9 "github.com/alecthomas/chroma/v2/formatters"
9 "github.com/alecthomas/chroma/v2/formatters"
10 "github.com/alecthomas/chroma/v2/lexers"
10 "github.com/alecthomas/chroma/v2/lexers"
11 chromaStyles "github.com/alecthomas/chroma/v2/styles"
11 chromaStyles "github.com/alecthomas/chroma/v2/styles"
12− "github.com/opencode-ai/opencode/internal/tui/styles"
12+ "github.com/charmbracelet/crush/internal/tui/styles"
13)
13)
14
14
15func SyntaxHighlight(source, fileName string, bg color.Color) (string, error) {
15func SyntaxHighlight(source, fileName string, bg color.Color) (string, error) {
internal/history/file.go+2−2
@@ -8,9 +8,9 @@ import (
8 "strings"
8 "strings"
9 "time"
9 "time"
10
10
11+ "github.com/charmbracelet/crush/internal/db"
12+ "github.com/charmbracelet/crush/internal/pubsub"
11 "github.com/google/uuid"
13 "github.com/google/uuid"
12− "github.com/opencode-ai/opencode/internal/db"
13− "github.com/opencode-ai/opencode/internal/pubsub"
14)
14)
15
15
16const (
16const (
internal/llm/agent/agent-tool.go+5−5
@@ -5,11 +5,11 @@ import (
5 "encoding/json"
5 "encoding/json"
6 "fmt"
6 "fmt"
7
7
8− "github.com/opencode-ai/opencode/internal/config"
8+ "github.com/charmbracelet/crush/internal/config"
9− "github.com/opencode-ai/opencode/internal/llm/tools"
9+ "github.com/charmbracelet/crush/internal/llm/tools"
10− "github.com/opencode-ai/opencode/internal/lsp"
10+ "github.com/charmbracelet/crush/internal/lsp"
11− "github.com/opencode-ai/opencode/internal/message"
11+ "github.com/charmbracelet/crush/internal/message"
12− "github.com/opencode-ai/opencode/internal/session"
12+ "github.com/charmbracelet/crush/internal/session"
13)
13)
14
14
15type agentTool struct {
15type agentTool struct {
internal/llm/agent/agent.go+10−10
@@ -8,16 +8,16 @@ import (
8 "sync"
8 "sync"
9 "time"
9 "time"
10
10
11− "github.com/opencode-ai/opencode/internal/config"
11+ "github.com/charmbracelet/crush/internal/config"
12− "github.com/opencode-ai/opencode/internal/llm/models"
12+ "github.com/charmbracelet/crush/internal/llm/models"
13− "github.com/opencode-ai/opencode/internal/llm/prompt"
13+ "github.com/charmbracelet/crush/internal/llm/prompt"
14− "github.com/opencode-ai/opencode/internal/llm/provider"
14+ "github.com/charmbracelet/crush/internal/llm/provider"
15− "github.com/opencode-ai/opencode/internal/llm/tools"
15+ "github.com/charmbracelet/crush/internal/llm/tools"
16− "github.com/opencode-ai/opencode/internal/logging"
16+ "github.com/charmbracelet/crush/internal/logging"
17− "github.com/opencode-ai/opencode/internal/message"
17+ "github.com/charmbracelet/crush/internal/message"
18− "github.com/opencode-ai/opencode/internal/permission"
18+ "github.com/charmbracelet/crush/internal/permission"
19− "github.com/opencode-ai/opencode/internal/pubsub"
19+ "github.com/charmbracelet/crush/internal/pubsub"
20− "github.com/opencode-ai/opencode/internal/session"
20+ "github.com/charmbracelet/crush/internal/session"
21)
21)
22
22
23// Common errors
23// Common errors
internal/llm/agent/mcp-tools.go+5−5
@@ -5,11 +5,11 @@ import (
5 "encoding/json"
5 "encoding/json"
6 "fmt"
6 "fmt"
7
7
8− "github.com/opencode-ai/opencode/internal/config"
8+ "github.com/charmbracelet/crush/internal/config"
9− "github.com/opencode-ai/opencode/internal/llm/tools"
9+ "github.com/charmbracelet/crush/internal/llm/tools"
10− "github.com/opencode-ai/opencode/internal/logging"
10+ "github.com/charmbracelet/crush/internal/logging"
11− "github.com/opencode-ai/opencode/internal/permission"
11+ "github.com/charmbracelet/crush/internal/permission"
12− "github.com/opencode-ai/opencode/internal/version"
12+ "github.com/charmbracelet/crush/internal/version"
13
13
14 "github.com/mark3labs/mcp-go/client"
14 "github.com/mark3labs/mcp-go/client"
15 "github.com/mark3labs/mcp-go/mcp"
15 "github.com/mark3labs/mcp-go/mcp"
internal/llm/agent/tools.go+6−6
@@ -3,12 +3,12 @@ package agent
3import (
3import (
4 "context"
4 "context"
5
5
6− "github.com/opencode-ai/opencode/internal/history"
6+ "github.com/charmbracelet/crush/internal/history"
7− "github.com/opencode-ai/opencode/internal/llm/tools"
7+ "github.com/charmbracelet/crush/internal/llm/tools"
8− "github.com/opencode-ai/opencode/internal/lsp"
8+ "github.com/charmbracelet/crush/internal/lsp"
9− "github.com/opencode-ai/opencode/internal/message"
9+ "github.com/charmbracelet/crush/internal/message"
10− "github.com/opencode-ai/opencode/internal/permission"
10+ "github.com/charmbracelet/crush/internal/permission"
11− "github.com/opencode-ai/opencode/internal/session"
11+ "github.com/charmbracelet/crush/internal/session"
12)
12)
13
13
14func CoderAgentTools(
14func CoderAgentTools(
internal/llm/models/local.go+1−1
@@ -11,7 +11,7 @@ import (
11 "strings"
11 "strings"
12 "unicode"
12 "unicode"
13
13
14− "github.com/opencode-ai/opencode/internal/logging"
14+ "github.com/charmbracelet/crush/internal/logging"
15 "github.com/spf13/viper"
15 "github.com/spf13/viper"
16)
16)
17
17
internal/llm/prompt/coder.go+3−3
@@ -8,9 +8,9 @@ import (
8 "runtime"
8 "runtime"
9 "time"
9 "time"
10
10
11− "github.com/opencode-ai/opencode/internal/config"
11+ "github.com/charmbracelet/crush/internal/config"
12− "github.com/opencode-ai/opencode/internal/llm/models"
12+ "github.com/charmbracelet/crush/internal/llm/models"
13− "github.com/opencode-ai/opencode/internal/llm/tools"
13+ "github.com/charmbracelet/crush/internal/llm/tools"
14)
14)
15
15
16func CoderPrompt(provider models.ModelProvider) string {
16func CoderPrompt(provider models.ModelProvider) string {
internal/llm/prompt/prompt.go+3−3
@@ -7,9 +7,9 @@ import (
7 "strings"
7 "strings"
8 "sync"
8 "sync"
9
9
10− "github.com/opencode-ai/opencode/internal/config"
10+ "github.com/charmbracelet/crush/internal/config"
11− "github.com/opencode-ai/opencode/internal/llm/models"
11+ "github.com/charmbracelet/crush/internal/llm/models"
12− "github.com/opencode-ai/opencode/internal/logging"
12+ "github.com/charmbracelet/crush/internal/logging"
13)
13)
14
14
15func GetAgentPrompt(agentName config.AgentName, provider models.ModelProvider) string {
15func GetAgentPrompt(agentName config.AgentName, provider models.ModelProvider) string {
internal/llm/prompt/prompt_test.go+1−1
@@ -6,7 +6,7 @@ import (
6 "path/filepath"
6 "path/filepath"
7 "testing"
7 "testing"
8
8
9− "github.com/opencode-ai/opencode/internal/config"
9+ "github.com/charmbracelet/crush/internal/config"
10 "github.com/stretchr/testify/assert"
10 "github.com/stretchr/testify/assert"
11 "github.com/stretchr/testify/require"
11 "github.com/stretchr/testify/require"
12)
12)
internal/llm/prompt/summarizer.go+1−1
@@ -1,6 +1,6 @@
1package prompt
1package prompt
2
2
3−import "github.com/opencode-ai/opencode/internal/llm/models"
3+import "github.com/charmbracelet/crush/internal/llm/models"
4
4
5func SummarizerPrompt(_ models.ModelProvider) string {
5func SummarizerPrompt(_ models.ModelProvider) string {
6 return `You are a helpful AI assistant tasked with summarizing conversations.
6 return `You are a helpful AI assistant tasked with summarizing conversations.
internal/llm/prompt/task.go+1−1
@@ -3,7 +3,7 @@ package prompt
3import (
3import (
4 "fmt"
4 "fmt"
5
5
6− "github.com/opencode-ai/opencode/internal/llm/models"
6+ "github.com/charmbracelet/crush/internal/llm/models"
7)
7)
8
8
9func TaskPrompt(_ models.ModelProvider) string {
9func TaskPrompt(_ models.ModelProvider) string {
internal/llm/prompt/title.go+1−1
@@ -1,6 +1,6 @@
1package prompt
1package prompt
2
2
3−import "github.com/opencode-ai/opencode/internal/llm/models"
3+import "github.com/charmbracelet/crush/internal/llm/models"
4
4
5func TitlePrompt(_ models.ModelProvider) string {
5func TitlePrompt(_ models.ModelProvider) string {
6 return `you will generate a short title based on the first message a user begins a conversation with
6 return `you will generate a short title based on the first message a user begins a conversation with
internal/llm/provider/anthropic.go+5−5
@@ -12,11 +12,11 @@ import (
12 "github.com/anthropics/anthropic-sdk-go"
12 "github.com/anthropics/anthropic-sdk-go"
13 "github.com/anthropics/anthropic-sdk-go/bedrock"
13 "github.com/anthropics/anthropic-sdk-go/bedrock"
14 "github.com/anthropics/anthropic-sdk-go/option"
14 "github.com/anthropics/anthropic-sdk-go/option"
15− "github.com/opencode-ai/opencode/internal/config"
15+ "github.com/charmbracelet/crush/internal/config"
16− "github.com/opencode-ai/opencode/internal/llm/models"
16+ "github.com/charmbracelet/crush/internal/llm/models"
17− "github.com/opencode-ai/opencode/internal/llm/tools"
17+ "github.com/charmbracelet/crush/internal/llm/tools"
18− "github.com/opencode-ai/opencode/internal/logging"
18+ "github.com/charmbracelet/crush/internal/logging"
19− "github.com/opencode-ai/opencode/internal/message"
19+ "github.com/charmbracelet/crush/internal/message"
20)
20)
21
21
22type anthropicOptions struct {
22type anthropicOptions struct {
internal/llm/provider/bedrock.go+2−2
@@ -7,8 +7,8 @@ import (
7 "os"
7 "os"
8 "strings"
8 "strings"
9
9
10− "github.com/opencode-ai/opencode/internal/llm/tools"
10+ "github.com/charmbracelet/crush/internal/llm/tools"
11− "github.com/opencode-ai/opencode/internal/message"
11+ "github.com/charmbracelet/crush/internal/message"
12)
12)
13
13
14type bedrockOptions struct {
14type bedrockOptions struct {
internal/llm/provider/gemini.go+4−4
@@ -9,11 +9,11 @@ import (
9 "strings"
9 "strings"
10 "time"
10 "time"
11
11
12+ "github.com/charmbracelet/crush/internal/config"
13+ "github.com/charmbracelet/crush/internal/llm/tools"
14+ "github.com/charmbracelet/crush/internal/logging"
15+ "github.com/charmbracelet/crush/internal/message"
12 "github.com/google/uuid"
16 "github.com/google/uuid"
13− "github.com/opencode-ai/opencode/internal/config"
14− "github.com/opencode-ai/opencode/internal/llm/tools"
15− "github.com/opencode-ai/opencode/internal/logging"
16− "github.com/opencode-ai/opencode/internal/message"
17 "google.golang.org/genai"
17 "google.golang.org/genai"
18)
18)
19
19
internal/llm/provider/openai.go+5−5
@@ -8,14 +8,14 @@ import (
8 "io"
8 "io"
9 "time"
9 "time"
10
10
11+ "github.com/charmbracelet/crush/internal/config"
12+ "github.com/charmbracelet/crush/internal/llm/models"
13+ "github.com/charmbracelet/crush/internal/llm/tools"
14+ "github.com/charmbracelet/crush/internal/logging"
15+ "github.com/charmbracelet/crush/internal/message"
11 "github.com/openai/openai-go"
16 "github.com/openai/openai-go"
12 "github.com/openai/openai-go/option"
17 "github.com/openai/openai-go/option"
13 "github.com/openai/openai-go/shared"
18 "github.com/openai/openai-go/shared"
14− "github.com/opencode-ai/opencode/internal/config"
15− "github.com/opencode-ai/opencode/internal/llm/models"
16− "github.com/opencode-ai/opencode/internal/llm/tools"
17− "github.com/opencode-ai/opencode/internal/logging"
18− "github.com/opencode-ai/opencode/internal/message"
19)
19)
20
20
21type openaiOptions struct {
21type openaiOptions struct {
internal/llm/provider/provider.go+3−3
@@ -5,9 +5,9 @@ import (
5 "fmt"
5 "fmt"
6 "os"
6 "os"
7
7
8− "github.com/opencode-ai/opencode/internal/llm/models"
8+ "github.com/charmbracelet/crush/internal/llm/models"
9− "github.com/opencode-ai/opencode/internal/llm/tools"
9+ "github.com/charmbracelet/crush/internal/llm/tools"
10− "github.com/opencode-ai/opencode/internal/message"
10+ "github.com/charmbracelet/crush/internal/message"
11)
11)
12
12
13type EventType string
13type EventType string
internal/llm/provider/vertexai.go+1−1
@@ -4,7 +4,7 @@ import (
4 "context"
4 "context"
5 "os"
5 "os"
6
6
7− "github.com/opencode-ai/opencode/internal/logging"
7+ "github.com/charmbracelet/crush/internal/logging"
8 "google.golang.org/genai"
8 "google.golang.org/genai"
9)
9)
10
10
internal/llm/tools/bash.go+3−3
@@ -7,9 +7,9 @@ import (
7 "strings"
7 "strings"
8 "time"
8 "time"
9
9
10− "github.com/opencode-ai/opencode/internal/config"
10+ "github.com/charmbracelet/crush/internal/config"
11− "github.com/opencode-ai/opencode/internal/llm/tools/shell"
11+ "github.com/charmbracelet/crush/internal/llm/tools/shell"
12− "github.com/opencode-ai/opencode/internal/permission"
12+ "github.com/charmbracelet/crush/internal/permission"
13)
13)
14
14
15type BashParams struct {
15type BashParams struct {
internal/llm/tools/diagnostics.go+2−2
@@ -9,8 +9,8 @@ import (
9 "strings"
9 "strings"
10 "time"
10 "time"
11
11
12− "github.com/opencode-ai/opencode/internal/lsp"
12+ "github.com/charmbracelet/crush/internal/lsp"
13− "github.com/opencode-ai/opencode/internal/lsp/protocol"
13+ "github.com/charmbracelet/crush/internal/lsp/protocol"
14)
14)
15
15
16type DiagnosticsParams struct {
16type DiagnosticsParams struct {
internal/llm/tools/edit.go+6−6
@@ -9,12 +9,12 @@ import (
9 "strings"
9 "strings"
10 "time"
10 "time"
11
11
12− "github.com/opencode-ai/opencode/internal/config"
12+ "github.com/charmbracelet/crush/internal/config"
13− "github.com/opencode-ai/opencode/internal/diff"
13+ "github.com/charmbracelet/crush/internal/diff"
14− "github.com/opencode-ai/opencode/internal/history"
14+ "github.com/charmbracelet/crush/internal/history"
15− "github.com/opencode-ai/opencode/internal/logging"
15+ "github.com/charmbracelet/crush/internal/logging"
16− "github.com/opencode-ai/opencode/internal/lsp"
16+ "github.com/charmbracelet/crush/internal/lsp"
17− "github.com/opencode-ai/opencode/internal/permission"
17+ "github.com/charmbracelet/crush/internal/permission"
18)
18)
19
19
20type EditParams struct {
20type EditParams struct {
internal/llm/tools/fetch.go+2−2
@@ -11,8 +11,8 @@ import (
11
11
12 md "github.com/JohannesKaufmann/html-to-markdown"
12 md "github.com/JohannesKaufmann/html-to-markdown"
13 "github.com/PuerkitoBio/goquery"
13 "github.com/PuerkitoBio/goquery"
14− "github.com/opencode-ai/opencode/internal/config"
14+ "github.com/charmbracelet/crush/internal/config"
15− "github.com/opencode-ai/opencode/internal/permission"
15+ "github.com/charmbracelet/crush/internal/permission"
16)
16)
17
17
18type FetchParams struct {
18type FetchParams struct {
internal/llm/tools/glob.go+3−3
@@ -10,9 +10,9 @@ import (
10 "sort"
10 "sort"
11 "strings"
11 "strings"
12
12
13− "github.com/opencode-ai/opencode/internal/config"
13+ "github.com/charmbracelet/crush/internal/config"
14− "github.com/opencode-ai/opencode/internal/fileutil"
14+ "github.com/charmbracelet/crush/internal/fileutil"
15− "github.com/opencode-ai/opencode/internal/logging"
15+ "github.com/charmbracelet/crush/internal/logging"
16)
16)
17
17
18const (
18const (
internal/llm/tools/grep.go+2−2
@@ -14,8 +14,8 @@ import (
14 "strings"
14 "strings"
15 "time"
15 "time"
16
16
17− "github.com/opencode-ai/opencode/internal/config"
17+ "github.com/charmbracelet/crush/internal/config"
18− "github.com/opencode-ai/opencode/internal/fileutil"
18+ "github.com/charmbracelet/crush/internal/fileutil"
19)
19)
20
20
21type GrepParams struct {
21type GrepParams struct {
internal/llm/tools/ls.go+2−2
@@ -8,8 +8,8 @@ import (
8 "path/filepath"
8 "path/filepath"
9 "strings"
9 "strings"
10
10
11− "github.com/opencode-ai/opencode/internal/config"
11+ "github.com/charmbracelet/crush/internal/config"
12− "github.com/opencode-ai/opencode/internal/fileutil"
12+ "github.com/charmbracelet/crush/internal/fileutil"
13)
13)
14
14
15type LSParams struct {
15type LSParams struct {
internal/llm/tools/patch.go+6−6
@@ -8,12 +8,12 @@ import (
8 "path/filepath"
8 "path/filepath"
9 "time"
9 "time"
10
10
11− "github.com/opencode-ai/opencode/internal/config"
11+ "github.com/charmbracelet/crush/internal/config"
12− "github.com/opencode-ai/opencode/internal/diff"
12+ "github.com/charmbracelet/crush/internal/diff"
13− "github.com/opencode-ai/opencode/internal/history"
13+ "github.com/charmbracelet/crush/internal/history"
14− "github.com/opencode-ai/opencode/internal/logging"
14+ "github.com/charmbracelet/crush/internal/logging"
15− "github.com/opencode-ai/opencode/internal/lsp"
15+ "github.com/charmbracelet/crush/internal/lsp"
16− "github.com/opencode-ai/opencode/internal/permission"
16+ "github.com/charmbracelet/crush/internal/permission"
17)
17)
18
18
19type PatchParams struct {
19type PatchParams struct {
internal/llm/tools/shell/shell.go+1−1
@@ -12,7 +12,7 @@ import (
12 "syscall"
12 "syscall"
13 "time"
13 "time"
14
14
15− "github.com/opencode-ai/opencode/internal/config"
15+ "github.com/charmbracelet/crush/internal/config"
16)
16)
17
17
18type PersistentShell struct {
18type PersistentShell struct {
internal/llm/tools/view.go+2−2
@@ -10,8 +10,8 @@ import (
10 "path/filepath"
10 "path/filepath"
11 "strings"
11 "strings"
12
12
13− "github.com/opencode-ai/opencode/internal/config"
13+ "github.com/charmbracelet/crush/internal/config"
14− "github.com/opencode-ai/opencode/internal/lsp"
14+ "github.com/charmbracelet/crush/internal/lsp"
15)
15)
16
16
17type ViewParams struct {
17type ViewParams struct {
internal/llm/tools/write.go+6−6
@@ -9,12 +9,12 @@ import (
9 "strings"
9 "strings"
10 "time"
10 "time"
11
11
12− "github.com/opencode-ai/opencode/internal/config"
12+ "github.com/charmbracelet/crush/internal/config"
13− "github.com/opencode-ai/opencode/internal/diff"
13+ "github.com/charmbracelet/crush/internal/diff"
14− "github.com/opencode-ai/opencode/internal/history"
14+ "github.com/charmbracelet/crush/internal/history"
15− "github.com/opencode-ai/opencode/internal/logging"
15+ "github.com/charmbracelet/crush/internal/logging"
16− "github.com/opencode-ai/opencode/internal/lsp"
16+ "github.com/charmbracelet/crush/internal/lsp"
17− "github.com/opencode-ai/opencode/internal/permission"
17+ "github.com/charmbracelet/crush/internal/permission"
18)
18)
19
19
20type WriteParams struct {
20type WriteParams struct {
internal/logging/writer.go+1−1
@@ -8,8 +8,8 @@ import (
8 "sync"
8 "sync"
9 "time"
9 "time"
10
10
11+ "github.com/charmbracelet/crush/internal/pubsub"
11 "github.com/go-logfmt/logfmt"
12 "github.com/go-logfmt/logfmt"
12− "github.com/opencode-ai/opencode/internal/pubsub"
13)
13)
14
14
15const (
15const (
internal/lsp/client.go+3−3
@@ -14,9 +14,9 @@ import (
14 "sync/atomic"
14 "sync/atomic"
15 "time"
15 "time"
16
16
17− "github.com/opencode-ai/opencode/internal/config"
17+ "github.com/charmbracelet/crush/internal/config"
18− "github.com/opencode-ai/opencode/internal/logging"
18+ "github.com/charmbracelet/crush/internal/logging"
19− "github.com/opencode-ai/opencode/internal/lsp/protocol"
19+ "github.com/charmbracelet/crush/internal/lsp/protocol"
20)
20)
21
21
22type Client struct {
22type Client struct {
internal/lsp/handlers.go+4−4
@@ -3,10 +3,10 @@ package lsp
3import (
3import (
4 "encoding/json"
4 "encoding/json"
5
5
6− "github.com/opencode-ai/opencode/internal/config"
6+ "github.com/charmbracelet/crush/internal/config"
7− "github.com/opencode-ai/opencode/internal/logging"
7+ "github.com/charmbracelet/crush/internal/logging"
8− "github.com/opencode-ai/opencode/internal/lsp/protocol"
8+ "github.com/charmbracelet/crush/internal/lsp/protocol"
9− "github.com/opencode-ai/opencode/internal/lsp/util"
9+ "github.com/charmbracelet/crush/internal/lsp/util"
10)
10)
11
11
12// Requests
12// Requests
internal/lsp/language.go+1−1
@@ -4,7 +4,7 @@ import (
4 "path/filepath"
4 "path/filepath"
5 "strings"
5 "strings"
6
6
7− "github.com/opencode-ai/opencode/internal/lsp/protocol"
7+ "github.com/charmbracelet/crush/internal/lsp/protocol"
8)
8)
9
9
10func DetectLanguageID(uri string) protocol.LanguageKind {
10func DetectLanguageID(uri string) protocol.LanguageKind {
internal/lsp/methods.go+1−1
@@ -4,7 +4,7 @@ package lsp
4import (
4import (
5 "context"
5 "context"
6
6
7− "github.com/opencode-ai/opencode/internal/lsp/protocol"
7+ "github.com/charmbracelet/crush/internal/lsp/protocol"
8)
8)
9
9
10// Implementation sends a textDocument/implementation request to the LSP server.
10// Implementation sends a textDocument/implementation request to the LSP server.
internal/lsp/transport.go+2−2
@@ -8,8 +8,8 @@ import (
8 "io"
8 "io"
9 "strings"
9 "strings"
10
10
11− "github.com/opencode-ai/opencode/internal/config"
11+ "github.com/charmbracelet/crush/internal/config"
12− "github.com/opencode-ai/opencode/internal/logging"
12+ "github.com/charmbracelet/crush/internal/logging"
13)
13)
14
14
15// Write writes an LSP message to the given writer
15// Write writes an LSP message to the given writer
internal/lsp/util/edit.go+1−1
@@ -7,7 +7,7 @@ import (
7 "sort"
7 "sort"
8 "strings"
8 "strings"
9
9
10− "github.com/opencode-ai/opencode/internal/lsp/protocol"
10+ "github.com/charmbracelet/crush/internal/lsp/protocol"
11)
11)
12
12
13func applyTextEdits(uri protocol.DocumentUri, edits []protocol.TextEdit) error {
13func applyTextEdits(uri protocol.DocumentUri, edits []protocol.TextEdit) error {
internal/lsp/watcher/watcher.go+4−4
@@ -10,11 +10,11 @@ import (
10 "time"
10 "time"
11
11
12 "github.com/bmatcuk/doublestar/v4"
12 "github.com/bmatcuk/doublestar/v4"
13+ "github.com/charmbracelet/crush/internal/config"
14+ "github.com/charmbracelet/crush/internal/logging"
15+ "github.com/charmbracelet/crush/internal/lsp"
16+ "github.com/charmbracelet/crush/internal/lsp/protocol"
13 "github.com/fsnotify/fsnotify"
17 "github.com/fsnotify/fsnotify"
14− "github.com/opencode-ai/opencode/internal/config"
15− "github.com/opencode-ai/opencode/internal/logging"
16− "github.com/opencode-ai/opencode/internal/lsp"
17− "github.com/opencode-ai/opencode/internal/lsp/protocol"
18)
18)
19
19
20// WorkspaceWatcher manages LSP file watching
20// WorkspaceWatcher manages LSP file watching
internal/message/content.go+1−1
@@ -5,7 +5,7 @@ import (
5 "slices"
5 "slices"
6 "time"
6 "time"
7
7
8− "github.com/opencode-ai/opencode/internal/llm/models"
8+ "github.com/charmbracelet/crush/internal/llm/models"
9)
9)
10
10
11type MessageRole string
11type MessageRole string
internal/message/message.go+3−3
@@ -7,10 +7,10 @@ import (
7 "fmt"
7 "fmt"
8 "time"
8 "time"
9
9
10+ "github.com/charmbracelet/crush/internal/db"
11+ "github.com/charmbracelet/crush/internal/llm/models"
12+ "github.com/charmbracelet/crush/internal/pubsub"
10 "github.com/google/uuid"
13 "github.com/google/uuid"
11− "github.com/opencode-ai/opencode/internal/db"
12− "github.com/opencode-ai/opencode/internal/llm/models"
13− "github.com/opencode-ai/opencode/internal/pubsub"
14)
14)
15
15
16type CreateMessageParams struct {
16type CreateMessageParams struct {
internal/permission/permission.go+2−2
@@ -6,9 +6,9 @@ import (
6 "slices"
6 "slices"
7 "sync"
7 "sync"
8
8
9+ "github.com/charmbracelet/crush/internal/config"
10+ "github.com/charmbracelet/crush/internal/pubsub"
9 "github.com/google/uuid"
11 "github.com/google/uuid"
10− "github.com/opencode-ai/opencode/internal/config"
11− "github.com/opencode-ai/opencode/internal/pubsub"
12)
12)
13
13
14var ErrorPermissionDenied = errors.New("permission denied")
14var ErrorPermissionDenied = errors.New("permission denied")
internal/session/session.go+2−2
@@ -4,9 +4,9 @@ import (
4 "context"
4 "context"
5 "database/sql"
5 "database/sql"
6
6
7+ "github.com/charmbracelet/crush/internal/db"
8+ "github.com/charmbracelet/crush/internal/pubsub"
7 "github.com/google/uuid"
9 "github.com/google/uuid"
8− "github.com/opencode-ai/opencode/internal/db"
9− "github.com/opencode-ai/opencode/internal/pubsub"
10)
10)
11
11
12type Session struct {
12type Session struct {
internal/tui/components/anim/anim.go+2−2
@@ -9,11 +9,11 @@ import (
9
9
10 "github.com/charmbracelet/bubbles/v2/spinner"
10 "github.com/charmbracelet/bubbles/v2/spinner"
11 tea "github.com/charmbracelet/bubbletea/v2"
11 tea "github.com/charmbracelet/bubbletea/v2"
12+ "github.com/charmbracelet/crush/internal/tui/styles"
13+ "github.com/charmbracelet/crush/internal/tui/util"
12 "github.com/charmbracelet/lipgloss/v2"
14 "github.com/charmbracelet/lipgloss/v2"
13 "github.com/google/uuid"
15 "github.com/google/uuid"
14 "github.com/lucasb-eyer/go-colorful"
16 "github.com/lucasb-eyer/go-colorful"
15− "github.com/opencode-ai/opencode/internal/tui/styles"
16− "github.com/opencode-ai/opencode/internal/tui/util"
17)
17)
18
18
19const (
19const (
internal/tui/components/chat/chat.go+9−9
@@ -5,16 +5,16 @@ import (
5 "time"
5 "time"
6
6
7 tea "github.com/charmbracelet/bubbletea/v2"
7 tea "github.com/charmbracelet/bubbletea/v2"
8+ "github.com/charmbracelet/crush/internal/app"
9+ "github.com/charmbracelet/crush/internal/llm/agent"
10+ "github.com/charmbracelet/crush/internal/message"
11+ "github.com/charmbracelet/crush/internal/pubsub"
12+ "github.com/charmbracelet/crush/internal/session"
13+ "github.com/charmbracelet/crush/internal/tui/components/chat/messages"
14+ "github.com/charmbracelet/crush/internal/tui/components/core/list"
15+ "github.com/charmbracelet/crush/internal/tui/layout"
16+ "github.com/charmbracelet/crush/internal/tui/util"
8 "github.com/charmbracelet/lipgloss/v2"
17 "github.com/charmbracelet/lipgloss/v2"
9− "github.com/opencode-ai/opencode/internal/app"
10− "github.com/opencode-ai/opencode/internal/llm/agent"
11− "github.com/opencode-ai/opencode/internal/message"
12− "github.com/opencode-ai/opencode/internal/pubsub"
13− "github.com/opencode-ai/opencode/internal/session"
14− "github.com/opencode-ai/opencode/internal/tui/components/chat/messages"
15− "github.com/opencode-ai/opencode/internal/tui/components/core/list"
16− "github.com/opencode-ai/opencode/internal/tui/layout"
17− "github.com/opencode-ai/opencode/internal/tui/util"
18)
18)
19
19
20type SendMsg struct {
20type SendMsg struct {
internal/tui/components/chat/editor/editor.go+10−10
@@ -11,17 +11,17 @@ import (
11 "github.com/charmbracelet/bubbles/v2/key"
11 "github.com/charmbracelet/bubbles/v2/key"
12 "github.com/charmbracelet/bubbles/v2/textarea"
12 "github.com/charmbracelet/bubbles/v2/textarea"
13 tea "github.com/charmbracelet/bubbletea/v2"
13 tea "github.com/charmbracelet/bubbletea/v2"
14+ "github.com/charmbracelet/crush/internal/app"
15+ "github.com/charmbracelet/crush/internal/fileutil"
16+ "github.com/charmbracelet/crush/internal/logging"
17+ "github.com/charmbracelet/crush/internal/message"
18+ "github.com/charmbracelet/crush/internal/session"
19+ "github.com/charmbracelet/crush/internal/tui/components/chat"
20+ "github.com/charmbracelet/crush/internal/tui/components/completions"
21+ "github.com/charmbracelet/crush/internal/tui/layout"
22+ "github.com/charmbracelet/crush/internal/tui/styles"
23+ "github.com/charmbracelet/crush/internal/tui/util"
14 "github.com/charmbracelet/lipgloss/v2"
24 "github.com/charmbracelet/lipgloss/v2"
15− "github.com/opencode-ai/opencode/internal/app"
16− "github.com/opencode-ai/opencode/internal/fileutil"
17− "github.com/opencode-ai/opencode/internal/logging"
18− "github.com/opencode-ai/opencode/internal/message"
19− "github.com/opencode-ai/opencode/internal/session"
20− "github.com/opencode-ai/opencode/internal/tui/components/chat"
21− "github.com/opencode-ai/opencode/internal/tui/components/completions"
22− "github.com/opencode-ai/opencode/internal/tui/layout"
23− "github.com/opencode-ai/opencode/internal/tui/styles"
24− "github.com/opencode-ai/opencode/internal/tui/util"
25)
25)
26
26
27type FileCompletionItem struct {
27type FileCompletionItem struct {
internal/tui/components/chat/editor/keys.go+1−1
@@ -2,7 +2,7 @@ package editor
2
2
3import (
3import (
4 "github.com/charmbracelet/bubbles/v2/key"
4 "github.com/charmbracelet/bubbles/v2/key"
5− "github.com/opencode-ai/opencode/internal/tui/layout"
5+ "github.com/charmbracelet/crush/internal/tui/layout"
6)
6)
7
7
8type EditorKeyMap struct {
8type EditorKeyMap struct {
internal/tui/components/chat/messages/messages.go+8−8
@@ -8,15 +8,15 @@ import (
8
8
9 "github.com/charmbracelet/bubbles/v2/spinner"
9 "github.com/charmbracelet/bubbles/v2/spinner"
10 tea "github.com/charmbracelet/bubbletea/v2"
10 tea "github.com/charmbracelet/bubbletea/v2"
11+ "github.com/charmbracelet/crush/internal/llm/models"
11 "github.com/charmbracelet/lipgloss/v2"
12 "github.com/charmbracelet/lipgloss/v2"
12− "github.com/opencode-ai/opencode/internal/llm/models"
13+
13−
14− "github.com/opencode-ai/opencode/internal/message"
14+ "github.com/charmbracelet/crush/internal/message"
15− "github.com/opencode-ai/opencode/internal/tui/components/anim"
15+ "github.com/charmbracelet/crush/internal/tui/components/anim"
16− "github.com/opencode-ai/opencode/internal/tui/components/core"
16+ "github.com/charmbracelet/crush/internal/tui/components/core"
17− "github.com/opencode-ai/opencode/internal/tui/layout"
17+ "github.com/charmbracelet/crush/internal/tui/layout"
18− "github.com/opencode-ai/opencode/internal/tui/styles"
18+ "github.com/charmbracelet/crush/internal/tui/styles"
19− "github.com/opencode-ai/opencode/internal/tui/util"
19+ "github.com/charmbracelet/crush/internal/tui/util"
20)
20)
21
21
22// MessageCmp defines the interface for message components in the chat interface.
22// MessageCmp defines the interface for message components in the chat interface.
internal/tui/components/chat/messages/renderer.go+6−6
@@ -7,15 +7,15 @@ import (
7 "strings"
7 "strings"
8 "time"
8 "time"
9
9
10+ "github.com/charmbracelet/crush/internal/config"
11+ "github.com/charmbracelet/crush/internal/diff"
12+ "github.com/charmbracelet/crush/internal/highlight"
13+ "github.com/charmbracelet/crush/internal/llm/agent"
14+ "github.com/charmbracelet/crush/internal/llm/tools"
15+ "github.com/charmbracelet/crush/internal/tui/styles"
10 "github.com/charmbracelet/lipgloss/v2"
16 "github.com/charmbracelet/lipgloss/v2"
11 "github.com/charmbracelet/lipgloss/v2/tree"
17 "github.com/charmbracelet/lipgloss/v2/tree"
12 "github.com/charmbracelet/x/ansi"
18 "github.com/charmbracelet/x/ansi"
13− "github.com/opencode-ai/opencode/internal/config"
14− "github.com/opencode-ai/opencode/internal/diff"
15− "github.com/opencode-ai/opencode/internal/highlight"
16− "github.com/opencode-ai/opencode/internal/llm/agent"
17− "github.com/opencode-ai/opencode/internal/llm/tools"
18− "github.com/opencode-ai/opencode/internal/tui/styles"
19)
19)
20
20
21// responseContextHeight limits the number of lines displayed in tool output
21// responseContextHeight limits the number of lines displayed in tool output
internal/tui/components/chat/messages/tool.go+5−5
@@ -5,13 +5,13 @@ import (
5
5
6 "github.com/charmbracelet/bubbles/v2/spinner"
6 "github.com/charmbracelet/bubbles/v2/spinner"
7 tea "github.com/charmbracelet/bubbletea/v2"
7 tea "github.com/charmbracelet/bubbletea/v2"
8+ "github.com/charmbracelet/crush/internal/message"
9+ "github.com/charmbracelet/crush/internal/tui/components/anim"
10+ "github.com/charmbracelet/crush/internal/tui/layout"
11+ "github.com/charmbracelet/crush/internal/tui/styles"
12+ "github.com/charmbracelet/crush/internal/tui/util"
8 "github.com/charmbracelet/lipgloss/v2"
13 "github.com/charmbracelet/lipgloss/v2"
9 "github.com/charmbracelet/x/ansi"
14 "github.com/charmbracelet/x/ansi"
10− "github.com/opencode-ai/opencode/internal/message"
11− "github.com/opencode-ai/opencode/internal/tui/components/anim"
12− "github.com/opencode-ai/opencode/internal/tui/layout"
13− "github.com/opencode-ai/opencode/internal/tui/styles"
14− "github.com/opencode-ai/opencode/internal/tui/util"
15)
15)
16
16
17// ToolCallCmp defines the interface for tool call components in the chat interface.
17// ToolCallCmp defines the interface for tool call components in the chat interface.
internal/tui/components/chat/sidebar/sidebar.go+10−10
@@ -5,17 +5,17 @@ import (
5 "strings"
5 "strings"
6
6
7 tea "github.com/charmbracelet/bubbletea/v2"
7 tea "github.com/charmbracelet/bubbletea/v2"
8+ "github.com/charmbracelet/crush/internal/config"
9+ "github.com/charmbracelet/crush/internal/pubsub"
10+ "github.com/charmbracelet/crush/internal/session"
11+ "github.com/charmbracelet/crush/internal/tui/components/chat"
12+ "github.com/charmbracelet/crush/internal/tui/components/core"
13+ "github.com/charmbracelet/crush/internal/tui/components/logo"
14+ "github.com/charmbracelet/crush/internal/tui/layout"
15+ "github.com/charmbracelet/crush/internal/tui/styles"
16+ "github.com/charmbracelet/crush/internal/tui/util"
17+ "github.com/charmbracelet/crush/internal/version"
8 "github.com/charmbracelet/lipgloss/v2"
18 "github.com/charmbracelet/lipgloss/v2"
9− "github.com/opencode-ai/opencode/internal/config"
10− "github.com/opencode-ai/opencode/internal/pubsub"
11− "github.com/opencode-ai/opencode/internal/session"
12− "github.com/opencode-ai/opencode/internal/tui/components/chat"
13− "github.com/opencode-ai/opencode/internal/tui/components/core"
14− "github.com/opencode-ai/opencode/internal/tui/components/logo"
15− "github.com/opencode-ai/opencode/internal/tui/layout"
16− "github.com/opencode-ai/opencode/internal/tui/styles"
17− "github.com/opencode-ai/opencode/internal/tui/util"
18− "github.com/opencode-ai/opencode/internal/version"
19)
19)
20
20
21const (
21const (
internal/tui/components/completions/completions.go+3−3
@@ -3,10 +3,10 @@ package completions
3import (
3import (
4 "github.com/charmbracelet/bubbles/v2/key"
4 "github.com/charmbracelet/bubbles/v2/key"
5 tea "github.com/charmbracelet/bubbletea/v2"
5 tea "github.com/charmbracelet/bubbletea/v2"
6+ "github.com/charmbracelet/crush/internal/tui/components/core/list"
7+ "github.com/charmbracelet/crush/internal/tui/styles"
8+ "github.com/charmbracelet/crush/internal/tui/util"
6 "github.com/charmbracelet/lipgloss/v2"
9 "github.com/charmbracelet/lipgloss/v2"
7− "github.com/opencode-ai/opencode/internal/tui/components/core/list"
8− "github.com/opencode-ai/opencode/internal/tui/styles"
9− "github.com/opencode-ai/opencode/internal/tui/util"
10)
10)
11
11
12type Completion struct {
12type Completion struct {
internal/tui/components/completions/item.go+4−4
@@ -4,12 +4,12 @@ import (
4 "image/color"
4 "image/color"
5
5
6 tea "github.com/charmbracelet/bubbletea/v2"
6 tea "github.com/charmbracelet/bubbletea/v2"
7+ "github.com/charmbracelet/crush/internal/tui/components/core/list"
8+ "github.com/charmbracelet/crush/internal/tui/layout"
9+ "github.com/charmbracelet/crush/internal/tui/styles"
10+ "github.com/charmbracelet/crush/internal/tui/util"
7 "github.com/charmbracelet/lipgloss/v2"
11 "github.com/charmbracelet/lipgloss/v2"
8 "github.com/charmbracelet/x/ansi"
12 "github.com/charmbracelet/x/ansi"
9− "github.com/opencode-ai/opencode/internal/tui/components/core/list"
10− "github.com/opencode-ai/opencode/internal/tui/layout"
11− "github.com/opencode-ai/opencode/internal/tui/styles"
12− "github.com/opencode-ai/opencode/internal/tui/util"
13 "github.com/rivo/uniseg"
13 "github.com/rivo/uniseg"
14)
14)
15
15
internal/tui/components/completions/keys.go+1−1
@@ -2,7 +2,7 @@ package completions
2
2
3import (
3import (
4 "github.com/charmbracelet/bubbles/v2/key"
4 "github.com/charmbracelet/bubbles/v2/key"
5− "github.com/opencode-ai/opencode/internal/tui/layout"
5+ "github.com/charmbracelet/crush/internal/tui/layout"
6)
6)
7
7
8type KeyMap struct {
8type KeyMap struct {
internal/tui/components/core/helpers.go+1−1
@@ -4,9 +4,9 @@ import (
4 "image/color"
4 "image/color"
5 "strings"
5 "strings"
6
6
7+ "github.com/charmbracelet/crush/internal/tui/styles"
7 "github.com/charmbracelet/lipgloss/v2"
8 "github.com/charmbracelet/lipgloss/v2"
8 "github.com/charmbracelet/x/ansi"
9 "github.com/charmbracelet/x/ansi"
9− "github.com/opencode-ai/opencode/internal/tui/styles"
10)
10)
11
11
12func Section(text string, width int) string {
12func Section(text string, width int) string {
internal/tui/components/core/list/keys.go+1−1
@@ -2,7 +2,7 @@ package list
2
2
3import (
3import (
4 "github.com/charmbracelet/bubbles/v2/key"
4 "github.com/charmbracelet/bubbles/v2/key"
5− "github.com/opencode-ai/opencode/internal/tui/layout"
5+ "github.com/charmbracelet/crush/internal/tui/layout"
6)
6)
7
7
8type KeyMap struct {
8type KeyMap struct {
internal/tui/components/core/list/list.go+4−4
@@ -10,11 +10,11 @@ import (
10 "github.com/charmbracelet/bubbles/v2/spinner"
10 "github.com/charmbracelet/bubbles/v2/spinner"
11 "github.com/charmbracelet/bubbles/v2/textinput"
11 "github.com/charmbracelet/bubbles/v2/textinput"
12 tea "github.com/charmbracelet/bubbletea/v2"
12 tea "github.com/charmbracelet/bubbletea/v2"
13+ "github.com/charmbracelet/crush/internal/tui/components/anim"
14+ "github.com/charmbracelet/crush/internal/tui/layout"
15+ "github.com/charmbracelet/crush/internal/tui/styles"
16+ "github.com/charmbracelet/crush/internal/tui/util"
13 "github.com/charmbracelet/lipgloss/v2"
17 "github.com/charmbracelet/lipgloss/v2"
14− "github.com/opencode-ai/opencode/internal/tui/components/anim"
15− "github.com/opencode-ai/opencode/internal/tui/layout"
16− "github.com/opencode-ai/opencode/internal/tui/styles"
17− "github.com/opencode-ai/opencode/internal/tui/util"
18 "github.com/sahilm/fuzzy"
18 "github.com/sahilm/fuzzy"
19)
19)
20
20
internal/tui/components/core/status/keys.go+1−1
@@ -2,7 +2,7 @@ package status
2
2
3import (
3import (
4 "github.com/charmbracelet/bubbles/v2/key"
4 "github.com/charmbracelet/bubbles/v2/key"
5− "github.com/opencode-ai/opencode/internal/tui/layout"
5+ "github.com/charmbracelet/crush/internal/tui/layout"
6)
6)
7
7
8type KeyMap struct {
8type KeyMap struct {
internal/tui/components/core/status/status.go+5−5
@@ -5,11 +5,11 @@ import (
5
5
6 "github.com/charmbracelet/bubbles/v2/help"
6 "github.com/charmbracelet/bubbles/v2/help"
7 tea "github.com/charmbracelet/bubbletea/v2"
7 tea "github.com/charmbracelet/bubbletea/v2"
8− "github.com/opencode-ai/opencode/internal/logging"
8+ "github.com/charmbracelet/crush/internal/logging"
9− "github.com/opencode-ai/opencode/internal/pubsub"
9+ "github.com/charmbracelet/crush/internal/pubsub"
10− "github.com/opencode-ai/opencode/internal/session"
10+ "github.com/charmbracelet/crush/internal/session"
11− "github.com/opencode-ai/opencode/internal/tui/styles"
11+ "github.com/charmbracelet/crush/internal/tui/styles"
12− "github.com/opencode-ai/opencode/internal/tui/util"
12+ "github.com/charmbracelet/crush/internal/tui/util"
13)
13)
14
14
15type StatusCmp interface {
15type StatusCmp interface {
internal/tui/components/dialog/init.go+2−2
@@ -5,8 +5,8 @@ import (
5 tea "github.com/charmbracelet/bubbletea/v2"
5 tea "github.com/charmbracelet/bubbletea/v2"
6 "github.com/charmbracelet/lipgloss/v2"
6 "github.com/charmbracelet/lipgloss/v2"
7
7
8− "github.com/opencode-ai/opencode/internal/tui/styles"
8+ "github.com/charmbracelet/crush/internal/tui/styles"
9− "github.com/opencode-ai/opencode/internal/tui/util"
9+ "github.com/charmbracelet/crush/internal/tui/util"
10)
10)
11
11
12// InitDialogCmp is a component that asks the user if they want to initialize the project.
12// InitDialogCmp is a component that asks the user if they want to initialize the project.
internal/tui/components/dialog/permission.go+6−6
@@ -7,13 +7,13 @@ import (
7 "github.com/charmbracelet/bubbles/v2/key"
7 "github.com/charmbracelet/bubbles/v2/key"
8 "github.com/charmbracelet/bubbles/v2/viewport"
8 "github.com/charmbracelet/bubbles/v2/viewport"
9 tea "github.com/charmbracelet/bubbletea/v2"
9 tea "github.com/charmbracelet/bubbletea/v2"
10+ "github.com/charmbracelet/crush/internal/diff"
11+ "github.com/charmbracelet/crush/internal/llm/tools"
12+ "github.com/charmbracelet/crush/internal/permission"
13+ "github.com/charmbracelet/crush/internal/tui/layout"
14+ "github.com/charmbracelet/crush/internal/tui/styles"
15+ "github.com/charmbracelet/crush/internal/tui/util"
10 "github.com/charmbracelet/lipgloss/v2"
16 "github.com/charmbracelet/lipgloss/v2"
11− "github.com/opencode-ai/opencode/internal/diff"
12− "github.com/opencode-ai/opencode/internal/llm/tools"
13− "github.com/opencode-ai/opencode/internal/permission"
14− "github.com/opencode-ai/opencode/internal/tui/layout"
15− "github.com/opencode-ai/opencode/internal/tui/styles"
16− "github.com/opencode-ai/opencode/internal/tui/util"
17)
17)
18
18
19type PermissionAction string
19type PermissionAction string
internal/tui/components/dialogs/commands/arguments.go+3−3
@@ -8,10 +8,10 @@ import (
8 "github.com/charmbracelet/bubbles/v2/key"
8 "github.com/charmbracelet/bubbles/v2/key"
9 "github.com/charmbracelet/bubbles/v2/textinput"
9 "github.com/charmbracelet/bubbles/v2/textinput"
10 tea "github.com/charmbracelet/bubbletea/v2"
10 tea "github.com/charmbracelet/bubbletea/v2"
11+ "github.com/charmbracelet/crush/internal/tui/components/dialogs"
12+ "github.com/charmbracelet/crush/internal/tui/styles"
13+ "github.com/charmbracelet/crush/internal/tui/util"
11 "github.com/charmbracelet/lipgloss/v2"
14 "github.com/charmbracelet/lipgloss/v2"
12− "github.com/opencode-ai/opencode/internal/tui/components/dialogs"
13− "github.com/opencode-ai/opencode/internal/tui/styles"
14− "github.com/opencode-ai/opencode/internal/tui/util"
15)
15)
16
16
17const (
17const (
internal/tui/components/dialogs/commands/commands.go+7−7
@@ -6,13 +6,13 @@ import (
6 tea "github.com/charmbracelet/bubbletea/v2"
6 tea "github.com/charmbracelet/bubbletea/v2"
7 "github.com/charmbracelet/lipgloss/v2"
7 "github.com/charmbracelet/lipgloss/v2"
8
8
9− "github.com/opencode-ai/opencode/internal/tui/components/chat"
9+ "github.com/charmbracelet/crush/internal/tui/components/chat"
10− "github.com/opencode-ai/opencode/internal/tui/components/completions"
10+ "github.com/charmbracelet/crush/internal/tui/components/completions"
11− "github.com/opencode-ai/opencode/internal/tui/components/core"
11+ "github.com/charmbracelet/crush/internal/tui/components/core"
12− "github.com/opencode-ai/opencode/internal/tui/components/core/list"
12+ "github.com/charmbracelet/crush/internal/tui/components/core/list"
13− "github.com/opencode-ai/opencode/internal/tui/components/dialogs"
13+ "github.com/charmbracelet/crush/internal/tui/components/dialogs"
14− "github.com/opencode-ai/opencode/internal/tui/styles"
14+ "github.com/charmbracelet/crush/internal/tui/styles"
15− "github.com/opencode-ai/opencode/internal/tui/util"
15+ "github.com/charmbracelet/crush/internal/tui/util"
16)
16)
17
17
18const (
18const (
internal/tui/components/dialogs/commands/item.go+5−5
@@ -2,12 +2,12 @@ package commands
2
2
3import (
3import (
4 tea "github.com/charmbracelet/bubbletea/v2"
4 tea "github.com/charmbracelet/bubbletea/v2"
5+ "github.com/charmbracelet/crush/internal/tui/components/core"
6+ "github.com/charmbracelet/crush/internal/tui/components/core/list"
7+ "github.com/charmbracelet/crush/internal/tui/layout"
8+ "github.com/charmbracelet/crush/internal/tui/styles"
9+ "github.com/charmbracelet/crush/internal/tui/util"
5 "github.com/charmbracelet/x/ansi"
10 "github.com/charmbracelet/x/ansi"
6− "github.com/opencode-ai/opencode/internal/tui/components/core"
7− "github.com/opencode-ai/opencode/internal/tui/components/core/list"
8− "github.com/opencode-ai/opencode/internal/tui/layout"
9− "github.com/opencode-ai/opencode/internal/tui/styles"
10− "github.com/opencode-ai/opencode/internal/tui/util"
11)
11)
12
12
13type ItemSection interface {
13type ItemSection interface {
internal/tui/components/dialogs/commands/keys.go+1−1
@@ -2,7 +2,7 @@ package commands
2
2
3import (
3import (
4 "github.com/charmbracelet/bubbles/v2/key"
4 "github.com/charmbracelet/bubbles/v2/key"
5− "github.com/opencode-ai/opencode/internal/tui/layout"
5+ "github.com/charmbracelet/crush/internal/tui/layout"
6)
6)
7
7
8type CommandsDialogKeyMap struct {
8type CommandsDialogKeyMap struct {
internal/tui/components/dialogs/commands/loader.go+2−2
@@ -9,8 +9,8 @@ import (
9 "strings"
9 "strings"
10
10
11 tea "github.com/charmbracelet/bubbletea/v2"
11 tea "github.com/charmbracelet/bubbletea/v2"
12− "github.com/opencode-ai/opencode/internal/config"
12+ "github.com/charmbracelet/crush/internal/config"
13− "github.com/opencode-ai/opencode/internal/tui/util"
13+ "github.com/charmbracelet/crush/internal/tui/util"
14)
14)
15
15
16const (
16const (
internal/tui/components/dialogs/dialogs.go+1−1
@@ -4,8 +4,8 @@ import (
4 "slices"
4 "slices"
5
5
6 tea "github.com/charmbracelet/bubbletea/v2"
6 tea "github.com/charmbracelet/bubbletea/v2"
7+ "github.com/charmbracelet/crush/internal/tui/util"
7 "github.com/charmbracelet/lipgloss/v2"
8 "github.com/charmbracelet/lipgloss/v2"
8− "github.com/opencode-ai/opencode/internal/tui/util"
9)
9)
10
10
11type DialogID string
11type DialogID string
internal/tui/components/dialogs/filepicker/filepicker.go+5−5
@@ -8,12 +8,12 @@ import (
8 "github.com/charmbracelet/bubbles/v2/help"
8 "github.com/charmbracelet/bubbles/v2/help"
9 "github.com/charmbracelet/bubbles/v2/key"
9 "github.com/charmbracelet/bubbles/v2/key"
10 tea "github.com/charmbracelet/bubbletea/v2"
10 tea "github.com/charmbracelet/bubbletea/v2"
11+ "github.com/charmbracelet/crush/internal/tui/components/core"
12+ "github.com/charmbracelet/crush/internal/tui/components/dialogs"
13+ "github.com/charmbracelet/crush/internal/tui/components/image"
14+ "github.com/charmbracelet/crush/internal/tui/styles"
15+ "github.com/charmbracelet/crush/internal/tui/util"
11 "github.com/charmbracelet/lipgloss/v2"
16 "github.com/charmbracelet/lipgloss/v2"
12− "github.com/opencode-ai/opencode/internal/tui/components/core"
13− "github.com/opencode-ai/opencode/internal/tui/components/dialogs"
14− "github.com/opencode-ai/opencode/internal/tui/components/image"
15− "github.com/opencode-ai/opencode/internal/tui/styles"
16− "github.com/opencode-ai/opencode/internal/tui/util"
17)
17)
18
18
19const (
19const (
internal/tui/components/dialogs/filepicker/keys.go+1−1
@@ -2,7 +2,7 @@ package filepicker
2
2
3import (
3import (
4 "github.com/charmbracelet/bubbles/v2/key"
4 "github.com/charmbracelet/bubbles/v2/key"
5− "github.com/opencode-ai/opencode/internal/tui/layout"
5+ "github.com/charmbracelet/crush/internal/tui/layout"
6)
6)
7
7
8// KeyMap defines keyboard bindings for dialog management.
8// KeyMap defines keyboard bindings for dialog management.
internal/tui/components/dialogs/keys.go+1−1
@@ -2,7 +2,7 @@ package dialogs
2
2
3import (
3import (
4 "github.com/charmbracelet/bubbles/v2/key"
4 "github.com/charmbracelet/bubbles/v2/key"
5− "github.com/opencode-ai/opencode/internal/tui/layout"
5+ "github.com/charmbracelet/crush/internal/tui/layout"
6)
6)
7
7
8// KeyMap defines keyboard bindings for dialog management.
8// KeyMap defines keyboard bindings for dialog management.
internal/tui/components/dialogs/models/keys.go+1−1
@@ -2,7 +2,7 @@ package models
2
2
3import (
3import (
4 "github.com/charmbracelet/bubbles/v2/key"
4 "github.com/charmbracelet/bubbles/v2/key"
5− "github.com/opencode-ai/opencode/internal/tui/layout"
5+ "github.com/charmbracelet/crush/internal/tui/layout"
6)
6)
7
7
8type KeyMap struct {
8type KeyMap struct {
internal/tui/components/dialogs/models/models.go+9−9
@@ -6,16 +6,16 @@ import (
6 "github.com/charmbracelet/bubbles/v2/help"
6 "github.com/charmbracelet/bubbles/v2/help"
7 "github.com/charmbracelet/bubbles/v2/key"
7 "github.com/charmbracelet/bubbles/v2/key"
8 tea "github.com/charmbracelet/bubbletea/v2"
8 tea "github.com/charmbracelet/bubbletea/v2"
9+ "github.com/charmbracelet/crush/internal/config"
10+ "github.com/charmbracelet/crush/internal/llm/models"
11+ "github.com/charmbracelet/crush/internal/tui/components/completions"
12+ "github.com/charmbracelet/crush/internal/tui/components/core"
13+ "github.com/charmbracelet/crush/internal/tui/components/core/list"
14+ "github.com/charmbracelet/crush/internal/tui/components/dialogs"
15+ "github.com/charmbracelet/crush/internal/tui/components/dialogs/commands"
16+ "github.com/charmbracelet/crush/internal/tui/styles"
17+ "github.com/charmbracelet/crush/internal/tui/util"
9 "github.com/charmbracelet/lipgloss/v2"
18 "github.com/charmbracelet/lipgloss/v2"
10− "github.com/opencode-ai/opencode/internal/config"
11− "github.com/opencode-ai/opencode/internal/llm/models"
12− "github.com/opencode-ai/opencode/internal/tui/components/completions"
13− "github.com/opencode-ai/opencode/internal/tui/components/core"
14− "github.com/opencode-ai/opencode/internal/tui/components/core/list"
15− "github.com/opencode-ai/opencode/internal/tui/components/dialogs"
16− "github.com/opencode-ai/opencode/internal/tui/components/dialogs/commands"
17− "github.com/opencode-ai/opencode/internal/tui/styles"
18− "github.com/opencode-ai/opencode/internal/tui/util"
19)
19)
20
20
21const (
21const (
internal/tui/components/dialogs/quit/keys.go+1−1
@@ -2,7 +2,7 @@ package quit
2
2
3import (
3import (
4 "github.com/charmbracelet/bubbles/v2/key"
4 "github.com/charmbracelet/bubbles/v2/key"
5− "github.com/opencode-ai/opencode/internal/tui/layout"
5+ "github.com/charmbracelet/crush/internal/tui/layout"
6)
6)
7
7
8// KeyMap defines the keyboard bindings for the quit dialog.
8// KeyMap defines the keyboard bindings for the quit dialog.
internal/tui/components/dialogs/quit/quit.go+4−4
@@ -3,11 +3,11 @@ package quit
3import (
3import (
4 "github.com/charmbracelet/bubbles/v2/key"
4 "github.com/charmbracelet/bubbles/v2/key"
5 tea "github.com/charmbracelet/bubbletea/v2"
5 tea "github.com/charmbracelet/bubbletea/v2"
6+ "github.com/charmbracelet/crush/internal/tui/components/dialogs"
7+ "github.com/charmbracelet/crush/internal/tui/layout"
8+ "github.com/charmbracelet/crush/internal/tui/styles"
9+ "github.com/charmbracelet/crush/internal/tui/util"
6 "github.com/charmbracelet/lipgloss/v2"
10 "github.com/charmbracelet/lipgloss/v2"
7− "github.com/opencode-ai/opencode/internal/tui/components/dialogs"
8− "github.com/opencode-ai/opencode/internal/tui/layout"
9− "github.com/opencode-ai/opencode/internal/tui/styles"
10− "github.com/opencode-ai/opencode/internal/tui/util"
11)
11)
12
12
13const (
13const (
internal/tui/components/dialogs/sessions/keys.go+1−1
@@ -2,7 +2,7 @@ package sessions
2
2
3import (
3import (
4 "github.com/charmbracelet/bubbles/v2/key"
4 "github.com/charmbracelet/bubbles/v2/key"
5− "github.com/opencode-ai/opencode/internal/tui/layout"
5+ "github.com/charmbracelet/crush/internal/tui/layout"
6)
6)
7
7
8type KeyMap struct {
8type KeyMap struct {
internal/tui/components/dialogs/sessions/sessions.go+8−8
@@ -4,15 +4,15 @@ import (
4 "github.com/charmbracelet/bubbles/v2/help"
4 "github.com/charmbracelet/bubbles/v2/help"
5 "github.com/charmbracelet/bubbles/v2/key"
5 "github.com/charmbracelet/bubbles/v2/key"
6 tea "github.com/charmbracelet/bubbletea/v2"
6 tea "github.com/charmbracelet/bubbletea/v2"
7+ "github.com/charmbracelet/crush/internal/session"
8+ "github.com/charmbracelet/crush/internal/tui/components/chat"
9+ "github.com/charmbracelet/crush/internal/tui/components/completions"
10+ "github.com/charmbracelet/crush/internal/tui/components/core"
11+ "github.com/charmbracelet/crush/internal/tui/components/core/list"
12+ "github.com/charmbracelet/crush/internal/tui/components/dialogs"
13+ "github.com/charmbracelet/crush/internal/tui/styles"
14+ "github.com/charmbracelet/crush/internal/tui/util"
7 "github.com/charmbracelet/lipgloss/v2"
15 "github.com/charmbracelet/lipgloss/v2"
8− "github.com/opencode-ai/opencode/internal/session"
9− "github.com/opencode-ai/opencode/internal/tui/components/chat"
10− "github.com/opencode-ai/opencode/internal/tui/components/completions"
11− "github.com/opencode-ai/opencode/internal/tui/components/core"
12− "github.com/opencode-ai/opencode/internal/tui/components/core/list"
13− "github.com/opencode-ai/opencode/internal/tui/components/dialogs"
14− "github.com/opencode-ai/opencode/internal/tui/styles"
15− "github.com/opencode-ai/opencode/internal/tui/util"
16)
16)
17
17
18const SessionsDialogID dialogs.DialogID = "sessions"
18const SessionsDialogID dialogs.DialogID = "sessions"
internal/tui/components/image/load.go+3−2
@@ -3,6 +3,7 @@
3package image
3package image
4
4
5import (
5import (
6+ "context"
6 "image"
7 "image"
7 "image/png"
8 "image/png"
8 "io"
9 "io"
@@ -28,8 +29,8 @@ func loadURL(url string) tea.Cmd {
28 var err error
29 var err error
29
30
30 if strings.HasPrefix(url, "http") {
31 if strings.HasPrefix(url, "http") {
31− var resp *http.Response
32+ var resp *http.Request
32− resp, err = http.Get(url)
33+ resp, err = http.NewRequestWithContext(context.Background(), http.MethodGet, url, nil)
33 r = resp.Body
34 r = resp.Body
34 } else {
35 } else {
35 r, err = os.Open(url)
36 r, err = os.Open(url)
internal/tui/components/logo/logo.go+1−1
@@ -7,10 +7,10 @@ import (
7 "strings"
7 "strings"
8
8
9 "github.com/MakeNowJust/heredoc"
9 "github.com/MakeNowJust/heredoc"
10+ "github.com/charmbracelet/crush/internal/tui/styles"
10 "github.com/charmbracelet/lipgloss/v2"
11 "github.com/charmbracelet/lipgloss/v2"
11 "github.com/charmbracelet/x/ansi"
12 "github.com/charmbracelet/x/ansi"
12 "github.com/charmbracelet/x/exp/slice"
13 "github.com/charmbracelet/x/exp/slice"
13− "github.com/opencode-ai/opencode/internal/tui/styles"
14)
14)
15
15
16// letterform represents a letterform. It can be stretched horizontally by
16// letterform represents a letterform. It can be stretched horizontally by
internal/tui/components/logs/details.go+4−4
@@ -8,11 +8,11 @@ import (
8 "github.com/charmbracelet/bubbles/v2/key"
8 "github.com/charmbracelet/bubbles/v2/key"
9 "github.com/charmbracelet/bubbles/v2/viewport"
9 "github.com/charmbracelet/bubbles/v2/viewport"
10 tea "github.com/charmbracelet/bubbletea/v2"
10 tea "github.com/charmbracelet/bubbletea/v2"
11+ "github.com/charmbracelet/crush/internal/logging"
12+ "github.com/charmbracelet/crush/internal/tui/layout"
13+ "github.com/charmbracelet/crush/internal/tui/styles"
14+ "github.com/charmbracelet/crush/internal/tui/util"
11 "github.com/charmbracelet/lipgloss/v2"
15 "github.com/charmbracelet/lipgloss/v2"
12− "github.com/opencode-ai/opencode/internal/logging"
13− "github.com/opencode-ai/opencode/internal/tui/layout"
14− "github.com/opencode-ai/opencode/internal/tui/styles"
15− "github.com/opencode-ai/opencode/internal/tui/util"
16)
16)
17
17
18type DetailComponent interface {
18type DetailComponent interface {
internal/tui/components/logs/table.go+5−5
@@ -7,11 +7,11 @@ import (
7 "github.com/charmbracelet/bubbles/v2/key"
7 "github.com/charmbracelet/bubbles/v2/key"
8 "github.com/charmbracelet/bubbles/v2/table"
8 "github.com/charmbracelet/bubbles/v2/table"
9 tea "github.com/charmbracelet/bubbletea/v2"
9 tea "github.com/charmbracelet/bubbletea/v2"
10− "github.com/opencode-ai/opencode/internal/logging"
10+ "github.com/charmbracelet/crush/internal/logging"
11− "github.com/opencode-ai/opencode/internal/pubsub"
11+ "github.com/charmbracelet/crush/internal/pubsub"
12− "github.com/opencode-ai/opencode/internal/tui/layout"
12+ "github.com/charmbracelet/crush/internal/tui/layout"
13− "github.com/opencode-ai/opencode/internal/tui/styles"
13+ "github.com/charmbracelet/crush/internal/tui/styles"
14− "github.com/opencode-ai/opencode/internal/tui/util"
14+ "github.com/charmbracelet/crush/internal/tui/util"
15)
15)
16
16
17type TableComponent interface {
17type TableComponent interface {
internal/tui/keys.go+1−1
@@ -2,7 +2,7 @@ package tui
2
2
3import (
3import (
4 "github.com/charmbracelet/bubbles/v2/key"
4 "github.com/charmbracelet/bubbles/v2/key"
5− "github.com/opencode-ai/opencode/internal/tui/layout"
5+ "github.com/charmbracelet/crush/internal/tui/layout"
6)
6)
7
7
8type KeyMap struct {
8type KeyMap struct {
internal/tui/layout/container.go+2−2
@@ -3,9 +3,9 @@ package layout
3import (
3import (
4 "github.com/charmbracelet/bubbles/v2/key"
4 "github.com/charmbracelet/bubbles/v2/key"
5 tea "github.com/charmbracelet/bubbletea/v2"
5 tea "github.com/charmbracelet/bubbletea/v2"
6+ "github.com/charmbracelet/crush/internal/tui/styles"
7+ "github.com/charmbracelet/crush/internal/tui/util"
6 "github.com/charmbracelet/lipgloss/v2"
8 "github.com/charmbracelet/lipgloss/v2"
7− "github.com/opencode-ai/opencode/internal/tui/styles"
8− "github.com/opencode-ai/opencode/internal/tui/util"
9)
9)
10
10
11type Container interface {
11type Container interface {
internal/tui/layout/split.go+2−2
@@ -3,9 +3,9 @@ package layout
3import (
3import (
4 "github.com/charmbracelet/bubbles/v2/key"
4 "github.com/charmbracelet/bubbles/v2/key"
5 tea "github.com/charmbracelet/bubbletea/v2"
5 tea "github.com/charmbracelet/bubbletea/v2"
6+ "github.com/charmbracelet/crush/internal/tui/styles"
7+ "github.com/charmbracelet/crush/internal/tui/util"
6 "github.com/charmbracelet/lipgloss/v2"
8 "github.com/charmbracelet/lipgloss/v2"
7− "github.com/opencode-ai/opencode/internal/tui/styles"
8− "github.com/opencode-ai/opencode/internal/tui/util"
9)
9)
10
10
11type LayoutPanel string
11type LayoutPanel string
internal/tui/page/chat/chat.go+11−11
@@ -5,17 +5,17 @@ import (
5
5
6 "github.com/charmbracelet/bubbles/v2/key"
6 "github.com/charmbracelet/bubbles/v2/key"
7 tea "github.com/charmbracelet/bubbletea/v2"
7 tea "github.com/charmbracelet/bubbletea/v2"
8− "github.com/opencode-ai/opencode/internal/app"
8+ "github.com/charmbracelet/crush/internal/app"
9− "github.com/opencode-ai/opencode/internal/logging"
9+ "github.com/charmbracelet/crush/internal/logging"
10− "github.com/opencode-ai/opencode/internal/message"
10+ "github.com/charmbracelet/crush/internal/message"
11− "github.com/opencode-ai/opencode/internal/session"
11+ "github.com/charmbracelet/crush/internal/session"
12− "github.com/opencode-ai/opencode/internal/tui/components/chat"
12+ "github.com/charmbracelet/crush/internal/tui/components/chat"
13− "github.com/opencode-ai/opencode/internal/tui/components/chat/editor"
13+ "github.com/charmbracelet/crush/internal/tui/components/chat/editor"
14− "github.com/opencode-ai/opencode/internal/tui/components/chat/sidebar"
14+ "github.com/charmbracelet/crush/internal/tui/components/chat/sidebar"
15− "github.com/opencode-ai/opencode/internal/tui/components/dialogs/commands"
15+ "github.com/charmbracelet/crush/internal/tui/components/dialogs/commands"
16− "github.com/opencode-ai/opencode/internal/tui/layout"
16+ "github.com/charmbracelet/crush/internal/tui/layout"
17− "github.com/opencode-ai/opencode/internal/tui/page"
17+ "github.com/charmbracelet/crush/internal/tui/page"
18− "github.com/opencode-ai/opencode/internal/tui/util"
18+ "github.com/charmbracelet/crush/internal/tui/util"
19)
19)
20
20
21var ChatPage page.PageID = "chat"
21var ChatPage page.PageID = "chat"
internal/tui/page/chat/keys.go+1−1
@@ -2,7 +2,7 @@ package chat
2
2
3import (
3import (
4 "github.com/charmbracelet/bubbles/v2/key"
4 "github.com/charmbracelet/bubbles/v2/key"
5− "github.com/opencode-ai/opencode/internal/tui/layout"
5+ "github.com/charmbracelet/crush/internal/tui/layout"
6)
6)
7
7
8type KeyMap struct {
8type KeyMap struct {
internal/tui/page/logs.go+4−4
@@ -3,11 +3,11 @@ package page
3import (
3import (
4 "github.com/charmbracelet/bubbles/v2/key"
4 "github.com/charmbracelet/bubbles/v2/key"
5 tea "github.com/charmbracelet/bubbletea/v2"
5 tea "github.com/charmbracelet/bubbletea/v2"
6+ "github.com/charmbracelet/crush/internal/tui/components/logs"
7+ "github.com/charmbracelet/crush/internal/tui/layout"
8+ "github.com/charmbracelet/crush/internal/tui/styles"
9+ "github.com/charmbracelet/crush/internal/tui/util"
6 "github.com/charmbracelet/lipgloss/v2"
10 "github.com/charmbracelet/lipgloss/v2"
7− "github.com/opencode-ai/opencode/internal/tui/components/logs"
8− "github.com/opencode-ai/opencode/internal/tui/layout"
9− "github.com/opencode-ai/opencode/internal/tui/styles"
10− "github.com/opencode-ai/opencode/internal/tui/util"
11)
11)
12
12
13var LogsPage PageID = "logs"
13var LogsPage PageID = "logs"
internal/tui/tui.go+17−17
@@ -5,24 +5,24 @@ import (
5
5
6 "github.com/charmbracelet/bubbles/v2/key"
6 "github.com/charmbracelet/bubbles/v2/key"
7 tea "github.com/charmbracelet/bubbletea/v2"
7 tea "github.com/charmbracelet/bubbletea/v2"
8+ "github.com/charmbracelet/crush/internal/app"
9+ "github.com/charmbracelet/crush/internal/logging"
10+ "github.com/charmbracelet/crush/internal/pubsub"
11+ cmpChat "github.com/charmbracelet/crush/internal/tui/components/chat"
12+ "github.com/charmbracelet/crush/internal/tui/components/completions"
13+ "github.com/charmbracelet/crush/internal/tui/components/core/status"
14+ "github.com/charmbracelet/crush/internal/tui/components/dialogs"
15+ "github.com/charmbracelet/crush/internal/tui/components/dialogs/commands"
16+ "github.com/charmbracelet/crush/internal/tui/components/dialogs/filepicker"
17+ "github.com/charmbracelet/crush/internal/tui/components/dialogs/models"
18+ "github.com/charmbracelet/crush/internal/tui/components/dialogs/quit"
19+ "github.com/charmbracelet/crush/internal/tui/components/dialogs/sessions"
20+ "github.com/charmbracelet/crush/internal/tui/layout"
21+ "github.com/charmbracelet/crush/internal/tui/page"
22+ "github.com/charmbracelet/crush/internal/tui/page/chat"
23+ "github.com/charmbracelet/crush/internal/tui/styles"
24+ "github.com/charmbracelet/crush/internal/tui/util"
8 "github.com/charmbracelet/lipgloss/v2"
25 "github.com/charmbracelet/lipgloss/v2"
9− "github.com/opencode-ai/opencode/internal/app"
10− "github.com/opencode-ai/opencode/internal/logging"
11− "github.com/opencode-ai/opencode/internal/pubsub"
12− cmpChat "github.com/opencode-ai/opencode/internal/tui/components/chat"
13− "github.com/opencode-ai/opencode/internal/tui/components/completions"
14− "github.com/opencode-ai/opencode/internal/tui/components/core/status"
15− "github.com/opencode-ai/opencode/internal/tui/components/dialogs"
16− "github.com/opencode-ai/opencode/internal/tui/components/dialogs/commands"
17− "github.com/opencode-ai/opencode/internal/tui/components/dialogs/filepicker"
18− "github.com/opencode-ai/opencode/internal/tui/components/dialogs/models"
19− "github.com/opencode-ai/opencode/internal/tui/components/dialogs/quit"
20− "github.com/opencode-ai/opencode/internal/tui/components/dialogs/sessions"
21− "github.com/opencode-ai/opencode/internal/tui/layout"
22− "github.com/opencode-ai/opencode/internal/tui/page"
23− "github.com/opencode-ai/opencode/internal/tui/page/chat"
24− "github.com/opencode-ai/opencode/internal/tui/styles"
25− "github.com/opencode-ai/opencode/internal/tui/util"
26)
26)
27
27
28// appModel represents the main application model that manages pages, dialogs, and UI state.
28// appModel represents the main application model that manages pages, dialogs, and UI state.
internal/version/version.go+1−1
@@ -5,7 +5,7 @@ import "runtime/debug"
5// Build-time parameters set via -ldflags
5// Build-time parameters set via -ldflags
6var Version = "unknown"
6var Version = "unknown"
7
7
8−// A user may install pug using `go install github.com/opencode-ai/opencode@latest`.
8+// A user may install pug using `go install github.com/charmbracelet/crush@latest`.
9// without -ldflags, in which case the version above is unset. As a workaround
9// without -ldflags, in which case the version above is unset. As a workaround
10// we use the embedded build version that *is* set when using `go install` (and
10// we use the embedded build version that *is* set when using `go install` (and
11// is only set for `go install` and not for `go build`).
11// is only set for `go install` and not for `go build`).
main.go+2−2
@@ -6,8 +6,8 @@ import (
6
6
7 _ "net/http/pprof" // profiling
7 _ "net/http/pprof" // profiling
8
8
9− "github.com/opencode-ai/opencode/cmd"
9+ "github.com/charmbracelet/crush/cmd"
10− "github.com/opencode-ai/opencode/internal/logging"
10+ "github.com/charmbracelet/crush/internal/logging"
11)
11)
12
12
13func main() {
13func main() {